It seems likely to me that the sil24 driver depends on the card operating in PCI-X mode. PCI-X differs from PCI in interrupt handling and the driver has this flag SIL24_FLAG_PCIX_IRQ_WOC.
a comment in sata_mv.c
if PCIX_IRQ_WOC, there's an inherent race window between clearing IRQ pending status and reading PORT_SLOT_STAT which may cause spurious interrupts afterwards. This is unavoidable and much better than losing interrupts which happens if IRQ pending is cleared after reading PORT_SLOT_STAT
There is a register on the chip, which software could use to override the normal auto-detected PCI mode and bus speed for the chip. This could be used to, say, select 100Mhz or 66Mhz, or even 33Mhz operation, but the register is autodetected from the bus at power-on, and so if software wants to override that by rewriting the reg, it will also need to reset the PCI bus afterward. Which requires knowing how to reset a PCI bridge.
- Code: Select all
sata_mv 0000:03:06.0: PCI ERROR; PCI IRQ cause=0x30000040
This error message might be reported for a similar reason, but it's not clear to me.
youse guys have got to turn your world around. chinese stuff is deadly and crap.