From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426499; cv=none; d=zohomail.com; s=zohoarc; b=QVn6WqKtorIBUciV385s/x9+w8/6zcomTh1KgnVFbn0vtuGjUEk3ntvI7oPfjrlD3X8q+V33A/sMe1eRMlEyuQiHr5b4BJwOA3LLQRSHc3Mqz1zbByDhHDXhEEi1WqbIv0MwrJMnta2KqhfB1gCzkZCDmq1r5Z57Ul/af9nhFIQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426499; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=DUzAvb05rmxtCAL6bjqWGB7J65IhvgQ/bEM5BESrV2Q=; b=GcnimfAYjvrnX/9DDACQYaSyb7mtTBegmwNuiQ436SCYbZEPqlyzOkhPSX7szE71vbm492YJyIRh25bFKP1c4oLIn2QFfhjs+1mBEV0pL2KlwAMBi52HqOvuM23tku1qTPkcb83dborbTLYkxfNLl7MP58DIJeldPsiWwu5HSXo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687426498952324.007020651283; Thu, 22 Jun 2023 02:34:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGhn-0000kI-Ct; Thu, 22 Jun 2023 05:34:20 -0400 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 1qCGhk-0000j0-DA; Thu, 22 Jun 2023 05:34:16 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGhi-00038c-Jq; Thu, 22 Jun 2023 05:34:16 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-54290603887so3642806a12.1; Thu, 22 Jun 2023 02:34:13 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426451; x=1690018451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DUzAvb05rmxtCAL6bjqWGB7J65IhvgQ/bEM5BESrV2Q=; b=qaK9ErjwzJqPC2KvjIeTKSP8EY3KjxCYTYzcBh8CFO2ngKz2WSSPOKjNNoy+dvGHCA 6qGohGZoBZcdRwqpBWtMCwCov8RXNR7Wxh60lAw7/cY1w5y/nBbnwyZ0iyHjanGJ4nn1 AVpb3K5wZ92zubxRq+DcU81/XRSWhbeGHBHXuRjE0HJ/yw4+HmxoleDsWuVC0nWyLTzE +IBB9yjZFZpOgPzf3+4Yfsl5+2TQ9slq6cQNtG0se73w7qzbVyRtjqieixC80eI+5pLM Qh0AErgsFVvGzvb2rVYgHkTIrzDWGSKTX48OIAUtKwNOS4HGjv3Us4/NsmfHdjTivPUz ftNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426451; x=1690018451; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DUzAvb05rmxtCAL6bjqWGB7J65IhvgQ/bEM5BESrV2Q=; b=kSyHWChbA8iUKD1gZr8OxbWiGC5DSZ5R9K+FWXoCfySuAFfi1x/XY2RFWi5JefbgtB TAAx8tqeme1zy/IE//5PcDGe+NThUrKNLvUEjuz+WdlwEeI4Rw2pZwoUSLzrA5YMhIGS xRHS4/p8lOsofqMGYUnYkIixQ0esxasT9CvTUmJGBsuOzw49VwLa+hphpQyw6333B13A dacRQf4cPof7CXyyEXD5j6OqlhBRx2CBKlqTykQPFRYj1kG2xHDqS7GwStlKsgLR7Ap9 SILkwrNO6Z4PDZtmSb0dEU4YWYYajuxK9QWC8IMHe4eQDBSyVnKIs6yzVKXVePyZT0Fv FmMA== X-Gm-Message-State: AC+VfDwOhAhVtjx65YssQdVRfp/C4unwdkGxIfIkTZ03HMstuQnB5N6k ZASNvkY86WOKTrZW8E+rJh1AiEIQrhI= X-Google-Smtp-Source: ACHHUZ5YKyFe4kI/iUUt8av0btAd4FDK0ayVcNe1+PYi4jYDuudozQtiA2oZZfj1qrOZQ6XX7klH7g== X-Received: by 2002:a05:6a21:585:b0:116:e7d9:8df0 with SMTP id lw5-20020a056a21058500b00116e7d98df0mr6256906pzb.51.1687426451391; Thu, 22 Jun 2023 02:34:11 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 1/7] target/ppc: Add initial flags and helpers for SMT support Date: Thu, 22 Jun 2023 19:33:51 +1000 Message-Id: <20230622093357.255649-2-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=npiggin@gmail.com; helo=mail-pg1-x533.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426501651100003 Content-Type: text/plain; charset="utf-8" TGC SMT emulation needs to know whether it is running with SMT siblings, to be able to iterate over siblings in a core, and to serialise threads to access per-core shared SPRs. Add infrastructure to do these things. For now the sibling iteration and serialisation are implemented in a simple but inefficient way. SMT shared state and sibling access is not too common, and SMT configurations are mainly useful to test system code, so performance is not to critical. Signed-off-by: Nicholas Piggin Reviewed-by: C=C3=A9dric Le Goater --- target/ppc/cpu.h | 9 +++++++++ target/ppc/cpu_init.c | 5 +++++ target/ppc/translate.c | 20 ++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index bfa1777289..0087ce66e2 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -672,6 +672,8 @@ enum { POWERPC_FLAG_TM =3D 0x00100000, /* Has SCV (ISA 3.00) = */ POWERPC_FLAG_SCV =3D 0x00200000, + /* Has >1 thread per core = */ + POWERPC_FLAG_SMT =3D 0x00400000, }; =20 /* @@ -1270,6 +1272,13 @@ struct CPUArchState { uint64_t pmu_base_time; }; =20 +#define _CORE_ID(cs) \ + (POWERPC_CPU(cs)->env.spr_cb[SPR_PIR].default_value & ~(cs->nr_threads= - 1)) + +#define THREAD_SIBLING_FOREACH(cs, cs_sibling) \ + CPU_FOREACH(cs_sibling) \ + if (_CORE_ID(cs) =3D=3D _CORE_ID(cs_sibling)) + #define SET_FIT_PERIOD(a_, b_, c_, d_) \ do { \ env->fit_period[0] =3D (a_); \ diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index dccc064053..aeff71d063 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6755,6 +6755,7 @@ static void ppc_cpu_realize(DeviceState *dev, Error *= *errp) { CPUState *cs =3D CPU(dev); PowerPCCPU *cpu =3D POWERPC_CPU(dev); + CPUPPCState *env =3D &cpu->env; PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); Error *local_err =3D NULL; =20 @@ -6786,6 +6787,10 @@ static void ppc_cpu_realize(DeviceState *dev, Error = **errp) =20 pcc->parent_realize(dev, errp); =20 + if (env_cpu(env)->nr_threads > 1) { + env->flags |=3D POWERPC_FLAG_SMT; + } + return; =20 unrealize: diff --git a/target/ppc/translate.c b/target/ppc/translate.c index b62b624682..5d585393c5 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -236,6 +236,26 @@ struct opc_handler_t { void (*handler)(DisasContext *ctx); }; =20 +static inline bool gen_serialize(DisasContext *ctx) +{ + if (tb_cflags(ctx->base.tb) & CF_PARALLEL) { + /* Restart with exclusive lock. */ + gen_helper_exit_atomic(cpu_env); + ctx->base.is_jmp =3D DISAS_NORETURN; + return false; + } + return true; +} + +static inline bool gen_serialize_core(DisasContext *ctx) +{ + if (ctx->flags & POWERPC_FLAG_SMT) { + return gen_serialize(ctx); + } + + return true; +} + /* SPR load/store helpers */ static inline void gen_load_spr(TCGv t, int reg) { --=20 2.40.1 From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426573; cv=none; d=zohomail.com; s=zohoarc; b=al50fsKBtdG3WZMdeCf9sjUwB2q1IGCvvRAV/uJWyLfV0coKRJYnD8mEhLts1wDplQ324eaOQXiIi/97fVmjjvu0MApDWSWJhINzIr3fVdJNbewVN65lxy3aD42t3rJm/OLHYq80zjA5nywDOkRORWV8/PWBQl70cgeuDnC2n6Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426573; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=IJQeOCVTk4IYZUoWEWRQMehatOO+sQzn5G0/NFJ9jWQ=; b=JWzcaWd6kpvlgR6pzoNJ7P2tQssevilnS/pdPG48azVSiY5A6RQqs+8taYCUjVYm9aUlH/E00/4HdGi3DYZbX3KQeGfIFjO+B59VGqQp/z3w3iERC4CfO6+fNR+3AlErZnnCkf+F3mpyynLiwcitaCzmDBUOiN2zUZGFVrbfEN8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687426573578723.9494418348222; Thu, 22 Jun 2023 02:36:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGhq-0000kd-5u; Thu, 22 Jun 2023 05:34:22 -0400 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 1qCGhn-0000kN-Hj; Thu, 22 Jun 2023 05:34:20 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGhl-0003NV-W9; Thu, 22 Jun 2023 05:34:19 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1b55bc0c907so37493205ad.0; Thu, 22 Jun 2023 02:34:17 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426456; x=1690018456; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IJQeOCVTk4IYZUoWEWRQMehatOO+sQzn5G0/NFJ9jWQ=; b=gvzmWDnUt5FpVHiGh/YY4/xI/qL1lDzDQkdnt3Jan8BoGA2VfQB6brd3pRyoPtbJdy Hzhnn4kcD6PO3b4VGdwXlkfT51zf2qCLiTKY92YvdkDyo1uIT6dPy1oX08obMRUrJw79 LEb4LAUut144bZVV+cJNTb9AAQ0oo/virS1pEwRDNj9Rh0V+YOcTx7S37wlv4W8Dp/rl fH0hjDEE20Gxz+gqBm2iUyKsKUHqqhlb1z+RYfL6FzDIBVs7BWNomB4SDM4EAOHC/r5s 4ELiQB9duLBja9u/1ST4cIWNcJ96krSSsBDQYlhxpUJ4FrsWs7iXg36PdxD+pkSRXuSY 7SLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426456; x=1690018456; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IJQeOCVTk4IYZUoWEWRQMehatOO+sQzn5G0/NFJ9jWQ=; b=hi76w8YMbT6vUVCDLvRTt2oh2M6zSRwnp+mLWXD0iF4tbK79ubHspmiYQa+xuFTp/Z nbUqftRWrac3yeh3PXE6ucbZ2XT8D/1GAxxu4o+1xjaztq6OPo1VdxHZ8QSDr5sJo+KI 6S/FmDyPvEYT+gXpj8GdFkyFkzgkBbkd0JhCH8j5HHcI0bR1Fgw/XjC/NdkA24jSrQtd N0crGhUwwS1NM+8DU1LqU+i3LW6g5lAj5sUySscU3zEza3HvWFM81dL92Z8LeLKO4yX8 k61IHBAbxJGZZN+Vt+KWlqraXF7DyQDrQz4Yvi3kOlvIor9APVgJZdy863dYvSbO6A0/ crFQ== X-Gm-Message-State: AC+VfDw5GzTE5Pd//JRnQnHefheiu1Tcj+ODbgnjb6/evGAgPs/OrZU3 q+aEeRxza482hzH+xlyukEYS5G3N1oM= X-Google-Smtp-Source: ACHHUZ5OvyE6D7Rmq/6sKGERS11n+uxp0bDn/UKuJXmnOx5U4QAXwnMGgAbNQGBLIyDu471Zd0snQA== X-Received: by 2002:a17:902:6b44:b0:1b5:3500:9e22 with SMTP id g4-20020a1709026b4400b001b535009e22mr16457820plt.63.1687426455951; Thu, 22 Jun 2023 02:34:15 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 2/7] target/ppc: Add support for SMT CTRL register Date: Thu, 22 Jun 2023 19:33:52 +1000 Message-Id: <20230622093357.255649-3-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=npiggin@gmail.com; helo=mail-pl1-x631.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426573883100001 Content-Type: text/plain; charset="utf-8" A relatively simple case to begin with, CTRL is a SMT shared register where reads and writes need to synchronise against state changes by other threads in the core. Atomic serialisation operations are used to achieve this. Signed-off-by: Nicholas Piggin Reviewed-by: C=C3=A9dric Le Goater --- target/ppc/helper.h | 2 ++ target/ppc/misc_helper.c | 25 +++++++++++++++++++++++++ target/ppc/translate.c | 18 +++++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index 38efbc351c..fda40b8a60 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -704,6 +704,8 @@ DEF_HELPER_3(store_dcr, void, env, tl, tl) =20 DEF_HELPER_2(load_dump_spr, void, env, i32) DEF_HELPER_2(store_dump_spr, void, env, i32) +DEF_HELPER_3(spr_write_CTRL, void, env, i32, tl) + DEF_HELPER_4(fscr_facility_check, void, env, i32, i32, i32) DEF_HELPER_4(msr_facility_check, void, env, i32, i32, i32) DEF_HELPER_FLAGS_1(load_tbl, TCG_CALL_NO_RWG, tl, env) diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index 40ddc5c08c..a058eb24cd 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -43,6 +43,31 @@ void helper_store_dump_spr(CPUPPCState *env, uint32_t sp= rn) env->spr[sprn]); } =20 +void helper_spr_write_CTRL(CPUPPCState *env, uint32_t sprn, + target_ulong val) +{ + CPUState *cs =3D env_cpu(env); + CPUState *ccs; + uint32_t run =3D val & 1; + uint32_t ts, ts_mask; + + assert(sprn =3D=3D SPR_CTRL); + + env->spr[sprn] &=3D ~1U; + env->spr[sprn] |=3D run; + + ts_mask =3D ~(1U << (8 + env->spr[SPR_TIR])); + ts =3D run << (8 + env->spr[SPR_TIR]); + + THREAD_SIBLING_FOREACH(cs, ccs) { + CPUPPCState *cenv =3D &POWERPC_CPU(ccs)->env; + + cenv->spr[sprn] &=3D ts_mask; + cenv->spr[sprn] |=3D ts; + } +} + + #ifdef TARGET_PPC64 static void raise_hv_fu_exception(CPUPPCState *env, uint32_t bit, const char *caller, uint32_t cause, diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 5d585393c5..41a8b800bd 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -438,7 +438,7 @@ void spr_write_generic32(DisasContext *ctx, int sprn, i= nt gprn) #endif } =20 -void spr_write_CTRL(DisasContext *ctx, int sprn, int gprn) +static void spr_write_CTRL_ST(DisasContext *ctx, int sprn, int gprn) { /* This does not implement >1 thread */ TCGv t0 =3D tcg_temp_new(); @@ -447,6 +447,22 @@ void spr_write_CTRL(DisasContext *ctx, int sprn, int g= prn) tcg_gen_shli_tl(t1, t0, 8); /* Duplicate the bit in TS */ tcg_gen_or_tl(t1, t1, t0); gen_store_spr(sprn, t1); +} + +void spr_write_CTRL(DisasContext *ctx, int sprn, int gprn) +{ + if (!(ctx->flags & POWERPC_FLAG_SMT)) { + spr_write_CTRL_ST(ctx, sprn, gprn); + goto out; + } + + if (!gen_serialize(ctx)) { + return; + } + + gen_helper_spr_write_CTRL(cpu_env, tcg_constant_i32(sprn), + cpu_gpr[gprn]); +out: spr_store_dump_spr(sprn); =20 /* --=20 2.40.1 From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426498; cv=none; d=zohomail.com; s=zohoarc; b=RKgDyFQaI04iPxT/sp0sbWKUSZCJXO/4wKR1ZLzCLc1WVm37zkZHT4kUgSFOUnhsIswsSci0CdR0bG0t6UXniZn8BPcmZHdJ4pXwdeQR0KYE8vUPLw9qToBsdLUMfR2OLcq1EWLeOqIPxJm2tjyzFtXxSC5kxLnwOJUqjLbi3MI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426498; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Pzzr5pE6kWqzcd42lVxfWrDN6uelcbJs3SVe8LRJUoc=; b=cGSpn5tJUfj3o5LcnbqI33o0pRTNQQQJZfReAuviv5OlPHo4PLo2Gr0L2TemA4IV0p4OCt1xlQ9Naea1Y3UzP6xJpmRppWM+Z/ooTFXgyWrTZiU5kkinYF/wxJlv1QvZcRdsWlULq1UIosjR9BYOHKaQbYsUPabOTXmEuH7q99E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687426498928784.0578422362626; Thu, 22 Jun 2023 02:34:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGht-0000lc-Jw; Thu, 22 Jun 2023 05:34:25 -0400 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 1qCGhs-0000lD-0x; Thu, 22 Jun 2023 05:34:24 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGhq-0003QB-Ay; Thu, 22 Jun 2023 05:34:23 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1b52132181aso37095835ad.2; Thu, 22 Jun 2023 02:34:21 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426460; x=1690018460; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Pzzr5pE6kWqzcd42lVxfWrDN6uelcbJs3SVe8LRJUoc=; b=a6ibJTKNdIb8mRHWoFW1fh/th/hYh90MCE983YD2zyN7mMPuf/7ToZGon8O1W7Eff5 6+Ktf2qJb117Vz9qldJtR4AtnUV79tj0EE7Zf6clSXaFV1rjjZp+6E3hemYjzMicicHO /QONtKQUCAnWWpswjeIQEiFDlHtOm/OBjIASxIyxaWM2U8GyJ92Uzrtfd7dWgW6/umym 6ls/n4BA8c7NjGHs5xNjxVQY9SunfXGVXX/+VjwninUUPjicVU8p0KHqMx11KoZ8vG77 1J0hvpudbWfYeQRK7hXbcfMFt8krSkgIeqYuNW14BCp2iuK3c5f6XCCASk7Y3gG9hc2v eniA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426460; x=1690018460; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Pzzr5pE6kWqzcd42lVxfWrDN6uelcbJs3SVe8LRJUoc=; b=bMRGBs3WFR9n4g1hO96Jo6E3545MLbV4pwcKbXaRFTAjfxi3XdX022vfdZmTojewIl ckqCqN88nBWB3ts/ATCV8sRYf6tBm5d+xqg2cLc+7Fh+iWAyaa7Ayx4KBgb1MP1K3cuy EDcJnnHaq7QLX423uLNIeYIvNJWrx4jnTELj3g0NW0A2/zKZAeNr+NSNCdoEmSsJcT1f BQeePb/+smJh740+MRvm7ZFxtVCommzN5P5pZLmwmqCR3YCDwsiX2mZIMytriR6PSpJf EDQn3Mw4gIYcR/9Q8PTW427gJq/2fVtC9XSdbFuF0VPN5VSagT5ewiZnv16yALUtS4kB /Yfg== X-Gm-Message-State: AC+VfDy8nMM9WfzrGMQzJaufPXs0Z+Cf+WupQwKzlHOwTU6Xu2EwZxtl s0udKSP3uFYRyI+oRnsGnjDoRa68hBA= X-Google-Smtp-Source: ACHHUZ6OVeIT63zBfxw7pXUmS2N9/geH0gnd5RbUpsOTVMVD63Bp096PJVS/YA+RF+TMgSe/EVMDdQ== X-Received: by 2002:a17:903:234b:b0:1b5:42fe:5eac with SMTP id c11-20020a170903234b00b001b542fe5eacmr11298166plh.10.1687426460306; Thu, 22 Jun 2023 02:34:20 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 3/7] target/ppc: Add msgsnd/p and DPDES SMT support Date: Thu, 22 Jun 2023 19:33:53 +1000 Message-Id: <20230622093357.255649-4-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=npiggin@gmail.com; helo=mail-pl1-x634.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426501695100004 Content-Type: text/plain; charset="utf-8" Doorbells in SMT need to coordinate msgsnd/msgclr and DPDES access from multiple threads that affect the same state. Signed-off-by: Nicholas Piggin Reviewed-by: C=C3=A9dric Le Goater --- hw/ppc/ppc.c | 6 ++++++ include/hw/ppc/ppc.h | 1 + target/ppc/excp_helper.c | 30 ++++++++++++++++++++++----- target/ppc/misc_helper.c | 44 ++++++++++++++++++++++++++++++++++------ target/ppc/translate.c | 8 ++++++++ 5 files changed, 78 insertions(+), 11 deletions(-) diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 1b1220c423..82e4408c5c 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -1436,6 +1436,12 @@ int ppc_cpu_pir(PowerPCCPU *cpu) return env->spr_cb[SPR_PIR].default_value; } =20 +int ppc_cpu_tir(PowerPCCPU *cpu) +{ + CPUPPCState *env =3D &cpu->env; + return env->spr_cb[SPR_TIR].default_value; +} + PowerPCCPU *ppc_get_vcpu_by_pir(int pir) { CPUState *cs; diff --git a/include/hw/ppc/ppc.h b/include/hw/ppc/ppc.h index 02af03ada2..e095c002dc 100644 --- a/include/hw/ppc/ppc.h +++ b/include/hw/ppc/ppc.h @@ -6,6 +6,7 @@ void ppc_set_irq(PowerPCCPU *cpu, int n_IRQ, int level); PowerPCCPU *ppc_get_vcpu_by_pir(int pir); int ppc_cpu_pir(PowerPCCPU *cpu); +int ppc_cpu_tir(PowerPCCPU *cpu); =20 /* PowerPC hardware exceptions management helpers */ typedef void (*clk_setup_cb)(void *opaque, uint32_t freq); diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 7d45035447..d40eecb4c7 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -3187,22 +3187,42 @@ void helper_book3s_msgclrp(CPUPPCState *env, target= _ulong rb) } =20 /* - * sends a message to other threads that are on the same + * sends a message to another thread on the same * multi-threaded processor */ void helper_book3s_msgsndp(CPUPPCState *env, target_ulong rb) { - int pir =3D env->spr_cb[SPR_PIR].default_value; + CPUState *cs =3D env_cpu(env); + PowerPCCPU *cpu =3D POWERPC_CPU(cs); + CPUState *ccs; + uint32_t nr_threads =3D cs->nr_threads; + int ttir =3D rb & PPC_BITMASK(57, 63); =20 helper_hfscr_facility_check(env, HFSCR_MSGP, "msgsndp", HFSCR_IC_MSGP); =20 - if (!dbell_type_server(rb)) { + if (!dbell_type_server(rb) || ttir >=3D nr_threads) { + return; + } + + if (nr_threads =3D=3D 1) { + ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, 1); return; } =20 - /* TODO: TCG supports only one thread */ + /* Does iothread need to be locked for walking CPU list? */ + qemu_mutex_lock_iothread(); + THREAD_SIBLING_FOREACH(cs, ccs) { + PowerPCCPU *ccpu =3D POWERPC_CPU(ccs); + uint32_t thread_id =3D ppc_cpu_tir(ccpu); + + if (ttir =3D=3D thread_id) { + ppc_set_irq(ccpu, PPC_INTERRUPT_DOORBELL, 1); + qemu_mutex_unlock_iothread(); + return; + } + } =20 - book3s_msgsnd_common(pir, PPC_INTERRUPT_DOORBELL); + g_assert_not_reached(); } #endif /* TARGET_PPC64 */ =20 diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c index a058eb24cd..1f1af21f33 100644 --- a/target/ppc/misc_helper.c +++ b/target/ppc/misc_helper.c @@ -184,14 +184,31 @@ void helper_store_pcr(CPUPPCState *env, target_ulong = value) */ target_ulong helper_load_dpdes(CPUPPCState *env) { + CPUState *cs =3D env_cpu(env); + CPUState *ccs; + uint32_t nr_threads =3D cs->nr_threads; target_ulong dpdes =3D 0; =20 helper_hfscr_facility_check(env, HFSCR_MSGP, "load DPDES", HFSCR_IC_MS= GP); =20 - /* TODO: TCG supports only one thread */ - if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { - dpdes =3D 1; + if (nr_threads =3D=3D 1) { + if (env->pending_interrupts & PPC_INTERRUPT_DOORBELL) { + dpdes =3D 1; + } + return dpdes; + } + + qemu_mutex_lock_iothread(); + THREAD_SIBLING_FOREACH(cs, ccs) { + PowerPCCPU *ccpu =3D POWERPC_CPU(ccs); + CPUPPCState *cenv =3D &ccpu->env; + uint32_t thread_id =3D ppc_cpu_tir(ccpu); + + if (cenv->pending_interrupts & PPC_INTERRUPT_DOORBELL) { + dpdes |=3D (0x1 << thread_id); + } } + qemu_mutex_unlock_iothread(); =20 return dpdes; } @@ -199,17 +216,32 @@ target_ulong helper_load_dpdes(CPUPPCState *env) void helper_store_dpdes(CPUPPCState *env, target_ulong val) { PowerPCCPU *cpu =3D env_archcpu(env); + CPUState *cs =3D env_cpu(env); + CPUState *ccs; + uint32_t nr_threads =3D cs->nr_threads; =20 helper_hfscr_facility_check(env, HFSCR_MSGP, "store DPDES", HFSCR_IC_M= SGP); =20 - /* TODO: TCG supports only one thread */ - if (val & ~0x1) { + if (val & ~(nr_threads - 1)) { qemu_log_mask(LOG_GUEST_ERROR, "Invalid DPDES register value " TARGET_FMT_lx"\n", val); + val &=3D (nr_threads - 1); /* Ignore the invalid bits */ + } + + if (nr_threads =3D=3D 1) { + ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, val & 0x1); return; } =20 - ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, val & 0x1); + /* Does iothread need to be locked for walking CPU list? */ + qemu_mutex_lock_iothread(); + THREAD_SIBLING_FOREACH(cs, ccs) { + PowerPCCPU *ccpu =3D POWERPC_CPU(ccs); + uint32_t thread_id =3D ppc_cpu_tir(ccpu); + + ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, val & (0x1 << thread_id)); + } + qemu_mutex_unlock_iothread(); } #endif /* defined(TARGET_PPC64) */ =20 diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 41a8b800bd..eb278c2683 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -815,11 +815,19 @@ void spr_write_pcr(DisasContext *ctx, int sprn, int g= prn) /* DPDES */ void spr_read_dpdes(DisasContext *ctx, int gprn, int sprn) { + if (!gen_serialize_core(ctx)) { + return; + } + gen_helper_load_dpdes(cpu_gpr[gprn], cpu_env); } =20 void spr_write_dpdes(DisasContext *ctx, int sprn, int gprn) { + if (!gen_serialize_core(ctx)) { + return; + } + gen_helper_store_dpdes(cpu_env, cpu_gpr[gprn]); } #endif --=20 2.40.1 From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426580; cv=none; d=zohomail.com; s=zohoarc; b=ep2dAgTySGMXyn46RNeTwXfW9ZBMJND4+W5LmjYmr0hqdnLTTWdAOjLpicuwQE/vkG4nFkhOo6AtjPYAQopYstqGwF8bH55DovEOzQrHE39yP7Sp7KrfxmkZkETMGiEhOoYqb4vbAiMFPsEJM7wwYN8kbJhp2S7LWWNdV99Wi90= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426580; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kWccjYSUgbzH7iFLpghJHKGPLA8F7swC2dsX7bfHZ54=; b=dlpmZTgeFK9hBpIt9NNpgC4zj+2B5mcroPhVU2Jbk0AnBq3jVSHJxTvKVo3ksqZzEMt4c7WmYvntT8GfwCu+qn7WPafalKwjRAna4T64w90QEj5MPScKnCvKTVnFreHL9qiqRlcOFMz2pghAWETY2CCrVIg6aaaBslPInPOog1Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687426580329254.25243596407483; Thu, 22 Jun 2023 02:36:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGhx-0000mj-7L; Thu, 22 Jun 2023 05:34:29 -0400 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 1qCGhw-0000mN-EV; Thu, 22 Jun 2023 05:34:28 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGhv-0003Qm-0Y; Thu, 22 Jun 2023 05:34:28 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-666ecf9a081so5143734b3a.2; Thu, 22 Jun 2023 02:34:26 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426465; x=1690018465; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kWccjYSUgbzH7iFLpghJHKGPLA8F7swC2dsX7bfHZ54=; b=rDtYOTbno9xDsTG69Nb4AiFnRFuOnz+Kjv+Us4bz0rH+shVIY7JXJo/AHwriYZkh4p PsDKqLTTyBkOT5sM27phnRGoZdgFEMxsl1OhsetRK+8FleosHPkDxeOOZmc547M6mnu/ v9EMjC458DLE3UJFhzxsJi/+vo2/qhr0z5Or5mE/HUXswt1qG9OVMUsyT+Deei2Q91wp 58pM4ylFoFafv4Z5aqSpQGFFN0pxdBE02o4RpL+ADjUYhxliG2M/YIjUlvlLPaLIMZ+6 46d6/ut/D/bhOHIsKrest78ILbUngWnK6JRJc2sYKGBR3lgD4Ftut7mP3NGDT6u9LoUw +PWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426465; x=1690018465; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kWccjYSUgbzH7iFLpghJHKGPLA8F7swC2dsX7bfHZ54=; b=FexkPQf7mu44QxSYsdKDYMGXnpDzuCbO9MFZ78L3nCOnZtf6JFMa8gWTxJtBfHCzIX bPp+Bmjg1KN6iB4hSeXP6PIN77VmOZkhQMkgbVV5dx6Vq+bVUqPbefXhn0+HQgyuZeoF zRNK9Nx6kt+FeDg2AwDmQ/SEnldYsBgOJzLHSuy+4EFfzxo3Wj005XLqgaceCsOUjKFf eWmdgAcC80s0CJe9UYsUaTa7/CVtZ7Vo3vG0INvuSsL9b90pRL5h/ITTlKt88+wPq+qc s7oMJ2puVesxcOSsvrvCnkeyNCp3/zPBR2/PDIitYM1Sel3+DS+xPrDve+rQd2d1Uw4p H4qw== X-Gm-Message-State: AC+VfDzLbL7n2ktqI3RSNcQ5BThdKOpHwnnJBziLmPL4LUGLpE+fkHDj jq8KvHZM1hYM/hVQpD/CYb1Q8e3/7Ho= X-Google-Smtp-Source: ACHHUZ45cLqe8Ypcb1fQZfceYD2PtJ980w4Gy23Ud1TdNmcnL6bGRsWw6tsCXIJwQRZThAz3wgh+Ig== X-Received: by 2002:a05:6a20:244e:b0:123:6ab3:7af1 with SMTP id t14-20020a056a20244e00b001236ab37af1mr3817978pzc.6.1687426464880; Thu, 22 Jun 2023 02:34:24 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 4/7] hw/ppc/spapr: Test whether TCG is enabled with tcg_enabled() Date: Thu, 22 Jun 2023 19:33:54 +1000 Message-Id: <20230622093357.255649-5-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=npiggin@gmail.com; helo=mail-pf1-x431.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426581478100003 From: Philippe Mathieu-Daud=C3=A9 Although the PPC target only supports the TCG and KVM accelerators, QEMU supports more. We can not assume that '!kvm =3D=3D tcg', so test for the correct accelerator. This also eases code review, because here we don't care about KVM, we really want to test for TCG. Reviewed-by: Greg Kurz Reviewed-by: Harsh Prateek Bora Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: David Gibson Signed-off-by: Philippe Mathieu-Daud=C3=A9 [np: Fix changelog typo noticed by Zoltan] Signed-off-by: Nicholas Piggin --- hw/ppc/spapr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index e55905a1f0..8e7d497f25 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2525,7 +2525,7 @@ static void spapr_set_vsmt_mode(SpaprMachineState *sp= apr, Error **errp) int ret; unsigned int smp_threads =3D ms->smp.threads; =20 - if (!kvm_enabled() && (smp_threads > 1)) { + if (tcg_enabled() && (smp_threads > 1)) { error_setg(errp, "TCG cannot support more than 1 thread/core " "on a pseries machine"); return; --=20 2.40.1 From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426517; cv=none; d=zohomail.com; s=zohoarc; b=Vqz4QDpAZoXPP36VgC4R0VuYDWcBbUBv/6OBr0BSA2eBjsgdSA3x8w5Dt4KDkm55YUh9+cQB3pWu93UWQ7qi6K82HgMmrXVi7/jLdH/OrptUaAyN5FVE89rDVuKYsfBKmlPBOinXeAZBjJmF09c95Kqg/h0gXGYFyMmJiOoEk+c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426517; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iztxxuocG32dEPagObJRElL6SocUWZT7jIaplMj9hX4=; b=RAcZukgFBlhxidPnJpc4/p//wvjhlHwvl7/4AnBiZq2RPEZtGS1uonBgTetwLbCyXf7XEZV8Bxl6ewPVM/HZYCY53b2c8/C8JKlgIRNjCB8LogNV2TubZrVKitr1z700sZPqcwt5c3selqZjE1AfLV4LqPE0FFz+nNKVBjqygI0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687426517781656.1279066289064; Thu, 22 Jun 2023 02:35:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGi3-0000pC-7l; Thu, 22 Jun 2023 05:34:35 -0400 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 1qCGi1-0000oS-Ag; Thu, 22 Jun 2023 05:34:33 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGhz-0003RZ-N5; Thu, 22 Jun 2023 05:34:33 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-666e5f0d60bso3453959b3a.3; Thu, 22 Jun 2023 02:34:30 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426469; x=1690018469; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iztxxuocG32dEPagObJRElL6SocUWZT7jIaplMj9hX4=; b=mTLsdN43dBOoMWkCneDStYkzKFyjKI1OlMRBhM9laXni6AP5Zcgn1hclCXR6bIFbAh h5KiDp5gG9Bl/3qkDoDtFMdjqMh3j1nlLzXeE165kUcvABXm5s9VqglZEeleoaw0OlXj Pjsf8Yp3oU+P5F5gWLyiRyJgE0s5rnHTQ5AquciF4e2PzfKT1f34DzMlquLihuT9O+fm NoxrhDFYJ/ZvOJFb3deQmlx5PeURx8GVfHBplIlotuDoA25Ru7AgqtQS0XXp7QMiPUup +GRY85jn939jDkNT80ad+lXrLjKs8SI1n8PuLOeocgkHi5kt4aSyeYbyz3cCeQ6JHGWC EA2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426469; x=1690018469; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iztxxuocG32dEPagObJRElL6SocUWZT7jIaplMj9hX4=; b=Gs8KDGYH4jW8Kyk3fu15d7JIF9F+XjU9m1Yfl+jo2B3kWnY127Ozq9A/ZYa/RLFGJD vZKeAdKNEPW2lDdbnaW701DAGXQwevWn+EyPsfTM6/eQkecZVjsz0Zw5MUpxkE97AyrA OUckwsMIgjyBT9nVBPAtcNN9RLsCy/BPO7gyay0q1YOFB5Em94qVromk5JiNj6tAMBcK KXCrCDyTOawSvi9+GMSHJjAdw/wyPUwJSWsy6RJSX36+e0lvlZmWqGDNmDKUOnt7hVSU UxWaQR9oi70yhjWYUHR2WffsrnU6EFVEDoSJwNUoNTyVGo7LvbC3PIvpb//O0BG4YpZ8 649Q== X-Gm-Message-State: AC+VfDwI4NsIWkFxy+PK5kakKVCoSffIneLtXLCBzLoqPHEb56fVTSNK MPd9pNWLBvqUnRKEAQHmo0ZY+jP9D7o= X-Google-Smtp-Source: ACHHUZ6/zoG3SgjxJdwpZWMXg9v+ae144eSXD+Bj8TLRI0MHcJJMc1wC73t0aemi7JQ6NvpDBzBr0g== X-Received: by 2002:a05:6a20:4299:b0:121:d74e:8b46 with SMTP id o25-20020a056a20429900b00121d74e8b46mr8843969pzj.55.1687426469406; Thu, 22 Jun 2023 02:34:29 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 5/7] spapr: TCG allow up to 8-thread SMT on POWER8 and newer CPUs Date: Thu, 22 Jun 2023 19:33:55 +1000 Message-Id: <20230622093357.255649-6-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=npiggin@gmail.com; helo=mail-pf1-x430.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426519204100003 Content-Type: text/plain; charset="utf-8" PPC TCG supports SMT CPU configurations for non-hypervisor state, so permit POWER8-10 pseries machines to enable SMT. This requires PIR and TIR be set, because that's how sibling thread matching is done by TCG. spapr's nested-HV capability does not currently coexist with SMT, so that combination is prohibited (interestingly somewhat analogous to LPAR-per-core mode on real hardware which also does not support KVM). Signed-off-by: Nicholas Piggin Reviewed-by: C=C3=A9dric Le Goater --- hw/ppc/spapr.c | 16 ++++++++++++---- hw/ppc/spapr_caps.c | 14 ++++++++++++++ hw/ppc/spapr_cpu_core.c | 7 +++++-- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 8e7d497f25..677b5eef9d 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -2525,10 +2525,18 @@ static void spapr_set_vsmt_mode(SpaprMachineState *= spapr, Error **errp) int ret; unsigned int smp_threads =3D ms->smp.threads; =20 - if (tcg_enabled() && (smp_threads > 1)) { - error_setg(errp, "TCG cannot support more than 1 thread/core " - "on a pseries machine"); - return; + if (tcg_enabled()) { + if (!ppc_type_check_compat(ms->cpu_type, CPU_POWERPC_LOGICAL_2_07,= 0, + spapr->max_compat_pvr)) { + error_setg(errp, "TCG only supports SMT on POWER8 or newer CPU= s"); + return; + } + + if (smp_threads > 8) { + error_setg(errp, "TCG cannot support more than 8 threads/core " + "on a pseries machine"); + return; + } } if (!is_power_of_2(smp_threads)) { error_setg(errp, "Cannot support %d threads/core on a pseries " diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c index 3fd45a6dec..5a0755d34f 100644 --- a/hw/ppc/spapr_caps.c +++ b/hw/ppc/spapr_caps.c @@ -473,6 +473,20 @@ static void cap_nested_kvm_hv_apply(SpaprMachineState = *spapr, error_append_hint(errp, "Try appending -machine cap-nested-hv=3D= off\n"); } + } else if (tcg_enabled()) { + MachineState *ms =3D MACHINE(spapr); + unsigned int smp_threads =3D ms->smp.threads; + + /* + * Nested-HV vCPU env state to L2, so SMT-shared SPR updates, for + * example, do not necessarily update the correct SPR value on sib= ling + * threads that are in a different guest/host context. + */ + if (smp_threads > 1) { + error_setg(errp, "TCG does not support nested-HV with SMT"); + error_append_hint(errp, "Try appending -machine cap-nested-hv= =3Doff " + "or use threads=3D1 with -smp\n"); + } } } =20 diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 9b88dd549a..a4e3c2fadd 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -255,7 +255,7 @@ static void spapr_cpu_core_unrealize(DeviceState *dev) } =20 static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMachineState *spapr, - SpaprCpuCore *sc, Error **errp) + SpaprCpuCore *sc, int thread_index, Error *= *errp) { CPUPPCState *env =3D &cpu->env; CPUState *cs =3D CPU(cpu); @@ -267,6 +267,9 @@ static bool spapr_realize_vcpu(PowerPCCPU *cpu, SpaprMa= chineState *spapr, cpu_ppc_set_vhyp(cpu, PPC_VIRTUAL_HYPERVISOR(spapr)); kvmppc_set_papr(cpu); =20 + env->spr_cb[SPR_PIR].default_value =3D cs->cpu_index; + env->spr_cb[SPR_TIR].default_value =3D thread_index; + /* Set time-base frequency to 512 MHz. vhyp must be set first. */ cpu_ppc_tb_init(env, SPAPR_TIMEBASE_FREQ); =20 @@ -337,7 +340,7 @@ static void spapr_cpu_core_realize(DeviceState *dev, Er= ror **errp) for (i =3D 0; i < cc->nr_threads; i++) { sc->threads[i] =3D spapr_create_vcpu(sc, i, errp); if (!sc->threads[i] || - !spapr_realize_vcpu(sc->threads[i], spapr, sc, errp)) { + !spapr_realize_vcpu(sc->threads[i], spapr, sc, i, errp)) { spapr_cpu_core_unrealize(dev); return; } --=20 2.40.1 From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426576; cv=none; d=zohomail.com; s=zohoarc; b=l6mstHdJ0eEreJBR4OplGzR6dvIIkjGswNZziPMjc9JAgF3SLnxyUYEo6TH08bEJY9225yYpO4mcL0YoVCNiBK8J3cWcUZkrH4PnZWwFYH8rkW9nqWPua/wBGqPXB98K9yfGP+EQV9Sf3GXXC3YnC08/MOybZbK7jBf0ooYCiSU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426576; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Rv71JeBwwQJhPyfOZ/Amh5Fh3qe8tcffbjWWcskdp/U=; b=A6y/MIZ333eqvf4tnRkjcNN8ZytMGVCEvqhkppxf2tfDW/G8Ruz42l0Ry5ol8v1fs2VJE2LT9fxmlKsMiaSSCcx78PkjW6LpEirj9gzY3pHHwjeVQ9svssjF7WxH/+1Oh9xuKLSJoKDRB1nfMBczpt5khdz+yD7iscdW0d0QmXc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168742657640651.807635829166884; Thu, 22 Jun 2023 02:36:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGi7-0000qV-KW; Thu, 22 Jun 2023 05:34:39 -0400 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 1qCGi5-0000pa-Mi; Thu, 22 Jun 2023 05:34:37 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGi4-0003U3-6Q; Thu, 22 Jun 2023 05:34:37 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-553a1f13d9fso4120379a12.1; Thu, 22 Jun 2023 02:34:35 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426474; x=1690018474; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Rv71JeBwwQJhPyfOZ/Amh5Fh3qe8tcffbjWWcskdp/U=; b=V88PR0S/TfNkRvNfAwZU7MaGaUoqn0fkMoV9TOlJbtu9mtb+1kFG6ytx4oooNYPl7d 6w536OWroG/nq3yThVBibSpD5jWhJb5VdjgQ1KAjSn2682BkIof1aHfT2yUdqXAq4/B/ wZNwgTlPaEFEMPN80xayChamxU46dG9jne++mrvX9ax1oIMxydbePUrMvToCaSgHOhEk h/ff9zh4VHJVDTmla4w8Z075NF1l6egfLkn2u0rQmIuPGCp0xsHpBER58dJC0XWgWoY3 +2bEyYkuUVzlmF+3iw2CXuXbyGWMHwa3HqUoX0B60yaI2n7V+ayH8cJYA/McEQ4Fjeit XoEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426474; x=1690018474; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Rv71JeBwwQJhPyfOZ/Amh5Fh3qe8tcffbjWWcskdp/U=; b=OMTMsugEXHwNhOMBfhZQ81iwJkVxkMIXDY1vmAVjHbgegUMcYFnO3lbI5/aW4G5I2I 4CSrESZJ5HF+OicuK6CsxLXDwu0ceJlQT6P2UlRuRRoB6JXgupedDg9bwA6E/QxqmldX 6tgtOBheqpEEObUpkHHKRUQSGkpw+fm1xdrCSsZ9Wu2nJjsj5X9FzIvBftt/aXkQmZkx sur9cO+zjI2k64YBXt4Qa1glb67JtKdVU9DRmFBPXvpX1ghGV3Pqk+eWoU4TNXH5Lbd+ ccFaJulWcpyaDow4Lu6ML8tGZRHMVc8iBE5HlRuV/M6i2RpPzsnMXcRbTLHOxXvKmHFX WIsA== X-Gm-Message-State: AC+VfDy8bq/TWkJ73a9vN6dm/Dl3VvwRp9yN3iCp2qcyUy+VpeJr2n1W 0ab/BIHJO67Bx5VsCF8DzAOf4d4dsoU= X-Google-Smtp-Source: ACHHUZ6hNwC1ZAAOndiE+8dKIItpzujQ5fvzPRQzUJOf5PlpyFkNwWbvvhavVMV21j/vm967cZfUYQ== X-Received: by 2002:a17:902:ee51:b0:1b0:1fc7:cbc1 with SMTP id 17-20020a170902ee5100b001b01fc7cbc1mr17254017plo.27.1687426474276; Thu, 22 Jun 2023 02:34:34 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 6/7] tests/avocado: boot ppc64 pseries to Linux VFS mount Date: Thu, 22 Jun 2023 19:33:56 +1000 Message-Id: <20230622093357.255649-7-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=npiggin@gmail.com; helo=mail-pg1-x530.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426577477100002 Content-Type: text/plain; charset="utf-8" This machine can boot Linux to VFS mount, so don't stop in early boot. Signed-off-by: Nicholas Piggin Reviewed-by: C=C3=A9dric Le Goater --- tests/avocado/ppc_pseries.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/avocado/ppc_pseries.py b/tests/avocado/ppc_pseries.py index d8b04dc3ea..a152cf222e 100644 --- a/tests/avocado/ppc_pseries.py +++ b/tests/avocado/ppc_pseries.py @@ -31,5 +31,5 @@ def test_ppc64_pseries(self): self.vm.add_args('-kernel', kernel_path, '-append', kernel_command_line) self.vm.launch() - console_pattern =3D 'Kernel command line: %s' % kernel_command_line + console_pattern =3D 'VFS: Cannot open root device' wait_for_console_pattern(self, console_pattern, self.panic_message) --=20 2.40.1 From nobody Tue Feb 10 05:10:46 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687426536; cv=none; d=zohomail.com; s=zohoarc; b=PGQZ1yMQeDlW2Z5epcAWiz+kI0bLGYQIRMWh3eDmidQkgCqKcZKzo/Ce+1rfRgJGwdJlpTGhd7AOu5TM0KKbWkDP3kdpxq8aRx7Y3HAkQntGd2rp9ffxOB4dBigYrcLpu5mY/6KsB+mXkSL6zH7oEejTUtZn06eEpq//3qKh1mI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687426536; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=0QAlf14eWjU3ei2UOf8F2+vrB4RaBxT5v9V0hoY2s24=; b=DBlPIbuvU++ORE4YjClScjeUva9wDNsUOm5ZMnNHVH+J9Lfu20GJNz3x7Qh2A0tByQarhyoxQDJkidl5kuCePUMPpsh8xWm545cPjfWiKP5a8GVJfupy0VYI7PWeTu6VRpgaxUVuE8WvgTRMcUFM+JC3U3LZfgL+yCBsuGgv/7Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687426536137171.94676095486034; Thu, 22 Jun 2023 02:35:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qCGiC-0000tD-9c; Thu, 22 Jun 2023 05:34:44 -0400 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 1qCGiA-0000qd-DG; Thu, 22 Jun 2023 05:34:42 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qCGi8-0003Ug-K4; Thu, 22 Jun 2023 05:34:42 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-54f87d5f1abso3280687a12.0; Thu, 22 Jun 2023 02:34:39 -0700 (PDT) Received: from wheely.local0.net (193-116-203-37.tpgi.com.au. [193.116.203.37]) by smtp.gmail.com with ESMTPSA id x3-20020a1709027c0300b001ac2c3e54adsm4925662pll.118.2023.06.22.02.34.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Jun 2023 02:34:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687426478; x=1690018478; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=0QAlf14eWjU3ei2UOf8F2+vrB4RaBxT5v9V0hoY2s24=; b=nZqJ1WuClMSqFv0qTI+7I/YU3H2jFF/2rKkKFyoS14G/9YEM4HhLU1OYvusWWiOuIm GkUcMrZBS2T8RdbN4GDTO3Md4r8gUBy0p9q/9O0AjBMQeGi5Jy4gLiz6zia7m51vwTkJ 0DjlgqVZyTutkg5W+5jsjSHQ+w6D4y6yHpV4R2/BB8GyvXH/MXuONHWe3JCfdV2adPUp F0yC0X48TczNI8PuM4oRQIXDHQ8kazXt+7hTRSM15+pIEoV6uWtwxFoAOl0mb40OzqWH 718onULyRQKmjenT6/7vqgwJuT6XIe1uduy04+uuNf8Fw4OApN9FpNeOs1aCiEiqnXb1 mO/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687426478; x=1690018478; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0QAlf14eWjU3ei2UOf8F2+vrB4RaBxT5v9V0hoY2s24=; b=lnx4uRe4Y32SbMYKhasdY40+NoBEe0x8Y+/aKyMP9RL+QjhCEYPOYEkCKOIcTuYz6Q POuaH5Mchz8OzzXVAEhGSFUfXZrnqVnbc24nbC0bIQfuaKmlO5YP78HYFHjveuKwpV8/ dnMU5p1mitmAqZcrJIuZhz4wgbmqxLH/7lnET3Cv4hvjT4HrizrfznbWcEr0e/9wkTtE pyRrOKfqu4UtyvbIyfQ+jn/WsiEBZUk57C6Hld2s8x1xfinFrSajDJSkriVyrBVpXBvB 6XU/bPdqWIB2PvZL3b8KZ9oI10FL09441S3k1Azv8p0jCwKZcV8r4lOJSkoO9kr+VjQ5 0C2Q== X-Gm-Message-State: AC+VfDxsoToU3ZThOd0XC1BwHFTccHFvU8LMvHBXfQHm+iutPPW32/YH gw462xSTPwr2SPSAVJgMaUt6R3wdfAQ= X-Google-Smtp-Source: ACHHUZ6mjfrI6sylfPziHox5mHVA3eeFacq9CWplh5z0e+mEt/oPOP5ci8Tl6e6z1948TflEYbLvMA== X-Received: by 2002:a05:6a20:4308:b0:10b:f980:18d3 with SMTP id h8-20020a056a20430800b0010bf98018d3mr15303100pzk.1.1687426478544; Thu, 22 Jun 2023 02:34:38 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , David Gibson , Greg Kurz , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 7/7] tests/avocado: Add ppc64 pseries multiprocessor boot tests Date: Thu, 22 Jun 2023 19:33:57 +1000 Message-Id: <20230622093357.255649-8-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230622093357.255649-1-npiggin@gmail.com> References: <20230622093357.255649-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=npiggin@gmail.com; helo=mail-pg1-x536.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687426537421100001 Content-Type: text/plain; charset="utf-8" Add mult-thread/core/socket Linux boot tests that ensure the right topology comes up. Of particular note is a SMT test, which is a new capability for TCG. Signed-off-by: Nicholas Piggin Reviewed-by: C=C3=A9dric Le Goater --- tests/avocado/ppc_pseries.py | 60 +++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/tests/avocado/ppc_pseries.py b/tests/avocado/ppc_pseries.py index a152cf222e..ff42c770f2 100644 --- a/tests/avocado/ppc_pseries.py +++ b/tests/avocado/ppc_pseries.py @@ -14,12 +14,9 @@ class pseriesMachine(QemuSystemTest): timeout =3D 90 KERNEL_COMMON_COMMAND_LINE =3D 'printk.time=3D0 ' panic_message =3D 'Kernel panic - not syncing' + good_message =3D 'VFS: Cannot open root device' =20 - def test_ppc64_pseries(self): - """ - :avocado: tags=3Darch:ppc64 - :avocado: tags=3Dmachine:pseries - """ + def do_test_ppc64_linux_boot(self): kernel_url =3D ('https://archives.fedoraproject.org/pub/archive' '/fedora-secondary/releases/29/Everything/ppc64le/os' '/ppc/ppc64/vmlinuz') @@ -31,5 +28,58 @@ def test_ppc64_pseries(self): self.vm.add_args('-kernel', kernel_path, '-append', kernel_command_line) self.vm.launch() + + def test_ppc64_linux_boot(self): + """ + :avocado: tags=3Darch:ppc64 + :avocado: tags=3Dmachine:pseries + """ + + self.do_test_ppc64_linux_boot() console_pattern =3D 'VFS: Cannot open root device' wait_for_console_pattern(self, console_pattern, self.panic_message) + + def test_ppc64_linux_smp_boot(self): + """ + :avocado: tags=3Darch:ppc64 + :avocado: tags=3Dmachine:pseries + """ + + self.vm.add_args('-smp', '4') + self.do_test_ppc64_linux_boot() + console_pattern =3D 'smp: Brought up 1 node, 4 CPUs' + wait_for_console_pattern(self, console_pattern, self.panic_message) + wait_for_console_pattern(self, self.good_message, self.panic_messa= ge) + + def test_ppc64_linux_smt_boot(self): + """ + :avocado: tags=3Darch:ppc64 + :avocado: tags=3Dmachine:pseries + """ + + self.vm.add_args('-smp', '4,threads=3D4') + self.do_test_ppc64_linux_boot() + console_pattern =3D 'CPU maps initialized for 4 threads per core' + wait_for_console_pattern(self, console_pattern, self.panic_message) + console_pattern =3D 'smp: Brought up 1 node, 4 CPUs' + wait_for_console_pattern(self, console_pattern, self.panic_message) + wait_for_console_pattern(self, self.good_message, self.panic_messa= ge) + + def test_ppc64_linux_big_boot(self): + """ + :avocado: tags=3Darch:ppc64 + :avocado: tags=3Dmachine:pseries + """ + + self.vm.add_args('-smp', '16,threads=3D4,cores=3D2,sockets=3D2') + self.vm.add_args('-m', '512M', + '-object', 'memory-backend-ram,size=3D256M,id=3Dm= 0', + '-object', 'memory-backend-ram,size=3D256M,id=3Dm= 1') + self.vm.add_args('-numa', 'node,nodeid=3D0,memdev=3Dm0') + self.vm.add_args('-numa', 'node,nodeid=3D1,memdev=3Dm1') + self.do_test_ppc64_linux_boot() + console_pattern =3D 'CPU maps initialized for 4 threads per core' + wait_for_console_pattern(self, console_pattern, self.panic_message) + console_pattern =3D 'smp: Brought up 2 nodes, 16 CPUs' + wait_for_console_pattern(self, console_pattern, self.panic_message) + wait_for_console_pattern(self, self.good_message, self.panic_messa= ge) --=20 2.40.1