On Tue, May 30, 2023 at 03:44:05PM +0200, Niklas Cassel via SeaBIOS wrote: > According to AHCI 1.3.1, 5.3.8.1 RegFIS:Entry, if ERR_STAT is set in the > received FIS, the HBA shall jump to state ERR:FatalTaskfile, which will > raise a TFES IRQ. > > This means that if ERR_STAT is set in the recevied FIS, PxIS.TFES will > be set, without either PxIS.DHRS or PxIS.PSS being set. > > SeaBIOS function ahci_port_setup() will try to identify an AHCI device > by sending an ATAPI identify device command. However, such a command > will be aborted with ERR_STAT set for a regular (non-ATAPI) device. > > ahci_command() already performs the correct error recovery steps when > status is correctly set, so simply modify ahci_command() to read the > correct status when PxIS.TFES is set. > > It is safe to read PxTFD when PxIS.TFES is set, even for systems with a > port multiplier, see AHCI 1.3.1, 9.3.7 PxTFD Register Information: > "When a taskfile error occurs (PxIS.TFES is set to '1'), the host may > refer to the values in PxTFD. The values in PxTFD at this time are > guaranteed to correspond to the device that reported the taskfile error > condition." > > Without this, each boot will be delayed by 32 seconds, waiting for the > AHCI command to timeout.
Thanks. I committed this change. -Kevin _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-le...@seabios.org