Page MenuHomeFreeBSD

D49442.1775470266.diff
No OneTemporary

Size
680 B
Referenced Files
None
Subscribers
None

D49442.1775470266.diff

diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -9304,12 +9304,16 @@
m = PHYS_TO_VM_PAGE(*pte & PG_FRAME);
vm_page_dirty(m);
}
- atomic_clear_long(pte, PG_M | PG_A);
- } else if ((*pte & PG_A) != 0)
- atomic_clear_long(pte, PG_A);
- else
+ } else
goto maybe_invlrng;
+ /*
+ * Avoid clearing the accessed bit for wired mappings.
+ * Superpage demotion assumes that a wired mapping is
+ * always accessed.
+ */
+ atomic_clear_long(pte,
+ PG_M | ((*pte & PG_W) == 0 ? PG_A : 0));
if ((*pte & PG_G) != 0) {
if (va == va_next)
va = sva;

File Metadata

Mime Type
text/plain
Expires
Mon, Apr 6, 10:11 AM (5 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28273223
Default Alt Text
D49442.1775470266.diff (680 B)

Event Timeline