Messages in this thread | | | Date | Fri, 3 Dec 2010 14:40:56 +0100 | Subject | dma_unmap_sg - what number of entries is to be passed as parameter really? | From | Linus Walleij <> |
| |
Now we have a contradiction between two pieces of documentation, in Documentation/DMA-API.txt
void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, enum dma_data_direction direction)
Unmap the previously mapped scatter/gather list. All the parameters must be the same as those and passed in to the scatter/gather mapping API.
Note: <nents> must be the number you passed in, *not* the number of physical entries returned.
Note the last paragraph! But in arch/arm/mm/dma-mapping.c;
/** * dma_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices * @sg: list of buffers * @nents: number of buffers to unmap (returned from dma_map_sg) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * @dir: DMA transfer direction (same as was passed to dma_map_sg) * * Unmap a set of streaming mode DMA translations. Again, CPU access * rules concerning calls here are the same as for dma_unmap_single(). */
So the documentation in Documentation/ says one thing, whereas the ARM implementation documentation says something else.
Which one is it? (Looks like the first one from Documentation/ to me.)
I will happily patch the culprit...
Yours, Linus Walleij
| |