Commit fdb8c58a1671beb51949412e053926acd5500b5f

Authored by Len Brown

Merge branches 'apei', 'battery-mwh-fix', 'bugzilla-10807', 'bugzilla-14736', 'b…

…ugzilla-14679', 'bugzilla-16396', 'launchpad-613381' and 'misc' into release

Showing 19 changed files Side-by-side Diff

arch/x86/kernel/acpi/cstate.c
... ... @@ -61,7 +61,7 @@
61 61 unsigned int ecx;
62 62 } states[ACPI_PROCESSOR_MAX_POWER];
63 63 };
64   -static struct cstate_entry *cpu_cstate_entry; /* per CPU ptr */
  64 +static struct cstate_entry __percpu *cpu_cstate_entry; /* per CPU ptr */
65 65  
66 66 static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];
67 67  
drivers/acpi/Kconfig
... ... @@ -105,7 +105,7 @@
105 105  
106 106 Be aware that using this interface can confuse your Embedded
107 107 Controller in a way that a normal reboot is not enough. You then
108   - have to power of your system, and remove the laptop battery for
  108 + have to power off your system, and remove the laptop battery for
109 109 some seconds.
110 110 An Embedded Controller typically is available on laptops and reads
111 111 sensor values like battery state and temperature.
drivers/acpi/acpi_pad.c
... ... @@ -382,31 +382,32 @@
382 382 device_remove_file(&device->dev, &dev_attr_rrtime);
383 383 }
384 384  
385   -/* Query firmware how many CPUs should be idle */
386   -static int acpi_pad_pur(acpi_handle handle, int *num_cpus)
  385 +/*
  386 + * Query firmware how many CPUs should be idle
  387 + * return -1 on failure
  388 + */
  389 +static int acpi_pad_pur(acpi_handle handle)
387 390 {
388 391 struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
389 392 union acpi_object *package;
390   - int rev, num, ret = -EINVAL;
  393 + int num = -1;
391 394  
392 395 if (ACPI_FAILURE(acpi_evaluate_object(handle, "_PUR", NULL, &buffer)))
393   - return -EINVAL;
  396 + return num;
394 397  
395 398 if (!buffer.length || !buffer.pointer)
396   - return -EINVAL;
  399 + return num;
397 400  
398 401 package = buffer.pointer;
399   - if (package->type != ACPI_TYPE_PACKAGE || package->package.count != 2)
400   - goto out;
401   - rev = package->package.elements[0].integer.value;
402   - num = package->package.elements[1].integer.value;
403   - if (rev != 1 || num < 0)
404   - goto out;
405   - *num_cpus = num;
406   - ret = 0;
407   -out:
  402 +
  403 + if (package->type == ACPI_TYPE_PACKAGE &&
  404 + package->package.count == 2 &&
  405 + package->package.elements[0].integer.value == 1) /* rev 1 */
  406 +
  407 + num = package->package.elements[1].integer.value;
  408 +
408 409 kfree(buffer.pointer);
409   - return ret;
  410 + return num;
410 411 }
411 412  
412 413 /* Notify firmware how many CPUs are idle */
... ... @@ -433,7 +434,8 @@
433 434 uint32_t idle_cpus;
434 435  
435 436 mutex_lock(&isolated_cpus_lock);
436   - if (acpi_pad_pur(handle, &num_cpus)) {
  437 + num_cpus = acpi_pad_pur(handle);
  438 + if (num_cpus < 0) {
437 439 mutex_unlock(&isolated_cpus_lock);
438 440 return;
439 441 }
drivers/acpi/acpica/aclocal.h
... ... @@ -854,6 +854,7 @@
854 854 ACPI_BITMASK_POWER_BUTTON_STATUS | \
855 855 ACPI_BITMASK_SLEEP_BUTTON_STATUS | \
856 856 ACPI_BITMASK_RT_CLOCK_STATUS | \
  857 + ACPI_BITMASK_PCIEXP_WAKE_DISABLE | \
857 858 ACPI_BITMASK_WAKE_STATUS)
858 859  
859 860 #define ACPI_BITMASK_TIMER_ENABLE 0x0001
drivers/acpi/acpica/exutils.c
... ... @@ -109,7 +109,7 @@
109 109 *
110 110 * DESCRIPTION: Reacquire the interpreter execution region from within the
111 111 * interpreter code. Failure to enter the interpreter region is a
112   - * fatal system error. Used in conjuction with
  112 + * fatal system error. Used in conjunction with
