From nobody Mon Apr 6 18:30:29 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=1773863200; cv=none; d=zohomail.com; s=zohoarc; b=cBN6WR/dtNJWOyk2Z/ydaiPR4lGXCcJeWX1F27D+oF0lyLNRcjRXUGpt6oNDfTduYp96zm0AFBABQ2OyuVFaT6MQcBItLAAPi4JozdhmvK9weZeWAAZ0L4tnUDlaS23aGNFeabJ5/y3GXrFArEGUAEgEawua5NggtsFiPzVDcIU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1773863200; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XxLT5THnGV2VliLFwB1i1UVfc5yvR4zYfU/4uELoqVA=; b=kMUZHUcBvyCXs0/gIQRfW3C71eoZ5O3lA22DVqvvZJgoq5M97T5+RnZQjvNs5BtVqFF+PfNken08qOfTaFACy6UDq8PW3jjrqXqgDYqzAY9KJFQmaKskneLefrOAtU11WmQzs374K4GLVOGJ5Q6IKY29pfB33JYAA50DkxCsReM= 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 1773863200664186.66897186958363; Wed, 18 Mar 2026 12:46:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w2woa-0005wG-4R; Wed, 18 Mar 2026 15:44:24 -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 1w2w1e-0002dm-JA for qemu-devel@nongnu.org; Wed, 18 Mar 2026 14:53:50 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1w2w1d-0006cx-1p for qemu-devel@nongnu.org; Wed, 18 Mar 2026 14:53:50 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4853c1ca73aso1183725e9.2 for ; Wed, 18 Mar 2026 11:53:48 -0700 (PDT) Received: from luis-IdeaPad-Flex-5-14ALC05.. ([148.69.202.102]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-486f8b0bc58sm16135905e9.3.2026.03.18.11.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 11:53:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773860027; x=1774464827; darn=nongnu.org; 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=XxLT5THnGV2VliLFwB1i1UVfc5yvR4zYfU/4uELoqVA=; b=K3e7HEF7mDQy5evcNwMjrv6+8V/ebKPryk+D5yaqSv+LoIik/xFwcUxAn5iEdGb6z/ onv9Soq8zf3szjif1fXy+Ecea0roVkHAkYW8yRPKOIqARmPApr6FUyZvDb9Jpdp91VoF HGvGhw/tfvuxRFtIOHnqbWWfSHcgjHXvQ0vilfj77jOxlOtV6U+vxajcrxE/7GzEvepu bFaMWq5KfPI9GeW5QlHw33L7YGuI0sAx/CQFYv+Lv1TqrQ6ABr3uUkLeFpEhc9/k5g3+ tDb2pLW8RtdkUfEhL9HbCjpjccJAtldU933GeerpzkR0Xht+1D88HnyLqBV5bux+wAKM gjXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773860027; x=1774464827; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=XxLT5THnGV2VliLFwB1i1UVfc5yvR4zYfU/4uELoqVA=; b=NXu2wWcWgMtlEEDqX1w95NFBGrD5WK4m6x91LBCOA8xDnqA0FayxuLS7DRYb+Ed39+ fNy73fdKpM5C76BVNLsvSo1ehtrDtjroPXi/4vNOm3SMdbZ8fbQ8RiSrRlI6eLNmFjFw tABmEbX3yh6nOOpBEXtpjMAmkMLc/97n6/g4MXADXHsS74GMZrxTdVctvbkdW5Upw+kH e/OQd+B9nOlD6Q+DlX5BeVsBPLVgf4J7p6lxL814wmeJijcMVmkfJ0qtTSobG9TQ3bsj hoYgf1x0/7R95SaDg4G1MenHqC0hlf6KSlN4PlaNmNk+9U+IX0t4cnXcmCqLA6f8oEQh 0N7w== X-Gm-Message-State: AOJu0Yz5IJ3iJTOotYpNy8yIdkD/A2k0Hc981Q8tm4dAN4h2yZao2Rcs cB8no1E3l6mrhYGWHsqQ1GKpx7v8C/Bdlhw5+/I5chG3xhc3gh4pzVw1163gf5CGVdo= X-Gm-Gg: ATEYQzwkLXxvL5WmNUn8T9KtfL1r4FqQXE2nR9HKmAFLJQBr1zubKf2b+fQO29z+RUT O6V64FCEgAfsaP/mbV9sqs7d8UuJ3uRJ7xgAWdQDuoc5Nr3HIqlKPkAlX/FXvfNlbm2caOPiIh3 Q4hnqYhzhz6trQOjjzHcxQVUblTBiLSq7Fhq9FN9Pq/o34kcFcrdtmnpLyO4LliwfnspeLqEkD4 C7az2yCIWKPmHdwd/U1ZLBEDI/S2DnNxnV3bQl3kr3A4Mwpo9QgK+9KaIbheNw5NMNZiG3lL6bU 4DJpK6MM0xULB9M3GPNRwWrbOvnuh728vjrHFfv8ZJvPktrRQ7wI+1p7p7tNdgGEPsW4B1vjUdh TP4FRm4kqHcGs4SBL/5SR0TN+0W9wKjPbeUxXeL71Ezw32rIFieXhawaynu/TeTNt/oAWJNDWdx x21Md+lnLs3i3uYqsF6Orhr4zvP/MwDDmtF+uqYjETfvGcSC8GolH5YNS0I2nbWMFF401x0buKz M38raYOLQ1jtrHenWyPH/s9qtP9Y3OdHARD5go= X-Received: by 2002:a05:600c:4fc6:b0:480:690e:f14a with SMTP id 5b1f17b1804b1-486f4460743mr71345165e9.14.1773860026956; Wed, 18 Mar 2026 11:53:46 -0700 (PDT) From: luisccc To: qemu-devel@nongnu.org Cc: luisccc , Palmer Dabbelt , Alistair Francis , Weiwei Li , Daniel Henrique Barboza , Liu Zhiwei , qemu-riscv@nongnu.org (open list:RISC-V TCG CPUs) Subject: [RFC PATCH 6/6] target/riscv: Add CPU properties for SPMP and sspmpen Date: Wed, 18 Mar 2026 18:52:36 +0000 Message-ID: <20260318185238.99143-7-luisccunha8@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260318185238.99143-1-luisccunha8@gmail.com> References: <20260318185238.99143-1-luisccunha8@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=2a00:1450:4864:20::32e; envelope-from=luisccunha8@gmail.com; helo=mail-wm1-x32e.google.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 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_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Wed, 18 Mar 2026 15:44:23 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development 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: 1773863202764154100 Content-Type: text/plain; charset="utf-8" Add CPU properties to control the SPMP and sspmpen extensions from the QEMU= command line. SPMP can be enabled with: -cpu ,spmp=3Dtrue Note: This automatically enables smpmpdeleg, sscsrind, and smcsrind. The sspmpen extension can be enabled with: -cpu ,sspmpen=3Dtrue Note: This automatically enables SPMP and its depedencies. Signed-off-by: Luis Cunha --- target/riscv/cpu.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 5383e07dbd..29bfce6581 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -1656,6 +1656,84 @@ static const PropertyInfo prop_pmp_granularity =3D { .set =3D prop_pmp_granularity_set, }; =20 +static void prop_spmp_set(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + RISCVCPU *cpu =3D RISCV_CPU(obj); + bool value; + + visit_type_bool(v, name, &value, errp); + + if (cpu->cfg.spmp !=3D value && riscv_cpu_is_vendor(obj)) { + cpu_set_prop_err(cpu, name, errp); + return; + } + + cpu_option_add_user_setting(name, value); + cpu->cfg.spmp =3D value; + cpu->cfg.ext_smpmpdeleg =3D value; + + /* Enable necessary extensions */ + if (value) { + cpu->cfg.ext_sscsrind =3D true; + cpu->cfg.ext_smcsrind =3D true; + } +} + +static void prop_spmp_get(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + bool value =3D RISCV_CPU(obj)->cfg.spmp; + + visit_type_bool(v, name, &value, errp); +} + +static const PropertyInfo prop_spmp =3D { + .type =3D "bool", + .description =3D "spmp", + .get =3D prop_spmp_get, + .set =3D prop_spmp_set, +}; + +static void prop_sspmpen_set(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + RISCVCPU *cpu =3D RISCV_CPU(obj); + bool value; + + visit_type_bool(v, name, &value, errp); + + if (cpu->cfg.spmp !=3D value && riscv_cpu_is_vendor(obj)) { + cpu_set_prop_err(cpu, name, errp); + return; + } + + cpu_option_add_user_setting(name, value); + cpu->cfg.ext_sspmpen =3D value; + + /* Enable necessary extensions */ + if (value) { + cpu->cfg.spmp =3D true; + cpu->cfg.ext_sscsrind =3D true; + cpu->cfg.ext_smcsrind =3D true; + } +} + +static void prop_sspmpen_get(Object *obj, Visitor *v, const char *name, + void *opaque, Error **errp) +{ + bool value =3D RISCV_CPU(obj)->cfg.ext_sspmpen; + + visit_type_bool(v, name, &value, errp); +} + +static const PropertyInfo prop_ext_sspmpen =3D { + .type =3D "bool", + .description =3D "ext_sspmpen", + .get =3D prop_sspmpen_get, + .set =3D prop_sspmpen_set, +}; + static int priv_spec_from_str(const char *priv_spec_str) { int priv_version =3D -1; @@ -2657,6 +2735,8 @@ static const Property riscv_cpu_properties[] =3D { {.name =3D "pmp", .info =3D &prop_pmp}, {.name =3D "num-pmp-regions", .info =3D &prop_num_pmp_regions}, {.name =3D "pmp-granularity", .info =3D &prop_pmp_granularity}, + {.name =3D "spmp", .info =3D &prop_spmp}, + {.name =3D "sspmpen", .info =3D &prop_ext_sspmpen}, =20 {.name =3D "priv_spec", .info =3D &prop_priv_spec}, {.name =3D "vext_spec", .info =3D &prop_vext_spec}, --=20 2.43.0