Author: kib
Date: Thu Jul  5 16:38:54 2018
New Revision: 335999
URL: https://svnweb.freebsd.org/changeset/base/335999

Log:
  In x86 pmap_extract_and_hold(), there is no need to recalculate the
  physical address, which is readily available after sucessfull
  vm_page_pa_tryrelock().
  
  Noted and reviewed by:        alc
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week
  Differential revision:        https://reviews.freebsd.org/D16085

Modified:
  head/sys/amd64/amd64/pmap.c
  head/sys/i386/i386/pmap.c

Modified: head/sys/amd64/amd64/pmap.c
==============================================================================
--- head/sys/amd64/amd64/pmap.c Thu Jul  5 16:30:32 2018        (r335998)
+++ head/sys/amd64/amd64/pmap.c Thu Jul  5 16:38:54 2018        (r335999)
@@ -2308,7 +2308,6 @@ retry:
                                    PG_PS_FRAME) | (va & PDRMASK), &pa))
                                        goto retry;
                                m = PHYS_TO_VM_PAGE(pa);
-                               vm_page_hold(m);
                        }
                } else {
                        pte = *pmap_pde_to_pte(pdep, va);
@@ -2318,10 +2317,10 @@ retry:
                                    &pa))
                                        goto retry;
                                m = PHYS_TO_VM_PAGE(pa);
-                               if (m != NULL)
-                                       vm_page_hold(m);
                        }
                }
+               if (m != NULL)
+                       vm_page_hold(m);
        }
        PA_UNLOCK_COND(pa);
        PMAP_UNLOCK(pmap);

Modified: head/sys/i386/i386/pmap.c
==============================================================================
--- head/sys/i386/i386/pmap.c   Thu Jul  5 16:30:32 2018        (r335998)
+++ head/sys/i386/i386/pmap.c   Thu Jul  5 16:38:54 2018        (r335999)
@@ -1673,7 +1673,6 @@ retry:
                                    PG_PS_FRAME) | (va & PDRMASK), &pa))
                                        goto retry;
                                m = PHYS_TO_VM_PAGE(pa);
-                               vm_page_hold(m);
                        }
                } else {
                        pte = pmap_pte_ufast(pmap, va, pde);
@@ -1683,10 +1682,10 @@ retry:
                                    &pa))
                                        goto retry;
                                m = PHYS_TO_VM_PAGE(pa);
-                               if (m != NULL)
-                                       vm_page_hold(m);
                        }
                }
+               if (m != NULL)
+                       vm_page_hold(m);
        }
        PA_UNLOCK_COND(pa);
        PMAP_UNLOCK(pmap);
_______________________________________________
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