Patchwork [1/1] powerpc: enable ARCH_DMA_ADDR_T_64BIT with ARCH_PHYS_ADDR_T_64BIT

login
register
mail settings
Submitter Andrew Morton
Date Oct. 1, 2010, 9:12 p.m.
Message ID <201010012112.o91LCtEk020866@imap1.linux-foundation.org>
Download mbox | patch
Permalink /patch/66514/
State Accepted
Delegated to: Benjamin Herrenschmidt
Headers show

Comments

Andrew Morton - Oct. 1, 2010, 9:12 p.m.
From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/powerpc/Kconfig |    3 +++
 1 file changed, 3 insertions(+)
Josh Boyer - Oct. 2, 2010, 1:31 a.m.
On Fri, Oct 1, 2010 at 5:12 PM,  <akpm@linux-foundation.org> wrote:
> From: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
>
>  arch/powerpc/Kconfig |    3 +++
>  1 file changed, 3 insertions(+)
>
> diff -puN arch/powerpc/Kconfig~powerpc-enable-arch_dma_addr_t_64bit-with-arch_phys_addr_t_64bit arch/powerpc/Kconfig
> --- a/arch/powerpc/Kconfig~powerpc-enable-arch_dma_addr_t_64bit-with-arch_phys_addr_t_64bit
> +++ a/arch/powerpc/Kconfig
> @@ -16,6 +16,9 @@ config WORD_SIZE
>  config ARCH_PHYS_ADDR_T_64BIT
>        def_bool PPC64 || PHYS_64BIT
>
> +config ARCH_DMA_ADDR_T_64BIT
> +       def_bool ARCH_PHYS_ADDR_T_64BIT
> +

I seemed to have missed what this is about entirely.  Is there some
place I can look that describes what that is supposed to do?  The PPC
4xx boards set PHYS_ADDR_T_64BIT because the MMU uses 36 bit
addressing, but the CPU is only 32 bits.  I want to make sure this DMA
thing isn't going to cause problems.

josh
Benjamin Herrenschmidt - Oct. 2, 2010, 3:20 a.m.
On Fri, 2010-10-01 at 21:31 -0400, Josh Boyer wrote:
> > +config ARCH_DMA_ADDR_T_64BIT
> > +       def_bool ARCH_PHYS_ADDR_T_64BIT
> > +
> 
> I seemed to have missed what this is about entirely.  Is there some
> place I can look that describes what that is supposed to do?  The PPC
> 4xx boards set PHYS_ADDR_T_64BIT because the MMU uses 36 bit
> addressing, but the CPU is only 32 bits.  I want to make sure this DMA
> thing isn't going to cause problems. 

Yes, we need to test a bit. Our dma_addr_t has remained 32-bit so far
because despite the fact that we've had routinely to deal with >32-bit
physical addresses for MMIO, physical memory support has been
constrained afaik to 32-bit.

We might be better off keeping this as something individual platforms
can select...

Cheers,
Ben.
FUJITA Tomonori - Oct. 2, 2010, 10:11 a.m.
On Sat, 02 Oct 2010 13:20:54 +1000
Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:

> On Fri, 2010-10-01 at 21:31 -0400, Josh Boyer wrote:
> > > +config ARCH_DMA_ADDR_T_64BIT
> > > +       def_bool ARCH_PHYS_ADDR_T_64BIT
> > > +
> > 
> > I seemed to have missed what this is about entirely.  Is there some
> > place I can look that describes what that is supposed to do?  The PPC

This patchset unifies dma_addr_t typedef.

> > 4xx boards set PHYS_ADDR_T_64BIT because the MMU uses 36 bit
> > addressing, but the CPU is only 32 bits.  I want to make sure this DMA
> > thing isn't going to cause problems. 

this patchset changes nothing. Please see below.


> Yes, we need to test a bit. Our dma_addr_t has remained 32-bit so far
> because despite the fact that we've had routinely to deal with >32-bit
> physical addresses for MMIO, physical memory support has been
> constrained afaik to 32-bit.

Really?

The current dma_addr_t is:

#if defined(__powerpc64__) || defined(CONFIG_PHYS_64BIT)
typedef u64 dma_addr_t;
#else
typedef u32 dma_addr_t;
#endif
typedef u64 dma64_addr_t;


I think that this patch doesn't change anything. Or I miss something?

@@ -22,6 +22,9 @@ config WORD_SIZE
 config ARCH_PHYS_ADDR_T_64BIT
        def_bool PPC64 || PHYS_64BIT

+config ARCH_DMA_ADDR_T_64BIT
+       def_bool ARCH_PHYS_ADDR_T_64BIT
+
 config MMU
        bool
        default y
Benjamin Herrenschmidt - Oct. 3, 2010, 6:20 a.m.
> Really?
> 
> The current dma_addr_t is:
> 
> #if defined(__powerpc64__) || defined(CONFIG_PHYS_64BIT)
> typedef u64 dma_addr_t;
> #else
> typedef u32 dma_addr_t;
> #endif
> typedef u64 dma64_addr_t;

-EBRAINFAI ... either I wasn't looking when we changed it or I just
forgot :-) We -used-, I'm pretty sure, to have it always 32-bit :-)

Anyways, doesn't matter. Patch looks good. We can always tweak the
config option if we want to later.

Cheers,
Ben.

> 
> I think that this patch doesn't change anything. Or I miss something?
> 
> @@ -22,6 +22,9 @@ config WORD_SIZE
>  config ARCH_PHYS_ADDR_T_64BIT
>         def_bool PPC64 || PHYS_64BIT
> 
> +config ARCH_DMA_ADDR_T_64BIT
> +       def_bool ARCH_PHYS_ADDR_T_64BIT
> +
>  config MMU
>         bool
>         default y

Patch

diff -puN arch/powerpc/Kconfig~powerpc-enable-arch_dma_addr_t_64bit-with-arch_phys_addr_t_64bit arch/powerpc/Kconfig
--- a/arch/powerpc/Kconfig~powerpc-enable-arch_dma_addr_t_64bit-with-arch_phys_addr_t_64bit
+++ a/arch/powerpc/Kconfig
@@ -16,6 +16,9 @@  config WORD_SIZE
 config ARCH_PHYS_ADDR_T_64BIT
        def_bool PPC64 || PHYS_64BIT
 
+config ARCH_DMA_ADDR_T_64BIT
+	def_bool ARCH_PHYS_ADDR_T_64BIT
+
 config MMU
 	bool
 	default y