PERFORCE change 94783 for review

Alan Cox alc at FreeBSD.org
Fri Apr 7 23:25:36 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=94783

Change 94783 by alc at alc_home on 2006/04/07 23:24:52

	Promotion of kernel pmap pages requires that the corresponding pde
	in every pmap is updated.

Affected files ...

.. //depot/projects/superpages/src/sys/i386/i386/pmap.c#10 integrate

Differences ...

==== //depot/projects/superpages/src/sys/i386/i386/pmap.c#10 (text+ko) ====

@@ -3302,6 +3302,7 @@
 mach_promote(pmap_t pmap, vm_offset_t va, reservation_t reserv)
 {
 	vm_paddr_t pa;
+	pmap_t allpmaps_entry;
 	pd_entry_t *pde = pmap_pde(pmap, va);
 	pt_entry_t *pte, *first_pte, flags;
 	vm_page_t page_pa;
@@ -3331,7 +3332,15 @@
 	}
 
 	/* Create a superpage: add PG_PS bit to the pde */ 
-	*pde = PG_PS | flags;
+	if (pmap == kernel_pmap) {
+		mtx_lock_spin(&allpmaps_lock);
+		LIST_FOREACH(allpmaps_entry, &allpmaps, pm_list) {
+			pde = pmap_pde(allpmaps_entry, va);
+			pde_store(pde, PG_PS | flags);
+		}
+		mtx_unlock_spin(&allpmaps_lock);
+	} else
+		*pde = PG_PS | flags;
 
 	if (pmap != kernel_pmap)
 		pmap->pm_stats.resident_count--;


More information about the p4-projects mailing list