85f5b24573
In such cases, the busying of the page and the unlocking of the containing object by vm_map_pmap_enter() and vm_fault_prefault() is unnecessary overhead. To eliminate this overhead, this change modifies pmap_enter_quick() so that it expects the object to be locked on entry and it assumes the responsibility for busying the page and unlocking the object if it must sleep. Note: alpha, amd64, i386 and ia64 are the only implementations optimized by this change; arm, powerpc, and sparc64 still conservatively busy the page and unlock the object within every pmap_enter_quick() call. Additionally, this change is the first case where we synchronize access to the page's PG_BUSY flag and busy field using the containing object's lock rather than the global page queues lock. (Modifications to the page's PG_BUSY flag and busy field have asserted both locks for several weeks, enabling an incremental transition.) |
||
---|---|---|
.. | ||
clock.c | ||
copyinout.c | ||
interrupt.c | ||
locore.S | ||
machdep.c | ||
mmu_oea.c | ||
nexus.c | ||
ofw_machdep.c | ||
ofwmagic.S | ||
swtch.S | ||
trap_subr.S | ||
trap.c | ||
uio_machdep.c | ||
uma_machdep.c | ||
vm_machdep.c |