Re: 2.6.14-rc1-git-now still dying in mm/slab - this time line 1849

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 29, 2005 at 06:43:05PM +0200, Petr Vandrovec wrote:
> Ravikiran G Thirumalai wrote:
> 
> Unfortunately I must confirm that it does not fix problem.  But it pointed
> out to me another thing - proc_inode_cache stuff is put into caches
> BEFORE this code is executed.  So if anything in mm/slab.c relies
> on node_to_mask[] being valid (and if it relies on some other things
> which are set this late), it probably won't work.

The tests Alok carried out on Petr's box confirmed that cpu_to_node[BP] 
is not setup early enough by numa_init_array due to the x86_64 changes in
 2.6.14-rc*, and unfortunately set wrongly by the work around code in 
numa_init_array(). cpu_to_node[0] gets set with 1 early and later gets set 
properly to 0 during identify_cpu() when all cpus are brought up, but 
confusing the numa slab in the process.

Here is a quick fix for this.  The right fix obviously is to have
cpu_to_node[bsp] setup early for numa_init_array().  The following patch
will fix the problem now, and the code can stay on even when cpu_to_node{BP] 
gets fixed early correctly.

Thanks to Petr for access to his box.

Signed off by: Ravikiran Thirumalai <[email protected]>
Signed-off-by: Alok N Kataria <[email protected]>

Index: slab-x86_64-fix-2.6.14-rc2/arch/x86_64/mm/numa.c
===================================================================
--- slab-x86_64-fix-2.6.14-rc2.orig/arch/x86_64/mm/numa.c	2005-09-29 20:39:25.000000000 -0700
+++ slab-x86_64-fix-2.6.14-rc2/arch/x86_64/mm/numa.c	2005-09-29 21:38:05.000000000 -0700
@@ -167,15 +167,14 @@
 	   mapping. To avoid this fill in the mapping for all possible
 	   CPUs, as the number of CPUs is not known yet. 
 	   We round robin the existing nodes. */
-	rr = 0;
+	rr = first_node(node_online_map);
 	for (i = 0; i < NR_CPUS; i++) {
 		if (cpu_to_node[i] != NUMA_NO_NODE)
 			continue;
+		cpu_to_node[i] = rr;
 		rr = next_node(rr, node_online_map);
 		if (rr == MAX_NUMNODES)
 			rr = first_node(node_online_map);
-		cpu_to_node[i] = rr;
-		rr++; 
 	}
 
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux