qemu-e2k/hw/ide
Niklas Cassel 7e85cb0db4 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>
2023-09-06 22:48:04 -04:00
..
ahci_internal.h hw/ide: spelling fixes 2023-08-31 19:47:43 +02:00
ahci-allwinner.c
ahci.c hw/ide/ahci: fix ahci_write_fis_sdb() 2023-09-06 22:48:04 -04:00
atapi.c
cmd646.c hw/ide: spelling fixes 2023-08-31 19:47:43 +02:00
core.c hw/ide/core: set ERR_STAT in unsupported command completion 2023-09-06 22:48:04 -04:00
ich.c
ioport.c
isa.c
Kconfig
macio.c
meson.build meson: Replace softmmu_ss -> system_ss 2023-06-20 10:01:30 +02:00
microdrive.c
mmio.c
pci.c hw/ide/pci: Replace some magic numbers by constants 2023-07-11 00:11:25 +02:00
piix.c hw/ide/piix: properly initialize the BMIBA register 2023-07-14 11:10:57 +02:00
qdev.c
sii3112.c hw/ide: Extract bmdma_status_writeb() 2023-07-11 00:11:25 +02:00
trace-events
trace.h
via.c hw/ide: Extract bmdma_status_writeb() 2023-07-11 00:11:25 +02:00