All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-devel@nongnu.org, "Michael Roth" <michael.roth@amd.com>,
	"John Snow" <jsnow@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Mauro Carvalho Chehab" <mchehab+huawei@kernel.org>,
	"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Kostiantyn Kostiuk" <kkostiuk@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"David Hildenbrand" <david@kernel.org>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Jason Wang" <jasowangio@gmail.com>,
	"Marcelo Tosatti" <mtosatti@redhat.com>,
	kvm@vger.kernel.org, "Alberto Garcia" <berto@igalia.com>,
	"Kevin Wolf" <kwolf@redhat.com>,
	"Hanna Reitz" <hreitz@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@oss.qualcomm.com>,
	"Zhao Liu" <zhao1.liu@intel.com>,
	"Jonathan Cameron" <jic23@kernel.org>,
	"Junjie Cao" <junjie.cao@intel.com>,
	"Anisa Su" <anisa.su@samsung.com>,
	"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
	"Jagannathan Raman" <jag.raman@oracle.com>,
	"John Levon" <john.levon@nutanix.com>,
	"Thanos Makatos" <thanos.makatos@nutanix.com>,
	"Cédric Le Goater" <clg@redhat.com>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	"Matthew Rosato" <mjrosato@linux.ibm.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Ilya Leoshkevich" <iii@linux.ibm.com>,
	qemu-block@nongnu.org, linux-cxl@vger.kernel.org,
	qemu-s390x@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
	"Sergio Lopez" <slp@redhat.com>,
	qemu-arm@nongnu.org, "Palmer Dabbelt" <palmer@dabbelt.com>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Weiwei Li" <liwei1518@gmail.com>,
	"Daniel Henrique Barboza" <daniel.barboza@oss.qualcomm.com>,
	"Liu Zhiwei" <zhiwei_liu@linux.alibaba.com>,
	"Chao Liu" <chao.liu@processmission.com>,
	qemu-riscv@nongnu.org, "Song Gao" <17746591750@163.com>,
	"Bibo Mao" <maobibo@loongson.cn>,
	"Xianglai Li" <lixianglai@loongson.cn>,
	"Jiaxun Yang" <jiaxun.yang@flygoat.com>,
	"Pedro Barbuda" <pbarbuda@microsoft.com>,
	"Mohamed Mediouni" <mohamed@unpredictable.fr>,
	"Nicholas Piggin" <npiggin@gmail.com>,
	"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
	"Amit Machhiwal" <amachhiw@linux.ibm.com>,
	qemu-ppc@nongnu.org, "Zhang Chen" <zhangckid@gmail.com>,
	"Li Zhijian" <lizhijian@fujitsu.com>,
	"Alistair Francis" <alistair@alistair23.me>,
	"Alexander Graf" <graf@amazon.com>,
	"Gonglei (Arei)" <arei.gonglei@huawei.com>,
	"zhenwei pi" <zhenwei.pi@linux.dev>,
	"Ani Sinha" <anisinha@redhat.com>, "Luc Michel" <luc@lmichel.fr>,
	"Cédric Le Goater" <clg@kaod.org>,
	"Jamin Lin" <jamin_lin@aspeedtech.com>,
	"Kane Chen" <kane_chen@aspeedtech.com>,
	"Samuel Tardieu" <sam@rfc1149.net>,
	"Denis V. Lunev" <den@openvz.org>,
	"FangSheng Huang" <FangSheng.Huang@amd.com>,
	"Tyrone Ting" <kfting@nuvoton.com>,
	"Hao Wu" <wuhaotsh@google.com>, "Keith Busch" <kbusch@kernel.org>,
	"Klaus Jensen" <its@irrelevant.dk>,
	"Jesper Devantier" <foss@defmacro.it>,
	"Aditya Gupta" <adityag@linux.ibm.com>,
	"Glenn Miles" <milesg@linux.ibm.com>,
	"Conor Dooley" <conor@kernel.org>,
	"Sebastian Huber" <sebastian.huber@embedded-brains.de>,
	"Halil Pasic" <pasic@linux.ibm.com>,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>,
	"Jason Herne" <jjherne@linux.ibm.com>,
	"Titus Rwantare" <titusr@google.com>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Anthony PERARD" <anthony@xenproject.org>,
	"Peter Xu" <peterx@redhat.com>,
	"Chinmay Rath" <rathc@linux.ibm.com>,
	"Hendrik Brueckner" <brueckner@linux.ibm.com>,
	xen-devel@lists.xenproject.org,
	"Roman Bolshakov" <rbolshakov@ddn.com>,
	"Phil Dennis-Jordan" <phil@philjordan.eu>,
	"Fam Zheng" <fam@euphon.net>, "Farhan Ali" <alifm@linux.ibm.com>,
	"Alex Williamson" <alex@shazbot.org>,
	"Tao Tang" <tangtao1634@phytium.com.cn>,
	"Stefan Berger" <stefanb@linux.vnet.ibm.com>,
	"Fabiano Rosas" <farosas@suse.de>,
	"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
	"Artyom Tarasenko" <atar4qemu@gmail.com>,
	"Yoshinori Sato" <yoshinori.sato@nifty.com>,
	"Jiri Pirko" <jiri@resnulli.us>,
	"Eric Auger" <eric.auger@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>