113 113 * relinquish_interpreter
114 114 *
115 115 ******************************************************************************/
drivers/acpi/acpica/rsutils.c
... ... @@ -149,7 +149,7 @@
149 149  
150 150 /*
151 151 * 16-, 32-, and 64-bit cases must use the move macros that perform
152   - * endian conversion and/or accomodate hardware that cannot perform
  152 + * endian conversion and/or accommodate hardware that cannot perform
153 153 * misaligned memory transfers
154 154 */
155 155 case ACPI_RSC_MOVE16:
drivers/acpi/apei/Kconfig
... ... @@ -34,7 +34,7 @@
34 34 depends on ACPI_APEI
35 35 help
36 36 ERST is a way provided by APEI to save and retrieve hardware
37   - error infomation to and from a persistent store. Enable this
  37 + error information to and from a persistent store. Enable this
38 38 if you want to debugging and testing the ERST kernel support
39 39 and firmware implementation.
drivers/acpi/apei/erst-dbg.c
... ... @@ -2,7 +2,7 @@
2 2 * APEI Error Record Serialization Table debug support
3 3 *
4 4 * ERST is a way provided by APEI to save and retrieve hardware error
5   - * infomation to and from a persistent store. This file provide the
  5 + * information to and from a persistent store. This file provide the
6 6 * debugging/testing support for ERST kernel support and firmware
7 7 * implementation.
8 8 *
drivers/acpi/apei/erst.c
... ... @@ -2,7 +2,7 @@
2 2 * APEI Error Record Serialization Table support
3 3 *
4 4 * ERST is a way provided by APEI to save and retrieve hardware error
5   - * infomation to and from a persistent store.
  5 + * information to and from a persistent store.
6 6 *
7 7 * For more information about ERST, please refer to ACPI Specification
8 8 * version 4.0, section 17.4.
9 9  
10 10  
... ... @@ -266,13 +266,30 @@
266 266 {
267 267 int rc;
268 268 u64 offset;
  269 + void *src, *dst;
269 270  
  271 + /* ioremap does not work in interrupt context */
  272 + if (in_interrupt()) {
  273 + pr_warning(ERST_PFX
  274 + "MOVE_DATA can not be used in interrupt context");
  275 + return -EBUSY;
  276 + }
  277 +
270 278 rc = __apei_exec_read_register(entry, &offset);
271 279 if (rc)
272 280 return rc;
273   - memmove((void *)ctx->dst_base + offset,
274   - (void *)ctx->src_base + offset,
275   - ctx->var2);
  281 +
  282 + src = ioremap(ctx->src_base + offset, ctx->var2);
  283 + if (!src)
  284 + return -ENOMEM;
  285 + dst = ioremap(ctx->dst_base + offset, ctx->var2);
  286 + if (!dst)
  287 + return -ENOMEM;
  288 +
  289 + memmove(dst, src, ctx->var2);
  290 +
  291 + iounmap(src);
  292 + iounmap(dst);
276 293  
277 294 return 0;
278 295 }
drivers/acpi/battery.c
... ... @@ -273,7 +273,6 @@
273 273 POWER_SUPPLY_PROP_CYCLE_COUNT,
274 274 POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
275 275 POWER_SUPPLY_PROP_VOLTAGE_NOW,
276   - POWER_SUPPLY_PROP_CURRENT_NOW,
277 276 POWER_SUPPLY_PROP_POWER_NOW,
278 277 POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
279 278 POWER_SUPPLY_PROP_ENERGY_FULL,
drivers/acpi/blacklist.c
... ... @@ -183,6 +183,8 @@
183 183 {
184 184 printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);
185 185 acpi_osi_setup("!Windows 2006");
  186 + acpi_osi_setup("!Windows 2006 SP1");
  187 + acpi_osi_setup("!Windows 2006 SP2");
