• Oliver Upton's avatar
    Merge branch kvm-arm64/lpi-xarray into kvmarm/next · 8dbc4110
    Oliver Upton authored
    * kvm-arm64/lpi-xarray:
      : xarray-based representation of vgic LPIs
      :
      : KVM's linked-list of LPI state has proven to be a bottleneck in LPI
      : injection paths, due to lock serialization when acquiring / releasing a
      : reference on an IRQ.
      :
      : Start the tedious process of reworking KVM's LPI injection by replacing
      : the LPI linked-list with an xarray, leveraging this to allow RCU readers
      : to walk it outside of the spinlock.
      KVM: arm64: vgic: Don't acquire the lpi_list_lock in vgic_put_irq()
      KVM: arm64: vgic: Ensure the irq refcount is nonzero when taking a ref
      KVM: arm64: vgic: Rely on RCU protection in vgic_get_lpi()
      KVM: arm64: vgic: Free LPI vgic_irq structs in an RCU-safe manner
      KVM: arm64: vgic: Use atomics to count LPIs
      KVM: arm64: vgic: Get rid of the LPI linked-list
      KVM: arm64: vgic-its: Walk the LPI xarray in vgic_copy_lpi_list()
      KVM: arm64: vgic-v3: Iterate the xarray to find pending LPIs
      KVM: arm64: vgic: Use xarray to find LPI in vgic_get_lpi()
      KVM: arm64: vgic: Store LPIs in an xarray
    Signed-off-by: default avatarOliver Upton <oliver.upton@linux.dev>
    8dbc4110
vgic-its.c 72.9 KB