History

Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6

* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: ACPI: invoke DSDT corruption workaround on all Toshiba Satellite ACPI, APEI, Fix ERST MOVE_DATA instruction implementation ACPI: fan: Fix more unbalanced code block ACPI: acpi_pad: simplify code to avoid false gcc build warning ACPI, APEI, Fix error path for memory allocation ACPI, APEI, HEST Fix the unsuitable usage of platform_data ACPI, APEI, Fix acpi_pre_map() return value ACPI, APEI, Fix APEI related table size checking ACPI: Disable Windows Vista compatibility for Toshiba P305D ACPI: Kconfig: fix typo. ACPI: add missing __percpu markup in arch/x86/kernel/acpi/cstate.c ACPI: Fix typos ACPI video: fix a poor warning message ACPI: fix build warnings resulting from merge window conflict ACPI: EC: add Vista incompatibility DMI entry for Toshiba Satellite L355 ACPI: expand Vista blacklist to include SP1 and SP2 ACPI: delete ZEPTO idle=nomwait DMI quirk ACPI: enable repeated PCIEXP wakeup by clearing PCIEXP_WAKE_STS on resume PM / ACPI: Blacklist systems known to require acpi_sleep=nonvs ACPI: Don't report current_now if battery reports in mWh

Linus Torvalds committed 16 years ago

Commit 303a4072 parents 35ec421 fdb8c5824 files · +153 −76Browse files

Unified · Split

24 files
  1. arch/x86/kernel/acpi/cstate.c +1 −1
  2. drivers/acpi/Kconfig +1 −1
  3. drivers/acpi/acpi_pad.c +18 −16
  4. drivers/acpi/acpica/aclocal.h +1 −0
  5. drivers/acpi/acpica/exutils.c +1 −1
  6. drivers/acpi/acpica/rsutils.c +1 −1
  7. drivers/acpi/apei/Kconfig +1 −1
  8. drivers/acpi/apei/apei-base.c +16 −5
  9. drivers/acpi/apei/einj.c +3 −1
  10. drivers/acpi/apei/erst-dbg.c +11 −7
  11. drivers/acpi/apei/erst.c +24 −5
  12. drivers/acpi/apei/ghes.c +1 −1
  13. drivers/acpi/apei/hest.c +7 −4
  14. drivers/acpi/atomicio.c +1 −1
  15. drivers/acpi/battery.c +0 −1
  16. drivers/acpi/blacklist.c +18 −0
  17. drivers/acpi/bus.c +5 −13
  18. drivers/acpi/fan.c +2 −0
  19. drivers/acpi/processor_core.c +0 −6
  20. drivers/acpi/processor_perflib.c +2 −2
  21. drivers/acpi/sleep.c +22 −0
  22. drivers/acpi/sysfs.c +14 −6
  23. drivers/acpi/video_detect.c +2 −2
  24. include/acpi/acpixf.h +1 −1
