lkml.org 
[lkml]   [2021]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] kprobes: Fix to delay the kprobes jump optimization
    On 2021-02-19 10:33:36 [-0800], Paul E. McKenney wrote:
    > For definiteness, here is the first part of the change, posted earlier.
    > The commit log needs to be updated. I will post the change that keeps
    > the tick going as a reply to this email.

    > diff --git a/kernel/softirq.c b/kernel/softirq.c
    > index 9d71046..ba78e63 100644
    > --- a/kernel/softirq.c
    > +++ b/kernel/softirq.c
    > @@ -209,7 +209,7 @@ static inline void invoke_softirq(void)
    > if (ksoftirqd_running(local_softirq_pending()))
    > return;
    >
    > - if (!force_irqthreads) {
    > + if (!force_irqthreads || !__this_cpu_read(ksoftirqd)) {
    > #ifdef CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK
    > /*
    > * We can safely execute softirq on the current stack if
    > @@ -358,8 +358,8 @@ asmlinkage __visible void __softirq_entry __do_softirq(void)
    >
    > pending = local_softirq_pending();
    > if (pending) {
    > - if (time_before(jiffies, end) && !need_resched() &&
    > - --max_restart)
    > + if (!__this_cpu_read(ksoftirqd) ||
    > + (time_before(jiffies, end) && !need_resched() && --max_restart))
    > goto restart;

    This is hunk shouldn't be needed. The reason for it is probably that the
    following wakeup_softirqd() would avoid further invoke_softirq()
    performing the actual softirq work. It would leave early due to
    ksoftirqd_running(). Unless I'm wrong, any raise_softirq() invocation
    outside of an interrupt would do the same.

    I would like PeterZ / tglx to comment on this one. Basically I'm not
    sure if it is okay to expect softirqs beeing served and waited on that
    early in the boot.

    > wakeup_softirqd();

    Sebastian

    \
     
     \ /
      Last update: 2021-02-22 11:22    [W:2.348 / U:0.512 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site