Message ID | 20200904154439.643272-4-philmd@redhat.com |
---|---|
State | Superseded |
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: > Add documentation based on address_space_map / address_space_unmap. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > include/sysemu/dma.h | 30 +++++++++++++++++++++++++++++- > 1 file changed, 29 insertions(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On Fri, Sep 04, 2020 at 05:44:29PM +0200, Philippe Mathieu-Daudé wrote: > Add documentation based on address_space_map / address_space_unmap. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > include/sysemu/dma.h | 30 +++++++++++++++++++++++++++++- > 1 file changed, 29 insertions(+), 1 deletion(-) > > diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h > index 80c5bc3e02d..19bc9ad1b69 100644 > --- a/include/sysemu/dma.h > +++ b/include/sysemu/dma.h > @@ -1,7 +1,7 @@ > /* > * DMA helper functions > * > - * Copyright (c) 2009 Red Hat > + * Copyright (c) 2009, 2020 Red Hat > * > * This work is licensed under the terms of the GNU General Public License > * (GNU GPL), version 2 or later. > @@ -125,6 +125,20 @@ static inline int dma_memory_write(AddressSpace *as, dma_addr_t addr, > > int dma_memory_set(AddressSpace *as, dma_addr_t addr, uint8_t c, dma_addr_t len); > > +/** > + * address_space_map: Map a physical memory region into a DMA controller > + * virtual address It may be easier to understand this if you change DMA controller virtual address to host virtual address. Either way: Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> > + * > + * May map a subset of the requested range, given by and returned in @plen. > + * May return %NULL and set *@plen to zero(0), if resources needed to perform > + * the mapping are exhausted. > + * Use only for reads OR writes - not for read-modify-write operations. > + * > + * @as: #AddressSpace to be accessed > + * @addr: address within that address space > + * @len: pointer to length of buffer; updated on return > + * @dir: indicates the transfer direction > + */ > static inline void *dma_memory_map(AddressSpace *as, > dma_addr_t addr, dma_addr_t *len, > DMADirection dir) > @@ -138,6 +152,20 @@ static inline void *dma_memory_map(AddressSpace *as, > return p; > } > > +/** > + * address_space_unmap: Unmaps a memory region previously mapped > + * by dma_memory_map() > + * > + * Will also mark the memory as dirty if @dir == %DMA_DIRECTION_FROM_DEVICE. > + * @access_len gives the amount of memory that was actually read or written > + * by the caller. > + * > + * @as: #AddressSpace used > + * @buffer: host pointer as returned by address_space_map() > + * @len: buffer length as returned by address_space_map() > + * @dir: indicates the transfer direction > + * @access_len: amount of data actually transferred > + */ > static inline void dma_memory_unmap(AddressSpace *as, > void *buffer, dma_addr_t len, > DMADirection dir, dma_addr_t access_len) > -- > 2.26.2 >
diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 80c5bc3e02d..19bc9ad1b69 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -1,7 +1,7 @@ /* * DMA helper functions * - * Copyright (c) 2009 Red Hat + * Copyright (c) 2009, 2020 Red Hat * * This work is licensed under the terms of the GNU General Public License * (GNU GPL), version 2 or later. @@ -125,6 +125,20 @@ static inline int dma_memory_write(AddressSpace *as, dma_addr_t addr, int dma_memory_set(AddressSpace *as, dma_addr_t addr, uint8_t c, dma_addr_t len); +/** + * address_space_map: Map a physical memory region into a DMA controller + * virtual address + * + * May map a subset of the requested range, given by and returned in @plen. + * May return %NULL and set *@plen to zero(0), if resources needed to perform + * the mapping are exhausted. + * Use only for reads OR writes - not for read-modify-write operations. + * + * @as: #AddressSpace to be accessed + * @addr: address within that address space + * @len: pointer to length of buffer; updated on return + * @dir: indicates the transfer direction + */ static inline void *dma_memory_map(AddressSpace *as, dma_addr_t addr, dma_addr_t *len, DMADirection dir) @@ -138,6 +152,20 @@ static inline void *dma_memory_map(AddressSpace *as, return p; } +/** + * address_space_unmap: Unmaps a memory region previously mapped + * by dma_memory_map() + * + * Will also mark the memory as dirty if @dir == %DMA_DIRECTION_FROM_DEVICE. + * @access_len gives the amount of memory that was actually read or written + * by the caller. + * + * @as: #AddressSpace used + * @buffer: host pointer as returned by address_space_map() + * @len: buffer length as returned by address_space_map() + * @dir: indicates the transfer direction + * @access_len: amount of data actually transferred + */ static inline void dma_memory_unmap(AddressSpace *as, void *buffer, dma_addr_t len, DMADirection dir, dma_addr_t access_len)
Add documentation based on address_space_map / address_space_unmap. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- include/sysemu/dma.h | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-)