Moves the LinuxKPI virtio layer from drm-kmod (freebsd/drm-kmod#517) into base as linuxkpi_virtio.ko, laid out like linuxkpi_video.ko. It runs Linux virtio drivers over virtio(4)/virtqueue(9) the way linux_pci.c runs PCI drivers. drm-kmod's virtio-gpu is the first user.
- register_virtio_driver() adds a newbus driver under virtio_pci; MODULE_DEVICE_TABLE() provides PNP info for devmatch(8).
- virtqueue(9) has no locking of its own, so the device is notified in virtqueue_kick_prepare(), under the driver's queue lock.
- As in linux_pci, detach returns EBUSY while the parent device is still referenced.
Differences from Linux: drivers call virtio_device_ready() and, under MSI-X, re-arm with virtqueue_enable_cb(); a config change during probe is dropped; a request is capped at VIRTIO_MAX_INDIRECT segments, so large buffers come from lkpi_virtqueue_kvmalloc() or lkpi_virtqueue_memdup_user(), which keep them contiguous.