diff options
| -rw-r--r-- | sys/i386/i386/pmap.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index a2a5b0d12ca0..38cc84c19f00 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -493,9 +493,13 @@ pmap_bootstrap(vm_paddr_t firstaddr)  	virtual_avail = va;  	/* -	 * Leave in place an identity mapping (virt == phys) for the low 1 MB -	 * physical memory region that is used by the ACPI wakeup code.  This -	 * mapping must not have PG_G set.  +	 * Finish removing the identity mapping (virt == phys) of low memory. +	 * It was only used for 2 instructions in locore.  locore then +	 * unmapped the first PTD to get some null pointer checks.  ACPI +	 * wakeup will map the first PTD transiently to use it for 1 +	 * instruction.  The double mapping for low memory is not usable in +	 * normal operation since it breaks trapping of null pointers and +	 * causes inconsistencies in page tables when combined with PG_G.  	 */  	for (i = 1; i < NKPT; i++)  		PTD[i] = 0;  | 
