On 2019-05-17 1:21 p.m., Helge Deller wrote: > Hi Carlo, > > On 17.05.19 17:43, Carlo Pisani wrote: >> guys, new tests(1) with SYBA-SY-PCX40009 on C3600 >> tested on different slots: it always fails with the same behavior >> (1) http://www.downthebunker.com/reloaded/space/viewtopic.php?f=50&t=337&p=1663 >> >> I really do not understand the random failure, because it seems >> working for a while, and then, it suddenly fails I don't know how to >> investigate. > Random failure could happen because of missing calls to DMA syncs in the driver. > PCI device drivers on PA-RISC require that you strictly follow the rules as mentioned in: > * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/DMA-API-HOWTO.txt > and > * https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/DMA-API.txt > > Not following those rules may lead to the same device driver working on x86 > but failing on parisc, simply because x86 is much more relaxed regarding DMA > and CPU caches. > > That said, I would not expect every device driver to work out of the box > on parisc... It seems likely to me that the sil24 driver depends on the card operating in PCI-X mode. As noted previously, PCI-X differs from PCI in interrupt handling. The driver has this flag SIL24_FLAG_PCIX_IRQ_WOC. There's this comment: /* 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. */ Maybe the workaround shouldn't be applied when card is in PCI 66 MHz slot? See drivers/ata/sata_sil24.c. https://www.mail-archive.com/linux-ide@xxxxxxxxxxxxxxx/msg11502.html https://www.mail-archive.com/linux-ide@xxxxxxxxxxxxxxx/msg11516.html The card works in my c8000 PCI-X slot. Dave -- John David Anglin dave.anglin@xxxxxxxx