> From: Jason Wang <jasow...@redhat.com> > Sent: Wednesday, November 24, 2021 5:35 PM > > On Wed, Nov 24, 2021 at 5:23 PM Peter Xu <pet...@redhat.com> wrote: > > > > On Wed, Nov 24, 2021 at 05:01:42PM +0800, Jason Wang wrote: > > > > > > > -static bool vtd_slpte_nonzero_rsvd(uint64_t slpte, uint32_t > level) > > > > > > > +static bool vtd_slpte_nonzero_rsvd(IntelIOMMUState *s, > > > > > > > + uint64_t slpte, uint32_t > > > > > > > level) > > > > > > > { > > > > > > > uint64_t rsvd_mask = vtd_spte_rsvd[level]; > > > > > > > > > > > > > > @@ -979,6 +980,10 @@ static bool > vtd_slpte_nonzero_rsvd(uint64_t slpte, uint32_t level) > > > > > > > rsvd_mask = vtd_spte_rsvd_large[level]; > > > > > > > } > > > > > > > > > > > > > > + if (s->scalable_mode) { > > > > > > > + rsvd_mask &= ~VTD_SPTE_SNP; > > > > > > > + } > > > > > > > > > > > > IMHO what we want to do is only to skip the leaves of pgtables on > SNP, so maybe > > > > > > we still want to keep checking the bit 11 reserved for e.g. common > pgtable dir > > > > > > entries? > > > > > > Maybe, but it's probably a question that can only be answered by > > > Intel. I can change it for the next version if you stick. > > > > I'm reading vtd spec v3.1 (June 2019) here, and chap 9.8 told me they're > > reserved bits for pgdir entries, as no SNP bit defined on pgdir entries. > > Yes, you're right.
yeah. The SNP bit is only available in the leaf paging entry. e.g. for 4KB pages, the SNP bit is in the PTE, but for 2MB pages, the SNP bit is in PDE, and etc. Regards, Yi Liu