Messages in this thread | | | Date | Thu, 04 Jun 2015 10:36:47 +0200 | From | Paolo Bonzini <> | Subject | Re: [PATCH 14/15] KVM: MTRR: do not map huage page for non-consistent range |
| |
On 04/06/2015 10:23, Xiao Guangrong wrote: >> >> So, why do you need to always use IPAT=0? Can patch 15 keep the current >> logic for RAM, like this: >> >> if (is_mmio || kvm_arch_has_noncoherent_dma(vcpu->kvm)) >> ret = kvm_mtrr_get_guest_memory_type(vcpu, gfn) << >> VMX_EPT_MT_EPTE_SHIFT; >> else >> ret = (MTRR_TYPE_WRBACK << VMX_EPT_MT_EPTE_SHIFT) >> | VMX_EPT_IPAT_BIT; > > Yeah, it's okay, actually we considered this way, however > - it's light enough, it did not hurt guest performance based on our > benchmark. > - the logic has always used for noncherent_dma case, extend it to > normal case should have low risk and also help us to check the logic.
But noncoherent_dma is not the common case, so it's not necessarily true that the risk is low.
> - completely follow MTRRS spec would be better than host hides it.
We are a virtualization platform, we know well when MTRRs are necessary.
Tis a risk from blindly obeying the guest MTRRs: userspace can see stale data if the guest's accesses bypass the cache. AMD bypasses this by enabling snooping even in cases that ordinarily wouldn't snoop; for Intel the solution is that RAM-backed areas should always use IPAT.
Paolo
| |