qemu/hw
John Snow 7b8bad1b6a ahci: Correct PIO/D2H FIS responses
Currently, the D2H FIS packets AHCI generates simply parrot back
the LBA that the guest sent to us in the cmd_fis. However, some
commands (like READ NATIVE MAX) modify the LBA registers as a
return value, through which the AHCI D2H FIS is the only response
mechanism. Thus, the D2H response should use the current register
values, not the initial ones.

This patch adjusts the LBA and drive select register responses for
PIO Setup and D2H FIS response packets.

Additionally, the PIO and D2H FIS responses copy too many bytes
from the command FIS that it is being generated from. Specifically,
byte 11 which is the Features(15:8) field for Register Host to
Device FIS packets, is instead reserved for the PIO Setup FIS and
should always be 0.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Tested-by: Michael S. Tsirkin <mst@redhat.com>
Message-id: 1412204151-18117-2-git-send-email-jsnow@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2014-11-03 09:48:41 +00:00
..
9pfs hw/9pfs: Don't return type from host in readdir on local 9p filesystem 2014-09-04 10:51:13 -05:00
acpi qdev: HotplugHandler: Rename unplug callback to unplug_request 2014-10-15 05:03:13 +02:00
alpha ide: Update ide_drive_get to be HBA agnostic 2014-10-03 10:30:33 +01:00
arm arm/virt: enable PSCI emulation support for system emulation 2014-10-24 12:19:13 +01:00
audio ac97: register reset via qom 2014-09-29 10:20:05 +02:00
block blockdev: Fix blockdev-add not to create DriveInfo 2014-10-20 14:03:50 +02:00
bt l2cap: fix access to freed memory 2014-08-15 19:12:48 +04:00
char virtio-serial: Convert to hotplug-handler API 2014-10-15 05:03:13 +02:00
core virtio-scsi fixes, the first part of dynamic sysbus devices, 2014-10-30 13:35:12 +00:00
cpu target-i386: ICC bus: Drop BusState::allow_hotplug 2014-10-15 05:03:13 +02:00
cris hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
display vmware-vga: use vmsvga_verify_rect in vmsvga_fill_rect 2014-10-29 12:01:30 +01:00
dma hw/dma/i8257: Silence phony error message 2014-09-16 12:35:02 +02:00
gpio pl061: implement input interrupt logic 2014-09-12 14:06:48 +01:00
i2c Fix debug print warning 2014-09-02 22:38:16 +04:00
i386 Block patches 2014-10-22 16:39:49 +01:00
ide ahci: Correct PIO/D2H FIS responses 2014-11-03 09:48:41 +00:00
input hw/input/tsc210x.c: Delete unused array tsc2101_rates 2014-09-29 18:48:48 +01:00
intc arm_gic: remove unused parameter. 2014-10-24 12:19:11 +01:00
ipack memory: remove memory_region_destroy 2014-08-18 12:06:21 +02:00
isa hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
lm32 hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
m68k memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
mem pc-dimm: Don't check dimm->node when there is non-NUMA config 2014-09-29 19:44:04 +03:00
microblaze hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
mips Block patches 2014-10-22 16:39:49 +01:00
misc omap_gpmc.c: Remove duplicate assignment 2014-10-24 12:19:12 +01:00
moxie memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
net bootindex: move calling add_boot_device_patch to bootindex setter function 2014-10-15 10:46:01 +02:00
nvram hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
openrisc memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
pci hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
pci-bridge qdev: HotplugHandler: Rename unplug callback to unplug_request 2014-10-15 05:03:13 +02:00
pci-host - Memory: improve error reporting and avoid crashes on hotplug 2014-09-12 16:55:49 +01:00
pcmcia hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
ppc hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
s390x virtio: link the rng backend through an alias property 2014-10-30 12:59:27 +00:00
scsi hw/scsi/virtio-scsi.c: fix the "type" use error in virtio_scsi_handle_ctrl 2014-10-27 16:11:45 +01:00
sd hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
sh4 hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
sparc hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
sparc64 hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
ssi ssi: xilinx_spi: Initialise CS GPIOs as NULL 2014-08-15 18:54:40 +04:00
timer mc146818rtc: add missed field to vmstate 2014-09-11 12:20:32 +02:00
tpm hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
tricore hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
unicore32 memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
usb uhci: remove useless DEBUG 2014-10-28 11:38:18 +01:00
virtio virtio: link the rng backend through an alias property 2014-10-30 12:59:27 +00:00
watchdog memory: remove memory_region_destroy 2014-08-18 12:06:21 +02:00
xen hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xenpv hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xtensa hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
Makefile.objs pc: implement pc-dimm device abstraction 2014-06-19 16:41:47 +03:00