aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/ibm_acpi.c4
-rw-r--r--drivers/acpi/processor_idle.c12
2 files changed, 12 insertions, 4 deletions
diff --git a/drivers/acpi/ibm_acpi.c b/drivers/acpi/ibm_acpi.c
index 0e7682a88aa8..b72d13d11a27 100644
--- a/drivers/acpi/ibm_acpi.c
+++ b/drivers/acpi/ibm_acpi.c
@@ -493,7 +493,7 @@ static char *next_cmd(char **cmds)
493 return start; 493 return start;
494} 494}
495 495
496static int driver_init(void) 496static int ibm_acpi_driver_init(void)
497{ 497{
498 printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION); 498 printk(IBM_INFO "%s v%s\n", IBM_DESC, IBM_VERSION);
499 printk(IBM_INFO "%s\n", IBM_URL); 499 printk(IBM_INFO "%s\n", IBM_URL);
@@ -2297,7 +2297,7 @@ static void fan_watchdog_fire(struct work_struct *ignored)
2297static struct ibm_struct ibms[] = { 2297static struct ibm_struct ibms[] = {
2298 { 2298 {
2299 .name = "driver", 2299 .name = "driver",
2300 .init = driver_init, 2300 .init = ibm_acpi_driver_init,
2301 .read = driver_read, 2301 .read = driver_read,
2302 }, 2302 },
2303 { 2303 {
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 4f2982cc5478..3f30af21574e 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -211,7 +211,11 @@ acpi_processor_power_activate(struct acpi_processor *pr,
211static void acpi_safe_halt(void) 211static void acpi_safe_halt(void)
212{ 212{
213 current_thread_info()->status &= ~TS_POLLING; 213 current_thread_info()->status &= ~TS_POLLING;
214 smp_mb__after_clear_bit(); 214 /*
215 * TS_POLLING-cleared state must be visible before we
216 * test NEED_RESCHED:
217 */
218 smp_mb();
215 if (!need_resched()) 219 if (!need_resched())
216 safe_halt(); 220 safe_halt();
217 current_thread_info()->status |= TS_POLLING; 221 current_thread_info()->status |= TS_POLLING;
@@ -345,7 +349,11 @@ static void acpi_processor_idle(void)
345 */ 349 */
346 if (cx->type == ACPI_STATE_C2 || cx->type == ACPI_STATE_C3) { 350 if (cx->type == ACPI_STATE_C2 || cx->type == ACPI_STATE_C3) {
347 current_thread_info()->status &= ~TS_POLLING; 351 current_thread_info()->status &= ~TS_POLLING;
348 smp_mb__after_clear_bit(); 352 /*
353 * TS_POLLING-cleared state must be visible before we
354 * test NEED_RESCHED:
355 */
356 smp_mb();
349 if (need_resched()) { 357 if (need_resched()) {
350 current_thread_info()->status |= TS_POLLING; 358 current_thread_info()->status |= TS_POLLING;
351 local_irq_enable(); 359 local_irq_enable();