diff options
Diffstat (limited to 'arch/x86/kernel/acpi/cstate.c')
| -rw-r--r-- | arch/x86/kernel/acpi/cstate.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/cstate.c b/arch/x86/kernel/acpi/cstate.c index 158ad1483c43..cb6e076a6d39 100644 --- a/arch/x86/kernel/acpi/cstate.c +++ b/arch/x86/kernel/acpi/cstate.c @@ -51,6 +51,18 @@ void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,  	if (c->x86_vendor == X86_VENDOR_INTEL &&  	    (c->x86 > 0xf || (c->x86 == 6 && c->x86_model >= 0x0f)))  			flags->bm_control = 0; +	/* +	 * For all recent Centaur CPUs, the ucode will make sure that each +	 * core can keep cache coherence with each other while entering C3 +	 * type state. So, set bm_check to 1 to indicate that the kernel +	 * doesn't need to execute a cache flush operation (WBINVD) when +	 * entering C3 type state. +	 */ +	if (c->x86_vendor == X86_VENDOR_CENTAUR) { +		if (c->x86 > 6 || (c->x86 == 6 && c->x86_model == 0x0f && +		    c->x86_stepping >= 0x0e)) +			flags->bm_check = 1; +	}  }  EXPORT_SYMBOL(acpi_processor_power_init_bm_check);  | 
