Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 06 Sep 2010 20:22:41 -0500
From:      Nathan Whitehorn <nwhitehorn@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   PS3 livelock and pmap_remove()
Message-ID:  <4C8593E1.5080000@freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C8593E1.5080000>