• Andre Przywara's avatar
    KVM: arm64: vgic-its: Implement MSI injection in ITS emulation · 2891a7df
    Andre Przywara authored
    When userland wants to inject an MSI into the guest, it uses the
    KVM_SIGNAL_MSI ioctl, which carries the doorbell address along with
    the payload and the device ID.
    With the help of the KVM IO bus framework we learn the corresponding
    ITS from the doorbell address. We then use our wrapper functions to
    iterate the linked lists and find the proper Interrupt Translation Table
    Entry (ITTE) and thus the corresponding struct vgic_irq to finally set
    the pending bit.
    We also provide the handler for the ITS "INT" command, which allows a
    guest to trigger an MSI via the ITS command queue. Since this one knows
    about the right ITS already, we directly call the MMIO handler function
    without using the kvm_io_bus framework.
    Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
    Reviewed-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Tested-by: default avatarEric Auger <eric.auger@redhat.com>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    2891a7df
vgic-its.c 38.6 KB