On Tue, Jun 13, 2023 at 11:13:29AM -0400, Kevin O'Connor wrote:
> 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.
> 
> Gerd, would you be able to review this patch?

Description and patch look good to me, testing with qemu works fine.

Tested-by: Gerd Hoffmann <kra...@redhat.com>
Acked-by: Gerd Hoffmann <kra...@redhat.com>

take care,
  Gerd

_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to