> -----Original Message----- > From: Zhangfei Gao <[email protected]> > Sent: 01 November 2025 14:20 > To: Shameer Kolothum <[email protected]> > Cc: [email protected]; [email protected]; > [email protected]; [email protected]; Jason Gunthorpe > <[email protected]>; Nicolin Chen <[email protected]>; > [email protected]; [email protected]; Nathan Chen > <[email protected]>; Matt Ochs <[email protected]>; > [email protected]; [email protected]; > [email protected]; [email protected]; > [email protected]; [email protected]; Krishnakant Jaju > <[email protected]> > Subject: Re: [PATCH v5 19/32] hw/arm/smmuv3-accel: Get host SMMUv3 hw > info and validate > > External email: Use caution opening links or attachments > > > Hi, Shameer > > On Fri, 31 Oct 2025 at 18:54, Shameer Kolothum > <[email protected]> wrote: > > > > Just before the device gets attached to the SMMUv3, make sure QEMU > > SMMUv3 features are compatible with the host SMMUv3. > > > > Not all fields in the host SMMUv3 IDR registers are meaningful for > userspace. > > Only the following fields can be used: > > > > - IDR0: ST_LEVEL, TERM_MODEL, STALL_MODEL, TTENDIAN, CD2L, ASID16, > TTF > > - IDR1: SIDSIZE, SSIDSIZE > > - IDR3: BBML, RIL > > - IDR5: VAX, GRAN64K, GRAN16K, GRAN4K > > > > For now, the check is to make sure the features are in sync to enable > > basic accelerated SMMUv3 support. > > > > Signed-off-by: Shameer Kolothum <[email protected]> > > --- > > hw/arm/smmuv3-accel.c | 100 > > ++++++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 100 insertions(+) > > > > diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c index > > a2deda3c32..8b9f88dd8e 100644 > > --- a/hw/arm/smmuv3-accel.c > > +++ b/hw/arm/smmuv3-accel.c > > @@ -28,6 +28,98 @@ MemoryRegion root; > > MemoryRegion sysmem; > > static AddressSpace *shared_as_sysmem; > > > > +static bool > > +smmuv3_accel_check_hw_compatible(SMMUv3State *s, > > + struct iommu_hw_info_arm_smmuv3 *info, > > + Error **errp) { > > > + /* QEMU SMMUv3 supports architecture version 3.1 */ > > + if (info->aidr < s->aidr) { > > + error_setg(errp, "Host SMMUv3 architecture version not > > compatible"); > > + return false; > > + } > > Why has this requirement?
Right. That was added based on a comment from Eric here, https://lore.kernel.org/all/[email protected]/ > We have SMMUv3 version 3.0 and info->aidr = 0. > and qemu fails to boot here. Hmm.. It is true that there are hardware out there which implements a cross section of features from architecture revisions. Since we are checking the ID registers that matters here individually anyway, I am not sure whether we should restrict those with AIDR mismatch or just warn the user. Thanks, Shameer
