Re: ipr boot failure caused by MSI (2.6.30-rc1+)

James Bottomley
2009-05-22T16:23:15Z

On Thu, 2009-05-21 at 14:51 -0500, James Bottomley wrote:
> On Thu, 2009-05-21 at 13:47 -0500, Brian King wrote:
> > cc'ing linuxppc-dev...
> >
> > -Brian
> >
> >
> > James Bottomley wrote:
> > > Kernels after 2.6.30-rc1 stopped booting on my powerstation. The ipr
> > > just times out and refuses to probe devices. If I let it drop into the
> > > initramfs system, this is what the interrupts shows:
> > >
> > > (initramfs) cat /proc/interrupts
> > > CPU0 CPU1 CPU2 CPU3
> > > 16: 20 10 13 11 MPIC Level pata_amd
> > > 20: 0 0 0 0 MPIC Level ohci_hcd:usb1, ohci_hcd:usb2
> > > 21: 0 0 0 0 MPIC-U3MSI Edge ipr
> > > 68: 37 37 48 37 MPIC Edge serial
> > > 251: 10 71 69 72 MPIC Edge ipi call function
> > > 252: 1555 1779 1372 1155 MPIC Edge ipi reschedule
> > > 253: 0 0 0 0 MPIC Edge ipi call function single
> > > 254: 0 0 0 0 MPIC Edge ipi debugger
> > > BAD: 416
> > >
> > > So you see the IPR is the only device not receiving them.
> > >
> > > I can fix the boot hang by reverting
> > >
> > > commit 5a9ef25b14d39b8413364df12cb8d9bb7a673a32
> > > Author: Wayne Boyer <wayneb@linux.vnet.ibm.com>
> > > Date: Fri Jan 23 09:17:35 2009 -0800
> > >
> > > [SCSI] ipr: add MSI support
> > >
> > > The system in question is:
> > >
> > > SYSTEM INFORMATION
> > > Processor = PowerPC,970MP @ 2500 MHz
> > > I/O Bridge = U4 (4.4)
> > > SMP Size = 4 (#0 #1 #2 #3)
> > > Boot-Date = 2009-04-21 17:13:36
> > > Memory = 2 GB of RAM @ 666 MHz
> > > Board Type = Bimini (7047191/0000000/1)
> > > MFG Date = 1608
> > > Part No. = 10N8748
> > > FRU No. = 10N7182
> > > FRU Serial = YL30W8106038
> > > UUID = 00000000000000000000000000000000
> > > Flashside = 1 (temporary)
> > > Version = HEAD
> > > Build Date = 12-04-2008 16:13
>
> OK, so as an update, I booted to the initrd and inserted the network
> modules, which are also MSI enabled and this is what I get:
>
> (initramfs) cat /proc/interrupts
> CPU0 CPU1 CPU2 CPU3
> 16: 14 11 11 18 MPIC Level pata_amd
> 20: 0 0 0 0 MPIC Level ohci_hcd:usb1, ohci_hcd:usb2
> 21: 0 0 0 0 MPIC-U3MSI Edge ipr
> 22: 1 0 1 0 MPIC-U3MSI Edge eth0
> 23: 0 2 1 0 MPIC-U3MSI Edge eth1
> 68: 193 166 113 177 MPIC Edge serial
> 251: 16 65 71 70 MPIC Edge ipi call function
> 252: 1574 1804 1346 1289 MPIC Edge ipi reschedule
> 253: 0 0 0 0 MPIC Edge ipi call function single
> 254: 0 0 0 0 MPIC Edge ipi debugger
> BAD: 1866
>
> So clearly the MSI interrupts to the network cards are working and it
> looks like just a local problem with the ipr rather than a platform
> problem with MSI.

I saw the quirk fix for this go by:

http://ozlabs.org/pipermail/linuxppc-dev/2009-May/072436.html

Is there an easy way to trigger an interrupt on this device? Preferably
in ipr_probe_ioa() so we can at least print out if the interrupts are
misrouted and fall back from MSI to normal using the PCI infrastructure?

James