MFC r352847,352930,354585
Eliminate redundant calls to critical_enter() and critical_exit() from pmap_update_entry(). It suffices that interrupts are blocked. In short, pmap_enter_quick_locked("user space", ..., VM_PROT_READ) doesn't work. More precisely, it doesn't set ATTR_AP(ATTR_AP_USER) in the page table entry, so any attempt to read from the mapped page by user space generates a page fault. This problem has gone unnoticed because the page fault handler, vm_fault(), will ultimately call pmap_enter(), which replaces the non-working page table entry with one that has ATTR_AP(ATTR_AP_USER) set. This change reduces the number of page faults during a "buildworld" by about 19.4%. Eliminate a redundant pmap_load() from pmap_remove_pages(). There is no reason why the pmap_invalidate_all() in pmap_remove_pages() must be performed before the final PV list lock release. Move it past the lock release. Eliminate a stale comment from pmap_page_test_mappings(). We implemented a modified bit in r350004.