diff options
author | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2019-12-20 00:44:52 +0300 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2020-06-25 14:45:43 +0300 |
commit | 590d69796346353878b275c5512c664e3f875f24 (patch) | |
tree | 3f067ae43ac90ed33744b69de6ecd8aa8b6ebd9d /kernel/sched/stop_task.c | |
parent | 87e867b4269f29dac8190bca13912d08163a277f (diff) | |
download | linux-590d69796346353878b275c5512c664e3f875f24.tar.xz |
sched: Force the address order of each sched class descriptor
In order to make a micro optimization in pick_next_task(), the order of the
sched class descriptor address must be in the same order as their priority
to each other. That is:
&idle_sched_class < &fair_sched_class < &rt_sched_class <
&dl_sched_class < &stop_sched_class
In order to guarantee this order of the sched class descriptors, add each
one into their own data section and force the order in the linker script.
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/157675913272.349305.8936736338884044103.stgit@localhost.localdomain
Diffstat (limited to 'kernel/sched/stop_task.c')
-rw-r--r-- | kernel/sched/stop_task.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c index 3e50a6a8f1e5..f4bbd54caae0 100644 --- a/kernel/sched/stop_task.c +++ b/kernel/sched/stop_task.c @@ -109,7 +109,8 @@ static void update_curr_stop(struct rq *rq) /* * Simple, special scheduling class for the per-CPU stop tasks: */ -const struct sched_class stop_sched_class = { +const struct sched_class stop_sched_class + __attribute__((section("__stop_sched_class"))) = { .next = &dl_sched_class, .enqueue_task = enqueue_task_stop, |