From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Huang Subject: [Xen-4.0][PATCH] xsave: move xsave initialization code to a common place Date: Mon, 24 Oct 2011 15:50:46 -0500 Message-ID: <4EA5CFA6.2030808@amd.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010000080500090802080601" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org --------------010000080500090802080601 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit Please apply this patch to xen-4.0 tree. This patch moves xsave option setting and initilization to CPU common file. Without this Xen would crash on __context_switch() on xsave-capable AMD CPUs. The crash was due to cpu_has_xsave reports true in domain.c while xsave space wasn't initialized. This patch is adopted from xen upstream. Signed-off-by: Wei Huang --------------010000080500090802080601 Content-Type: text/plain; name="xen-4-xsave-init-code-path.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xen-4-xsave-init-code-path.txt" Content-Description: xen-4-xsave-init-code-path.txt # HG changeset patch # User Wei Huang # Date 1319469115 18000 # Branch patches # Node ID c863dbcd714987ca8f1ab93ffbf61ea64b394f23 # Parent 71b96c0b083f3de46f566a406e0aee16a427950f xsave: Move xsave initialization code to a common place This patch moves xsave option setting and initilization to CPU common file. Without this Xen would crash on __context_switch() on xsave-capable AMD CPUs. The crash was due to cpu_has_xsave reports true in domain.c while xsave space wasn't initialized. This patch is adopted from xen upstream. Signed-off-by: Wei Huang diff -r 71b96c0b083f -r c863dbcd7149 xen/arch/x86/cpu/common.c --- a/xen/arch/x86/cpu/common.c Mon Oct 24 10:04:25 2011 -0500 +++ b/xen/arch/x86/cpu/common.c Mon Oct 24 10:11:55 2011 -0500 @@ -22,6 +22,9 @@ static int disable_x86_fxsr __cpuinitdata; static int disable_x86_serial_nr __cpuinitdata; +static int use_xsave; +boolean_param("xsave", use_xsave); + struct cpu_dev * cpu_devs[X86_VENDOR_NUM] = {}; /* @@ -391,6 +394,13 @@ if (this_cpu->c_init) this_cpu->c_init(c); + /* Initialize xsave/xrstor features */ + if ( !use_xsave ) + clear_bit(X86_FEATURE_XSAVE, boot_cpu_data.x86_capability); + + if ( cpu_has_xsave ) + xsave_init(); + /* Disable the PN if appropriate */ squash_the_stupid_serial_number(c); diff -r 71b96c0b083f -r c863dbcd7149 xen/arch/x86/cpu/intel.c --- a/xen/arch/x86/cpu/intel.c Mon Oct 24 10:04:25 2011 -0500 +++ b/xen/arch/x86/cpu/intel.c Mon Oct 24 10:11:55 2011 -0500 @@ -30,9 +30,6 @@ integer_param("cpuid_mask_ecx", opt_cpuid_mask_ecx); integer_param("cpuid_mask_edx", opt_cpuid_mask_edx); -static int use_xsave; -boolean_param("xsave", use_xsave); - #ifdef CONFIG_X86_INTEL_USERCOPY /* * Alignment at which movsl is preferred for bulk memory copies. @@ -219,12 +216,6 @@ set_bit(X86_FEATURE_ARAT, c->x86_capability); start_vmx(); - - if ( !use_xsave ) - clear_bit(X86_FEATURE_XSAVE, boot_cpu_data.x86_capability); - - if ( cpu_has_xsave ) - xsave_init(); } --------------010000080500090802080601 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------010000080500090802080601--