aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/traps.c
diff options
context:
space:
mode:
authorLiu, Jinsong <jinsong.liu@intel.com>2011-12-01 12:22:43 +0100
committerLiu, Jinsong <jinsong.liu@intel.com>2011-12-01 12:22:43 +0100
commitb0933946291cba0f47f288ad6eb22a3c69321091 (patch)
tree57ad1ceb1191c8499d105554c351be2826a9852f /xen/arch/x86/traps.c
parent500161db50e3430026b5374462c1bdac00257abe (diff)
downloadxen-b0933946291cba0f47f288ad6eb22a3c69321091.tar.gz
xen-b0933946291cba0f47f288ad6eb22a3c69321091.tar.bz2
xen-b0933946291cba0f47f288ad6eb22a3c69321091.zip
X86: Disable PCID/INVPCID for dom0
PCID (Process-context identifier) is a facility by which a logical processor may cache information for multiple linear-address spaces. INVPCID is an new instruction to invalidate TLB. Refer latest Intel SDM http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html We disable PCID/INVPCID for dom0 and pv. Exposing them into dom0 and pv may result in performance regression, and it would trigger GP or UD depending on whether platform suppport INVPCID or not. This patch disables PCID/INVPCID for dom0. Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com> Committed-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/arch/x86/traps.c')
-rw-r--r--xen/arch/x86/traps.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index 03dc7c3501..7f38ddce6b 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -841,6 +841,7 @@ static void pv_cpuid(struct cpu_user_regs *regs)
__clear_bit(X86_FEATURE_CX16 % 32, &c);
__clear_bit(X86_FEATURE_XTPR % 32, &c);
__clear_bit(X86_FEATURE_PDCM % 32, &c);
+ __clear_bit(X86_FEATURE_PCID % 32, &c);
__clear_bit(X86_FEATURE_DCA % 32, &c);
if ( !xsave_enabled(current) )
{