powerpc: use mm zones more sensibly
Powerpc has somewhat odd usage where ZONE_DMA is used for all memory on common 64-bit configfs, and ZONE_DMA32 is used for 31-bit schemes. Move to a scheme closer to what other architectures use (and I dare to say the intent of the system): - ZONE_DMA: optionally for memory < 31-bit (64-bit embedded only) - ZONE_NORMAL: everything addressable by the kernel - ZONE_HIGHMEM: memory > 32-bit for 32-bit kernels Also provide information on how ZONE_DMA is used by defining ARCH_ZONE_DMA_BITS. Contains various fixes from Benjamin Herrenschmidt. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
f3e5a8579c
commit
25078dc1f7
@@ -50,7 +50,8 @@ static int dma_nommu_dma_supported(struct device *dev, u64 mask)
|
||||
return 1;
|
||||
|
||||
#ifdef CONFIG_FSL_SOC
|
||||
/* Freescale gets another chance via ZONE_DMA/ZONE_DMA32, however
|
||||
/*
|
||||
* Freescale gets another chance via ZONE_DMA, however
|
||||
* that will have to be refined if/when they support iommus
|
||||
*/
|
||||
return 1;
|
||||
@@ -88,13 +89,10 @@ void *__dma_nommu_alloc_coherent(struct device *dev, size_t size,
|
||||
}
|
||||
|
||||
switch (zone) {
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
case ZONE_DMA:
|
||||
flag |= GFP_DMA;
|
||||
break;
|
||||
#ifdef CONFIG_ZONE_DMA32
|
||||
case ZONE_DMA32:
|
||||
flag |= GFP_DMA32;
|
||||
break;
|
||||
#endif
|
||||
};
|
||||
#endif /* CONFIG_FSL_SOC */
|
||||
|
Reference in New Issue
Block a user