mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-16 22:38:04 +00:00
189ce92b4c
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net> Signed-off-by: Denys Dmytriyenko <denys@ti.com>
57 lines
2.1 KiB
Diff
57 lines
2.1 KiB
Diff
From c8fa4b79449fe6d516847fc308c7126e65d5eec1 Mon Sep 17 00:00:00 2001
|
|
From: Shaohua Li <shaohua.li@intel.com>
|
|
Date: Tue, 10 Jan 2012 15:48:19 -0800
|
|
Subject: [PATCH 099/129] intel_idle: fix API misuse
|
|
|
|
commit 39a74fdedd1c1461d6fb6d330b5266886513c98f upstream.
|
|
|
|
smp_call_function() only lets all other CPUs execute a specific function,
|
|
while we expect all CPUs do in intel_idle. Without the fix, we could have
|
|
one cpu which has auto_demotion enabled or has no broadcast timer setup.
|
|
Usually we don't see impact because auto demotion just harms power and the
|
|
intel_idle init is called in CPU 0, where boradcast timer delivers
|
|
interrupt, but this still could be a problem.
|
|
|
|
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
|
|
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
Signed-off-by: Len Brown <len.brown@intel.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
---
|
|
drivers/idle/intel_idle.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
|
|
index 1dafcc3..5b39216 100644
|
|
--- a/drivers/idle/intel_idle.c
|
|
+++ b/drivers/idle/intel_idle.c
|
|
@@ -395,7 +395,7 @@ static int intel_idle_probe(void)
|
|
if (boot_cpu_has(X86_FEATURE_ARAT)) /* Always Reliable APIC Timer */
|
|
lapic_timer_reliable_states = LAPIC_TIMER_ALWAYS_RELIABLE;
|
|
else {
|
|
- smp_call_function(__setup_broadcast_timer, (void *)true, 1);
|
|
+ on_each_cpu(__setup_broadcast_timer, (void *)true, 1);
|
|
register_cpu_notifier(&setup_broadcast_notifier);
|
|
}
|
|
|
|
@@ -472,7 +472,7 @@ static int intel_idle_cpuidle_driver_init(void)
|
|
}
|
|
|
|
if (auto_demotion_disable_flags)
|
|
- smp_call_function(auto_demotion_disable, NULL, 1);
|
|
+ on_each_cpu(auto_demotion_disable, NULL, 1);
|
|
|
|
return 0;
|
|
}
|
|
@@ -569,7 +569,7 @@ static void __exit intel_idle_exit(void)
|
|
cpuidle_unregister_driver(&intel_idle_driver);
|
|
|
|
if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE) {
|
|
- smp_call_function(__setup_broadcast_timer, (void *)false, 1);
|
|
+ on_each_cpu(__setup_broadcast_timer, (void *)false, 1);
|
|
unregister_cpu_notifier(&setup_broadcast_notifier);
|
|
}
|
|
|
|
--
|
|
1.7.9.5
|
|
|