summaryrefslogtreecommitdiff
path: root/drivers/acpi/numa.c
diff options
context:
space:
mode:
authorDavid Rientjes <rientjes@google.com>2010-03-26 02:33:04 +0300
committerLen Brown <len.brown@intel.com>2010-04-04 08:50:01 +0400
commit0f9b75ef3722814134f307f51c19e0791da40e69 (patch)
treec3d559132032330519f9ea9c81762becc1def9e6 /drivers/acpi/numa.c
parent2eaa9cfdf33b8d7fb7aff27792192e0019ae8fc6 (diff)
downloadlinux-0f9b75ef3722814134f307f51c19e0791da40e69.tar.xz
ACPI: NUMA: map pxms to low node ids
pxms are mapped to low node ids to maintain generic kernel use of functions such as pxm_to_node() that are used to determine device affinity. Otherwise, there is no pxm-to-node and node-to-pxm matching rule for x86_64 users of NUMA emulation where a single pxm may be bound to multiple NUMA nodes. Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/numa.c')
-rw-r--r--drivers/acpi/numa.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index b8725461d887..b0337d314604 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -61,8 +61,10 @@ int node_to_pxm(int node)
void __acpi_map_pxm_to_node(int pxm, int node)
{
- pxm_to_node_map[pxm] = node;
- node_to_pxm_map[node] = pxm;
+ if (pxm_to_node_map[pxm] == NUMA_NO_NODE || node < pxm_to_node_map[pxm])
+ pxm_to_node_map[pxm] = node;
+ if (node_to_pxm_map[node] == PXM_INVAL || pxm < node_to_pxm_map[node])
+ node_to_pxm_map[node] = pxm;
}
int acpi_map_pxm_to_node(int pxm)