> -----Original Message-----
> From: Mohamed Mediouni <[email protected]>
> Sent: 11 January 2026 21:44
> 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]; [email protected];
> [email protected]; Nathan Chen <[email protected]>; Matt Ochs
> <[email protected]>; [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> Krishnakant Jaju <[email protected]>
> Subject: Re: [PATCH v7 17/36] hw/arm/virt: Set msi-gpa property
> 
> External email: Use caution opening links or attachments
> 
> 
> > On 11. Jan 2026, at 20:53, Shameer Kolothum <[email protected]>
> wrote:
> >
> > Set the MSI doorbell GPA property for accelerated SMMUv3 devices for use
> > by KVM MSI setup. Also, since any meaningful use of vfio-pci devices with
> > an accelerated SMMUv3 requires both KVM and a kernel irqchip, ensure
> > those are specified when accel=on is selected.
> >
> > Reviewed-by: Nicolin Chen <[email protected]>
> > Signed-off-by: Shameer Kolothum <[email protected]>
> > ---
> > hw/arm/virt.c | 20 ++++++++++++++++++++
> > 1 file changed, 20 insertions(+)
> >
> > diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> > index 9d0568a7d5..08feadf0a8 100644
> > --- a/hw/arm/virt.c
> > +++ b/hw/arm/virt.c
> > @@ -3052,6 +3052,26 @@ static void
> virt_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev,
> >             /* The new SMMUv3 device is specific to the PCI bus */
> >             object_property_set_bool(OBJECT(dev), "smmu_per_bus", true,
> NULL);
> >         }
> > +        if (object_property_find(OBJECT(dev), "accel") &&
> > +            object_property_get_bool(OBJECT(dev), "accel", &error_abort)) {
> > +            hwaddr db_start;
> > +
> > +            if (!kvm_enabled() || !kvm_irqchip_in_kernel()) {
> > +                error_setg(errp, "SMMUv3 accel=on requires KVM with "
> > +                           "kernel-irqchip=on support");
> > +                    return;
> > +            }
> > +
> > +            if (vms->msi_controller == VIRT_MSI_CTRL_ITS) {
> > +                /* GITS_TRANSLATER page + offset */
> > +                db_start = base_memmap[VIRT_GIC_ITS].base + 0x10000 + 0x40;
> > +            } else {
> > +                /* MSI_SETSPI_NS page + offset */
> > +                db_start = base_memmap[VIRT_GIC_V2M].base + 0x40;
> > +            }
> Hello,
> 
> Currently (but soon no longer the case for virt-11.0+), its=off means no MSI
> controller at all instead of
> GICv3 + GICv2m.
> 
> Would an else if with an error returned if no MSI controller is enabled be
> adequate?

The MSI doorbell setup here is only required for MSI translation cases.
When ITS is off (and no MSI controller is present), passthrough devices
cannot use MSI/MSI-X, so no MSI translation is required. Is that right?

If so,  skipping the doorbell setup is expected and correct, and returning
an error would unnecessarily reject a valid configuration.

Thanks,
Shameer

Reply via email to