On 05/09/2014 05:04 PM, liu ping fan wrote: > On Wed, May 7, 2014 at 3:20 PM, Alexey Kardashevskiy <a...@ozlabs.ru> 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 <pingf...@linux.vnet.ibm.com> >>> --- >>> 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 ?
Yes, then it should work but I am actually planning more than just that so we will see how it goes. -- Alexey