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