qemu-e2k/hw/ide
Paolo Bonzini ae79c2db15 ahci: fix FIS I bit and PIO Setup FIS interrupt
The "I" bit in PIO Setup and D2H FISes is exclusively a device concept
and the irqstatus register in the controller does not matter.  The SATA
spec says when it should be one; for D2H FISes in practice it is always
set, while the PIO Setup FIS has several subcases that are documented in
the patch.

Also, the PIO Setup FIS interrupt is actually generated _after_ data
has been received.

Someone should probably spend some time reading the SATA specification and
figuring out the more obscure fields in the PIO Setup FIS, but this is enough
to fix SeaBIOS booting from ATAPI CD-ROMs over an AHCI controller.

Fixes: 956556e131
Reported-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Message-id: 20180622165159.19863-1-pbonzini@redhat.com
[Minor edit to avoid ATAPI comment ambiguity. --js]
Signed-off-by: John Snow <jsnow@redhat.com>
2018-06-25 16:50:48 -04:00
..
Makefile.objs hw/ide: Emulate SiI3112 SATA controller 2018-01-10 12:53:00 +11:00
ahci-allwinner.c ide: use local path for local headers 2018-06-01 19:20:37 +03:00
ahci.c ahci: fix FIS I bit and PIO Setup FIS interrupt 2018-06-25 16:50:48 -04:00
ahci_internal.h ahci: fix FIS I bit and PIO Setup FIS interrupt 2018-06-25 16:50:48 -04:00
atapi.c ide: introduce ide_transfer_start_norecurse 2018-06-08 13:36:31 -04:00
cmd646.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
core.c ide: introduce ide_transfer_start_norecurse 2018-06-08 13:36:31 -04:00
ich.c ide: use local path for local headers 2018-06-01 19:20:37 +03:00
isa.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
macio.c macio: fix NULL pointer dereference when issuing IDE trim 2018-03-27 00:38:00 -04:00
microdrive.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
mmio.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
pci.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00
piix.c hw/ide: remove old i386 dependency 2017-12-18 17:07:02 +03:00
qdev.c block: Remove deprecated -drive option serial 2018-06-15 14:49:44 +02:00
sii3112.c sii3112: Remove unneeded exit function 2018-03-18 18:27:23 +11:00
trace-events ide: push end_transfer_func out of start_transfer callback, rename callback 2018-06-08 13:36:25 -04:00
via.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-06-01 14:15:10 +02:00