[PATCH 2.6.17-rc1-mm1] sched_domain-handle-kmalloc-failure-fix

[PATCH 2.6.17-rc1-mm1] sched_domain-handle-kmalloc-failure-fix

Post by Lee Scherm » Sat, 08 Apr 2006 05:00:22


[PATCH] sched_domain-handle-kmalloc-failure-fix

2.6.17-rc1-mm1 hangs during boot on HP rx8620 and dl585 -- both 4 node
NUMA platforms. Problem is in build_sched_domains() setting up the
sched_group_nodes[] lists, resulting from patch:
sched_domain-handle-kmalloc-failure.patch

The referenced patch does not propagate the "next" pointer from the head
of the list, resulting in a loop between the last 2 groups in the list.
This causes a tight loop/hang in init_numa_sched_groups_power() because
'sg->next' never == 'group_head' when you have > 2 nodes.

This patch seems to fix the problem.

Signed-off-by: Lee Schermerhorn < XXXX@XXXXX.COM >

Index: linux-2.6.17-rc1-mm1/kernel/sched.c
===================================================================
--- linux-2.6.17-rc1-mm1.orig/kernel/sched.c 2006-04-06 15:18:32.000000000 -0400
+++ linux-2.6.17-rc1-mm1/kernel/sched.c 2006-04-06 15:20:49.000000000 -0400
@@ -6360,7 +6360,7 @@ static int build_sched_domains(const cpu
}
sg->cpu_power = 0;
sg->cpumask = tmp;
- sg->next = prev;
+ sg->next = prev->next;
cpus_or(covered, covered, tmp);
prev->next = sg;
prev = sg;


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to XXXX@XXXXX.COM
More majordomo info at http://www.yqcomputer.com/
Please read the FAQ at http://www.yqcomputer.com/
 
 
 

[PATCH 2.6.17-rc1-mm1] sched_domain-handle-kmalloc-failure-fix

Post by Dave Hanse » Sun, 09 Apr 2006 03:13:32


Wow. I'm incredibly impressed that you tracked that down. I can't
believe how horribly unintelligible that code is.

I ran into the same freeze on a 4-node NUMA-Q. Your patch fixed it.

Is there any good reason that sched domains has to roll its own linked
lists? Why not use list_heads? Seems like it would avoid crappy
problems like this.

-- Dave

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to XXXX@XXXXX.COM
More majordomo info at http://www.yqcomputer.com/
Please read the FAQ at http://www.yqcomputer.com/