On Wed, Nov 05, 2025 at 02:10:49PM -0400, Jason Gunthorpe wrote: > On Wed, Nov 05, 2025 at 06:25:05PM +0100, Eric Auger wrote: > > if the guest doorbell address is wrong because not properly translated, > > vgic_msi_to_its() will fail to identify the ITS to inject the MSI in. > > See kernel kvm/vgic/vgic-its.c vgic_msi_to_its and > > vgic_its_inject_msi > > Which has been exactly my point to Nicolin. There is no way to > "properly translate" the vMSI address in a HW accelerated SMMU > emulation.
Hmm, I still can't connect the dots here. QEMU knows where the guest CD table is to get the stage-1 translation table to walk through. We could choose to not let it walk through. Yet, why? Asking this to know what we should justify for the patch in a different direction. > The vMSI address must only be used for some future non-RMR HW only > path. > > To keep this flow working qemu must ignore the IOVA from the guest and > always replace it with its own idea of what the correct ITS address is > for KVM to work. It means we don't correctly emulate guest > misconfiguration of the MSI address. That is something alternative in my mind, to simplify things, especially we are having a discussion, on the other side, for selecting a correct (QEMU) address space depending on whether vIOMMU needs a stage-1 translation or not. This MSI translate thing makes the whole narrative more complicated indeed. We could use a different PCI op to forward the vITS physical address to KVM layer bypassing the translation pathway. Thanks Nicolin
