Message ID | 20200904154439.643272-8-philmd@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | dma: Let the DMA API take MemTxAttrs argument and propagate MemTxResult | expand |
On 9/4/20 8:44 AM, Philippe Mathieu-Daudé wrote: > dma_memory_rw_relaxed() returns a MemTxResult type. > Do not discard it, return it to the caller. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > include/sysemu/dma.h | 22 ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
Philippe Mathieu-Daudé <philmd@redhat.com> 于2020年9月4日周五 下午11:46写道: > > dma_memory_rw_relaxed() returns a MemTxResult type. > Do not discard it, return it to the caller. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Li Qiang <liq3ea@gmail.com> > --- > include/sysemu/dma.h | 22 ++++++++++++++++++---- > 1 file changed, 18 insertions(+), 4 deletions(-) > > diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h > index 2961a96ad67..f4ade067a46 100644 > --- a/include/sysemu/dma.h > +++ b/include/sysemu/dma.h > @@ -96,8 +96,10 @@ static inline MemTxResult dma_memory_read_relaxed(AddressSpace *as, > return dma_memory_rw_relaxed(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); > } > > -static inline int dma_memory_write_relaxed(AddressSpace *as, dma_addr_t addr, > - const void *buf, dma_addr_t len) > +static inline MemTxResult dma_memory_write_relaxed(AddressSpace *as, > + dma_addr_t addr, > + const void *buf, > + dma_addr_t len) > { > return dma_memory_rw_relaxed(as, addr, (void *)buf, len, > DMA_DIRECTION_FROM_DEVICE); > @@ -143,8 +145,20 @@ static inline MemTxResult dma_memory_read(AddressSpace *as, dma_addr_t addr, > return dma_memory_rw(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); > } > > -static inline int dma_memory_write(AddressSpace *as, dma_addr_t addr, > - const void *buf, dma_addr_t len) > +/** > + * address_space_write: Write to address space from DMA controller. > + * > + * Return a MemTxResult indicating whether the operation succeeded > + * or failed (eg unassigned memory, device rejected the transaction, > + * IOMMU fault). > + * > + * @as: #AddressSpace to be accessed > + * @addr: address within that address space > + * @buf: buffer with the data transferred > + * @len: the number of bytes to write > + */ > +static inline MemTxResult dma_memory_write(AddressSpace *as, dma_addr_t addr, > + const void *buf, dma_addr_t len) > { > return dma_memory_rw(as, addr, (void *)buf, len, > DMA_DIRECTION_FROM_DEVICE); > -- > 2.26.2 > >
diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 2961a96ad67..f4ade067a46 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -96,8 +96,10 @@ static inline MemTxResult dma_memory_read_relaxed(AddressSpace *as, return dma_memory_rw_relaxed(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); } -static inline int dma_memory_write_relaxed(AddressSpace *as, dma_addr_t addr, - const void *buf, dma_addr_t len) +static inline MemTxResult dma_memory_write_relaxed(AddressSpace *as, + dma_addr_t addr, + const void *buf, + dma_addr_t len) { return dma_memory_rw_relaxed(as, addr, (void *)buf, len, DMA_DIRECTION_FROM_DEVICE); @@ -143,8 +145,20 @@ static inline MemTxResult dma_memory_read(AddressSpace *as, dma_addr_t addr, return dma_memory_rw(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); } -static inline int dma_memory_write(AddressSpace *as, dma_addr_t addr, - const void *buf, dma_addr_t len) +/** + * address_space_write: Write to address space from DMA controller. + * + * Return a MemTxResult indicating whether the operation succeeded + * or failed (eg unassigned memory, device rejected the transaction, + * IOMMU fault). + * + * @as: #AddressSpace to be accessed + * @addr: address within that address space + * @buf: buffer with the data transferred + * @len: the number of bytes to write + */ +static inline MemTxResult dma_memory_write(AddressSpace *as, dma_addr_t addr, + const void *buf, dma_addr_t len) { return dma_memory_rw(as, addr, (void *)buf, len, DMA_DIRECTION_FROM_DEVICE);
dma_memory_rw_relaxed() returns a MemTxResult type. Do not discard it, return it to the caller. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- include/sysemu/dma.h | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-)