Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60495e77 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

sched: Dynamic sched_domain::level



Remove the SD_LV_ enum and use dynamic level assignments.

Signed-off-by: default avatarPeter 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.969433965@chello.nl


Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 54ab4ff4
Loading
Loading
Loading
Loading
+3 −20
Original line number Diff line number Diff line
@@ -892,25 +892,6 @@ static inline struct cpumask *sched_group_cpus(struct sched_group *sg)
	return to_cpumask(sg->cpumask);
}

enum sched_domain_level {
	SD_LV_NONE = 0,
#ifdef CONFIG_SCHED_SMT
	SD_LV_SIBLING,
#endif
#ifdef CONFIG_SCHED_MC
	SD_LV_MC,
#endif
#ifdef CONFIG_SCHED_BOOK
	SD_LV_BOOK,
#endif
	SD_LV_CPU,
#ifdef CONFIG_NUMA
	SD_LV_NODE,
	SD_LV_ALLNODES,
#endif
	SD_LV_MAX
};

struct sched_domain_attr {
	int relax_domain_level;
};
@@ -919,6 +900,8 @@ struct sched_domain_attr {
	.relax_domain_level = -1,			\
}

extern int sched_domain_level_max;

struct sched_domain {
	/* These fields must be setup */
	struct sched_domain *parent;	/* top domain must be null terminated */
@@ -936,7 +919,7 @@ struct sched_domain {
	unsigned int forkexec_idx;
	unsigned int smt_gain;
	int flags;			/* See SD_* */
	enum sched_domain_level level;
	int level;

	/* Runtime fields. */
	unsigned long last_balance;	/* init to jiffies. units in jiffies */
+1 −1
Original line number Diff line number Diff line
@@ -1159,7 +1159,7 @@ int current_cpuset_is_being_rebound(void)
static int update_relax_domain_level(struct cpuset *cs, s64 val)
{
#ifdef CONFIG_SMP
	if (val < -1 || val >= SD_LV_MAX)
	if (val < -1 || val >= sched_domain_level_max)
		return -EINVAL;
#endif

+6 −3
Original line number Diff line number Diff line
@@ -6966,7 +6966,6 @@ sd_init_##type(struct sched_domain_topology_level *tl, int cpu) \
{									\
	struct sched_domain *sd = *per_cpu_ptr(tl->data.sd, cpu);	\
	*sd = SD_##type##_INIT;						\
	sd->level = SD_LV_##type;					\
	SD_INIT_NAME(sd, type);						\
	sd->private = &tl->data;					\
	return sd;							\
@@ -6988,13 +6987,14 @@ SD_INIT_FUNC(CPU)
#endif

static int default_relax_domain_level = -1;
int sched_domain_level_max;

static int __init setup_relax_domain_level(char *str)
{
	unsigned long val;

	val = simple_strtoul(str, NULL, 0);
	if (val < SD_LV_MAX)
	if (val < sched_domain_level_max)
		default_relax_domain_level = val;

	return 1;
@@ -7173,8 +7173,11 @@ struct sched_domain *build_sched_domain(struct sched_domain_topology_level *tl,

	set_domain_attribute(sd, attr);
	cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu));
	if (child)
	if (child) {
		sd->level = child->level + 1;
		sched_domain_level_max = max(sched_domain_level_max, sd->level);
		child->parent = sd;
	}
	sd->child = child;

	return sd;