All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
Cc: qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"David Hildenbrand" <david@redhat.com>,
	"Halil Pasic" <pasic@linux.ibm.com>,
	"Christian Borntraeger" <borntraeger@linux.ibm.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Michael Roth" <michael.roth@amd.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Ilya Leoshkevich" <iii@linux.ibm.com>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Beraldo Leal" <bleal@redhat.com>,
	"Pierre Morel" <pmorel@linux.ibm.com>
Subject: Re: [PATCH v23 01/20] CPU topology: extend with s390 specifics
Date: Wed, 20 Sep 2023 12:57:01 +0200	[thread overview]
Message-ID: <875y45kt8i.fsf@pond.sub.org> (raw)
In-Reply-To: <e6ab27f4ef55d88f9585101434f900bd066145d6.camel@linux.ibm.com> (Nina Schoetterl-Glausch's message of "Tue, 19 Sep 2023 19:51:34 +0200")

Nina Schoetterl-Glausch <nsg@linux.ibm.com> writes:

> On Tue, 2023-09-19 at 14:47 +0200, Markus Armbruster wrote:
>> Nina Schoetterl-Glausch <nsg@linux.ibm.com> writes:
>> 
>> > From: Pierre Morel <pmorel@linux.ibm.com>
>> > 
>> > S390 adds two new SMP levels, drawers and books to the CPU
>> > topology.
>> > S390 CPUs have specific topology features like dedication and
>> > entitlement. These indicate to the guest information on host
>> > vCPU scheduling and help the guest make better scheduling decisions.
>> > 
>> > Let us provide the SMP properties with books and drawers levels
>> > and S390 CPU with dedication and entitlement,
>> > 
>> > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
>> > Reviewed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
>> > Co-developed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
>> > Signed-off-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
>> > ---
>> >  qapi/machine-common.json            | 21 +++++++++++++
>> >  qapi/machine.json                   | 19 ++++++++++--
>> >  include/hw/boards.h                 | 10 +++++-
>> >  include/hw/qdev-properties-system.h |  4 +++
>> >  target/s390x/cpu.h                  |  6 ++++
>> >  hw/core/machine-smp.c               | 48 ++++++++++++++++++++++++-----
>> >  hw/core/machine.c                   |  4 +++
>> >  hw/core/qdev-properties-system.c    | 13 ++++++++
>> >  hw/s390x/s390-virtio-ccw.c          |  4 +++
>> >  softmmu/vl.c                        |  6 ++++
>> >  target/s390x/cpu.c                  |  7 +++++
>> >  qapi/meson.build                    |  1 +
>> >  qemu-options.hx                     |  7 +++--
>> >  13 files changed, 137 insertions(+), 13 deletions(-)
>> >  create mode 100644 qapi/machine-common.json
>> > 
>> > diff --git a/qapi/machine-common.json b/qapi/machine-common.json
>> > new file mode 100644
>> > index 0000000000..e40421bb37
>> > --- /dev/null
>> > +++ b/qapi/machine-common.json
>> 
>> Why do you need a separate QAPI sub-module?
>
> See here https://lore.kernel.org/qemu-devel/d8da6f7d1e3addcb63614f548ed77ac1b8895e63.camel@linux.ibm.com/

Quote:

    CpuS390Entitlement would be useful in both machine.json and machine-target.json

This is not obvious from this patch.  I figure this patch could add it
to machine.json just fine.  The use in machine-target.json in appears
only in PATCH 08.

    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?

You do the latter in this patch.

I figure the former would be tolerable, too.

That said, having target-specific stuff in machine.json feels... odd.
Before this series, we have CpuInfoS390 and CpuS390State there, for
query-cpus-fast.  That command returns a list of objects where common
members are target-independent, and the variant members are
target-dependent.  qmp_query_cpus_fast() uses a CPU method to populate
the target-dependent members.

I'm not sure splitting query-cpus-fast into a target-dependent and a
target-independent part is worth the bother.

In this patch, you work with the structure you found.  Can't fault you
for that :)

>> > @@ -0,0 +1,21 @@
>> > +# -*- Mode: Python -*-
>> > +# vim: filetype=python
>> > +#
>> > +# This work is licensed under the terms of the GNU GPL, version 2 or later.
>> > +# See the COPYING file in the top-level directory.
>> > +
>> > +##
>> > +# = Machines S390 data types
>> > +##
>> > +
>> > +##
>> > +# @CpuS390Entitlement:
>> > +#
>> > +# An enumeration of cpu entitlements that can be assumed by a virtual
>> > +# S390 CPU
>> > +#
>> > +# Since: 8.2
>> > +##
>> > +{ 'enum': 'CpuS390Entitlement',
>> > +  'prefix': 'S390_CPU_ENTITLEMENT',
>> > +  'data': [ 'auto', 'low', 'medium', 'high' ] }
>> > diff --git a/qapi/machine.json b/qapi/machine.json
>> > index a08b6576ca..a63cb951d2 100644
>> > --- a/qapi/machine.json
>> > +++ b/qapi/machine.json
>> > @@ -9,6 +9,7 @@
>>    ##
>>    # = Machines
>> >  ##
>> >  
>> >  { 'include': 'common.json' }
>> > +{ 'include': 'machine-common.json' }
>> 
>> Section structure is borked :)
>> 
>> Existing section "Machine" now ends at the new "Machines S390 data
>> types" you pull in here.  The contents of below moves from "Machines" to
>> "Machines S390 data types".
>> 
>> Before I explain how to avoid this, I'd like to understand why we need a
>> new sub-module.
>> 
>> >  
>> >  ##
>> >  # @SysEmuTarget:
>> > @@ -71,7 +72,7 @@
>>    ##
>>    # @CpuInfoFast:
>>    #
>>    # Information about a virtual CPU
>>    #
>>    # @cpu-index: index of the virtual CPU
>>    #
>>    # @qom-path: path to the CPU object in the QOM tree
>> >  #
>> >  # @thread-id: ID of the underlying host thread
>> >  #
>> > -# @props: properties describing to which node/socket/core/thread
>> > +# @props: properties describing to which node/drawer/book/socket/core/thread
>> >  #     virtual CPU belongs to, provided if supported by board
>> 
>> Is this description accurate?
>
> Kinda, although the wording might not be the best.
> All the CpuInstanceProperties fields are optional, it's like a superset of possible
> properties across architectures.
> Only a subset might be returned by query-cpus-fast.

