[libvirt] [PATCH v2 1/5] qemu: Add virQEMUCapsSupportsGICVersion()
John Ferlan
jferlan at redhat.com
Tue May 17 20:09:45 UTC 2016
On 05/16/2016 06:00 PM, Andrea Bolognani wrote:
> This utility function extracts some of the logic from
> virQEMUCapsFillDomainFeatureGICCaps() so that it can be used
> in a different context.
> ---
> src/qemu/qemu_capabilities.c | 62 ++++++++++++++++++++++++++++++++++++--------
> src/qemu/qemu_capabilities.h | 4 +++
> 2 files changed, 55 insertions(+), 11 deletions(-)
>
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index fcfd1cd..9055bf9 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -4258,6 +4258,49 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCapsPtr qemuCaps,
>
>
> /**
> + * virQEMUCapsSupportsGICVersion:
> + * @qemuCaps: QEMU capabilities
> + * @virtType: domain type
> + * @version: GIC version
> + *
> + * Checks the QEMU binary with capabilities @qemuCaps supports a specific
> + * GIC version for a domain of type @virtType.
> + *
> + * Returns: true if the binary supports the requested GIC version, false
> + * otherwise
> + */
> +bool
> +virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuCaps,
> + virDomainVirtType virtType,
> + virGICVersion version)
> +{
> + size_t i;
> + bool ret = false;
remove
> +
> + for (i = 0; i < qemuCaps->ngicCapabilities; i++) {
> + virGICCapabilityPtr cap = &(qemuCaps->gicCapabilities[i]);
> +
> + if (cap->version != version)
> + continue;
> +
> + if (virtType == VIR_DOMAIN_VIRT_KVM &&
> + cap->implementation & VIR_GIC_IMPLEMENTATION_KERNEL) {
> + ret = true;
Just return true (no need for {} either)
> + break;
> + }
> +
> + if (virtType == VIR_DOMAIN_VIRT_QEMU &&
> + cap->implementation & VIR_GIC_IMPLEMENTATION_EMULATED) {
> + ret = true;
Same here
> + break;
> + }
> + }
> +
> + return ret;
return false
ACK w/ those adjustments
John
> +}
> +
> +
> +/**
> * virQEMUCapsFillDomainFeatureGICCaps:
> * @qemuCaps: QEMU capabilities
> * @domCaps: domain capabilities
> @@ -4281,7 +4324,7 @@ virQEMUCapsFillDomainFeatureGICCaps(virQEMUCapsPtr qemuCaps,
> virDomainCapsPtr domCaps)
> {
> virDomainCapsFeatureGICPtr gic = &domCaps->gic;
> - size_t i;
> + virGICVersion version;
>
> if (domCaps->arch != VIR_ARCH_ARMV7L &&
> domCaps->arch != VIR_ARCH_AARCH64)
> @@ -4291,20 +4334,17 @@ virQEMUCapsFillDomainFeatureGICCaps(virQEMUCapsPtr qemuCaps,
> !STRPREFIX(domCaps->machine, "virt-"))
> return 0;
>
> - for (i = 0; i < qemuCaps->ngicCapabilities; i++) {
> - virGICCapabilityPtr cap = &qemuCaps->gicCapabilities[i];
> -
> - if (domCaps->virttype == VIR_DOMAIN_VIRT_KVM &&
> - !(cap->implementation & VIR_GIC_IMPLEMENTATION_KERNEL))
> - continue;
> -
> - if (domCaps->virttype == VIR_DOMAIN_VIRT_QEMU &&
> - !(cap->implementation & VIR_GIC_IMPLEMENTATION_EMULATED))
> + for (version = VIR_GIC_VERSION_LAST - 1;
> + version > VIR_GIC_VERSION_NONE;
> + version--) {
> + if (!virQEMUCapsSupportsGICVersion(qemuCaps,
> + domCaps->virttype,
> + version))
> continue;
>
> gic->supported = true;
> VIR_DOMAIN_CAPS_ENUM_SET(gic->version,
> - cap->version);
> + version);
> }
>
> return 0;
> diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
> index e7d0a60..fef78b7 100644
> --- a/src/qemu/qemu_capabilities.h
> +++ b/src/qemu/qemu_capabilities.h
> @@ -462,6 +462,10 @@ bool virQEMUCapsSupportsChardev(const virDomainDef *def,
> virQEMUCapsPtr qemuCaps,
> virDomainChrDefPtr chr);
>
> +bool virQEMUCapsSupportsGICVersion(virQEMUCapsPtr qemuCaps,
> + virDomainVirtType virtType,
> + virGICVersion version);
> +
> bool virQEMUCapsIsMachineSupported(virQEMUCapsPtr qemuCaps,
> const char *canonical_machine);
>
>
More information about the libvir-list
mailing list