diff --git a/kernel-src/sys/itimer.c b/kernel-src/sys/itimer.c index 812f5b26..d10ce027 100644 --- a/kernel-src/sys/itimer.c +++ b/kernel-src/sys/itimer.c @@ -34,6 +34,10 @@ void itimer_pause(itimer_t *itimer, uintmax_t *remainingus, uintmax_t *repeatus) // schedule on the itimer cpu sched_targetcpu(itimer->cpu); spinlock_release(&itimer->lock); + // allow interrupts to be handled (such as a tlb shootdown) + // as the other cpu could be busy waiting for this one + interrupt_set(true); + interrupt_set(false); sched_yield(); sched_targetcpu(NULL); spinlock_acquire(&itimer->lock);