diff options
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/kernel/idle.c | 15 | ||||
-rw-r--r-- | arch/powerpc/platforms/iseries/setup.c | 12 |
2 files changed, 15 insertions, 12 deletions
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index 3cd73d1fc42..9c3cd490b1b 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c | |||
@@ -62,10 +62,10 @@ void cpu_idle(void) | |||
62 | 62 | ||
63 | set_thread_flag(TIF_POLLING_NRFLAG); | 63 | set_thread_flag(TIF_POLLING_NRFLAG); |
64 | while (1) { | 64 | while (1) { |
65 | if (idle_uses_rcu) | 65 | tick_nohz_idle_enter(); |
66 | tick_nohz_idle_enter(); | 66 | if (!idle_uses_rcu) |
67 | else | 67 | rcu_idle_enter(); |
68 | tick_nohz_idle_enter_norcu(); | 68 | |
69 | while (!need_resched() && !cpu_should_die()) { | 69 | while (!need_resched() && !cpu_should_die()) { |
70 | ppc64_runlatch_off(); | 70 | ppc64_runlatch_off(); |
71 | 71 | ||
@@ -102,10 +102,9 @@ void cpu_idle(void) | |||
102 | 102 | ||
103 | HMT_medium(); | 103 | HMT_medium(); |
104 | ppc64_runlatch_on(); | 104 | ppc64_runlatch_on(); |
105 | if (idle_uses_rcu) | 105 | if (!idle_uses_rcu) |
106 | tick_nohz_idle_exit(); | 106 | rcu_idle_exit(); |
107 | else | 107 | tick_nohz_idle_exit(); |
108 | tick_nohz_idle_exit_norcu(); | ||
109 | preempt_enable_no_resched(); | 108 | preempt_enable_no_resched(); |
110 | if (cpu_should_die()) | 109 | if (cpu_should_die()) |
111 | cpu_die(); | 110 | cpu_die(); |
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index d69d3d185e8..8fc62586a97 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
@@ -563,7 +563,8 @@ static void yield_shared_processor(void) | |||
563 | static void iseries_shared_idle(void) | 563 | static void iseries_shared_idle(void) |
564 | { | 564 | { |
565 | while (1) { | 565 | while (1) { |
566 | tick_nohz_idle_enter_norcu(); | 566 | tick_nohz_idle_enter(); |
567 | rcu_idle_enter(); | ||
567 | while (!need_resched() && !hvlpevent_is_pending()) { | 568 | while (!need_resched() && !hvlpevent_is_pending()) { |
568 | local_irq_disable(); | 569 | local_irq_disable(); |
569 | ppc64_runlatch_off(); | 570 | ppc64_runlatch_off(); |
@@ -577,7 +578,8 @@ static void iseries_shared_idle(void) | |||
577 | } | 578 | } |
578 | 579 | ||
579 | ppc64_runlatch_on(); | 580 | ppc64_runlatch_on(); |
580 | tick_nohz_idle_exit_norcu(); | 581 | rcu_idle_exit(); |
582 | tick_nohz_idle_exit(); | ||
581 | 583 | ||
582 | if (hvlpevent_is_pending()) | 584 | if (hvlpevent_is_pending()) |
583 | process_iSeries_events(); | 585 | process_iSeries_events(); |
@@ -593,7 +595,8 @@ static void iseries_dedicated_idle(void) | |||
593 | set_thread_flag(TIF_POLLING_NRFLAG); | 595 | set_thread_flag(TIF_POLLING_NRFLAG); |
594 | 596 | ||
595 | while (1) { | 597 | while (1) { |
596 | tick_nohz_idle_enter_norcu(); | 598 | tick_nohz_idle_enter(); |
599 | rcu_idle_enter(); | ||
597 | if (!need_resched()) { | 600 | if (!need_resched()) { |
598 | while (!need_resched()) { | 601 | while (!need_resched()) { |
599 | ppc64_runlatch_off(); | 602 | ppc64_runlatch_off(); |
@@ -610,7 +613,8 @@ static void iseries_dedicated_idle(void) | |||
610 | } | 613 | } |
611 | 614 | ||
612 | ppc64_runlatch_on(); | 615 | ppc64_runlatch_on(); |
613 | tick_nohz_idle_exit_norcu(); | 616 | rcu_idle_exit(); |
617 | tick_nohz_idle_exit(); | ||
614 | preempt_enable_no_resched(); | 618 | preempt_enable_no_resched(); |
615 | schedule(); | 619 | schedule(); |
616 | preempt_disable(); | 620 | preempt_disable(); |