On Wed, May 7, 2014 at 3:20 PM, Alexey Kardashevskiy <[email protected]> wrote: > On 05/07/2014 04:51 PM, Liu Ping Fan wrote: >> In current code, we use phb->msi_table[ndev].nvec to indicate whether >> this msi entries are used by a device or not. So when unplug a pci >> device, we should reset nvec to zero. >> >> Signed-off-by: Liu Ping Fan <[email protected]> >> --- >> hw/ppc/spapr_pci.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c >> index cbef095..7b1dfe1 100644 >> --- a/hw/ppc/spapr_pci.c >> +++ b/hw/ppc/spapr_pci.c >> @@ -316,6 +316,7 @@ static void rtas_ibm_change_msi(PowerPCCPU *cpu, >> sPAPREnvironment *spapr, >> rtas_st(rets, 0, RTAS_OUT_HW_ERROR); >> return; >> } >> + phb->msi_table[ndev].nvec = 0; >> trace_spapr_pci_msi("Released MSIs", ndev, config_addr); >> rtas_st(rets, 0, RTAS_OUT_SUCCESS); >> rtas_st(rets, 1, 0); > > > ibm,change-msi is called with 0 to disable MSIs. If later the guest decides > to reenable MSI on the same device (rmmod + modprobe in the guest can do > that I suppose), new block will be allocated because of this patch which is > bad. > > And there is no PCI hotplug for SPAPR in upstream QEMU so this patch cannot > possibly fix it :) > I saw your patch [PATCH 0/6] move interrupts from spapr to xics. And it is great to consider the reclaim of irq. So if I call something to free the irq after "phb->msi_table[ndev].nvec = 0", can it work ?
Thx, Fan > > -- > Alexey >
