cpuidle: powernv: Don't bounce between low and very low thread priority
authorAnton Blanchard <anton@samba.org>
Mon, 3 Apr 2017 21:54:12 +0000 (07:54 +1000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 19 Apr 2017 21:17:18 +0000 (23:17 +0200)
The core of snooze_loop() continually bounces between low and very
low thread priority. Changing thread priorities is an expensive
operation that can negatively impact other threads on a core.

All CPUs that can run PowerNV support very low priority, so we can
avoid the change completely.

Signed-off-by: Anton Blanchard <anton@samba.org>
Reviewed-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/cpuidle-powernv.c

index a06df51..0ddf1a5 100644 (file)
@@ -57,7 +57,6 @@ static int snooze_loop(struct cpuidle_device *dev,
        snooze_exit_time = get_tb() + snooze_timeout;
        ppc64_runlatch_off();
        while (!need_resched()) {
-               HMT_low();
                HMT_very_low();
                if (snooze_timeout_en && get_tb() > snooze_exit_time)
                        break;