Tejun, I've been trying to track down interrupt timeouts here with sata_mv, and I think I've found the problem With a Marvell 7042 chip and a port-multiplier, the driver selects .qc_defer = ata_std_qc_defer, which is supposed to be correct for FIS-based switching. But.. There is a mix of NCQ and non-NCQ drives plugged into that PM, and ata_std_qc_defer() seems happy to mix things up by issuing NCQ commands to some ports while simultaneously sending non-NCQ commands to other ports. Needless to say, this confuses the heck out of the hardware, which cannot tolerate non-NCQ commands in FIS-based switching mode, or NCQ commands in non FIS-based switching mode. Are there controllers which *can* handle such a mix (ahci, sil24 ?) So it looks like a I need a .qc_defer() function which examines all links from the common host port for activity, and then asks for command deferral when the new command has a different protocol than those that are outstanding. Weird that none of the other LLDs need this. Or do they? Cheers -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html