Re: [Qemu-devel] [PATCH] spapr: pci: clean msi info when releasing it
On 05/09/2014 05:04 PM, liu ping fan wrote: > On Wed, May 7, 2014 at 3:20 PM, Alexey Kardashevskiy 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 >>> --- >>> 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
Re: [Qemu-devel] [PATCH] spapr: pci: clean msi info when releasing it
On Wed, May 7, 2014 at 3:20 PM, Alexey Kardashevskiy 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 >> --- >> 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 >
Re: [Qemu-devel] [PATCH] spapr: pci: clean msi info when releasing it
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 > --- > 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 :) -- Alexey
[Qemu-devel] [PATCH] spapr: pci: clean msi info when releasing it
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 --- 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); -- 1.8.1.4