From 4f2fe90b74a5d956f9b56954a3ecac879ac74e98 Mon Sep 17 00:00:00 2001 From: Deepthi Dharwar Date: Tue, 3 Jul 2012 20:07:22 +0000 Subject: [PATCH] --- yaml --- r: 313681 b: refs/heads/master c: 852d8cb1ff7cc26e59a4bbb68e230d133b257098 h: refs/heads/master i: 313679: 023ef0dd58baeede2188d3658eb4ea9d921aa09f v: v3 --- [refs] | 2 +- .../platforms/pseries/processor_idle.c | 23 +++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index bb41b0125836..aa53481d7dc1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8bf8385b9c3b7f6aaf892eb3141a5af0bbb2027e +refs/heads/master: 852d8cb1ff7cc26e59a4bbb68e230d133b257098 diff --git a/trunk/arch/powerpc/platforms/pseries/processor_idle.c b/trunk/arch/powerpc/platforms/pseries/processor_idle.c index 7f5668b94165..455760b1fe6e 100644 --- a/trunk/arch/powerpc/platforms/pseries/processor_idle.c +++ b/trunk/arch/powerpc/platforms/pseries/processor_idle.c @@ -197,13 +197,25 @@ static int pseries_cpuidle_add_cpu_notifier(struct notifier_block *n, struct cpuidle_device *dev = per_cpu_ptr(pseries_cpuidle_devices, hotcpu); - switch (action & 0xf) { - case CPU_ONLINE: - if (dev && cpuidle_get_driver()) { - cpuidle_disable_device(dev); + if (dev && cpuidle_get_driver()) { + switch (action) { + case CPU_ONLINE: + case CPU_ONLINE_FROZEN: + cpuidle_pause_and_lock(); cpuidle_enable_device(dev); + cpuidle_resume_and_unlock(); + break; + + case CPU_DEAD: + case CPU_DEAD_FROZEN: + cpuidle_pause_and_lock(); + cpuidle_disable_device(dev); + cpuidle_resume_and_unlock(); + break; + + default: + return NOTIFY_DONE; } - break; } return NOTIFY_OK; } @@ -345,6 +357,7 @@ static int __init pseries_processor_idle_init(void) static void __exit pseries_processor_idle_exit(void) { + unregister_cpu_notifier(&setup_hotplug_notifier); pseries_idle_devices_uninit(); cpuidle_unregister_driver(&pseries_idle_driver);