Tejun Heo <tj <at> kernel.org> writes: [snip] > Please take a look at ahci_sb600_softreset() in ahci.c. The > controller had the same problem. Preferably, please fix your > controller but as there are more than one controller with this > problem, we probably should implement it as a quirk in libahci.c. I refer to the ahci_sb600_softreset and ahci_sb600_check_ready to make my patch, but I found that the following code changes in ahci_sb600_check_ready: /* * There is no need to check TFDATA if BAD PMP is found due to HW bug, * which can save timeout delay. */ if (irq_status & PORT_IRQ_BAD_PMP) return -EIO; On my system (CNS3xxx) it result in: ata2: softreset failed (device not ready) ata2: applying PMP SRST workaround and retrying ata2: softreset failed (device not ready) ata2: reset failed (errno=-5), retrying in 9 secs ata2: softreset failed (device not ready) ata2: applying PMP SRST workaround and retrying ata2: softreset failed (device not ready) ata2: reset failed (errno=-5), retrying in 9 secs ata2: softreset failed (device not ready) ata2: applying PMP SRST workaround and retrying ata2: softreset failed (device not ready) ata2: reset failed (errno=-5), retrying in 34 secs ata2: limiting SATA link speed to 1.5 Gbps ata2: softreset failed (device not ready) ata2: applying PMP SRST workaround and retrying ata2: softreset failed (device not ready) ata2: reset failed, giving up It seems that the PORT_IRQ_BAD_PMP is not getting cleared, or, asserted every time when it "received a FIS from a device that did not have a command outstanding", which is the D2H FIS of softreset. The sb600, which I assume the code work correctly, seems doesn't have this problem. So I am wondering that whether is this the right behavior on cns3xxx, or and just another issue of the chip? Best Regards, Mac Lin -- 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