git: 15964f1cb393 - main - amd64 pmap: preset A and M bits for pmap_qenter() and pmap_kenter() mappings
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 08 Jan 2022 04:35:42 UTC
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=15964f1cb3935b612c833b863219fef0a3932edf commit 15964f1cb3935b612c833b863219fef0a3932edf Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2022-01-05 01:25:41 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2022-01-08 04:34:18 +0000 amd64 pmap: preset A and M bits for pmap_qenter() and pmap_kenter() mappings This removes one or two atomic update of the pte on access. Also it makes the pte constant during its lifecycle. Reviewed by: alc, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D33778 --- sys/amd64/amd64/pmap.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 8b5d58c2a540..5f72ff3acf08 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -3897,7 +3897,8 @@ pmap_kenter(vm_offset_t va, vm_paddr_t pa) pt_entry_t *pte; pte = vtopte(va); - pte_store(pte, pa | X86_PG_RW | X86_PG_V | pg_g | pg_nx); + pte_store(pte, pa | pg_g | pg_nx | X86_PG_A | X86_PG_M | + X86_PG_RW | X86_PG_V); } static __inline void @@ -3908,7 +3909,8 @@ pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode) pte = vtopte(va); cache_bits = pmap_cache_bits(kernel_pmap, mode, 0); - pte_store(pte, pa | X86_PG_RW | X86_PG_V | pg_g | pg_nx | cache_bits); + pte_store(pte, pa | pg_g | pg_nx | X86_PG_A | X86_PG_M | + X86_PG_RW | X86_PG_V | cache_bits); } /* @@ -3967,7 +3969,8 @@ pmap_qenter(vm_offset_t sva, vm_page_t *ma, int count) pa = VM_PAGE_TO_PHYS(m) | cache_bits; if ((*pte & (PG_FRAME | X86_PG_PTE_CACHE)) != pa) { oldpte |= *pte; - pte_store(pte, pa | pg_g | pg_nx | X86_PG_RW | X86_PG_V); + pte_store(pte, pa | pg_g | pg_nx | X86_PG_A | + X86_PG_M | X86_PG_RW | X86_PG_V); } pte++; }