Not exactly, but close. In the qemu capabilities code, there is a variable called "is_kvm" that is only set if it finds the string "(qemu-kvm-" or "(kvm-" in the help output. It seems to me that this used to be used for a lot more things, but when I look now I see that it's used for very few things (maybe a result of the capabilities code refactoring, or maybe my memory is faulty :-). However, one of the things still in place is that QEMU_CAPS_VNET_HOST isn't set unless is_kvm is true.
I believe this dependency on is_kvm is there because someone said that the feature was only in kvm, but retrospectively that doesn't make sense. Can you try building with the following patch, and see if that works?
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index ea55df5..71a54a5 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -982,7 +982,7 @@ qemuCapsComputeCmdFlags(const char *help,
if (is_kvm && (version >= 10000 || kvm_version >= 74))
qemuCapsSet(flags, QEMU_CAPS_VNET_HDR);
- if (is_kvm && strstr(help, ",vhost=")) {
+ if (strstr(help, ",vhost=")) {
qemuCapsSet(flags, QEMU_CAPS_VNET_HOST);
}