X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=arch%2Fum%2Fkernel%2Fprocess.c;h=cf242fc5fe9488497f050c5caf1768c137463e8f;hb=eec94b8acb03aaaa6fb050883624381f5c07a3f0;hp=67c0d1a860e980d97ecb6d6bbf7cb349699edbfc;hpb=af6af87d7e4ff67324425daa699b9cda32e3161d;p=linux-2.6-microblaze.git diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 67c0d1a860e9..cf242fc5fe94 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -210,10 +210,15 @@ static void time_travel_sleep(unsigned long long duration) if (time_travel_mode != TT_MODE_INFCPU) os_timer_disable(); - if (time_travel_timer_mode != TT_TMR_DISABLED || + while (time_travel_timer_mode == TT_TMR_PERIODIC && + time_travel_timer_expiry < time_travel_time) + time_travel_set_timer_expiry(time_travel_timer_expiry + + time_travel_timer_interval); + + if (time_travel_timer_mode != TT_TMR_DISABLED && time_travel_timer_expiry < next) { if (time_travel_timer_mode == TT_TMR_ONESHOT) - time_travel_set_timer(TT_TMR_DISABLED, 0); + time_travel_set_timer_mode(TT_TMR_DISABLED); /* * time_travel_time will be adjusted in the timer * IRQ handler so it works even when the signal