[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 14/23] dma: Let dma_buf_read() / dma_buf_write() propagate
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 14/23] dma: Let dma_buf_read() / dma_buf_write() propagate MemTxResult |
Date: |
Fri, 31 Dec 2021 00:59:36 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 |
On 12/23/21 12:55, Philippe Mathieu-Daudé wrote:
> Since the previous commit, dma_buf_rw() returns a MemTxResult
> type. Do not discard it, return it to the caller.
>
> Since both dma_buf_read/dma_buf_write functions were previously
> returning the QEMUSGList size not consumed, add an extra argument
> where the unconsummed size can be stored.
>
> Update the few callers.
>
> Reviewed-by: Klaus Jensen <k.jensen@samsung.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
> include/sysemu/dma.h | 6 ++++--
> hw/ide/ahci.c | 8 ++++----
> hw/nvme/ctrl.c | 4 ++--
> hw/scsi/megasas.c | 48 ++++++++++++++++++++++++++++++-------------
> hw/scsi/scsi-bus.c | 4 ++--
> softmmu/dma-helpers.c | 18 ++++++----------
> 6 files changed, 52 insertions(+), 36 deletions(-)
>
> diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h
> index fd8f16003dd..d11c1d794f9 100644
> --- a/include/sysemu/dma.h
> +++ b/include/sysemu/dma.h
> @@ -302,8 +302,10 @@ BlockAIOCB *dma_blk_read(BlockBackend *blk,
> BlockAIOCB *dma_blk_write(BlockBackend *blk,
> QEMUSGList *sg, uint64_t offset, uint32_t align,
> BlockCompletionFunc *cb, void *opaque);
> -uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs
> attrs);
> -uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs
> attrs);
> +MemTxResult dma_buf_read(void *ptr, int32_t len, uint64_t *residp,
> + QEMUSGList *sg, MemTxAttrs attrs);
> +MemTxResult dma_buf_write(void *ptr, int32_t len, uint64_t *residp,
> + QEMUSGList *sg, MemTxAttrs attrs);
>
This fails on 32-bit host when passing a size_t variable as residp
argument. I'll work a "clean" fix later. Meanwhile discarding this
patch.
> diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c
> index b0be1564797..498303157e9 100644
> --- a/softmmu/dma-helpers.c
> +++ b/softmmu/dma-helpers.c
> @@ -321,22 +321,16 @@ static MemTxResult dma_buf_rw(void *buf, int32_t len,
> uint64_t *residp,
> return res;
> }
>
> -uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs
> attrs)
> +MemTxResult dma_buf_read(void *ptr, int32_t len, uint64_t *residp,
> + QEMUSGList *sg, MemTxAttrs attrs)
> {
> - uint64_t resid;
> -
> - dma_buf_rw(ptr, len, &resid, sg, DMA_DIRECTION_FROM_DEVICE, attrs);
> -
> - return resid;
> + return dma_buf_rw(ptr, len, residp, sg, DMA_DIRECTION_FROM_DEVICE,
> attrs);
> }
>
> -uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs
> attrs)
> +MemTxResult dma_buf_write(void *ptr, int32_t len, uint64_t *residp,
> + QEMUSGList *sg, MemTxAttrs attrs)
> {
> - uint64_t resid;
> -
> - dma_buf_rw(ptr, len, &resid, sg, DMA_DIRECTION_TO_DEVICE, attrs);
> -
> - return resid;
> + return dma_buf_rw(ptr, len, residp, sg, DMA_DIRECTION_TO_DEVICE, attrs);
> }
>
> void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie,
- [PATCH v2 06/23] dma: Let dma_memory_map() take MemTxAttrs argument, (continued)
- [PATCH v2 06/23] dma: Let dma_memory_map() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 05/23] dma: Let dma_memory_read/write() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 07/23] dma: Have dma_buf_rw() take a void pointer, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 08/23] dma: Have dma_buf_read() / dma_buf_write() take a void pointer, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 09/23] dma: Let pci_dma_rw() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 10/23] dma: Let dma_buf_rw() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 11/23] dma: Let dma_buf_write() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 12/23] dma: Let dma_buf_read() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 13/23] dma: Let dma_buf_rw() propagate MemTxResult, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 14/23] dma: Let dma_buf_read() / dma_buf_write() propagate MemTxResult, Philippe Mathieu-Daudé, 2021/12/23
- Re: [PATCH v2 14/23] dma: Let dma_buf_read() / dma_buf_write() propagate MemTxResult,
Philippe Mathieu-Daudé <=
- [PATCH v2 15/23] dma: Let st*_dma() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 16/23] dma: Let ld*_dma() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 17/23] dma: Let st*_dma() propagate MemTxResult, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 18/23] dma: Let ld*_dma() propagate MemTxResult, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 19/23] hw/scsi/megasas: Use uint32_t for reply queue head/tail values, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 20/23] pci: Let st*_pci_dma() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 21/23] pci: Let ld*_pci_dma() take MemTxAttrs argument, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 22/23] pci: Let st*_pci_dma() propagate MemTxResult, Philippe Mathieu-Daudé, 2021/12/23
- [PATCH v2 23/23] pci: Let ld*_pci_dma() propagate MemTxResult, Philippe Mathieu-Daudé, 2021/12/23
- Re: [PATCH v2 00/23] hw: Have DMA APIs take MemTxAttrs arg & propagate MemTxResult (full), Philippe Mathieu-Daudé, 2021/12/30