__cpuidle_set_driver() check if there is an already exist driver and unset it before return with -EBUSY. The next call will succeed as it's just unset. This is strange as we should either keep old driver and return -EBUSY or unset and set new driver and return 0.
Signed-off-by: Zhenzhong Duan <zhenzhong.d...@oracle.com> --- drivers/cpuidle/driver.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index 80c1a83..a200304 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c @@ -74,7 +74,6 @@ static inline int __cpuidle_set_driver(struct cpuidle_driver *drv) for_each_cpu(cpu, drv->cpumask) { if (__cpuidle_get_cpu_driver(cpu)) { - __cpuidle_unset_driver(drv); return -EBUSY; } -- 1.8.3.1