Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Jun 2014 23:05:12 +0000 (UTC)
From:      Peter Grehan <grehan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r267217 - projects/bhyve_svm/sys/amd64/vmm/amd
Message-ID:  <201406072305.s57N5COl081593@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: grehan
Date: Sat Jun  7 23:05:12 2014
New Revision: 267217
URL: http://svnweb.freebsd.org/changeset/base/267217

Log:
  Set the guest PAT MSR in the VMCB to power-on defaults.
  
  Linux guests accept the values in this register, while *BSD
  guests reprogram it. Default values of zero correspond to
  PAT_UNCACHEABLE, resulting in glacial performance.
  
  Thanks to Willem Jan Withagen for first reporting this and
  helping out with the investigation.

Modified:
  projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.c

Modified: projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.c
==============================================================================
--- projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.c	Sat Jun  7 21:36:52 2014	(r267216)
+++ projects/bhyve_svm/sys/amd64/vmm/amd/vmcb.c	Sat Jun  7 23:05:12 2014	(r267217)
@@ -67,10 +67,20 @@ svm_init_vmcb(struct vmcb *vmcb, uint64_
 	/* Enable nested paging */
 	ctrl->np_enable = 1;
 	ctrl->n_cr3 = np_pml4;
-
+	
 	/* EFER_SVM must always be set when the guest is executing */
 	state->efer = EFER_SVM;
-	
+
+	/* Set up the PAT to power-on state */
+	state->g_pat = PAT_VALUE(0, PAT_WRITE_BACK)	|
+	    PAT_VALUE(1, PAT_WRITE_THROUGH)	|
+	    PAT_VALUE(2, PAT_UNCACHED)		|
+	    PAT_VALUE(3, PAT_UNCACHEABLE)	|
+	    PAT_VALUE(4, PAT_WRITE_BACK)	|
+	    PAT_VALUE(5, PAT_WRITE_THROUGH)	|
+	    PAT_VALUE(6, PAT_UNCACHED)		|
+	    PAT_VALUE(7, PAT_UNCACHEABLE);
+
 	return (0);
 }
 



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