[PATCH v4 00/15] qapi: remove all TARGET_* conditionals from the schema

Pierrick Bouvier posted 15 patches 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20250522190542.588267-1-pierrick.bouvier@linaro.org
Maintainers: David Woodhouse <dwmw2@infradead.org>, Paul Durrant <paul@xen.org>, Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Nina Schoetterl-Glausch <nsg@linux.ibm.com>, Thomas Huth <thuth@redhat.com>, David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>, Halil Pasic <pasic@linux.ibm.com>, Christian Borntraeger <borntraeger@linux.ibm.com>, Eric Farman <farman@linux.ibm.com>, Gerd Hoffmann <kraxel@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>, "Gonglei (Arei)" <arei.gonglei@huawei.com>, Zhenwei Pi <pizhenwei@bytedance.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Yanan Wang <wangyanan55@huawei.com>, Zhao Liu <zhao1.liu@intel.com>, Michael Roth <michael.roth@amd.com>, Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Peter Maydell <peter.maydell@linaro.org>, Marcelo Tosatti <mtosatti@redhat.com>, Song Gao <gaosong@loongson.cn>, Huacai Chen <chenhuacai@kernel.org>, Aurelien Jarno <aurelien@aurel32.net>, Jiaxun Yang <jiaxun.yang@flygoat.com>, Aleksandar Rikalo <arikalo@gmail.com>, Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, Laurent Vivier <lvivier@redhat.com>
MAINTAINERS                               |   1 -
qapi/audio.json                           |   2 +-
qapi/char.json                            |   4 +-
qapi/cryptodev.json                       |   2 +-
qapi/machine-s390x.json                   | 121 +++++
qapi/machine-target.json                  | 523 ----------------------
qapi/machine.json                         | 367 ++++++++++++++-
qapi/migration.json                       |   8 +-
qapi/misc-arm.json                        |  49 ++
qapi/{misc-target.json => misc-i386.json} | 165 +++----
qapi/qapi-schema.json                     |   5 +-
qapi/ui.json                              |   8 +-
include/hw/s390x/cpu-topology.h           |   2 +-
hw/i386/kvm/xen-stubs.c                   |  13 -
hw/i386/kvm/xen_evtchn.c                  |   2 +-
hw/i386/monitor.c                         |   2 +-
hw/i386/sgx-stub.c                        |   2 +-
hw/i386/sgx.c                             |   2 +-
hw/s390x/cpu-topology.c                   |   4 +-
hw/s390x/s390-skeys.c                     |   1 -
stubs/monitor-arm-gic.c                   |  12 +
stubs/monitor-cpu-s390x-kvm.c             |  22 +
stubs/monitor-cpu-s390x.c                 |  23 +
stubs/monitor-cpu.c                       |  21 +
stubs/monitor-i386-rtc.c                  |  12 +
stubs/monitor-i386-sev.c                  |  36 ++
stubs/monitor-i386-sgx.c                  |  17 +
stubs/monitor-i386-xen.c                  |  16 +
target/arm/arm-qmp-cmds.c                 |   4 +-
target/i386/cpu-system.c                  |   2 +-
target/i386/cpu.c                         |   2 +-
target/i386/monitor.c                     |   1 -
target/i386/sev-system-stub.c             |  32 --
target/i386/sev.c                         |   2 +-
target/loongarch/loongarch-qmp-cmds.c     |   2 +-
target/mips/system/mips-qmp-cmds.c        |  12 +-
target/ppc/ppc-qmp-cmds.c                 |  12 +-
target/riscv/riscv-qmp-cmds.c             |   2 +-
target/s390x/cpu_models_system.c          |   2 +-
tests/qtest/qmp-cmd-test.c                |   1 +
qapi/meson.build                          |  33 +-
stubs/meson.build                         |   8 +
42 files changed, 833 insertions(+), 724 deletions(-)
create mode 100644 qapi/machine-s390x.json
delete mode 100644 qapi/machine-target.json
create mode 100644 qapi/misc-arm.json
rename qapi/{misc-target.json => misc-i386.json} (75%)
create mode 100644 stubs/monitor-arm-gic.c
create mode 100644 stubs/monitor-cpu-s390x-kvm.c
create mode 100644 stubs/monitor-cpu-s390x.c
create mode 100644 stubs/monitor-cpu.c
create mode 100644 stubs/monitor-i386-rtc.c
create mode 100644 stubs/monitor-i386-sev.c
create mode 100644 stubs/monitor-i386-sgx.c
create mode 100644 stubs/monitor-i386-xen.c
[PATCH v4 00/15] qapi: remove all TARGET_* conditionals from the schema
Posted by Pierrick Bouvier 7 months ago
This series exposes all qmp commands for any target unconditionally, allowing to
compile QAPI generated code without any TARGET conditionals.

