From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D815FC64ED8 for ; Mon, 27 Feb 2023 12:16:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pWcPt-00020R-G2; Mon, 27 Feb 2023 07:15:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pWcPn-0001wq-S8; Mon, 27 Feb 2023 07:15:36 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5] helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pWcPh-00059C-Uq; Mon, 27 Feb 2023 07:15:33 -0500 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31RBAolY027951; Mon, 27 Feb 2023 12:15:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : subject : from : to : cc : date : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=pp1; bh=8rx1H5NN6pXX7lVygfwwKIDpROCOUKo5yBse1wiRk9w=; b=f3qwFN0mIIlk/pqM4IruaIOMnNV1G0Y5siLqwQ972MzET3wJZHqcF9BkS5cYqHhpH4Q2 A1NjL4lSnnQnqeSCMIAvwl68CRDcRCYUShnzBzJSbc1+sKWS5UzXQUHZ6yMGkqxiomEq NpYxX2hW+vrhpMPQAHu+Jo3BQvVJDVzGKHWFiv/3AJ9OJXJZ+UX1b4XWVGNSsinnyXxT 7G2JmZc6g9bxHz0+oe6NP7+YTYQfBom5xLbzpplC57xj6z+AQ4xndIZmQ9zMPnNpZ+yR oCeIrQFS1emxAoP0PAmEF5RZYyKxStcLBnJ2h5Vp8wcF7YQYkHOwr14253v99xaLKD3+ vA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3p0sg44uwf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Feb 2023 12:15:18 +0000 Received: from m0098416.ppops.net (m0098416.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 31RBxs3Z030797; Mon, 27 Feb 2023 12:15:17 GMT Received: from ppma06ams.nl.ibm.com (66.31.33a9.ip4.static.sl-reverse.com [169.51.49.102]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3p0sg44uvy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Feb 2023 12:15:17 +0000 Received: from pps.filterd (ppma06ams.nl.ibm.com [127.0.0.1]) by ppma06ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 31R8AM8s013030; Mon, 27 Feb 2023 12:15:15 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma06ams.nl.ibm.com (PPS) with ESMTPS id 3nybcq1y5x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 27 Feb 2023 12:15:15 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 31RCFBxN63242670 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 27 Feb 2023 12:15:12 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D260E20043; Mon, 27 Feb 2023 12:15:11 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6667720040; Mon, 27 Feb 2023 12:15:11 +0000 (GMT) Received: from li-7e0de7cc-2d9d-11b2-a85c-de26c016e5ad.ibm.com (unknown [9.171.148.35]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 27 Feb 2023 12:15:11 +0000 (GMT) Message-ID: <7504a2a236c314bcb5a2030c65b95b32d8b896bf.camel@linux.ibm.com> Subject: Re: [PATCH v16 08/11] qapi/s390x/cpu topology: set-cpu-topology monitor command From: Nina Schoetterl-Glausch To: Pierre Morel , 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 Date: Mon, 27 Feb 2023 13:15:11 +0100 In-Reply-To: <4335eac8-ba5d-5b6c-b19f-4b10a793ba0c@linux.ibm.com> References: <20230222142105.84700-1-pmorel@linux.ibm.com> <20230222142105.84700-9-pmorel@linux.ibm.com> <4335eac8-ba5d-5b6c-b19f-4b10a793ba0c@linux.ibm.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Y16qkIud8obst8kIU0Q-hMnIzc5FctF3 X-Proofpoint-GUID: NV1b1fhoXva2ZpI1BFseMSiMu4bQVNdT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-27_10,2023-02-27_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 adultscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 clxscore=1015 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302270094 Received-SPF: pass client-ip=148.163.158.5; envelope-from=nsg@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org 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. > > >=20 > > > 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. > > >=20 > > > 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 vC= PU. > > >=20 > > > With this knowledge the guest has the possibility to optimize the > > > usage of the vCPUs. > > >=20 > > > The command has a feature unstable for the moment. > > >=20 > > > Signed-off-by: Pierre Morel > > > --- > > > 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(+) > > >=20 [...] > > >=20 > > > 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 @@ > > >=20 [...] > > > + > > > +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 =3D false; > > > + int entitlement; > > > + ERRP_GUARD(); > > > + > > > + if (!s390_has_topology()) { > > > + error_setg(errp, "This machine doesn't support topology"); > > > + return; > > > + } > > > + > > > + entitlement =3D qapi_enum_parse(&CpuS390Entitlement_lookup, enti= tlement_str, > > > + -1, errp); > > > + if (*errp) { > > > + return; > > > + } > > > + has_entitlement =3D entitlement >=3D 0; > > Doesn't this allow setting horizontal entitlement? Which shouldn't be p= ossible, > > only the guest can do it. >=20 >=20 > IMHO it does not, the polarization is set by the guest through the PTF= =20 > 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 horizon= tal, even though the guest didn't ask for it. >=20 >=20 > >=20 > > > + > > > + s390_change_topology(core, has_socket, socket, has_book, book, > > > + has_drawer, drawer, has_entitlement, entitl= ement, > > > + has_dedicated, dedicated, errp); > > > +} > > > + > > > +void hmp_set_cpu_topology(Monitor *mon, const QDict *qdict) > > > +{ > > > + const uint16_t core =3D qdict_get_int(qdict, "core-id"); > > > + bool has_socket =3D qdict_haskey(qdict, "socket-id"); > > > + const uint16_t socket =3D qdict_get_try_int(qdict, "socket-id", = 0); > > > + bool has_book =3D qdict_haskey(qdict, "book-id"); > > > + const uint16_t book =3D qdict_get_try_int(qdict, "book-id", 0); > > > + bool has_drawer =3D qdict_haskey(qdict, "drawer-id"); > > > + const uint16_t drawer =3D 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. >=20 >=20 > right, I should have kept the original names or change both. >=20 >=20 > >=20 > > > + const char *entitlement =3D qdict_get_try_str(qdict, "entitlemen= t"); > > > + bool has_dedicated =3D qdict_haskey(qdict, "dedicated"); > > > + const bool dedicated =3D qdict_get_try_bool(qdict, "dedicated", = false); > > > + Error *local_err =3D 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 =3D "set-cpu-topology", > > > + .args_type =3D "core:l,socket:l?,book:l?,drawer:l?,entitlem= ent:s?,dedicated:b?", > > Can you use ":O" for the ids? It would allow for some more flexibility. >=20 >=20 > Yes, or we can let fall the hmp interface for this series, making it=20 > simpler, and add the hmp interface later. >=20 > I am more in favor of letting it fall for now. Fine by me. >=20 >=20 > Regards, >=20 > Pierre >=20 >=20 > >=20 > > > + .params =3D "core [socket] [book] [drawer] [entitlement]= [dedicated]", > > > + .help =3D "Move CPU 'core' to 'socket/book/drawer' " > > > + "optionally modifies entitlement and dedicatio= n", > > > + .cmd =3D 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