Files
ack-tegra/include/linux
Peter Zijlstra dce840a087 sched: Dynamically allocate sched_domain/sched_group data-structures
Instead of relying on static allocations for the sched_domain and
sched_group trees, dynamically allocate and RCU free them.

Allocating this dynamically also allows for some build_sched_groups()
simplification since we can now (like with other simplifications) rely
on the sched_domain tree instead of hard-coded knowledge.

One tricky to note is that detach_destroy_domains() needs to hold
rcu_read_lock() over the entire tear-down, per-cpu is not sufficient
since that can lead to partial sched_group existance (could possibly
be solved by doing the tear-down backwards but this is much more
robust).

A concequence of the above is that we can no longer print the
sched_domain debug stuff from cpu_attach_domain() since that might now
run with preemption disabled (due to classic RCU etc.) and
sched_domain_debug() does some GFP_KERNEL allocations.

Another thing to note is that we now fully rely on normal RCU and not
RCU-sched, this is because with the new and exiting RCU flavours we
grew over the years BH doesn't necessarily hold off RCU-sched grace
periods (-rt is known to break this). This would in fact already cause
us grief since we do sched_domain/sched_group iterations from softirq
context.

This patch is somewhat larger than I would like it to be, but I didn't
find any means of shrinking/splitting this.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Nick Piggin <npiggin@kernel.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/20110407122942.245307941@chello.nl
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2011-04-11 12:58:19 +02:00
..
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-23 10:42:00 +01:00
2011-03-18 23:38:50 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-01 22:24:19 +03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-02-24 19:58:42 +01:00
2011-01-20 18:30:17 -08:00
2011-01-31 14:03:00 -08:00
2011-01-15 20:07:45 -05:00
2011-03-10 08:52:07 +01:00
2011-03-22 17:43:59 -07:00
2011-03-11 14:25:50 +00:00
2011-01-13 08:03:12 -08:00
2011-03-10 08:52:27 +01:00
2011-04-05 23:52:43 +02:00
2011-03-10 08:52:07 +01:00
2011-03-31 11:26:23 -03:00
2010-12-16 17:53:38 +01:00
2011-03-31 11:26:23 -03:00
2011-02-16 13:30:48 +01:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-22 17:44:15 -07:00
2011-01-10 08:51:44 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-10 11:35:17 +01:00
2011-03-31 11:26:23 -03:00
2011-02-03 15:39:16 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-23 19:46:17 -07:00
2011-01-12 20:16:43 -05:00
2011-03-31 11:26:23 -03:00
2011-03-14 19:12:20 -04:00
2010-12-08 10:30:34 -08:00
2011-03-31 11:26:23 -03:00
2011-01-10 08:51:44 -08:00
2011-01-07 17:50:27 +11:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-07 17:50:23 +11:00
2010-12-07 20:16:56 +01:00
2011-03-22 17:44:05 -07:00
2011-03-05 10:56:00 +01:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-02-23 00:53:26 +00:00
2011-03-20 14:50:53 +01:00
2011-03-31 11:26:23 -03:00
2011-02-27 16:11:51 -08:00
2011-03-28 06:05:21 -04:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-30 00:37:41 +02:00
2011-03-29 14:48:19 +02:00
2011-03-31 11:26:23 -03:00
2010-12-09 20:17:07 -08:00
2011-03-31 11:26:23 -03:00
2011-03-22 04:53:54 -03:00
2011-02-17 11:12:40 -08:00
2011-01-13 17:32:31 -08:00
2011-01-13 17:32:47 -08:00
2011-02-13 16:54:24 -08:00
2011-01-24 14:45:11 +10:30
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-14 13:12:45 +00:00
2011-03-31 11:26:23 -03:00
2010-12-06 11:03:46 -08:00
2011-03-31 11:26:23 -03:00
2011-01-13 17:32:46 -08:00
2011-02-15 10:24:31 +01:00
2011-01-16 13:47:07 -05:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-23 15:29:04 -04:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-16 13:47:07 -05:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-11 15:13:26 -05:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:21 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-14 02:36:43 +00:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:18 -08:00
2011-03-23 19:46:43 -07:00
2011-03-22 17:44:03 -07:00
2011-01-07 17:50:27 +11:00
2011-01-13 08:03:19 -08:00
2011-03-31 11:26:23 -03:00
2011-03-23 07:48:42 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-02-28 18:00:31 -08:00
2011-02-21 12:53:08 -08:00
2011-03-31 11:26:23 -03:00
2011-02-02 15:28:18 +01:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-12-20 09:37:33 +01:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-24 14:45:11 +10:30
2011-03-22 17:44:05 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:24 -08:00