summaryrefslogtreecommitdiffstats
path: root/arch/s390/lib
diff options
context:
space:
mode:
authorMartin Schwidefsky2013-08-23 14:45:58 +0200
committerMartin Schwidefsky2013-08-28 09:19:23 +0200
commit0587d409ec53312f735d2004d5f47f8effee1ea9 (patch)
tree7ab956aaf3d7d238f8bd40a8f50d60302cb3363a /arch/s390/lib
parents390/kprobes: add support for compare and branch instructions (diff)
downloadkernel-qcow2-linux-0587d409ec53312f735d2004d5f47f8effee1ea9.tar.gz
kernel-qcow2-linux-0587d409ec53312f735d2004d5f47f8effee1ea9.tar.xz
kernel-qcow2-linux-0587d409ec53312f735d2004d5f47f8effee1ea9.zip
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.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c
index c61b9fad43cc..57c87d7d7ede 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);