From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Yanan Wang <wangyanan55@huawei.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Andrew Jones <drjones@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Pierre Morel <pmorel@linux.ibm.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
qemu-devel@nongnu.org, qemu-s390x@nongnu.org,
qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
wanghaibin.wang@huawei.com, Paolo Bonzini <pbonzini@redhat.com>,
David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH v10 11/14] machine: Make smp_parse generic enough for all arches
Date: Mon, 27 Sep 2021 11:12:35 +0100 [thread overview]
Message-ID: <YVGZE7boLhoD1w2r@redhat.com> (raw)
In-Reply-To: <20210926084541.17352-12-wangyanan55@huawei.com>
On Sun, Sep 26, 2021 at 04:45:38PM +0800, Yanan Wang wrote:
> Currently the only difference between smp_parse and pc_smp_parse
> is the support of dies parameter and the related error reporting.
> With some arch compat variables like "bool dies_supported", we can
> make smp_parse generic enough for all arches and the PC specific
> one can be removed.
>
> Making smp_parse() generic enough can reduce code duplication and
> ease the code maintenance, and also allows extending the topology
> with more arch specific members (e.g., clusters) in the future.
>
> Suggested-by: Andrew Jones <drjones@redhat.com>
> Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
> Reviewed-by: Andrew Jones <drjones@redhat.com>
> ---
> hw/core/machine.c | 110 ++++++++++++++++++++++++++++++++++++--------
> hw/i386/pc.c | 84 +--------------------------------
> include/hw/boards.h | 9 ++++
> 3 files changed, 100 insertions(+), 103 deletions(-)
>
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index a21fcd7700..4b5c943f8e 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -15,6 +15,7 @@
> #include "qapi/qmp/qerror.h"
> #include "sysemu/replay.h"
> #include "qemu/units.h"
> +#include "qemu/cutils.h"
> #include "hw/boards.h"
> #include "hw/loader.h"
> #include "qapi/error.h"
> @@ -746,20 +747,87 @@ void machine_set_cpu_numa_node(MachineState *machine,
> }
> }
>
> +static char *cpu_topology_hierarchy(MachineState *ms)
> +{
> + MachineClass *mc = MACHINE_GET_CLASS(ms);
> + SMPCompatProps *smp_props = &mc->smp_props;
> + char topo_msg[256] = "";
> +
> + /*
> + * Topology members should be ordered from the largest to the smallest.
> + * Concept of sockets/cores/threads is supported by default and will be
> + * reported in the hierarchy. Unsupported members will not be reported.
> + */
> + g_autofree char *sockets_msg = g_strdup_printf(
> + " * sockets (%u)", ms->smp.sockets);
> + pstrcat(topo_msg, sizeof(topo_msg), sockets_msg);
> +
> + if (smp_props->dies_supported) {
> + g_autofree char *dies_msg = g_strdup_printf(
> + " * dies (%u)", ms->smp.dies);
> + pstrcat(topo_msg, sizeof(topo_msg), dies_msg);
> + }
> +
> + g_autofree char *cores_msg = g_strdup_printf(
> + " * cores (%u)", ms->smp.cores);
> + pstrcat(topo_msg, sizeof(topo_msg), cores_msg);
> +
> + g_autofree char *threads_msg = g_strdup_printf(
> + " * threads (%u)", ms->smp.threads);
> + pstrcat(topo_msg, sizeof(topo_msg), threads_msg);
> +
> + return g_strdup_printf("%s", topo_msg + 3);
> +}
Mixing g_strdup_printf + pstrcat + fixed buffer is quite
unpleasant. This method is begging to use 'GString' APIs
for formatting.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2021-09-27 10:19 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-26 8:45 [PATCH v10 00/14] machine: smp parsing fixes and improvement Yanan Wang
2021-09-26 8:45 ` [PATCH v10 01/14] machine: Deprecate "parameter=0" SMP configurations Yanan Wang
2021-09-26 8:45 ` [PATCH v10 02/14] machine: Minor refactor/fix for the smp parsers Yanan Wang
2021-09-26 8:45 ` [PATCH v10 03/14] machine: Uniformly use maxcpus to calculate the omitted parameters Yanan Wang
2021-09-26 8:45 ` [PATCH v10 04/14] machine: Set the value of cpus to match maxcpus if it's omitted Yanan Wang
2021-09-26 8:45 ` [PATCH v10 05/14] machine: Improve the error reporting of smp parsing Yanan Wang
2021-09-26 8:45 ` [PATCH v10 06/14] qtest/numa-test: Use detailed -smp CLIs in pc_dynamic_cpu_cfg Yanan Wang
2021-09-26 8:45 ` [PATCH v10 07/14] qtest/numa-test: Use detailed -smp CLIs in test_def_cpu_split Yanan Wang
2021-09-26 8:45 ` [PATCH v10 08/14] machine: Prefer cores over sockets in smp parsing since 6.2 Yanan Wang
2021-09-26 8:45 ` [PATCH v10 09/14] machine: Use ms instead of global current_machine in sanity-check Yanan Wang
2021-09-26 8:45 ` [PATCH v10 10/14] machine: Tweak the order of topology members in struct CpuTopology Yanan Wang
2021-09-26 8:45 ` [PATCH v10 11/14] machine: Make smp_parse generic enough for all arches Yanan Wang
2021-09-27 10:12 ` Daniel P. Berrangé [this message]
2021-09-28 1:21 ` wangyanan (Y)
2021-09-26 8:45 ` [PATCH v10 12/14] machine: Remove smp_parse callback from MachineClass Yanan Wang
2021-09-26 8:45 ` [PATCH v10 13/14] machine: Move smp_prefer_sockets to struct SMPCompatProps Yanan Wang
2021-09-26 8:45 ` [PATCH v10 14/14] machine: Put all sanity-check in the generic SMP parser Yanan Wang
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=YVGZE7boLhoD1w2r@redhat.com \
--to=berrange@redhat.com \
--cc=cohuck@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=drjones@redhat.com \
--cc=ehabkost@redhat.com \
--cc=mst@redhat.com \
--cc=pankaj.gupta.linux@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pmorel@linux.ibm.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=wanghaibin.wang@huawei.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.