On 04/06/2016 11:29 AM, Andrea Bolognani wrote: > On Wed, 2016-03-30 at 16:29 -0400, John Ferlan wrote: >> On 03/21/2016 01:28 PM, Andrea Bolognani wrote: >>> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c >>> index 64007f0..23c3740 100644 >>> --- a/src/qemu/qemu_capabilities.c >>> +++ b/src/qemu/qemu_capabilities.c >>> @@ -2906,6 +2906,77 @@ virQEMUCapsLoadCache(virQEMUCapsPtr qemuCaps, const char *filename, >>> } >>> VIR_FREE(nodes); >>> >>> + if ((n = virXPathNodeSet("./gic", ctxt, &nodes)) < 0) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("failed to parse qemu capabilities gic")); >>> + goto cleanup; >>> + } >>> + if (n > 0) { >>> + unsigned int uintValue; >>> + bool boolValue; >>> + >>> + qemuCaps->ngicCapabilities = n; >>> + if (VIR_ALLOC_N(qemuCaps->gicCapabilities, n) < 0) >>> + goto cleanup; >>> + >>> + for (i = 0; i < n; i++) { >>> + virGICCapabilityPtr cap = &qemuCaps->gicCapabilities[i]; >>> + >>> + if (!(str = virXMLPropString(nodes[i], "version"))) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("missing GIC version " >>> + "in QEMU capabilities cache")); >>> + goto cleanup; >>> + } >>> + if (str && >>> + virStrToLong_ui(str, NULL, 10, &uintValue) < 0) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("malformed GIC version " >>> + "in QEMU capabilities cache")); >>> + goto cleanup; >>> + } >>> + cap->version = uintValue; >>> + VIR_FREE(str); >>> + >>> + if (!(str = virXMLPropString(nodes[i], "kernel"))) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("missing in-kernel GIC information " >>> + "in QEMU capabilities cache")); >>> + goto cleanup; >>> + } >>> + if (str && >>> + !(boolValue = STREQ(str, "true")) && >>> + STRNEQ(str, "false")) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("malformed in-kernel GIC information " >>> + "in QEMU capabilities cache")); >>> + goto cleanup; >>> + } >>> + if (boolValue) >>> + cap->implementation |= VIR_GIC_IMPLEMENTATION_KERNEL; >>> + VIR_FREE(str); >>> + >>> + if (!(str = virXMLPropString(nodes[i], "emulated"))) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("missing emulated GIC information " >>> + "in QEMU capabilities cache")); >>> + goto cleanup; >>> + } >>> + if (str && >>> + !(boolValue = STREQ(str, "true")) && >>> + STRNEQ(str, "false")) { >>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", >>> + _("malformed emulated GIC information " >>> + "in QEMU capabilities cache")); >>> + goto cleanup; >>> + } >>> + if (boolValue) >>> + cap->implementation |= VIR_GIC_IMPLEMENTATION_EMULATED; >> >> Since these are processed as either/or in patch 5 based on virttype, I'm >> beginning to think perhaps you'd have : >> >> <gic version='#' type='{kernel|emulated}'/> >> >> but this works, I'm still trying to process the whole domaincaps code >> and what the use case would be. It looks like merely the output to >> domcapabilities. In which case, I'm wonder if printing the gic_version >> inside <arch> would be sufficient. > > I believe all of these were addressed in my previous comments. > > Let me know if that was actually not the case :) I tried going through the patches and the comments but it was a bit hard to follow, there was quite a few points/counterpoints :) Andrea can you send a v2 addressing the obvious bits that John pointed out, and anything you're still unsure of/disagreed with just highlight in v2 comments? Thanks, Cole -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list