The len and is_write arguments to cpu_physical_memory_unmap() were swapped. This patch changes calls to use the correct argument ordering.
Signed-off-by: Stefan Hajnoczi <stefa...@linux.vnet.ibm.com> --- This patch applies to agraf's ahci tree at git://repo.or.cz/qemu/ahci.git. hw/ide/ahci.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 4c920da..f618f16 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -175,12 +175,12 @@ static void map_page(uint8_t **ptr, uint64_t addr, uint32_t wanted) target_phys_addr_t len = wanted; if (*ptr) { - cpu_physical_memory_unmap(*ptr, 1, len, len); + cpu_physical_memory_unmap(*ptr, len, 1, len); } *ptr = cpu_physical_memory_map(addr, &len, 1); if (len < wanted) { - cpu_physical_memory_unmap(*ptr, 1, len, len); + cpu_physical_memory_unmap(*ptr, len, 1, len); *ptr = NULL; } } @@ -639,7 +639,7 @@ static void ahci_write_fis_d2h(AHCIDevice *ad, uint8_t *cmd_fis) ahci_trigger_irq(ad->hba, ad, PORT_IRQ_D2H_REG_FIS); if (cmd_mapped) { - cpu_physical_memory_unmap(cmd_fis, 0, cmd_len, cmd_len); + cpu_physical_memory_unmap(cmd_fis, cmd_len, 0, cmd_len); } } @@ -650,8 +650,8 @@ static int ahci_iov_destroy(AHCIDevice *ad, QEMUIOVector *qiov, int is_write) for (i = 0; i < qiov->niov; i++) { /* flags_size is zero-based */ - cpu_physical_memory_unmap(iov[i].iov_base, !is_write, - iov[i].iov_len, iov[i].iov_len); + cpu_physical_memory_unmap(iov[i].iov_base, iov[i].iov_len, + !is_write, iov[i].iov_len); } return 0; @@ -720,7 +720,7 @@ static int ahci_populate_iov(AHCIDevice *ad, NCQTransferState *ncq_tfs, } out: - cpu_physical_memory_unmap(prdt, 0, prdt_len, prdt_len); + cpu_physical_memory_unmap(prdt, prdt_len, 0, prdt_len); return r; } @@ -766,7 +766,7 @@ static int ahci_populate_sglist(AHCIDevice *ad, QEMUSGList *sglist) } out: - cpu_physical_memory_unmap(prdt, 0, prdt_len, prdt_len); + cpu_physical_memory_unmap(prdt, prdt_len, 0, prdt_len); return r; } @@ -995,7 +995,7 @@ static int handle_cmd(AHCIState *s, int port, int slot) } out: - cpu_physical_memory_unmap(cmd_fis, 1, cmd_len, cmd_len); + cpu_physical_memory_unmap(cmd_fis, cmd_len, 1, cmd_len); if (s->dev[port].port.ifs[0].status & (BUSY_STAT|DRQ_STAT)) { /* async command, complete later */ -- 1.7.2.3