cpuidle: haltpoll: Take 'idle=' override into account
authorZhenzhong Duan <zhenzhong.duan@oracle.com>
Fri, 18 Oct 2019 00:49:29 +0000 (08:49 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 22 Oct 2019 09:43:17 +0000 (11:43 +0200)
Currenly haltpoll isn't aware of the 'idle=' override, the priority is
'idle=poll' > haltpoll > 'idle=halt'. When 'idle=poll' is used, cpuidle
driver is bypassed but current_driver in sys still shows 'haltpoll'.

When 'idle=halt' is used, haltpoll takes precedence and makes
'idle=halt' have no effect.

Add a check to prevent the haltpoll driver from loading if 'idle=' is
present.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Co-developed-by: Joao Martins <joao.m.martins@oracle.com>
[ rjw: Subject ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpuidle/cpuidle-haltpoll.c

index 932390b028f1df148d8f96bd6a5b1b6b36fcec72..b0ce9bc78113e6bde532101ffe0beba9c9baf860 100644 (file)
@@ -95,6 +95,10 @@ static int __init haltpoll_init(void)
        int ret;
        struct cpuidle_driver *drv = &haltpoll_driver;
 
+       /* Do not load haltpoll if idle= is passed */
+       if (boot_option_idle_override != IDLE_NO_OVERRIDE)
+               return -ENODEV;
+
        cpuidle_poll_state_init(drv);
 
        if (!kvm_para_available() ||