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

Commit 0e3900e6 authored by Rusty Russell's avatar Rusty Russell Committed by Ingo Molnar
Browse files

sched: convert local_cpu_mask to cpumask_var_t.



Impact: (future) size reduction for large NR_CPUS.

Dynamically allocating cpumasks (when CONFIG_CPUMASK_OFFSTACK) saves
space for small nr_cpu_ids but big CONFIG_NR_CPUS.  cpumask_var_t
is just a struct cpumask for !CONFIG_CPUMASK_OFFSTACK.

Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 24600ce8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8018,6 +8018,7 @@ void __init sched_init_smp(void)
	free_cpumask_var(non_isolated_cpus);

	alloc_cpumask_var(&fallback_doms, GFP_KERNEL);
	init_sched_rt_class();
}
#else
void __init sched_init_smp(void)
+11 −2
Original line number Diff line number Diff line
@@ -962,7 +962,7 @@ static struct task_struct *pick_next_highest_task_rt(struct rq *rq, int cpu)
	return next;
}

static DEFINE_PER_CPU(cpumask_t, local_cpu_mask);
static DEFINE_PER_CPU(cpumask_var_t, local_cpu_mask);

static inline int pick_optimal_cpu(int this_cpu, cpumask_t *mask)
{
@@ -982,7 +982,7 @@ static inline int pick_optimal_cpu(int this_cpu, cpumask_t *mask)
static int find_lowest_rq(struct task_struct *task)
{
	struct sched_domain *sd;
	cpumask_t *lowest_mask = &__get_cpu_var(local_cpu_mask);
	cpumask_t *lowest_mask = __get_cpu_var(local_cpu_mask);
	int this_cpu = smp_processor_id();
	int cpu      = task_cpu(task);

@@ -1551,3 +1551,12 @@ static void print_rt_stats(struct seq_file *m, int cpu)
	rcu_read_unlock();
}
#endif /* CONFIG_SCHED_DEBUG */

/* Note that this is never called for !SMP, but that's OK. */
static inline void init_sched_rt_class(void)
{
	unsigned int i;

	for_each_possible_cpu(i)
		alloc_cpumask_var(&per_cpu(local_cpu_mask, i), GFP_KERNEL);
}