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