Re: [PATCH 3/3] powerpc/dma: Remove ZONE_DMA completely

2015-03-19 Thread Aneesh Kumar K.V
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

2015-03-18 Thread Benjamin Herrenschmidt
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

2015-03-18 Thread Aneesh Kumar K.V
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

2015-02-20 Thread Benjamin Herrenschmidt
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