dma-direct: document the zone selection logic

What we are doing here isn't quite obvious, so add a comment explaining
it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Christoph Hellwig 2018-10-01 07:40:53 -07:00
parent 99c65fa7c5
commit 79ac32a427
1 changed files with 8 additions and 1 deletions

View File

@ -84,7 +84,14 @@ static gfp_t __dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask,
else else
*phys_mask = dma_to_phys(dev, dma_mask); *phys_mask = dma_to_phys(dev, dma_mask);
/* GFP_DMA32 and GFP_DMA are no ops without the corresponding zones: */ /*
* Optimistically try the zone that the physical address mask falls
* into first. If that returns memory that isn't actually addressable
* we will fallback to the next lower zone and try again.
*
* Note that GFP_DMA32 and GFP_DMA are no ops without the corresponding
* zones.
*/
if (*phys_mask <= DMA_BIT_MASK(ARCH_ZONE_DMA_BITS)) if (*phys_mask <= DMA_BIT_MASK(ARCH_ZONE_DMA_BITS))
return GFP_DMA; return GFP_DMA;
if (*phys_mask <= DMA_BIT_MASK(32)) if (*phys_mask <= DMA_BIT_MASK(32))