Hello experts, I was reading the well known DMA-API-HOWTO document (https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt), (I've read this document a couple of times before in the past.) In the " Using Consistent DMA mappings" section it says : ----------------------------- dma_addr_t dma_handle; cpu_addr = dma_alloc_coherent(dev, size, &dma_handle, gfp); ... The consistent DMA mapping interfaces, will by default return a DMA address which is 32-bit addressable. Even if the device indicates (via the DMA mask) that it may address the upper 32-bits, consistent allocation will only return > 32-bit addresses for DMA if the consistent DMA mask has been explicitly changed via dma_set_coherent_mask(). This is true of the dma_pool interface as well. ------------------------------ I understand by 'DMA address', it means dma_handle (the address the device will use for DMA). I can't understand the expression "consistent allocation will only return > 32-bit addresses". Does it mean that when the driver sets the coherent_dma_mask, for example, to DMA_BIT_MAST(64) and it was successful, does it return the dma_handle in lower 32 bit address? What does "return > 32-bit addresses" mean? The ">" syntax here is so obscure with no clear definition of usage. By context I guess it returns the address in lower 32bit address range even it the coherent_dma_mask is set to some bigger value. (And I know generally, dma address(= bus address) is not equal to the physical address and is assigned by the OS for convenience) Thank you. Chan Kim _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies