Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 8 Apr 2003 10:07:03 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 28528 for review
Message-ID:  <200304081707.h38H73xV064667@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=28528

Change 28528 by peter@peter_daintree on 2003/04/08 10:06:24

	What the heck. turn on PG_G and PG_PS unconditionally.  It seems to work.

Affected files ...

.. //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#52 edit
.. //depot/projects/hammer/sys/x86_64/x86_64/pmap.c#22 edit

Differences ...

==== //depot/projects/hammer/sys/x86_64/x86_64/machdep.c#52 (text+ko) ====

@@ -1084,25 +1084,24 @@
 
 	/* Fill in the underlying page table pages */
 	/* Read-only from zero to physfree */
-	/* XXX not actually used, underneath 2M pages */
+	/* XXX not fully used, underneath 2M pages */
 	for (i = 0; (i << PAGE_SHIFT) < physfree; i++) {
 		((pt_entry_t *)KPTphys)[i] = i << PAGE_SHIFT;
 		((pt_entry_t *)KPTphys)[i] |= PG_RW | PG_V;
 	}
 
-#if ENABLE_PSE
+	/* Now map the page tables at their location within PTmap */
+	for (i = 0; i < NKPT; i++) {
+		((pd_entry_t *)IdlePTD)[i + KPTDI] = KPTphys + (i << PAGE_SHIFT);
+		((pd_entry_t *)IdlePTD)[i + KPTDI] |= PG_RW | PG_V;
+	}
+
 	/* Map from zero to end of allocations under 2M pages */
+	/* This replaces some of the PTD entries above */
 	for (i = 0; (i << PDRSHIFT) < physfree; i++) {
 		((pd_entry_t *)IdlePTD)[i] = i << PDRSHIFT;
 		((pd_entry_t *)IdlePTD)[i] |= PG_RW | PG_V | PG_PS;
 	}
-#endif
-
-	/* Now map the page tables at their location within PTmap */
-	for (i = 0; i < NKPT; i++) {
-		((pd_entry_t *)IdlePTD)[i + KPTDI] = KPTphys + (i << PAGE_SHIFT);
-		((pd_entry_t *)IdlePTD)[i + KPTDI] |= PG_RW | PG_V;
-	}
 
 	/* Now map the page tables at their location within PTmap */
 	for (i = 0; i < NKPT; i++) {

==== //depot/projects/hammer/sys/x86_64/x86_64/pmap.c#22 (text+ko) ====

@@ -180,8 +180,6 @@
 vm_offset_t virtual_avail;	/* VA of first avail page (after kernel bss) */
 vm_offset_t virtual_end;	/* VA of last avail page (end of kernel AS) */
 static boolean_t pmap_initialized = FALSE;	/* Has pmap_init completed? */
-static int pgeflag;		/* PG_G or-in */
-static int pseflag;		/* PG_PS or-in */
 
 static int nkpt;
 vm_offset_t kernel_vm_end;
@@ -250,9 +248,7 @@
 {
 	vm_offset_t newaddr = addr;
 
-#if ENABLE_PSE
 	newaddr = (addr + (NBPDR - 1)) & ~(NBPDR - 1);
-#endif
 	return newaddr;
 }
 
@@ -359,15 +355,6 @@
 	for (i = 0; i < NKPT; i++)
 		PTD[i] = 0;
 
-	pgeflag = 0;
-	
-/*
- * Initialize the 2MB page size flag
- */
-#if ENABLE_PSE
-	pseflag = PG_PS;
-#endif
-
 	invltlb();
 }
 
@@ -595,7 +582,7 @@
 	pt_entry_t *pte;
 
 	pte = vtopte(va);
-	*pte = pa | PG_RW | PG_V | pgeflag;
+	*pte = pa | PG_RW | PG_V | PG_G;
 }
 
 /*
@@ -1901,7 +1888,7 @@
 	if (va < VM_MAXUSER_ADDRESS)
 		newpte |= PG_U;
 	if (pmap == kernel_pmap)
-		newpte |= pgeflag;
+		newpte |= PG_G;
 
 	/*
 	 * if the mapping or permission bits are different, we need
@@ -2057,7 +2044,7 @@
 	 * processor address space.  Note that some shortcuts
 	 * are taken, but the code works.
 	 */
-	if (pseflag && (object->type == OBJT_DEVICE) &&
+	if ((object->type == OBJT_DEVICE) &&
 	    ((addr & (NBPDR - 1)) == 0) && ((size & (NBPDR - 1)) == 0)) {
 		int i;
 		vm_page_t m[1];



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304081707.h38H73xV064667>