mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ACPI: Disable MWAIT via DMI on broken Compal board
If a system matches in this DMI table, Linux will disable MWAIT support for idle. ie. "idle=nomwait" is automatically invoked and C1_FFH and C2C3_FFH access mode are disabled. http://bugzilla.kernel.org/show_bug.cgi?id=10807 http://bugzilla.kernel.org/show_bug.cgi?id=10914 Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Signed-off-by: Li Shaohua <shaohua.li@intel.com> Signed-off-by: Len Brown <len.brown@intel.com> Signed-off-by: Andi Kleen <ak@linux.intel.com>
This commit is contained in:
		
							parent
							
								
									da5e09a1b3
								
							
						
					
					
						commit
						2a2a64714d
					
				
					 1 changed files with 28 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -120,6 +120,29 @@ static const struct file_operations acpi_processor_info_fops = {
 | 
			
		|||
 | 
			
		||||
DEFINE_PER_CPU(struct acpi_processor *, processors);
 | 
			
		||||
struct acpi_processor_errata errata __read_mostly;
 | 
			
		||||
static int set_no_mwait(const struct dmi_system_id *id)
 | 
			
		||||
{
 | 
			
		||||
	printk(KERN_NOTICE PREFIX "%s detected - "
 | 
			
		||||
		"disable mwait for CPU C-stetes\n", id->ident);
 | 
			
		||||
	idle_nomwait = 1;
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct dmi_system_id __cpuinitdata processor_idle_dmi_table[] = {
 | 
			
		||||
	{
 | 
			
		||||
	set_no_mwait, "IFL91 board", {
 | 
			
		||||
	DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"),
 | 
			
		||||
	DMI_MATCH(DMI_SYS_VENDOR, "ZEPTO"),
 | 
			
		||||
	DMI_MATCH(DMI_PRODUCT_VERSION, "3215W"),
 | 
			
		||||
	DMI_MATCH(DMI_BOARD_NAME, "IFL91") }, NULL},
 | 
			
		||||
	{
 | 
			
		||||
	set_no_mwait, "Extensa 5220", {
 | 
			
		||||
	DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
 | 
			
		||||
	DMI_MATCH(DMI_SYS_VENDOR, "ACER"),
 | 
			
		||||
	DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
 | 
			
		||||
	DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
 | 
			
		||||
	{},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* --------------------------------------------------------------------------
 | 
			
		||||
                                Errata Handling
 | 
			
		||||
| 
						 | 
				
			
			@ -1100,6 +1123,11 @@ static int __init acpi_processor_init(void)
 | 
			
		|||
		return -ENOMEM;
 | 
			
		||||
	acpi_processor_dir->owner = THIS_MODULE;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Check whether the system is DMI table. If yes, OSPM
 | 
			
		||||
	 * should not use mwait for CPU-states.
 | 
			
		||||
	 */
 | 
			
		||||
	dmi_check_system(processor_idle_dmi_table);
 | 
			
		||||
	result = cpuidle_register_driver(&acpi_idle_driver);
 | 
			
		||||
	if (result < 0)
 | 
			
		||||
		goto out_proc;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue