The Silicon Image 3114 is the four-port counterpart to the 3112. It has a magic "make all four ports work" bit that must be set, in order to receive interrupts from all four ports. This bit, annoyingly, was placed in a register that software has traditionally chosen to unconditionally zero. Doh. The attached patch sets/clears only the bits we care about, which deviates from legacy software, but is arguably better behavior. The patch shuffles, but does not add, IOs in the dma-start path. And it adds one IO, a read, to the dma-stop path. This affects everybody, so testing of this patch on -any- libata-supported hardware would be appreciated. Jeff