Author: andrew
Date: Tue Aug 23 16:12:25 2016
New Revision: 304687
URL: https://svnweb.freebsd.org/changeset/base/304687

Log:
  If we find we have a superpage in pmap_enter_quick_locked return without
  trying to add a new level 3 page.
  
  Obtained from:        ABT Systems Ltd
  MFC after:    1 month
  Sponsored by: The FreeBSD Foundation

Modified:
  head/sys/arm64/arm64/pmap.c

Modified: head/sys/arm64/arm64/pmap.c
==============================================================================
--- head/sys/arm64/arm64/pmap.c Tue Aug 23 15:49:31 2016        (r304686)
+++ head/sys/arm64/arm64/pmap.c Tue Aug 23 16:12:25 2016        (r304687)
@@ -2696,7 +2696,7 @@ pmap_enter_quick_locked(pmap_t pmap, vm_
 {
        struct spglist free;
        pd_entry_t *pde;
-       pt_entry_t *l3;
+       pt_entry_t *l2, *l3;
        vm_paddr_t pa;
        int lvl;
 
@@ -2731,6 +2731,12 @@ pmap_enter_quick_locked(pmap_t pmap, vm_
                         * attempt to allocate a page table page.  If this
                         * attempt fails, we don't retry.  Instead, we give up.
                         */
+                       if (lvl == 1) {
+                               l2 = pmap_l1_to_l2(pde, va);
+                               if ((pmap_load(l2) & ATTR_DESCR_MASK) ==
+                                   L2_BLOCK)
+                                       return (NULL);
+                       }
                        if (lvl == 2 && pmap_load(pde) != 0) {
                                mpte =
                                    PHYS_TO_VM_PAGE(pmap_load(pde) & 
~ATTR_MASK);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to