View | Details | Raw Unified | Return to bug 3549 | Differences between
and this patch

Collapse All | Expand All

(-)linux/drivers/acpi/processor.c-DMI (+36 lines)
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

Return to bug 3549