All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Krempa <pkrempa@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: damien.hedde@greensocs.com, lvivier@redhat.com,
	vsementsov@virtuozzo.com, berrange@redhat.com,
	ehabkost@redhat.com, qemu-block@nongnu.org, mst@redhat.com,
	libvir-list@redhat.com, jasowang@redhat.com, quintela@redhat.com,
	qemu-devel@nongnu.org, armbru@redhat.com, its@irrelevant.dk,
	pbonzini@redhat.com, eblake@redhat.com
Subject: Re: [PATCH v2 00/15] qdev: Add JSON -device
Date: Fri, 15 Oct 2021 15:24:27 +0200	[thread overview]
Message-ID: <YWmBC3HCDltX7YZr@angien.pipo.sk> (raw)
In-Reply-To: <20211008133442.141332-1-kwolf@redhat.com>

On Fri, Oct 08, 2021 at 15:34:27 +0200, Kevin Wolf wrote:
> It's still a long way until we'll have QAPIfied devices, but there are
> some improvements that we can already make now to make the future switch
> easier.
> 
> One important part of this is having code paths without QemuOpts, which
> we want to get rid of and replace with the keyval parser in the long
> run. This series adds support for JSON syntax to -device, which bypasses
> QemuOpts.
> 
> While we're not using QAPI yet, devices are based on QOM, so we already
> do have type checks and an implied schema. JSON syntax supported now can
> be supported by QAPI later and regarding command line compatibility,
> actually switching to it becomes an implementation detail this way (of
> course, it will still add valuable user-visible features like
> introspection and documentation).
> 
> Apart from making things more future proof, this also immediately adds
> a way to do non-scalar properties on the command line. nvme could have
> used list support recently, and the lack of it in -device led to some
> rather unnatural solution in the first version (doing the relationship
> between a device and objects backwards) and loss of features in the
> following. With this series, using a list as a device property should be
> possible without any weird tricks.
> 
> Unfortunately, even QMP device_add goes through QemuOpts before this
> series, which destroys any type safety QOM provides and also can't
> support non-scalar properties. This is a bug, but it turns out that
> libvirt actually relies on it and passes only strings for everything.
> So this series still leaves device_add alone until libvirt is fixed.

I've tested hotplug and standard -device with many (not all) devices
libvirt uses and seems that both '-device JSON' and monitor work
properly.

I'll enable '-device JSON' in libvirt once this hits upstream.

> 
> v2:
> - Drop type safe QMP device_add because libvirt gets it wrong, too

I've actually applied this patch too to make sure that libvirt is
working properly in both modes. It works now well with this too.

I'm not sure about the compatibility promise here, but libvirt is now
prepared even for teh strict version of 'device_add'. Libvirt's
requirements state that new libvirt needs to be used with new qemu and
thus from our view it's okay to do it even now.

> - More network patches to eliminate dependencies on the legacy QemuOpts
>   data structures which would not contain all devices any more after
>   this series. Fix some bugs there as a side effect.
> - Remove an unnecessary use of ERRP_GUARD()
> - Replaced error handling patch for qdev_set_id() with Damien's
> - Drop the deprecation patch until libvirt uses the new JSON syntax

Series:

Tested-by: Peter Krempa <pkrempa@redhat.com>



  parent reply	other threads:[~2021-10-15 13:26 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-08 13:34 [PATCH v2 00/15] qdev: Add JSON -device Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 01/15] net: Introduce NetClientInfo.check_peer_type() Kevin Wolf
2021-10-13 13:28   ` Damien Hedde
2021-10-14  3:22   ` Jason Wang
2021-10-08 13:34 ` [PATCH v2 02/15] net/vhost-user: Fix device compatibility check Kevin Wolf
2021-10-13 13:30   ` Damien Hedde
2021-10-14  3:23   ` Jason Wang
2021-10-08 13:34 ` [PATCH v2 03/15] net/vhost-vdpa: " Kevin Wolf
2021-10-13 13:30   ` Damien Hedde
2021-10-14  3:24   ` Jason Wang
2021-10-08 13:34 ` [PATCH v2 04/15] qom: Reduce use of error_propagate() Kevin Wolf
2021-10-11 15:07   ` Markus Armbruster
2021-10-08 13:34 ` [PATCH v2 05/15] iotests/245: Fix type for iothread property Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 06/15] iotests/051: Fix typo Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 07/15] qdev: Avoid using string visitor for properties Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 08/15] qdev: Make DeviceState.id independent of QemuOpts Kevin Wolf
2021-10-13 13:41   ` Damien Hedde
2021-10-08 13:34 ` [PATCH v2 09/15] softmmu/qdev-monitor: add error handling in qdev_set_id Kevin Wolf
2021-10-11 21:00   ` Eric Blake
2021-10-13 13:10     ` Damien Hedde
2021-10-13 21:37       ` Eric Blake
2021-10-15  7:24         ` Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 10/15] qemu-option: Allow deleting opts during qemu_opts_foreach() Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 11/15] qdev: Add Error parameter to hide_device() callbacks Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 12/15] virtio-net: Store failover primary opts pointer locally Kevin Wolf
2021-10-19  8:06   ` Laurent Vivier
2021-10-19 10:57     ` Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 13/15] virtio-net: Avoid QemuOpts in failover_find_primary_device() Kevin Wolf
2021-10-08 13:34 ` [PATCH v2 14/15] qdev: Base object creation on QDict rather than QemuOpts Kevin Wolf
2021-10-08 15:17   ` Laurent Vivier
2021-10-08 13:34 ` [PATCH v2 15/15] vl: Enable JSON syntax for -device Kevin Wolf
2021-10-13 15:30 ` [PATCH v2 00/15] qdev: Add JSON -device Michael S. Tsirkin
2021-10-13 16:53   ` Kevin Wolf
2021-10-15 13:24 ` Peter Krempa [this message]
2021-10-15 14:38 ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YWmBC3HCDltX7YZr@angien.pipo.sk \
    --to=pkrempa@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=damien.hedde@greensocs.com \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=its@irrelevant.dk \
    --cc=jasowang@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=libvir-list@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=vsementsov@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.