On Mon, Oct 17, 2011 at 12:46 PM, Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote: > > I traced a nasty kexec on panic boot failure to the fact that we had > screaming msi interrupts and we were not disabling the msi messages at > kernel startup. The booting kernel had not enabled those interupts so > was not prepared to handle them. > > I can see no reason why we would ever want to leave the msi interrupts > enabled at boot if something else has enabled those interrupts. The pci > spec specifies that msi interrupts should be off by default. Drivers > are expected to enable the msi interrupts if they want to use them. Our > interrupt handling code reprograms the interrupt handlers at boot and > will not be be able to do anything useful with an unexpected interrupt. > > This patch applies cleanly all of the way back to 2.6.32 where I noticed > the problem. > > Cc: stable@xxxxxxxxxx > > Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> > --- > drivers/pci/msi.c | 10 ++++++++++ > 1 files changed, 10 insertions(+), 0 deletions(-) > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index 2f10328..e174982 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -869,5 +869,15 @@ EXPORT_SYMBOL(pci_msi_enabled); > > void pci_msi_init_pci_dev(struct pci_dev *dev) > { > + int pos; > INIT_LIST_HEAD(&dev->msi_list); > + > + /* Disable the msi hardware to avoid screaming interrupts > + * during boot. This is the power on reset default so > + * usually this should be a noop. > + */ > + pos = pci_find_capability(dev, PCI_CAP_ID_MSI); > + if (pos) > + msi_set_enable(dev, pos, 0); > + msix_set_enable(dev, 0); > } We only build msi.o if CONFIG_PCI_MSI=y, but don't you want to disable these even if the new kernel has CONFIG_PCI_MSI=n? Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html