improve interface boundary for bhyve ins/outs
While #12989 notes that in/out emulation is more straight forward than MMIO, due to the decoding acceleration present in SVM and VMX, it is still not entirely without challenges for userspace. For what I assume are "performance reasons", the more complicated ins/outs instructions have somewhat substantial userspace emulation demands. As it's not unreasonable to use those instructions with a
rep prefix, the original authors of the emulation may have been trying to avoid repeated round trips out to userspace to drive the state forward. That said, actual usage of
rep outs seems extremely niche for modern OSes and workloads, making it less appealing to push the complexity of repetition to userspace, rather than keeping the exits simple (
out to a single port) and driving the repetition in-kernel. This dovetails nicely into the virtual instruction emulation work for #12989, which also needs a way to drive multi-part instruction emulation contexts with device emulation requests in userspace.