[ adding Toshi's correct address ] On Thu, Mar 15, 2018 at 8:08 PM, Dan Williams <dan.j.williams@xxxxxxxxx> wrote: > Commit 99759869faf1 "acpi: Add acpi_map_pxm_to_online_node()" added > support for mapping a given proximity to its nearest, by SLIT distance, > online node. However, it sometimes returns unexpected results due to the > fact that it switches from comparing the PXM node to the last node that > was closer than the current max. > > for_each_online_node(n) { > dist = node_distance(node, n); > if (dist < min_dist) { > min_dist = dist; > node = n; <---- from this point we're using the > wrong node for node_distance() > > > Fixes: 99759869faf1 ("acpi: Add acpi_map_pxm_to_online_node()") > Cc: <stable@xxxxxxxxxxxxxxx> > Cc: Toshi Kani <toshi.kani@xxxxxx> > Cc: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>> > Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx> > --- > Rafael, I can take this through the nvdimm tree with your ack. I have a > few other nvdimm fixes pending for 4.16. > > drivers/acpi/numa.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c > index 8ccaae3550d2..85167603b9c9 100644 > --- a/drivers/acpi/numa.c > +++ b/drivers/acpi/numa.c > @@ -103,25 +103,27 @@ int acpi_map_pxm_to_node(int pxm) > */ > int acpi_map_pxm_to_online_node(int pxm) > { > - int node, n, dist, min_dist; > + int node, min_node; > > node = acpi_map_pxm_to_node(pxm); > > if (node == NUMA_NO_NODE) > node = 0; > > + min_node = node; > if (!node_online(node)) { > - min_dist = INT_MAX; > + int min_dist = INT_MAX, dist, n; > + > for_each_online_node(n) { > dist = node_distance(node, n); > if (dist < min_dist) { > min_dist = dist; > - node = n; > + min_node = n; > } > } > } > > - return node; > + return min_node; > } > EXPORT_SYMBOL(acpi_map_pxm_to_online_node); > >