svn commit: r335996 - in head/sys: amd64/amd64 i386/i386
Konstantin Belousov
kib at FreeBSD.org
Thu Jul 5 16:27:35 UTC 2018
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);
}
More information about the svn-src-all
mailing list