svn commit: r304687 - head/sys/arm64/arm64
Andrew Turner
andrew at FreeBSD.org
Tue Aug 23 16:12:27 UTC 2016
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);
More information about the svn-src-all
mailing list