Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: DMI: quirk for FSC ESPRIMO Mobile V5505
ACPI: DMI blacklist updates
pnpacpi: __initdata is not an identifier
ACPI: static acpi_chain_head
ACPI: static acpi_find_dsdt_initrd()
ACPI: static acpi_no_initrd_override_setup()
thinkpad_acpi: static
ACPI suspend: Execute _WAK with the right argument
cpuidle: Add Documentation
ACPI, cpuidle: Clarify C-state description in sysfs
ACPI: fix suspend regression due to idle update

+271 -22
+2
Documentation/00-INDEX
··· 109 109 - document describing CPU hotplug support in the Linux kernel. 110 110 cpu-load.txt 111 111 - document describing how CPU load statistics are collected. 112 + cpuidle/ 113 + - info on CPU_IDLE, CPU idle state management subsystem. 112 114 cpusets.txt 113 115 - documents the cpusets feature; assign CPUs and Mem to a set of tasks. 114 116 cputopology.txt
+23
Documentation/cpuidle/core.txt
··· 1 + 2 + Supporting multiple CPU idle levels in kernel 3 + 4 + cpuidle 5 + 6 + General Information: 7 + 8 + Various CPUs today support multiple idle levels that are differentiated 9 + by varying exit latencies and power consumption during idle. 10 + cpuidle is a generic in-kernel infrastructure that separates 11 + idle policy (governor) from idle mechanism (driver) and provides a 12 + standardized infrastructure to support independent development of 13 + governors and drivers. 14 + 15 + cpuidle resides under drivers/cpuidle. 16 + 17 + Boot options: 18 + "cpuidle_sysfs_switch" 19 + enables current_governor interface in /sys/devices/system/cpu/cpuidle/, 20 + which can be used to switch governors at run time. This boot option 21 + is meant for developer testing only. In normal usage, kernel picks the 22 + best governor based on governor ratings. 23 + SEE ALSO: sysfs.txt in this directory.
+31
Documentation/cpuidle/driver.txt
··· 1 + 2 + 3 + Supporting multiple CPU idle levels in kernel 4 + 5 + cpuidle drivers 6 + 7 + 8 + 9 + 10 + cpuidle driver hooks into the cpuidle infrastructure and handles the 11 + architecture/platform dependent part of CPU idle states. Driver 12 + provides the platform idle state detection capability and also 13 + has mechanisms in place to support actual entry-exit into CPU idle states. 14 + 15 + cpuidle driver initializes the cpuidle_device structure for each CPU device 16 + and registers with cpuidle using cpuidle_register_device. 17 + 18 + It can also support the dynamic changes (like battery <-> AC), by using 19 + cpuidle_pause_and_lock, cpuidle_disable_device and cpuidle_enable_device, 20 + cpuidle_resume_and_unlock. 21 + 22 + Interfaces: 23 + extern int cpuidle_register_driver(struct cpuidle_driver *drv); 24 + extern void cpuidle_unregister_driver(struct cpuidle_driver *drv); 25 + extern int cpuidle_register_device(struct cpuidle_device *dev); 26 + extern void cpuidle_unregister_device(struct cpuidle_device *dev); 27 + 28 + extern void cpuidle_pause_and_lock(void); 29 + extern void cpuidle_resume_and_unlock(void); 30 + extern int cpuidle_enable_device(struct cpuidle_device *dev); 31 + extern void cpuidle_disable_device(struct cpuidle_device *dev);
+29
Documentation/cpuidle/governor.txt
··· 1 + 2 + 3 + 4 + Supporting multiple CPU idle levels in kernel 5 + 6 + cpuidle governors 7 + 8 + 9 + 10 + 11 + cpuidle governor is policy routine that decides what idle state to enter at 12 + any given time. cpuidle core uses different callbacks to the governor. 13 + 14 + * enable() to enable governor for a particular device 15 + * disable() to disable governor for a particular device 16 + * select() to select an idle state to enter 17 + * reflect() called after returning from the idle state, which can be used 18 + by the governor for some record keeping. 19 + 20 + More than one governor can be registered at the same time and 21 + users can switch between drivers using /sysfs interface (when enabled). 22 + More than one governor part is supported for developers to easily experiment 23 + with different governors. By default, most optimal governor based on your 24 + kernel configuration and platform will be selected by cpuidle. 25 + 26 + Interfaces: 27 + extern int cpuidle_register_governor(struct cpuidle_governor *gov); 28 + extern void cpuidle_unregister_governor(struct cpuidle_governor *gov); 29 + struct cpuidle_governor
+79
Documentation/cpuidle/sysfs.txt
··· 1 + 2 + 3 + Supporting multiple CPU idle levels in kernel 4 + 5 + cpuidle sysfs 6 + 7 + System global cpuidle related information and tunables are under 8 + /sys/devices/system/cpu/cpuidle 9 + 10 + The current interfaces in this directory has self-explanatory names: 11 + * current_driver 12 + * current_governor_ro 13 + 14 + With cpuidle_sysfs_switch boot option (meant for developer testing) 15 + following objects are visible instead. 16 + * current_driver 17 + * available_governors 18 + * current_governor 19 + In this case users can switch the governor at run time by writing 20 + to current_governor. 21 + 22 + 23 + Per logical CPU specific cpuidle information are under 24 + /sys/devices/system/cpu/cpuX/cpuidle 25 + for each online cpu X 26 + 27 + -------------------------------------------------------------------------------- 28 + # ls -lR /sys/devices/system/cpu/cpu0/cpuidle/ 29 + /sys/devices/system/cpu/cpu0/cpuidle/: 30 + total 0 31 + drwxr-xr-x 2 root root 0 Feb 8 10:42 state0 32 + drwxr-xr-x 2 root root 0 Feb 8 10:42 state1 33 + drwxr-xr-x 2 root root 0 Feb 8 10:42 state2 34 + drwxr-xr-x 2 root root 0 Feb 8 10:42 state3 35 + 36 + /sys/devices/system/cpu/cpu0/cpuidle/state0: 37 + total 0 38 + -r--r--r-- 1 root root 4096 Feb 8 10:42 desc 39 + -r--r--r-- 1 root root 4096 Feb 8 10:42 latency 40 + -r--r--r-- 1 root root 4096 Feb 8 10:42 name 41 + -r--r--r-- 1 root root 4096 Feb 8 10:42 power 42 + -r--r--r-- 1 root root 4096 Feb 8 10:42 time 43 + -r--r--r-- 1 root root 4096 Feb 8 10:42 usage 44 + 45 + /sys/devices/system/cpu/cpu0/cpuidle/state1: 46 + total 0 47 + -r--r--r-- 1 root root 4096 Feb 8 10:42 desc 48 + -r--r--r-- 1 root root 4096 Feb 8 10:42 latency 49 + -r--r--r-- 1 root root 4096 Feb 8 10:42 name 50 + -r--r--r-- 1 root root 4096 Feb 8 10:42 power 51 + -r--r--r-- 1 root root 4096 Feb 8 10:42 time 52 + -r--r--r-- 1 root root 4096 Feb 8 10:42 usage 53 + 54 + /sys/devices/system/cpu/cpu0/cpuidle/state2: 55 + total 0 56 + -r--r--r-- 1 root root 4096 Feb 8 10:42 desc 57 + -r--r--r-- 1 root root 4096 Feb 8 10:42 latency 58 + -r--r--r-- 1 root root 4096 Feb 8 10:42 name 59 + -r--r--r-- 1 root root 4096 Feb 8 10:42 power 60 + -r--r--r-- 1 root root 4096 Feb 8 10:42 time 61 + -r--r--r-- 1 root root 4096 Feb 8 10:42 usage 62 + 63 + /sys/devices/system/cpu/cpu0/cpuidle/state3: 64 + total 0 65 + -r--r--r-- 1 root root 4096 Feb 8 10:42 desc 66 + -r--r--r-- 1 root root 4096 Feb 8 10:42 latency 67 + -r--r--r-- 1 root root 4096 Feb 8 10:42 name 68 + -r--r--r-- 1 root root 4096 Feb 8 10:42 power 69 + -r--r--r-- 1 root root 4096 Feb 8 10:42 time 70 + -r--r--r-- 1 root root 4096 Feb 8 10:42 usage 71 + -------------------------------------------------------------------------------- 72 + 73 + 74 + * desc : Small description about the idle state (string) 75 + * latency : Latency to exit out of this idle state (in microseconds) 76 + * name : Name of the idle state (string) 77 + * power : Power consumed while in this idle state (in milliwatts) 78 + * time : Total time spent in this idle state (in microseconds) 79 + * usage : Number of times this state was entered (count)
+2
arch/x86/kernel/acpi/cstate.c
··· 126 126 printk(KERN_DEBUG "Monitor-Mwait will be used to enter C-%d " 127 127 "state\n", cx->type); 128 128 } 129 + snprintf(cx->desc, ACPI_CX_DESC_LEN, "ACPI FFH INTEL MWAIT 0x%x", 130 + cx->address); 129 131 130 132 out: 131 133 set_cpus_allowed(current, saved_mask);
+56 -8
drivers/acpi/blacklist.c
··· 186 186 acpi_dmi_osi_linux(-1, d); /* unknown */ 187 187 return 0; 188 188 } 189 + static int __init dmi_disable_osi_vista(const struct dmi_system_id *d) 190 + { 191 + printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); 192 + acpi_osi_setup("!Windows 2006"); 193 + return 0; 194 + } 189 195 190 196 /* 191 197 * Most BIOS that invoke OSI(Linux) do nothing with it. ··· 234 228 * DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 5520"), 235 229 * DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 6460"), 236 230 * DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 7510"), 237 - * DMI_MATCH(DMI_PRODUCT_NAME, "Extensa 5220"), 238 231 * 239 232 * _OSI(Linux) is a NOP: 240 233 * DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5315"), 234 + * DMI_MATCH(DMI_PRODUCT_NAME, "Extensa 5220"), 241 235 */ 242 236 { 243 237 .callback = dmi_disable_osi_linux, ··· 333 327 }, 334 328 { /* OSI(Linux) effect unknown */ 335 329 .callback = dmi_unknown_osi_linux, 336 - .ident = "Dell OP GX620", 330 + .ident = "Dell OptiPlex GX620", 337 331 .matches = { 338 332 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 339 333 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex GX620"), 334 + }, 335 + }, 336 + { /* OSI(Linux) causes some USB initialization to not run */ 337 + .callback = dmi_unknown_osi_linux, 338 + .ident = "Dell OptiPlex 755", 339 + .matches = { 340 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 341 + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 755"), 340 342 }, 341 343 }, 342 344 { /* OSI(Linux) effect unknown */ ··· 353 339 .matches = { 354 340 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 355 341 DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1900"), 342 + }, 343 + }, 344 + { /* OSI(Linux) is a NOP */ 345 + .callback = dmi_unknown_osi_linux, 346 + .ident = "Dell PE 1950", 347 + .matches = { 348 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 349 + DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1950"), 356 350 }, 357 351 }, 358 352 { /* OSI(Linux) is a NOP */ ··· 377 355 .matches = { 378 356 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 379 357 DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation 390"), 358 + }, 359 + }, 360 + { /* OSI(Linux) touches USB */ 361 + .callback = dmi_unknown_osi_linux, 362 + .ident = "Dell PR 390", 363 + .matches = { 364 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 365 + DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation 690"), 366 + }, 367 + }, 368 + { /* OSI(Linux) unknown - ASL looks benign, but may effect dock/SMM */ 369 + .callback = dmi_unknown_osi_linux, 370 + .ident = "Dell PR M4300", 371 + .matches = { 372 + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), 373 + DMI_MATCH(DMI_PRODUCT_NAME, "Precision M4300"), 380 374 }, 381 375 }, 382 376 { /* OSI(Linux) is a NOP */ ··· 428 390 * DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pi 1536"), 429 391 * DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pi 1556"), 430 392 * DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 1546"), 393 + * DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"), 431 394 * _OSI(Linux) unknown effect: 432 395 * DMI_MATCH(DMI_PRODUCT_NAME, "Amilo M1425"), 433 396 * DMI_MATCH(DMI_PRODUCT_NAME, "Amilo Si 1520"), 434 - * DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"), 435 397 */ 436 398 { 437 399 .callback = dmi_disable_osi_linux, 438 400 .ident = "Fujitsu Siemens", 439 401 .matches = { 440 402 DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 403 + }, 404 + }, 405 + { 406 + .callback = dmi_disable_osi_vista, 407 + .ident = "Fujitsu Siemens", 408 + .matches = { 409 + DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"), 410 + DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"), 441 411 }, 442 412 }, 443 413 /* ··· 489 443 * _OSI(Linux) helps sound 490 444 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad R61"), 491 445 * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T61"), 446 + * _OSI(Linux) has Linux specific hooks 447 + * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"), 492 448 * _OSI(Linux) is a NOP: 493 449 * DMI_MATCH(DMI_PRODUCT_VERSION, "3000 N100"), 494 - * _OSI(Linux) effect unknown 495 - * DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"), 450 + * DMI_MATCH(DMI_PRODUCT_VERSION, "LENOVO3000 V100"), 496 451 */ 497 452 { 498 453 .callback = dmi_enable_osi_linux, ··· 512 465 }, 513 466 }, 514 467 { 515 - .callback = dmi_unknown_osi_linux, 468 + .callback = dmi_enable_osi_linux, 516 469 .ident = "Lenovo ThinkPad X61", 517 470 .matches = { 518 471 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ··· 520 473 }, 521 474 }, 522 475 { 523 - .callback = dmi_unknown_osi_linux, 476 + .callback = dmi_disable_osi_linux, 524 477 .ident = "Lenovo 3000 V100", 525 478 .matches = { 526 479 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ··· 590 543 * Disable OSI(Linux) warnings on all "Sony Corporation" 591 544 * 592 545 * _OSI(Linux) is a NOP: 593 - * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ650N"), 546 + * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NR11S_S"), 594 547 * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ38GP_C"), 548 + * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ650N"), 595 549 * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-TZ21MN_N"), 596 550 * _OSI(Linux) unknown effect: 597 551 * DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ11M"),
+1 -1
drivers/acpi/event.c
··· 110 110 #endif /* CONFIG_ACPI_PROC_EVENT */ 111 111 112 112 /* ACPI notifier chain */ 113 - BLOCKING_NOTIFIER_HEAD(acpi_chain_head); 113 + static BLOCKING_NOTIFIER_HEAD(acpi_chain_head); 114 114 115 115 int acpi_notifier_call_chain(struct acpi_device *dev, u32 type, u32 data) 116 116 {
+1
drivers/acpi/hardware/hwsleep.c
··· 616 616 return_ACPI_STATUS(status); 617 617 } 618 618 619 + arg.integer.value = sleep_state; 619 620 status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL); 620 621 if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { 621 622 ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
+3 -3
drivers/acpi/osl.c
··· 325 325 } 326 326 327 327 #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD 328 - struct acpi_table_header *acpi_find_dsdt_initrd(void) 328 + static struct acpi_table_header *acpi_find_dsdt_initrd(void) 329 329 { 330 330 struct file *firmware_file; 331 331 mm_segment_t oldfs; ··· 419 419 } 420 420 421 421 #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD 422 - int __init acpi_no_initrd_override_setup(char *s) 422 + static int __init acpi_no_initrd_override_setup(char *s) 423 423 { 424 424 acpi_no_initrd_override = 1; 425 425 return 1; ··· 1109 1109 * string starting with '!' disables that string 1110 1110 * otherwise string is added to list, augmenting built-in strings 1111 1111 */ 1112 - static int __init acpi_osi_setup(char *str) 1112 + int __init acpi_osi_setup(char *str) 1113 1113 { 1114 1114 if (str == NULL || *str == '\0') { 1115 1115 printk(KERN_INFO PREFIX "_OSI method disabled\n");
+19
drivers/acpi/processor_idle.c
··· 945 945 * Otherwise, ignore this info and continue. 946 946 */ 947 947 cx.entry_method = ACPI_CSTATE_HALT; 948 + snprintf(cx.desc, ACPI_CX_DESC_LEN, "ACPI HLT"); 948 949 } else { 949 950 continue; 950 951 } 952 + } else { 953 + snprintf(cx.desc, ACPI_CX_DESC_LEN, "ACPI IOPORT 0x%x", 954 + cx.address); 951 955 } 956 + 952 957 953 958 obj = &(element->package.elements[2]); 954 959 if (obj->type != ACPI_TYPE_INTEGER) ··· 1425 1420 return 0; 1426 1421 1427 1422 local_irq_disable(); 1423 + 1424 + /* Do not access any ACPI IO ports in suspend path */ 1425 + if (acpi_idle_suspend) { 1426 + acpi_safe_halt(); 1427 + local_irq_enable(); 1428 + return 0; 1429 + } 1430 + 1428 1431 if (pr->flags.bm_check) 1429 1432 acpi_idle_update_bm_rld(pr, cx); 1430 1433 ··· 1656 1643 return -EINVAL; 1657 1644 } 1658 1645 1646 + for (i = 0; i < CPUIDLE_STATE_MAX; i++) { 1647 + dev->states[i].name[0] = '\0'; 1648 + dev->states[i].desc[0] = '\0'; 1649 + } 1650 + 1659 1651 for (i = 1; i < ACPI_PROCESSOR_MAX_POWER && i <= max_cstate; i++) { 1660 1652 cx = &pr->power.states[i]; 1661 1653 state = &dev->states[count]; ··· 1677 1659 cpuidle_set_statedata(state, cx); 1678 1660 1679 1661 snprintf(state->name, CPUIDLE_NAME_LEN, "C%d", i); 1662 + strncpy(state->desc, cx->desc, CPUIDLE_DESC_LEN); 1680 1663 state->exit_latency = cx->latency; 1681 1664 state->target_residency = cx->latency * latency_factor; 1682 1665 state->power_usage = cx->power;
+2 -1
drivers/cpuidle/cpuidle.c
··· 219 219 220 220 cpuidle_set_statedata(state, NULL); 221 221 222 - snprintf(state->name, CPUIDLE_NAME_LEN, "C0 (poll idle)"); 222 + snprintf(state->name, CPUIDLE_NAME_LEN, "C0"); 223 + snprintf(state->desc, CPUIDLE_DESC_LEN, "CPUIDLE CORE POLL IDLE"); 223 224 state->exit_latency = 0; 224 225 state->target_residency = 0; 225 226 state->power_usage = -1;
+11 -3
drivers/cpuidle/sysfs.c
··· 218 218 return sprintf(buf, "%u\n", state->_name);\ 219 219 } 220 220 221 - static ssize_t show_state_name(struct cpuidle_state *state, char *buf) 222 - { 223 - return sprintf(buf, "%s\n", state->name); 221 + #define define_show_state_str_function(_name) \ 222 + static ssize_t show_state_##_name(struct cpuidle_state *state, char *buf) \ 223 + { \ 224 + if (state->_name[0] == '\0')\ 225 + return sprintf(buf, "<null>\n");\ 226 + return sprintf(buf, "%s\n", state->_name);\ 224 227 } 225 228 226 229 define_show_state_function(exit_latency) 227 230 define_show_state_function(power_usage) 228 231 define_show_state_function(usage) 229 232 define_show_state_function(time) 233 + define_show_state_str_function(name) 234 + define_show_state_str_function(desc) 235 + 230 236 define_one_state_ro(name, show_state_name); 237 + define_one_state_ro(desc, show_state_desc); 231 238 define_one_state_ro(latency, show_state_exit_latency); 232 239 define_one_state_ro(power, show_state_power_usage); 233 240 define_one_state_ro(usage, show_state_usage); ··· 242 235 243 236 static struct attribute *cpuidle_state_default_attrs[] = { 244 237 &attr_name.attr, 238 + &attr_desc.attr, 245 239 &attr_latency.attr, 246 240 &attr_power.attr, 247 241 &attr_usage.attr,
+2 -2
drivers/misc/thinkpad_acpi.c
··· 1689 1689 static struct device_attribute dev_attr_hotkey_wakeup_reason = 1690 1690 __ATTR(wakeup_reason, S_IRUGO, hotkey_wakeup_reason_show, NULL); 1691 1691 1692 - void hotkey_wakeup_reason_notify_change(void) 1692 + static void hotkey_wakeup_reason_notify_change(void) 1693 1693 { 1694 1694 if (tp_features.hotkey_mask) 1695 1695 sysfs_notify(&tpacpi_pdev->dev.kobj, NULL, ··· 1708 1708 __ATTR(wakeup_hotunplug_complete, S_IRUGO, 1709 1709 hotkey_wakeup_hotunplug_complete_show, NULL); 1710 1710 1711 - void hotkey_wakeup_hotunplug_complete_notify_change(void) 1711 + static void hotkey_wakeup_hotunplug_complete_notify_change(void) 1712 1712 { 1713 1713 if (tp_features.hotkey_mask) 1714 1714 sysfs_notify(&tpacpi_pdev->dev.kobj, NULL,
+1 -1
drivers/pnp/pnpacpi/core.c
··· 36 36 * have irqs (PIC, Timer) because we call acpi_register_gsi. 37 37 * Finally, only devices that have a CRS method need to be in this list. 38 38 */ 39 - static struct __initdata acpi_device_id excluded_id_list[] = { 39 + static struct acpi_device_id excluded_id_list[] __initdata = { 40 40 {"PNP0C09", 0}, /* EC */ 41 41 {"PNP0C0F", 0}, /* Link device */ 42 42 {"PNP0000", 0}, /* PIC */
+6 -3
include/acpi/processor.h
··· 32 32 #define DOMAIN_COORD_TYPE_SW_ANY 0xfd 33 33 #define DOMAIN_COORD_TYPE_HW_ALL 0xfe 34 34 35 - #define ACPI_CSTATE_SYSTEMIO (0) 36 - #define ACPI_CSTATE_FFH (1) 37 - #define ACPI_CSTATE_HALT (2) 35 + #define ACPI_CSTATE_SYSTEMIO 0 36 + #define ACPI_CSTATE_FFH 1 37 + #define ACPI_CSTATE_HALT 2 38 + 39 + #define ACPI_CX_DESC_LEN 32 38 40 39 41 /* Power Management */ 40 42 ··· 76 74 u64 time; 77 75 struct acpi_processor_cx_policy promotion; 78 76 struct acpi_processor_cx_policy demotion; 77 + char desc[ACPI_CX_DESC_LEN]; 79 78 }; 80 79 81 80 struct acpi_processor_power {
+1
include/linux/acpi.h
··· 203 203 extern int acpi_blacklisted(void); 204 204 #ifdef CONFIG_DMI 205 205 extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d); 206 + extern int acpi_osi_setup(char *str); 206 207 #endif 207 208 208 209 #ifdef CONFIG_ACPI_NUMA
+2
include/linux/cpuidle.h
··· 19 19 20 20 #define CPUIDLE_STATE_MAX 8 21 21 #define CPUIDLE_NAME_LEN 16 22 + #define CPUIDLE_DESC_LEN 32 22 23 23 24 struct cpuidle_device; 24 25 ··· 30 29 31 30 struct cpuidle_state { 32 31 char name[CPUIDLE_NAME_LEN]; 32 + char desc[CPUIDLE_DESC_LEN]; 33 33 void *driver_data; 34 34 35 35 unsigned int flags;