forked from luck/tmp_suning_uos_patched
[S390] idle: Fix machine check handling in idle loop.
If a machine check handling is pending when the idle loop is entered default_idle will be left with timer ticks and virtual timer disabled. Fix this by "calling" the idle_chain. Also a BUG_ON(!in_interrupt) in start_hz_timer must be removed since the function now gets called from non interrupt context as well. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
9361a492cd
commit
5ccd0e43bb
|
@ -152,6 +152,10 @@ static void default_idle(void)
|
|||
local_mcck_disable();
|
||||
if (test_thread_flag(TIF_MCCK_PENDING)) {
|
||||
local_mcck_enable();
|
||||
/* disable monitor call class 0 */
|
||||
__ctl_clear_bit(8, 15);
|
||||
atomic_notifier_call_chain(&idle_chain, S390_CPU_NOT_IDLE,
|
||||
hcpu);
|
||||
local_irq_enable();
|
||||
s390_handle_mcck();
|
||||
return;
|
||||
|
|
|
@ -209,8 +209,6 @@ static void stop_hz_timer(void)
|
|||
*/
|
||||
static void start_hz_timer(void)
|
||||
{
|
||||
BUG_ON(!in_interrupt());
|
||||
|
||||
if (!cpu_isset(smp_processor_id(), nohz_cpu_mask))
|
||||
return;
|
||||
account_ticks(get_clock());
|
||||
|
|
Loading…
Reference in New Issue
Block a user