[PATCH] Clean up MAX_NR_NODES/NUMNODES/etc. [3/5]

From: Matthew Dobson
Date: Mon Sep 15 2003 - 19:42:14 EST


Matthew Dobson wrote:
Ok, I made an attempt to clean up this mess quite a while ago (2.5.47), but that patch is utterly useless now. At Martin's urging I've created a new series of patches to resolve this.

01 - Make sure MAX_NUMNODES is defined in one and only one place. Remove superfluous definitions. Instead of defining MAX_NUMNODES in asm/numnodes.h, we define NODES_SHIFT there. Then in linux/mmzone.h we turn that NODES_SHIFT value into MAX_NUMNODES.

02 - Remove MAX_NR_NODES. This value is only used in a couple of places, and it's incorrectly used in all those places as far as I can tell. Replace with MAX_NUMNODES. Create MAX_NODES_SHIFT and use this value to check NODES_SHIFT is appropriate. A possible future patch should make MAX_NODES_SHIFT vary based on 32 vs. 64 bit archs.

03 - Fix up the sh arch. sh defined NR_NODES, change sh to use standard MAX_NUMNODES instead.

04 - Fix up the arm arch. This needs to be reviewed. Relatively straightforward replacement of NR_NODES with standard MAX_NUMNODES.

05 - Fix up the ia64 arch. This *definitely* needs to be reviewed. This code made my head hurt. I think I may have gotten it right. Totally untested.

Cheers!

-Matt diff -Nurp --exclude-from=/home/mcd/.dontdiff linux-2.6.0-test5/include/asm-sh/numnodes.h linux-2.6.0-test5-max_numnodes2nodes_shift/include/asm-sh/numnodes.h
--- linux-2.6.0-test5/include/asm-sh/numnodes.h Wed Dec 31 16:00:00 1969
+++ linux-2.6.0-test5-max_numnodes2nodes_shift/include/asm-sh/numnodes.h Fri Sep 12 17:26:31 2003
@@ -0,0 +1,7 @@
+#ifndef _ASM_MAX_NUMNODES_H
+#define _ASM_MAX_NUMNODES_H
+
+/* Max 2 Nodes */
+#define NODES_SHIFT 1
+
+#endif /* _ASM_MAX_NUMNODES_H */
diff -Nurp --exclude-from=/home/mcd/.dontdiff linux-2.6.0-test5/arch/sh/mm/init.c linux-2.6.0-test5-nr_nodes/arch/sh/mm/init.c
--- linux-2.6.0-test5/arch/sh/mm/init.c Mon Sep 8 12:50:21 2003
+++ linux-2.6.0-test5-nr_nodes/arch/sh/mm/init.c Fri Sep 12 17:28:43 2003
@@ -51,8 +51,8 @@ unsigned long mmu_context_cache = NO_CON
#endif

#ifdef CONFIG_DISCONTIGMEM
-pg_data_t discontig_page_data[NR_NODES];
-bootmem_data_t discontig_node_bdata[NR_NODES];
+pg_data_t discontig_page_data[MAX_NUMNODES];
+bootmem_data_t discontig_node_bdata[MAX_NUMNODES];
#endif

void show_mem(void)
diff -Nurp --exclude-from=/home/mcd/.dontdiff linux-2.6.0-test5/include/asm-sh/mmzone.h linux-2.6.0-test5-nr_nodes/include/asm-sh/mmzone.h
--- linux-2.6.0-test5/include/asm-sh/mmzone.h Mon Sep 8 12:50:27 2003
+++ linux-2.6.0-test5-nr_nodes/include/asm-sh/mmzone.h Fri Sep 12 17:28:08 2003
@@ -10,14 +10,14 @@

#include <linux/config.h>

+#ifdef CONFIG_DISCONTIGMEM
+
/* Currently, just for HP690 */
#define PHYSADDR_TO_NID(phys) ((((phys) - __MEMORY_START) >= 0x01000000)?1:0)
-#define NR_NODES 2

-extern pg_data_t discontig_page_data[NR_NODES];
-extern bootmem_data_t discontig_node_bdata[NR_NODES];
+extern pg_data_t discontig_page_data[MAX_NUMNODES];
+extern bootmem_data_t discontig_node_bdata[MAX_NUMNODES];

-#ifdef CONFIG_DISCONTIGMEM
/*
* Following are macros that each numa implmentation must define.
*/
@@ -46,7 +46,7 @@ static inline int is_valid_page(struct p
{
unsigned int i;

- for (i = 0; i < NR_NODES; i++) {
+ for (i = 0; i < MAX_NUMNODES; i++) {
if (page >= NODE_MEM_MAP(i) &&
page < NODE_MEM_MAP(i) + NODE_DATA(i)->node_size)
return 1;