Tweak the logic to disable CLFLUSH in virtual environments to work around
problems with flushing the local APIC register range so that it checks vm_guest directly. Reviewed by: kib, alc MFC after: 2 weeks
This commit is contained in:
parent
ec28b7bf63
commit
c6eb2c5ec7
@ -177,17 +177,17 @@ initializecpucache()
|
||||
if ((cpu_feature & CPUID_CLFSH) != 0)
|
||||
cpu_clflush_line_size = ((cpu_procinfo >> 8) & 0xff) * 8;
|
||||
/*
|
||||
* XXXKIB: (temporary) hack to work around traps generated when
|
||||
* CLFLUSHing APIC registers window.
|
||||
* XXXKIB: (temporary) hack to work around traps generated
|
||||
* when CLFLUSHing APIC register window under virtualization
|
||||
* environments. These environments tend to disable the
|
||||
* CPUID_SS feature even though the native CPU supports it.
|
||||
*/
|
||||
TUNABLE_INT_FETCH("hw.clflush_disable", &hw_clflush_disable);
|
||||
if (cpu_vendor_id == CPU_VENDOR_INTEL && !(cpu_feature & CPUID_SS) &&
|
||||
hw_clflush_disable == -1)
|
||||
if (vm_guest != VM_GUEST_NO && hw_clflush_disable == -1)
|
||||
cpu_feature &= ~CPUID_CLFSH;
|
||||
/*
|
||||
* Allow to disable CLFLUSH feature manually by
|
||||
* hw.clflush_disable tunable. This may help Xen guest on some AMD
|
||||
* CPUs.
|
||||
* hw.clflush_disable tunable.
|
||||
*/
|
||||
if (hw_clflush_disable == 1)
|
||||
cpu_feature &= ~CPUID_CLFSH;
|
||||
|
@ -724,17 +724,17 @@ initializecpu(void)
|
||||
if ((cpu_feature & CPUID_CLFSH) != 0)
|
||||
cpu_clflush_line_size = ((cpu_procinfo >> 8) & 0xff) * 8;
|
||||
/*
|
||||
* XXXKIB: (temporary) hack to work around traps generated when
|
||||
* CLFLUSHing APIC registers window.
|
||||
* XXXKIB: (temporary) hack to work around traps generated
|
||||
* when CLFLUSHing APIC register window under virtualization
|
||||
* environments. These environments tend to disable the
|
||||
* CPUID_SS feature even though the native CPU supports it.
|
||||
*/
|
||||
TUNABLE_INT_FETCH("hw.clflush_disable", &hw_clflush_disable);
|
||||
if (cpu_vendor_id == CPU_VENDOR_INTEL && !(cpu_feature & CPUID_SS) &&
|
||||
hw_clflush_disable == -1)
|
||||
if (vm_guest != VM_GUEST_NO && hw_clflush_disable == -1)
|
||||
cpu_feature &= ~CPUID_CLFSH;
|
||||
/*
|
||||
* Allow to disable CLFLUSH feature manually by
|
||||
* hw.clflush_disable tunable. This may help Xen guest on some AMD
|
||||
* CPUs.
|
||||
* hw.clflush_disable tunable.
|
||||
*/
|
||||
if (hw_clflush_disable == 1)
|
||||
cpu_feature &= ~CPUID_CLFSH;
|
||||
|
Loading…
Reference in New Issue
Block a user