From: Roman Bolshakov <r.bolshakov(a)yadro.com>
QEMU supports Hypervisor.framework since 2.12 as hvf accel.
Hypervisor.framework provides a lightweight interface to run a virtual
cpu on macOS without the need to install third-party kernel
extensions (KEXTs).
It's supported since macOS 10.10 on machines with Intel VT-x feature
set that includes Extended Page Tables (EPT) and Unrestricted Mode.
Signed-off-by: Roman Bolshakov <r.bolshakov(a)yadro.com>
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
Tested-by: Brad Laue <brad(a)brad-x.com>
Tested-by: Christophe Fergeau <cfergeau(a)redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/formatdomain.rst | 3 ++-
docs/schemas/domaincommon.rng | 1 +
src/conf/domain_conf.c | 1 +
src/conf/domain_conf.h | 1 +
src/qemu/qemu_command.c | 4 ++++
5 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index acd9020830..477e775229 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -20,7 +20,8 @@ Element and attribute overview
The root element required for all virtual machines is named ``domain``. It has
two attributes, the ``type`` specifies the hypervisor used for running the
-domain. The allowed values are driver specific, but include "xen",
"kvm", "qemu"
+domain. The allowed values are driver specific, but include "xen",
"kvm",
+"hvf" (:since:`since 8.0.0 and QEMU 2.12`), "qemu"
and "lxc". The second attribute is ``id`` which is a unique integer identifier
for the running guest machine. Inactive machines have no id value.
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 169b8d8dee..64a797de46 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -230,6 +230,7 @@
<value>phyp</value> <!-- NOT USED ANYMORE -->
<value>vz</value>
<value>bhyve</value>
+ <value>hvf</value>
</choice>
</attribute>
</define>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b39136119f..f5b15cff33 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -125,6 +125,7 @@ VIR_ENUM_IMPL(virDomainVirt,
"parallels",
"bhyve",
"vz",
+ "hvf",
);
VIR_ENUM_IMPL(virDomainOS,
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 3e63d2513b..7770badf5b 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -139,6 +139,7 @@ typedef enum {
VIR_DOMAIN_VIRT_PARALLELS,
VIR_DOMAIN_VIRT_BHYVE,
VIR_DOMAIN_VIRT_VZ,
+ VIR_DOMAIN_VIRT_HVF,
VIR_DOMAIN_VIRT_LAST
} virDomainVirtType;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 662d15e28e..ecc28f15b2 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7215,6 +7215,10 @@ qemuBuildAccelCommandLine(virCommand *cmd,
}
break;
+ case VIR_DOMAIN_VIRT_HVF:
+ virBufferAddLit(&buf, "hvf");
+ break;
+
case VIR_DOMAIN_VIRT_KQEMU:
case VIR_DOMAIN_VIRT_XEN:
case VIR_DOMAIN_VIRT_LXC:
--
2.34.1