All of lore.kernel.org
 help / color / mirror / Atom feed
From: "wangyanan (Y)" <wangyanan55@huawei.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Andrew Jones <drjones@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Pierre Morel <pmorel@linux.ibm.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
	qemu-s390x@nongnu.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
	Pankaj Gupta <pankaj.gupta.linux@gmail.com>,
	wanghaibin.wang@huawei.com,
	David Gibson <david@gibson.dropbear.id.au>
Subject: Re: [PATCH v11 01/14] machine: Deprecate "parameter=0" SMP configurations
Date: Tue, 28 Sep 2021 19:15:26 +0800	[thread overview]
Message-ID: <92c33829-d7c7-d2ed-45b2-6561876bd437@huawei.com> (raw)
In-Reply-To: <YVLnTsJE2a9wlckS@redhat.com>


On 2021/9/28 17:58, Daniel P. Berrangé wrote:
> On Tue, Sep 28, 2021 at 11:57:42AM +0800, Yanan Wang wrote:
>> In the SMP configuration, we should either provide a topology
>> parameter with a reasonable value (greater than zero) or just
>> omit it and QEMU will compute the missing value.
>>
>> The users shouldn't provide a configuration with any parameter
>> of it specified as zero (e.g. -smp 8,sockets=0) which could
>> possibly cause unexpected results in the -smp parsing. So we
>> deprecate this kind of configurations since 6.2 by adding the
>> explicit sanity check.
>>
>> Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
>> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
>> ---
>>   docs/about/deprecated.rst | 15 +++++++++++++++
>>   hw/core/machine.c         | 14 ++++++++++++++
>>   qapi/machine.json         |  2 +-
>>   qemu-options.hx           | 12 +++++++-----
>>   4 files changed, 37 insertions(+), 6 deletions(-)
>>
>> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
>> index 3c2be84d80..97415dbecd 100644
>> --- a/docs/about/deprecated.rst
>> +++ b/docs/about/deprecated.rst
>> @@ -160,6 +160,21 @@ Use ``-display sdl`` instead.
>>   
>>   Use ``-display curses`` instead.
>>   
>> +``-smp`` ("parameter=0" SMP configurations) (since 6.2)
>> +'''''''''''''''''''''''''''''''''''''''''''''''''''''''
>> +
>> +Specified CPU topology parameters must be greater than zero.
>> +
>> +In the SMP configuration, users should either provide a CPU topology
>> +parameter with a reasonable value (greater than zero) or just omit it
>> +and QEMU will compute the missing value.
>> +
>> +However, historically it was implicitly allowed for users to provide
>> +a parameter with zero value, which is meaningless and could also possibly
>> +cause unexpected results in the -smp parsing. So support for this kind of
>> +configurations (e.g. -smp 8,sockets=0) is deprecated since 6.2 and will
>> +be removed in the near future, users have to ensure that all the topology
>> +members described with -smp are greater than zero.
>>   
>>   Plugin argument passing through ``arg=<string>`` (since 6.1)
>>   ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>> diff --git a/hw/core/machine.c b/hw/core/machine.c
>> index 067f42b528..711e83db54 100644
>> --- a/hw/core/machine.c
>> +++ b/hw/core/machine.c
>> @@ -835,6 +835,20 @@ static void machine_set_smp(Object *obj, Visitor *v, const char *name,
>>           return;
>>       }
>>   
>> +    /*
>> +     * Specified CPU topology parameters must be greater than zero,
>> +     * explicit configuration like "cpus=0" is not allowed.
>> +     */
>> +    if ((config->has_cpus && config->cpus == 0) ||
>> +        (config->has_sockets && config->sockets == 0) ||
>> +        (config->has_dies && config->dies == 0) ||
>> +        (config->has_cores && config->cores == 0) ||
>> +        (config->has_threads && config->threads == 0) ||
>> +        (config->has_maxcpus && config->maxcpus == 0)) {
>> +        warn_report("Invalid CPU topology deprecated: "
>> +                    "CPU topology parameters must be greater than zero");
>> +    }
>> +
>>       mc->smp_parse(ms, config, errp);
>>       if (*errp) {
>>           goto out_free;
>> diff --git a/qapi/machine.json b/qapi/machine.json
>> index 32d47f4e35..227e75d8af 100644
>> --- a/qapi/machine.json
>> +++ b/qapi/machine.json
>> @@ -1331,7 +1331,7 @@
>>   #
>>   # @dies: number of dies per socket in the CPU topology
>>   #
>> -# @cores: number of cores per thread in the CPU topology
>> +# @cores: number of cores per die in the CPU topology
>>   #
>>   # @threads: number of threads per core in the CPU topology
>>   #
> This change is unrelated to the rest of this commit.
>
> It just looks like a simple bug fix and should just be
> spun out into its own patch.
>
>> diff --git a/qemu-options.hx b/qemu-options.hx
>> index 8f603cc7e6..91d859aa29 100644
>> --- a/qemu-options.hx
>> +++ b/qemu-options.hx
>> @@ -227,11 +227,13 @@ SRST
>>       of computing the CPU maximum count.
>>   
>>       Either the initial CPU count, or at least one of the topology parameters
>> -    must be specified. Values for any omitted parameters will be computed
>> -    from those which are given. Historically preference was given to the
>> -    coarsest topology parameters when computing missing values (ie sockets
>> -    preferred over cores, which were preferred over threads), however, this
>> -    behaviour is considered liable to change.
>> +    must be specified. The specified parameters must be greater than zero,
>> +    explicit configuration like "cpus=0" is not allowed. Values for any
>> +    omitted parameters will be computed from those which are given.
>> +    Historically preference was given to the coarsest topology parameters
>> +    when computing missing values (ie sockets preferred over cores, which
>> +    were preferred over threads), however, this behaviour is considered
>> +    liable to change.
>>   ERST
>>   
>>   DEF("numa", HAS_ARG, QEMU_OPTION_numa,
> If you split the docs fix out into its own patch then you can add
Ok, I will split it out. Thanks for the review of this series.

Thanks,
Yanan
>
>    Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
> to both this patch and the new patch.
>
> Regards,
> Daniel



  reply	other threads:[~2021-09-28 11:18 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-28  3:57 [PATCH v11 00/14] machine: smp parsing fixes and improvement Yanan Wang
2021-09-28  3:57 ` [PATCH v11 01/14] machine: Deprecate "parameter=0" SMP configurations Yanan Wang
2021-09-28  9:58   ` Daniel P. Berrangé
2021-09-28 11:15     ` wangyanan (Y) [this message]
2021-09-28  3:57 ` [PATCH v11 02/14] machine: Minor refactor/fix for the smp parsers Yanan Wang
2021-09-28 10:06   ` Daniel P. Berrangé
2021-09-28  3:57 ` [PATCH v11 03/14] machine: Uniformly use maxcpus to calculate the omitted parameters Yanan Wang
2021-09-28 10:09   ` Daniel P. Berrangé
2021-09-28  3:57 ` [PATCH v11 04/14] machine: Set the value of cpus to match maxcpus if it's omitted Yanan Wang
2021-09-28 10:10   ` Daniel P. Berrangé
2021-09-28  3:57 ` [PATCH v11 05/14] machine: Improve the error reporting of smp parsing Yanan Wang
2021-09-28 10:13   ` Daniel P. Berrangé
2021-09-28 10:50   ` Philippe Mathieu-Daudé
2021-09-28  3:57 ` [PATCH v11 06/14] qtest/numa-test: Use detailed -smp CLIs in pc_dynamic_cpu_cfg Yanan Wang
2021-09-28 10:17   ` Daniel P. Berrangé
2021-09-28 10:51   ` Philippe Mathieu-Daudé
2021-09-28  3:57 ` [PATCH v11 07/14] qtest/numa-test: Use detailed -smp CLIs in test_def_cpu_split Yanan Wang
2021-09-28 10:19   ` Daniel P. Berrangé
2021-09-28 10:51   ` Philippe Mathieu-Daudé
2021-09-28  3:57 ` [PATCH v11 08/14] machine: Prefer cores over sockets in smp parsing since 6.2 Yanan Wang
2021-09-28 10:21   ` Daniel P. Berrangé
2021-09-28  3:57 ` [PATCH v11 09/14] machine: Use ms instead of global current_machine in sanity-check Yanan Wang
2021-09-28 10:21   ` Daniel P. Berrangé
2021-09-28 10:52   ` Philippe Mathieu-Daudé
2021-09-28  3:57 ` [PATCH v11 10/14] machine: Tweak the order of topology members in struct CpuTopology Yanan Wang
2021-09-28 10:23   ` Daniel P. Berrangé
2021-09-28 10:58   ` Philippe Mathieu-Daudé
2021-09-28  3:57 ` [PATCH v11 11/14] machine: Make smp_parse generic enough for all arches Yanan Wang
2021-09-28 10:25   ` Daniel P. Berrangé
2021-09-28 10:57   ` Philippe Mathieu-Daudé
2021-09-28 10:58     ` Daniel P. Berrangé
2021-09-28 11:02       ` Philippe Mathieu-Daudé
2021-09-28 11:07       ` wangyanan (Y)
2021-09-28 12:25     ` Markus Armbruster
2021-09-28 12:53       ` wangyanan (Y)
2021-09-28  3:57 ` [PATCH v11 12/14] machine: Remove smp_parse callback from MachineClass Yanan Wang
2021-09-28 10:25   ` Daniel P. Berrangé
2021-09-28 10:58   ` Philippe Mathieu-Daudé
2021-09-28  3:57 ` [PATCH v11 13/14] machine: Move smp_prefer_sockets to struct SMPCompatProps Yanan Wang
2021-09-28 10:26   ` Daniel P. Berrangé
2021-09-28  3:57 ` [PATCH v11 14/14] machine: Put all sanity-check in the generic SMP parser Yanan Wang
2021-09-28 10:38   ` Daniel P. Berrangé
2021-09-28 11:01   ` Philippe Mathieu-Daudé
2021-09-28 11:20     ` wangyanan (Y)

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=92c33829-d7c7-d2ed-45b2-6561876bd437@huawei.com \
    --to=wangyanan55@huawei.com \
    --cc=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 \
    /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.