mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
Merge tag 'for-linus-6.11' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Pull kvm fix from Paolo Bonzini: "Do not always honor guest PAT on CPUs that support self-snoop. This triggers an issue in the bochsdrm driver, which used ioremap() instead of ioremap_wc() to map the video RAM. The revert lets video RAM use the WB memory type instead of the slower UC memory type" * tag 'for-linus-6.11' of git://git.kernel.org/pub/scm/virt/kvm/kvm: Revert "KVM: VMX: Always honor guest PAT on CPUs that support self-snoop"
This commit is contained in:
@@ -4674,16 +4674,14 @@ out_unlock:
|
||||
bool kvm_mmu_may_ignore_guest_pat(void)
|
||||
{
|
||||
/*
|
||||
* When EPT is enabled (shadow_memtype_mask is non-zero), the CPU does
|
||||
* not support self-snoop (or is affected by an erratum), and the VM
|
||||
* When EPT is enabled (shadow_memtype_mask is non-zero), and the VM
|
||||
* has non-coherent DMA (DMA doesn't snoop CPU caches), KVM's ABI is to
|
||||
* honor the memtype from the guest's PAT so that guest accesses to
|
||||
* memory that is DMA'd aren't cached against the guest's wishes. As a
|
||||
* result, KVM _may_ ignore guest PAT, whereas without non-coherent DMA,
|
||||
* KVM _always_ ignores or honors guest PAT, i.e. doesn't toggle SPTE
|
||||
* bits in response to non-coherent device (un)registration.
|
||||
* KVM _always_ ignores guest PAT (when EPT is enabled).
|
||||
*/
|
||||
return !static_cpu_has(X86_FEATURE_SELFSNOOP) && shadow_memtype_mask;
|
||||
return shadow_memtype_mask;
|
||||
}
|
||||
|
||||
int kvm_tdp_page_fault(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault)
|
||||
|
||||
@@ -7659,13 +7659,11 @@ u8 vmx_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio)
|
||||
|
||||
/*
|
||||
* Force WB and ignore guest PAT if the VM does NOT have a non-coherent
|
||||
* device attached and the CPU doesn't support self-snoop. Letting the
|
||||
* guest control memory types on Intel CPUs without self-snoop may
|
||||
* result in unexpected behavior, and so KVM's (historical) ABI is to
|
||||
* trust the guest to behave only as a last resort.
|
||||
* device attached. Letting the guest control memory types on Intel
|
||||
* CPUs may result in unexpected behavior, and so KVM's ABI is to trust
|
||||
* the guest to behave only as a last resort.
|
||||
*/
|
||||
if (!static_cpu_has(X86_FEATURE_SELFSNOOP) &&
|
||||
!kvm_arch_has_noncoherent_dma(vcpu->kvm))
|
||||
if (!kvm_arch_has_noncoherent_dma(vcpu->kvm))
|
||||
return (MTRR_TYPE_WRBACK << VMX_EPT_MT_EPTE_SHIFT) | VMX_EPT_IPAT_BIT;
|
||||
|
||||
return (MTRR_TYPE_WRBACK << VMX_EPT_MT_EPTE_SHIFT);
|
||||
|
||||
Reference in New Issue
Block a user