Hi Michael, On Wed, Nov 28, 2018 at 6:00 AM Michael Ellerman <m...@ellerman.id.au> wrote: > > Radu Rendec <radu.ren...@gmail.com> writes: > > > > The assumption in arch_teardown_msi_irqs() is wrong and results in a > > function call on a NULL pointer. An example of how this can happen is > > included in the actual patch header. In my case, it happens when the PCI > > hardware is configured during kernel start-up, because my controller > > doesn't support MSI and the ops are NULL. > > What hardware are you on?
I'm on Freescale MPC8378 - old stuff, but still going strong :) The MSI capable device is a Broadcom PEX 8613 (a 3-port PCIe switch). > > I'm proposing the attached patch to fix the problem. It basically just > > checks the pointer before the function call. > > Yeah that patch looks good to me. > > I suspect this bug was introduced in: > > 6b2fd7efeb88 ("PCI/MSI/PPC: Remove arch_msi_check_device()") > > Previously we had that check routine which would run before any of the > MSI setup had been done, and so if there were no MSI ops then we bailed > out early and didn't call teardown. > > I guess since then (2014) we haven't tested an MSI capable device on a > system that isn't MSI capable? Thanks for looking into this. You're probably right, it really looks like that patch could have introduced this bug. Cheers, Radu