Re: [RFC] sched,livepatch: call klp_try_switch_task in __cond_resched

From: Rik van Riel
Date: Tue May 10 2022 - 20:35:21 EST


On Tue, 2022-05-10 at 23:57 +0000, Song Liu wrote:
>
> So, if we come back to the same question: is this a bug (or a
> suboptimal
> behavior that worth fixing)? If so, we are open to any solution that
> would also help PREEMPT and/or non-x86 arches.
>
Using the preempt notifiers during KLP transition should
work equally well for PREEMPT and !PREEMPT. It also does
not insert any additional code into the scheduler while
there is no KLP transition going on.

> Lastly, maybe a really naive question: does the following also helps
> PREEMPT=y configurations?
>

>  static void __sched notrace preempt_schedule_common(void)
>  {
> +       if (unlikely(klp_patch_pending(current)))
> +               klp_try_switch_task(current);
> +
>         do {
>

While this would almost certainly speed up KLP
transitions, it would also slow down schedule
all the time, even while there is no KLP transition
going on.

That does not seem like a worthwhile tradeoff.