system/qdev-monitor.c | 56 ++++++++++++++++++++++--------------------- system/vl.c | 14 ++++------- 2 files changed, 33 insertions(+), 37 deletions(-)
v2: - Rename Patch 1 to indicate that we're avoiding QemuOpts rather than doing a full conversion to QAPI. Also mention that 'gen': false is still being used. [Markus] - Add Patch 2 to address a TODO comment suggesting that qemu_create_cli_devices() should call qmp_device_add(). [Markus] - Move drain_call_rcu() into qdev_device_add_from_qdict() to avoid code duplication. [Markus] This series enables non-scalar parameter parsing in device_add (e.g. virtio-blk-pci,iothread-vq-mapping=). Stop converting from QDict to QemuOpts and back again as this loses type information and cannot represent non-scalars. Stefan Hajnoczi (2): qdev-monitor: avoid QemuOpts in QMP device_add vl: use qmp_device_add() in qemu_create_cli_devices() system/qdev-monitor.c | 56 ++++++++++++++++++++++--------------------- system/vl.c | 14 ++++------- 2 files changed, 33 insertions(+), 37 deletions(-) -- 2.45.2
Can we additionally cut out the QemuOpts middleman in usbback_portid_add()? qdict = qdict_new(); qdict_put_str(qdict, "driver", "usb-host"); tmp = g_strdup_printf("%s.0", usbif->xendev.qdev.id); qdict_put_str(qdict, "bus", tmp); g_free(tmp); tmp = g_strdup_printf("%s-%u", usbif->xendev.qdev.id, port); qdict_put_str(qdict, "id", tmp); g_free(tmp); qdict_put_int(qdict, "port", port); qdict_put_int(qdict, "hostbus", atoi(busid)); qdict_put_str(qdict, "hostport", portname); opts = qemu_opts_from_qdict(qemu_find_opts("device"), qdict, &error_abort); usbif->ports[port - 1].dev = USB_DEVICE(qdev_device_add(opts, &local_err)); Trying this is up to you!
On Fri, Aug 02, 2024 at 10:10:43AM +0200, Markus Armbruster wrote: > Can we additionally cut out the QemuOpts middleman in > usbback_portid_add()? > > qdict = qdict_new(); > qdict_put_str(qdict, "driver", "usb-host"); > tmp = g_strdup_printf("%s.0", usbif->xendev.qdev.id); > qdict_put_str(qdict, "bus", tmp); > g_free(tmp); > tmp = g_strdup_printf("%s-%u", usbif->xendev.qdev.id, port); > qdict_put_str(qdict, "id", tmp); > g_free(tmp); > qdict_put_int(qdict, "port", port); > qdict_put_int(qdict, "hostbus", atoi(busid)); > qdict_put_str(qdict, "hostport", portname); > opts = qemu_opts_from_qdict(qemu_find_opts("device"), qdict, > &error_abort); > usbif->ports[port - 1].dev = USB_DEVICE(qdev_device_add(opts, &local_err)); > > Trying this is up to you! Paul or Anthony: Do you know how to run usbback_portid_add() for testing? I would like to make sure that suggested the code change works and don't have experience running the Xen code in QEMU. Thanks, Stefan
On 12/08/2024 19:15, Stefan Hajnoczi wrote: > On Fri, Aug 02, 2024 at 10:10:43AM +0200, Markus Armbruster wrote: >> Can we additionally cut out the QemuOpts middleman in >> usbback_portid_add()? >> >> qdict = qdict_new(); >> qdict_put_str(qdict, "driver", "usb-host"); >> tmp = g_strdup_printf("%s.0", usbif->xendev.qdev.id); >> qdict_put_str(qdict, "bus", tmp); >> g_free(tmp); >> tmp = g_strdup_printf("%s-%u", usbif->xendev.qdev.id, port); >> qdict_put_str(qdict, "id", tmp); >> g_free(tmp); >> qdict_put_int(qdict, "port", port); >> qdict_put_int(qdict, "hostbus", atoi(busid)); >> qdict_put_str(qdict, "hostport", portname); >> opts = qemu_opts_from_qdict(qemu_find_opts("device"), qdict, >> &error_abort); >> usbif->ports[port - 1].dev = USB_DEVICE(qdev_device_add(opts, &local_err)); >> >> Trying this is up to you! > > Paul or Anthony: Do you know how to run usbback_portid_add() for > testing? I would like to make sure that suggested the code change works > and don't have experience running the Xen code in QEMU. Sorry, PV USB is not something I'm familiar with. https://wiki.xenproject.org/wiki/Xen_USB_Passthrough suggests that `xl usbdev-attach` might be the way to test... but you'd need a system with Xen installed and suitably configured guest, so not trivial to set up.
On Tue, Aug 13, 2024 at 09:18:46AM +0100, Paul Durrant wrote: > On 12/08/2024 19:15, Stefan Hajnoczi wrote: > > On Fri, Aug 02, 2024 at 10:10:43AM +0200, Markus Armbruster wrote: > > > Can we additionally cut out the QemuOpts middleman in > > > usbback_portid_add()? > > > > > > qdict = qdict_new(); > > > qdict_put_str(qdict, "driver", "usb-host"); > > > tmp = g_strdup_printf("%s.0", usbif->xendev.qdev.id); > > > qdict_put_str(qdict, "bus", tmp); > > > g_free(tmp); > > > tmp = g_strdup_printf("%s-%u", usbif->xendev.qdev.id, port); > > > qdict_put_str(qdict, "id", tmp); > > > g_free(tmp); > > > qdict_put_int(qdict, "port", port); > > > qdict_put_int(qdict, "hostbus", atoi(busid)); > > > qdict_put_str(qdict, "hostport", portname); > > > opts = qemu_opts_from_qdict(qemu_find_opts("device"), qdict, > > > &error_abort); > > > usbif->ports[port - 1].dev = USB_DEVICE(qdev_device_add(opts, &local_err)); > > > > > > Trying this is up to you! > > > > Paul or Anthony: Do you know how to run usbback_portid_add() for > > testing? I would like to make sure that suggested the code change works > > and don't have experience running the Xen code in QEMU. > > Sorry, PV USB is not something I'm familiar with. > https://wiki.xenproject.org/wiki/Xen_USB_Passthrough suggests that `xl > usbdev-attach` might be the way to test... but you'd need a system with Xen > installed and suitably configured guest, so not trivial to set up. Thanks for the pointer! I will leave the usbback_portid_add() refactoring because I don't have a setup for testing it. Stefan
© 2016 - 2024 Red Hat, Inc.