]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
context_tracking: Only define schedule_user() on !HAVE_CONTEXT_TRACKING_OFFSTACK...
authorFrederic Weisbecker <frederic@kernel.org>
Tue, 17 Nov 2020 15:16:36 +0000 (16:16 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 19 Nov 2020 10:25:42 +0000 (11:25 +0100)
schedule_user() was traditionally used by the entry code's tail to
preempt userspace after the call to user_enter(). Indeed the call to
user_enter() used to be performed upon syscall exit slow path which was
right before the last opportunity to schedule() while resuming to
userspace. The context tracking state had to be saved on the task stack
and set back to CONTEXT_KERNEL temporarily in order to safely switch to
another task.

Only a few archs use it now (namely sparc64 and powerpc64) and those
implementing HAVE_CONTEXT_TRACKING_OFFSTACK definetly can't rely on it.

Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20201117151637.259084-5-frederic@kernel.org
kernel/sched/core.c

index c23d7cb5aee343eee15cd6b3a4f7c1d172250575..44426e5acde27af94f55dc7967efa17df8a3af95 100644 (file)
@@ -4631,7 +4631,7 @@ void __sched schedule_idle(void)
        } while (need_resched());
 }
 
-#ifdef CONFIG_CONTEXT_TRACKING
+#if defined(CONFIG_CONTEXT_TRACKING) && !defined(CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK)
 asmlinkage __visible void __sched schedule_user(void)
 {
        /*