Subject: Re: Re[6]: [PATCH] katmai.dts: extend DMA ranges; add dma/sysace nodes

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 27 Nov 2008 15:07:41 +1100

> > Strange... when I look at pci4xx_parse_dma_ranges() I see it
> > specifically avoiding PCI addresses above 4G ... That needs fixing.
> 
>  Right, it avoid. I guess you haven't read my e-mail to its end, 
> because my work-around patch, which I referenced there, fixes this :)

Ooops, I though I did :-)

>  Sure. The problem here is that the LSI (the PCI device I want to DMA 
> to/from 1TB PCI addresses) driver doesn't work with this (i.e. it's 
> broken in, e.g., 2.6.28-rc6) on ppc440spe-based platform. It looks 
> like there is no support for 32-bit CPUs with 64-bit physical 
> addresses in the LSI driver. E.g. the following mix in the 
> drivers/message/fusion/mptbase.h code points to the fact that the 
> driver supposes 64-bit dma_addr_t on 64-bit CPUs only:
> 
> #ifdef CONFIG_64BIT
> #define CAST_U32_TO_PTR(x)      ((void *)(u64)x)
> #define CAST_PTR_TO_U32(x)      ((u32)(u64)x)
> #else
> #define CAST_U32_TO_PTR(x)      ((void *)x)
> #define CAST_PTR_TO_U32(x)      ((u32)x)
> #endif
> 
> 
> #define mpt_addr_size() \
>         ((sizeof(dma_addr_t) == sizeof(u64)) ? MPI_SGE_FLAGS_64_BIT_ADDRESSING : \
>                 MPI_SGE_FLAGS_32_BIT_ADDRESSING)
> 

So far I don't see anything in this that hints about that brokenness...
not that it's not there, but the above macros seem unrelated.

Cheers,
Ben.

>  Regards, Yuri
> 
>  --
>  Yuri Tikhonov, Senior Software Engineer
>  Emcraft Systems, www.emcraft.com