On Thu, May 25, 2023 at 02:28:18AM +0000, Zhang, Tina wrote: > > +struct iommu_hwpt_intel_vtd { > > + __u64 flags; > > + __u64 pgtbl_addr; > > + __u32 pat; > > + __u32 emt; > Do we need the emt field as part of the stage-1 page table info? > IIUC, according to vt-d spec, the emt field is in stage-2 page table > entries. Since in nested mode we only expose stage-1 page table to > guest vt-d driver, I'm curious how does guest vt-d driver populate > this EMT? Indeed. The EMT is controlling how the iommu HW parses memory that is controlled by the kernel - this simply should not be something that userspace controls. The S2 itself has to decide if it is populating the EMT bits in the IOPTE and if so it could enable EMT. Does userspace need to be involved here? The seemingly more tricky thing is that it feels like EMT and PAT would like to be per-iova and we don't have a means for that right now. (and even if we did, how would qemu decide what to do ?) So probably drop it. Jason