arch/x86/kernel/acpi/cstate.c+1−1
@@ -61,7 +61,7 @@ struct cstate_entry { · 60 unmodified lines
6161 unsigned int ecx;
6262 } states[ACPI_PROCESSOR_MAX_POWER];
6363 };
64−static struct cstate_entry *cpu_cstate_entry; /* per CPU ptr */
64+static struct cstate_entry __percpu *cpu_cstate_entry; /* per CPU ptr */
6565
6666 static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];
6767
drivers/acpi/Kconfig+1−1
@@ -105,7 +105,7 @@ config ACPI_EC_DEBUGFS · 104 unmodified lines
105105
106106 Be aware that using this interface can confuse your Embedded
107107 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
109109 some seconds.
110110 An Embedded Controller typically is available on laptops and reads
111111 sensor values like battery state and temperature.
drivers/acpi/acpi_pad.c+18−16
@@ -382,31 +382,32 @@ static void acpi_pad_remove_sysfs(struct acpi_device *device) · 381 unmodified lines
382382 device_remove_file(&device->dev, &dev_attr_rrtime);
383383 }
384384
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)
387390 {
388391 struct acpi_buffer buffer = {ACPI_ALLOCATE_BUFFER, NULL};
389392 union acpi_object *package;
390− int rev, num, ret = -EINVAL;
393+ int num = -1;
391394
392395 if (ACPI_FAILURE(acpi_evaluate_object(handle, "_PUR", NULL, &buffer)))
393− return -EINVAL;
396+ return num;
394397
395398 if (!buffer.length || !buffer.pointer)
396− return -EINVAL;
399+ return num;
397400
398401 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+
408409 kfree(buffer.pointer);
409− return ret;
410+ return num;
410411 }
411412
412413 /* Notify firmware how many CPUs are idle */
@@ -433,7 +434,8 @@ static void acpi_pad_handle_notify(acpi_handle handle) · 20 unmodified lines
433434 uint32_t idle_cpus;
434435
435436 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) {
437439 mutex_unlock(&isolated_cpus_lock);
438440 return;
439441 }
drivers/acpi/acpica/aclocal.h+1−0
@@ -854,6 +854,7 @@ struct acpi_bit_register_info { · 853 unmodified lines
854854 ACPI_BITMASK_POWER_BUTTON_STATUS | \
855855 ACPI_BITMASK_SLEEP_BUTTON_STATUS | \
856856 ACPI_BITMASK_RT_CLOCK_STATUS | \
857+ ACPI_BITMASK_PCIEXP_WAKE_DISABLE | \
857858 ACPI_BITMASK_WAKE_STATUS)
858859
859860 #define ACPI_BITMASK_TIMER_ENABLE 0x0001
drivers/acpi/acpica/exutils.c+1−1
@@ -109,7 +109,7 @@ void acpi_ex_enter_interpreter(void) · 108 unmodified lines
109109 *
110110 * DESCRIPTION: Reacquire the interpreter execution region from within the
111111 * 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
113113 * relinquish_interpreter
114114 *
115115 ******************************************************************************/
drivers/acpi/acpica/rsutils.c+1−1
@@ -149,7 +149,7 @@ acpi_rs_move_data(void *destination, void *source, u16 item_count, u8 move_type) · 148 unmodified lines
149149
150150 /*
151151 * 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
153153 * misaligned memory transfers
154154 */
155155 case ACPI_RSC_MOVE16:
drivers/acpi/apei/Kconfig+1−1
@@ -34,6 +34,6 @@ config ACPI_APEI_ERST_DEBUG · 33 unmodified lines
3434 depends on ACPI_APEI
3535 help
3636 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
3838 if you want to debugging and testing the ERST kernel support
3939 and firmware implementation.
drivers/acpi/apei/apei-base.c+16−5
@@ -445,11 +445,15 @@ EXPORT_SYMBOL_GPL(apei_resources_sub); · 444 unmodified lines
445445 int apei_resources_request(struct apei_resources *resources,
446446 const char *desc)
447447 {
448− struct apei_res *res, *res_bak;
448+ struct apei_res *res, *res_bak = NULL;
449449 struct resource *r;
450+ int rc;
450451
451− apei_resources_sub(resources, &apei_resources_all);
452+ rc = apei_resources_sub(resources, &apei_resources_all);
453+ if (rc)
454+ return rc;
452455
456+ rc = -EINVAL;
453457 list_for_each_entry(res, &resources->iomem, list) {
454458 r = request_mem_region(res->start, res->end - res->start,
455459 desc);
@@ -475,7 +479,11 @@ int apei_resources_request(struct apei_resources *resources, · 19 unmodified lines
475479 }
476480 }
477481
478− apei_resources_merge(&apei_resources_all, resources);
482+ rc = apei_resources_merge(&apei_resources_all, resources);
483+ if (rc) {
484+ pr_err(APEI_PFX "Fail to merge resources!\n");
485+ goto err_unmap_ioport;
486+ }
479487
480488 return 0;
481489 err_unmap_ioport:
@@ -491,12 +499,13 @@ err_unmap_iomem: · 9 unmodified lines
491499 break;
492500 release_mem_region(res->start, res->end - res->start);
493501 }
494− return -EINVAL;
502+ return rc;
495503 }
496504 EXPORT_SYMBOL_GPL(apei_resources_request);
497505
498506 void apei_resources_release(struct apei_resources *resources)
499507 {
508+ int rc;
500509 struct apei_res *res;
501510
502511 list_for_each_entry(res, &resources->iomem, list)
@@ -504,7 +513,9 @@ void apei_resources_release(struct apei_resources *resources) · 1 unmodified line
504513 list_for_each_entry(res, &resources->ioport, list)
505514 release_region(res->start, res->end - res->start);
506515
507− apei_resources_sub(&apei_resources_all, resources);
516+ rc = apei_resources_sub(&apei_resources_all, resources);
517+ if (rc)
518+ pr_err(APEI_PFX "Fail to sub resources!\n");
508519 }
509520 EXPORT_SYMBOL_GPL(apei_resources_release);
510521
drivers/acpi/apei/einj.c+3−1
@@ -426,7 +426,9 @@ DEFINE_SIMPLE_ATTRIBUTE(error_inject_fops, NULL, · 425 unmodified lines
426426
427427 static int einj_check_table(struct acpi_table_einj *einj_tab)
428428 {
429− if (einj_tab->header_length != sizeof(struct acpi_table_einj))
429+ if ((einj_tab->header_length !=
430+ (sizeof(struct acpi_table_einj) - sizeof(einj_tab->header)))
431+ && (einj_tab->header_length != sizeof(struct acpi_table_einj)))
430432 return -EINVAL;
431433 if (einj_tab->header.length < sizeof(struct acpi_table_einj))
432434 return -EINVAL;
drivers/acpi/apei/erst-dbg.c+11−7
@@ -2,7 +2,7 @@ · 1 unmodified line
22 * APEI Error Record Serialization Table debug support
33 *
44 * 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
66 * debugging/testing support for ERST kernel support and firmware
77 * implementation.
88 *
@@ -111,11 +111,13 @@ retry: · 102 unmodified lines
111111 goto out;
112112 }
113113 if (len > erst_dbg_buf_len) {
114− kfree(erst_dbg_buf);
114+ void *p;
115115 rc = -ENOMEM;
116− erst_dbg_buf = kmalloc(len, GFP_KERNEL);
117− if (!erst_dbg_buf)
116+ p = kmalloc(len, GFP_KERNEL);
117+ if (!p)
118118 goto out;
119+ kfree(erst_dbg_buf);
120+ erst_dbg_buf = p;
119121 erst_dbg_buf_len = len;
120122 goto retry;
121123 }
@@ -150,11 +152,13 @@ static ssize_t erst_dbg_write(struct file *filp, const char __user *ubuf, · 28 unmodified lines
150152 if (mutex_lock_interruptible(&erst_dbg_mutex))
151153 return -EINTR;
152154 if (usize > erst_dbg_buf_len) {
153− kfree(erst_dbg_buf);
155+ void *p;
154156 rc = -ENOMEM;
155− erst_dbg_buf = kmalloc(usize, GFP_KERNEL);
156− if (!erst_dbg_buf)
157+ p = kmalloc(usize, GFP_KERNEL);
158+ if (!p)
157159 goto out;
160+ kfree(erst_dbg_buf);
161+ erst_dbg_buf = p;
158162 erst_dbg_buf_len = usize;
159163 }
160164 rc = copy_from_user(erst_dbg_buf, ubuf, usize);
drivers/acpi/apei/erst.c+24−5
@@ -2,7 +2,7 @@ · 1 unmodified line
22 * APEI Error Record Serialization Table support
33 *
44 * 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.
66 *
77 * For more information about ERST, please refer to ACPI Specification
88 * version 4.0, section 17.4.
@@ -266,13 +266,30 @@ static int erst_exec_move_data(struct apei_exec_context *ctx, · 257 unmodified lines
266266 {
267267 int rc;
268268 u64 offset;
269+ void *src, *dst;
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+ }
269277
270278 rc = __apei_exec_read_register(entry, &offset);
271279 if (rc)
272280 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);
276293
277294 return 0;
278295 }
@@ -750,7 +767,9 @@ __setup("erst_disable", setup_erst_disable); · 471 unmodified lines
750767
751768 static int erst_check_table(struct acpi_table_erst *erst_tab)
752769 {
753− if (erst_tab->header_length != sizeof(struct acpi_table_erst))
770+ if ((erst_tab->header_length !=
771+ (sizeof(struct acpi_table_erst) - sizeof(erst_tab->header)))
772+ && (erst_tab->header_length != sizeof(struct acpi_table_einj)))
754773 return -EINVAL;
755774 if (erst_tab->header.length < sizeof(struct acpi_table_erst))
756775 return -EINVAL;
drivers/acpi/apei/ghes.c+1−1
@@ -302,7 +302,7 @@ static int __devinit ghes_probe(struct platform_device *ghes_dev) · 301 unmodified lines
302302 struct ghes *ghes = NULL;
303303 int rc = -EINVAL;
304304
305− generic = ghes_dev->dev.platform_data;
305+ generic = *(struct acpi_hest_generic **)ghes_dev->dev.platform_data;
306306 if (!generic->enabled)
307307 return -ENODEV;
308308
drivers/acpi/apei/hest.c+7−4
@@ -137,20 +137,23 @@ static int hest_parse_ghes_count(struct acpi_hest_header *hest_hdr, void *data) · 136 unmodified lines
137137
138138 static int hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data)
139139 {
140− struct acpi_hest_generic *generic;
141140 struct platform_device *ghes_dev;
142141 struct ghes_arr *ghes_arr = data;
143142 int rc;
144143
145144 if (hest_hdr->type != ACPI_HEST_TYPE_GENERIC_ERROR)
146145 return 0;
147− generic = (struct acpi_hest_generic *)hest_hdr;
148− if (!generic->enabled)
146+
147+ if (!((struct acpi_hest_generic *)hest_hdr)->enabled)
149148 return 0;
150149 ghes_dev = platform_device_alloc("GHES", hest_hdr->source_id);
151150 if (!ghes_dev)
152151 return -ENOMEM;
153− ghes_dev->dev.platform_data = generic;
152+
153+ rc = platform_device_add_data(ghes_dev, &hest_hdr, sizeof(void *));
154+ if (rc)
155+ goto err;
156+
154157 rc = platform_device_add(ghes_dev);
155158 if (rc)
156159 goto err;
drivers/acpi/atomicio.c+1−1
@@ -142,7 +142,7 @@ static void __iomem *acpi_pre_map(phys_addr_t paddr, · 141 unmodified lines
142142 list_add_tail_rcu(&map->list, &acpi_iomaps);
143143 spin_unlock_irqrestore(&acpi_iomaps_lock, flags);
144144
145− return vaddr + (paddr - pg_off);
145+ return map->vaddr + (paddr - map->paddr);
146146 err_unmap:
147147 iounmap(vaddr);
148148 return NULL;
drivers/acpi/battery.c+0−1
@@ -273,7 +273,6 @@ static enum power_supply_property energy_battery_props[] = { · 272 unmodified lines
273273 POWER_SUPPLY_PROP_CYCLE_COUNT,
274274 POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
275275 POWER_SUPPLY_PROP_VOLTAGE_NOW,
276− POWER_SUPPLY_PROP_CURRENT_NOW,
277276 POWER_SUPPLY_PROP_POWER_NOW,
278277 POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
279278 POWER_SUPPLY_PROP_ENERGY_FULL,
drivers/acpi/blacklist.c+18−0
@@ -183,6 +183,8 @@ static int __init dmi_disable_osi_vista(const struct dmi_system_id *d) · 182 unmodified lines
183183 {
184184 printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);
185185 acpi_osi_setup("!Windows 2006");
186+ acpi_osi_setup("!Windows 2006 SP1");
187+ acpi_osi_setup("!Windows 2006 SP2");
186188 return 0;
187189 }
188190 static int __init dmi_disable_osi_win7(const struct dmi_system_id *d)
@@ -226,6 +228,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · 37 unmodified lines
226228 },
227229 },
228230 {
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+ {
229239 .callback = dmi_disable_osi_win7,
230240 .ident = "ASUS K50IJ",
231241 .matches = {
@@ -233,6 +243,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = { · 1 unmodified line
233243 DMI_MATCH(DMI_PRODUCT_NAME, "K50IJ"),
234244 },
235245 },
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"),
252+ },
253+ },
236254
237255 /*
238256 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.
drivers/acpi/bus.c+5−13
@@ -55,7 +55,7 @@ EXPORT_SYMBOL(acpi_root_dir); · 54 unmodified lines
5555 static int set_power_nocheck(const struct dmi_system_id *id)
5656 {
5757 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);
5959 acpi_power_nocheck = 1;
6060 return 0;
6161 }
@@ -80,23 +80,15 @@ static int set_copy_dsdt(const struct dmi_system_id *id) · 18 unmodified lines
8080
8181 static struct dmi_system_id dsdt_dmi_table[] __initdata = {
8282 /*
83− * Insyde BIOS on some TOSHIBA machines corrupt the DSDT.
83+ * Invoke DSDT corruption work-around on all Toshiba Satellite.
8484 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
8585 */
8686 {
8787 .callback = set_copy_dsdt,
88− .ident = "TOSHIBA Satellite A505",
88+ .ident = "TOSHIBA Satellite",
8989 .matches = {
9090 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
91− DMI_MATCH(DMI_PRODUCT_NAME, "Satellite A505"),
92− },
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"),
91+ DMI_MATCH(DMI_PRODUCT_NAME, "Satellite"),
10092 },
10193 },
10294 {}
@@ -1027,7 +1019,7 @@ static int __init acpi_init(void) · 924 unmodified lines
10271019
10281020 /*
10291021 * 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.
10311023 */
10321024 dmi_check_system(power_nocheck_dmi_table);
10331025
drivers/acpi/fan.c+2−0
@@ -369,7 +369,9 @@ static void __exit acpi_fan_exit(void) · 368 unmodified lines
369369
370370 acpi_bus_unregister_driver(&acpi_fan_driver);
371371
372+#ifdef CONFIG_ACPI_PROCFS
372373 remove_proc_entry(ACPI_FAN_CLASS, acpi_root_dir);
374+#endif
373375
374376 return;
375377 }
drivers/acpi/processor_core.c+0−6
@@ -28,12 +28,6 @@ static int set_no_mwait(const struct dmi_system_id *id) · 27 unmodified lines
2828 }
2929
3030 static struct dmi_system_id __cpuinitdata processor_idle_dmi_table[] = {
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},
3731 {
3832 set_no_mwait, "Extensa 5220", {
3933 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
drivers/acpi/processor_perflib.c+2−2
@@ -447,8 +447,8 @@ int acpi_processor_notify_smm(struct module *calling_module) · 446 unmodified lines
447447 if (!try_module_get(calling_module))
448448 return -EINVAL;
449449
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
452452 * was already notified. This avoids double notification
453453 * which might lead to unexpected results...
454454 */
drivers/acpi/sleep.c+22−0
@@ -363,6 +363,12 @@ static int __init init_old_suspend_ordering(const struct dmi_system_id *d) · 362 unmodified lines
363363 return 0;
364364 }
365365
366+static int __init init_nvs_nosave(const struct dmi_system_id *d)
367+{
368+ acpi_nvs_nosave();
369+ return 0;
370+}
371+
366372 static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
367373 {
368374 .callback = init_old_suspend_ordering,
@@ -397,6 +403,22 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = { · 28 unmodified lines
397403 DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"),
398404 },
399405 },
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"),
420+ },
421+ },
400422 {},
401423 };
402424 #endif /* CONFIG_SUSPEND */
drivers/acpi/sysfs.c+14−6
@@ -100,7 +100,7 @@ static const struct acpi_dlevel acpi_debug_levels[] = { · 99 unmodified lines
100100 ACPI_DEBUG_INIT(ACPI_LV_EVENTS),
101101 };
102102
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)
104104 {
105105 int result = 0;
106106 int i;
@@ -128,7 +128,7 @@ static int param_get_debug_layer(char *buffer, struct kernel_param *kp) · 21 unmodified lines
128128 return result;
129129 }
130130
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)
132132 {
133133 int result = 0;
134134 int i;
@@ -149,10 +149,18 @@ static int param_get_debug_level(char *buffer, struct kernel_param *kp) · 14 unmodified lines
149149 return result;
150150 }
151151
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);
156164
157165 static char trace_method_name[6];
158166 module_param_string(trace_method_name, trace_method_name, 6, 0644);
drivers/acpi/video_detect.c+2−2
@@ -59,8 +59,8 @@ acpi_backlight_cap_match(acpi_handle handle, u32 level, void *context, · 58 unmodified lines
5959 "support\n"));
6060 *cap |= ACPI_VIDEO_BACKLIGHT;
6161 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");
6464 /* We have backlight support, no need to scan further */
6565 return AE_CTRL_TERMINATE;
6666 }
include/acpi/acpixf.h+1−1
@@ -55,7 +55,7 @@ · 54 unmodified lines
5555 extern u8 acpi_gbl_permanent_mmap;
5656
5757 /*
58− * Globals that are publically available, allowing for
58+ * Globals that are publicly available, allowing for
5959 * run time configuration
6060 */
6161 extern u32 acpi_dbg_level;