Add XIP flag and globally enable it on this branch.
Make vm_physseg::lastpg exclusive end.
Make vm_physseg lookup into a real function.
Abstract vm_physseg_find() to handle struct vm_page *.
Bump date for previous.
Kill vm_page::phys_addr.
Merge vm_physseg lookup routines.
vm_nphysseg -> vm_nphysmem
Define vm_physdev / vm_nphysdev, physical address segment data for managed
device pages.
Implement device page struct vm_page * handling.
Give new funcs better names.
Make device page handling another kernel option.  XIP depends on it.
Initial MD per-page data (struct vm_page_md) lookup code for XIP'able device
pages.  Compile tested only.

Always define uvm_pageisdevice_p().  Always false if kernel is !DEVICE_PAGE.
Initial attempt to implement uvm_pageofzero_xip(), which returns a pointer
to a single read-only zeroed page.  This is meant to be used for XIP now.
Only compile tested.
Start changing this to be ready for device page (XIP).  The basic rule is
device pages don't have struct vm_page * objects.  Instead per-page data
(mainly PV mappings) is rooted from the global struct vm_page_md array.

Convert 2 functions to take struct vm_page_md * instead of struct vm_page *.
Convert pmap_remove_pv() / pmap_modify_pv() to take struct vm_page_md *.
Convert pmap_enter_pv().
Convert pmap_enter() and pmap_vac_me_harder().
Introduce VM_PAGE_TO_MD(); lookup vm_page_md from a given vm_page.
Oops fix a typo.  (My lapdog's k/b is dying.)