Unexpected IRQ trap when reloading mptspi with MSI
I get "unexpected IRQ trap at vector dd" when reloading mptspi with MSI enabled. This seems to happen only on dual-channel HBAs; single-channel HBAs are unaffected. It looks like the second channel is generating a bogus MSI interrupt while the first channel is being brought up.
modprobe mpt_base mpt_msi_enable=1
Jan 24 11:09:16 kernel: Fusion MPT base driver 3.04.06 Jan 24 11:09:16 kernel: Copyright (c) 1999-2007 LSI Corporation
modprobe mptspi
Jan 24 11:09:36 kernel: Fusion MPT SPI Host driver 3.04.06
Jan 24 11:09:36 kernel: ACPI: PCI Interrupt 0000:03:04.0[A] -> GSI 22 (level, low) -> IRQ 19
Jan 24 11:09:36 kernel: mptbase: ioc0: Initiating bringup
Jan 24 11:09:37 kernel: ioc0: LSI53C1030T A0: Capabilities={Initiator,Target}
Jan 24 11:09:37 kernel: mptbase: ioc0: PCI-MSI enabled
Jan 24 11:09:37 kernel: scsi0 : ioc0: LSI53C1030T A0, FwRev=01032700h, Ports=1, MaxQ=255, IRQ=222
Jan 24 11:09:42 kernel: ACPI: PCI Interrupt 0000:03:04.1[B] -> GSI 23 (level, low) -> IRQ 20
Jan 24 11:09:42 kernel: mptbase: ioc1: Initiating bringup
Jan 24 11:09:42 kernel: ioc1: LSI53C1030T A0: Capabilities={Initiator,Target}
Jan 24 11:09:42 kernel: mptbase: ioc1: PCI-MSI enabled
Jan 24 11:09:43 kernel: scsi1 : ioc1: LSI53C1030T A0, FwRev=01032700h, Ports=1, MaxQ=255, IRQ=221rmmod mptspi
modprobe mptspi
Jan 24 11:11:05 kernel: Fusion MPT SPI Host driver 3.04.06
Jan 24 11:11:05 kernel: mptbase: ioc2: Initiating bringup
Jan 24 11:11:05 kernel: ioc2: LSI53C1030T A0: Capabilities={Initiator,Target}
Jan 24 11:11:05 kernel: mptbase: ioc2: PCI-MSI enabled
Jan 24 11:11:06 kernel: irq 221, desc: c03a9c00, depth: 0, count: 45, unhandled: 0
Jan 24 11:11:06 kernel: ->handle_irq(): c01400b0, handle_bad_irq+0x0/0x290
Jan 24 11:11:06 kernel: ->chip(): c03873c0, 0xc03873c0
Jan 24 11:11:06 kernel: ->action(): 00000000
Jan 24 11:11:06 kernel: IRQ_DISABLED set
Jan 24 11:11:06 kernel: unexpected IRQ trap at vector dd
Jan 24 11:11:06 kernel: scsi2 : ioc2: LSI53C1030T A0, FwRev=01032700h, Ports=1, MaxQ=255, IRQ=222
Jan 24 11:11:10 kernel: mptbase: ioc3: Initiating bringup
Jan 24 11:11:11 kernel: ioc3: LSI53C1030T A0: Capabilities={Initiator,Target}
Jan 24 11:11:11 kernel: mptbase: ioc3: PCI-MSI enabled
Jan 24 11:11:11 kernel: scsi3 : ioc3: LSI53C1030T A0, FwRev=01032700h, Ports=1, MaxQ=255, IRQ=221uname -a
Linux monster 2.6.24-rc8-git7 #1 SMP Thu Jan 24 11:26:53 EST 2008 i686 unknown
cat /proc/mpt/ioc0/info
ioc0:
ProductID = 0x020b (LSI53C1030T A0)
FWVersion = 0x01032700 (fw_size=42804)
MsgVersion = 0x0102
FirstWhoInit = 0x00
EventState = 0x01
CurrentHostMfaHighAddr = 0x00000000
CurrentSenseBufferHighAddr = 0x00000000
MaxChainDepth = 0x30 frames
MinBlockSize = 0x20 bytes
RequestFrames @ 0xf6402800 (Dma @ 0x36402800)
{CurReqSz=96} x {CurReqDepth=255} = 24480 bytes ^= 0x7000
{MaxReqSz=96} {MaxReqDepth=255}
Frames @ 0xf6400000 (Dma @ 0x36400000)
{CurRepSz=80} x {CurRepDepth=128} = 10240 bytes ^= 0x2880
{MaxRepSz=0} {MaxRepDepth=511} MaxDevices = 16
MaxBuses = 1
PortNumber = 1 (of 1)
cat /proc/mpt/ioc1/info
ioc1:
ProductID = 0x020b (LSI53C1030T A0)
FWVersion = 0x01032700 (fw_size=42804)
MsgVersion = 0x0102
FirstWhoInit = 0x00
EventState = 0x01
CurrentHostMfaHighAddr = 0x00000000
CurrentSenseBufferHighAddr = 0x00000000
MaxChainDepth = 0x30 frames
MinBlockSize = 0x20 bytes
RequestFrames @ 0xf6442800 (Dma @ 0x36442800)
{CurReqSz=96} x {CurReqDepth=255} = 24480 bytes ^= 0x7000
{MaxReqSz=96} {MaxReqDepth=255}
Frames @ 0xf6440000 (Dma @ 0x36440000)
{CurRepSz=80} x {CurRepDepth=128} = 10240 bytes ^= 0x2880
{MaxRepSz=0} {MaxRepDepth=511} MaxDevices = 16
MaxBuses = 1
PortNumber = 1 (of 1)
cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 129 0 0 1 IO-APIC-edge timer 1: 125 0 0 1 IO-APIC-edge i8042 3: 14 0 0 1 IO-APIC-edge serial 8: 0 0 0 0 IO-APIC-edge rtc 9: 0 0 0 0 IO-APIC-fasteoi acpi 10: 0 0 0 23 IO-APIC-fasteoi ehci_hcd:usb1, ohci_hcd:usb2, ohci_hcd:usb3 12: 1 0 0 2 IO-APIC-edge i8042 14: 432 0 0 8 IO-APIC-edge ide0 18: 231 0 0 1 IO-APIC-fasteoi eth2 221: 0 0 1 44 PCI-MSI-edge ioc1 222: 0 0 0 46 PCI-MSI-edge ioc0 223: 0 0 0 2 PCI-MSI-edge eth0 NMI: 0 0 0 0 Non-maskable interrupts LOC: 2160 823 677 1009 Local timer interrupts RES: 716 417 179 370 Rescheduling interrupts CAL: 35 88 86 58 function call interrupts TLB: 40 46 70 42 TLB shootdowns TRM: 0 0 0 0 Thermal event interrupts SPU: 0 0 0 0 Spurious interrupts ERR: 0 MIS: 0
Quoted 5 lines · Tony Battersby
I get "unexpected IRQ trap at vector dd" when reloading mptspi with MSI enabled. This seems to happen only on dual-channel HBAs; single-channel HBAs are unaffected. It looks like the second channel is generating a bogus MSI interrupt while the first channel is being brought up.
Update:
With the "IO resource allocation using pci_request_selected_regions API" patch (http://marc.info/?l=linux-scsi&m=120004270121533&w=4) applied, I get the following output instead:
Jan 24 13:38:03 kernel: Fusion MPT base driver 3.04.06 Jan 24 13:38:03 kernel: Copyright (c) 1999-2007 LSI Corporation
Jan 24 13:38:07 kernel: Fusion MPT SPI Host driver 3.04.06
Jan 24 13:38:07 kernel: ACPI: PCI Interrupt 0000:03:04.0[A] -> GSI 22
(level, low) -> IRQ 19
Jan 24 13:38:07 kernel: mptbase: ioc0: Initiating bringup
Jan 24 13:38:08 kernel: ioc0: LSI53C1030T A0:
Capabilities={Initiator,Target}
Jan 24 13:38:08 kernel: mptbase: ioc0: PCI-MSI enabled
Jan 24 13:38:08 kernel: scsi0 : ioc0: LSI53C1030T A0, FwRev=01032700h,
Ports=1, MaxQ=255, IRQ=222
Jan 24 13:38:13 kernel: ACPI: PCI Interrupt 0000:03:04.1[B] -> GSI 23
(level, low) -> IRQ 20
Jan 24 13:38:13 kernel: mptbase: ioc1: Initiating bringup
Jan 24 13:38:13 kernel: ioc1: LSI53C1030T A0:
Capabilities={Initiator,Target}
Jan 24 13:38:13 kernel: mptbase: ioc1: PCI-MSI enabled
Jan 24 13:38:14 kernel: scsi1 : ioc1: LSI53C1030T A0, FwRev=01032700h,Ports=1, MaxQ=255, IRQ=221
Jan 24 13:38:39 kernel: ACPI: PCI interrupt for device 0000:03:04.1 disabled Jan 24 13:38:39 kernel: ACPI: PCI interrupt for device 0000:03:04.0 disabled
Jan 24 13:38:43 kernel: Fusion MPT SPI Host driver 3.04.06
Jan 24 13:38:43 kernel: ACPI: PCI Interrupt 0000:03:04.0[A] -> GSI 22
(level, low) -> IRQ 19
Jan 24 13:38:43 kernel: mptbase: ioc2: Initiating bringup
Jan 24 13:38:43 kernel: ioc2: LSI53C1030T A0:
Capabilities={Initiator,Target}
Jan 24 13:38:43 kernel: mptbase: ioc2: PCI-MSI enabled
Jan 24 13:39:03 kernel: mptbase: ioc2: Initiating recovery
Jan 24 13:39:03 kernel: mptbase: ioc2: WARNING - IOC is in FAULT state!!!
Jan 24 13:39:03 kernel: mptbase: ioc2: WARNING - FAULT code = 8112h
Jan 24 13:39:03 kernel: mptbase: ioc2: ERROR - Doorbell ACK timeout
(count=4999), IntStatus=80000001!
Jan 24 13:39:03 kernel: mptbase: ioc2: Recovered from IOC FAULT
Jan 24 13:39:03 kernel: Clocksource tsc unstable (delta = 9373613660 ns)
Jan 24 13:39:03 kernel: scsi2 : ioc2: LSI53C1030T A0, FwRev=01032700h,
Ports=1, MaxQ=255, IRQ=222
Jan 24 13:39:07 kernel: ACPI: PCI Interrupt 0000:03:04.1[B] -> GSI 23
(level, low) -> IRQ 20
Jan 24 13:39:07 kernel: mptbase: ioc3: Initiating bringup
Jan 24 13:39:08 kernel: ioc3: LSI53C1030T A0:
Capabilities={Initiator,Target}
Jan 24 13:39:08 kernel: mptbase: ioc3: PCI-MSI enabled
Jan 24 13:39:08 kernel: scsi3 : ioc3: LSI53C1030T A0, FwRev=01032700h,Ports=1, MaxQ=255, IRQ=221
This is much more annoying, since reloading the driver takes an extra 20 seconds for the IOC recovery. I believe the difference may be caused by the addition of pci_disable_device() to mpt_adapter_dispose().
Tony