Subject: Re: [PATCH v7 54/65] qdev: adjust PciDevfn declared type
Date: Tue, 27 Oct 2026 15:54:03 +0100	[thread overview]
Message-ID: <87zevz5h4k.fsf@pond.sub.org> (raw)
In-Reply-To: <CAMxuvazd7G_NBOM_c6BxZn5PFSw=XQUHueHqBoQQfpzPPgi9qA@mail.gmail.com> ("Marc-André Lureau"'s message of "Fri, 23 Oct 2026 15:39:22 +0400")

Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> Hi
>
> On Fri, Oct 23, 2026 at 2:04 PM Daniel P. Berrangé <berrange@redhat.com> wrote:
>>
>> On Tue, Oct 20, 2026 at 02:46:11PM +0400, Marc-André Lureau wrote:
>> > PciDevfn is a bit special, since it accepts integer and string as
>> > setter, but only output integer as getter.

Yes.  See below.

>> > Unfortunately, we can't declare an alternate str|int QAPI type for it,
>> > since: branch 'string' can't be distinguished from 'integer'

Yes, except with trickery; more on this below.

>> >
>> > Rather than declaring it as "str", use the common type instead.
>> >
>> > Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>> > ---
>> >  hw/core/qdev-properties-system.c | 3 ++-
>> >  1 file changed, 2 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.c
>> > index 5bfdfe1ab9d9..3381de1144d6 100644
>> > --- a/hw/core/qdev-properties-system.c
>> > +++ b/hw/core/qdev-properties-system.c
>> > @@ -904,7 +904,8 @@ static char *print_pci_devfn(Object *obj, const Property *prop)
>> >  }
>> >
>> >  const PropertyInfo qdev_prop_pci_devfn = {
>> > -    .type  = "str",
>> > +    /* The formatted string accepted by the setter is a CLI convenience. */
>>
>> IIUC, this is not limited to the CLI, it will work anywhere the JSON
>> syntax is permitted which is both CLI and QMP.
>>
>> libvirt uses this string syntax:
>>
>>   -device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","multifunction":true,"addr":"0x1.0x1"}' \
>>
>> > +    .type  = "int32",
>> >      .description = "Slot and optional function number, example: 06.0 or 06",
          .print = print_pci_devfn,
          .get   = qdev_propinfo_get_int32,
          .set   = set_pci_devfn,
          .set_default_value = qdev_propinfo_set_default_value_int,
      };

The property is backed by an int32_t.  In
include/hw/core/qdev-properties-system.h:

    #define DEFINE_PROP_PCI_DEVFN(_n, _s, _f, _d)                   \
        DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_pci_devfn, int32_t)

It's only ever used for PCI device property "addr".

Its .get() simply visits it.  This is why qom-get returns an integer:

    --> {"execute":"qom-get","arguments":{"path":"/machine/unattached/device[4]/pm", "property": "type"}}
    <-- {"return": "PIIX4_PM"}
    --> {"execute":"qom-get","arguments":{"path":"/machine/unattached/device[4]/pm", "property": "addr"}}
    <-- {"return": 11}

Its .set() is a handwritten visit of an alternate of 'str' and 'int32',
where 'str' gets parsed as DEV.FN into int32.  This is why QMP
device_add accepts both JSON string and JSON number (HMP device_add and
-device only do string).  QAPI doesn't let us define such an alternate
type, as you wrote in your commit message, but handwritten visits fly
below that radar.  This is of course too clever by half.  Goes back to
commit 768a9ebe188 (qdev: accept both strings and integers for PCI
addresses) in v1.1.

Its .print() prints it like DEV.FN.  Its only user is "info qtree".

