On Thu, Jun 26, 2014 at 06:33:18PM -0300, Eduardo Habkost wrote: > 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 <n...@linux.vnet.ibm.com> > [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 <ehabk...@redhat.com>
Reviewed-by: Hu Tao <hu...@cn.fujitsu.com> > --- > 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 e471afe..3de9116 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(); > -- > 1.9.3