186 188 return 0;
187 189 }
188 190 static int __init dmi_disable_osi_win7(const struct dmi_system_id *d)
189 191  
... ... @@ -226,11 +228,27 @@
226 228 },
227 229 },
228 230 {
  231 + .callback = dmi_disable_osi_vista,
  232 + .ident = "Toshiba Satellite L355",
  233 + .matches = {
  234 + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
  235 + DMI_MATCH(DMI_PRODUCT_VERSION, "Satellite L355"),
  236 + },
  237 + },
  238 + {
229 239 .callback = dmi_disable_osi_win7,
230 240 .ident = "ASUS K50IJ",
231 241 .matches = {
232 242 DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
233 243 DMI_MATCH(DMI_PRODUCT_NAME, "K50IJ"),
  244 + },
  245 + },
  246 + {
  247 + .callback = dmi_disable_osi_vista,
  248 + .ident = "Toshiba P305D",
  249 + .matches = {
  250 + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
  251 + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite P305D"),
234 252 },
235 253 },
236 254  
... ... @@ -55,7 +55,7 @@
55 55 static int set_power_nocheck(const struct dmi_system_id *id)
56 56 {
57 57 printk(KERN_NOTICE PREFIX "%s detected - "
58   - "disable power check in power transistion\n", id->ident);
  58 + "disable power check in power transition\n", id->ident);
59 59 acpi_power_nocheck = 1;
60 60 return 0;
61 61 }
62 62  
63 63  
64 64  
... ... @@ -80,25 +80,17 @@
80 80  
81 81 static struct dmi_system_id dsdt_dmi_table[] __initdata = {
82 82 /*
83   - * Insyde BIOS on some TOSHIBA machines corrupt the DSDT.
  83 + * Invoke DSDT corruption work-around on all Toshiba Satellite.
84 84 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
85 85 */
86 86 {
87 87 .callback = set_copy_dsdt,
88   - .ident = "TOSHIBA Satellite A505",
  88 + .ident = "TOSHIBA Satellite",
89 89 .matches = {
90 90 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
91   - DMI_MATCH(DMI_PRODUCT_NAME, "Satellite A505"),
  91 + DMI_MATCH(DMI_PRODUCT_NAME, "Satellite"),
92 92 },
93 93 },
94   - {
95   - .callback = set_copy_dsdt,
96   - .ident = "TOSHIBA Satellite L505D",
97   - .matches = {
98   - DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
99   - DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L505D"),
100   - },
101   - },
102 94 {}
103 95 };
104 96 #else
... ... @@ -1027,7 +1019,7 @@
1027 1019  
1028 1020 /*
1029 1021 * If the laptop falls into the DMI check table, the power state check
1030   - * will be disabled in the course of device power transistion.
  1022 + * will be disabled in the course of device power transition.
1031 1023 */
1032 1024 dmi_check_system(power_nocheck_dmi_table);
1033 1025  
... ... @@ -369,7 +369,9 @@
369 369  
370 370 acpi_bus_unregister_driver(&acpi_fan_driver);
371 371  
  372 +#ifdef CONFIG_ACPI_PROCFS
372 373 remove_proc_entry(ACPI_FAN_CLASS, acpi_root_dir);
  374 +#endif
