MPC8260 strange virtual addresses returned by kmalloc()

Laurent Lagrange lagrange at
Thu Jan 6 00:38:12 EST 2005

Hi and Happy New Year to all,

I use a Linux 2.4.25 kernel on a MPC8260 custom board with 128MB of RAM.
PCI is activated and my drivers are loaded as modules.
The RAM is mapped at 0xC0000000 as usual.

On MPC8XX I used kmalloc and iopa to get the physical addresses of the
allocated buffers.
On MPC82XX I used kmalloc and __pa for the same thing and it worked fine
with previous kernel.

But now, when I want to use kmalloc, I get addresses like 0xC9xxxxxx.
The __pa gives me physical addresses 0x09xxxxxx which are out of my physical
I tried old iopa function and got some real physical addresses and the
module works.
The virt_to_bus gives me too addresses like  0x09xxxxxx
(ie substract kernel base address 0xC0000000 as usual).

I don't understand why I get virtual addresses which seem to be out of my
memory and why it runs.

More, I have a global variable which is a little buffer. It is also mapped
at a 0xC9xxxxxx address.

Has anyone an idea or a link to a detailed howto ?


PS : Linux console informations about memory.

Memory BAT mapping: BAT2=128Mb, BAT3=0Mb, residual: 0Mb
Linux version 2.4.25 (version gcc 3.2.3)
On node 0 totalpages: 32768
zone(0): 32768 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Memory: 127008k available (948k kernel code, 296k data, 60k init, 0k
Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
Inode cache hash table entries: 8192 (order: 4, 65536 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 8192 (order: 3, 32768 bytes)
Page-cache hash table entries: 32768 (order: 5, 131072 bytes)
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Linuxppc-embedded mailing list