Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Jan 2020 18:25:37 +0000 (UTC)
From:      Andrew Gallatin <gallatin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r356866 - head/sys/vm
Message-ID:  <202001181825.00IIPb27084393@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gallatin
Date: Sat Jan 18 18:25:37 2020
New Revision: 356866
URL: https://svnweb.freebsd.org/changeset/base/356866

Log:
  pcpu_page_alloc: guard against empty NUMA domains
  
  Some systems, such as higher end Threadripper, may have
  NUMA domains with no physical memory, Don't allocate
  from these domains.
  
  This fixes a "panic: vm_wait in early boot" on my 2990WX desktop
  
  Reviewed by:	jeff
  Sponsored by:	Netflix

Modified:
  head/sys/vm/uma_core.c

Modified: head/sys/vm/uma_core.c
==============================================================================
--- head/sys/vm/uma_core.c	Sat Jan 18 10:55:38 2020	(r356865)
+++ head/sys/vm/uma_core.c	Sat Jan 18 18:25:37 2020	(r356866)
@@ -1521,7 +1521,11 @@ pcpu_page_alloc(uma_zone_t zone, vm_size_t bytes, int 
 			p = vm_page_alloc(NULL, 0, flags);
 #else
 			pc = pcpu_find(cpu);
-			p = vm_page_alloc_domain(NULL, 0, pc->pc_domain, flags);
+			if (__predict_false(VM_DOMAIN_EMPTY(pc->pc_domain)))
+				p = NULL;
+			else
+				p = vm_page_alloc_domain(NULL, 0,
+				    pc->pc_domain, flags);
 			if (__predict_false(p == NULL))
 				p = vm_page_alloc(NULL, 0, flags);
 #endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202001181825.00IIPb27084393>