87c6328bba
Update to v2.3.0-rc0. SeaBIOS does not yet build on 11.4, and rcutorture test fails on ppc. OBS-URL: https://build.opensuse.org/request/show/292199 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=238
39 lines
1.4 KiB
Diff
39 lines
1.4 KiB
Diff
From ec2869aba738e3eea46a3202f41f1d5efe38325b Mon Sep 17 00:00:00 2001
|
|
From: John Snow <jsnow@redhat.com>
|
|
Date: Thu, 19 Mar 2015 20:24:15 -0400
|
|
Subject: [PATCH] ahci: Fix sglist offset manipulation for BE machines
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
This does not bother DMA, because DMA generally transfers
|
|
the entire SGList in one shot if it can.
|
|
|
|
PIO, on the other hand, tries to transfer just one sector
|
|
at a time, and will make multiple visits to the sglist
|
|
to fetch memory addresses.
|
|
|
|
Fix the memory address calculaton when we have an offset
|
|
by moving the offset addition OUTSIDE of the le64_to_cpu
|
|
calculation.
|
|
|
|
Signed-off-by: John Snow <jsnow@redhat.com>
|
|
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
|
---
|
|
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 e1ae36f..7a223be 100644
|
|
--- a/hw/ide/ahci.c
|
|
+++ b/hw/ide/ahci.c
|
|
@@ -799,7 +799,7 @@ static int ahci_populate_sglist(AHCIDevice *ad, QEMUSGList *sglist,
|
|
|
|
qemu_sglist_init(sglist, qbus->parent, (sglist_alloc_hint - off_idx),
|
|
ad->hba->as);
|
|
- qemu_sglist_add(sglist, le64_to_cpu(tbl[off_idx].addr + off_pos),
|
|
+ qemu_sglist_add(sglist, le64_to_cpu(tbl[off_idx].addr) + off_pos,
|
|
prdt_tbl_entry_size(&tbl[off_idx]) - off_pos);
|
|
|
|
for (i = off_idx + 1; i < sglist_alloc_hint; i++) {
|