On 2023/2/17 5:55, 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>
> Reviewed-by: Bin Meng <bmeng@tinylab.org>
> Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
> ---
> 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 e34a5e3f11..4585ca74dc 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;
Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
Zhiwei
> }
> }
>