qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
To: Pierre Morel <pmorel@linux.ibm.com>, qemu-s390x@nongnu.org
Cc: qemu-devel@nongnu.org, borntraeger@de.ibm.com,
	pasic@linux.ibm.com, richard.henderson@linaro.org,
	david@redhat.com, thuth@redhat.com, cohuck@redhat.com,
	mst@redhat.com, pbonzini@redhat.com, kvm@vger.kernel.org,
	ehabkost@redhat.com, marcel.apfelbaum@gmail.com,
	eblake@redhat.com, armbru@redhat.com, seiden@linux.ibm.com,
	nrb@linux.ibm.com, frankja@linux.ibm.com, berrange@redhat.com,
	clg@kaod.org
Subject: Re: [PATCH v15 06/11] s390x/cpu topology: interception of PTF instruction
Date: Tue, 07 Feb 2023 12:27:56 +0100	[thread overview]
Message-ID: <b3c206df9dc08c094c0c717b0cb6457d29ed9925.camel@linux.ibm.com> (raw)
In-Reply-To: <f5c6b04a-0faa-ba36-9019-468662b9fbb2@linux.ibm.com>

On Tue, 2023-02-07 at 10:59 +0100, Pierre Morel wrote:
> 
> On 2/6/23 19:34, Nina Schoetterl-Glausch wrote:
> > On Wed, 2023-02-01 at 14:20 +0100, Pierre Morel wrote:
> > > When the host supports the CPU topology facility, the PTF
> > > instruction with function code 2 is interpreted by the SIE,
> > > provided that the userland hypervizor activates the interpretation
> > > by using the KVM_CAP_S390_CPU_TOPOLOGY KVM extension.
> > > 
> > > The PTF instructions with function code 0 and 1 are intercepted
> > > and must be emulated by the userland hypervizor.
> > > 
> > > During RESET all CPU of the configuration are placed in
> > > horizontal polarity.
> > > 
> > > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> > > ---
> > >   include/hw/s390x/s390-virtio-ccw.h |   6 ++
> > >   target/s390x/cpu.h                 |   1 +
> > >   hw/s390x/cpu-topology.c            | 103 +++++++++++++++++++++++++++++
> > >   target/s390x/cpu-sysemu.c          |  14 ++++
> > >   target/s390x/kvm/kvm.c             |  11 +++
> > >   5 files changed, 135 insertions(+)
> > > 
> > [...]
> > 
> > > diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c
> > > index cf63f3dd01..1028bf4476 100644
> > > --- a/hw/s390x/cpu-topology.c
> > > +++ b/hw/s390x/cpu-topology.c
> > > @@ -85,16 +85,104 @@ static void s390_topology_init(MachineState *ms)
> > >       QTAILQ_INSERT_HEAD(&s390_topology.list, entry, next);
> > >   }
> > >   
> > > +/**
> > > + * s390_topology_set_cpus_polarity:
> > > + * @polarity: polarity requested by the caller
> > > + *
> > > + * Set all CPU entitlement according to polarity and
> > > + * dedication.
> > > + * Default vertical entitlement is POLARITY_VERTICAL_MEDIUM as
> > > + * it does not require host modification of the CPU provisioning
> > > + * until the host decide to modify individual CPU provisioning
> > > + * using QAPI interface.
> > > + * However a dedicated vCPU will have a POLARITY_VERTICAL_HIGH
> > > + * entitlement.
> > > + */
> > > +static void s390_topology_set_cpus_polarity(int polarity)
> > 
> > Since you set the entitlement field I'd prefer _set_cpus_entitlement or similar.
> 
> OK if you prefer.
> 
> > 
> > > +{
> > > +    CPUState *cs;
> > > +
> > > +    CPU_FOREACH(cs) {
> > > +        if (polarity == POLARITY_HORIZONTAL) {
> > > +            S390_CPU(cs)->env.entitlement = 0;
> > > +        } else if (S390_CPU(cs)->env.dedicated) {
> > > +            S390_CPU(cs)->env.entitlement = POLARITY_VERTICAL_HIGH;
> > > +        } else {
> > > +            S390_CPU(cs)->env.entitlement = POLARITY_VERTICAL_MEDIUM;
> > > +        }
> > > +    }
> > > +}
> > > +
> > [...]
> > >   
> > >   /**
> > > @@ -137,6 +225,21 @@ static void s390_topology_cpu_default(S390CPU *cpu, Error **errp)
> > >                             (smp->books * smp->sockets * smp->cores)) %
> > >                            smp->drawers;
> > >       }
> > 
> > Why are the changes below in this patch?
> 
> Because before thos patch we have only horizontal polarization.

Not really since you only enable topology in the next patch.
> 
> > 
> > > +
> > > +    /*
> > > +     * Machine polarity is set inside the global s390_topology structure.
> > > +     * In the case the polarity is set as horizontal set the entitlement
> 
> Sorry here an error in the comment should be :
> "In the case the polarity is NOT set as horizontal..."
> 
> > > +     * to POLARITY_VERTICAL_MEDIUM which is the better equivalent when
> > > +     * machine polarity is set to vertical or POLARITY_VERTICAL_HIGH if
> > > +     * the vCPU is dedicated.
> > > +     */
> > > +    if (s390_topology.polarity && !env->entitlement) {
> > 
> > It'd be more readable if you compared against enum values by name.
> 
> Right, I will change this to
> 
>      if (s390_topology.polarity != S390_POLARITY_HORIZONTAL &&
>          env->entitlement == S390_ENTITLEMENT_UNSET) {
> 
> > 
> > I don't see why you check s390_topology.polarity. If it is horizontal
> > then the value of the entitlement doesn't matter at all, so you can set it
> > to whatever.
> 
> Right, that is why it is done only for vertical polarization (sorry for 
> the wrong comment)

I'm saying you don't need to check it at all. You adjust the values for
vertical polarization, but you could just always do that since the values
don't matter at all if the polarization is horizontal.
> 
> > All you want to do is enforce dedicated -> VERTICAL_HIGH, right?
> > So why don't you just add
> > 
> > +    if (cpu->env.dedicated && cpu->env.entitlement != POLARITY_VERTICAL_HIGH) {
> > +        error_setg(errp, "A dedicated cpu implies high entitlement");
> > +        return;
> > +    } >
> > to s390_topology_check?
> 
> Here it is to set the default in the case the values are not provided.

If no values are provided, they default to dedication=false and entitlement=medium,
as defined by patch 1, which are fine and don't need to be adjusted.

> 
> But where you are right is that I should add a verification to the check 
> function.
> 
> > 
> > > +        if (env->dedicated) {
> > > +            env->entitlement = POLARITY_VERTICAL_HIGH;
> > > +        } else {
> > > +            env->entitlement = POLARITY_VERTICAL_MEDIUM;
> > > +        }
> > 
> > If it is horizontal, then setting the entitlement is pointless as it will be
> > reset to medium on PTF.
> 
> That is why the polarity is tested (sorry for the bad comment)

I said this because I'm fine with setting it pointlessly.

> > So the current polarization is vertical and a cpu is being hotplugged,
> > but setting the entitlement of the cpu being added is also pointless, because
> > it's determined by the dedication. That seems weird.
> 
> No it is not determined by the dedication, if there is no dedication the 
> 3 vertical values are possible.

You set it to either high or medium based on the dedication. And for horizontal
polarization it obviously doesn't matter.

As far as I understand you don't need this because the default values are fine.
You should add the check that if a dedicated cpu is hotplugged, then the entitlement
must be high, to patch 2 and that's it, no additional changes necessary.
> 
> 
> Regards,
> Pierre
> 
> > 
> > > +    }
> > >   }
> > >   
> > 
> > [...]
> 



  reply	other threads:[~2023-02-07 11:28 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-01 13:20 [PATCH v15 00/11] s390x: CPU Topology Pierre Morel
2023-02-01 13:20 ` [PATCH v15 01/11] s390x/cpu topology: adding s390 specificities to CPU topology Pierre Morel
2023-02-02 10:44   ` Thomas Huth
2023-02-02 13:15     ` Pierre Morel
2023-02-02 16:05   ` Nina Schoetterl-Glausch
2023-02-03  9:39     ` Pierre Morel
2023-02-03 11:21       ` Thomas Huth
2023-02-08 17:50   ` Nina Schoetterl-Glausch
2023-02-10 14:19     ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 02/11] s390x/cpu topology: add topology entries on CPU hotplug Pierre Morel
2023-02-02 16:42   ` Nina Schoetterl-Glausch
2023-02-03  9:21     ` Pierre Morel
2023-02-03 13:22       ` Nina Schoetterl-Glausch
2023-02-03 14:40         ` Pierre Morel
2023-02-03 15:38           ` Nina Schoetterl-Glausch
2023-02-01 13:20 ` [PATCH v15 03/11] target/s390x/cpu topology: handle STSI(15) and build the SYSIB Pierre Morel
2023-02-03 17:36   ` Nina Schoetterl-Glausch
2023-02-06 10:06     ` Pierre Morel
2023-02-06 10:32       ` Nina Schoetterl-Glausch
2023-02-06 11:24   ` Thomas Huth
2023-02-06 12:57     ` Pierre Morel
2023-02-09 16:39   ` Nina Schoetterl-Glausch
2023-02-10 14:16     ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 04/11] s390x/sclp: reporting the maximum nested topology entries Pierre Morel
2023-02-06 10:13   ` Thomas Huth
2023-02-06 10:19     ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 05/11] s390x/cpu topology: resetting the Topology-Change-Report Pierre Morel
2023-02-06 11:05   ` Thomas Huth
2023-02-06 12:50     ` Pierre Morel
2023-02-06 17:52   ` Nina Schoetterl-Glausch
2023-02-07  9:24     ` Pierre Morel
2023-02-07 10:50       ` Nina Schoetterl-Glausch
2023-02-07 12:19         ` Pierre Morel
2023-02-07 13:37           ` Nina Schoetterl-Glausch
2023-02-07 14:08             ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 06/11] s390x/cpu topology: interception of PTF instruction Pierre Morel
2023-02-06 11:38   ` Thomas Huth
2023-02-06 13:02     ` Pierre Morel
2023-02-06 18:34   ` Nina Schoetterl-Glausch
2023-02-07  9:59     ` Pierre Morel
2023-02-07 11:27       ` Nina Schoetterl-Glausch [this message]
2023-02-07 13:03         ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 07/11] target/s390x/cpu topology: activating CPU topology Pierre Morel
2023-02-06 11:57   ` Thomas Huth
2023-02-06 13:19     ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 08/11] qapi/s390x/cpu topology: x-set-cpu-topology monitor command Pierre Morel
2023-02-06 12:21   ` Thomas Huth
2023-02-06 14:03     ` Pierre Morel
2023-02-07 14:59   ` Pierre Morel
2023-02-08 18:40   ` Nina Schoetterl-Glausch
2023-02-09 13:14     ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 09/11] machine: adding s390 topology to query-cpu-fast Pierre Morel
2023-02-06 12:38   ` Thomas Huth
2023-02-06 14:12     ` Pierre Morel
2023-02-06 12:41   ` Thomas Huth
2023-02-06 12:49     ` Daniel P. Berrangé
2023-02-06 13:09       ` Thomas Huth
2023-02-06 14:50         ` Daniel P. Berrangé
2023-02-07 10:10           ` Thomas Huth
2023-02-06 14:16       ` Pierre Morel
2023-02-07 18:26   ` Nina Schoetterl-Glausch
2023-02-08  9:11     ` Pierre Morel
2023-02-01 13:20 ` [PATCH v15 10/11] qapi/s390x/cpu topology: CPU_POLARITY_CHANGE qapi event Pierre Morel
2023-02-08 17:35   ` Nina Schoetterl-Glausch
2023-02-09 10:04     ` Daniel P. Berrangé
2023-02-09 11:01       ` Markus Armbruster
2023-02-09 12:12       ` Nina Schoetterl-Glausch
2023-02-09 12:15         ` Daniel P. Berrangé
     [not found]     ` <87y1p8q7v6.fsf@pond.sub.org>
2023-02-09 12:28       ` Nina Schoetterl-Glausch
2023-02-09 13:00         ` Pierre Morel
2023-02-09 14:50           ` Nina Schoetterl-Glausch
2023-02-01 13:20 ` [PATCH v15 11/11] docs/s390x/cpu topology: document s390x cpu topology Pierre Morel
2023-02-08 16:22   ` Nina Schoetterl-Glausch
2023-02-09 17:14 ` [PATCH v15 00/11] s390x: CPU Topology Nina Schoetterl-Glausch
2023-02-10 13:23   ` Pierre Morel

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=b3c206df9dc08c094c0c717b0cb6457d29ed9925.camel@linux.ibm.com \
    --to=nsg@linux.ibm.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=clg@kaod.org \
    --cc=cohuck@redhat.com \
    --cc=david@redhat.com \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=frankja@linux.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mst@redhat.com \
    --cc=nrb@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-s390x@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=seiden@linux.ibm.com \
    --cc=thuth@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).