(CCing qemu-devel and the QAPI maintainers. I have a question about introspection below.) On Sat, Jun 17, 2017 at 11:48:10AM -0400, Laine Stump wrote: [...] > > + /* Support for busy polling on vhost-net devices ("-netdev > > + * tap,...,poll-us=n") */ > > + if (qemuCaps->version >= 2007000) > > + virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET_POLL_US); > > + > > Enabling a capability based purely on the qemu binary version is > something that's only done as a last resort if it can't be determined by > QMP probes. This is because the version number is an inaccurate > indicator - it often happens that a new capability is added to upstream > in qemu version "Y", but then that feature is backported to qemu version > "X" in some downstream distro package; if we based the capability on > version number, then libvirt wouldn't take advantage of the feature even > though qemu had it. > > > What *should* get us the info we need is to add a table entry to > virQEMUCapsCommandLine to check whether or not the poll-us option exists > in the current qemu binary. Something like this: > > static struct virQEMUCapsCommandLineProps virQEMUCapsCommandLine[] = { > ... > { "netdev", "poll-us", QEMU_CAPS_NETDEV_POLL_US }, > > > Unfortunately when I add that and regenerate the .replies file for qemu > 2.9.0 (with the command "tests/qemucapsprobe > /usr/bin/qemu-system-x86_64"), this is the info it finds for netdev: > > { > "parameters": [ > ], > "option": "netdev" > }, > > My understanding was that the possible parameters to the netdev > commandline option should be listed, but instead the parameters list is > empty :-/. > > Maybe Eduardo can help me understand why the parameters are empty, and > (more importantly) what needs to be done to get the supported parameters > for -netdev - basically we need to know what are the available > parameters to "-netdev tap,...". I hope we don't end up needing to base > the check purely on qemu version. query-command-line-options is incomplete and useless on many cases (including but not limited to -device, -object, and -netdev). It is not capable to model cases where the set of accepted options depends on a discriminator option (e.g. a "driver" or "type" option). Fortunately, netdev options are modelled in the QAPI schema as union Netdev. However, 'query-qmp-schema' doesn't seem to include union Netdev because it is not referenced by any QMP command or event. Markus, Eric, Michael: is there any way libvirt can query the definition of union Netdev from the schema with current QEMU? -- Eduardo -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list