Re: [PATCH v16 08/11] qapi/s390x/cpu topology: set-cpu-topology monitor command

Nina Schoetterl-Glausch
2023-02-27T12:51:56Z

On Mon, 2023-02-27 at 13:25 +0100, Markus Armbruster wrote:
> Nina Schoetterl-Glausch <nsg@linux.ibm.com> writes:
>
> > On Mon, 2023-02-27 at 08:59 +0100, Thomas Huth wrote:
>
> [...]
>
> > > I'm not sure whether double inclusion works with the QAPI parser (since this
> > > might code to be generated twice) ... have you tried?
> >
> > I haven't, the documentation says:
> >
> > > Include directives
> > > ------------------
> > >
> > > Syntax::
> > >
> > > INCLUDE = { 'include': STRING }
> > >
> > > The QAPI schema definitions can be modularized using the 'include' directive::
> > >
> > > { 'include': 'path/to/file.json' }
> > >
> > > The directive is evaluated recursively, and include paths are relative
> > > to the file using the directive. Multiple includes of the same file
> > > are idempotent.
> >
> > Which is why I thought it should work, but I guess this is a statement about
> > including the same file twice in another file and not about including the same
> > file from two files.
>
> No, this is intended to say multiple inclusion is fine, regardless where
> the include directives are.
>
> An include directive has two effects:
>
> 1. If the included file has not been included already, pull in its
> contents.
>
> 2. Insert #include in generated C. Example: qdev.json includes
> qom.json. The generated qapi-*-qdev.h include qapi-types-qom.h.
>
> Including any required modules, as recommended by qapi-code-gen.rst,
> results in properly self-contained generated headers.

Ok, thanks. Not sure if another phrasing would be better given the intended
meaning is the way I read it initially.

>
> > But then, as far as I can tell, the build system only builds qapi-schema.json,
> > which includes all other files, so it could apply.
>
> Yes, qapi-schema.json is the main module, which includes all the others.
>
> In fact, it includes all the others *directly*. Why?
>
> We generate documentation in source order. Included material gets
> inserted right at the first inclusion; subsequent inclusions have no
> effect.
>
> If we put all first inclusions right into qapi-schema.json, the order of
> things in documentation is visible right there, and won't change just
> because we change inclusions deeper down.
>
> Questions?

CpuS390Entitlement would be useful in both machine.json and machine-target.json
because query-cpu-fast is defined in machine.json and set-cpu-topology is defined
in machine-target.json.
So then the question is where best to define CpuS390Entitlement.
In machine.json and include machine.json in machine-target.json?
Or define it in another file and include it from both?

Thanks