aboutsummaryrefslogtreecommitdiffstats
path: root/lib/test_bitmap.c
diff options
context:
space:
mode:
authorMarc Zyngier <[email protected]>2025-02-12 18:25:58 +0000
committerMarc Zyngier <[email protected]>2025-02-13 18:03:54 +0000
commitb3aa9283c0c505b5cfd25f7d6cfd720de2adc807 (patch)
tree753ed87f4933a91d92ecf166c8cbd5b4c1be005b /lib/test_bitmap.c
parentKVM: arm64: timer: Drop warning on failed interrupt signalling (diff)
downloadkernel-b3aa9283c0c505b5cfd25f7d6cfd720de2adc807.tar.gz
kernel-b3aa9283c0c505b5cfd25f7d6cfd720de2adc807.zip
KVM: arm64: vgic: Hoist SGI/PPI alloc from vgic_init() to kvm_create_vgic()
If userspace creates vcpus, then a vgic, we end-up in a situation where irqchip_in_kernel() will return true, but no private interrupt has been allocated for these vcpus. This situation will continue until userspace initialises the vgic, at which point we fix the early vcpus. Should a vcpu run or be initialised in the interval, bad things may happen. An obvious solution is to move this fix-up phase to the point where the vgic is created. This ensures that from that point onwards, all vcpus have their private interrupts, as new vcpus will directly allocate them. With that, we have the invariant that when irqchip_in_kernel() is true, all vcpus have their private interrupts. Reported-by: Alexander Potapenko <[email protected]> Reviewed-by: Oliver Upton <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Marc Zyngier <[email protected]>
Diffstat (limited to 'lib/test_bitmap.c')
0 files changed, 0 insertions, 0 deletions