diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-23 08:45:58 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2013-08-28 03:19:23 -0400 |
commit | 0587d409ec53312f735d2004d5f47f8effee1ea9 (patch) | |
tree | 7ab956aaf3d7d238f8bd40a8f50d60302cb3363a /arch/s390/lib | |
parent | 6b169ac9b4342ff3a1499bdeb7596aa4f1bc401b (diff) |
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 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) | |||
44 | do { | 44 | do { |
45 | set_clock_comparator(end); | 45 | set_clock_comparator(end); |
46 | vtime_stop_cpu(); | 46 | vtime_stop_cpu(); |
47 | local_irq_disable(); | ||
48 | } while (get_tod_clock() < end); | 47 | } while (get_tod_clock() < end); |
49 | lockdep_on(); | 48 | lockdep_on(); |
50 | __ctl_load(cr0, 0, 0); | 49 | __ctl_load(cr0, 0, 0); |
@@ -64,7 +63,6 @@ static void __udelay_enabled(unsigned long long usecs) | |||
64 | set_clock_comparator(end); | 63 | set_clock_comparator(end); |
65 | } | 64 | } |
66 | vtime_stop_cpu(); | 65 | vtime_stop_cpu(); |
67 | local_irq_disable(); | ||
68 | if (clock_saved) | 66 | if (clock_saved) |
69 | local_tick_enable(clock_saved); | 67 | local_tick_enable(clock_saved); |
70 | } while (get_tod_clock() < end); | 68 | } while (get_tod_clock() < end); |