Subject: Re: __pa giving strange phys address on PPC

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 08 Jan 2009 09:27:59 +1100

On Wed, 2009-01-07 at 21:59 +0100, [email-masked] wrote:
> Hi all,
> 
> I'm using a linux 2.6.19 (from Denx ELDK) on a PPC MPC880. In a driver
> (that uses TDM channels) I have some calls to __pa to get the physical
> address corresponding to a virtual address. The physical address
> returned by __pa is higher than the maximum physical memory I have on
> the board. This result make my driver hang. The driver I'm trying to
> use was written for a 2.4 kernel and I'm wondering if I have to
> replace the calls to __pa with some other API/MACRO.

__pa can only be used on memory coming from the kernel linear mapping.

You probably need to change your driver to use the proper DMA mapping
APIs instead

Cheers,
Ben.