Subject: Re: [BUG] linux-next: Tree for March 25 kernel oops, when loading mpt fusion driver - regression

From: Kamalesh Babulal <[email-masked]>
Date: Tue, 08 Jul 2008 01:47:13 +0530

James Bottomley wrote:
> On Thu, 2008-06-26 at 15:38 -0500, David Teigland wrote:
>> On Wed, Mar 26, 2008 at 12:14:00PM +0530, Kamalesh Babulal wrote:
>>> Hi Stephen,
>>>
>>> Kernel bug is hit while booting up the next-20080325 kernel with MPT
>>> Fusion driver built in.This was reported previously for the
>>> next-20080320 kernel
>>> http://marc.info/?l=linux-next&m=120601013920868&w=2
>> Hi, did you ever get this fixed?  I've been having the same problem,
>> http://marc.info/?l=linux-scsi&m=121061780821823&w=4
>> still exists on 2.6.26-rc8 for me,
>>
>> Loading scsi_transport_spi.ko module
>> Loading mptscsih.ko module
>> Loading mptspi.ko module
>> Fusion MPT SPI Host driver 3.04.06
>> ACPI: PCI Interrupt 0000:86:01.0[A] -> GSI 32 (level, low) -> IRQ 32
>> mptbase: ioc0: Initiating bringup
>> ioc0: LSI53C1030 B2: Capabilities={Initiator,Target}
>> mptbase: ioc0: PCI-MSI enabled
> 
> I speculate that this might be related to the problem.  The fusion
> driver was recently flipped to default to MSI enable (previously it had
> disabled them).  Could you boot it with the fusion module parameter
> 
> mpt_msi_enable=0
> 
> if it actually boots that will be a good confirmation that MSI is to
> blame.
> 
>> mptbase: ioc0: Initiating recovery
> 
> This I suspect is because of a lost interrupt.
> 
>> BUG: unable to handle kernel NULL pointer dereference at 0000000000000948
> 
> And this one looks to be a second bug:  The MSI fault path is actually
> causing this oops.
> 
> James
> 
Hi James,

Kernel Bug is still reproducible with 2.6.26-rc9-git1 kernel, I tried booting with mpt_msi_enable=0
as boot paramenter, but the call trace remains the same

oading mptbase.ko module[    6.766853] Fusion MPT base driver 3.04.06

