Re: [PATCH v3 1/2] iommu/amd: Remove PT_FEAT_DYNAMIC_TOP from PT_FORCE_ENABLED_FEATURES
From: Ankit Soni
Date: Thu Mar 12 2026 - 00:10:32 EST
On Wed, Mar 11, 2026 at 01:44:03PM -0300, Jason Gunthorpe wrote:
> On Wed, Mar 11, 2026 at 09:54:55PM +0530, Vasant Hegde wrote:
> >
> > + Jason
> >
> > On 3/9/2026 7:35 PM, Ankit Soni wrote:
> > > Dynamic top is used to grow the page table levels. However, if the VA
> > > size is small and the initial page table level already covers the entire
> > > address space, table growth is not required. In that case, the generic
> > > page table framework clears PT_FEAT_DYNAMIC_TOP, which in turn causes
> > > error -EOPNOTSUPP and leads to domain initialization failure.
> > >
> > > Remove PT_FEAT_DYNAMIC_TOP from PT_FORCE_ENABLED_FEATURES, since during
> > > domain allocation AMD IOMMU driver explicitly sets PT_FEAT_DYNAMIC_TOP
> > > via cfg.common.features, this keeps normal runtime behavior unchanged.
> > >
> >
> > Fixes: 879ced2bab1 ("iommupt: Add the AMD IOMMU v1 page table format")
>
> No.. There is no bug here.
>
> I don't really understand why you'd want to do this, the driver still
> sets PT_FEAT_DYNAMIC_TOP, so what is the issue?
>
> It shouldn't be removed from PT_FORCE_ENABLED_FEATURES, something else
> is wrong.
>
> Jason
When hw_max_vasz_lg2 = 32 and starting_level = 2, top_range.max_vasz_lg2
comes back as 32 (clamped by min(32, 39)), so it matches
common->max_vasz_lg2. The 'pt_init_common()' clears dynamic top because
"the table can't grow beyond its current level." with next condition in
this function, domain init will fail with "-EOPNOTSUPP".
Ankit