mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 01:32:21 +02:00
irqchip/riscv-imsic: Add nr_guest_files in per-HART local config
Add nr_guest_files in per-HART local config to represent the number of guest files available on a particular HART whereas the nr_guest_files in the global config represents the number of guest files available across all HARTs. This allows KVM RISC-V to use nr_guest_files from per-HART local config for asymmetric big.Little systems. Signed-off-by: Guo Ren (Alibaba DAMO Academy) <guoren@kernel.org> Acked-by: Thomas Gleixner <tglx@kernel.org> Signed-off-by: Anup Patel <anup.patel@oss.qualcomm.com> Link: https://lore.kernel.org/r/20260525094945.3721783-2-anup.patel@oss.qualcomm.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
5eb6d68fe2
commit
59ebc16276
|
|
@ -920,13 +920,12 @@ int __init imsic_setup_state(struct fwnode_handle *fwnode, void *opaque)
|
|||
local->msi_va = mmios_va[index] + reloff;
|
||||
|
||||
/*
|
||||
* KVM uses global->nr_guest_files to determine the available guest
|
||||
* interrupt files on each CPU. Take the minimum number of guest
|
||||
* interrupt files across all CPUs to avoid KVM incorrectly allocating
|
||||
* an unexisted or unmapped guest interrupt file on some CPUs.
|
||||
* KVM uses both local->nr_guest_files and global->nr_guest_files
|
||||
* to determine the available guest interrupt files on each CPU.
|
||||
*/
|
||||
nr_guest_files = (resource_size(&mmios[index]) - reloff) / IMSIC_MMIO_PAGE_SZ - 1;
|
||||
global->nr_guest_files = min(global->nr_guest_files, nr_guest_files);
|
||||
local->nr_guest_files = min((BIT(global->guest_index_bits) - 1), nr_guest_files);
|
||||
global->nr_guest_files = min(global->nr_guest_files, local->nr_guest_files);
|
||||
|
||||
nr_handlers++;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,9 @@
|
|||
struct imsic_local_config {
|
||||
phys_addr_t msi_pa;
|
||||
void __iomem *msi_va;
|
||||
|
||||
/* Number of guest interrupt files per-HART */
|
||||
u32 nr_guest_files;
|
||||
};
|
||||
|
||||
struct imsic_global_config {
|
||||
|
|
@ -68,7 +71,7 @@ struct imsic_global_config {
|
|||
/* Number of guest interrupt identities */
|
||||
u32 nr_guest_ids;
|
||||
|
||||
/* Number of guest interrupt files per core */
|
||||
/* Number of guest interrupt files across all HARTs */
|
||||
u32 nr_guest_files;
|
||||
|
||||
/* Per-CPU IMSIC addresses */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user