Hi Cédric,

> -----Original Message-----
> From: Cédric Le Goater <[email protected]>
> Sent: 21 May 2026 09:19
> To: Shameer Kolothum Thodi <[email protected]>; qemu-
> [email protected]; [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> Nicolin Chen <[email protected]>; Nathan Chen <[email protected]>;
> Matt Ochs <[email protected]>; Jiandi An <[email protected]>; Jason
> Gunthorpe <[email protected]>; [email protected]; Krishnakant Jaju
> <[email protected]>; [email protected]
> Subject: Re: [PATCH v5 11/32] hw/arm/tegra241-cmdqv: Implement CMDQV
> init
> 
> External email: Use caution opening links or attachments
> 
> 
> Hello Shameer,
> 
> On 5/19/26 12:36, Shameer Kolothum wrote:
> > From: Nicolin Chen <[email protected]>
> >
> > Tegra241 CMDQV extends SMMUv3 with support for virtual command
> queues
> > (VCMDQs) exposed via a CMDQV MMIO region. The CMDQV MMIO space is
> > split into 64KB pages:
> >
> > 0x00000  (CMDQ-V Config page)
> > 0x10000  (CMDQ-V CMDQ Page0)
> > 0x20000  (CMDQ-V CMDQ Page1)
> > 0x30000  (Virtual Interface Page0)
> > 0x40000  (Virtual Interface Page1)
> >
> > This patch wires up the Tegra241 CMDQV init callback and allocates
> > vendor-specific CMDQV state. The state pointer is stored in
> > SMMUv3AccelState for use by subsequent CMDQV operations.
> >
> > The CMDQV MMIO region and a dedicated IRQ line are registered with the
> > SMMUv3 device. The MMIO read/write handlers are currently stubs and
> > will be implemented in later patches.
> >
> > The CMDQV interrupt is edge-triggered and indicates VCMDQ or VINTF
> > error conditions. This patch only registers the IRQ line. Interrupt
> > generation and propagation to the guest will be added in a subsequent
> > patch.
> >
> > Signed-off-by: Nicolin Chen <[email protected]>
> > Reviewed-by: Eric Auger <[email protected]>
> > Co-developed-by: Shameer Kolothum <[email protected]>
> > Signed-off-by: Shameer Kolothum <[email protected]>
> > ---
> >   hw/arm/smmuv3-accel.h   |  1 +
> >   hw/arm/tegra241-cmdqv.h | 18 ++++++++++++++++++
> >   hw/arm/tegra241-cmdqv.c | 38
> ++++++++++++++++++++++++++++++++++++--
> >   3 files changed, 55 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/arm/smmuv3-accel.h b/hw/arm/smmuv3-accel.h index
> > f82a7112d8..49c10535cf 100644
> > --- a/hw/arm/smmuv3-accel.h
> > +++ b/hw/arm/smmuv3-accel.h
> > @@ -62,6 +62,7 @@ typedef struct SMMUv3AccelState {
> >       bool auto_mode;
> >       bool auto_finalised;
> >       const SMMUv3AccelCmdqvOps *cmdqv_ops;
> > +    void *cmdqv;  /* vendor specific CMDQV state */
> >   } SMMUv3AccelState;
> >
> >   typedef struct SMMUS1Hwpt {
> > diff --git a/hw/arm/tegra241-cmdqv.h b/hw/arm/tegra241-cmdqv.h index
> > 38c8b27b4d..030f5758d5 100644
> > --- a/hw/arm/tegra241-cmdqv.h
> > +++ b/hw/arm/tegra241-cmdqv.h
> > @@ -14,6 +14,24 @@
> >   #define CMDQV_NUM_CMDQ_LOG2       1
> >   #define CMDQV_NUM_SID_PER_VI_LOG2 4
> >
> > +/*
> > + * Tegra241 CMDQV MMIO layout (64KB pages)
> > + *
> > + * 0x00000  (CMDQ-V Config page)
> > + * 0x10000  (CMDQ-V CMDQ Page0)
> > + * 0x20000  (CMDQ-V CMDQ Page1)
> > + * 0x30000  (Virtual Interface Page0)
> > + * 0x40000  (Virtual Interface Page1)  */ #define
> > +TEGRA241_CMDQV_IO_LEN 0x50000
> > +
> > +typedef struct Tegra241CMDQV {
> > +    struct iommu_viommu_tegra241_cmdqv cmdqv_data;
> 
> This won't build on Windows.

Oops..I did that again!. Will fix it in v6.

Thanks,
Shameer

Reply via email to