All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Zhao Liu" <zhao1.liu@intel.com>,
	"Mark Burton" <mburton@qti.qualcomm.com>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Alessandro Di Federico" <ale@rev.ng>,
	"Alistair Francis" <alistair.francis@wdc.com>,
	"Anton Johansson" <anjo@rev.ng>, "Brian Cain" <bcain@quicinc.com>,
	"Daniel P. Berrange" <berrange@redhat.com>,
	"Chao Peng" <chao.p.peng@linux.intel.com>,
	"Neo Jia" <cjia@nvidia.com>, "Cédric Le Goater" <clg@kaod.org>,
	"Wedgwood, Chris" <cw@f00f.org>,
	dhedde@kalrayinc.com, "Eric Blake" <eblake@redhat.com>,
	eblot@rivosinc.com,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	"Elena Ufimtseva" <elena.ufimtseva@oracle.com>,
	"Auger Eric" <eric.auger@redhat.com>,
	"Felipe Franciosi" <felipe@nutanix.com>,
	iggy@theiggy.com, "Warner Losh" <imp@bsdimp.com>,
	"Jan Kiszka" <jan.kiszka@web.de>,
	"Jason Gunthorpe" <jgg@nvidia.com>,
	"Jidong Xiao" <jidong.xiao@gmail.com>,
	"Jim Shu" <jim.shu@sifive.com>,
	"Joao Martins" <joao.m.martins@oracle.com>,
	"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>,
	"Luc Michel" <luc@lmichel.fr>,
	"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
	"Max Chou" <max.chou@sifive.com>,
	"Meirav Dean" <mdean@redhat.com>,
	mimu@linux.vnet.ibm.com, "Ho, Nelson" <nelson.ho@windriver.com>,
	"Paul Walmsley" <paul.walmsley@sifive.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"QEMU Developers" <qemu-devel@nongnu.org>,
	"Roberto Campesato" <rbc@meta.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Shameerali Kolothum Thodi"
	<shameerali.kolothum.thodi@huawei.com>,
	"Bernhard Beschow" <shentey@gmail.com>,
	"Stefan Hajnoczi" <stefanha@gmail.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Wei Wang" <wei.w.wang@intel.com>,
	z.huo@139.com, "LIU Zhiwei" <zhiwei_liu@linux.alibaba.com>,
	"Wu, Zhiyong" <zwu.kernel@gmail.com>
