Author: kib
Date: Thu Jul  5 16:27:34 2018
New Revision: 335996
URL: https://svnweb.freebsd.org/changeset/base/335996

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:25:48 2018        (r335995)
+++ head/sys/amd64/amd64/pmap.c Thu Jul  5 16:27:34 2018        (r335996)
@@ -2307,8 +2307,7 @@ retry:
                                if (vm_page_pa_tryrelock(pmap, (pde &
                                    PG_PS_FRAME) | (va & PDRMASK), &pa))
                                        goto retry;
-                               m = PHYS_TO_VM_PAGE((pde & PG_PS_FRAME) |
-                                   (va & PDRMASK));
+                               m = PHYS_TO_VM_PAGE(pa);
                                vm_page_hold(m);
                        }
                } else {
@@ -2318,7 +2317,7 @@ retry:
                                if (vm_page_pa_tryrelock(pmap, pte & PG_FRAME,
                                    &pa))
                                        goto retry;
-                               m = PHYS_TO_VM_PAGE(pte & PG_FRAME);
+                               m = PHYS_TO_VM_PAGE(pa);
                                if (m != NULL)
                                        vm_page_hold(m);
                        }

Modified: head/sys/i386/i386/pmap.c
==============================================================================
--- head/sys/i386/i386/pmap.c   Thu Jul  5 16:25:48 2018        (r335995)
+++ head/sys/i386/i386/pmap.c   Thu Jul  5 16:27:34 2018        (r335996)
@@ -1672,8 +1672,7 @@ retry:
                                if (vm_page_pa_tryrelock(pmap, (pde &
                                    PG_PS_FRAME) | (va & PDRMASK), &pa))
                                        goto retry;
-                               m = PHYS_TO_VM_PAGE((pde & PG_PS_FRAME) |
-                                   (va & PDRMASK));
+                               m = PHYS_TO_VM_PAGE(pa);
                                vm_page_hold(m);
                        }
                } else {
@@ -1683,7 +1682,7 @@ retry:
                                if (vm_page_pa_tryrelock(pmap, pte & PG_FRAME,
                                    &pa))
                                        goto retry;
-                               m = PHYS_TO_VM_PAGE(pte & PG_FRAME);
+                               m = PHYS_TO_VM_PAGE(pa);
                                if (m != NULL)
                                        vm_page_hold(m);
                        }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to