diff options
| -rw-r--r-- | drivers/acpi/processor_idle.c | 28 | ||||
| -rw-r--r-- | drivers/platform/x86/acer-wmi.c | 2 |
2 files changed, 17 insertions, 13 deletions
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index e88e8ae04fdb..cc978a8c00b7 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
| @@ -880,12 +880,14 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev, | |||
| 880 | return(acpi_idle_enter_c1(dev, state)); | 880 | return(acpi_idle_enter_c1(dev, state)); |
| 881 | 881 | ||
| 882 | local_irq_disable(); | 882 | local_irq_disable(); |
| 883 | current_thread_info()->status &= ~TS_POLLING; | 883 | if (cx->entry_method != ACPI_CSTATE_FFH) { |
| 884 | /* | 884 | current_thread_info()->status &= ~TS_POLLING; |
| 885 | * TS_POLLING-cleared state must be visible before we test | 885 | /* |
| 886 | * NEED_RESCHED: | 886 | * TS_POLLING-cleared state must be visible before we test |
| 887 | */ | 887 | * NEED_RESCHED: |
| 888 | smp_mb(); | 888 | */ |
| 889 | smp_mb(); | ||
| 890 | } | ||
| 889 | 891 | ||
| 890 | if (unlikely(need_resched())) { | 892 | if (unlikely(need_resched())) { |
| 891 | current_thread_info()->status |= TS_POLLING; | 893 | current_thread_info()->status |= TS_POLLING; |
| @@ -965,12 +967,14 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev, | |||
| 965 | } | 967 | } |
| 966 | 968 | ||
| 967 | local_irq_disable(); | 969 | local_irq_disable(); |
| 968 | current_thread_info()->status &= ~TS_POLLING; | 970 | if (cx->entry_method != ACPI_CSTATE_FFH) { |
| 969 | /* | 971 | current_thread_info()->status &= ~TS_POLLING; |
| 970 | * TS_POLLING-cleared state must be visible before we test | 972 | /* |
| 971 | * NEED_RESCHED: | 973 | * TS_POLLING-cleared state must be visible before we test |
| 972 | */ | 974 | * NEED_RESCHED: |
| 973 | smp_mb(); | 975 | */ |
| 976 | smp_mb(); | ||
| 977 | } | ||
| 974 | 978 | ||
| 975 | if (unlikely(need_resched())) { | 979 | if (unlikely(need_resched())) { |
| 976 | current_thread_info()->status |= TS_POLLING; | 980 | current_thread_info()->status |= TS_POLLING; |
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index 07d14dfdf0b4..226b3e93498c 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c | |||
| @@ -934,7 +934,7 @@ static int __devinit acer_backlight_init(struct device *dev) | |||
| 934 | acer_backlight_device = bd; | 934 | acer_backlight_device = bd; |
| 935 | 935 | ||
| 936 | bd->props.power = FB_BLANK_UNBLANK; | 936 | bd->props.power = FB_BLANK_UNBLANK; |
| 937 | bd->props.brightness = max_brightness; | 937 | bd->props.brightness = read_brightness(bd); |
| 938 | bd->props.max_brightness = max_brightness; | 938 | bd->props.max_brightness = max_brightness; |
| 939 | backlight_update_status(bd); | 939 | backlight_update_status(bd); |
| 940 | return 0; | 940 | return 0; |
