The prior implementation of VM_PAGE_TO_PV_LIST_LOCK() performed a linear-time search of the vm_phys_segs[] array. However, in contrast to PHYS_TO_PV_LIST_LOCK(), that search is unnecessary because every (non-fictitious) vm_page contains the index of the vm_phys_seg in which it resides.
Change most of the remaining uses of CHANGE_PV_LIST_LOCK_TO_PHYS() and PHYS_TO_PV_LIST_LOCK() to CHANGE_PV_LIST_LOCK_TO_VM_PAGE() and VM_PAGE_TO_PV_LIST_LOCK(), respectively.
Collectively, these changes reduce the size of a GENERIC-NODEBUG kernel's pmap.
Before:
text data bss dec hex filename 70144 3200 2248 75592 0x12748 pmap.o
After:
text data bss dec hex filename 69192 3200 2248 74640 0x12390 pmap.o