Drives sometimes come up at wrong speeds / how to force COMRESET

Erik Jensen <[email protected]> Mon, 13 Jul 2026 02:14:37 -0700
Newsgroups gmane.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!