Message ID | 1525854989-14165-1-git-send-email-jingqi.liu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, May 09, 2018 at 04:36:29PM +0800, Liu Jingqi wrote: > An initiator proximity domain (memory initiator) is any device > such as a CPU or a separate memory I/O device that can initiate > a memory request. A target proximity domain (memory target) > is a CPU-accessible physical address range. > [...] > + if (node->cpus) { > + initiator_pxm[num_initiator++] = nodenr; > + } [...] > + target_pxm[num_target++] = nodenr; I suggest NumaNode::is_initiator and NumaNode::is_target boolean fields instead of a separate global table. Or numa.c could simply provide bool numa_node_is_initiator(int node) and bool numa_node_is_target(int node) helpers.
> -----Original Message----- > From: Eduardo Habkost [mailto:ehabkost@redhat.com] > Sent: Friday, May 11, 2018 10:33 PM > To: Liu, Jingqi <jingqi.liu@intel.com> > Cc: pbonzini@redhat.com; rth@twiddle.net; mst@redhat.com; > imammedo@redhat.com; marcel.apfelbaum@gmail.com; qemu- > devel@nongnu.org > Subject: Re: [PATCH v1 4/7] numa: Classify the numa nodes as memory initiators > and memory targets > > On Wed, May 09, 2018 at 04:36:29PM +0800, Liu Jingqi wrote: > > An initiator proximity domain (memory initiator) is any device such as > > a CPU or a separate memory I/O device that can initiate a memory > > request. A target proximity domain (memory target) is a CPU-accessible > > physical address range. > > > [...] > > + if (node->cpus) { > > + initiator_pxm[num_initiator++] = nodenr; > > + } > [...] > > + target_pxm[num_target++] = nodenr; > > I suggest NumaNode::is_initiator and NumaNode::is_target boolean fields > instead of a separate global table. > > Or numa.c could simply provide > bool numa_node_is_initiator(int node) and > bool numa_node_is_target(int node) > helpers. > > -- > Eduardo Hi Eduardo, Thanks for your reviewing. It's a good suggestion. I will improve in the next version. Jingqi
diff --git a/numa.c b/numa.c index 70b150e..fe0009c 100644 --- a/numa.c +++ b/numa.c @@ -40,6 +40,7 @@ #include "qemu/option.h" #include "qemu/config-file.h" #include "qemu/cutils.h" +#include "hw/acpi/hmat.h" QemuOptsList qemu_numa_opts = { .name = "numa", @@ -100,6 +101,10 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node, machine_set_cpu_numa_node(ms, &props, &error_fatal); } + if (node->cpus) { + initiator_pxm[num_initiator++] = nodenr; + } + if (node->has_mem && node->has_memdev) { error_setg(errp, "cannot specify both mem= and memdev="); return; @@ -116,6 +121,7 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node, if (node->has_mem) { numa_info[nodenr].node_mem = node->mem; + target_pxm[num_target++] = nodenr; } if (node->has_memdev) { Object *o; @@ -128,6 +134,7 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node, object_ref(o); numa_info[nodenr].node_mem = object_property_get_uint(o, "size", NULL); numa_info[nodenr].node_memdev = MEMORY_BACKEND(o); + target_pxm[num_target++] = nodenr; } numa_info[nodenr].present = true; max_numa_nodeid = MAX(max_numa_nodeid, nodenr + 1);
An initiator proximity domain (memory initiator) is any device such as a CPU or a separate memory I/O device that can initiate a memory request. A target proximity domain (memory target) is a CPU-accessible physical address range. Signed-off-by: Liu Jingqi <jingqi.liu@intel.com> --- numa.c | 7 +++++++ 1 file changed, 7 insertions(+)