At 01/14/2011 03:10 AM, Eric Blake Write: > * src/qemu/qemu_capabilities.h (qemuCapsParseDeviceStr): New > prototype. > * src/qemu/qemu_capabilities.c (qemuCapsParsePCIDeviceStrs) > Rename and split... > (qemuCapsExtractDeviceStr, qemuCapsParseDeviceStr): ...to make it > easier to add and test device-specific checks. > (qemuCapsExtractVersionInfo): Update caller. > * tests/qemuhelptest.c (testHelpStrParsing): Also test parsing of > device-related flags. > (mymain): Update expected flags. > * tests/qemuhelpdata/qemu-0.12.1-device: New file. > * tests/qemuhelpdata/qemu-kvm-0.12.1.2-rhel60-device: New file. > * tests/qemuhelpdata/qemu-kvm-0.12.3-device: New file. > * tests/qemuhelpdata/qemu-kvm-0.13.0-device: New file. > --- > src/qemu/qemu_capabilities.c | 41 ++++++++--- > src/qemu/qemu_capabilities.h | 2 + > tests/qemuhelpdata/qemu-kvm-0.12.1.2-rhel60-device | 57 ++++++++++++++++ > tests/qemuhelpdata/qemu-kvm-0.13.0-device | 70 ++++++++++++++++++++ > tests/qemuhelptest.c | 48 ++++++++++---- > 5 files changed, 195 insertions(+), 23 deletions(-) > create mode 100644 tests/qemuhelpdata/qemu-0.12.1-device > create mode 100644 tests/qemuhelpdata/qemu-kvm-0.12.1.2-rhel60-device > create mode 100644 tests/qemuhelpdata/qemu-kvm-0.12.3-device > create mode 100644 tests/qemuhelpdata/qemu-kvm-0.13.0-device > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index 9bab317..f967255 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -1032,28 +1032,46 @@ fail: > return -1; > } > > -static void > -qemuCapsParsePCIDeviceStrs(const char *qemu, > - unsigned long long *flags) > +static int > +qemuCapsExtractDeviceStr(const char *qemu, > + unsigned long long *flags) > { > - char *pciassign = NULL; > + char *output = NULL; > virCommandPtr cmd; > + int ret = -1; > > - cmd = virCommandNewArgList(qemu, "-device", "pci-assign,?", NULL); > + /* Cram together all device-related queries into one invocation; > + * the output format makes it possible to distinguish what we > + * need. Unrecognized '-device bogus,?' cause an error in > + * isolation, but are silently ignored in combination with > + * '-device ?'. */ > + cmd = virCommandNewArgList(qemu, > + "-device", "pci-assign,?", > + NULL); The qemu that I used does not support '-device pci-assign,?'... So, I can not start the guest with this patch. The qemu is cloned from here: http://git.qemu.org/git/qemu.git > virCommandAddEnvPassCommon(cmd); > /* qemu -help goes to stdout, but qemu -device ? goes to stderr. */ > - virCommandSetErrorBuffer(cmd, &pciassign); > + virCommandSetErrorBuffer(cmd, &output); > virCommandClearCaps(cmd); > > if (virCommandRun(cmd, NULL) < 0) > goto cleanup; > > - if (strstr(pciassign, "pci-assign.configfd")) > - *flags |= QEMUD_CMD_FLAG_PCI_CONFIGFD; > + ret = qemuCapsParseDeviceStr(output, flags); > > cleanup: > - VIR_FREE(pciassign); > + VIR_FREE(output); > virCommandFree(cmd); > + return ret; > +} > + > + -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list