[    6.783482] Copyright (c) 1999-2007 LSI Corporation
Loading mptscsih.ko module
Loading mptspi.ko module
[    6.813157] Fusion MPT SPI Host driver 3.04.06
[    6.827369] ACPI: PCI Interrupt 0000:01:01.0[A] -> GSI 22 (level, low) -> IRQ 22
[    6.850624] mptbase: ioc0: Initiating bringup
[    6.985601] ioc0: LSI53C1030 B2: Capabilities={Initiator}
[    7.002711] mptbase: ioc0: PCI-MSI enabled
[   17.193038] mptbase: ioc0: Initiating recovery
[   17.206490] mptbase: ioc0: WARNING - IOC is in FAULT state!!!
[   17.224489] mptbase: ioc0: WARNING -            FAULT code = 8112h
[   22.243634] mptbase: ioc0: ERROR - Doorbell ACK timeout (count=4999), IntStatus=80000009!
[   39.507735] mptbase: ioc0: Recovered from IOC FAULT
[   39.595707] Clocksource tsc unstable (delta = 18747111256 ns)
[   39.624226] BUG: unable to handle kernel NULL pointer dereference at 00000528
[   39.650488] IP: [<f881ccc3>] :mptspi:mptspi_dv_renegotiate_work+0xc/0xab
[   39.676987] *pde = 00000000 
[   39.685169] Oops: 0000 [#1] SMP 
[   39.695127] Modules linked in: mptspi(+) mptscsih mptbase scsi_transport_spi sd_mod scsi_mod ext3 jbd ehci_hcd ohci_hcd uhci_hcd
[   39.730967] 
[   39.730967] Pid: 17, comm: events/2 Not tainted (2.6.26-rc9-git1-autokern1 #1)
[   39.730967] EIP: 0060:[<f881ccc3>] EFLAGS: 00010282 CPU: 2
[   39.730967] EIP is at mptspi_dv_renegotiate_work+0xc/0xab [mptspi]
[   39.730967] EAX: f7a2c188 EBX: f7a2c18c ECX: f78a0500 EDX: 00000001
[   39.730967] ESI: f7866c70 EDI: 00000528 EBP: f78a1f78 ESP: f78a1f58
[   39.730967]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[   39.730967] Process events/2 (pid: 17, ti=f78a1000 task=f78a0020 task.ti=f78a1000)
[   39.730967] Stack: 00000000 00000002 00000000 c043193d f78a1f90 f7a2c18c f7866c70 f7a2c188 
[   39.730967]        f78a1fac c0431978 00000000 00000002 c043193d f881ccb7 f8820308 c091289c 
[   39.730967]        f881d86c 00000002 f7866c70 c04321dd f7866c98 f78a1fd0 c0432291 00000000 
[   39.730967] Call Trace:
[   39.730967]  [<c043193d>] ? run_workqueue+0x80/0x186
[   39.730967]  [<c0431978>] ? run_workqueue+0xbb/0x186
[   39.730967]  [<c043193d>] ? run_workqueue+0x80/0x186
[   39.730967]  [<f881ccb7>] ? mptspi_dv_renegotiate_work+0x0/0xab [mptspi]
[   39.730967]  [<c04321dd>] ? worker_thread+0x0/0xbf
[   39.730967]  [<c0432291>] ? worker_thread+0xb4/0xbf
[   39.730967]  [<c04346f9>] ? autoremove_wake_function+0x0/0x33
[   39.730967]  [<c0434638>] ? kthread+0x3b/0x63
[   39.730967]  [<c04345fd>] ? kthread+0x0/0x63
[   39.730967]  [<c0404613>] ? kernel_thread_helper+0x7/0x10
[   39.730967]  =======================
[   39.730967] Code: ff 8b 87 8c 00 00 00 e8 bd 27 03 00 8b 87 8c 00 00 00 e8 74 f8 ff ff 8d 65 f4 5b 5e 5f 5d c3 55 89 e5 57 56 53 83 ec 14 8b 78 20 <8b> 17 89 55 e0 e8 89 4c c5 c7 8b 55 e0 66 83 bf b2 02 00 00 00  
[   40.184778] EIP: [<f881ccc3>] mptspi_dv_renegotiate_work+0xc/0xab [mptspi] SS:ESP 0068:f78a1f58
[   40.649493] ---[ end trace 8850b96835b44d26 ]---
[   50.659034] mptbase: ioc0: Initiating recovery
[   50.672478] mptbase: ioc0: WARNING - IOC is in FAULT state!!!
[   50.690478] mptbase: ioc0: WARNING -            FAULT code = 8112h
[   55.709559] mptbase: ioc0: ERROR - Doorbell ACK timeout (count=4999), IntStatus=80000009!
[   72.976560] mptbase: ioc0: Recovered from IOC FAULT

0xcc3 is in mptspi_dv_renegotiate_work (drivers/message/fusion/mptspi.c:1228).
1223            struct _MPT_SCSI_HOST *hd = wqw->hd;
1224            struct scsi_device *sdev;
1225            struct scsi_target *starget;
1226            struct _CONFIG_PAGE_SCSI_DEVICE_1 pg1;
1227            u32 nego;
1228            MPT_ADAPTER *ioc = hd->ioc;
1229
1230            kfree(wqw);
1231
1232            if (hd->spi_pending) {

-- 
Thanks & Regards,
Kamalesh Babulal,
Linux Technology Center,
IBM, ISTL.