From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59881) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X1IQr-0006hW-Mq for qemu-devel@nongnu.org; Sun, 29 Jun 2014 12:58:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X1IQn-0003DH-2r for qemu-devel@nongnu.org; Sun, 29 Jun 2014 12:58:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:32953) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X1IQm-0003D7-Rm for qemu-devel@nongnu.org; Sun, 29 Jun 2014 12:58:21 -0400 Date: Sun, 29 Jun 2014 19:58:36 +0300 From: "Michael S. Tsirkin" Message-ID: <1404060115-27410-11-git-send-email-mst@redhat.com> References: <1404060115-27410-1-git-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1404060115-27410-1-git-send-email-mst@redhat.com> Subject: [Qemu-devel] [PULL 10/37] numa: Keep track of NUMA nodes present on the command-line List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Eduardo Habkost , Hu Tao , Nishanth Aravamudan , Anthony Liguori , Paolo Bonzini , Wanlong Gao From: Eduardo Habkost Based on "enable sparse node numbering" patch from Nishanth Aravamudan, but without the code to actually support sparse node IDs. This just adds the code to keep track of present/non-present nodes on the command-line, without changing any behavior. Signed-off-by: Nishanth Aravamudan [Rename max_numa_node to max_numa_nodeid -Eduardo] [Initialize max_numa_nodeid to 0 -Eduardo] [Use MAX() macro when setting max_numa_nodeid -Eduardo] Signed-off-by: Eduardo Habkost Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Hu Tao Reviewed-by: Eric Blake --- include/sysemu/sysemu.h | 7 ++++++- numa.c | 2 ++ vl.c | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 285c45b..d8539fd 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -146,11 +146,16 @@ extern int mem_prealloc; */ #define MAX_CPUMASK_BITS 255 -extern int nb_numa_nodes; +extern int nb_numa_nodes; /* Number of NUMA nodes */ +extern int max_numa_nodeid; /* Highest specified NUMA node ID, plus one. + * For all nodes, nodeid < max_numa_nodeid + */ + typedef struct node_info { uint64_t node_mem; DECLARE_BITMAP(node_cpu, MAX_CPUMASK_BITS); struct HostMemoryBackend *node_memdev; + bool present; } NodeInfo; extern NodeInfo numa_info[MAX_NODES]; void set_numa_nodes(void); diff --git a/numa.c b/numa.c index 6c2eae7..db10f95 100644 --- a/numa.c +++ b/numa.c @@ -106,6 +106,8 @@ static void numa_node_parse(NumaNodeOptions *node, QemuOpts *opts, Error **errp) numa_info[nodenr].node_mem = object_property_get_int(o, "size", NULL); numa_info[nodenr].node_memdev = MEMORY_BACKEND(o); } + numa_info[nodenr].present = true; + max_numa_nodeid = MAX(max_numa_nodeid, nodenr + 1); } int numa_init_func(QemuOpts *opts, void *opaque) diff --git a/vl.c b/vl.c index a1686ef..41ddcd2 100644 --- a/vl.c +++ b/vl.c @@ -196,6 +196,7 @@ static QTAILQ_HEAD(, FWBootEntry) fw_boot_order = QTAILQ_HEAD_INITIALIZER(fw_boot_order); int nb_numa_nodes; +int max_numa_nodeid; NodeInfo numa_info[MAX_NODES]; uint8_t qemu_uuid[16]; @@ -2984,10 +2985,12 @@ int main(int argc, char **argv, char **envp) for (i = 0; i < MAX_NODES; i++) { numa_info[i].node_mem = 0; + numa_info[i].present = false; bitmap_zero(numa_info[i].node_cpu, MAX_CPUMASK_BITS); } nb_numa_nodes = 0; + max_numa_nodeid = 0; nb_nics = 0; bdrv_init_with_whitelist(); -- MST