[PATCH v5 0/2] RISC-V: KVM: Convert HGEI management to fully per-HART
Anup Patel <[email protected]>
| Newsgroups | org.infradead.lists.kvm-riscv,org.infradead.lists.linux-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
From: "Guo Ren (Alibaba DAMO Academy)" <[email protected]> This short series converts RISC-V KVM AIA's Hypervisor Guest External Interrupt (HGEI) line management from a global "one-size-fits-all" model to a fully per-HART (per-CPU) model. It also performs the corresponding changes in the IMSIC irqchip driver. The motivation is to properly support heterogeneous RISC-V SoCs (big.LITTLE, multi-vendor core mixes) where different HARTs may expose different numbers of guest interrupt files / HGEIE bits. After this series, HGEI allocation, freeing, and interrupt delivery are completely per-HART and there are no remaining global assumptions about number of guest interrupt files. Changelog: V5: - Avoid re-initializing hgctrl->lock in kvm_riscv_aia_enable() - Setup free_bitmap only once in kvm_riscv_aia_enable() - Make kvm_riscv_aia_nr_hgei so that it can be concurrently updated from kvm_riscv_aia_enable() V4: - Don't modify kvm_riscv_aia_nr_hgei in kvm_riscv_aia_enable() since we use kvm_riscv_aia_nr_hgei mostly for HGEI enable/disable checks. - Use GENMASK_ULL() instead of `BIT(hgctrl->nr_hgei + 1) - 1` - Always setup SGEI interrupt irrespective of kvm_riscv_aia_nr_hgei V3: - Move PATCH3 as first patch and kept the nr_guest_files in global config as the number of guest files across all CPUs - Droped original PATCH2 and squashed original PATCH4 into original PATCH1 which is now PATCH2. - Addressed comments in original PATCH1. V2: - Add per-HART IMSIC guest files to compute final HGEI count. - Add min(local->nr_guest_files, nr_guest_files); V1: - https://lore.kernel.org/kvm-riscv/[email protected]/ Guo Ren (Alibaba DAMO Academy) (2): irqchip/riscv-imsic: Add nr_guest_files in per-HART local config RISC-V: KVM: AIA: Make HGEI number management fully per-CPU arch/riscv/include/asm/kvm_aia.h | 2 +- arch/riscv/kvm/aia.c | 88 +++++++++++++++---------- arch/riscv/kvm/aia_device.c | 4 +- arch/riscv/kvm/main.c | 8 +-- drivers/irqchip/irq-riscv-imsic-state.c | 9 ++- include/linux/irqchip/riscv-imsic.h | 5 +- 6 files changed, 68 insertions(+), 48 deletions(-) -- 2.43.0 -- kvm-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/kvm-riscv