forked from Minki/linux
3802411d01
LPIs are dynamically created (mapped) at guest runtime and their actual number can be quite high, but is mostly assigned using a very sparse allocation scheme. So arrays are not an ideal data structure to hold the information. We use a spin-lock protected linked list to hold all mapped LPIs, represented by their struct vgic_irq. This lock is grouped between the ap_list_lock and the vgic_irq lock in our locking order. Also we store a pointer to that struct vgic_irq in our struct its_itte, so we can easily access it. Eventually we call our new vgic_get_lpi() from vgic_get_irq(), so the VGIC code gets transparently access to LPIs. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Reviewed-by: Marc Zyngier <marc.zyngier@arm.com> Tested-by: Eric Auger <eric.auger@redhat.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> |
||
---|---|---|
.. | ||
vgic-init.c | ||
vgic-irqfd.c | ||
vgic-its.c | ||
vgic-kvm-device.c | ||
vgic-mmio-v2.c | ||
vgic-mmio-v3.c | ||
vgic-mmio.c | ||
vgic-mmio.h | ||
vgic-v2.c | ||
vgic-v3.c | ||
vgic.c | ||
vgic.h |