Subject: Re: KVM/QEMU Community call 29/04/2025 agenda items?
Date: Wed, 30 Apr 2025 12:41:17 +0200	[thread overview]
Message-ID: <87a57ydj8y.fsf@pond.sub.org> (raw)
In-Reply-To: <CABgObfYmm2RgFUuViDJA_cuqeCUOh_DV5Qar8YLnrbfYVV39VQ@mail.gmail.com> (Paolo Bonzini's message of "Tue, 29 Apr 2025 16:24:49 +0200")

Paolo Bonzini <pbonzini@redhat.com> writes:

> Il lun 28 apr 2025, 14:58 Philippe Mathieu-Daudé <philmd@linaro.org> ha
> scritto:
>
>> On 28/4/25 13:05, Alex Bennée wrote:
>> >
>> > Hi,
>> >
>> > The KVM/QEMU community call is at:
>> >
>> > https://meet.jit.si/kvmcallmeeting
>> > @
>> > 29/04/2025 14:00 UTC
>> >
>> > Are there any agenda items for the sync-up?
>> >
>>
>> For single binary / heterogeneous emulation, we'd like QAPI to
>> be "feature-agnostic". In particular, using the example of KVM
>> accelerator, whether a binary can run with it built-in or not
>> should be is irrelevant for management applications: they should
>> only check if it is used (enabled).
>>
>> The following series is adding KVM specific structures and commands:
>>
>> https://lore.kernel.org/qemu-devel/20250409082649.14733-2-zhao1.liu@intel.com/
>> It could be interesting to discuss if this can be avoided. But this
>> can also be discussed on the mailing list (as it is still currently).
>>
>
> Would it be possible to just mark the commands as "do not autoregister" and
> then do the registration (for example) at machine/accelerator/CPU creation?
>
> I think qemu-ga already has a similar run-time registration model but I
> don't know why QEMU does not use it.

I think we covered this to a degree in

    Subject: Re: [RFC PATCH 0/3] single-binary: make QAPI generated files common
    Message-ID: <87a584b69n.fsf@pond.sub.org>
    https://lore.kernel.org/qemu-devel/87a584b69n.fsf@pond.sub.org/

But let me try to give you a shorter argument.

Pierrick's stated goal is to have no noticable differences between the
single binary and the qemu-system-<target> it covers.

We have two external interfaces to worry about: QMP and the command
line.  Let's ignore the latter for now.

Target-specific differences in *syntax* come from QAPI schema
conditionals with target-specific conditions.  Example:

    { 'command': 'query-cpu-definitions', 'returns': ['CpuDefinitionInfo'],
      'if': { 'any': [ 'TARGET_PPC',
                       'TARGET_ARM',
                       'TARGET_I386',
                       'TARGET_S390X',
                       'TARGET_MIPS',
                       'TARGET_LOONGARCH64',
                       'TARGET_RISCV' ] } }

This command is only defined for some targets.

The value of query-qmp-schema reflects this: it has
query-cpu-definitions exactly when the condition is satisfied.  The
condition is evaluated at compile-time, because that's how QAPI schema
'if' works.

Say we drop the condition and instead add an equivalent run-time
condition to command registration.  This preserves behavior of command
execution.  But query-qmp-schema now has query-cpu-definitions *always*.
This is a noticable difference.  It may break management applications
that use query-qmp-schema to probe for the command.

Moreover, conditionals aren't limited to commands.  Example:

    { 'struct': 'CpuModelExpansionInfo',
      'data': { 'model': 'CpuModelInfo',
                'deprecated-props' : { 'type': ['str'],
--->                                   'if': 'TARGET_S390X' } },
      'if': { 'any': [ 'TARGET_S390X',
                       'TARGET_I386',
                       'TARGET_ARM',
                       'TARGET_LOONGARCH64',
                       'TARGET_RISCV' ] } }

Here we have a conditional member.

Another example: the KVM PMU filter series linked above wants to define

    { 'enum': 'KvmPmuEventFormat',
      'data': ['raw', 'x86-select-umask', 'x86-masked-entry'] }

The enum makes sense only when we have CONFIG_KVM.  Member @raw makes
sense regardless of target then.  The other two only for TARGET_I386.

We could elect to forgo such conditionals.  The main disadvantage is
loss of precision in query-qmp-schema.  Which may or may not matter, and
may or may not box us into corners.

Pierrick volunteered to explore evaluating target-specific QAPI-Schem
conditionals at run-time instead of compile-time.  This would preserve
the value of query-qmp-schema, unlike conditional command registration.

Finally, syntax isn't everything.  We need to preserve behavior, too.
But that's a separate topic.



  reply	other threads:[~2025-04-30 10:42 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-28 11:05 KVM/QEMU Community call 29/04/2025 agenda items? Alex Bennée
2025-04-28 12:57 ` Philippe Mathieu-Daudé
2025-04-29 10:09   ` Philippe Mathieu-Daudé
2025-04-29 14:24   ` Paolo Bonzini
2025-04-30 10:41     ` Markus Armbruster [this message]
2025-04-30 11:16       ` Daniel P. Berrangé
2025-05-07  8:24         ` Zhao Liu
2025-05-07 14:34           ` Philippe Mathieu-Daudé
2025-04-30 14:36       ` Philippe Mathieu-Daudé
2025-05-07 15:11         ` Markus Armbruster
2025-05-08  8:47           ` Zhao Liu
2025-05-08 12:32             ` Markus Armbruster
2025-05-08 14:09           ` Daniel P. Berrangé
2025-04-29 15:20 ` Alex Bennée

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=87a57ydj8y.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=ale@rev.ng \
    --cc=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=anjo@rev.ng \
    --cc=bcain@quicinc.com \
    --cc=berrange@redhat.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=cjia@nvidia.com \
    --cc=clg@kaod.org \
    --cc=cw@f00f.org \
    --cc=dhedde@kalrayinc.com \
    --cc=eblake@redhat.com \
    --cc=eblot@rivosinc.com \
    --cc=edgar.iglesias@gmail.com \
    --cc=eduardo@habkost.net \
    --cc=elena.ufimtseva@oracle.com \
    --cc=eric.auger@redhat.com \
    --cc=felipe@nutanix.com \
    --cc=iggy@theiggy.com \
    --cc=imp@bsdimp.com \
    --cc=jan.kiszka@web.de \
    --cc=jgg@nvidia.com \
    --cc=jidong.xiao@gmail.com \
    --cc=jim.shu@sifive.com \
    --cc=joao.m.martins@oracle.com \
    --cc=konrad.wilk@oracle.com \
    --cc=luc@lmichel.fr \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=max.chou@sifive.com \
    --cc=mburton@qti.qualcomm.com \
    --cc=mdean@redhat.com \
    --cc=mimu@linux.vnet.ibm.com \
    --cc=nelson.ho@windriver.com \
    --cc=paul.walmsley@sifive.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rbc@meta.com \
    --cc=richard.henderson@linaro.org \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=shentey@gmail.com \
    --cc=stefanha@gmail.com \
    --cc=thuth@redhat.com \
    --cc=wei.w.wang@intel.com \
    --cc=z.huo@139.com \
    --cc=zhao1.liu@intel.com \
    --cc=zhiwei_liu@linux.alibaba.com \
    --cc=zwu.kernel@gmail.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.