diff options
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/ibm_acpi.c | 4 | ||||
-rw-r--r-- | drivers/acpi/processor_idle.c | 12 |
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 | ||
496 | static int driver_init(void) | 496 | static 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) | |||
2297 | static struct ibm_struct ibms[] = { | 2297 | static 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, | |||
211 | static void acpi_safe_halt(void) | 211 | static 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(); |