summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_fault.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2011-09-28 14:57:50 +0000
committerkib <kib@FreeBSD.org>2011-09-28 14:57:50 +0000
commite84b0ecd819abddadeed97fa141468b674261293 (patch)
tree6a5296fc970ddac679f37c4f859ef750f1173a7e /sys/vm/vm_fault.c
parent3a1a19715027c5c03af47ff8d3ce06461e3b4d65 (diff)
downloadFreeBSD-src-e84b0ecd819abddadeed97fa141468b674261293.zip
FreeBSD-src-e84b0ecd819abddadeed97fa141468b674261293.tar.gz
Use the trick of performing the atomic operation on the contained aligned
word to handle the dirty mask updates in vm_page_clear_dirty_mask(). Remove the vm page queue lock around vm_page_dirty() call in vm_fault_hold() the sole purpose of which was to protect dirty on architectures which does not provide short or byte-wide atomics. Reviewed by: alc, attilio Tested by: flo (sparc64) MFC after: 2 weeks
Diffstat (limited to 'sys/vm/vm_fault.c')
-rw-r--r--sys/vm/vm_fault.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 1b8ac2f..8c98b26 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -1090,18 +1090,10 @@ vm_fault_quick_hold_pages(vm_map_t map, vm_offset_t addr, vm_size_t len,
* performed through an unmanaged mapping or by a DMA
* operation.
*
- * The object lock is not held here. Therefore, like
- * a pmap operation, the page queues lock may be
- * required in order to call vm_page_dirty(). See
- * vm_page_clear_dirty_mask().
+ * The object lock is not held here.
+ * See vm_page_clear_dirty_mask().
*/
-#if defined(__amd64__) || defined(__i386__) || defined(__ia64__)
vm_page_dirty(*mp);
-#else
- vm_page_lock_queues();
- vm_page_dirty(*mp);
- vm_page_unlock_queues();
-#endif
}
}
if (pmap_failed) {
OpenPOWER on IntegriCloud