cpuidle: powernv: Avoid a branch in the core snooze_loop() loop
authorAnton Blanchard <anton@samba.org>
Mon, 3 Apr 2017 21:54:14 +0000 (07:54 +1000)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 19 Apr 2017 21:17:19 +0000 (23:17 +0200)
When in the snooze_loop() we want to take up the least amount of
resources. On my version of gcc (6.3), we end up with an extra
branch because it predicts snooze_timeout_en to be false, whereas it
is almost always true.

Use likely() to avoid the branch and be a little nicer to the
other non idle threads on the core.

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 f890167..5bb4bb3 100644 (file)
@@ -58,7 +58,7 @@ static int snooze_loop(struct cpuidle_device *dev,
        ppc64_runlatch_off();
        HMT_very_low();
        while (!need_resched()) {
-               if (snooze_timeout_en && get_tb() > snooze_exit_time)
+               if (likely(snooze_timeout_en) && get_tb() > snooze_exit_time)
                        break;
        }