[{"id":3675579,"web_url":"http://patchwork.ozlabs.org/comment/3675579/","msgid":"<CAKmqyKNK7xf50rMVcagfdeem+abRF8NG1JVRC0f9Vho8t8rPcA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-10T01:02:58","subject":"Re: [PATCH v5 1/6] target/riscv: Add basic definitions and CSRs for\n SMMPT","submitter":{"id":64571,"url":"http://patchwork.ozlabs.org/api/people/64571/","name":"Alistair Francis","email":"alistair23@gmail.com"},"content":"On Thu, Apr 9, 2026 at 12:07 AM LIU Zhiwei <zhiwei_liu@linux.alibaba.com> wrote:\n>\n> This patch lays the groundwork for the SMMPT (Supervisor Domains Access\n> Protection) extension by introducing its fundamental components.\n>\n> It adds:\n> - New CPU configuration flags, `ext_smmpt` and `ext_smsdid`, to enable\n>   the extension.\n> - Bit-field definitions for the `mmpt` CSR in `cpu_bits.h`.\n> - The `mmpt` and `msdcfg` CSR numbers and their read/write handlers in\n>   `csr.c`.\n> - New fields in `CPUArchState` to store the state of these new CSRs.\n> - A new translation failure reason `TRANSLATE_MPT_FAIL`.\n>\n> This provides the necessary infrastructure for the core MPT logic and\n> MMU integration that will follow.\n>\n> Co-authored-by: Huang Tao <eric.huang@linux.alibaba.com>\n> Co-authored-by: TANG Tiancheng <lyndra@linux.alibaba.com>\n> Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>\n> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>\n\nAcked-by: Alistair Francis <alistair.francis@wdc.com>\n\nAlistair\n\n> ---\n>  target/riscv/cpu.h                |  9 ++-\n>  target/riscv/cpu_bits.h           | 27 +++++++++\n>  target/riscv/cpu_cfg_fields.h.inc |  2 +\n>  target/riscv/csr.c                | 95 +++++++++++++++++++++++++++++++\n>  target/riscv/riscv_smmpt.h        | 21 +++++++\n>  5 files changed, 153 insertions(+), 1 deletion(-)\n>  create mode 100644 target/riscv/riscv_smmpt.h\n>\n> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h\n> index 35d1f6362c..f8265c2cc2 100644\n> --- a/target/riscv/cpu.h\n> +++ b/target/riscv/cpu.h\n> @@ -130,7 +130,8 @@ enum {\n>      TRANSLATE_SUCCESS,\n>      TRANSLATE_FAIL,\n>      TRANSLATE_PMP_FAIL,\n> -    TRANSLATE_G_STAGE_FAIL\n> +    TRANSLATE_G_STAGE_FAIL,\n> +    TRANSLATE_MPT_FAIL\n>  };\n>\n>  /* Extension context status */\n> @@ -181,6 +182,7 @@ extern RISCVCPUImpliedExtsRule *riscv_multi_ext_implied_rules[];\n>  #if !defined(CONFIG_USER_ONLY)\n>  #include \"pmp.h\"\n>  #include \"debug.h\"\n> +#include \"riscv_smmpt.h\"\n>  #endif\n>\n>  #define RV_VLEN_MAX 1024\n> @@ -481,6 +483,11 @@ struct CPUArchState {\n>      uint64_t hstateen[SMSTATEEN_MAX_COUNT];\n>      uint64_t sstateen[SMSTATEEN_MAX_COUNT];\n>      uint64_t henvcfg;\n> +    /* Smsdid */\n> +    uint32_t mptmode;\n> +    uint32_t sdid;\n> +    uint64_t mptppn;\n> +    uint32_t msdcfg;\n>  #endif\n>\n>      /* Fields from here on are preserved across CPU reset. */\n> diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h\n> index b62dd82fe7..c6a34863d1 100644\n> --- a/target/riscv/cpu_bits.h\n> +++ b/target/riscv/cpu_bits.h\n> @@ -1164,4 +1164,31 @@ typedef enum CTRType {\n>  #define MCONTEXT64                         0x0000000000001FFFULL\n>  #define MCONTEXT32_HCONTEXT                0x0000007F\n>  #define MCONTEXT64_HCONTEXT                0x0000000000003FFFULL\n> +\n> +/* Smsdid */\n> +#define CSR_MMPT        0xbc0\n> +#define CSR_MSDCFG      0xbd1\n> +\n> +#define MMPT_MODE_MASK_32   0xC0000000\n> +#define MMPT_SDID_MASK_32   0x3F000000\n> +#define MMPT_PPN_MASK_32    0x003FFFFF\n> +\n> +#define MMPT_MODE_SHIFT_32  30\n> +#define MMPT_SDID_SHIFT_32  24\n> +\n> +#define MMPT_MODE_MASK_64   0xF000000000000000ULL\n> +#define MMPT_SDID_MASK_64   0x0FC0000000000000ULL\n> +#define MMPT_PPN_MASK_64    0x000FFFFFFFFFFFFFULL\n> +\n> +#define MPTE_L3_VALID       0x0000100000000000ULL\n> +#define MPTE_L3_RESERVED    0xFFFFE00000000000ULL\n> +\n> +#define MPTE_L2_RESERVED_64    0xFFFF800000000000ULL\n> +#define MPTE_L2_RESERVED_32    0xFE000000\n> +\n> +#define MPTE_L1_RESERVED_64    0xFFFFFFFF00000000ULL\n> +#define MPTE_L1_RESERVED_32    0xFFFF0000\n> +\n> +#define MMPT_MODE_SHIFT_64  60\n> +#define MMPT_SDID_SHIFT_64  54\n>  #endif\n> diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_fields.h.inc\n> index cd1a5ec56b..80644948dd 100644\n> --- a/target/riscv/cpu_cfg_fields.h.inc\n> +++ b/target/riscv/cpu_cfg_fields.h.inc\n> @@ -63,6 +63,8 @@ BOOL_FIELD(ext_smpmpmt)\n>  BOOL_FIELD(ext_svrsw60t59b)\n>  BOOL_FIELD(ext_svvptc)\n>  BOOL_FIELD(ext_svukte)\n> +BOOL_FIELD(ext_smmpt)\n> +BOOL_FIELD(ext_smsdid)\n>  BOOL_FIELD(ext_zdinx)\n>  BOOL_FIELD(ext_zaamo)\n>  BOOL_FIELD(ext_zacas)\n> diff --git a/target/riscv/csr.c b/target/riscv/csr.c\n> index a75281539b..081d2fc2c3 100644\n> --- a/target/riscv/csr.c\n> +++ b/target/riscv/csr.c\n> @@ -793,6 +793,15 @@ static RISCVException rnmi(CPURISCVState *env, int csrno)\n>\n>      return RISCV_EXCP_ILLEGAL_INST;\n>  }\n> +\n> +static RISCVException smsdid(CPURISCVState *env, int csrno)\n> +{\n> +    if (riscv_cpu_cfg(env)->ext_smsdid) {\n> +        return RISCV_EXCP_NONE;\n> +    }\n> +\n> +    return RISCV_EXCP_ILLEGAL_INST;\n> +}\n>  #endif\n>\n>  static RISCVException seed(CPURISCVState *env, int csrno)\n> @@ -5446,6 +5455,89 @@ static RISCVException write_mnstatus(CPURISCVState *env, int csrno,\n>      return RISCV_EXCP_NONE;\n>  }\n>\n> +static RISCVException read_mmpt(CPURISCVState *env, int csrno,\n> +                                target_ulong *val)\n> +{\n> +    if (riscv_cpu_xlen(env) == 32) {\n> +        uint32_t value = 0;\n> +        value |= env->mptmode << MMPT_MODE_SHIFT_32;\n> +        value |= (env->sdid << MMPT_SDID_SHIFT_32) & MMPT_SDID_MASK_32;\n> +        value |= env->mptppn & MMPT_PPN_MASK_32;\n> +        *val = value;\n> +    } else if (riscv_cpu_xlen(env) == 64) {\n> +        uint64_t value_64 = 0;\n> +        uint32_t mode_value = env->mptmode;\n> +        /* mpt_mode_t convert to mmpt.mode value */\n> +        if (mode_value) {\n> +            mode_value -= SMMPT43 - SMMPT34;\n> +        }\n> +        value_64 |= (uint64_t)mode_value << MMPT_MODE_SHIFT_64;\n> +        value_64 |= ((uint64_t)env->sdid << MMPT_SDID_SHIFT_64)\n> +                    & MMPT_SDID_MASK_64;\n> +        value_64 |= (uint64_t)env->mptppn & MMPT_PPN_MASK_64;\n> +        *val = value_64;\n> +    } else {\n> +        return RISCV_EXCP_ILLEGAL_INST;\n> +    }\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n> +static RISCVException write_mmpt(CPURISCVState *env, int csrno,\n> +                                 target_ulong val, uintptr_t ra)\n> +{\n> +    uint32_t mode_value = 0;\n> +    if (!riscv_cpu_cfg(env)->ext_smmpt) {\n> +        goto set_remaining_fields_zero;\n> +    }\n> +\n> +    if (riscv_cpu_xlen(env) == 32) {\n> +        mode_value = (val & MMPT_MODE_MASK_32) >> MMPT_MODE_SHIFT_32;\n> +        /* If mode is bare, the remaining fields in mmpt must be zero */\n> +        if (mode_value == SMMPTBARE) {\n> +            goto set_remaining_fields_zero;\n> +        } else if (mode_value <= SMMPT34) {\n> +            /* Only write the legal value */\n> +            env->mptmode = mode_value;\n> +        }\n> +        env->sdid = (val & MMPT_SDID_MASK_32) >> MMPT_SDID_SHIFT_32;\n> +        env->mptppn = val & MMPT_PPN_MASK_32;\n> +    } else if (riscv_cpu_xlen(env) == 64) {\n> +        mode_value = (val & MMPT_MODE_MASK_64) >> MMPT_MODE_SHIFT_64;\n> +        if (mode_value == SMMPTBARE) {\n> +            goto set_remaining_fields_zero;\n> +        } else if (mode_value < SMMPTMAX) {\n> +            /* convert to mpt_mode_t */\n> +            mode_value += SMMPT43 - SMMPT34;\n> +            env->mptmode = mode_value;\n> +        }\n> +        env->sdid = (val & MMPT_SDID_MASK_64) >> MMPT_SDID_SHIFT_64;\n> +        env->mptppn = val & MMPT_PPN_MASK_64;\n> +    } else {\n> +        return RISCV_EXCP_ILLEGAL_INST;\n> +    }\n> +    return RISCV_EXCP_NONE;\n> +\n> +set_remaining_fields_zero:\n> +    env->sdid = 0;\n> +    env->mptmode = SMMPTBARE;\n> +    env->mptppn = 0;\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n> +static RISCVException read_msdcfg(CPURISCVState *env, int csrno,\n> +                                   target_ulong *val)\n> +{\n> +    *val = env->msdcfg;\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n> +static RISCVException write_msdcfg(CPURISCVState *env, int csrno,\n> +                                    target_ulong val, uintptr_t ra)\n> +{\n> +    env->msdcfg = val;\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n>  #endif\n>\n>  /* Crypto Extension */\n> @@ -6660,6 +6752,9 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = {\n>                               write_mhpmcounterh                         },\n>      [CSR_SCOUNTOVF]      = { \"scountovf\", sscofpmf,  read_scountovf,\n>                               .min_priv_ver = PRIV_VERSION_1_12_0 },\n> +    /* Supervisor Domain Identifier and Protection Registers */\n> +    [CSR_MMPT] =    { \"mmpt\",   smsdid,  read_mmpt,   write_mmpt   },\n> +    [CSR_MSDCFG] =  { \"msdcfg\", smsdid,  read_msdcfg, write_msdcfg },\n>\n>  #endif /* !CONFIG_USER_ONLY */\n>  };\n> diff --git a/target/riscv/riscv_smmpt.h b/target/riscv/riscv_smmpt.h\n> new file mode 100644\n> index 0000000000..74dcccf4be\n> --- /dev/null\n> +++ b/target/riscv/riscv_smmpt.h\n> @@ -0,0 +1,21 @@\n> +/*\n> + * QEMU RISC-V Smmpt (Memory Protection Table)\n> + *\n> + * Copyright (c) 2024 Alibaba Group. All rights reserved.\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#ifndef RISCV_SMMPT_H\n> +#define RISCV_SMMPT_H\n> +\n> +typedef enum {\n> +    SMMPTBARE = 0,\n> +    SMMPT34   = 1,\n> +    SMMPT43   = 2,\n> +    SMMPT52   = 3,\n> +    SMMPT64   = 4,\n> +    SMMPTMAX\n> +} mpt_mode_t;\n> +\n> +#endif\n> --\n> 2.43.0\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=Zii6M/Fc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsJV74b7bz1yGb\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 11:04:13 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wB0HT-0000F4-ET; Thu, 09 Apr 2026 21:03:31 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <alistair23@gmail.com>)\n id 1wB0HS-0000Ew-99\n for qemu-devel@nongnu.org; Thu, 09 Apr 2026 21:03:30 -0400","from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <alistair23@gmail.com>)\n id 1wB0HQ-000160-7v\n for qemu-devel@nongnu.org; Thu, 09 Apr 2026 21:03:30 -0400","by mail-ed1-x52d.google.com with SMTP id\n 4fb4d7f45d1cf-6708acbfb85so264109a12.3\n for <qemu-devel@nongnu.org>; Thu, 09 Apr 2026 18:03:27 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1775783006; cv=none;\n d=google.com; s=arc-20240605;\n b=DtMYBbpuLMRbFq5+s2X4daApWR1U2cSMyN5aX84kexpjtvJYa3DdBw8AO7XsmpY4Mo\n aDrbrI2zMbSXGzBTeAyr98iPtAzVYMZ3ngyjVuDcsgjwCx4TJOWtAIPXrJ9KGQEPslnT\n v7c1bg8l84bQURiYXzi1k++Tjxa4Wz9Rn3iJG+g/ieVUn5zvpa/zUPbJQYjW/7o/jVoq\n avCrDXf4hfg71U8X15nl5WTnNAW0JOSvQ7FDT5nqkJbpb7ObuPOBJ89XfX43C4WJd3Ye\n Nc6eAs29xQdQ4FwHh6NwpOIRsVOPr8ZnQLNfX3GaYQRk06MfxRCChnBEAosinlK45h0p\n KtbQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=Hg5y4Rd1dRcXwXlqxjWgyzDtjjjMqJHUInJRnIharY4=;\n fh=cWfiSq/oFyTN/DKvcJSgQUgJ4u5YSKmpf6by/WUOfgI=;\n b=X0yyM7LOzokxHaeDKVdokgs57jzerGP38mL6TSKSIX3C0pDVbPgl52JvLlk2cIQVax\n 2U2M6D6aToNk/UBqXsa6T42ggiGNZmk4Vl1b8Tb9psuQZmEvKpTclOAXni9vTcmTEUZx\n HgeHN9Hn6lmR4tkSRJ+BX6gyf9KIwBO0ONVJq4s/kbD42AFNzBYVIK+HgqREmRhChah2\n HicOdniCrHvdoD1RoTQ7lbwymvz+SWgeaY0hY8z/AtSjjoek3zQfZtNSWkVaP9g0Ow0J\n LP9x4uY66J8IfvV9VAJN5dXTQQWo82NnMiUYUEy3DQ0yMLRv3rADoMGW4vgZAvCCRsFp\n cvhg==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775783006; x=1776387806; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=Hg5y4Rd1dRcXwXlqxjWgyzDtjjjMqJHUInJRnIharY4=;\n b=Zii6M/FcgsRcmoCnFUPNzuTlMMUBldn+YEZ4i42o3E6yJUa1kxL+Nzafc50SG8qizJ\n PRthclxztAWsh9yHDwhY5i3MYUJq8iXlWGs6sxKWQVd41wmm1tcsphBxoINiZ/L++1O0\n TmDWNhbKLJUcs9SYtJ/FjsV8/fw5n/MsW8WFbbVe16OQKG8LUzmGke6m43biza2CZVQ7\n x1nQK0GAeTwjNBA9gk3nw7fAgciJEDv0X7yCwd8OEsEzepqQTpQ12y7agZN2kMZmYRWp\n nSiS1Va/CoNLYRRS+K/dwFD+t/ekaTwxwm6enni8k9Gw2xd7ziOLV50zB/3jaklU4Ydk\n sxpQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775783006; x=1776387806;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=Hg5y4Rd1dRcXwXlqxjWgyzDtjjjMqJHUInJRnIharY4=;\n b=E4qeK/M0ks4hrvwT0ZoPHc4HhGctugtX6wSFXERyR46am1usax7s0peSs9PeuwPrpg\n 41ACXBZLP9TGLQKaKZVxID6NRc2OTLEfDeJImK5f7RMx18fIHnTE2/N8HrYrb1l7r7qZ\n 3vqYVlFBCAQe10OOrnKuT9v09Ewf78dDYn6/k3oyjF/21gjBS8vKLKx5btVYHZvAJCIQ\n YvBM/8CnfowR37Zg23umjouL6c7WEWAQYl0Q37XwViP5k8f8edSmiNbHGayiBhysK6mo\n n6vBxtEjpQBraiXCN5cXGWn2J+wQzjs3DltIfWOdd3QSrDm7jSCfAavJIiuDiL2a34Mr\n T7fw==","X-Gm-Message-State":"AOJu0YyEidqrabTUcvGd1u/lQ3E2keB/+YKJNEe5DYml2xdfF6NoWgys\n HRs2APqIHqBrJsLBkA+dJdENQgT2vp+ZgO1cI/w8ez5FlKPpqLq9LONbyBhepqftc+n1eNmBvjQ\n RdErtAwkYFvTu64X54VFw96/HO2bcfJU=","X-Gm-Gg":"AeBDietfaBEeXD4XfBIxZzZZbB0ZoMR+O2m4k8z+Ivs5cDuB6+AdLDInDpceqkXBWTi\n 4LIdkmCe8hBOUimXVnO9hHhj2l/Zea9vmTR7sTQhu8z0MbGKqhH0pBLDRzzSWrO1kMdc4SLAofc\n kHV/RrkoycVe6HIlsmuYTQZ/kXbB8KeOynZ5lmlbgHwNagdDOPzW692HeKF5NxPZFvbvhVWtgF7\n F9wtKqhbcVi44E3ONGy/CIbWgV2g/lRObufcRqC53ZBR+Q+BKiMSEV+wLsq3By1sQDQGgojNBHO\n Xvy2r1N5A3K6SpVIuRKi1B3yzLZkgBD8+gB4cA==","X-Received":"by 2002:a17:906:eec7:b0:b98:528b:844a with SMTP id\n a640c23a62f3a-b9d72ac40e6mr68016266b.51.1775783005971; Thu, 09 Apr 2026\n 18:03:25 -0700 (PDT)","MIME-Version":"1.0","References":"<20260408140635.42546-1-zhiwei_liu@linux.alibaba.com>\n <20260408140635.42546-2-zhiwei_liu@linux.alibaba.com>","In-Reply-To":"<20260408140635.42546-2-zhiwei_liu@linux.alibaba.com>","From":"Alistair Francis <alistair23@gmail.com>","Date":"Fri, 10 Apr 2026 11:02:58 +1000","X-Gm-Features":"AQROBzDXDBGUyTo4BCdsqBSJGHskmPShpLN3I8WLwzfjjs4ObjTM2Us40bQjpkY","Message-ID":"\n <CAKmqyKNK7xf50rMVcagfdeem+abRF8NG1JVRC0f9Vho8t8rPcA@mail.gmail.com>","Subject":"Re: [PATCH v5 1/6] target/riscv: Add basic definitions and CSRs for\n SMMPT","To":"LIU Zhiwei <zhiwei_liu@linux.alibaba.com>","Cc":"qemu-devel@nongnu.org, qemu-riscv@nongnu.org, chao.liu.zevorn@gmail.com,\n palmer@dabbelt.com, daniel.barboza@oss.qualcomm.com, liwei1518@gmail.com,\n Huang Tao <eric.huang@linux.alibaba.com>,\n TANG Tiancheng <lyndra@linux.alibaba.com>,\n Daniel Henrique Barboza <dbarboza@ventanamicro.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2a00:1450:4864:20::52d;\n envelope-from=alistair23@gmail.com; helo=mail-ed1-x52d.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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3676305,"web_url":"http://patchwork.ozlabs.org/comment/3676305/","msgid":"<CANzO1D2jeypk-mitgdCsDPhZsE+sS1j24_W8Ne9rqiQ8ogBPdA@mail.gmail.com>","list_archive_url":null,"date":"2026-04-12T15:27:17","subject":"Re: [PATCH v5 1/6] target/riscv: Add basic definitions and CSRs for\n SMMPT","submitter":{"id":79604,"url":"http://patchwork.ozlabs.org/api/people/79604/","name":"Frank Chang","email":"frank.chang@sifive.com"},"content":"LIU Zhiwei <zhiwei_liu@linux.alibaba.com> 於 2026年4月9日週四 上午3:39寫道：\n>\n> This patch lays the groundwork for the SMMPT (Supervisor Domains Access\n> Protection) extension by introducing its fundamental components.\n>\n> It adds:\n> - New CPU configuration flags, `ext_smmpt` and `ext_smsdid`, to enable\n>   the extension.\n> - Bit-field definitions for the `mmpt` CSR in `cpu_bits.h`.\n> - The `mmpt` and `msdcfg` CSR numbers and their read/write handlers in\n>   `csr.c`.\n> - New fields in `CPUArchState` to store the state of these new CSRs.\n> - A new translation failure reason `TRANSLATE_MPT_FAIL`.\n>\n> This provides the necessary infrastructure for the core MPT logic and\n> MMU integration that will follow.\n>\n> Co-authored-by: Huang Tao <eric.huang@linux.alibaba.com>\n> Co-authored-by: TANG Tiancheng <lyndra@linux.alibaba.com>\n> Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>\n> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>\n> ---\n>  target/riscv/cpu.h                |  9 ++-\n>  target/riscv/cpu_bits.h           | 27 +++++++++\n>  target/riscv/cpu_cfg_fields.h.inc |  2 +\n>  target/riscv/csr.c                | 95 +++++++++++++++++++++++++++++++\n>  target/riscv/riscv_smmpt.h        | 21 +++++++\n>  5 files changed, 153 insertions(+), 1 deletion(-)\n>  create mode 100644 target/riscv/riscv_smmpt.h\n>\n> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h\n> index 35d1f6362c..f8265c2cc2 100644\n> --- a/target/riscv/cpu.h\n> +++ b/target/riscv/cpu.h\n> @@ -130,7 +130,8 @@ enum {\n>      TRANSLATE_SUCCESS,\n>      TRANSLATE_FAIL,\n>      TRANSLATE_PMP_FAIL,\n> -    TRANSLATE_G_STAGE_FAIL\n> +    TRANSLATE_G_STAGE_FAIL,\n> +    TRANSLATE_MPT_FAIL\n>  };\n>\n>  /* Extension context status */\n> @@ -181,6 +182,7 @@ extern RISCVCPUImpliedExtsRule *riscv_multi_ext_implied_rules[];\n>  #if !defined(CONFIG_USER_ONLY)\n>  #include \"pmp.h\"\n>  #include \"debug.h\"\n> +#include \"riscv_smmpt.h\"\n>  #endif\n>\n>  #define RV_VLEN_MAX 1024\n> @@ -481,6 +483,11 @@ struct CPUArchState {\n>      uint64_t hstateen[SMSTATEEN_MAX_COUNT];\n>      uint64_t sstateen[SMSTATEEN_MAX_COUNT];\n>      uint64_t henvcfg;\n> +    /* Smsdid */\n> +    uint32_t mptmode;\n> +    uint32_t sdid;\n> +    uint64_t mptppn;\n> +    uint32_t msdcfg;\n>  #endif\n>\n>      /* Fields from here on are preserved across CPU reset. */\n> diff --git a/target/riscv/cpu_bits.h b/target/riscv/cpu_bits.h\n> index b62dd82fe7..c6a34863d1 100644\n> --- a/target/riscv/cpu_bits.h\n> +++ b/target/riscv/cpu_bits.h\n> @@ -1164,4 +1164,31 @@ typedef enum CTRType {\n>  #define MCONTEXT64                         0x0000000000001FFFULL\n>  #define MCONTEXT32_HCONTEXT                0x0000007F\n>  #define MCONTEXT64_HCONTEXT                0x0000000000003FFFULL\n> +\n> +/* Smsdid */\n> +#define CSR_MMPT        0xbc0\n> +#define CSR_MSDCFG      0xbd1\n> +\n> +#define MMPT_MODE_MASK_32   0xC0000000\n> +#define MMPT_SDID_MASK_32   0x3F000000\n> +#define MMPT_PPN_MASK_32    0x003FFFFF\n> +\n> +#define MMPT_MODE_SHIFT_32  30\n> +#define MMPT_SDID_SHIFT_32  24\n> +\n> +#define MMPT_MODE_MASK_64   0xF000000000000000ULL\n> +#define MMPT_SDID_MASK_64   0x0FC0000000000000ULL\n> +#define MMPT_PPN_MASK_64    0x000FFFFFFFFFFFFFULL\n> +\n> +#define MPTE_L3_VALID       0x0000100000000000ULL\n> +#define MPTE_L3_RESERVED    0xFFFFE00000000000ULL\n> +\n> +#define MPTE_L2_RESERVED_64    0xFFFF800000000000ULL\n> +#define MPTE_L2_RESERVED_32    0xFE000000\n> +\n> +#define MPTE_L1_RESERVED_64    0xFFFFFFFF00000000ULL\n> +#define MPTE_L1_RESERVED_32    0xFFFF0000\n\nHi Zhiwei,\n\nMPTE_* fields are not used in the pachset.\n\nOtherwise,\nReviewed-by: Frank Chang <frank.chang@sifive.com>\n\n> +\n> +#define MMPT_MODE_SHIFT_64  60\n> +#define MMPT_SDID_SHIFT_64  54\n>  #endif\n> diff --git a/target/riscv/cpu_cfg_fields.h.inc b/target/riscv/cpu_cfg_fields.h.inc\n> index cd1a5ec56b..80644948dd 100644\n> --- a/target/riscv/cpu_cfg_fields.h.inc\n> +++ b/target/riscv/cpu_cfg_fields.h.inc\n> @@ -63,6 +63,8 @@ BOOL_FIELD(ext_smpmpmt)\n>  BOOL_FIELD(ext_svrsw60t59b)\n>  BOOL_FIELD(ext_svvptc)\n>  BOOL_FIELD(ext_svukte)\n> +BOOL_FIELD(ext_smmpt)\n> +BOOL_FIELD(ext_smsdid)\n>  BOOL_FIELD(ext_zdinx)\n>  BOOL_FIELD(ext_zaamo)\n>  BOOL_FIELD(ext_zacas)\n> diff --git a/target/riscv/csr.c b/target/riscv/csr.c\n> index a75281539b..081d2fc2c3 100644\n> --- a/target/riscv/csr.c\n> +++ b/target/riscv/csr.c\n> @@ -793,6 +793,15 @@ static RISCVException rnmi(CPURISCVState *env, int csrno)\n>\n>      return RISCV_EXCP_ILLEGAL_INST;\n>  }\n> +\n> +static RISCVException smsdid(CPURISCVState *env, int csrno)\n> +{\n> +    if (riscv_cpu_cfg(env)->ext_smsdid) {\n> +        return RISCV_EXCP_NONE;\n> +    }\n> +\n> +    return RISCV_EXCP_ILLEGAL_INST;\n> +}\n>  #endif\n>\n>  static RISCVException seed(CPURISCVState *env, int csrno)\n> @@ -5446,6 +5455,89 @@ static RISCVException write_mnstatus(CPURISCVState *env, int csrno,\n>      return RISCV_EXCP_NONE;\n>  }\n>\n> +static RISCVException read_mmpt(CPURISCVState *env, int csrno,\n> +                                target_ulong *val)\n> +{\n> +    if (riscv_cpu_xlen(env) == 32) {\n> +        uint32_t value = 0;\n> +        value |= env->mptmode << MMPT_MODE_SHIFT_32;\n> +        value |= (env->sdid << MMPT_SDID_SHIFT_32) & MMPT_SDID_MASK_32;\n> +        value |= env->mptppn & MMPT_PPN_MASK_32;\n> +        *val = value;\n> +    } else if (riscv_cpu_xlen(env) == 64) {\n> +        uint64_t value_64 = 0;\n> +        uint32_t mode_value = env->mptmode;\n> +        /* mpt_mode_t convert to mmpt.mode value */\n> +        if (mode_value) {\n> +            mode_value -= SMMPT43 - SMMPT34;\n> +        }\n> +        value_64 |= (uint64_t)mode_value << MMPT_MODE_SHIFT_64;\n> +        value_64 |= ((uint64_t)env->sdid << MMPT_SDID_SHIFT_64)\n> +                    & MMPT_SDID_MASK_64;\n> +        value_64 |= (uint64_t)env->mptppn & MMPT_PPN_MASK_64;\n> +        *val = value_64;\n> +    } else {\n> +        return RISCV_EXCP_ILLEGAL_INST;\n> +    }\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n> +static RISCVException write_mmpt(CPURISCVState *env, int csrno,\n> +                                 target_ulong val, uintptr_t ra)\n> +{\n> +    uint32_t mode_value = 0;\n> +    if (!riscv_cpu_cfg(env)->ext_smmpt) {\n> +        goto set_remaining_fields_zero;\n> +    }\n> +\n> +    if (riscv_cpu_xlen(env) == 32) {\n> +        mode_value = (val & MMPT_MODE_MASK_32) >> MMPT_MODE_SHIFT_32;\n> +        /* If mode is bare, the remaining fields in mmpt must be zero */\n> +        if (mode_value == SMMPTBARE) {\n> +            goto set_remaining_fields_zero;\n> +        } else if (mode_value <= SMMPT34) {\n> +            /* Only write the legal value */\n> +            env->mptmode = mode_value;\n> +        }\n> +        env->sdid = (val & MMPT_SDID_MASK_32) >> MMPT_SDID_SHIFT_32;\n> +        env->mptppn = val & MMPT_PPN_MASK_32;\n> +    } else if (riscv_cpu_xlen(env) == 64) {\n> +        mode_value = (val & MMPT_MODE_MASK_64) >> MMPT_MODE_SHIFT_64;\n> +        if (mode_value == SMMPTBARE) {\n> +            goto set_remaining_fields_zero;\n> +        } else if (mode_value < SMMPTMAX) {\n> +            /* convert to mpt_mode_t */\n> +            mode_value += SMMPT43 - SMMPT34;\n> +            env->mptmode = mode_value;\n> +        }\n> +        env->sdid = (val & MMPT_SDID_MASK_64) >> MMPT_SDID_SHIFT_64;\n> +        env->mptppn = val & MMPT_PPN_MASK_64;\n> +    } else {\n> +        return RISCV_EXCP_ILLEGAL_INST;\n> +    }\n> +    return RISCV_EXCP_NONE;\n> +\n> +set_remaining_fields_zero:\n> +    env->sdid = 0;\n> +    env->mptmode = SMMPTBARE;\n> +    env->mptppn = 0;\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n> +static RISCVException read_msdcfg(CPURISCVState *env, int csrno,\n> +                                   target_ulong *val)\n> +{\n> +    *val = env->msdcfg;\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n> +static RISCVException write_msdcfg(CPURISCVState *env, int csrno,\n> +                                    target_ulong val, uintptr_t ra)\n> +{\n> +    env->msdcfg = val;\n> +    return RISCV_EXCP_NONE;\n> +}\n> +\n>  #endif\n>\n>  /* Crypto Extension */\n> @@ -6660,6 +6752,9 @@ riscv_csr_operations csr_ops[CSR_TABLE_SIZE] = {\n>                               write_mhpmcounterh                         },\n>      [CSR_SCOUNTOVF]      = { \"scountovf\", sscofpmf,  read_scountovf,\n>                               .min_priv_ver = PRIV_VERSION_1_12_0 },\n> +    /* Supervisor Domain Identifier and Protection Registers */\n> +    [CSR_MMPT] =    { \"mmpt\",   smsdid,  read_mmpt,   write_mmpt   },\n> +    [CSR_MSDCFG] =  { \"msdcfg\", smsdid,  read_msdcfg, write_msdcfg },\n>\n>  #endif /* !CONFIG_USER_ONLY */\n>  };\n> diff --git a/target/riscv/riscv_smmpt.h b/target/riscv/riscv_smmpt.h\n> new file mode 100644\n> index 0000000000..74dcccf4be\n> --- /dev/null\n> +++ b/target/riscv/riscv_smmpt.h\n> @@ -0,0 +1,21 @@\n> +/*\n> + * QEMU RISC-V Smmpt (Memory Protection Table)\n> + *\n> + * Copyright (c) 2024 Alibaba Group. All rights reserved.\n> + *\n> + * SPDX-License-Identifier: GPL-2.0-or-later\n> + */\n> +\n> +#ifndef RISCV_SMMPT_H\n> +#define RISCV_SMMPT_H\n> +\n> +typedef enum {\n> +    SMMPTBARE = 0,\n> +    SMMPT34   = 1,\n> +    SMMPT43   = 2,\n> +    SMMPT52   = 3,\n> +    SMMPT64   = 4,\n> +    SMMPTMAX\n> +} mpt_mode_t;\n> +\n> +#endif\n> --\n> 2.43.0\n>\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256\n header.s=google header.b=K6ThKRBO;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4ftvZM2PJfz1yCx\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 01:28:25 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wBwis-0007FX-P8; Sun, 12 Apr 2026 11:27:42 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <frank.chang@sifive.com>)\n id 1wBwiq-0007Bf-0E\n for qemu-devel@nongnu.org; Sun, 12 Apr 2026 11:27:40 -0400","from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <frank.chang@sifive.com>)\n id 1wBwim-00042H-IP\n for qemu-devel@nongnu.org; Sun, 12 Apr 2026 11:27:39 -0400","by mail-pj1-x1032.google.com with SMTP id\n 98e67ed59e1d1-35e576110adso369315a91.0\n for <qemu-devel@nongnu.org>; Sun, 12 Apr 2026 08:27:34 -0700 (PDT)","from mail-dl1-f53.google.com (mail-dl1-f53.google.com.\n [74.125.82.53]) by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-35e412233ddsm9447046a91.5.2026.04.12.08.27.30\n for <qemu-devel@nongnu.org>\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Sun, 12 Apr 2026 08:27:30 -0700 (PDT)","by mail-dl1-f53.google.com with SMTP id\n a92af1059eb24-1274204434bso2021484c88.1\n for <qemu-devel@nongnu.org>; Sun, 12 Apr 2026 08:27:30 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=sifive.com; s=google; t=1776007653; x=1776612453; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=J85B8JJnFLVLhJwJ99rzcqkRKgCoffmqoytBEz9RMcw=;\n b=K6ThKRBOhXnT6M9d3AJgCGVpDNIwUrOErCwOEAdkoknaX96QcMQBKbXxrCtFicA0Bn\n tqVWr+V3Frq9oYg+2n1rQvvby8XJveDOo1Tc4xhTU+iP4iq8txdSWKI4eWg/s3oeD9uj\n XkY0Pok2xDIj1p3WU1PORC8s8YNHAOmRM+LN8NwCGRrDTjnoPOcMcgQ5ILs5nkYtoHEy\n P2PPPyIo3se03A1uXQksrNURU8n3Qzf308spfU9ueAvTRgiYVDVTjzSb3XQ4nBZ03gwv\n aW6FpnZ8tapDaRtTeExGx01G0rWDEcUTFwY+FRYOx+7K5wn9e1SsZtx/oVfcsKuhDIoP\n s9tA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776007653; x=1776612453;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=J85B8JJnFLVLhJwJ99rzcqkRKgCoffmqoytBEz9RMcw=;\n b=Jxz7Likesddwq9UnA01AMwksJ6hJZDcyTFspndScRnhaauOyMlz0vfs9Hvm+4vIapa\n JkDnIWRoZxCqrDOGbU93QqOfIyZkzqzCcPtRyXEMca8mfnNraEWPeI/5GVdfsJstz+6E\n 3Gycys9cRaW0YmCgO9k4mVL1RcoHYKvb/pVIUqxVGcBDwqA0ZS0hAPdouVahC3gn6Qch\n oHIsXEt946V9PJ0HjP1xXU8tg23p8gPi4E8qnIQjmrs7uxu2SNAzhnNlS4RJf30RjKq+\n /VG71/ukN/ZV2FBz+MDoDbmEgjeyJQhMbA8+IKB1wtv06jTwuXYypKTBV7hjX9ZDMGUU\n TYDw==","X-Gm-Message-State":"AOJu0Yy9Pt8P6hfqTiqVR5cNJga+UqYx/Tiz0nGj5y+rkgBJFga2qJxN\n YBVc5rkWU1ikkegOxyUn1TRzRxHh+7tVo4FQvomwlc4mPq68ypdos/PiHfdIFb68UlhAaJ836Ho\n 66IFdBtjUp5xRFk3iZsoqRGjOjwJh8+vMdUbVyGFqnYATf0ZNzjCZcJMDhIW0HzcP2SWiIM5vPP\n bBLpSs9yeeQLG8NOEvvVf545BFk4zJaMbi3d+HWB+fknPXsQ==","X-Gm-Gg":"AeBDievegnM/jDBEBrPddOWHASubwvu2JYfc33KAaWWrX3Jn9Gom8IckS73TeDXnUgU\n k8crOKwjSd22ZdadN+WLzaCsEOJz0j/s8JINX2sAdPi+nFii0EgtB3cNu3liKkclwsLnSpPUb0i\n u+SYYOtLTQtuhW5lEgdo/VeNQhCDbjcIaUAAeYVv1MiL3ndCCNc8OGGl3Vri0TPrYkV/Fftgryy\n aB9MSsFlmJpzq38zgl63b7oP4k4iCVgFd8uxL2g7Bom2lH23t5QC5re3LTb+U2nRFdyPG6lgt5H\n trGMe14G/6x8F7OXUQiNM29Xktm60ZLGLnGv1HgzAEmmRq3Pw/S43rRLAC8PmjtkLa5nZQ5gC7k\n 0pvvS3nfgBRR4qAlgP2KKknhqeuB44xuPZZJ+OCfjXIUXFtmk5x3hcbcxoP2GyIMOs/HrCad/QC\n 5CshsIlkBZj0EQvnAeYjaJEPEeNGXviamG9E5MOSD2/ooKD5VtpfyQDQ77I1jdkA==","X-Received":["by 2002:a17:90b:3cc5:b0:359:8957:7285 with SMTP id\n 98e67ed59e1d1-35e42fe6aefmr7767982a91.3.1776007652887;\n Sun, 12 Apr 2026 08:27:32 -0700 (PDT)","by 2002:a05:7022:384:b0:123:2f12:60b4 with SMTP id\n a92af1059eb24-12c28c315aemr6685962c88.20.1776007649718; Sun, 12 Apr 2026\n 08:27:29 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260408140635.42546-1-zhiwei_liu@linux.alibaba.com>\n <20260408140635.42546-2-zhiwei_liu@linux.alibaba.com>","In-Reply-To":"<20260408140635.42546-2-zhiwei_liu@linux.alibaba.com>","From":"Frank Chang <frank.chang@sifive.com>","Date":"Sun, 12 Apr 2026 23:27:17 +0800","X-Gmail-Original-Message-ID":"\n <CANzO1D2jeypk-mitgdCsDPhZsE+sS1j24_W8Ne9rqiQ8ogBPdA@mail.gmail.com>","X-Gm-Features":"AQROBzCLdfX5sF4YWvecIzgWY6voiruXYdF6VIMp_5WAa_-DDIN93l41zAbWGiw","Message-ID":"\n <CANzO1D2jeypk-mitgdCsDPhZsE+sS1j24_W8Ne9rqiQ8ogBPdA@mail.gmail.com>","Subject":"Re: [PATCH v5 1/6] target/riscv: Add basic definitions and CSRs for\n SMMPT","To":"LIU Zhiwei <zhiwei_liu@linux.alibaba.com>","Cc":"qemu-devel@nongnu.org, qemu-riscv@nongnu.org, chao.liu.zevorn@gmail.com,\n palmer@dabbelt.com, alistair23@gmail.com, daniel.barboza@oss.qualcomm.com,\n liwei1518@gmail.com, Huang Tao <eric.huang@linux.alibaba.com>,\n TANG Tiancheng <lyndra@linux.alibaba.com>,\n Daniel Henrique Barboza <dbarboza@ventanamicro.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2607:f8b0:4864:20::1032;\n envelope-from=frank.chang@sifive.com; helo=mail-pj1-x1032.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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3676445,"web_url":"http://patchwork.ozlabs.org/comment/3676445/","msgid":"<SE3PR04MB89226D76EFAF7EB799A7F108F3242@SE3PR04MB8922.apcprd04.prod.outlook.com>","list_archive_url":null,"date":"2026-04-13T04:29:57","subject":"Re: [PATCH v5 1/6] target/riscv: Add basic definitions and CSRs for\n SMMPT","submitter":{"id":91422,"url":"http://patchwork.ozlabs.org/api/people/91422/","name":"Nutty.Liu","email":"nutty.liu@hotmail.com"},"content":"On 4/8/2026 10:06 PM, LIU Zhiwei wrote:\n> This patch lays the groundwork for the SMMPT (Supervisor Domains Access\n> Protection) extension by introducing its fundamental components.\n>\n> It adds:\n> - New CPU configuration flags, `ext_smmpt` and `ext_smsdid`, to enable\n>    the extension.\n> - Bit-field definitions for the `mmpt` CSR in `cpu_bits.h`.\n> - The `mmpt` and `msdcfg` CSR numbers and their read/write handlers in\n>    `csr.c`.\n> - New fields in `CPUArchState` to store the state of these new CSRs.\n> - A new translation failure reason `TRANSLATE_MPT_FAIL`.\n>\n> This provides the necessary infrastructure for the core MPT logic and\n> MMU integration that will follow.\n>\n> Co-authored-by: Huang Tao <eric.huang@linux.alibaba.com>\n> Co-authored-by: TANG Tiancheng <lyndra@linux.alibaba.com>\n> Signed-off-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>\n> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>\n> ---\n>   target/riscv/cpu.h                |  9 ++-\n>   target/riscv/cpu_bits.h           | 27 +++++++++\n>   target/riscv/cpu_cfg_fields.h.inc |  2 +\n>   target/riscv/csr.c                | 95 +++++++++++++++++++++++++++++++\n>   target/riscv/riscv_smmpt.h        | 21 +++++++\n>   5 files changed, 153 insertions(+), 1 deletion(-)\n>   create mode 100644 target/riscv/riscv_smmpt.h\nReviewed-by: Nutty Liu <nutty.liu@hotmail.com>\n\nThanks,\nNutty","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=hotmail.com header.i=@hotmail.com header.a=rsa-sha256\n header.s=selector1 header.b=E7LTmXdf;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fvDwz0krHz1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 14:30:43 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wC8wJ-000115-0O; Mon, 13 Apr 2026 00:30:24 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <nutty.liu@hotmail.com>)\n id 1wC8wD-00010d-0W; Mon, 13 Apr 2026 00:30:17 -0400","from mail-japanwestazolkn190120001.outbound.protection.outlook.com\n ([2a01:111:f403:d406::1] helo=OS8PR02CU002.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <nutty.liu@hotmail.com>)\n id 1wC8w9-00006E-TZ; Mon, 13 Apr 2026 00:30:15 -0400","from SE3PR04MB8922.apcprd04.prod.outlook.com (2603:1096:101:2e9::7)\n by TY2PPF9075091F2.apcprd04.prod.outlook.com (2603:1096:408::ae1)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9745.42; Mon, 13 Apr\n 2026 04:30:06 +0000","from SE3PR04MB8922.apcprd04.prod.outlook.com\n ([fe80::3450:f139:5238:8f58]) by SE3PR04MB8922.apcprd04.prod.outlook.com\n ([fe80::3450:f139:5238:8f58%6]) with mapi id 15.20.9769.046; Mon, 13 Apr 2026\n 04:30:06 +0000"],"ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Z2z86tlyKB7/NvZsC7zfhLmEfWcwPg+8hS0HbJswzCRk37g9F0INyJ7nO5TmeHOWObKXZg0r7NhMd3h8EspS6w3cheiTnDF2yCkejgTmaQgtRpWlZKcdaLZWRvMva+HIm7sbcQN8cbnrxz3YHiHXNNKDzuQ7r1045q7B+hWLK+0bTjqQ+xWY2KhDMwfaJoVFxcdjqQvJHhidv8y1UZSeE1R1AnlULX1TvXWLKzhw8wmr0hTKz9JEOOjis4We+GtKzA7Rp3OUoveuIfuVNIahZEIPHX67dCq4GbAhJi0GBF18P+3g3wFrCjoovxC/NhbYl+gjS1ut1utpAEdAETKaAA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=igyJGKVx7a88FzH+UKKMmxdHHL1lTusyUJbbBgAMmpE=;\n b=TSJ28U98ZsdS6hy9HMiVfjMgVpRqJ3QOQaC3qcBGKo1vBpZc35+scTSKCEnhktvhfreKjaAjuI5ds8/qc+dDAFDnke0Dso4uOb4L+a8HhmebvLn1F+6AgpxbAt9BAS3/p+jpAgIExwjRR62pnWilQLre/z1dvFIRvW7+Sp7GnDqU/3rZDcpAmdXV5SDCMXK2cFjEn+GWChRByWTBE3GvTC374AvDtjEn8GUK2eOH7v4/B62vz+6K2d1UmteDDog7VRypzoqNLpACFsi5jX0fUUMUs2cCwaCsWr/gNRmCW4dexp/KSktdQ6u8af07yH8tcfYWXCH+YlXhtnAH7e6MlA==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=none; dmarc=none;\n dkim=none; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=igyJGKVx7a88FzH+UKKMmxdHHL1lTusyUJbbBgAMmpE=;\n b=E7LTmXdfYR1o6vNpesfn/qDRszcgp6jTCXXLBCgE8SZ9sp6S7Y7xVmEDRR+4J8ptVZGzqoXb+iEZhpco+HZ/WOZ2xPI+L+hKPTGWGqtUeltApcpKbe4O1JPyvrvgN4F4WyFjDwc5RPmmOc8o96u3QXIIOyMi9/Gdu/dLiHqrJhD10g3Tekeja9DKMckU0UCbOXrfZU5YhtDTxUK88+qFwqzDb4xm+kI17FCglVyF4OQvwdzzvTrUcVJ1ax5BiuvC5b7Ti4BCidgVtg6iCCf1uahkdBU9jvLNxN+7T29uQsk0E+wwFeN2ORDlV5OQhYi6cBgzDn+p82UlovvR7np/oQ==","Message-ID":"\n <SE3PR04MB89226D76EFAF7EB799A7F108F3242@SE3PR04MB8922.apcprd04.prod.outlook.com>","Date":"Mon, 13 Apr 2026 12:29:57 +0800","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v5 1/6] target/riscv: Add basic definitions and CSRs for\n SMMPT","To":"LIU Zhiwei <zhiwei_liu@linux.alibaba.com>, qemu-devel@nongnu.org","Cc":"qemu-riscv@nongnu.org, chao.liu.zevorn@gmail.com, palmer@dabbelt.com,\n alistair23@gmail.com, daniel.barboza@oss.qualcomm.com, liwei1518@gmail.com,\n Huang Tao <eric.huang@linux.alibaba.com>,\n TANG Tiancheng <lyndra@linux.alibaba.com>,\n Daniel Henrique Barboza <dbarboza@ventanamicro.com>","References":"<20260408140635.42546-1-zhiwei_liu@linux.alibaba.com>\n <20260408140635.42546-2-zhiwei_liu@linux.alibaba.com>","Content-Language":"en-US","From":"\"Nutty.Liu\" <nutty.liu@hotmail.com>","In-Reply-To":"<20260408140635.42546-2-zhiwei_liu@linux.alibaba.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"7bit","X-ClientProxiedBy":"TYCP286CA0361.JPNP286.PROD.OUTLOOK.COM\n (2603:1096:405:79::17) To SE3PR04MB8922.apcprd04.prod.outlook.com\n (2603:1096:101:2e9::7)","X-Microsoft-Original-Message-ID":"\n <912317eb-6445-416b-98d4-41566ef17d76@hotmail.com>","MIME-Version":"1.0","X-MS-Exchange-MessageSentRepresentingType":"1","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"SE3PR04MB8922:EE_|TY2PPF9075091F2:EE_","X-MS-Office365-Filtering-Correlation-Id":"6d1622c4-a429-4c21-5dea-08de9915562a","X-Microsoft-Antispam":"BCL:0;\n ARA:14566002|51005399006|8060799015|19110799012|23021999003|15080799012|461199028|6090799003|5072599009|40105399003|3412199025|440099028|26121999003;","X-Microsoft-Antispam-Message-Info":"=?utf-8?q?+A559vqvB5cAuRN0ANQ2J4uM4jCqgpS?=\n\t=?utf-8?q?pTcX2SX0lL+Mctt2UAffclz1kBgWus30ryansl43TcE5gskxCgGzdpGepwiiDDdrK?=\n\t=?utf-8?q?WIqbZISA+hQ7uP4tasyr8jiMxQN0uCupj7doOUV60FDm0M9MU/8vMDAfwbCEgJZHX?=\n\t=?utf-8?q?jjzu5vQQXcA8yHnddPdGVPVyLrZ1MgO8JDIOwXxZVoUDNJ4F7BrAATipWMZzNX670?=\n\t=?utf-8?q?Kn5pVeZM+jNu6ezzNH0bpuVgnaSpaVtHUA6zTfWRQt180h6FZ90YZNkemarg8LlO6?=\n\t=?utf-8?q?J+/U4lj2gw7qFRsRZH2YDxoJwov9iHmwMpMjMon53v1+vWXUxEyCLQN3tAzj6tQ7J?=\n\t=?utf-8?q?K+Bz9LSwCOa38Bg2vw70D7HXC2xtRVdCrIM6MNzSeQGFK/oyWSgUwpMdoLFQYl2/V?=\n\t=?utf-8?q?MmoI7x3rT3wFjzu1kviSgkRWbBUj7toYFdl/B0ZNP2h9cie5x1Jo9unpiGoesYsKU?=\n\t=?utf-8?q?Vi4Dt+htgtWGRpAJRoMQfsFKM3lPGo7dkhoj6NHLuRgiERcYdBCbzsqXmjDwq9MC7?=\n\t=?utf-8?q?qRwN5Em04CFyqQI+wqBpy7Qxy5furgpcTsoSDQhPu9gh6W056wpXnYBqFEBQOZMfC?=\n\t=?utf-8?q?/zpvl2INN7KRhXp9r5o6cFSBj1mS4LDR0Ljx6i8LUq4Oah43cRVhJOTBOSQnZ9pzv?=\n\t=?utf-8?q?2PkFnJ634LFrKIGfbg3Qb7dFZAtoVoFx70us3MNGVVt2grHUYQufC16M6eKQX/If/?=\n\t=?utf-8?q?Mlzum1s3nWhKpA3vd8SSUrMbxJmvYbgB8dGA2AeAH+2P+k7x2JMuvc4WZtakOOUR/?=\n\t=?utf-8?q?y1bCbbJfhY6D8iKWvJDO/2HBz5SEcmvQ8jT441z3c+tHJWu52KM8fnfA/xaSWuvH4?=\n\t=?utf-8?q?ElZCafpERc97CI6su4mshXVMOdqwGu6i4BoU0WTrN9I7tkOVVmXZ6pIPY+phexvMT?=\n\t=?utf-8?q?PU53EQkM2piV+MHKQ0VSnGl5aec7Wf7lfbcoASSHw=3D=3D?=","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"=?utf-8?q?6XxR8cnTrhqlu6jY6Pwd40Wq2bnR?=\n\t=?utf-8?q?7ELMha+P838y77RYk8UWga9j0KB0PtKJlydcHEevhsAaoBI0lLUPMY+JP5hC9GwBd?=\n\t=?utf-8?q?j8i+tBAqu3mh0IR7gWaO4eUSJ5NcQqjLx/YbhyEZ9XNT19MEfAbjlfdzk3l2PYtXO?=\n\t=?utf-8?q?4HLtFcyG0KgPL8oHyFPS9oGVMckG3AMn9LFasYpyVKk4PpAFCbFl4gB2DBoKofS0t?=\n\t=?utf-8?q?fB4VoLDq012e07eDnY3+T3hlNJpza9UAqIJAKzRiujTSIrqd35IPiIbZU/zGuV1cR?=\n\t=?utf-8?q?caCh0MBqLVn5CaQAR4Ghrj4M5M8+B4Lbv7JuawB/Rby1przDpG6JYRfSraGtmjscY?=\n\t=?utf-8?q?cQ+wSL9xCMJC4gyh8q0A4ICx46q8ObHWYyS8dj6owvVrBUWQTiUbAoG7LvTDMUunv?=\n\t=?utf-8?q?YFMHrHNnlHQyDXzd2nGi9xCqwrQVWPwHXffUQXriDNyR7SrlgjrNLKe01lrSo6e9L?=\n\t=?utf-8?q?voy1QSK2Dm3AG8xfvVKlu8vH4M9El6nz9pib7lkzKADvmiNf3K4yAJUUK/isaqC6b?=\n\t=?utf-8?q?wfG0YXjMRT5LR9L2WaEL5aEUo1wcZFxrk4a/u8tLTLNAhNQwJ3C4NPcUA1ffsUYzl?=\n\t=?utf-8?q?n7UOqkrwS3bMgPOW2MKnfLYjCO5KuryLR1U6oEgpm7QMN8W/8o8LumQ8OFHTca6Fv?=\n\t=?utf-8?q?CvK0440EiAifzN8T0zfoqNy8wipSwsyHzYbUaY55vf2QO5efiHGsEPbr4K5Nmlpm8?=\n\t=?utf-8?q?5Amwg1z/IM86tfbk4NKfzh6D+X+pf7RsiBfuwVyU8Dc+uf0SIwMSD7CzOfPaaLYXu?=\n\t=?utf-8?q?Q1iUH9graP+7AjudgPsbL4FXdcUqZwJq/AYdIDZWspJeL6BRAYyp91Z233QuOlSjh?=\n\t=?utf-8?q?qtIUI9d7b8E4n3/eUjJEcRqO97cuvBy1MG/t4VtInw1mZ2jEARbPnxXJM4S9ZxLSc?=\n\t=?utf-8?q?8cwRkJFG8lyjvqqNbjgOaJR0zrR/Ipn7JisE/SO2UExUX3iBvJvUW6BNkTauGPSOh?=\n\t=?utf-8?q?3D9Ov2DwELaums7sV+RXoL9y4eWQiN18365bF46NtwS7kBYUROXt5OU76pgfKaCPx?=\n\t=?utf-8?q?0x4qF83UnOSd+BxJuJ1y9aTel0FBbQAjru9uW+bl94/ggtyIbiVhXcg/060D5uUt/?=\n\t=?utf-8?q?zh6kH7SKN+pAWSqEoG5dMXcDiOn0MAf0GLZwwghQhJYiCBMSDVPyMNPZw62PVBTri?=\n\t=?utf-8?q?337AbNmwBRJKRmI8dvowftqKV7MTvhoFTKB0CEE4whQPPCPfPhl1RXMcc2H5HBYwo?=\n\t=?utf-8?q?4F+P2o7UdmnTAoDN4dvsevJpwkcMdEcKF1z/inreOVVhUMuYJEDdih2KLreuT8YnR?=\n\t=?utf-8?q?kw/faKVkK4ctYRQYvpwvn65Zsx5gYfF0VuDEMvfp2GxP2cxdGnLf/DfmFWHgC5JCs?=\n\t=?utf-8?q?5XMHLHaJtg8Ce4q?=","X-OriginatorOrg":"sct-15-20-9412-4-msonline-outlook-c3e7a.templateTenant","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 6d1622c4-a429-4c21-5dea-08de9915562a","X-MS-Exchange-CrossTenant-AuthSource":"SE3PR04MB8922.apcprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"13 Apr 2026 04:30:05.8665 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa","X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg":"\n 00000000-0000-0000-0000-000000000000","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"TY2PPF9075091F2","Received-SPF":"pass client-ip=2a01:111:f403:d406::1;\n envelope-from=nutty.liu@hotmail.com;\n helo=OS8PR02CU002.outbound.protection.outlook.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,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,\n 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":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]