Index: uvm_glue.c =================================================================== RCS file: /cvsroot/src/sys/uvm/uvm_glue.c,v retrieving revision 1.164 diff -u -r1.164 uvm_glue.c --- uvm_glue.c 22 Aug 2018 12:07:43 -0000 1.164 +++ uvm_glue.c 4 Nov 2018 13:31:09 -0000 @@ -246,7 +246,7 @@ if (USPACE == PAGE_SIZE && USPACE_ALIGN == 0) { struct vm_page *pg; vaddr_t va; - +again: #if defined(PMAP_ALLOC_POOLPAGE) pg = PMAP_ALLOC_POOLPAGE( ((flags & PR_WAITOK) == 0 ? UVM_KMF_NOWAIT : 0)); @@ -257,8 +257,14 @@ if (pg == NULL) return NULL; va = PMAP_MAP_POOLPAGE(VM_PAGE_TO_PHYS(pg)); - if (va == 0) + if (va == 0) { uvm_pagefree(pg); + if ((flags & PR_WAITOK) != 0) { + uvm_wait("uplpg"); + goto again; + } + } + return (void *)va; } #endif