From patchwork Thu Feb 23 08:13:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 13149945 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 01350C61DA4 for ; Thu, 23 Feb 2023 08:16:11 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV6kS-0003Xu-5V; Thu, 23 Feb 2023 03:14:40 -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 1pV6kO-0003Wo-KV for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:14:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV6kN-0001EV-7H for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:14:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677140074; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=N93heQF4SVVlaYuxobhHpAFpD9Mv4hw0bmrbFiLSBLo=; b=BEiXGKQ0Aj7ZImlPAnhQtqp8puvAXWRHXDPzyT6Y1iyEVv8BBaqoWSnFciu92k6VTubgiQ 86NuDgbW3dBKTZgCb1TePRnawmLtTTwUwdBDC35yn2UG6GLCf7Yktl6eVQoOB8MqYgGBMj vZubgUTnK7krxG69quZ8Q3V01witvmQ= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-570-Br5-GpZlNDG1AeyYhnmSMg-1; Thu, 23 Feb 2023 03:14:28 -0500 X-MC-Unique: Br5-GpZlNDG1AeyYhnmSMg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 08A23101A55E; Thu, 23 Feb 2023 08:14:28 +0000 (UTC) Received: from gshan.redhat.com (vpn2-54-168.bne.redhat.com [10.64.54.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id 40CDC440DC; Thu, 23 Feb 2023 08:14:21 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, rad@semihalf.com, peter.maydell@linaro.org, quic_llindhol@quicinc.com, eduardo@habkost.net, marcel.apfelbaum@gmail.com, philmd@linaro.org, wangyanan55@huawei.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, thuth@redhat.com, lvivier@redhat.com, pbonzini@redhat.com, imammedo@redhat.com, yihyu@redhat.com, shan.gavin@gmail.com Subject: [PATCH v2 1/4] qtest/numa-test: Follow socket-NUMA-node boundary for aarch64 Date: Thu, 23 Feb 2023 16:13:58 +0800 Message-Id: <20230223081401.248835-2-gshan@redhat.com> In-Reply-To: <20230223081401.248835-1-gshan@redhat.com> References: <20230223081401.248835-1-gshan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 Received-SPF: pass client-ip=170.10.133.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 After socket-to-NUMA-node boundary is applied to aarch64 in the subsequent patches, we need to explicitly specify 'smp.sockets=2' for 'test_mon_explicit' and 'test_query_cpus' test cases. Besides, 'test_mon_partial' isn't applied to aarch64 any more. Signed-off-by: Gavin Shan --- tests/qtest/numa-test.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c index c5eb13f349..ebfd522af3 100644 --- a/tests/qtest/numa-test.c +++ b/tests/qtest/numa-test.c @@ -25,7 +25,8 @@ static void test_mon_explicit(const void *data) g_autofree char *s = NULL; g_autofree char *cli = NULL; - cli = make_cli(data, "-machine smp.cpus=8 -numa node,nodeid=0,memdev=ram,cpus=0-3 " + cli = make_cli(data, "-machine smp.cpus=8,smp.sockets=2 " + "-numa node,nodeid=0,memdev=ram,cpus=0-3 " "-numa node,nodeid=1,cpus=4-7"); qts = qtest_init(cli); @@ -87,7 +88,8 @@ static void test_query_cpus(const void *data) QTestState *qts; g_autofree char *cli = NULL; - cli = make_cli(data, "-machine smp.cpus=8 -numa node,memdev=ram,cpus=0-3 " + cli = make_cli(data, "-machine smp.cpus=8,smp.sockets=2 " + "-numa node,memdev=ram,cpus=0-3 " "-numa node,cpus=4-7"); qts = qtest_init(cli); cpus = get_cpus(qts, &resp); @@ -565,7 +567,12 @@ int main(int argc, char **argv) qtest_add_data_func("/numa/mon/cpus/default", args, test_def_cpu_split); qtest_add_data_func("/numa/mon/cpus/explicit", args, test_mon_explicit); - qtest_add_data_func("/numa/mon/cpus/partial", args, test_mon_partial); + + if (!strcmp(arch, "i386") || !strcmp(arch, "x86_64") || + !strcmp(arch, "ppc64")) { + qtest_add_data_func("/numa/mon/cpus/partial", args, test_mon_partial); + } + qtest_add_data_func("/numa/qmp/cpus/query-cpus", args, test_query_cpus); if (!strcmp(arch, "i386") || !strcmp(arch, "x86_64")) { From patchwork Thu Feb 23 08:13:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 13149943 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 569A5C636D7 for ; Thu, 23 Feb 2023 08:15:21 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV6kW-0003ZM-UO; Thu, 23 Feb 2023 03:14:44 -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 1pV6kV-0003Yq-Ot for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:14:43 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV6kU-0001Fc-0w for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:14:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677140081; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=g92Td8QRvrVk+sq1KWvUB3XXi6JuTsKzLd866Am/PBk=; b=Qsuc8gjVoezNiwwpPQcZEv0WEl/fOZRPNFBUf0mnplykjTCaxTaKDPpjN+NHHvh9YK0qMu tpVNibvpqkJ7TZsBrkEVXomXqBBAwYi1uPXwDCREZQXZWUCGVIZTt43I2Q0P1x6RqeksNl OoIvcAk60oUxuEOSsi/HAtExyYYFrKg= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-571-11eOUpCuMGidHF106ejm6g-1; Thu, 23 Feb 2023 03:14:37 -0500 X-MC-Unique: 11eOUpCuMGidHF106ejm6g-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id D1298101A521; Thu, 23 Feb 2023 08:14:35 +0000 (UTC) Received: from gshan.redhat.com (vpn2-54-168.bne.redhat.com [10.64.54.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id 96CF118EC1; Thu, 23 Feb 2023 08:14:28 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, rad@semihalf.com, peter.maydell@linaro.org, quic_llindhol@quicinc.com, eduardo@habkost.net, marcel.apfelbaum@gmail.com, philmd@linaro.org, wangyanan55@huawei.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, thuth@redhat.com, lvivier@redhat.com, pbonzini@redhat.com, imammedo@redhat.com, yihyu@redhat.com, shan.gavin@gmail.com Subject: [PATCH v2 2/4] numa: Validate socket and NUMA node boundary if required Date: Thu, 23 Feb 2023 16:13:59 +0800 Message-Id: <20230223081401.248835-3-gshan@redhat.com> In-Reply-To: <20230223081401.248835-1-gshan@redhat.com> References: <20230223081401.248835-1-gshan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 Received-SPF: pass client-ip=170.10.129.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 For some architectures like ARM64, multiple CPUs in one socket can't be associated with different NUMA nodes. Otherwise, the guest kernel is confused about the CPU topology. For example, the following warning message is observed from linux guest with the below command lines. -smp 6,maxcpus=6,sockets=2,clusters=1,cores=3,threads=1 \ -numa node,nodeid=0,cpus=0-1,memdev=ram0 \ -numa node,nodeid=1,cpus=2-3,memdev=ram1 \ -numa node,nodeid=2,cpus=4-5,memdev=ram2 \ ------------[ cut here ]------------ WARNING: CPU: 0 PID: 1 at kernel/sched/topology.c:2271 build_sched_domains+0x284/0x910 Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.14.0-268.el9.aarch64 #1 pstate: 00400005 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : build_sched_domains+0x284/0x910 lr : build_sched_domains+0x184/0x910 sp : ffff80000804bd50 x29: ffff80000804bd50 x28: 0000000000000002 x27: 0000000000000000 x26: ffff800009cf9a80 x25: 0000000000000000 x24: ffff800009cbf840 x23: ffff000080325000 x22: ffff0000005df800 x21: ffff80000a4ce508 x20: 0000000000000000 x19: ffff000080324440 x18: 0000000000000014 x17: 00000000388925c0 x16: 000000005386a066 x15: 000000009c10cc2e x14: 00000000000001c0 x13: 0000000000000001 x12: ffff00007fffb1a0 x11: ffff00007fffb180 x10: ffff80000a4ce508 x9 : 0000000000000041 x8 : ffff80000a4ce500 x7 : ffff80000a4cf920 x6 : 0000000000000001 x5 : 0000000000000001 x4 : 0000000000000007 x3 : 0000000000000002 x2 : 0000000000001000 x1 : ffff80000a4cf928 x0 : 0000000000000001 Call trace: build_sched_domains+0x284/0x910 sched_init_domains+0xac/0xe0 sched_init_smp+0x48/0xc8 kernel_init_freeable+0x140/0x1ac kernel_init+0x28/0x140 ret_from_fork+0x10/0x20 Improve the sitation to reject the configuration where multiple CPUs in one socket have been associated with different NUMA nodes. The newly introduced helper set_numa_socket_boundary() is expected to called by specific machines (boards) where the boundary is required. Signed-off-by: Gavin Shan --- hw/core/machine.c | 34 ++++++++++++++++++++++++++++++++++ hw/core/numa.c | 7 +++++++ include/sysemu/numa.h | 4 ++++ 3 files changed, 45 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index f73fc4c45c..875a3fe6c4 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -1174,6 +1174,36 @@ static char *cpu_slot_to_string(const CPUArchId *cpu) return g_string_free(s, false); } +static void numa_validate_socket_boundary(MachineState *ms) +{ + MachineClass *mc = MACHINE_GET_CLASS(ms); + NumaState *state = ms->numa_state; + const CPUArchIdList *possible_cpus = mc->possible_cpu_arch_ids(ms); + const CPUArchId *cpus = possible_cpus->cpus; + int len = possible_cpus->len, i, j; + + if (state->num_nodes <= 1 || len <= 1) { + return; + } + + for (i = 0; i < len; i++) { + for (j = i + 1; j < len; j++) { + if (cpus[i].props.has_socket_id && + cpus[i].props.has_node_id && + cpus[j].props.has_socket_id && + cpus[j].props.has_node_id && + cpus[i].props.socket_id == cpus[j].props.socket_id && + cpus[i].props.node_id != cpus[j].props.node_id) { + error_report("CPU-%d and CPU-%d in socket-%ld have been " + "associated with node-%ld and node-%ld " + "respectively", i, j, cpus[i].props.socket_id, + cpus[i].props.node_id, cpus[j].props.node_id); + exit(1); + } + } + } +} + static void numa_validate_initiator(NumaState *numa_state) { int i; @@ -1239,6 +1269,10 @@ static void machine_numa_finish_cpu_init(MachineState *machine) } } + if (machine->numa_state->have_socket_boundary) { + numa_validate_socket_boundary(machine); + } + if (machine->numa_state->hmat_enabled) { numa_validate_initiator(machine->numa_state); } diff --git a/hw/core/numa.c b/hw/core/numa.c index d8d36b16d8..ebdd964ec8 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -460,6 +460,13 @@ void parse_numa_hmat_cache(MachineState *ms, NumaHmatCacheOptions *node, ms->numa_state->hmat_cache[node->node_id][node->level] = hmat_cache; } +void set_numa_socket_boundary(MachineState *ms) +{ + if (ms->numa_state) { + ms->numa_state->have_socket_boundary = true; + } +} + void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp) { if (!ms->numa_state) { diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h index 4173ef2afa..160008fff4 100644 --- a/include/sysemu/numa.h +++ b/include/sysemu/numa.h @@ -86,6 +86,9 @@ struct NumaState { /* Detect if HMAT support is enabled. */ bool hmat_enabled; + /* CPUs in one socket can't break socket boundary */ + bool have_socket_boundary; + /* NUMA nodes information */ NodeInfo nodes[MAX_NODES]; @@ -97,6 +100,7 @@ struct NumaState { }; typedef struct NumaState NumaState; +void set_numa_socket_boundary(MachineState *ms); void set_numa_options(MachineState *ms, NumaOptions *object, Error **errp); void parse_numa_opts(MachineState *ms); void parse_numa_hmat_lb(NumaState *numa_state, NumaHmatLBOptions *node, From patchwork Thu Feb 23 08:14:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 13149944 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 305A1C61DA4 for ; Thu, 23 Feb 2023 08:16:03 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV6kf-0003d7-Ug; Thu, 23 Feb 2023 03:14:53 -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 1pV6ke-0003cS-8A for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:14:52 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV6kc-0001H3-Of for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:14:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677140090; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/wLL9544MFJuZn5ro6CESRAgbVJwuWFdQYsfjmY4xL8=; b=H5fTxbelp8s875eyelaJb0PraEFHgLiMngVswBrPZZU0FxoHn1BSX1AvvgndH5W4gm1LTO v/gXSsTUOHmIJ+F5Vle0kn+T1IOpwlnVXJ6IuqLroQS/VklEq5DLVsNthb/cqiq74kSskq 3CAS7j98yS5zDhnTUOChYQTfUw3nJ2I= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-619-1eFz_WD9PGO_6RMfiLhVEQ-1; Thu, 23 Feb 2023 03:14:44 -0500 X-MC-Unique: 1eFz_WD9PGO_6RMfiLhVEQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0D02A85A5A3; Thu, 23 Feb 2023 08:14:44 +0000 (UTC) Received: from gshan.redhat.com (vpn2-54-168.bne.redhat.com [10.64.54.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id A15B218EC1; Thu, 23 Feb 2023 08:14:36 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, rad@semihalf.com, peter.maydell@linaro.org, quic_llindhol@quicinc.com, eduardo@habkost.net, marcel.apfelbaum@gmail.com, philmd@linaro.org, wangyanan55@huawei.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, thuth@redhat.com, lvivier@redhat.com, pbonzini@redhat.com, imammedo@redhat.com, yihyu@redhat.com, shan.gavin@gmail.com Subject: [PATCH v2 3/4] hw/arm: Validate socket and NUMA node boundary Date: Thu, 23 Feb 2023 16:14:00 +0800 Message-Id: <20230223081401.248835-4-gshan@redhat.com> In-Reply-To: <20230223081401.248835-1-gshan@redhat.com> References: <20230223081401.248835-1-gshan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 Received-SPF: pass client-ip=170.10.129.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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 There are two ARM machines where NUMA is aware: 'virt' and 'sbsa-ref'. Both of them are required to follow socket-NUMA-node boundary. To enable the validation to reject incorrect configuration. Signed-off-by: Gavin Shan --- hw/arm/sbsa-ref.c | 2 ++ hw/arm/virt.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c index f778cb6d09..1a87437017 100644 --- a/hw/arm/sbsa-ref.c +++ b/hw/arm/sbsa-ref.c @@ -844,6 +844,8 @@ static void sbsa_ref_instance_init(Object *obj) SBSAMachineState *sms = SBSA_MACHINE(obj); sbsa_flash_create(sms); + + set_numa_socket_boundary(MACHINE(obj)); } static void sbsa_ref_class_init(ObjectClass *oc, void *data) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index ac626b3bef..9d9f26626c 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -3210,6 +3210,8 @@ static void virt_instance_init(Object *obj) vms->oem_id = g_strndup(ACPI_BUILD_APPNAME6, 6); vms->oem_table_id = g_strndup(ACPI_BUILD_APPNAME8, 8); + + set_numa_socket_boundary(MACHINE(obj)); } static const TypeInfo virt_machine_info = { From patchwork Thu Feb 23 08:14:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gavin Shan X-Patchwork-Id: 13149946 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 19B93C61DA4 for ; Thu, 23 Feb 2023 08:16:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pV6kq-0003lC-BI; Thu, 23 Feb 2023 03:15:04 -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 1pV6ko-0003iG-2y for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:15:02 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pV6km-0001LJ-8Q for qemu-devel@nongnu.org; Thu, 23 Feb 2023 03:15:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1677140099; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oNyUfcVHvjIdcGuv0SDWxC/qdUhNx/+4Mut0H2LduDQ=; b=gOX5Zz5AXTA2uyHGidF3/MiJKQ9+xvOXFZHVoHXOGcI99sHYL0BJAqzSDj/rv2XNF7mo/G 4qsT1W2D0XE/Oz8J7mxCP+lLrZXwcTApprUSYej9qPkqspo+J3tTnloacInP9FK/1zo0UY BYVoyP/vdaoxF+6LkNoBfTXJcQ6rimI= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-209-qCV7yt1kP0qz9Kpqr53kjQ-1; Thu, 23 Feb 2023 03:14:53 -0500 X-MC-Unique: qCV7yt1kP0qz9Kpqr53kjQ-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 636CA857A88; Thu, 23 Feb 2023 08:14:52 +0000 (UTC) Received: from gshan.redhat.com (vpn2-54-168.bne.redhat.com [10.64.54.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id CFDBC440DE; Thu, 23 Feb 2023 08:14:44 +0000 (UTC) From: Gavin Shan To: qemu-arm@nongnu.org Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, rad@semihalf.com, peter.maydell@linaro.org, quic_llindhol@quicinc.com, eduardo@habkost.net, marcel.apfelbaum@gmail.com, philmd@linaro.org, wangyanan55@huawei.com, palmer@dabbelt.com, alistair.francis@wdc.com, bin.meng@windriver.com, thuth@redhat.com, lvivier@redhat.com, pbonzini@redhat.com, imammedo@redhat.com, yihyu@redhat.com, shan.gavin@gmail.com Subject: [PATCH v2 4/4] hw/riscv: Validate socket and NUMA node boundary Date: Thu, 23 Feb 2023 16:14:01 +0800 Message-Id: <20230223081401.248835-5-gshan@redhat.com> In-Reply-To: <20230223081401.248835-1-gshan@redhat.com> References: <20230223081401.248835-1-gshan@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.5 Received-SPF: pass client-ip=170.10.129.124; envelope-from=gshan@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 There are two RISCV machines where NUMA is aware: 'virt' and 'spike'. Both of them are required to follow socket-NUMA-node boundary. To enable the validation to reject incorrect configuration. Signed-off-by: Gavin Shan --- hw/riscv/spike.c | 1 + hw/riscv/virt.c | 1 + 2 files changed, 2 insertions(+) diff --git a/hw/riscv/spike.c b/hw/riscv/spike.c index cc3f6dac17..fba0cbec29 100644 --- a/hw/riscv/spike.c +++ b/hw/riscv/spike.c @@ -342,6 +342,7 @@ static void spike_board_init(MachineState *machine) static void spike_machine_instance_init(Object *obj) { + set_numa_socket_boundary(MACHINE(obj)); } static void spike_machine_class_init(ObjectClass *oc, void *data) diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index b81081c70b..ed79becb96 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1521,6 +1521,7 @@ static void virt_machine_init(MachineState *machine) static void virt_machine_instance_init(Object *obj) { + set_numa_socket_boundary(MACHINE(obj)); } static char *virt_get_aia_guests(Object *obj, Error **errp)