Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 12 Jan 2014 12:31:14 +0000 (UTC)
From:      "Cherry G. Mathew" <cherry@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r260561 - in projects/amd64_xen_pv/sys/amd64: amd64 xen
Message-ID:  <201401121231.s0CCVEeL004140@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cherry
Date: Sun Jan 12 12:31:14 2014
New Revision: 260561
URL: http://svnweb.freebsd.org/changeset/base/260561

Log:
  Disable the kernel's use of 'xsave' under XEN pv
  
  Approved by:	gibbs@ (implicit)

Modified:
  projects/amd64_xen_pv/sys/amd64/amd64/fpu.c
  projects/amd64_xen_pv/sys/amd64/xen/machdep.c

Modified: projects/amd64_xen_pv/sys/amd64/amd64/fpu.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/amd64/fpu.c	Sun Jan 12 12:14:38 2014	(r260560)
+++ projects/amd64_xen_pv/sys/amd64/amd64/fpu.c	Sun Jan 12 12:31:14 2014	(r260561)
@@ -172,10 +172,12 @@ fpuinit_bsp1(void)
 	u_int cp[4];
 	uint64_t xsave_mask_user;
 
+#ifndef XEN /* XEN pv doesn't support xsave yet */
 	if ((cpu_feature2 & CPUID2_XSAVE) != 0) {
 		use_xsave = 1;
 		TUNABLE_INT_FETCH("hw.use_xsave", &use_xsave);
 	}
+#endif
 	if (!use_xsave)
 		return;
 

Modified: projects/amd64_xen_pv/sys/amd64/xen/machdep.c
==============================================================================
--- projects/amd64_xen_pv/sys/amd64/xen/machdep.c	Sun Jan 12 12:14:38 2014	(r260560)
+++ projects/amd64_xen_pv/sys/amd64/xen/machdep.c	Sun Jan 12 12:31:14 2014	(r260561)
@@ -586,10 +586,10 @@ initxen(struct start_info *si)
 	/* Enable write permissions for code patching */
 	static vm_offset_t xsave_cpage;
 	xsave_cpage = (vm_offset_t) ctx_switch_xsave & ~PAGE_MASK;
-	PT_SET_MA(xsave_cpage, phystomach(VTOP(xsave_cpage)) | PG_V | PG_U | PG_RW);
+	if (use_xsave)
+		PT_SET_MA(xsave_cpage, phystomach(VTOP(xsave_cpage)) | PG_V | PG_U | PG_RW);
 	fpuinit();
-	PT_SET_MA(xsave_cpage, phystomach(VTOP(xsave_cpage)) | PG_V | PG_U);
-
+	if (use_xsave) PT_SET_MA(xsave_cpage, phystomach(VTOP(xsave_cpage)) | PG_V | PG_U);
 
 	/*
 	 * Set up thread0 pcb after fpuinit calculated pcb + fpu save



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401121231.s0CCVEeL004140>