Message ID | 20230210133635.589647-7-dbarboza@ventanamicro.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | enable write_misa() and RISCV_FEATURE_* cleanups | expand |
On 2023/2/10 21:36, Daniel Henrique Barboza wrote: > Instead of silently ignoring the EPMP setting if there is no PMP > available, error out informing the user that EPMP depends on PMP > support: > > $ ./qemu-system-riscv64 -cpu rv64,pmp=false,x-epmp=true > qemu-system-riscv64: Invalid configuration: EPMP requires PMP support > > This will force users to pick saner options in the QEMU command line. > > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Weiwei Li <liweiwei@iscas.ac.cn> Regards, Weiwei Li > --- > target/riscv/cpu.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c > index 272cf1a8bf..1e67e72f90 100644 > --- a/target/riscv/cpu.c > +++ b/target/riscv/cpu.c > @@ -925,13 +925,18 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) > > if (cpu->cfg.pmp) { > riscv_set_feature(env, RISCV_FEATURE_PMP); > + } > + > + if (cpu->cfg.epmp) { > + riscv_set_feature(env, RISCV_FEATURE_EPMP); > > /* > * Enhanced PMP should only be available > * on harts with PMP support > */ > - if (cpu->cfg.epmp) { > - riscv_set_feature(env, RISCV_FEATURE_EPMP); > + if (!cpu->cfg.pmp) { > + error_setg(errp, "Invalid configuration: EPMP requires PMP support"); > + return; > } > } >
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 272cf1a8bf..1e67e72f90 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -925,13 +925,18 @@ static void riscv_cpu_realize(DeviceState *dev, Error **errp) if (cpu->cfg.pmp) { riscv_set_feature(env, RISCV_FEATURE_PMP); + } + + if (cpu->cfg.epmp) { + riscv_set_feature(env, RISCV_FEATURE_EPMP); /* * Enhanced PMP should only be available * on harts with PMP support */ - if (cpu->cfg.epmp) { - riscv_set_feature(env, RISCV_FEATURE_EPMP); + if (!cpu->cfg.pmp) { + error_setg(errp, "Invalid configuration: EPMP requires PMP support"); + return; } }
Instead of silently ignoring the EPMP setting if there is no PMP available, error out informing the user that EPMP depends on PMP support: $ ./qemu-system-riscv64 -cpu rv64,pmp=false,x-epmp=true qemu-system-riscv64: Invalid configuration: EPMP requires PMP support This will force users to pick saner options in the QEMU command line. Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> --- target/riscv/cpu.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)