sched,perf,kvm: Fix preemption condition
authorPeter Zijlstra <peterz@infradead.org>
Fri, 11 Jun 2021 08:28:13 +0000 (10:28 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 18 Jun 2021 09:43:07 +0000 (11:43 +0200)
commit3ba9f93b12361e005dd65fcc8072b42e3189f4f4
treeff7b3224fb4f03ea17ac76b0d1ad0c2431d0a7ab
parentb03fbd4ff24c5f075e58eb19261d5f8b3e40d7c6
sched,perf,kvm: Fix preemption condition

When ran from the sched-out path (preempt_notifier or perf_event),
p->state is irrelevant to determine preemption. You can get preempted
with !task_is_running() just fine.

The right indicator for preemption is if the task is still on the
runqueue in the sched-out path.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Link: https://lore.kernel.org/r/20210611082838.285099381@infradead.org
kernel/events/core.c
virt/kvm/kvm_main.c