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