Based on original RFC from Daniel P. Berrangé:
https://lore.kernel.org/qemu-devel/20250508135816.673087-1-berrange@redhat.com/

v4
--

- Update commit description to say that doc was updated accordingly (Markus)
- Fixed a rebase error in v3 where two patches were wrongly merged together

v3
--

- Change error message for rtc-reset-injection stub
- s/'*deprecated-props' : { 'type': ['str'] }/'*deprecated-props' : ['str'] }
- further cleanup in qapi/meson.build
- move qapi/machine-target.json deletion to s390x cpu commands commit
- cleanup qapi_outputs in qapi/meson.build
- All comment and commit description updates requested
- Rebase on top of master (conflict with s/SGX/Sgx/ case change)

v2
--

- rtc-reset-reinjection now returns an error if the command is not applicable
  for current target (Markus & Daniel)

v1
--

- remove file qapi/misc-target.json (Markus)
- remove qapi/*-target.json from MAINTAINERS (Markus)
- remove qapi_specific_outputs from qapi/meson.build (Markus)
- update comment in rtc-reset-reinjection stub (Markus)
- build QAPI generated code only once

Daniel P. Berrangé (8):
  qapi: expose rtc-reset-reinjection command unconditionally
  qapi: expand docs for SEV commands
  qapi: make SEV commands unconditionally available
  qapi: expose query-gic-capability command unconditionally
  qapi: make SGX commands unconditionally available
  qapi: make Xen event commands unconditionally available
  qapi: remove the misc-target.json file
  qapi: make s390x specific CPU commands unconditionally available

Philippe Mathieu-Daudé (1):
  qapi: Make CpuModelExpansionInfo::deprecated-props optional and
    generic

Pierrick Bouvier (6):
  qapi: make most CPU commands unconditionally available
  qapi: remove qapi_specific_outputs from meson.build
  qapi: make all generated files common
  qapi: use imperative style in documentation
  qapi/misc-i386: s/field will be set/field is set/
  qapi/misc-i386: move errors to their own documentation section

 MAINTAINERS                               |   1 -
 qapi/audio.json                           |   2 +-
 qapi/char.json                            |   4 +-
 qapi/cryptodev.json                       |   2 +-
 qapi/machine-s390x.json                   | 121 +++++
 qapi/machine-target.json                  | 523 ----------------------
 qapi/machine.json                         | 367 ++++++++++++++-
 qapi/migration.json                       |   8 +-
 qapi/misc-arm.json                        |  49 ++
 qapi/{misc-target.json => misc-i386.json} | 165 +++----
 qapi/qapi-schema.json                     |   5 +-
 qapi/ui.json                              |   8 +-
 include/hw/s390x/cpu-topology.h           |   2 +-
 hw/i386/kvm/xen-stubs.c                   |  13 -
 hw/i386/kvm/xen_evtchn.c                  |   2 +-
 hw/i386/monitor.c                         |   2 +-
 hw/i386/sgx-stub.c                        |   2 +-
 hw/i386/sgx.c                             |   2 +-
 hw/s390x/cpu-topology.c                   |   4 +-
 hw/s390x/s390-skeys.c                     |   1 -
 stubs/monitor-arm-gic.c                   |  12 +
 stubs/monitor-cpu-s390x-kvm.c             |  22 +
 stubs/monitor-cpu-s390x.c                 |  23 +
 stubs/monitor-cpu.c                       |  21 +
 stubs/monitor-i386-rtc.c                  |  12 +
 stubs/monitor-i386-sev.c                  |  36 ++
 stubs/monitor-i386-sgx.c                  |  17 +
 stubs/monitor-i386-xen.c                  |  16 +
 target/arm/arm-qmp-cmds.c                 |   4 +-
 target/i386/cpu-system.c                  |   2 +-
 target/i386/cpu.c                         |   2 +-
 target/i386/monitor.c                     |   1 -
 target/i386/sev-system-stub.c             |  32 --
 target/i386/sev.c                         |   2 +-
 target/loongarch/loongarch-qmp-cmds.c     |   2 +-
 target/mips/system/mips-qmp-cmds.c        |  12 +-
 target/ppc/ppc-qmp-cmds.c                 |  12 +-
 target/riscv/riscv-qmp-cmds.c             |   2 +-
 target/s390x/cpu_models_system.c          |   2 +-
 tests/qtest/qmp-cmd-test.c                |   1 +
 qapi/meson.build                          |  33 +-
 stubs/meson.build                         |   8 +
 42 files changed, 833 insertions(+), 724 deletions(-)
 create mode 100644 qapi/machine-s390x.json
 delete mode 100644 qapi/machine-target.json
 create mode 100644 qapi/misc-arm.json
 rename qapi/{misc-target.json => misc-i386.json} (75%)
 create mode 100644 stubs/monitor-arm-gic.c
 create mode 100644 stubs/monitor-cpu-s390x-kvm.c
 create mode 100644 stubs/monitor-cpu-s390x.c
 create mode 100644 stubs/monitor-cpu.c
 create mode 100644 stubs/monitor-i386-rtc.c
 create mode 100644 stubs/monitor-i386-sev.c
 create mode 100644 stubs/monitor-i386-sgx.c
 create mode 100644 stubs/monitor-i386-xen.c

-- 
2.47.2


Re: [PATCH v4 00/15] qapi: remove all TARGET_* conditionals from the schema
Posted by Markus Armbruster 6 months, 3 weeks ago
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:

> This series exposes all qmp commands for any target unconditionally, allowing to
> compile QAPI generated code without any TARGET conditionals.
>
> Based on original RFC from Daniel P. Berrangé:
> https://lore.kernel.org/qemu-devel/20250508135816.673087-1-berrange@redhat.com/

I picked a few nits.  I'm happy to address them in my tree without a
respin.  If you object to any, please let me know.

Series:
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Re: [PATCH v4 00/15] qapi: remove all TARGET_* conditionals from the schema
Posted by Pierrick Bouvier 6 months, 3 weeks ago
On 5/27/25 6:00 AM, Markus Armbruster wrote:
> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
> 
>> This series exposes all qmp commands for any target unconditionally, allowing to
>> compile QAPI generated code without any TARGET conditionals.
>>
>> Based on original RFC from Daniel P. Berrangé:
>> https://lore.kernel.org/qemu-devel/20250508135816.673087-1-berrange@redhat.com/
> 
> I picked a few nits.  I'm happy to address them in my tree without a
> respin.  If you object to any, please let me know.
> 

I'm ok if you want to take that in your tree, and address them directly.
All the comments change requested are ok for me.
I'll answer on individual commits for your questions.

If you expect a respin on my side, let me know (from what I understand, 
it's not expected at this point).

Thanks,
Pierrick

> Series:
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
> 


Re: [PATCH v4 00/15] qapi: remove all TARGET_* conditionals from the schema
Posted by Markus Armbruster 6 months, 3 weeks ago
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:

> On 5/27/25 6:00 AM, Markus Armbruster wrote:
>> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
>> 
>>> This series exposes all qmp commands for any target unconditionally, allowing to
>>> compile QAPI generated code without any TARGET conditionals.
>>>
>>> Based on original RFC from Daniel P. Berrangé:
>>> https://lore.kernel.org/qemu-devel/20250508135816.673087-1-berrange@redhat.com/
>> I picked a few nits.  I'm happy to address them in my tree without a
>> respin.  If you object to any, please let me know.
>> 
>
> I'm ok if you want to take that in your tree, and address them directly.
> All the comments change requested are ok for me.
> I'll answer on individual commits for your questions.
>
> If you expect a respin on my side, let me know (from what I understand, it's not expected at this point).

Correct.  Thanks!

[...]