373 375  
374 376 return;
375 377 }
drivers/acpi/processor_core.c
... ... @@ -29,12 +29,6 @@
29 29  
30 30 static struct dmi_system_id __cpuinitdata processor_idle_dmi_table[] = {
31 31 {
32   - set_no_mwait, "IFL91 board", {
33   - DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"),
34   - DMI_MATCH(DMI_SYS_VENDOR, "ZEPTO"),
35   - DMI_MATCH(DMI_PRODUCT_VERSION, "3215W"),
36   - DMI_MATCH(DMI_BOARD_NAME, "IFL91") }, NULL},
37   - {
38 32 set_no_mwait, "Extensa 5220", {
39 33 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
40 34 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
drivers/acpi/processor_perflib.c
... ... @@ -447,8 +447,8 @@
447 447 if (!try_module_get(calling_module))
448 448 return -EINVAL;
449 449  
450   - /* is_done is set to negative if an error occured,
451   - * and to postitive if _no_ error occured, but SMM
  450 + /* is_done is set to negative if an error occurred,
  451 + * and to postitive if _no_ error occurred, but SMM
452 452 * was already notified. This avoids double notification
453 453 * which might lead to unexpected results...
454 454 */
drivers/acpi/sleep.c
... ... @@ -363,6 +363,12 @@
363 363 return 0;
364 364 }
365 365  
  366 +static int __init init_nvs_nosave(const struct dmi_system_id *d)
  367 +{
  368 + acpi_nvs_nosave();
  369 + return 0;
  370 +}
  371 +
366 372 static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
367 373 {
368 374 .callback = init_old_suspend_ordering,
... ... @@ -395,6 +401,22 @@
395 401 DMI_MATCH(DMI_BOARD_VENDOR,
396 402 "Matsushita Electric Industrial Co.,Ltd."),
397 403 DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"),
  404 + },
  405 + },
  406 + {
  407 + .callback = init_nvs_nosave,
  408 + .ident = "Sony Vaio VGN-SR11M",
  409 + .matches = {
  410 + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
  411 + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"),
  412 + },
  413 + },
  414 + {
  415 + .callback = init_nvs_nosave,
  416 + .ident = "Everex StepNote Series",
  417 + .matches = {
  418 + DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."),
  419 + DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"),
398 420 },
399 421 },
400 422 {},
drivers/acpi/sysfs.c
... ... @@ -100,7 +100,7 @@
100 100 ACPI_DEBUG_INIT(ACPI_LV_EVENTS),
101 101 };
102 102  
103   -static int param_get_debug_layer(char *buffer, struct kernel_param *kp)
  103 +static int param_get_debug_layer(char *buffer, const struct kernel_param *kp)
104 104 {
105 105 int result = 0;
106 106 int i;
... ... @@ -128,7 +128,7 @@
128 128 return result;
129 129 }
130 130  
131   -static int param_get_debug_level(char *buffer, struct kernel_param *kp)
  131 +static int param_get_debug_level(char *buffer, const struct kernel_param *kp)
132 132 {
133 133 int result = 0;
134 134 int i;
... ... @@ -149,10 +149,18 @@
149 149 return result;
150 150 }
151 151  
152   -module_param_call(debug_layer, param_set_uint, param_get_debug_layer,
153   - &acpi_dbg_layer, 0644);
154   -module_param_call(debug_level, param_set_uint, param_get_debug_level,
155   - &acpi_dbg_level, 0644);
  152 +static struct kernel_param_ops param_ops_debug_layer = {
  153 + .set = param_set_uint,
  154 + .get = param_get_debug_layer,
  155 +};
  156 +
  157 +static struct kernel_param_ops param_ops_debug_level = {
  158 + .set = param_set_uint,
  159 + .get = param_get_debug_level,
  160 +};
  161 +
  162 +module_param_cb(debug_layer, &param_ops_debug_layer, &acpi_dbg_layer, 0644);
  163 +module_param_cb(debug_level, &param_ops_debug_level, &acpi_dbg_level, 0644);
156 164  
157 165 static char trace_method_name[6];
158 166 module_param_string(trace_method_name, trace_method_name, 6, 0644);
drivers/acpi/video_detect.c
... ... @@ -59,8 +59,8 @@
59 59 "support\n"));
60 60 *cap |= ACPI_VIDEO_BACKLIGHT;
61 61 if (ACPI_FAILURE(acpi_get_handle(handle, "_BQC", &h_dummy)))
62   - printk(KERN_WARNING FW_BUG PREFIX "ACPI brightness "
63   - "control misses _BQC function\n");
  62 + printk(KERN_WARNING FW_BUG PREFIX "No _BQC method, "
  63 + "cannot determine initial brightness\n");
64 64 /* We have backlight support, no need to scan further */
65 65 return AE_CTRL_TERMINATE;
66 66 }
include/acpi/acpixf.h
... ... @@ -55,7 +55,7 @@
55 55 extern u8 acpi_gbl_permanent_mmap;
56 56  
57 57 /*
58   - * Globals that are publically available, allowing for
  58 + * Globals that are publicly available, allowing for
59 59 * run time configuration
60 60 */
61 61 extern u32 acpi_dbg_level;