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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7276BC433ED for ; Tue, 27 Apr 2021 02:14:13 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id D1BAE610FA for ; Tue, 27 Apr 2021 02:14:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D1BAE610FA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:60798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lbDEp-0006Gc-GH for qemu-devel@archiver.kernel.org; Mon, 26 Apr 2021 22:14:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33996) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lbDDs-0005SE-6o for qemu-devel@nongnu.org; Mon, 26 Apr 2021 22:13:12 -0400 Received: from mga01.intel.com ([192.55.52.88]:27504) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lbDDq-0007hv-7N for qemu-devel@nongnu.org; Mon, 26 Apr 2021 22:13:11 -0400 IronPort-SDR: ao8xOYpxA4uXAMhdv1ODvAN2kVybtppGve/9Gz+l77zaYQMAjLxVsaRSe6zRSHF1mPENfRqanr 6F6x9o4H/ZxA== X-IronPort-AV: E=McAfee;i="6200,9189,9966"; a="217138061" X-IronPort-AV: E=Sophos;i="5.82,252,1613462400"; d="scan'208";a="217138061" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2021 19:13:06 -0700 IronPort-SDR: TRxDzMUg1s41Lvs5kwlqOkVHn1xf9vmO3t53zoxfJnnKx6S80/nnjl52NhLaQparxr3g5/8MHH dmMQZbkW4ymA== X-IronPort-AV: E=Sophos;i="5.82,252,1613462400"; d="scan'208";a="422882058" Received: from likexu-mobl1.ccr.corp.intel.com (HELO [10.238.4.93]) ([10.238.4.93]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Apr 2021 19:13:04 -0700 Subject: Re: [PATCH v2] hw/i386: Expand the range of CPU topologies between smp and maxcpus To: =?UTF-8?Q?Daniel_P=2e_Berrang=c3=a9?= , "caodongli@kingsoft.com" References: <2021042610084739495617@kingsoft.com> From: Like Xu Organization: Intel OTC Message-ID: <378da49d-2d66-0d47-90cb-441a4e6f8ac7@linux.intel.com> Date: Tue, 27 Apr 2021 10:13:01 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Received-SPF: none client-ip=192.55.52.88; envelope-from=like.xu@linux.intel.com; helo=mga01.intel.com X-Spam_score_int: -68 X-Spam_score: -6.9 X-Spam_bar: ------ X-Spam_report: (-6.9 / 5.0 requ) BAYES_00=-1.9, NICE_REPLY_A=-0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ehabkost , mst , "richard.henderson" , qemu-devel , pbonzini , Igor Mammedov Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On 2021/4/26 21:30, Daniel P. Berrangé wrote: > On Mon, Apr 26, 2021 at 10:08:52AM +0800, caodongli@kingsoft.com wrote: >> Change the criteria for the initial CPU topology and maxcpus, user can >> have more settings > > Can you provide a better explanation of why this is needed. What > valid usage scenario is blocked by the current check ? > > AFAICT, it partially reverts an intentional change done in several > years ago in : > > > commit bc1fb850a31468ac4976f3895f01a6d981e06d0a > Author: Igor Mammedov > Date: Thu Sep 13 13:06:01 2018 +0200 > > vl.c deprecate incorrect CPUs topology > > -smp [cpus],sockets/cores/threads[,maxcpus] should describe topology > so that total number of logical CPUs [sockets * cores * threads] > would be equal to [maxcpus], however historically we didn't have > such check in QEMU and it is possible to start VM with an invalid > topology. > Deprecate invalid options combination so we can make sure that > the topology VM started with is always correct in the future. > Users with an invalid sockets/cores/threads/maxcpus values should > fix their CLI to make sure that > [sockets * cores * threads] == [maxcpus] > > Another helpful commit would be: commit c4332cd1dcf2964c23893ab4c0bf8d774e42a3cf Author: Igor Mammedov Date: Fri Sep 11 09:32:02 2020 -0400 smp: drop support for deprecated (invalid topologies) it's was deprecated since 3.1 Support for invalid topologies is removed, the user must ensure that topologies described with -smp include all possible cpus, i.e. (sockets * cores * threads) == maxcpus or QEMU will exit with error. So is the following statement correct: When we explicitly set the topology, we must ensure that the combination (sockets/dies/cores/threads/maxcpus) is always valid. If we need hot plug testing, we can only use something like "-smp 1,maxcpus = 4" since 3.1. ? > >> >> Signed-off-by: Dongli Cao >> --- >> hw/i386/pc.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/hw/i386/pc.c b/hw/i386/pc.c >> index 8a84b25..ef2e819 100644 >> --- a/hw/i386/pc.c >> +++ b/hw/i386/pc.c >> @@ -751,7 +751,7 @@ void pc_smp_parse(MachineState *ms, QemuOpts *opts) >> exit(1); >> } >> >> - if (sockets * dies * cores * threads != ms->smp.max_cpus) { >> + if (sockets * dies * cores * threads > ms->smp.max_cpus) { >> error_report("Invalid CPU topology deprecated: " >> "sockets (%u) * dies (%u) * cores (%u) * threads (%u) " >> "!= maxcpus (%u)", > > This is > >> -- >> 1.8.3.1 >> >> >> >> >> >> >> >> >> >> caodongli@kingsoft.com >> >> > > Regards, > Daniel >