mirror of
https://gitlab.com/qemu-project/opensbi.git
synced 2025-11-10 05:37:55 +08:00
lib: sbi_domain: print unsupported SmePMP permissions
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@sifive.com> Reviewed-by: Anup Patel <anup@brainfault.org> Link: https://lore.kernel.org/r/20251008084444.3525615-4-peter.lin@sifive.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
committed by
Anup Patel
parent
667eed2266
commit
90c3b94094
@ -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,11 @@ 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);
|
||||
}
|
||||
|
||||
return pmp_flags;
|
||||
|
||||
Reference in New Issue
Block a user