Let's see whether I got this right...

The members of CpuInstanceProperties are properties you can pass to
device_add for some targets.

The members present in a response from query-cpus-fast are properties
you must pass to device_add in this VM.  Or is that a "may pass"?

On what exactly does the set of present members depend?  Just the
target?  The machine type?  The CPU?  Anything else?

> Also die and cluster are missing.

Does this need fixing?

>> @props is of type CpuInstanceProperties, shown below.  Its documentation
>> describes it as "properties to be used for hotplugging a CPU instance,
>> it should be passed by management with device_add command when a CPU is
>> being hotplugged."  Hmm.
>> 
>> I figure details ("node/drawer/book/socket/core/thread") are better left
>> to CpuInstanceProperties.
>> 
>> The "provided if supported by board" part makes no sense to me.  If
>> @props is there, it lists the properties we need to provide with
>> device_add.  What if it's not there?  Same as empty list, i.e. we don't
>> need to provide properties with device_add?
>
> There are default values/default logic.
> For s390x, socket, book, drawer are calculated from the core id
> if not provided with device_add.
> Partial specifications are rejected.

Undocumented magic?

>> Not your patch's fault, but let's get this in shape if we can.

[...]



  reply	other threads:[~2023-09-20 10:58 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-14 12:06 [PATCH v23 00/20] s390x: CPU Topology Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 01/20] CPU topology: extend with s390 specifics Nina Schoetterl-Glausch
2023-09-19 12:47   ` Markus Armbruster
2023-09-19 17:51     ` Nina Schoetterl-Glausch
2023-09-20 10:57       ` Markus Armbruster [this message]
2023-09-21 19:02         ` Nina Schoetterl-Glausch
2023-09-22  6:13           ` Markus Armbruster
2023-09-25 16:06     ` Nina Schoetterl-Glausch
2023-09-25 17:19       ` Markus Armbruster
2023-09-20 11:11   ` Markus Armbruster
2023-09-22 11:11     ` Nina Schoetterl-Glausch
2023-09-22 13:15       ` Markus Armbruster
2023-09-14 12:06 ` [PATCH v23 02/20] s390x/cpu topology: add topology entries on CPU hotplug Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 03/20] target/s390x/cpu topology: handle STSI(15) and build the SYSIB Nina Schoetterl-Glausch
2023-09-19 13:37   ` Nina Schoetterl-Glausch
2023-09-20 11:13   ` Markus Armbruster
2023-09-14 12:06 ` [PATCH v23 04/20] s390x/sclp: reporting the maximum nested topology entries Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 05/20] s390x/cpu topology: resetting the Topology-Change-Report Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 06/20] s390x/cpu topology: interception of PTF instruction Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 07/20] target/s390x/cpu topology: activate CPU topology Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 08/20] qapi/s390x/cpu topology: set-cpu-topology qmp command Nina Schoetterl-Glausch
2023-09-20 11:36   ` Markus Armbruster
2023-09-25 16:00     ` Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 09/20] machine: adding s390 topology to query-cpu-fast Nina Schoetterl-Glausch
2023-09-20 11:44   ` Markus Armbruster
2023-09-14 12:06 ` [PATCH v23 10/20] machine: adding s390 topology to info hotpluggable-cpus Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 11/20] qapi/s390x/cpu topology: CPU_POLARIZATION_CHANGE qapi event Nina Schoetterl-Glausch
2023-09-20 11:49   ` Markus Armbruster
2023-09-14 12:06 ` [PATCH v23 12/20] qapi/s390x/cpu topology: query-cpu-polarization qmp command Nina Schoetterl-Glausch
2023-09-20 11:51   ` Markus Armbruster
2023-09-14 12:06 ` [PATCH v23 13/20] docs/s390x/cpu topology: document s390x cpu topology Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 14/20] tests/avocado: s390x cpu topology core Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 15/20] tests/avocado: s390x cpu topology polarization Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 16/20] tests/avocado: s390x cpu topology entitlement tests Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 17/20] tests/avocado: s390x cpu topology test dedicated CPU Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 18/20] tests/avocado: s390x cpu topology test socket full Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 19/20] tests/avocado: s390x cpu topology dedicated errors Nina Schoetterl-Glausch
2023-09-14 12:06 ` [PATCH v23 20/20] tests/avocado: s390x cpu topology bad move Nina Schoetterl-Glausch

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=875y45kt8i.fsf@pond.sub.org \
    --to=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=bleal@redhat.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=crosa@redhat.com \
    --cc=david@redhat.com \
    --cc=eblake@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=farman@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=michael.roth@amd.com \
    --cc=nsg@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    --cc=wainersm@redhat.com \
    --cc=wangyanan55@huawei.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.