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

Brian King
2009-05-29T22:01:37Z

James Bottomley wrote:
> 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?

I just talked with one of the adapter firmware developers and it sounds like
this might be possible. I'll work with Wayne on coding something up to try.

-Brian

--
Brian King
Linux on Power Virtualization
IBM Linux Technology Center