Ping Philippe?

> > 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.
> 
> NB, ...makes sense only when we have CONFIG_KVM **and** the QEMU
> process was launched with '-accel kvm'.
> 
> It feels strange that we want our reported schema show a difference when
> we launch "qemu-system-x86_64 -accel tcg" between two builds one with
> and without CONFIG_KVM, when KVM is not in use ? 
> 
> Or to reverse the question, why does it matter if we report existence
> of KvmPmuEventFormat unconditionally ?
> 
> > 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.
> 
> Is the precision we have justifiable ?
> 
> When it comes to runtime configuration QMP is already imprecise.
> 
> eg set-cpu-topology on x390 is KVM only but still there
>    when running with TCG
> 
> eg reporting query-hotpluggable-cpus on machine types that
>    lack hotplug
> 
> eg reporting set-numa-node on arches/machines that lack NUMA
> 
> eg reporting query-balloon when no balloon device is present
> 
> eg reporting various xen- commands when either the target
>    or machine type lack Xen support
> 
> eg reporting many cxl-* commands when either the target
>    or machine type lacks CXL support.

Indeed, I think Daniel's examples are great. @Philipppe, are these cases
considered in the context of single binary/heterogeneous emulation?

> IOW the use of TARGET_ conditionals are only addressing a very
> narrow area of (im)precision, whose rationale is largely an
> artifact of our historical separate binary / multiple builds
> choice. The only real justification for continuing with this
> is that we've always done it.
> 
> Creating a general runtime conditional mechanism in QAPI feels
> like opening a pandora's box.
> 
> We'll have a mechanism but it will be impractical to use it fully
> enough to be able to claim we are actually precise. The scope of
> runtime choices/conditions is too huge.
> 
> It risks creating a mechanism that requires a never ending stream
> of patches to address continually reported gaps. A potentially
> significant maintainer burden.
> 
> By comparison the CONFIG_ conditionals in QAPI, both the scope
> and semantics clear and it is a fairly tractable problem, although
> even there we miss them eg lack of CONFIG_XEN conditions on xen
> commands.
> 

Reply via email to