Page MenuHomeFreeBSD

D49442.1789430541.diff
No OneTemporary

Size
680 B
Referenced Files
None
Subscribers
None

D49442.1789430541.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
Tue, Sep 15, 12:02 AM (10 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29635904
Default Alt Text
D49442.1789430541.diff (680 B)

Event Timeline