Date: Thu, 28 Oct 2021 19:02:11 GMT From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: 0b3bc7288984 - main - amd64 pmap: adjust the empty pmap optimization in pmap_remove() Message-ID: <202110281902.19SJ2BRQ095344@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=0b3bc7288984c17da00d9f8c29f116d56bf44d35 commit 0b3bc7288984c17da00d9f8c29f116d56bf44d35 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2021-10-20 20:30:34 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2021-10-28 19:01:58 +0000 amd64 pmap: adjust the empty pmap optimization in pmap_remove() to match the added accounting of the top-level page table pages. Reviewed by: markj Tested by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32569 --- sys/amd64/amd64/pmap.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 1c4e8b3354fc..8526cc3031d2 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -6278,9 +6278,14 @@ pmap_remove(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) PG_V = pmap_valid_bit(pmap); /* + * If there are no resident pages besides the top level page + * table page(s), there is nothing to do. Kernel pmap always + * accounts whole preloaded area as resident, which makes its + * resident count > 2. * Perform an unsynchronized read. This is, however, safe. */ - if (pmap->pm_stats.resident_count == 0) + if (pmap->pm_stats.resident_count <= 1 + (pmap->pm_pmltopu != NULL ? + 1 : 0)) return; anyvalid = 0;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202110281902.19SJ2BRQ095344>