diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-23 14:45:58 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-28 09:19:23 +0200 |
commit | 0587d409ec53312f735d2004d5f47f8effee1ea9 (patch) | |
tree | 7ab956aaf3d7d238f8bd40a8f50d60302cb3363a /arch/s390/lib | |
parent | 6b169ac9b4342ff3a1499bdeb7596aa4f1bc401b (diff) | |
download | op-kernel-dev-0587d409ec53312f735d2004d5f47f8effee1ea9.zip op-kernel-dev-0587d409ec53312f735d2004d5f47f8effee1ea9.tar.gz |
s390/time: return with irqs disabled from psw_idle
Modify the psw_idle waiting logic in entry[64].S to return with
interrupts disabled. This avoids potential issues with udelay
and interrupt loops as interrupts are not reenabled after
clock comparator interrupts.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/lib')
-rw-r--r-- | arch/s390/lib/delay.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c index c61b9fa..57c87d7 100644 --- a/arch/s390/lib/delay.c +++ b/arch/s390/lib/delay.c @@ -44,7 +44,6 @@ static void __udelay_disabled(unsigned long long usecs) do { set_clock_comparator(end); vtime_stop_cpu(); - local_irq_disable(); } while (get_tod_clock() < end); lockdep_on(); __ctl_load(cr0, 0, 0); @@ -64,7 +63,6 @@ static void __udelay_enabled(unsigned long long usecs) set_clock_comparator(end); } vtime_stop_cpu(); - local_irq_disable(); if (clock_saved) local_tick_enable(clock_saved); } while (get_tod_clock() < end); |