73fd9f3c19
53356c1e-x86-HVM-correct-CPUID-leaf-80000008-handling.patch 533ad1ee-VMX-fix-PAT-value-seen-by-guest.patch 533d413b-x86-mm-fix-checks-against-max_mapped_pfn.patch - bnc#862608 - SLES 11 SP3 vm-install should get RHEL 7 support when released 53206661-pygrub-support-linux16-and-initrd16.patch - Upstream bug fixes 53299d8f-xenconsole-reset-tty-on-failure.patch 53299d8f-xenconsole-tolerate-tty-errors.patch - fix build for armv7l and aarch64 - Remove compiletime strings from qemu-upstream qemu-xen-upstream-megasas-buildtime.patch - bnc#871546 - KMPs are not signed in SUSE:SLE-12:GA? xen.spec - Upstream patches from Jan 532fff53-x86-fix-determination-of-bit-count-for-struct-domain-allocations.patch 5331917d-x86-enforce-preemption-in-HVM_set_mem_access-p2m_set_mem_access.patch - Drop xsa89.patch for upstream version (see bnc#867910, 5331917d-x86-enforce...) OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=309
35 lines
1.4 KiB
Diff
35 lines
1.4 KiB
Diff
# Commit fce79f8ce91dc45f3a4d699ee67c49e6cbeb1197
|
|
# Date 2014-04-01 16:49:18 +0200
|
|
# Author Jan Beulich <jbeulich@suse.com>
|
|
# Committer Jan Beulich <jbeulich@suse.com>
|
|
VMX: fix PAT value seen by guest
|
|
|
|
The XSA-60 fixes introduced a window during which the guest PAT gets
|
|
forced to all zeros. This shouldn't be visible to the guest. Therefore
|
|
we need to intercept PAT MSR accesses during that time period.
|
|
|
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
|
Reviewed-by: Liu Jinsong <jinsong.liu@intel.com>
|
|
|
|
--- a/xen/arch/x86/hvm/vmx/vmx.c
|
|
+++ b/xen/arch/x86/hvm/vmx/vmx.c
|
|
@@ -984,6 +984,8 @@ static void vmx_handle_cd(struct vcpu *v
|
|
|
|
vmx_get_guest_pat(v, pat);
|
|
vmx_set_guest_pat(v, uc_pat);
|
|
+ vmx_enable_intercept_for_msr(v, MSR_IA32_CR_PAT,
|
|
+ MSR_TYPE_R | MSR_TYPE_W);
|
|
|
|
wbinvd(); /* flush possibly polluted cache */
|
|
hvm_asid_flush_vcpu(v); /* invalidate memory type cached in TLB */
|
|
@@ -993,6 +995,9 @@ static void vmx_handle_cd(struct vcpu *v
|
|
{
|
|
v->arch.hvm_vcpu.cache_mode = NORMAL_CACHE_MODE;
|
|
vmx_set_guest_pat(v, *pat);
|
|
+ if ( !iommu_enabled || iommu_snoop )
|
|
+ vmx_disable_intercept_for_msr(v, MSR_IA32_CR_PAT,
|
|
+ MSR_TYPE_R | MSR_TYPE_W);
|
|
hvm_asid_flush_vcpu(v); /* no need to flush cache */
|
|
}
|
|
}
|