Re: [PATCH 3/3] powerpc/dma: Remove ZONE_DMA completely
Benjamin Herrenschmidt writes: > On Wed, 2015-03-18 at 19:49 +0530, Aneesh Kumar K.V wrote: >> Why not do it also for DMA32 as below. We call limit_zone_pfn() only >> for few >> platforms. They can select ZONE_DMA32. Everywhere else ZONE_DMA32 is >> same as ZONE_NORMAL ? So instead of having confusing output for >> show_mem(), we now have > > There may be cases where we want ZONE_DMA32, what's confusing ? > To see output like below Node 0 DMA32: 6*64kB (UM) 566*128kB (UEM) 367*256kB (UM) 185*512kB (UM)59*1024kB (UEM) 11*2048kB (UM) 4*4096kB (UM) 3*8192kB (UEM) 4016*16384kB Node 1 DMA32: 42*64kB (UEM) 14*128kB (UEM) 10*256kB (UM) 2*512kB (UM) 6*1024kB (UM) 7*2048kB (UEM) 5*4096kB (UM) 2*8192kB (U) 3644*16384kB (MR) = That is to find DMA32 convering more than 4GB range. -aneesh ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH 3/3] powerpc/dma: Remove ZONE_DMA completely
On Wed, 2015-03-18 at 19:49 +0530, Aneesh Kumar K.V wrote: > Why not do it also for DMA32 as below. We call limit_zone_pfn() only > for few > platforms. They can select ZONE_DMA32. Everywhere else ZONE_DMA32 is > same as ZONE_NORMAL ? So instead of having confusing output for > show_mem(), we now have There may be cases where we want ZONE_DMA32, what's confusing ? Ben. ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH 3/3] powerpc/dma: Remove ZONE_DMA completely
Benjamin Herrenschmidt writes: > We don't initialize it, we don't use it, remove it. > > We can bring it back if we ever wish to have support for devices > who have smaller than 32-bit DMA limitations but I don't think > we care much anymore. > > Signed-off-by: Benjamin Herrenschmidt > --- > arch/powerpc/Kconfig |2 +- > arch/powerpc/kernel/dma.c | 10 +- > 2 files changed, 2 insertions(+), 10 deletions(-) > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > index 22b0940..4efbfba 100644 > --- a/arch/powerpc/Kconfig > +++ b/arch/powerpc/Kconfig > @@ -712,7 +712,7 @@ config ISA > > config ZONE_DMA > bool > - default y > + default n > > config NEED_DMA_MAP_STATE > def_bool (PPC64 || NOT_COHERENT_CACHE) > diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c > index e24e0ae..6306d4e 100644 > --- a/arch/powerpc/kernel/dma.c > +++ b/arch/powerpc/kernel/dma.c > @@ -63,16 +63,8 @@ void *dma_direct_alloc_coherent(struct device *dev, size_t > size, > return NULL; > } > > - switch (zone) { > - case ZONE_DMA: > - flag |= GFP_DMA; > - break; > -#ifdef CONFIG_ZONE_DMA32 > - case ZONE_DMA32: > + if (zone == ZONE_DMA32) > flag |= GFP_DMA32; > - break; > -#endif > - }; > Why not do it also for DMA32 as below. We call limit_zone_pfn() only for few platforms. They can select ZONE_DMA32. Everywhere else ZONE_DMA32 is same as ZONE_NORMAL ? So instead of having confusing output for show_mem(), we now have Node 0 Normal: 6*64kB (UM) 566*128kB (UEM) 367*256kB (UM) 185*512kB (UM)59*1024kB (UEM) 11*2048kB (UM) 4*4096kB (UM) 3*8192kB (UEM) 4016*16384kB Node 1 Normal: 42*64kB (UEM) 14*128kB (UEM) 10*256kB (UM) 2*512kB (UM) 6*1024kB (UM) 7*2048kB (UEM) 5*4096kB (UM) 2*8192kB (U) 3644*16384kB (MR) = diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 38fe9c5409be..3a448cdaa22f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -290,7 +290,7 @@ config PPC_EMULATE_SSTEP config ZONE_DMA32 bool - default y if PPC64 + default n source "init/Kconfig" diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index 03511968a9c6..253222ddb308 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -71,6 +71,11 @@ void *dma_direct_alloc_coherent(struct device *dev, size_t size, } switch (zone) { +#ifdef CONFIG_ZONE_DMA + case ZONE_DMA: + flag |= GFP_DMA; + break; +#endif #ifdef CONFIG_ZONE_DMA32 case ZONE_DMA32: flag |= GFP_DMA32; ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH 3/3] powerpc/dma: Remove ZONE_DMA completely
We don't initialize it, we don't use it, remove it. We can bring it back if we ever wish to have support for devices who have smaller than 32-bit DMA limitations but I don't think we care much anymore. Signed-off-by: Benjamin Herrenschmidt --- arch/powerpc/Kconfig |2 +- arch/powerpc/kernel/dma.c | 10 +- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 22b0940..4efbfba 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -712,7 +712,7 @@ config ISA config ZONE_DMA bool - default y + default n config NEED_DMA_MAP_STATE def_bool (PPC64 || NOT_COHERENT_CACHE) diff --git a/arch/powerpc/kernel/dma.c b/arch/powerpc/kernel/dma.c index e24e0ae..6306d4e 100644 --- a/arch/powerpc/kernel/dma.c +++ b/arch/powerpc/kernel/dma.c @@ -63,16 +63,8 @@ void *dma_direct_alloc_coherent(struct device *dev, size_t size, return NULL; } - switch (zone) { - case ZONE_DMA: - flag |= GFP_DMA; - break; -#ifdef CONFIG_ZONE_DMA32 - case ZONE_DMA32: + if (zone == ZONE_DMA32) flag |= GFP_DMA32; - break; -#endif - }; /* ignore region specifiers */ flag &= ~(__GFP_HIGHMEM); ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev