OSDN Git Service

hw/ide/ahci: trigger either error IRQ or regular IRQ, not both
authorNiklas Cassel <niklas.cassel@wdc.com>
Wed, 11 Oct 2023 13:12:20 +0000 (15:12 +0200)
committerKevin Wolf <kwolf@redhat.com>
Wed, 8 Nov 2023 16:56:18 +0000 (17:56 +0100)
commitb523a3d54f3d031a54cd0931cc5d855608e63140
treec78086b926896075f716f0181c713ed63897f2ed
parent1f051dcbdf2e4b6f518db731c84e304b2b9d15ce
hw/ide/ahci: trigger either error IRQ or regular IRQ, not both

According to AHCI 1.3.1, 5.3.8.1 RegFIS:Entry, if ERR_STAT is set,
we jump to state ERR:FatalTaskfile, which will raise a TFES IRQ
unconditionally, regardless if the I bit is set in the FIS or not.

Thus, we should never raise a normal IRQ after having sent an error
IRQ.

NOTE: for QEMU platforms that use SeaBIOS, this patch depends on QEMU
commit 784155cdcb02 ("seabios: update submodule to git snapshot"), and
QEMU commit 14f5a7bae4cb ("seabios: update binaries to git snapshot"),
which update SeaBIOS to a version that contains SeaBIOS commit 1281e340
("ahci: handle TFES irq correctly").

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Message-ID: <20231011131220.1992064-1-nks@flawful.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
hw/ide/ahci.c