mfi(4) patch to add MSI-X support,
possibly address command timeouts
Sergey Kandaurov
pluknet at gmail.com
Wed Aug 31 19:55:17 UTC 2011
On 31 August 2011 21:34, John Baldwin <jhb at freebsd.org> wrote:
> I'd like some folks to test a patch to the mfi(4) driver that may help to
> address issues several folks have reported. The patch does two things, first
> it adds some dummy reads of PCI registers when checking device status in the
> interrupt handler to "flush" the writes to ACK interrupts. The Linux
> megaraid-sas driver uses this approach and some folks have tested a patch from
> Scott Long which had a somewhat similar effect. Second, it enables the use of
> MSI-X interrupts for many newer devices.
>
> The patch is available below and at www.freebsd.org/~jhb/patches/mfi.patch
mfi0: <LSI MegaSAS Gen2> port 0x3000-0x30ff mem
0x9dd40000-0x9dd43fff,0x9dd00000-0x9dd3ffff irq 26 at device 0.0 on
pci26
mfi0: Using MSI-X
mfi0: Megaraid SAS driver Ver 3.00
However, booting never finishes ending up with:
mfi0: COMMAND 0xffffff8000b3a550 TIMEOUT AFTER 58 SECONDS
mfi0: COMMAND 0xffffff8000b3a550 TIMEOUT AFTER 88 SECONDS
mfi0: COMMAND 0xffffff8000b3a550 TIMEOUT AFTER 118 SECONDS
mfi0: COMMAND 0xffffff8000b3a550 TIMEOUT AFTER 148 SECONDS
mfi0: COMMAND 0xffffff8000b3a550 TIMEOUT AFTER 179 SECONDS
mfi0: COMMAND 0xffffff8000b3a550 TIMEOUT AFTER 209 SECONDS
Patch applied and tested on RELENG_8_2.
mfi0 at pci0:26:0:0: class=0x010400 card=0x03b21014 chip=0x00791000
rev=0x03 hdr=0x00
vendor = 'LSI Logic (Was: Symbios Logic, NCR)'
class = mass storage
subclass = RAID
bar [10] = type I/O Port, range 32, base 0x3000, size 256, enabled
bar [14] = type Memory, range 64, base 0x9dd40000, size 16384, enabled
bar [1c] = type Memory, range 64, base 0x9dd00000, size 262144, enabled
cap 01[50] = powerspec 3 supports D0 D1 D2 D3 current D0
cap 10[68] = PCI-Express 2 endpoint max data 256(4096) link x8(x8)
cap 03[d0] = VPD
cap 05[a8] = MSI supports 1 message, 64 bit
cap 11[c0] = MSI-X supports 15 messages in map 0x14
ecap 0001[100] = AER 1 0 fatal 0 non-fatal 1 corrected
ecap 0004[138] = unknown 1
--
wbr,
pluknet
More information about the freebsd-stable
mailing list