Lines 39-44
Link Here
|
39 |
#include <linux/cpufreq.h> |
39 |
#include <linux/cpufreq.h> |
40 |
#include <linux/proc_fs.h> |
40 |
#include <linux/proc_fs.h> |
41 |
#include <linux/seq_file.h> |
41 |
#include <linux/seq_file.h> |
|
|
42 |
#include <linux/dmi.h> |
43 |
#include <linux/moduleparam.h> |
42 |
|
44 |
|
43 |
#include <asm/io.h> |
45 |
#include <asm/io.h> |
44 |
#include <asm/system.h> |
46 |
#include <asm/system.h> |
Lines 99-104
Link Here
|
99 |
}, |
101 |
}, |
100 |
}; |
102 |
}; |
101 |
|
103 |
|
|
|
104 |
static int c2 = -1; |
105 |
static int c3 = -1; |
102 |
|
106 |
|
103 |
struct acpi_processor_errata { |
107 |
struct acpi_processor_errata { |
104 |
u8 smp; |
108 |
u8 smp; |
Lines 140-145
Link Here
|
140 |
|
144 |
|
141 |
static struct acpi_processor *processors[NR_CPUS]; |
145 |
static struct acpi_processor *processors[NR_CPUS]; |
142 |
static struct acpi_processor_errata errata; |
146 |
static struct acpi_processor_errata errata; |
|
|
147 |
module_param_named(c2, c2, bool, 0); |
148 |
module_param_named(c3, c3, bool, 0); |
143 |
static void (*pm_idle_save)(void); |
149 |
static void (*pm_idle_save)(void); |
144 |
|
150 |
|
145 |
|
151 |
|
Lines 651-656
Link Here
|
651 |
else if (errata.smp) |
657 |
else if (errata.smp) |
652 |
ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
658 |
ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
653 |
"C2 not supported in SMP mode\n")); |
659 |
"C2 not supported in SMP mode\n")); |
|
|
660 |
|
661 |
|
662 |
else if (!c2) |
663 |
printk(KERN_INFO "C2 disabled\n"); |
664 |
|
654 |
/* |
665 |
/* |
655 |
* Otherwise we've met all of our C2 requirements. |
666 |
* Otherwise we've met all of our C2 requirements. |
656 |
* Normalize the C2 latency to expidite policy. |
667 |
* Normalize the C2 latency to expidite policy. |
Lines 706-711
Link Here
|
706 |
ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
717 |
ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
707 |
"C3 not supported on PIIX4 with Type-F DMA\n")); |
718 |
"C3 not supported on PIIX4 with Type-F DMA\n")); |
708 |
} |
719 |
} |
|
|
720 |
else if (!c3) |
721 |
printk(KERN_INFO "C3 disabled\n"); |
722 |
|
709 |
/* |
723 |
/* |
710 |
* Otherwise we've met all of our C3 requirements. |
724 |
* Otherwise we've met all of our C3 requirements. |
711 |
* Normalize the C2 latency to expidite policy. Enable |
725 |
* Normalize the C2 latency to expidite policy. Enable |
Lines 2438-2443
Link Here
|
2438 |
return_VALUE(0); |
2452 |
return_VALUE(0); |
2439 |
} |
2453 |
} |
2440 |
|
2454 |
|
|
|
2455 |
/* IBM ThinkPad R40e crashes mysteriously when going into C2 or C3. |
2456 |
For now disable this. Probably a bug somewhere else. */ |
2457 |
static int no_c2c3(struct dmi_system_id *id) |
2458 |
{ |
2459 |
printk(KERN_INFO |
2460 |
"%s detected - C2,C3 disabled. Overwrite with \"processor.c2=1 processor.c3=1\n\"", |
2461 |
id->ident); |
2462 |
if (c2 == -1) |
2463 |
c2 = 0; |
2464 |
if (c3 == -1) |
2465 |
c3 = 0; |
2466 |
return 0; |
2467 |
} |
2468 |
|
2469 |
static struct dmi_system_id __initdata processor_dmi_table[] = { |
2470 |
{ no_c2c3, "IBM ThinkPad R40e", { |
2471 |
DMI_MATCH(DMI_BIOS_VENDOR,"IBM"), |
2472 |
DMI_MATCH(DMI_BIOS_VERSION,"1SET60WW") }}, |
2473 |
{}, |
2474 |
}; |
2441 |
|
2475 |
|
2442 |
/* We keep the driver loaded even when ACPI is not running. |
2476 |
/* We keep the driver loaded even when ACPI is not running. |
2443 |
This is needed for the powernow-k8 driver, that works even without |
2477 |
This is needed for the powernow-k8 driver, that works even without |
Lines 2468-2473
Link Here
|
2468 |
|
2502 |
|
2469 |
acpi_processor_ppc_init(); |
2503 |
acpi_processor_ppc_init(); |
2470 |
|
2504 |
|
|
|
2505 |
dmi_check_system(processor_dmi_table); |
2506 |
|
2471 |
return_VALUE(0); |
2507 |
return_VALUE(0); |
2472 |
} |
2508 |
} |
2473 |
|
2509 |
|