--- /usr/tmp/TmpDir.8189-0/linux/linux/arch/ia64/mm/discontig.c_1.25 Fri Feb 13 13:13:53 2004 +++ linux/linux/arch/ia64/mm/discontig.c Fri Feb 13 13:13:05 2004 @@ -380,16 +380,17 @@ for (i = 0; i < numnodes; i++) { for (node = 0; node < numnodes; node++) { if (!nid_enabled_cpu_count[node]) - break; - fallback_nodes[node*numnodes+i] = - find_next_leastassigned(node); + /* don't affect nodes_assigned */ + fallback_nodes[node*numnodes+i] = + nodes_by_distance[node*numnodes+i]; + else + fallback_nodes[node*numnodes+i] = + find_next_leastassigned(node); } } #ifdef DISCONTIG_DEBUG for (i = 0; i < numnodes; i++) { int j; - if (!nid_enabled_cpu_count[i]) - continue; printk("node %d: ", i); for (j = 0; j < numnodes; j++) printk("%3d ", fallback_nodes[i*numnodes+j]); @@ -538,7 +539,7 @@ * * Called after build_zonelists. Finish the actual creation of each * pgdat's zonelist. - + * * Also scan the pgdats and assign each memory only node a controlling * node that has CPUs. The controlling node is responsible for flushing * stale buffer cache pages for each of its memory only nodes.