This adds missing support to the vmap function to respect what the user
requested via the prot argument. This matches what we do for
linuxkpi_vmap_pfn. We create a memattr from the passed in prot and apply
it to all mapped pages. This also updates vunmap to clear any
non-default memattrs that are set before we return the page to the
vm_page allocator.
We hit this in the wild with drm-kmod, specifically when the i915 driver
tries to initialize firmware. The firmware is supposed to be mapped as
write combined but doesn't due to us not honoring prot, which goes on to
fail due to the memory not being visible to the GPU properly.