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 v16 08/11] qapi/s390x/cpu topology: set-cpu-topology monitor command
Date: Mon, 27 Feb 2023 13:15:11 +0100 [thread overview]
Message-ID: <7504a2a236c314bcb5a2030c65b95b32d8b896bf.camel@linux.ibm.com> (raw)
In-Reply-To: <4335eac8-ba5d-5b6c-b19f-4b10a793ba0c@linux.ibm.com>
On Mon, 2023-02-27 at 11:57 +0100, Pierre Morel wrote:
> On 2/24/23 18:15, Nina Schoetterl-Glausch wrote:
> > On Wed, 2023-02-22 at 15:21 +0100, Pierre Morel wrote:
> > > The modification of the CPU attributes are done through a monitor
> > > command.
> > >
> > > It allows to move the core inside the topology tree to optimize
> > > the cache usage in the case the host's hypervisor previously
> > > moved the CPU.
> > >
> > > The same command allows to modify the CPU attributes modifiers
> > > like polarization entitlement and the dedicated attribute to notify
> > > the guest if the host admin modified scheduling or dedication of a vCPU.
> > >
> > > With this knowledge the guest has the possibility to optimize the
> > > usage of the vCPUs.
> > >
> > > The command has a feature unstable for the moment.
> > >
> > > Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
> > > ---
> > > qapi/machine-target.json | 35 +++++++++
> > > include/monitor/hmp.h | 1 +
> > > hw/s390x/cpu-topology.c | 154 +++++++++++++++++++++++++++++++++++++++
> > > hmp-commands.hx | 17 +++++
> > > 4 files changed, 207 insertions(+)
> > >
[...]
> > >
> > > diff --git a/hw/s390x/cpu-topology.c b/hw/s390x/cpu-topology.c
> > > index ed5fc75381..3a7eb441a3 100644
> > > --- a/hw/s390x/cpu-topology.c
> > > +++ b/hw/s390x/cpu-topology.c
> > > @@ -19,6 +19,12 @@
> > >
[...]
> > > +
> > > +void qmp_set_cpu_topology(uint16_t core,
> > > + bool has_socket, uint16_t socket,
> > > + bool has_book, uint16_t book,
> > > + bool has_drawer, uint16_t drawer,
> > > + const char *entitlement_str,
> > > + bool has_dedicated, bool dedicated,
> > > + Error **errp)
> > > +{
> > > + bool has_entitlement = false;
> > > + int entitlement;
> > > + ERRP_GUARD();
> > > +
> > > + if (!s390_has_topology()) {
> > > + error_setg(errp, "This machine doesn't support topology");
> > > + return;
> > > + }
> > > +
> > > + entitlement = qapi_enum_parse(&CpuS390Entitlement_lookup, entitlement_str,
> > > + -1, errp);
> > > + if (*errp) {
> > > + return;
> > > + }
> > > + has_entitlement = entitlement >= 0;
> > Doesn't this allow setting horizontal entitlement? Which shouldn't be possible,
> > only the guest can do it.
>
>
> IMHO it does not, the polarization is set by the guest through the PTF
> instruction, but entitlement is set by the host.
Yes, so when the guests requests vertical polarization, all cpus have a
(vertical) entitlement assigned and will show up as vertical in STSI.
But now, by using the qmp command, the polarization can be reset to horizontal,
even though the guest didn't ask for it.
>
>
> >
> > > +
> > > + s390_change_topology(core, has_socket, socket, has_book, book,
> > > + has_drawer, drawer, has_entitlement, entitlement,
> > > + has_dedicated, dedicated, errp);
> > > +}
> > > +
> > > +void hmp_set_cpu_topology(Monitor *mon, const QDict *qdict)
> > > +{
> > > + const uint16_t core = qdict_get_int(qdict, "core-id");
> > > + bool has_socket = qdict_haskey(qdict, "socket-id");
> > > + const uint16_t socket = qdict_get_try_int(qdict, "socket-id", 0);
> > > + bool has_book = qdict_haskey(qdict, "book-id");
> > > + const uint16_t book = qdict_get_try_int(qdict, "book-id", 0);
> > > + bool has_drawer = qdict_haskey(qdict, "drawer-id");
> > > + const uint16_t drawer = qdict_get_try_int(qdict, "drawer-id", 0);
> > The names here don't match the definition below, leading to a crash,
> > because core-id is a mandatory argument.
>
>
> right, I should have kept the original names or change both.
>
>
> >
> > > + const char *entitlement = qdict_get_try_str(qdict, "entitlement");
> > > + bool has_dedicated = qdict_haskey(qdict, "dedicated");
> > > + const bool dedicated = qdict_get_try_bool(qdict, "dedicated", false);
> > > + Error *local_err = NULL;
> > > +
> > > + qmp_set_cpu_topology(core, has_socket, socket, has_book, book,
> > > + has_drawer, drawer, entitlement,
> > > + has_dedicated, dedicated, &local_err);
> > > + hmp_handle_error(mon, local_err);
> > > +}
> > > diff --git a/hmp-commands.hx b/hmp-commands.hx
> > > index fbb5daf09b..d8c37808c7 100644
> > > --- a/hmp-commands.hx
> > > +++ b/hmp-commands.hx
> > > @@ -1815,3 +1815,20 @@ SRST
> > > Dump the FDT in dtb format to *filename*.
> > > ERST
> > > #endif
> > > +
> > > +#if defined(TARGET_S390X)
> > > + {
> > > + .name = "set-cpu-topology",
> > > + .args_type = "core:l,socket:l?,book:l?,drawer:l?,entitlement:s?,dedicated:b?",
> > Can you use ":O" for the ids? It would allow for some more flexibility.
>
>
> Yes, or we can let fall the hmp interface for this series, making it
> simpler, and add the hmp interface later.
>
> I am more in favor of letting it fall for now.
Fine by me.
>
>
> Regards,
>
> Pierre
>
>
> >
> > > + .params = "core [socket] [book] [drawer] [entitlement] [dedicated]",
> > > + .help = "Move CPU 'core' to 'socket/book/drawer' "
> > > + "optionally modifies entitlement and dedication",
> > > + .cmd = hmp_set_cpu_topology,
> > > + },
> > > +
> > > +SRST
> > > +``set-cpu-topology`` *core* *socket* *book* *drawer* *entitlement* *dedicated*
> > > + Modify CPU topology for the CPU *core* to move on *socket* *book* *drawer*
> > > + with topology attributes *entitlement* *dedicated*.
> > > +ERST
> > > +#endif
next prev parent reply other threads:[~2023-02-27 12:16 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-22 14:20 [PATCH v16 00/11] s390x: CPU Topology Pierre Morel
2023-02-22 14:20 ` [PATCH v16 01/11] s390x/cpu topology: add s390 specifics to CPU topology Pierre Morel
2023-02-22 14:20 ` [PATCH v16 02/11] s390x/cpu topology: add topology entries on CPU hotplug Pierre Morel
2023-02-23 12:53 ` Thomas Huth
2023-02-23 14:06 ` pierre
2023-02-23 14:13 ` Nina Schoetterl-Glausch
2023-02-23 14:35 ` pierre
2023-02-22 14:20 ` [PATCH v16 03/11] target/s390x/cpu topology: handle STSI(15) and build the SYSIB Pierre Morel
2023-02-23 13:30 ` Thomas Huth
2023-02-23 14:27 ` pierre
2023-02-27 13:21 ` Nina Schoetterl-Glausch
2023-03-08 15:24 ` Pierre Morel
2023-02-22 14:20 ` [PATCH v16 04/11] s390x/sclp: reporting the maximum nested topology entries Pierre Morel
2023-02-22 14:20 ` [PATCH v16 05/11] s390x/cpu topology: resetting the Topology-Change-Report Pierre Morel
2023-02-22 14:21 ` [PATCH v16 06/11] s390x/cpu topology: interception of PTF instruction Pierre Morel
2023-02-27 12:39 ` Thomas Huth
2023-02-27 14:12 ` Pierre Morel
2023-02-22 14:21 ` [PATCH v16 07/11] target/s390x/cpu topology: activating CPU topology Pierre Morel
2023-02-27 13:26 ` Thomas Huth
2023-02-27 14:13 ` Pierre Morel
2023-02-22 14:21 ` [PATCH v16 08/11] qapi/s390x/cpu topology: set-cpu-topology monitor command Pierre Morel
2023-02-24 17:15 ` Nina Schoetterl-Glausch
2023-02-27 7:59 ` Thomas Huth
2023-02-27 10:49 ` Nina Schoetterl-Glausch
2023-02-27 12:25 ` Markus Armbruster
2023-02-27 12:51 ` Nina Schoetterl-Glausch
2023-02-27 15:34 ` Markus Armbruster
2023-02-27 10:57 ` Pierre Morel
2023-02-27 11:26 ` Thomas Huth
2023-02-27 12:15 ` Nina Schoetterl-Glausch [this message]
2023-02-27 14:11 ` Pierre Morel
2023-03-02 15:00 ` Pierre Morel
2023-02-27 8:26 ` Pierre Morel
2023-02-27 8:52 ` [PATCH v17 08/12] " Pierre Morel
2023-02-27 8:52 ` [PATCH v17 12/12] machine: adding s390 topology to info hotpluggable-cpus Pierre Morel
2023-02-22 14:21 ` [PATCH v16 09/11] machine: adding s390 topology to query-cpu-fast Pierre Morel
2023-02-27 13:27 ` Thomas Huth
2023-02-27 14:13 ` Pierre Morel
2023-02-22 14:21 ` [PATCH v16 10/11] qapi/s390x/cpu topology: CPU_POLARIZATION_CHANGE qapi event Pierre Morel
2023-02-27 13:32 ` Thomas Huth
2023-02-27 14:14 ` Pierre Morel
2023-02-22 14:21 ` [PATCH v16 11/11] docs/s390x/cpu topology: document s390x cpu topology Pierre Morel
2023-02-27 13:58 ` Thomas Huth
2023-02-27 14:17 ` Pierre Morel
2023-02-27 14:27 ` Thomas Huth
2023-02-27 17:34 ` Pierre Morel
2023-03-01 15:52 ` Nina Schoetterl-Glausch
2023-03-02 8:58 ` Pierre Morel
2023-02-27 14:00 ` [PATCH v16 00/11] s390x: CPU Topology Thomas Huth
2023-02-27 14:20 ` Pierre Morel
-- strict thread matches above, loose matches on Subject: below --
2023-04-28 21:25 [PATCH v16 08/11] qapi/s390x/cpu topology: set-cpu-topology monitor command Nagy Vani
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=7504a2a236c314bcb5a2030c65b95b32d8b896bf.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).