qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] ahci: advertise HOST_CAP_64
@ 2017-01-13 11:02 Ladi Prosek
  2017-01-13 17:23 ` John Snow
  0 siblings, 1 reply; 9+ messages in thread
From: Ladi Prosek @ 2017-01-13 11:02 UTC (permalink / raw)
  To: qemu-block, qemu-devel; +Cc: jsnow

The AHCI emulation code supports 64-bit addressing and should advertise this
fact in the Host Capabilities register. Both Linux and Windows drivers test
this bit to decide if the upper 32 bits of various registers may be written
to, and at least some versions of Windows have a bug where DMA is attempted
with an address above 4GB but, in the absence of HOST_CAP_64, the upper 32
bits are left unititialized which leads to a memory corruption.

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
---
 hw/ide/ahci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 3c19bda..6a17acf 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -488,7 +488,7 @@ static void ahci_reg_init(AHCIState *s)
     s->control_regs.cap = (s->ports - 1) |
                           (AHCI_NUM_COMMAND_SLOTS << 8) |
                           (AHCI_SUPPORTED_SPEED_GEN1 << AHCI_SUPPORTED_SPEED) |
-                          HOST_CAP_NCQ | HOST_CAP_AHCI;
+                          HOST_CAP_NCQ | HOST_CAP_AHCI | HOST_CAP_64;
 
     s->control_regs.impl = (1 << s->ports) - 1;
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-01-31 13:03 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-13 11:02 [Qemu-devel] [PATCH] ahci: advertise HOST_CAP_64 Ladi Prosek
2017-01-13 17:23 ` John Snow
2017-01-13 18:12   ` Ladi Prosek
2017-01-13 18:31     ` John Snow
2017-01-13 19:01       ` Ladi Prosek
2017-01-13 19:15         ` John Snow
2017-01-16  7:49           ` Ladi Prosek
2017-01-31 12:56             ` John Snow
2017-01-31 13:02               ` Ladi Prosek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).