diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-31 07:53:43 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-31 07:53:43 -0400 |
commit | 7bee946358c3cb957d4aa648fc5ab3cad0b232d0 (patch) | |
tree | 693061ebde2abc35ecc846e5084630d7225aaaff /drivers/acpi | |
parent | d820ac4c2fa881079e6b689d2098adce337558ae (diff) | |
parent | 15f7176eb1cccec0a332541285ee752b935c1c85 (diff) |
Merge branch 'linus' into locking-for-linus
Conflicts:
lib/Kconfig.debug
Diffstat (limited to 'drivers/acpi')
-rw-r--r-- | drivers/acpi/ac.c | 1 | ||||
-rw-r--r-- | drivers/acpi/acpica/tbxface.c | 17 | ||||
-rw-r--r-- | drivers/acpi/battery.c | 1 | ||||
-rw-r--r-- | drivers/acpi/bus.c | 9 | ||||
-rw-r--r-- | drivers/acpi/button.c | 3 | ||||
-rw-r--r-- | drivers/acpi/dock.c | 2 | ||||
-rw-r--r-- | drivers/acpi/event.c | 6 | ||||
-rw-r--r-- | drivers/acpi/fan.c | 2 | ||||
-rw-r--r-- | drivers/acpi/numa.c | 2 | ||||
-rw-r--r-- | drivers/acpi/osl.c | 63 | ||||
-rw-r--r-- | drivers/acpi/processor_core.c | 2 | ||||
-rw-r--r-- | drivers/acpi/processor_perflib.c | 4 | ||||
-rw-r--r-- | drivers/acpi/sbs.c | 1 | ||||
-rw-r--r-- | drivers/acpi/sleep.c | 16 | ||||
-rw-r--r-- | drivers/acpi/tables.c | 20 | ||||
-rw-r--r-- | drivers/acpi/thermal.c | 2 | ||||
-rw-r--r-- | drivers/acpi/video.c | 5 |
17 files changed, 60 insertions, 96 deletions
diff --git a/drivers/acpi/ac.c b/drivers/acpi/ac.c index 9b917dac7732..88e42abf5d88 100644 --- a/drivers/acpi/ac.c +++ b/drivers/acpi/ac.c | |||
@@ -191,7 +191,6 @@ static int acpi_ac_add_fs(struct acpi_device *device) | |||
191 | acpi_ac_dir); | 191 | acpi_ac_dir); |
192 | if (!acpi_device_dir(device)) | 192 | if (!acpi_device_dir(device)) |
193 | return -ENODEV; | 193 | return -ENODEV; |
194 | acpi_device_dir(device)->owner = THIS_MODULE; | ||
195 | } | 194 | } |
196 | 195 | ||
197 | /* 'state' [R] */ | 196 | /* 'state' [R] */ |
diff --git a/drivers/acpi/acpica/tbxface.c b/drivers/acpi/acpica/tbxface.c index c3e841f3cde9..ab0aff3c7d6a 100644 --- a/drivers/acpi/acpica/tbxface.c +++ b/drivers/acpi/acpica/tbxface.c | |||
@@ -365,7 +365,7 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table_id) | |||
365 | 365 | ||
366 | /******************************************************************************* | 366 | /******************************************************************************* |
367 | * | 367 | * |
368 | * FUNCTION: acpi_get_table | 368 | * FUNCTION: acpi_get_table_with_size |
369 | * | 369 | * |
370 | * PARAMETERS: Signature - ACPI signature of needed table | 370 | * PARAMETERS: Signature - ACPI signature of needed table |
371 | * Instance - Which instance (for SSDTs) | 371 | * Instance - Which instance (for SSDTs) |
@@ -377,8 +377,9 @@ ACPI_EXPORT_SYMBOL(acpi_unload_table_id) | |||
377 | * | 377 | * |
378 | *****************************************************************************/ | 378 | *****************************************************************************/ |
379 | acpi_status | 379 | acpi_status |
380 | acpi_get_table(char *signature, | 380 | acpi_get_table_with_size(char *signature, |
381 | u32 instance, struct acpi_table_header **out_table) | 381 | u32 instance, struct acpi_table_header **out_table, |
382 | acpi_size *tbl_size) | ||
382 | { | 383 | { |
383 | u32 i; | 384 | u32 i; |
384 | u32 j; | 385 | u32 j; |
@@ -408,6 +409,7 @@ acpi_get_table(char *signature, | |||
408 | acpi_tb_verify_table(&acpi_gbl_root_table_list.tables[i]); | 409 | acpi_tb_verify_table(&acpi_gbl_root_table_list.tables[i]); |
409 | if (ACPI_SUCCESS(status)) { | 410 | if (ACPI_SUCCESS(status)) { |
410 | *out_table = acpi_gbl_root_table_list.tables[i].pointer; | 411 | *out_table = acpi_gbl_root_table_list.tables[i].pointer; |
412 | *tbl_size = acpi_gbl_root_table_list.tables[i].length; | ||
411 | } | 413 | } |
412 | 414 | ||
413 | if (!acpi_gbl_permanent_mmap) { | 415 | if (!acpi_gbl_permanent_mmap) { |
@@ -420,6 +422,15 @@ acpi_get_table(char *signature, | |||
420 | return (AE_NOT_FOUND); | 422 | return (AE_NOT_FOUND); |
421 | } | 423 | } |
422 | 424 | ||
425 | acpi_status | ||
426 | acpi_get_table(char *signature, | ||
427 | u32 instance, struct acpi_table_header **out_table) | ||
428 | { | ||
429 | acpi_size tbl_size; | ||
430 | |||
431 | return acpi_get_table_with_size(signature, | ||
432 | instance, out_table, &tbl_size); | ||
433 | } | ||
423 | ACPI_EXPORT_SYMBOL(acpi_get_table) | 434 | ACPI_EXPORT_SYMBOL(acpi_get_table) |
424 | 435 | ||
425 | /******************************************************************************* | 436 | /******************************************************************************* |
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index 69cbc57c2d1c..3bcb5bfc45d3 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c | |||
@@ -760,7 +760,6 @@ static int acpi_battery_add_fs(struct acpi_device *device) | |||
760 | acpi_battery_dir); | 760 | acpi_battery_dir); |
761 | if (!acpi_device_dir(device)) | 761 | if (!acpi_device_dir(device)) |
762 | return -ENODEV; | 762 | return -ENODEV; |
763 | acpi_device_dir(device)->owner = THIS_MODULE; | ||
764 | } | 763 | } |
765 | 764 | ||
766 | for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) { | 765 | for (i = 0; i < ACPI_BATTERY_NUMFILES; ++i) { |
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 765fd1c56cd6..bee64b73c919 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -758,8 +758,7 @@ static int __init acpi_bus_init(void) | |||
758 | acpi_status status = AE_OK; | 758 | acpi_status status = AE_OK; |
759 | extern acpi_status acpi_os_initialize1(void); | 759 | extern acpi_status acpi_os_initialize1(void); |
760 | 760 | ||
761 | 761 | acpi_os_initialize1(); | |
762 | status = acpi_os_initialize1(); | ||
763 | 762 | ||
764 | status = | 763 | status = |
765 | acpi_enable_subsystem(ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE); | 764 | acpi_enable_subsystem(ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE); |
@@ -769,12 +768,6 @@ static int __init acpi_bus_init(void) | |||
769 | goto error1; | 768 | goto error1; |
770 | } | 769 | } |
771 | 770 | ||
772 | if (ACPI_FAILURE(status)) { | ||
773 | printk(KERN_ERR PREFIX | ||
774 | "Unable to initialize ACPI OS objects\n"); | ||
775 | goto error1; | ||
776 | } | ||
777 | |||
778 | /* | 771 | /* |
779 | * ACPI 2.0 requires the EC driver to be loaded and work before | 772 | * ACPI 2.0 requires the EC driver to be loaded and work before |
780 | * the EC device is found in the namespace (i.e. before acpi_initialize_objects() | 773 | * the EC device is found in the namespace (i.e. before acpi_initialize_objects() |
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index 171fd914f435..c2f06069dcd4 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c | |||
@@ -200,12 +200,10 @@ static int acpi_button_add_fs(struct acpi_device *device) | |||
200 | 200 | ||
201 | if (!entry) | 201 | if (!entry) |
202 | return -ENODEV; | 202 | return -ENODEV; |
203 | entry->owner = THIS_MODULE; | ||
204 | 203 | ||
205 | acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), entry); | 204 | acpi_device_dir(device) = proc_mkdir(acpi_device_bid(device), entry); |
206 | if (!acpi_device_dir(device)) | 205 | if (!acpi_device_dir(device)) |
207 | return -ENODEV; | 206 | return -ENODEV; |
208 | acpi_device_dir(device)->owner = THIS_MODULE; | ||
209 | 207 | ||
210 | /* 'info' [R] */ | 208 | /* 'info' [R] */ |
211 | entry = proc_create_data(ACPI_BUTTON_FILE_INFO, | 209 | entry = proc_create_data(ACPI_BUTTON_FILE_INFO, |
@@ -522,7 +520,6 @@ static int __init acpi_button_init(void) | |||
522 | acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir); | 520 | acpi_button_dir = proc_mkdir(ACPI_BUTTON_CLASS, acpi_root_dir); |
523 | if (!acpi_button_dir) | 521 | if (!acpi_button_dir) |
524 | return -ENODEV; | 522 | return -ENODEV; |
525 | acpi_button_dir->owner = THIS_MODULE; | ||
526 | result = acpi_bus_register_driver(&acpi_button_driver); | 523 | result = acpi_bus_register_driver(&acpi_button_driver); |
527 | if (result < 0) { | 524 | if (result < 0) { |
528 | remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir); | 525 | remove_proc_entry(ACPI_BUTTON_CLASS, acpi_root_dir); |
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 35094f230b1e..7af7db1ba8c4 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c | |||
@@ -977,7 +977,7 @@ static int dock_add(acpi_handle handle) | |||
977 | sizeof(struct dock_station *)); | 977 | sizeof(struct dock_station *)); |
978 | 978 | ||
979 | /* we want the dock device to send uevents */ | 979 | /* we want the dock device to send uevents */ |
980 | dock_device->dev.uevent_suppress = 0; | 980 | dev_set_uevent_suppress(&dock_device->dev, 0); |
981 | 981 | ||
982 | if (is_dock(handle)) | 982 | if (is_dock(handle)) |
983 | dock_station->flags |= DOCK_IS_DOCK; | 983 | dock_station->flags |= DOCK_IS_DOCK; |
diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c index 0c24bd4d6562..aeb7e5fb4a04 100644 --- a/drivers/acpi/event.c +++ b/drivers/acpi/event.c | |||
@@ -235,11 +235,7 @@ int acpi_bus_generate_netlink_event(const char *device_class, | |||
235 | return result; | 235 | return result; |
236 | } | 236 | } |
237 | 237 | ||
238 | result = | 238 | genlmsg_multicast(skb, 0, acpi_event_mcgrp.id, GFP_ATOMIC); |
239 | genlmsg_multicast(skb, 0, acpi_event_mcgrp.id, GFP_ATOMIC); | ||
240 | if (result) | ||
241 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | ||
242 | "Failed to send a Genetlink message!\n")); | ||
243 | return 0; | 239 | return 0; |
244 | } | 240 | } |
245 | 241 | ||
diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c index eaaee1660bdf..8a02944bf92d 100644 --- a/drivers/acpi/fan.c +++ b/drivers/acpi/fan.c | |||
@@ -193,7 +193,6 @@ static int acpi_fan_add_fs(struct acpi_device *device) | |||
193 | acpi_fan_dir); | 193 | acpi_fan_dir); |
194 | if (!acpi_device_dir(device)) | 194 | if (!acpi_device_dir(device)) |
195 | return -ENODEV; | 195 | return -ENODEV; |
196 | acpi_device_dir(device)->owner = THIS_MODULE; | ||
197 | } | 196 | } |
198 | 197 | ||
199 | /* 'status' [R/W] */ | 198 | /* 'status' [R/W] */ |
@@ -347,7 +346,6 @@ static int __init acpi_fan_init(void) | |||
347 | acpi_fan_dir = proc_mkdir(ACPI_FAN_CLASS, acpi_root_dir); | 346 | acpi_fan_dir = proc_mkdir(ACPI_FAN_CLASS, acpi_root_dir); |
348 | if (!acpi_fan_dir) | 347 | if (!acpi_fan_dir) |
349 | return -ENODEV; | 348 | return -ENODEV; |
350 | acpi_fan_dir->owner = THIS_MODULE; | ||
351 | #endif | 349 | #endif |
352 | 350 | ||
353 | result = acpi_bus_register_driver(&acpi_fan_driver); | 351 | result = acpi_bus_register_driver(&acpi_fan_driver); |
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c index c5e292aab0e3..3a0d8ef25c75 100644 --- a/drivers/acpi/numa.c +++ b/drivers/acpi/numa.c | |||
@@ -277,7 +277,7 @@ int acpi_get_node(acpi_handle *handle) | |||
277 | int pxm, node = -1; | 277 | int pxm, node = -1; |
278 | 278 | ||
279 | pxm = acpi_get_pxm(handle); | 279 | pxm = acpi_get_pxm(handle); |
280 | if (pxm >= 0) | 280 | if (pxm >= 0 && pxm < MAX_PXM_DOMAINS) |
281 | node = acpi_map_pxm_to_node(pxm); | 281 | node = acpi_map_pxm_to_node(pxm); |
282 | 282 | ||
283 | return node; | 283 | return node; |
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index b3193ec0a2ef..eb8980d67368 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c | |||
@@ -272,14 +272,21 @@ acpi_os_map_memory(acpi_physical_address phys, acpi_size size) | |||
272 | } | 272 | } |
273 | EXPORT_SYMBOL_GPL(acpi_os_map_memory); | 273 | EXPORT_SYMBOL_GPL(acpi_os_map_memory); |
274 | 274 | ||
275 | void acpi_os_unmap_memory(void __iomem * virt, acpi_size size) | 275 | void __ref acpi_os_unmap_memory(void __iomem *virt, acpi_size size) |
276 | { | 276 | { |
277 | if (acpi_gbl_permanent_mmap) { | 277 | if (acpi_gbl_permanent_mmap) |
278 | iounmap(virt); | 278 | iounmap(virt); |
279 | } | 279 | else |
280 | __acpi_unmap_table(virt, size); | ||
280 | } | 281 | } |
281 | EXPORT_SYMBOL_GPL(acpi_os_unmap_memory); | 282 | EXPORT_SYMBOL_GPL(acpi_os_unmap_memory); |
282 | 283 | ||
284 | void __init early_acpi_os_unmap_memory(void __iomem *virt, acpi_size size) | ||
285 | { | ||
286 | if (!acpi_gbl_permanent_mmap) | ||
287 | __acpi_unmap_table(virt, size); | ||
288 | } | ||
289 | |||
283 | #ifdef ACPI_FUTURE_USAGE | 290 | #ifdef ACPI_FUTURE_USAGE |
284 | acpi_status | 291 | acpi_status |
285 | acpi_os_get_physical_address(void *virt, acpi_physical_address * phys) | 292 | acpi_os_get_physical_address(void *virt, acpi_physical_address * phys) |
@@ -1317,54 +1324,6 @@ acpi_os_validate_interface (char *interface) | |||
1317 | return AE_SUPPORT; | 1324 | return AE_SUPPORT; |
1318 | } | 1325 | } |
1319 | 1326 | ||
1320 | #ifdef CONFIG_X86 | ||
1321 | |||
1322 | struct aml_port_desc { | ||
1323 | uint start; | ||
1324 | uint end; | ||
1325 | char* name; | ||
1326 | char warned; | ||
1327 | }; | ||
1328 | |||
1329 | static struct aml_port_desc aml_invalid_port_list[] = { | ||
1330 | {0x20, 0x21, "PIC0", 0}, | ||
1331 | {0xA0, 0xA1, "PIC1", 0}, | ||
1332 | {0x4D0, 0x4D1, "ELCR", 0} | ||
1333 | }; | ||
1334 | |||
1335 | /* | ||
1336 | * valid_aml_io_address() | ||
1337 | * | ||
1338 | * if valid, return true | ||
1339 | * else invalid, warn once, return false | ||
1340 | */ | ||
1341 | static bool valid_aml_io_address(uint address, uint length) | ||
1342 | { | ||
1343 | int i; | ||
1344 | int entries = sizeof(aml_invalid_port_list) / sizeof(struct aml_port_desc); | ||
1345 | |||
1346 | for (i = 0; i < entries; ++i) { | ||
1347 | if ((address >= aml_invalid_port_list[i].start && | ||
1348 | address <= aml_invalid_port_list[i].end) || | ||
1349 | (address + length >= aml_invalid_port_list[i].start && | ||
1350 | address + length <= aml_invalid_port_list[i].end)) | ||
1351 | { | ||
1352 | if (!aml_invalid_port_list[i].warned) | ||
1353 | { | ||
1354 | printk(KERN_ERR "ACPI: Denied BIOS AML access" | ||
1355 | " to invalid port 0x%x+0x%x (%s)\n", | ||
1356 | address, length, | ||
1357 | aml_invalid_port_list[i].name); | ||
1358 | aml_invalid_port_list[i].warned = 1; | ||
1359 | } | ||
1360 | return false; /* invalid */ | ||
1361 | } | ||
1362 | } | ||
1363 | return true; /* valid */ | ||
1364 | } | ||
1365 | #else | ||
1366 | static inline bool valid_aml_io_address(uint address, uint length) { return true; } | ||
1367 | #endif | ||
1368 | /****************************************************************************** | 1327 | /****************************************************************************** |
1369 | * | 1328 | * |
1370 | * FUNCTION: acpi_os_validate_address | 1329 | * FUNCTION: acpi_os_validate_address |
@@ -1394,8 +1353,6 @@ acpi_os_validate_address ( | |||
1394 | 1353 | ||
1395 | switch (space_id) { | 1354 | switch (space_id) { |
1396 | case ACPI_ADR_SPACE_SYSTEM_IO: | 1355 | case ACPI_ADR_SPACE_SYSTEM_IO: |
1397 | if (!valid_aml_io_address(address, length)) | ||
1398 | return AE_AML_ILLEGAL_ADDRESS; | ||
1399 | case ACPI_ADR_SPACE_SYSTEM_MEMORY: | 1356 | case ACPI_ADR_SPACE_SYSTEM_MEMORY: |
1400 | /* Only interference checks against SystemIO and SytemMemory | 1357 | /* Only interference checks against SystemIO and SytemMemory |
1401 | are needed */ | 1358 | are needed */ |
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 0cc2fd31e376..fa2f7422d23d 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
@@ -359,7 +359,6 @@ static int acpi_processor_add_fs(struct acpi_device *device) | |||
359 | if (!acpi_device_dir(device)) | 359 | if (!acpi_device_dir(device)) |
360 | return -ENODEV; | 360 | return -ENODEV; |
361 | } | 361 | } |
362 | acpi_device_dir(device)->owner = THIS_MODULE; | ||
363 | 362 | ||
364 | /* 'info' [R] */ | 363 | /* 'info' [R] */ |
365 | entry = proc_create_data(ACPI_PROCESSOR_FILE_INFO, | 364 | entry = proc_create_data(ACPI_PROCESSOR_FILE_INFO, |
@@ -1137,7 +1136,6 @@ static int __init acpi_processor_init(void) | |||
1137 | acpi_processor_dir = proc_mkdir(ACPI_PROCESSOR_CLASS, acpi_root_dir); | 1136 | acpi_processor_dir = proc_mkdir(ACPI_PROCESSOR_CLASS, acpi_root_dir); |
1138 | if (!acpi_processor_dir) | 1137 | if (!acpi_processor_dir) |
1139 | return -ENOMEM; | 1138 | return -ENOMEM; |
1140 | acpi_processor_dir->owner = THIS_MODULE; | ||
1141 | 1139 | ||
1142 | /* | 1140 | /* |
1143 | * Check whether the system is DMI table. If yes, OSPM | 1141 | * Check whether the system is DMI table. If yes, OSPM |
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 9cc769b587ff..68fd3d292799 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c | |||
@@ -516,12 +516,12 @@ int acpi_processor_preregister_performance( | |||
516 | continue; | 516 | continue; |
517 | } | 517 | } |
518 | 518 | ||
519 | if (!performance || !percpu_ptr(performance, i)) { | 519 | if (!performance || !per_cpu_ptr(performance, i)) { |
520 | retval = -EINVAL; | 520 | retval = -EINVAL; |
521 | continue; | 521 | continue; |
522 | } | 522 | } |
523 | 523 | ||
524 | pr->performance = percpu_ptr(performance, i); | 524 | pr->performance = per_cpu_ptr(performance, i); |
525 | cpumask_set_cpu(i, pr->performance->shared_cpu_map); | 525 | cpumask_set_cpu(i, pr->performance->shared_cpu_map); |
526 | if (acpi_processor_get_psd(pr)) { | 526 | if (acpi_processor_get_psd(pr)) { |
527 | retval = -EINVAL; | 527 | retval = -EINVAL; |
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c index 6050ce481873..59afd52ccc12 100644 --- a/drivers/acpi/sbs.c +++ b/drivers/acpi/sbs.c | |||
@@ -488,7 +488,6 @@ acpi_sbs_add_fs(struct proc_dir_entry **dir, | |||
488 | if (!*dir) { | 488 | if (!*dir) { |
489 | return -ENODEV; | 489 | return -ENODEV; |
490 | } | 490 | } |
491 | (*dir)->owner = THIS_MODULE; | ||
492 | } | 491 | } |
493 | 492 | ||
494 | /* 'info' [R] */ | 493 | /* 'info' [R] */ |
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index 519266654f06..00456fccfa38 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c | |||
@@ -378,6 +378,22 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = { | |||
378 | DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"), | 378 | DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"), |
379 | }, | 379 | }, |
380 | }, | 380 | }, |
381 | { | ||
382 | .callback = init_old_suspend_ordering, | ||
383 | .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)", | ||
384 | .matches = { | ||
385 | DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."), | ||
386 | DMI_MATCH(DMI_BOARD_NAME, "M2N8L"), | ||
387 | }, | ||
388 | }, | ||
389 | { | ||
390 | .callback = init_set_sci_en_on_resume, | ||
391 | .ident = "Toshiba Satellite L300", | ||
392 | .matches = { | ||
393 | DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), | ||
394 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L300"), | ||
395 | }, | ||
396 | }, | ||
381 | {}, | 397 | {}, |
382 | }; | 398 | }; |
383 | #endif /* CONFIG_SUSPEND */ | 399 | #endif /* CONFIG_SUSPEND */ |
diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index a8852952fac4..fec1ae36d431 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c | |||
@@ -181,14 +181,15 @@ acpi_table_parse_entries(char *id, | |||
181 | struct acpi_subtable_header *entry; | 181 | struct acpi_subtable_header *entry; |
182 | unsigned int count = 0; | 182 | unsigned int count = 0; |
183 | unsigned long table_end; | 183 | unsigned long table_end; |
184 | acpi_size tbl_size; | ||
184 | 185 | ||
185 | if (!handler) | 186 | if (!handler) |
186 | return -EINVAL; | 187 | return -EINVAL; |
187 | 188 | ||
188 | if (strncmp(id, ACPI_SIG_MADT, 4) == 0) | 189 | if (strncmp(id, ACPI_SIG_MADT, 4) == 0) |
189 | acpi_get_table(id, acpi_apic_instance, &table_header); | 190 | acpi_get_table_with_size(id, acpi_apic_instance, &table_header, &tbl_size); |
190 | else | 191 | else |
191 | acpi_get_table(id, 0, &table_header); | 192 | acpi_get_table_with_size(id, 0, &table_header, &tbl_size); |
192 | 193 | ||
193 | if (!table_header) { | 194 | if (!table_header) { |
194 | printk(KERN_WARNING PREFIX "%4.4s not present\n", id); | 195 | printk(KERN_WARNING PREFIX "%4.4s not present\n", id); |
@@ -206,8 +207,10 @@ acpi_table_parse_entries(char *id, | |||
206 | table_end) { | 207 | table_end) { |
207 | if (entry->type == entry_id | 208 | if (entry->type == entry_id |
208 | && (!max_entries || count++ < max_entries)) | 209 | && (!max_entries || count++ < max_entries)) |
209 | if (handler(entry, table_end)) | 210 | if (handler(entry, table_end)) { |
211 | early_acpi_os_unmap_memory((char *)table_header, tbl_size); | ||
210 | return -EINVAL; | 212 | return -EINVAL; |
213 | } | ||
211 | 214 | ||
212 | entry = (struct acpi_subtable_header *) | 215 | entry = (struct acpi_subtable_header *) |
213 | ((unsigned long)entry + entry->length); | 216 | ((unsigned long)entry + entry->length); |
@@ -217,6 +220,7 @@ acpi_table_parse_entries(char *id, | |||
217 | "%i found\n", id, entry_id, count - max_entries, count); | 220 | "%i found\n", id, entry_id, count - max_entries, count); |
218 | } | 221 | } |
219 | 222 | ||
223 | early_acpi_os_unmap_memory((char *)table_header, tbl_size); | ||
220 | return count; | 224 | return count; |
221 | } | 225 | } |
222 | 226 | ||
@@ -241,17 +245,19 @@ acpi_table_parse_madt(enum acpi_madt_type id, | |||
241 | int __init acpi_table_parse(char *id, acpi_table_handler handler) | 245 | int __init acpi_table_parse(char *id, acpi_table_handler handler) |
242 | { | 246 | { |
243 | struct acpi_table_header *table = NULL; | 247 | struct acpi_table_header *table = NULL; |
248 | acpi_size tbl_size; | ||
244 | 249 | ||
245 | if (!handler) | 250 | if (!handler) |
246 | return -EINVAL; | 251 | return -EINVAL; |
247 | 252 | ||
248 | if (strncmp(id, ACPI_SIG_MADT, 4) == 0) | 253 | if (strncmp(id, ACPI_SIG_MADT, 4) == 0) |
249 | acpi_get_table(id, acpi_apic_instance, &table); | 254 | acpi_get_table_with_size(id, acpi_apic_instance, &table, &tbl_size); |
250 | else | 255 | else |
251 | acpi_get_table(id, 0, &table); | 256 | acpi_get_table_with_size(id, 0, &table, &tbl_size); |
252 | 257 | ||
253 | if (table) { | 258 | if (table) { |
254 | handler(table); | 259 | handler(table); |
260 | early_acpi_os_unmap_memory(table, tbl_size); | ||
255 | return 0; | 261 | return 0; |
256 | } else | 262 | } else |
257 | return 1; | 263 | return 1; |
@@ -265,8 +271,9 @@ int __init acpi_table_parse(char *id, acpi_table_handler handler) | |||
265 | static void __init check_multiple_madt(void) | 271 | static void __init check_multiple_madt(void) |
266 | { | 272 | { |
267 | struct acpi_table_header *table = NULL; | 273 | struct acpi_table_header *table = NULL; |
274 | acpi_size tbl_size; | ||
268 | 275 | ||
269 | acpi_get_table(ACPI_SIG_MADT, 2, &table); | 276 | acpi_get_table_with_size(ACPI_SIG_MADT, 2, &table, &tbl_size); |
270 | if (table) { | 277 | if (table) { |
271 | printk(KERN_WARNING PREFIX | 278 | printk(KERN_WARNING PREFIX |
272 | "BIOS bug: multiple APIC/MADT found," | 279 | "BIOS bug: multiple APIC/MADT found," |
@@ -275,6 +282,7 @@ static void __init check_multiple_madt(void) | |||
275 | "If \"acpi_apic_instance=%d\" works better, " | 282 | "If \"acpi_apic_instance=%d\" works better, " |
276 | "notify linux-acpi@vger.kernel.org\n", | 283 | "notify linux-acpi@vger.kernel.org\n", |
277 | acpi_apic_instance ? 0 : 2); | 284 | acpi_apic_instance ? 0 : 2); |
285 | early_acpi_os_unmap_memory(table, tbl_size); | ||
278 | 286 | ||
279 | } else | 287 | } else |
280 | acpi_apic_instance = 0; | 288 | acpi_apic_instance = 0; |
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 99e6f1f8ea45..c11f9aeca706 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
@@ -1506,7 +1506,6 @@ static int acpi_thermal_add_fs(struct acpi_device *device) | |||
1506 | acpi_thermal_dir); | 1506 | acpi_thermal_dir); |
1507 | if (!acpi_device_dir(device)) | 1507 | if (!acpi_device_dir(device)) |
1508 | return -ENODEV; | 1508 | return -ENODEV; |
1509 | acpi_device_dir(device)->owner = THIS_MODULE; | ||
1510 | } | 1509 | } |
1511 | 1510 | ||
1512 | /* 'state' [R] */ | 1511 | /* 'state' [R] */ |
@@ -1875,7 +1874,6 @@ static int __init acpi_thermal_init(void) | |||
1875 | acpi_thermal_dir = proc_mkdir(ACPI_THERMAL_CLASS, acpi_root_dir); | 1874 | acpi_thermal_dir = proc_mkdir(ACPI_THERMAL_CLASS, acpi_root_dir); |
1876 | if (!acpi_thermal_dir) | 1875 | if (!acpi_thermal_dir) |
1877 | return -ENODEV; | 1876 | return -ENODEV; |
1878 | acpi_thermal_dir->owner = THIS_MODULE; | ||
1879 | 1877 | ||
1880 | result = acpi_bus_register_driver(&acpi_thermal_driver); | 1878 | result = acpi_bus_register_driver(&acpi_thermal_driver); |
1881 | if (result < 0) { | 1879 | if (result < 0) { |
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index bb5ed059114a..67cc36dc9b82 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
@@ -1125,8 +1125,6 @@ static int acpi_video_device_add_fs(struct acpi_device *device) | |||
1125 | if (!device_dir) | 1125 | if (!device_dir) |
1126 | return -ENOMEM; | 1126 | return -ENOMEM; |
1127 | 1127 | ||
1128 | device_dir->owner = THIS_MODULE; | ||
1129 | |||
1130 | /* 'info' [R] */ | 1128 | /* 'info' [R] */ |
1131 | entry = proc_create_data("info", S_IRUGO, device_dir, | 1129 | entry = proc_create_data("info", S_IRUGO, device_dir, |
1132 | &acpi_video_device_info_fops, acpi_driver_data(device)); | 1130 | &acpi_video_device_info_fops, acpi_driver_data(device)); |
@@ -1403,8 +1401,6 @@ static int acpi_video_bus_add_fs(struct acpi_device *device) | |||
1403 | if (!device_dir) | 1401 | if (!device_dir) |
1404 | return -ENOMEM; | 1402 | return -ENOMEM; |
1405 | 1403 | ||
1406 | device_dir->owner = THIS_MODULE; | ||
1407 | |||
1408 | /* 'info' [R] */ | 1404 | /* 'info' [R] */ |
1409 | entry = proc_create_data("info", S_IRUGO, device_dir, | 1405 | entry = proc_create_data("info", S_IRUGO, device_dir, |
1410 | &acpi_video_bus_info_fops, | 1406 | &acpi_video_bus_info_fops, |
@@ -2131,7 +2127,6 @@ static int __init acpi_video_init(void) | |||
2131 | acpi_video_dir = proc_mkdir(ACPI_VIDEO_CLASS, acpi_root_dir); | 2127 | acpi_video_dir = proc_mkdir(ACPI_VIDEO_CLASS, acpi_root_dir); |
2132 | if (!acpi_video_dir) | 2128 | if (!acpi_video_dir) |
2133 | return -ENODEV; | 2129 | return -ENODEV; |
2134 | acpi_video_dir->owner = THIS_MODULE; | ||
2135 | 2130 | ||
2136 | result = acpi_bus_register_driver(&acpi_video_bus); | 2131 | result = acpi_bus_register_driver(&acpi_video_bus); |
2137 | if (result < 0) { | 2132 | if (result < 0) { |