Messages in this thread | ![/](/images/icornerl.gif) | | Date | Wed, 29 May 2013 16:13:29 -0500 | From | Brian King <> | Subject | Re: [PATCH] powerpc/pseries: Force 32 bit MSIs when tearing down |
| |
On 05/27/2013 04:52 PM, Benjamin Herrenschmidt wrote: > On Mon, 2013-05-27 at 18:20 +0200, Alexander Gordeev wrote: >> This fix just adds a missed call to a new PAPR function >> which should have been done with commit e61133d ("powerpc/ >> pseries: Force 32 bit MSIs for devices that require it") > > Arguably, PAPR should allow to disable MSIs using either interface, > we shouldn't have to know whether the MSI was a forced-32-bit one to be > able to disable it. > > Brian, can you check with Colleen ?
That is correct, and is the exact path we went down when I tested the code that is currently upstream. I don't think this patch should be needed.
Thanks,
Brian
> > Cheers, > Ben. > >> Signed-off-by: Alexander Gordeev <agordeev@redhat.com> >> --- >> arch/powerpc/platforms/pseries/msi.c | 8 +++++++- >> 1 files changed, 7 insertions(+), 1 deletions(-) >> >> diff --git a/arch/powerpc/platforms/pseries/msi.c b/arch/powerpc/platforms/pseries/msi.c >> index 40c7db3..2b80a68 100644 >> --- a/arch/powerpc/platforms/pseries/msi.c >> +++ b/arch/powerpc/platforms/pseries/msi.c >> @@ -90,6 +90,7 @@ static int rtas_change_msi(struct pci_dn *pdn, u32 func, u32 num_irqs) >> static void rtas_disable_msi(struct pci_dev *pdev) >> { >> struct pci_dn *pdn; >> + int rc; >> >> pdn = get_pdn(pdev); >> if (!pdn) >> @@ -98,7 +99,12 @@ static void rtas_disable_msi(struct pci_dev *pdev) >> /* >> * disabling MSI with the explicit interface also disables MSI-X >> */ >> - if (rtas_change_msi(pdn, RTAS_CHANGE_MSI_FN, 0) != 0) { >> + if (pdn->force_32bit_msi) >> + rc = rtas_change_msi(pdn, RTAS_CHANGE_32MSI_FN, 0); >> + else >> + rc = rtas_change_msi(pdn, RTAS_CHANGE_MSI_FN, 0); >> + >> + if ((rc != 0) && !pdn->force_32bit_msi) { >> /* >> * may have failed because explicit interface is not >> * present >> -- >> 1.7.7.6 >> >> > >
-- Brian King Power Linux I/O IBM Linux Technology Center
| ![\](/images/icornerr.gif) |