Page MenuHomeFreeBSD

D59995.id187751.diff
No OneTemporary

D59995.id187751.diff

diff --git a/sys/powerpc/aim/mmu_oea64.c b/sys/powerpc/aim/mmu_oea64.c
--- a/sys/powerpc/aim/mmu_oea64.c
+++ b/sys/powerpc/aim/mmu_oea64.c
@@ -101,6 +101,13 @@
#include "mmu_oea64.h"
+/*
+ * PGA_EXECUTABLE is set when an executable mapping of the page is created and
+ * cleared when the page's last mapping is destroyed. It is used to avoid
+ * redundant synchronization of the instruction cache.
+ */
+#define PGA_EXECUTABLE PGA_PMAP_PRIV1
+
void moea64_release_vsid(uint64_t vsid);
uintptr_t moea64_get_unique_vsid(void);
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
--- a/sys/vm/vm_page.h
+++ b/sys/vm/vm_page.h
@@ -350,8 +350,9 @@
* exclusive busied. The MI VM layer must never access this flag
* directly. Instead, it should call pmap_page_is_write_mapped().
*
- * PGA_EXECUTABLE may be set by pmap routines, and indicates that a page has
- * at least one executable mapping. It is not consumed by the MI VM layer.
+ * PGA_PMAP_PRIV1 is reserved for use by the pmap, which defines its meaning.
+ * The MI VM layer does not consume it, except to assert that it is clear when
+ * a managed page is freed.
*
* PGA_NOSYNC must be set and cleared with the page busy lock held.
*
@@ -383,7 +384,7 @@
*/
#define PGA_WRITEABLE 0x0001 /* page may be mapped writeable */
#define PGA_REFERENCED 0x0002 /* page has been referenced */
-#define PGA_EXECUTABLE 0x0004 /* page may be mapped executable */
+#define PGA_PMAP_PRIV1 0x0004 /* reserved for use by the pmap */
#define PGA_ENQUEUED 0x0008 /* page is enqueued in a page queue */
#define PGA_DEQUEUE 0x0010 /* page is due to be dequeued */
#define PGA_REQUEUE 0x0020 /* page is due to be requeued */
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -4120,7 +4120,7 @@
if ((m->oflags & VPO_UNMANAGED) == 0) {
KASSERT(!pmap_page_is_mapped(m),
("vm_page_free_prep: freeing mapped page %p", m));
- KASSERT((m->a.flags & (PGA_EXECUTABLE | PGA_WRITEABLE)) == 0,
+ KASSERT((m->a.flags & (PGA_PMAP_PRIV1 | PGA_WRITEABLE)) == 0,
("vm_page_free_prep: mapping flags set in page %p", m));
} else {
KASSERT(m->a.queue == PQ_NONE,

File Metadata

Mime Type
text/plain
Expires
Mon, Oct 12, 6:09 PM (37 m, 38 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40691339
Default Alt Text
D59995.id187751.diff (2 KB)

Event Timeline