>> Changing the type to 'int32', where 99% of usage is input only
>> and string based, is pretty unpleasant. Even more so that the
>> description doesn't even mention encoding dev+function as an
>> integer.
>
> This is purely a metadata change, the setter still accepts both str &
> int,

Yes.

.type is only used as @type argument for object_class_property_add() and
object_property_add().  They store it in ObjectProperty member @type.
Visible externally in QOM introspection (ObjectPropertyInfo and
ObjectPropertyValue member type).  Also in help, but let's ignore that
for a minute.

Before the series, QOM instrospection shows type "str" for PCI device
property "addr".

For reading, that's a lie: qom-get and qom-list-get return an JSON
integer, not a JSON string.

For writing, it's merely incomplete: qom-set accepts a JSON string in
addition to a JSON integer.

Does it matter?  To make use of QOM introspection's type, you have to
hardcode so much silly stuff, what's one more case?

With this patch, it shows type "int32".  Less wrong.

Again, does it matter?  The change could conceivably break a client.  I
figure the risk is small.  Is "less wrong" worth even a small risk?

>      so I don't think this change blocks this series.

I figure it's no worse than the other type values the series changes.

Let's discuss them under my

    Subject: Property types changed in this series (was: [PATCH v7 00/65] Hi)
    Date: Wed, 21 Oct 2026 18:29:40 +0200
    Message-ID: <87tsmfkoej.fsf@pond.sub.org>

>                                                       But I agree we
> could do better.
>
> There are multiple options. We could keep declaring the property as
> str instead. In this case, the getter should probably return a string
> for consistency and correctness. This might surprise some existing
> users though.

I.e. ditch numeric suppport for numeric addresses, right?

Incompatible change.  Do we care?

If we don't, we should be honest about it and mark qom-get unstable.

> We could introduce new properties like `devfn-str` and `devfn-int`
> that alias the same value.

Compatibility break.  If breaking compatibility is okay, I'd rather use
the opportunity to get rid of cleverness, and go with your first option.

> We could also introduce a new structured QAPI type.

What kind of type do you have in mind?

> Markus, what's your take?

From a QAPI/QMP point of view, the clean way to support "either string
or numeric address" is an alternate type.

Trouble is the generator rejects such an alternate, as you pointed out
in your commit message.  Why is that?

docs/devel/qapi-code-gen.rst:

    An alternate type is like a union type, except there is no
    discriminator on the wire.  Instead, the branch to use is inferred
    from the value.  An alternate can only express a choice between types
    represented differently on the wire.

So, we can't have two 'str' branches (both JSON string), or a 'str' and
an 'enum' branch (same).

But 'int32' and 'str' are different on the wire (JSON number and JSON
string), so what's going on?  This:

commit c0644771ebedbd8f47f3c24816445e30111d226b (tag: pull-qapi-2017-05-31)
Author: Markus Armbruster <armbru@redhat.com>
Date:   Mon May 22 18:42:15 2017 +0200

    qapi: Reject alternates that can't work with keyval_parse()
    
    Alternates are sum types like unions, but use the JSON type on the
    wire / QType in QObject instead of an explicit tag.  That's why we
    require alternate members to have distinct QTypes.
    
    The recently introduced keyval_parse() (commit d454dbe) can only
    produce string scalars.  The qobject_input_visitor_new_keyval() input
    visitor mostly hides the difference, so code using a QObject input
    visitor doesn't have to care whether its input was parsed from JSON or
    KEY=VALUE,...  The difference leaks for alternates, as noted in commit
    0ee9ae7: a non-string, non-enum scalar alternate value can't currently
    be expressed.
    
    In part, this is just our insufficiently sophisticated implementation.
    Consider alternate type 'GuestFileWhence'.  It has an integer member
    and a 'QGASeek' member.  The latter is an enumeration with values
    'set', 'cur', 'end'.  The meaning of b=set, b=cur, b=end, b=0, b=1 and
    so forth is perfectly obvious.  However, our current implementation
    falls apart at run time for b=0, b=1, and so forth.  Fixable, but not
    today; add a test case and a TODO comment.
    
    Now consider an alternate type with a string and an integer member.
    What's the meaning of a=42?  Is it the string "42" or the integer 42?
    Whichever meaning you pick makes the other inexpressible.  This isn't
    just an implementation problem, it's fundamental.  Our current
    implementation will pick string.
    
    So far, we haven't needed such alternates.  To make sure we stop and
    think before we add one that cannot sanely work with keyval_parse(),
    let's require alternate members to have sufficiently distinct
    representation in KEY=VALUE,... syntax:
    
    * A string member clashes with any other scalar member
    
    * An enumeration member clashes with bool members when it has value
      'on' or 'off'.
    
    * An enumeration member clashes with numeric members when it has a
      value that starts with '-', '+', or a decimal digit.  This is a
      rather lazy approximation of the actual number syntax accepted by
      the visitor.
    
      Note that enumeration values starting with '-' and '+' are rejected
      elsewhere already, but better safe than sorry.
    
    Signed-off-by: Markus Armbruster <armbru@redhat.com>
    Message-Id: <1495471335-23707-5-git-send-email-armbru@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

