diff --git a/repos/ports/src/virtualbox5/devxhci.cc b/repos/ports/src/virtualbox5/devxhci.cc index 19b32427ac..6db0c5c0e9 100644 --- a/repos/ports/src/virtualbox5/devxhci.cc +++ b/repos/ports/src/virtualbox5/devxhci.cc @@ -154,7 +154,11 @@ struct Timer_queue : public Qemu::Timer_queue if (TMTimerIsActive(tm_timer)) TMTimerStop(tm_timer); - TMTimerSetNano(tm_timer, min->timeout_abs_ns - TMTimerGetNano(tm_timer)); + uint64_t const now = TMTimerGetNano(tm_timer); + if (min->timeout_abs_ns < now) + TMTimerSetNano(tm_timer, 0); + else + TMTimerSetNano(tm_timer, min->timeout_abs_ns - now); } void _deactivate_timer(void *qtimer) diff --git a/repos/ports/src/virtualbox6/devxhci.cc b/repos/ports/src/virtualbox6/devxhci.cc index 2d1b8d509c..2891be405c 100644 --- a/repos/ports/src/virtualbox6/devxhci.cc +++ b/repos/ports/src/virtualbox6/devxhci.cc @@ -160,7 +160,11 @@ struct Timer_queue : public Qemu::Timer_queue if (TMTimerIsActive(tm_timer)) TMTimerStop(tm_timer); - TMTimerSetNano(tm_timer, min->timeout_abs_ns - TMTimerGetNano(tm_timer)); + uint64_t const now = TMTimerGetNano(tm_timer); + if (min->timeout_abs_ns < now) + TMTimerSetNano(tm_timer, 0); + else + TMTimerSetNano(tm_timer, min->timeout_abs_ns - now); } void _deactivate_timer(void *qtimer)