[PATCH v2 3/8] lib: sbi_domain: print unsupported SmePMP permissions
Anup Patel
anup at brainfault.org
Sun Nov 2 02:40:45 PST 2025
On Wed, Oct 8, 2025 at 2:14 PM Yu-Chien Peter Lin <peter.lin at sifive.com> wrote:
>
> The reg->flag is encoded with 6 bits to specify RWX
> permissions for M-mode and S-/U-mode. However, only
> 16 of the possible encodings are valid on SmePMP.
>
> Add a warning message when an unsupported permission
> encoding is detected.
>
> Signed-off-by: Yu-Chien Peter Lin <peter.lin at sifive.com>
> ---
> lib/sbi/sbi_domain.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/lib/sbi/sbi_domain.c b/lib/sbi/sbi_domain.c
> index 89250d4c..798e68b3 100644
> --- a/lib/sbi/sbi_domain.c
> +++ b/lib/sbi/sbi_domain.c
> @@ -125,6 +125,7 @@ void sbi_domain_memregion_init(unsigned long addr,
> unsigned int sbi_domain_get_smepmp_flags(struct sbi_domain_memregion *reg)
> {
> unsigned int pmp_flags = 0;
> + unsigned long rstart, rend;
>
> if ((reg->flags & SBI_DOMAIN_MEMREGION_ACCESS_MASK) == 0) {
> /*
> @@ -185,6 +186,13 @@ unsigned int sbi_domain_get_smepmp_flags(struct sbi_domain_memregion *reg)
> pmp_flags |= PMP_W;
> if (reg->flags & SBI_DOMAIN_MEMREGION_SU_EXECUTABLE)
> pmp_flags |= PMP_X;
> + } else {
> + rstart = reg->base;
> + rend = (reg->order < __riscv_xlen) ?
> + rstart + ((1UL << reg->order) - 1) : -1UL;
> + sbi_printf("%s: Unsupported Smepmp permissions "
> + "on region 0x%" PRILX "-0x%" PRILX "\n",
> + __func__, rstart, rend);
It's okay to us upto 100 characters per-line otherwise
it looks good to me. I will take care of this at the time
of merging this patch.
Reviewed-by: Anup Patel <anup at brainfault.org>
Thanks,
Anup
More information about the opensbi
mailing list