However, keyval_parse() + its input visitor can't express everything
QAPI even with such alternates outlawed.  From util/keyval.c:

 * Design flaw: there is no way to denote an empty array or non-root
 * object.  While interpreting "key absent" as empty seems natural
 * (removing a key-val from the input string removes the member when
 * there are more, so why not when it's the last), it doesn't work:
 * "key absent" already means "optional object/array absent", which
 * isn't the same as "empty object/array present".
 *
 * Design flaw: scalar values can only be strings; there is no way to
 * denote numbers, true, false or null.  The special QObject input
 * visitor returned by qobject_input_visitor_new_keyval() mostly hides
 * this by automatically converting strings to the type the visitor
 * expects.  Breaks down for type 'any', where the visitor's
 * expectation isn't clear.  Code visiting 'any' needs to do the
 * conversion itself, but only when using this keyval visitor.
 * Awkward.  Note that we carefully restrict alternate types to avoid
 * similar ambiguity.

We commonly use keyval syntax together with JSON: if the input starts
with '{', it's assumed to be JSON, else keyval.  See
qobject_input_visitor_new_str().  This lets you fall back to JSON when
keyval can't express what you want.

Beware, there *are* uses of keyval without a JSON fallback.

As the commit message I quoted says, we could permit alternates that are
ambiguous with keyval.  The keyval visitor could then pick a branch (you
can't express the others), or it could refuse to pick (you can't express
any of them).

In the particular case of PCI device property "addr", picking str would
be fine: same behavior as the handwritten visit in in set_pci_devfn().

But once we permit such alternates, nothing but conscientious testing
with keyval syntax will stop us from adding interfaces that don't work
or work the wrong way.  Hmm.

I need to think about this some more if we want to explore this
direction.

[...]


  parent reply	other threads:[~2026-10-27 14:54 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-20 10:45 [PATCH v7 00/65] Hi marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 01/65] qapi/schema: Rename .lookup_entity() and tighten return type marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 02/65] qapi: Ease access to introspection names marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 03/65] qapi/introspect: Simplify masked name comment emission slighly marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 04/65] qapi/introspect: Don't elide types marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 05/65] qapi: QAPISchemaVisitor.visit_needed() is now unused, drop marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 06/65] qapi/introspect: Tweak integer type masking marcandre.lureau
