From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45422) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YT9jj-0004MW-A5 for qemu-devel@nongnu.org; Wed, 04 Mar 2015 08:53:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YT9jd-0004gt-51 for qemu-devel@nongnu.org; Wed, 04 Mar 2015 08:53:19 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55904) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YT9jc-0004gn-Sr for qemu-devel@nongnu.org; Wed, 04 Mar 2015 08:53:13 -0500 From: Eduardo Habkost Date: Wed, 4 Mar 2015 10:52:58 -0300 Message-Id: <1425477178-25225-2-git-send-email-ehabkost@redhat.com> In-Reply-To: <1425477178-25225-1-git-send-email-ehabkost@redhat.com> References: <1425477178-25225-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PATCH v5 1/1] numa: Print warning if no node is assigned to a CPU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Igor Mammedov , Hu Tao , "Michael S. Tsirkin" We need all possible CPUs (including hotplug ones) to be present in the SRAT when QEMU starts. QEMU already does that correctly today, the only problem is that when a CPU is omitted from the NUMA configuration, it is silently assigned to node 0. Check if all CPUs up to max_cpus are present in the NUMA configuration and warn about missing CPUs. Make it just a warning, to allow management software to be updated if necessary. In the future we may make it a fatal error instead. Signed-off-by: Eduardo Habkost --- v1 -> v2: (no changes) v2 -> v3: * Use enumerate_cpus() and error_report() for error message * Simplify logic using bitmap_full() v3 -> v4: * Clarify error message, mention that all CPUs up to maxcpus need to be described in NUMA config v4 -> v5: * Commit log update, to make problem description clearer --- numa.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/numa.c b/numa.c index e922265..9b2ba05 100644 --- a/numa.c +++ b/numa.c @@ -200,6 +200,16 @@ static void validate_numa_cpus(void) bitmap_or(seen_cpus, seen_cpus, numa_info[i].node_cpu, MAX_CPUMASK_BITS); } + + if (!bitmap_full(seen_cpus, max_cpus)) { + char *msg; + bitmap_complement(seen_cpus, seen_cpus, max_cpus); + msg = enumerate_cpus(seen_cpus, max_cpus); + error_report("warning: CPU(s) not present in any NUMA nodes: %s", msg); + error_report("warning: All CPU(s) up to maxcpus should be described " + "in NUMA config"); + g_free(msg); + } } void parse_numa_opts(void) -- 2.1.0