]> git.ipfire.org Git - thirdparty/qemu.git/commit
hw/ide/ahci: fix ahci_write_fis_sdb()
authorNiklas Cassel <niklas.cassel@wdc.com>
Fri, 9 Jun 2023 14:08:43 +0000 (16:08 +0200)
committerMichael Tokarev <mjt@tls.msk.ru>
Mon, 11 Sep 2023 07:53:51 +0000 (10:53 +0300)
commit2aa37f5fa52da03afac7ea9db9dbbd55514b09d6
tree3621963fea77cc371ae24a80a54172b4ad9d71ff
parent74d9ef9d0b801c2f9f22a8869a7b2e94ffd2da21
hw/ide/ahci: fix ahci_write_fis_sdb()

When there is an error, we need to raise a TFES error irq, see AHCI 1.3.1,
5.3.13.1 SDB: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.

It is valid to signal successfully completed commands as finished in the
same SDB FIS that generates the error IRQ. The important thing is that
commands that did not complete successfully (e.g. commands that were
aborted, do not get the finished bit set).

Before this commit, there was never a TFES IRQ raised on NCQ error.

Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20230609140844.202795-8-nks@flawful.org
Signed-off-by: John Snow <jsnow@redhat.com>
(cherry picked from commit 7e85cb0db4c693b4e084a00e66fe73a22ed1688a)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/ide/ahci.c