On Sat, 2022-10-29 at 23:23 -0700, isaku.yamahata@xxxxxxxxx wrote: > +static u8 vt_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio) > +{ > + if (is_td_vcpu(vcpu)) { > + if (is_mmio) > + return MTRR_TYPE_UNCACHABLE << VMX_EPT_MT_EPTE_SHIFT; > + return MTRR_TYPE_WRBACK << VMX_EPT_MT_EPTE_SHIFT; > + } > + > + return vmx_get_mt_mask(vcpu, gfn, is_mmio); > +} So you are returning WB for _ALL_ guest memory, including shared. Wouldn't this break MTRR handling for shared memory? For instance, IIUC we can still support assigning a device to a TDX guest while the VT-d doesn't support coherent memory, in which case guest's MTRR/PAT are honored. I think this should also apply to TDX guest's shared memory?