spapr_pci: fix MSI limit
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Sun, 4 May 2014 14:09:48 +0000 (00:09 +1000)
committerAlexander Graf <agraf@suse.de>
Mon, 16 Jun 2014 11:24:32 +0000 (13:24 +0200)
commit28668b5f31b05f6413826e110ff909522759f7d9
tree31e593333a443cbbf890b3bb27975547d9f74b04
parent804e654a56549c2960f9c3857bec4f4d934b437e
spapr_pci: fix MSI limit

At the moment XICS does not support interrupts reuse so sPAPR PHB
implements this. sPAPRPHBState holds array of 32 spapr_pci_msi to
describe PCI config address, first MSI and number of MSIs. Once
allocated for a device, QEMU tries reusing this config until the number
of MSIs changes.

Existing SPAPR guests call ibm,change-msi in a loop until the handler
returns the requested number of vectors.

Recently introduced check for the maximum number of MSI/MSIX vectors
supported by a device only works for a device which is new for PHB's
MSI cache. If it is already there, the check is not performed which
leads to new IRQ block allocation. This happens during PCI hotplug
even when the user hot plug the same device which he just hot unplugged.

This moves the check earlier.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alexander Graf <agraf@suse.de>
hw/ppc/spapr_pci.c