Drives sometimes come up at wrong speeds / how to force COMRESET
Erik Jensen <[email protected]> Mon, 13 Jul 2026 02:14:37 -0700
| Newsgroups | org.kernel.vger.linux-ide |
|---|---|
| Message-ID | <CAMj6ewPbSgK6VnW91OG14Var4pBbeaZ5_+02znScvdk47Cm+Rg@mail.gmail.com> |
I have three drives connected to an ASM1164 Serial ATA AHCI Controller. Due to whatever quirk of the initial link training, often at least one of the drives will come up at a lower speed than it should. E.g., maybe the first drive will come up at 1.5 Gbps, or the third drive at 3.0 Gbps. When they do all come up at 6.0 Gbps they are absolutely rock solid (many terabytes of data over multiple days with nary a hiccup). My current workaround is to echo the PCI ID to /sys/bus/pci/drivers/ahci/unbind and then /sys/bus/pci/drivers/ahci/bind. The trouble is that since more often than not, at least one of the drives comes up slow, it can take several attempts before all of the drives are up at 6.0 Gbps. Is there a way that I missed to force a COMRESET on just a single drive to get it up to speed without risking knocking down the others that are already correct? If not, is a sysfs entry to do so something that could be accepted? (Perhaps /sys/class/ata_link/linkX/force_reset or /sys/class/scsi_host/hostY/force_reset or similar.) Thanks!