2026-10-20 10:45 ` [PATCH v7 07/65] qapi: add QAPITypeInfo struct definition Marc-André Lureau
2026-10-23  8:39   ` Markus Armbruster
2026-10-20 10:45 ` [PATCH v7 08/65] qapi/gen: fix _module_basename for multi-dash 'what' parameters Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 09/65] qapi: add type-infos generator Marc-André Lureau
2026-10-23 13:47   ` Markus Armbruster
2026-10-23 13:47     ` Markus Armbruster via
2026-10-23 13:47     ` Markus Armbruster via
2026-10-23 13:47     ` Markus Armbruster via qemu development
2026-10-20 10:45 ` [PATCH v7 10/65] meson: add qapi-type-infos-*.c/h to build Marc-André Lureau
2026-10-23 10:54   ` Markus Armbruster
2026-10-20 10:45 ` [PATCH v7 11/65] qom: add qapi_type field to ObjectProperty Marc-André Lureau
2026-10-23 13:54   ` Markus Armbruster
2026-10-20 10:45 ` [PATCH v7 12/65] qapi/qom: add qapi-type field to ObjectPropertyInfo Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 13/65] qom/qmp: populate qapi-type in QMP handlers Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 14/65] qom/qmp: populate description & default-value in qom_property_info() Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 15/65] qom: add object_property_set_default_enum() Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 16/65] qom: add object_{class_}property_add_qapi Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 17/65] qom: add object_{class_}property_add_qapi_enum Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 18/65] tests: update check-qom-proplist for QAPI-aware property registration Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 19/65] qom: convert QAPI enum properties to QAPI-aware registration Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 20/65] qom: convert struct " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 21/65] x86: convert OnOffAuto " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 22/65] microvm: " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 23/65] pc: convert OnOffAuto vmport property " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 24/65] arm/virt: convert OnOffAuto acpi " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 25/65] riscv/virt: convert OnOffAuto properties " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 26/65] loongarch/virt: " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 27/65] hostmem-file: convert OnOffAuto rom property " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 28/65] sev: convert OnOffAuto legacy-vm-type " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 29/65] whpx: convert OnOffAuto hyperv " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 30/65] whpx: convert OnOffAuto arch properties " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 31/65] accel/kvm: convert OnOffSplit property " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 32/65] whpx: " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 33/65] hw/ppc/spapr_caps: fix property type name Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 34/65] ppc/spapr-caps: convert to QAPI-aware property registration Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 35/65] net/colo-compare: fix compare_timeout setter visitor type Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 36/65] net/colo-compare: fix max_queue_size " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 37/65] hw/misc/xlnx-versal-trng: add missing getter for fips-fault-events Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 38/65] qom: convert scalar properties to QAPI-aware registration Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 39/65] i386/cpu: convert strList property " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 40/65] accel/hvf: convert OnOffSplit " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 41/65] i386/x86: convert SgxEPCList " Marc-André Lureau
2026-10-20 10:45 ` [PATCH v7 42/65] virtio-balloon: convert guest-stats property to QAPI type Marc-André Lureau
2026-10-20 12:59   ` Markus Armbruster
2026-10-20 10:46 ` [PATCH v7 43/65] qom: replace object_property_add_tm with StructTm " Marc-André Lureau
2026-10-20 13:25   ` Markus Armbruster
2026-10-20 10:46 ` [PATCH v7 44/65] hw/nvdimm: convert UUID property to QAPI-aware registration Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 45/65] hw/s390-virtio-ccw: convert loadparm " Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 46/65] hw/ppc/spapr_drc: convert fdt " Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 47/65] hw/s390x: convert BootCertificatesList " Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 48/65] hw/gpio/pca955x: use QAPI enums for led and pin properties Marc-André Lureau
2026-10-20 20:28   ` Miles Glenn
2026-10-20 10:46 ` [PATCH v7 49/65] include: add QEMU_REPEAT helper macro Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 50/65] hw/gpio/pca955x: convert pin/led property to QAPI-aware enum Marc-André Lureau
2026-10-20 20:41   ` Miles Glenn
2026-10-20 10:46 ` [PATCH v7 51/65] hw/pci: change the busnr type to uint8 Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 52/65] qdev: add qapi_type field to PropertyInfo with fallback registration Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 53/65] qdev: convert core PropertyInfo definitions to use qapi_type Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 54/65] qdev: adjust PciDevfn declared type Marc-André Lureau
2026-10-23 10:04   ` Daniel P. Berrangé
2026-10-23 11:39     ` Marc-André Lureau
2026-10-23 12:04       ` Michael S. Tsirkin
2026-10-27 14:54       ` Markus Armbruster [this message]
2026-10-27 15:08         ` Daniel P. Berrangé
2026-10-28  7:13           ` Markus Armbruster
2026-10-20 10:46 ` [PATCH v7 55/65] qdev: convert system PropertyInfo definitions to use qapi_type Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 56/65] hw: convert device-local " Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 57/65] target/riscv: convert " Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 58/65] qdev: " Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 59/65] qdev: introduce typed array PropertyInfos Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 60/65] qdev: simplify DEFINE_PROP_ARRAY and remove generic array PropertyInfo Marc-André Lureau
2026-10-21 14:45   ` Markus Armbruster
2026-10-20 10:46 ` [PATCH v7 61/65] qdev: remove deprecated PropertyInfo.type and .enum_table fields Marc-André Lureau
2026-10-29 10:30   ` Markus Armbruster
2026-10-20 10:46 ` [PATCH v7 62/65] hw/i386: convert PCSouthBridgeOption to QAPI enum Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 63/65] qom: remove old enum property registration API Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 64/65] qom: use QAPITypeInfo in object_property_get_enum Marc-André Lureau
2026-10-20 10:46 ` [PATCH v7 65/65] tests/qmp-cmd-test: assert qapi-type resolves in query-qmp-schema Marc-André Lureau
2026-10-21 16:29 ` Property types changed in this series (was: [PATCH v7 00/65] Hi) Markus Armbruster
2026-10-22  6:49   ` Property types changed in this series Markus Armbruster
2026-10-22  8:29     ` Ján Tomko
2026-10-22 14:04 ` ObjectPropertyInfo design (was: [PATCH v7 00/65] Hi) Markus Armbruster
2026-10-23 12:52   ` Marc-André Lureau
2026-10-28 11:44     ` ObjectPropertyInfo design Markus Armbruster
2026-10-29 13:44       ` Markus Armbruster
2026-10-29 13:54         ` Marc-André Lureau
2026-10-26 17:21   ` ObjectPropertyInfo design (was: [PATCH v7 00/65] Hi) Daniel P. Berrangé
2026-10-28 13:39     ` ObjectPropertyInfo design Markus Armbruster

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=87zevz5h4k.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=17746591750@163.com \
    --cc=FangSheng.Huang@amd.com \
    --cc=adityag@linux.ibm.com \
    --cc=alex@shazbot.org \
    --cc=alifm@linux.ibm.com \
    --cc=alistair.francis@wdc.com \
    --cc=alistair@alistair23.me \
    --cc=amachhiw@linux.ibm.com \
    --cc=anisa.su@samsung.com \
    --cc=anisinha@redhat.com \
    --cc=anthony@xenproject.org \
    --cc=arei.gonglei@huawei.com \
    --cc=atar4qemu@gmail.com \
    --cc=berrange@redhat.com \
    --cc=berto@igalia.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=brueckner@linux.ibm.com \
    --cc=chao.liu@processmission.com \
    --cc=clg@kaod.org \
    --cc=clg@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=conor@kernel.org \
    --cc=daniel.barboza@oss.qualcomm.com \
    --cc=david@kernel.org \
    --cc=den@openvz.org \
    --cc=eblake@redhat.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=elena.ufimtseva@oracle.com \
    --cc=eric.auger@redhat.com \
    --cc=fam@euphon.net \
    --cc=farman@linux.ibm.com \
    --cc=farosas@suse.de \
    --cc=foss@defmacro.it \
    --cc=graf@amazon.com \
    --cc=harshpb@linux.ibm.com \
    --cc=hreitz@redhat.com \
    --cc=iii@linux.ibm.com \
    --cc=imammedo@redhat.com \
    --cc=its@irrelevant.dk \
    --cc=jag.raman@oracle.com \
    --cc=jamin_lin@aspeedtech.com \
    --cc=jasowangio@gmail.com \
    --cc=jiaxun.yang@flygoat.com \
    --cc=jic23@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=jjherne@linux.ibm.com \
    --cc=john.levon@nutanix.com \
    --cc=jsnow@redhat.com \
    --cc=junjie.cao@intel.com \
    --cc=kane_chen@aspeedtech.com \
    --cc=kbusch@kernel.org \
    --cc=kfting@nuvoton.com \
    --cc=kkostiuk@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwolf@redhat.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=liwei1518@gmail.com \
    --cc=lixianglai@loongson.cn \
    --cc=lizhijian@fujitsu.com \
    --cc=luc@lmichel.fr \
    --cc=lvivier@redhat.com \
    --cc=maobibo@loongson.cn \
    --cc=marcandre.lureau@redhat.com \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=mchehab+huawei@kernel.org \
    --cc=michael.roth@amd.com \
    --cc=milesg@linux.ibm.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=mohamed@unpredictable.fr \
    --cc=mst@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=npiggin@gmail.com \
    --cc=palmer@dabbelt.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbarbuda@microsoft.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=peterx@redhat.com \
    --cc=phil@philjordan.eu \
    --cc=philmd@oss.qualcomm.com \
    --cc=pierrick.bouvier@oss.qualcomm.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=qemu-riscv@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=rathc@linux.ibm.com \
    --cc=rbolshakov@ddn.com \
    --cc=richard.henderson@linaro.org \
    --cc=sam@rfc1149.net \
    --cc=sebastian.huber@embedded-brains.de \
    --cc=slp@redhat.com \
    --cc=sstabellini@kernel.org \
    --cc=stefanb@linux.vnet.ibm.com \
    --cc=tangtao1634@phytium.com.cn \
    --cc=thanos.makatos@nutanix.com \
    --cc=titusr@google.com \
    --cc=wuhaotsh@google.com \
    --cc=xen-devel@lists.xenproject.org \
    --cc=yoshinori.sato@nifty.com \
    --cc=zhangckid@gmail.com \
    --cc=zhao1.liu@intel.com \
    --cc=zhenwei.pi@linux.dev \
    --cc=zhiwei_liu@linux.alibaba.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.