DragonFly commits List (threaded) for 2012-08
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]
git: kernel - Attempt to fix i386 wire_count panic
commit 2bb9cc6fdf20935fe2e3dfbfedc4eb353034b935
Author: Matthew Dillon <dillon@apollo.backplane.com>
Date: Tue Aug 21 22:15:47 2012 -0700
kernel - Attempt to fix i386 wire_count panic
* Finally found what could be the issue. get_pv_entry() calls zalloc()
which can fall through to zget() which obtains a zalloc-related LWKT
token.
This can temporarily break the vm_token and allow another thread to get
in and change the pmap pte entry out from under a pmap_enter(), causing
the pmap_enter() to potentially remove an extra wire_count from the
page table page.
* Fix by pre-allocating the pv entry, taking it out of the critical path,
and adjusting a few other bits of code to test the *pte closer to
the code which replaces it for the purposes of adjusting the wire_count.
Summary of changes:
sys/platform/pc32/i386/pmap.c | 105 +++++++++++++++++++++++---------
sys/platform/pc32/include/globaldata.h | 4 +-
2 files changed, 78 insertions(+), 31 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/2bb9cc6fdf20935fe2e3dfbfedc4eb353034b935
--
DragonFly BSD source repository
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
[
Date Index][
Thread Index]