Add VM_BIND_MEMSEG, allowing userspace to bind an existing sealed shared-memory
object to a VMM memory segment. Expose the operation through libvmmapi as
vm_bind_devmem(). The current implementation accepts sealed shm objects only,
but the interface can be extended to other backing-object types.
By decoupling devmem allocation from the VMM, this lets bhyve use userspace
memory-sharing and acceleration mechanisms. For example, bhyve can create a
framebuffer from a memfd, bind it as devmem, and export it as a dmabuf through
udmabuf for zero-copy display.
This is the first step toward using my GSoC udmabuf work to improve bhyve's
local display path. I intend to follow it with a D-Bus backend for fbuf, and
later investigate vhost-user-gpu with D-Bus display, bringing newer virtual
graphics paths to bhyve without GPL code in base.
This revision can hang until the D-Bus backend is implemented, since the API
currently has no users.