PS3 livelock and pmap_remove()

Nathan Whitehorn nwhitehorn at freebsd.org
Tue Sep 7 01:22:44 UTC 2010


Now that my SLB allocation issue is solved, with help with Matthew and
Alan, I have another VM puzzler.

I have a simple program that tries to use all the memory on the system,
which isn't very much on the PS3, so I use it to test swap as well.
Shortly after it begins paging, the system locks up completely. I
managed to duplicate this behavior on an emulator, and found out what it
is actually doing. Somehow pmap_remove() is being called with arguments
pmap_remove(userpmap, PAGE_SIZE, VM_MAXUSER_ADDRESS = USRSTACK). For
powerpc64, VM_MAXUSER_ADDRESS is 0x7ffffffffffff000, so there are 10^15
pages to unmap in that range and it was busy taking until the end of
time unmapping them all.

Here's the trace from KDB:

moea64_remove()
pmap_remove()
vm_daemon()
fork_exit()
fork_trampoline()
----end-----

Does anyone have any idea why this is happening?

Thanks,
-Nathan


More information about the freebsd-hackers mailing list