]> xenbits.xensource.com Git - people/dwmw2/xen.git/commit
x86/vmx: Fix vmentry failure because of invalid LER on Broadwell
authorRoss Lagerwall <ross.lagerwall@citrix.com>
Tue, 30 May 2017 14:05:04 +0000 (15:05 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 7 Jun 2017 11:00:41 +0000 (12:00 +0100)
commit20f1976b44199d1e7a15fe5d2c8c1a4375b74997
treec7c88a718fd0396c4558306d0a4a86705c1c0111
parent97fd49a7e0742eaca010fd4f5c6f19adac0275c4
x86/vmx: Fix vmentry failure because of invalid LER on Broadwell

Occasionally, on certain Broadwell CPUs MSR_IA32_LASTINTTOIP has been
observed to have the top three bits corrupted as though the MSR is using
the LBR_FORMAT_EIP_FLAGS_TSX format. This is incorrect and causes a
vmentry failure -- the MSR should contain an offset into the current
code segment. This is assumed to be erratum BDF14. Workaround the issue
by sign-extending into bits 48:63 for MSR_IA32_LASTINT{FROM,TO}IP.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
xen/arch/x86/hvm/vmx/vmx.c
xen/include/asm-x86/hvm/vmx/vmcs.h
xen/include/asm-x86/x86_64/page.h