From 6af47df5ac76e683f3366017561d865ee359a0fa Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 8 Mar 2023 18:14:03 +0100 Subject: [PATCH] virQEMUCapsProbeHVF: Factor out setting of the capability MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Separate the architecture specific code to probe the support for HVF from the actual setting of the capability. In upcoming patches 'virQEMUCapsProbeHVF' will be mocked in the testsuite to provide testing for the HVF hypervisor. Signed-off-by: Peter Krempa Reviewed-by: Martin Kletzander Reviewed-by: Ján Tomko --- src/qemu/qemu_capabilities.c | 19 ++++++++----------- src/qemu/qemu_capabilities.h | 3 ++- tests/domaincapsmock.c | 4 ++-- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c5f144d20a..6244dca6dc 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3339,7 +3339,7 @@ virQEMUCapsProbeQMPKVMState(virQEMUCaps *qemuCaps, } #ifdef __APPLE__ -int +bool virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) { int hv_support = 0; @@ -3349,22 +3349,19 @@ virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) /* Guest and host arch need to match for hardware acceleration * to be usable */ if (qemuCaps->arch != hostArch) - return 0; + return false; /* We need the OS to report Hypervisor.framework availability */ if (sysctlbyname("kern.hv_support", &hv_support, &len, NULL, 0) < 0) - return 0; + return false; - if (hv_support) - virQEMUCapsSet(qemuCaps, QEMU_CAPS_HVF); - - return 0; + return !!hv_support; } #else -int +bool virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps G_GNUC_UNUSED) { - return 0; + return false; } #endif @@ -5626,8 +5623,8 @@ virQEMUCapsInitQMPMonitor(virQEMUCaps *qemuCaps, if (virQEMUCapsProbeQMPKVMState(qemuCaps, mon) < 0) return -1; - if (virQEMUCapsProbeHVF(qemuCaps) < 0) - return -1; + if (virQEMUCapsProbeHVF(qemuCaps)) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_HVF); type = virQEMUCapsGetVirtType(qemuCaps); accel = virQEMUCapsGetAccel(qemuCaps, type); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c4f1708639..15f0df5317 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -887,7 +887,8 @@ virQEMUCapsGetSGXCapabilities(virQEMUCaps *qemuCaps); bool virQEMUCapsGetKVMSupportsSecureGuest(virQEMUCaps *qemuCaps) G_NO_INLINE; -int virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) G_NO_INLINE; +bool +virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps) G_NO_INLINE; virArch virQEMUCapsArchFromString(const char *arch); const char *virQEMUCapsArchToString(virArch arch); diff --git a/tests/domaincapsmock.c b/tests/domaincapsmock.c index 4d53e48c48..8f27eeb3a1 100644 --- a/tests/domaincapsmock.c +++ b/tests/domaincapsmock.c @@ -52,10 +52,10 @@ virQEMUCapsGetKVMSupportsSecureGuest(virQEMUCaps *qemuCaps) return real_virQEMUCapsGetKVMSupportsSecureGuest(qemuCaps); } -int +bool virQEMUCapsProbeHVF(virQEMUCaps *qemuCaps G_GNUC_UNUSED) { - return 0; + return false; } #endif