From: kettenis Date: Sun, 2 May 2021 19:43:16 +0000 (+0000) Subject: We need to set the dirty bit whenever we add write permission X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=a6b5a205979752e86e795d0fd9762929592f9d4f;p=openbsd We need to set the dirty bit whenever we add write permission otherwise a write will still fault on hardware that doesn't implement hardware updates for these bits. ok drahn@ --- diff --git a/sys/arch/riscv64/riscv64/pmap.c b/sys/arch/riscv64/riscv64/pmap.c index a38e92f6465..1b1ed7b41a2 100644 --- a/sys/arch/riscv64/riscv64/pmap.c +++ b/sys/arch/riscv64/riscv64/pmap.c @@ -219,23 +219,23 @@ VP_IDX3(vaddr_t va) const pt_entry_t ap_bits_user[8] = { [PROT_NONE] = PTE_U|PTE_A|PTE_R, [PROT_READ] = PTE_U|PTE_A|PTE_R, - [PROT_WRITE] = PTE_U|PTE_A|PTE_R|PTE_W, - [PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_R|PTE_W, + [PROT_WRITE] = PTE_U|PTE_A|PTE_R|PTE_D|PTE_W, + [PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_R|PTE_D|PTE_W, [PROT_EXEC] = PTE_U|PTE_A|PTE_X|PTE_R, [PROT_EXEC|PROT_READ] = PTE_U|PTE_A|PTE_X|PTE_R, - [PROT_EXEC|PROT_WRITE] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_W, - [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_W, + [PROT_EXEC|PROT_WRITE] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, + [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_U|PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, }; const pt_entry_t ap_bits_kern[8] = { [PROT_NONE] = PTE_A|PTE_R, [PROT_READ] = PTE_A|PTE_R, - [PROT_WRITE] = PTE_A|PTE_R|PTE_W, - [PROT_WRITE|PROT_READ] = PTE_A|PTE_R|PTE_W, + [PROT_WRITE] = PTE_A|PTE_R|PTE_D|PTE_W, + [PROT_WRITE|PROT_READ] = PTE_A|PTE_R|PTE_D|PTE_W, [PROT_EXEC] = PTE_A|PTE_X|PTE_R, [PROT_EXEC|PROT_READ] = PTE_A|PTE_X|PTE_R, - [PROT_EXEC|PROT_WRITE] = PTE_A|PTE_X|PTE_R|PTE_W, - [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_A|PTE_X|PTE_R|PTE_W, + [PROT_EXEC|PROT_WRITE] = PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, + [PROT_EXEC|PROT_WRITE|PROT_READ] = PTE_A|PTE_X|PTE_R|PTE_D|PTE_W, }; /*