[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-riscv] [PATCHv4 1/6] RISC-V: Only Check PMP if MMU translation suc
From: |
Hesham Almatary |
Subject: |
[Qemu-riscv] [PATCHv4 1/6] RISC-V: Only Check PMP if MMU translation succeeds |
Date: |
Thu, 27 Jun 2019 13:18:23 +0100 |
The current implementation unnecessarily checks for PMP even if MMU translation
failed. This may trigger a wrong PMP access exception instead of
a page exception.
For example, the very first instruction fetched after the first satp write in
S-Mode will trigger a PMP access fault instead of an instruction fetch page
fault.
This patch prioritises MMU exceptions over PMP exceptions and only checks for
PMP if MMU translation succeeds. This patch is required for future commits
that properly report PMP exception violations if PTW succeeds.
Signed-off-by: Hesham Almatary <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
---
target/riscv/cpu_helper.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index 41d6db41c3..40fb47e794 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -401,6 +401,7 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int
size,
" prot %d\n", __func__, address, ret, pa, prot);
if (riscv_feature(env, RISCV_FEATURE_PMP) &&
+ (ret == TRANSLATE_SUCCESS) &&
!pmp_hart_has_privs(env, pa, TARGET_PAGE_SIZE, 1 << access_type)) {
ret = TRANSLATE_FAIL;
}
--
2.17.1
- [Qemu-riscv] [PATCHv4 1/6] RISC-V: Only Check PMP if MMU translation succeeds,
Hesham Almatary <=
- [Qemu-riscv] [PATCHv4 2/6] RISC-V: Raise access fault exceptions on PMP violations, Hesham Almatary, 2019/06/27
- [Qemu-riscv] [PATCHv4 3/6] RISC-V: Check for the effective memory privilege mode during PMP checks, Hesham Almatary, 2019/06/27
- [Qemu-riscv] [PATCHv4 6/6] RISC-V: Fix a PMP check with the correct access size, Hesham Almatary, 2019/06/27
- [Qemu-riscv] [PATCHv4 4/6] RISC-V: Check PMP during Page Table Walks, Hesham Almatary, 2019/06/27
- [Qemu-riscv] [PATCHv4 5/6] RISC-V: Fix a PMP bug where it succeeds even if PMP entry is off, Hesham Almatary, 2019/06/27