Skip to contentSkip to conversation

mm/ia64: fix a node distance bug

PATCH RESEND In review wujianguo 3 participants 3 messages Sep 6, 2012 – Sep 10, 2012 Memory management

lore
Share & tools
lore

wujianguo

author
#0 lore raw

PATCH RESEND 1/1 mm/ia64: fix a node distance bug

From: Jianguo Wu <[email protected]>

In arch ia64, has following definition:
extern u8 numa_slit[MAX_NUMNODES * MAX_NUMNODES];
#define node_distance(from,to) (numa_slit[(from) * num_online_nodes() + (to)])

num_online_nodes() is a variable value, it can be changed after hot-remove/add a node.

I my practice, I found node distance is wrong after offline a node in IA64 platform. For example system has 4 nodes:
node distances:
node 0 1 2 3

  0:  10  21  21  32
  1:  21  10  32  21
  2:  21  32  10  21
  3:  32  21  21  10

linux-drf:/sys/devices/system/node/node0 # cat distance 10 21 21 32 linux-drf:/sys/devices/system/node/node1 # cat distance 21 10 32 21

After offline node2:
linux-drf:/sys/devices/system/node/node0 # cat distance 10 21 32 linux-drf:/sys/devices/system/node/node1 # cat distance
32 21 32 --------->expected value is: 21 10 21

---
 arch/ia64/include/asm/numa.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
arch/ia64/include/asm/numa.h +1 -1
index 6a8a27c..2e27ef1 100644
@@ -59,7 +59,7 @@ extern struct node_cpuid_s node_cpuid[NR_CPUS];
  */
 
 extern u8 numa_slit[MAX_NUMNODES * MAX_NUMNODES];
-#define node_distance(from,to) (numa_slit[(from) * num_online_nodes() + (to)])
+#define node_distance(from,to) (numa_slit[(from) * MAX_NUMNODES + (to)])
 
 extern int paddr_to_nid(unsigned long paddr);
 

-- 1.7.6.1 .

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

Acked-by on v1 1/1
#1 lore raw
Quoted 30 lines · wujianguo

From: Jianguo Wu <[email protected]>

In arch ia64, has following definition:
extern u8 numa_slit[MAX_NUMNODES * MAX_NUMNODES];
#define node_distance(from,to) (numa_slit[(from) * num_online_nodes() + (to)])

num_online_nodes() is a variable value, it can be changed after hot-remove/add a node.

I my practice, I found node distance is wrong after offline a node in IA64 platform. For example system has 4 nodes:
node distances:
node 0 1 2 3

  0:  10  21  21  32
  1:  21  10  32  21
  2:  21  32  10  21
  3:  32  21  21  10

linux-drf:/sys/devices/system/node/node0 # cat distance 10 21 21 32 linux-drf:/sys/devices/system/node/node1 # cat distance 21 10 32 21

After offline node2:
linux-drf:/sys/devices/system/node/node0 # cat distance 10 21 32 linux-drf:/sys/devices/system/node/node1 # cat distance
32 21 32 --------->expected value is: 21 10 21

Quoted 2 lines

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

#2 lore raw
Quoted 5 lines · David Rientjes
Quoted 2 lines · wujianguo

Applied (should show up in linux-next in the next day or two).

-Tony

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>