[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH for-2.3 3/4] ahci: Fix sglist offset manipulation fo
From: |
John Snow |
Subject: |
[Qemu-block] [PATCH for-2.3 3/4] ahci: Fix sglist offset manipulation for BE machines |
Date: |
Thu, 19 Mar 2015 20:24:15 -0400 |
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 <address@hidden>
---
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++) {
--
2.1.0
- [Qemu-block] [PATCH for-2.3 0/4] ahci: fix big endian PIO failures, John Snow, 2015/03/19
- [Qemu-block] [PATCH for-2.3 2/4] ide: fix cmd_read_pio when nsectors > 1, John Snow, 2015/03/19
- [Qemu-block] [PATCH for-2.3 3/4] ahci: Fix sglist offset manipulation for BE machines,
John Snow <=
- [Qemu-block] [PATCH for-2.3 1/4] ide: fix cmd_write_pio when nsectors > 1, John Snow, 2015/03/19
- [Qemu-block] [PATCH for-2.3 4/4] ahci-test: improve rw buffer patterns, John Snow, 2015/03/19
- Re: [Qemu-block] [Qemu-devel] [PATCH for-2.3 0/4] ahci: fix big endian PIO failures, Andreas Färber, 2015/03/20
- Re: [Qemu-block] [PATCH for-2.3 0/4] ahci: fix big endian PIO failures, Stefan Hajnoczi, 2015/03/23