mapping memory in 0xb space

Igor Grobman igor at cs.wisc.edu
Tue Sep 28 05:47:15 EST 2004


I would like to be able to remap memory into 0xb space with 2.4.21 kernel.
I have code that works fine on power3 box, but fails miserably on my dual
power4+ box.  I am using btmalloc() from pmc.c with a modified range.
Normal btmalloc() allocation works fine, but if I change the range to
start with, e.g. 0xb00001FFFFF00000 (instead of 0xb00..), the kernel
crashes when accessing the allocated page.

For those of you unfamiliar with btmalloc() code, it finds a physical page
using get_free_pages(), subtracts PAGE_OFFSET (i.e. 0xc00...) to form a
physical address, then inserts the page into linux page tables, using the
VSID calculated with get_kernel_vsid() and the physical address
calculated above.  It also inserts an HPTE into the hardware page table.
It doesn't do anything with regards to allocating segments.  I understand
the segments should be faulted in.  I looked at the code in head.S, and it
appears that do_stab_bolted should be doing this.  Yet, I am missing something,
because the btmalloc() code does not in fact work for pages in the range I
specified above.

I am running this on 7029-6E3 (p615?) machine with two power4+ processors.
I am using the kernel from Suse's 2.4.21-215 source package.

Any ideas and attempts to un-confuse me are welcome.

Thanks,
Igor



More information about the Linuxppc64-dev mailing list