[Cbe-oss-dev] lv1_insert_htab_entry() hanging

Nathan Whitehorn nwhitehorn at freebsd.org
Tue Mar 30 16:58:23 EST 2010


Although it may be a bit poorly timed at this point, I'm working on 
porting FreeBSD to the PS3, and am trying to get the MMU up in the boot 
loader. I have run into an incomprehensible and difficult-to-debug 
problem that I thought people on this might be able to help with.

My MMU startup procedure goes as follows:
lv1_construct_virtual_address_space(256 KB, large pages) => returns 
success, and sets the size of the page table correctly
lv1_select_virtual_address_space(value from before) => returns success
for largepage in physmem {
    lv1_insert_htab_entry(0, pte group * 8, pte high word, pte low word, 
0x08 (bolted PTEs for us), 0)
}

But the hypercall for lv1_insert_htab_entry never returns on the first 
run of that loop, and the PS3 spins inside of it forever. If I 
deliberately provide invalid inputs, it returns with 
LV1_ILLEGAL_PARAMETER_VALUE, as expected. Does anyone have any ideas why 
this might be happening?

For reference, the code is here:
http://svn.freebsd.org/viewvc/base/projects/ppc64/sys/boot/powerpc/ps3/

And a built binary for those with more advanced tools can be found here:
http://people.freebsd.org/~nwhitehorn/loader.ps3
-Nathan


More information about the cbe-oss-dev mailing list