svn commit: r261922 - head/sys/arm/arm

Zbigniew Bodek zbb at FreeBSD.org
Sat Feb 15 13:27:46 UTC 2014


Author: zbb
Date: Sat Feb 15 13:27:45 2014
New Revision: 261922
URL: http://svnweb.freebsd.org/changeset/base/261922

Log:
  Handle pmap_enter() on already promoted mappings for ARMv6/v7
  
  Attempt to demote the superpage if trying to pmap_enter() on
  one. Panic only when the particular superpage should
  no longer exist for that pmap and address.

Modified:
  head/sys/arm/arm/pmap-v6.c

Modified: head/sys/arm/arm/pmap-v6.c
==============================================================================
--- head/sys/arm/arm/pmap-v6.c	Sat Feb 15 13:24:58 2014	(r261921)
+++ head/sys/arm/arm/pmap-v6.c	Sat Feb 15 13:27:45 2014	(r261922)
@@ -2973,8 +2973,10 @@ pmap_enter_locked(pmap_t pmap, vm_offset
 	}
 
 	pl1pd = &pmap->pm_l1->l1_kva[L1_IDX(va)];
-	if ((*pl1pd & L1_TYPE_MASK) == L1_S_PROTO)
-		panic("pmap_enter_locked: attempt pmap_enter_on 1MB page");
+	if ((va < VM_MAXUSER_ADDRESS) &&
+	    (*pl1pd & L1_TYPE_MASK) == L1_S_PROTO) {
+		(void)pmap_demote_section(pmap, va);
+	}
 
 	user = 0;
 	/*
@@ -3014,6 +3016,10 @@ do_l2b_alloc:
 		}
 	}
 
+	pl1pd = &pmap->pm_l1->l1_kva[L1_IDX(va)];
+	if ((*pl1pd & L1_TYPE_MASK) == L1_S_PROTO)
+		panic("pmap_enter: attempt to enter on 1MB page, va: %#x", va);
+
 	ptep = &l2b->l2b_kva[l2pte_index(va)];
 
 	opte = *ptep;


More information about the svn-src-all mailing list