]> git.proxmox.com Git - mirror_qemu.git/commitdiff
target/riscv: Smepmp: Skip applying default rules when address matches
authorHimanshu Chauhan <hchauhan@ventanamicro.com>
Thu, 9 Feb 2023 05:52:06 +0000 (11:22 +0530)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 23 Feb 2023 22:21:32 +0000 (14:21 -0800)
When MSECCFG.MML is set, after checking the address range in PMP if the
asked permissions are not same as programmed in PMP, the default
permissions are applied. This should only be the case when there
is no matching address is found.

This patch skips applying default rules when matching address range
is found. It returns the index of the match PMP entry.

Fixes: 824cac681c3 (target/riscv: Fix PMP propagation for tlb)
Signed-off-by: Himanshu Chauhan <hchauhan@ventanamicro.com>
Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20230209055206.229392-1-hchauhan@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
target/riscv/pmp.c

index d1126a606633ae27ac49f63d03e1ab5810b15408..4bc41135313e955080fadae2065f4a5409a00a49 100644 (file)
@@ -441,9 +441,12 @@ int pmp_hart_has_privs(CPURISCVState *env, target_ulong addr,
                 }
             }
 
-            if ((privs & *allowed_privs) == privs) {
-                ret = i;
-            }
+            /*
+             * If matching address range was found, the protection bits
+             * defined with PMP must be used. We shouldn't fallback on
+             * finding default privileges.
+             */
+            ret = i;
             break;
         }
     }