This is a follow-up on [2], which addresses both the O(n) SGI injection issue, and cleans up a number of embarassing bugs steaming form the vcpuid/vcpu_idx confusion. See the changelog below for details. Oliver, assuming that you haven't changed your mind and that nobody shouts, feel free to queue this in -next. * From v2 [2]: - Killed a number of online_vcpus comparisons, which didn't make much sense (Zenghui) - Added missing commit logs (oops) - Fixed some comments - Collected RBs, with thanks * From v1 [1]: - Added a bunch of patches fixing the vcpu_id[x] ambiguity - Added a documentation update spelling out some extra ordering requirements - Collected RBs/TBs, with thanks [1] https://lore.kernel.org/r/20230907100931.1186690-1-maz@xxxxxxxxxx [2] https://lore.kernel.org/r/20230920181731.2232453-1-maz@xxxxxxxxxx Marc Zyngier (11): KVM: arm64: vgic: Make kvm_vgic_inject_irq() take a vcpu pointer KVM: arm64: vgic-its: Treat the collection target address as a vcpu_id KVM: arm64: vgic-v3: Refactor GICv3 SGI generation KVM: arm64: vgic-v2: Use cpuid from userspace as vcpu_id KVM: arm64: vgic: Use vcpu_idx for the debug information KVM: arm64: Use vcpu_idx for invalidation tracking KVM: arm64: Simplify kvm_vcpu_get_mpidr_aff() KVM: arm64: Build MPIDR to vcpu index cache at runtime KVM: arm64: Fast-track kvm_mpidr_to_vcpu() when mpidr_data is available KVM: arm64: vgic-v3: Optimize affinity-based SGI injection KVM: arm64: Clarify the ordering requirements for vcpu/RD creation .../virt/kvm/devices/arm-vgic-v3.rst | 7 + arch/arm64/include/asm/kvm_emulate.h | 2 +- arch/arm64/include/asm/kvm_host.h | 28 ++++ arch/arm64/kvm/arch_timer.c | 2 +- arch/arm64/kvm/arm.c | 93 +++++++++-- arch/arm64/kvm/pmu-emul.c | 2 +- arch/arm64/kvm/vgic/vgic-debug.c | 6 +- arch/arm64/kvm/vgic/vgic-irqfd.c | 2 +- arch/arm64/kvm/vgic/vgic-its.c | 49 +++--- arch/arm64/kvm/vgic/vgic-kvm-device.c | 8 +- arch/arm64/kvm/vgic/vgic-mmio-v3.c | 150 +++++++----------- arch/arm64/kvm/vgic/vgic.c | 12 +- include/kvm/arm_vgic.h | 4 +- 13 files changed, 212 insertions(+), 153 deletions(-) -- 2.34.1