On Wed, Jul 22, 2020 at 02:57:33PM +0000, Alex Belits wrote: > From: Yuri Norov <ynorov@xxxxxxxxxxx> > > For nohz_full CPUs the desirable behavior is to receive interrupts > generated by tick_nohz_full_kick_cpu(). But for hard isolation it's > obviously not desirable because it breaks isolation. > > This patch adds check for it. > > Signed-off-by: Yuri Norov <ynorov@xxxxxxxxxxx> > [abelits@xxxxxxxxxxx: updated, only exclude CPUs running isolated tasks] > Signed-off-by: Alex Belits <abelits@xxxxxxxxxxx> > --- > kernel/time/tick-sched.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c > index 6e4cd8459f05..2f82a6daf8fc 100644 > --- a/kernel/time/tick-sched.c > +++ b/kernel/time/tick-sched.c > @@ -20,6 +20,7 @@ > #include <linux/sched/clock.h> > #include <linux/sched/stat.h> > #include <linux/sched/nohz.h> > +#include <linux/isolation.h> > #include <linux/module.h> > #include <linux/irq_work.h> > #include <linux/posix-timers.h> > @@ -268,7 +269,8 @@ static void tick_nohz_full_kick(void) > */ > void tick_nohz_full_kick_cpu(int cpu) > { > - if (!tick_nohz_full_cpu(cpu)) > + smp_rmb(); What is it ordering? > + if (!tick_nohz_full_cpu(cpu) || task_isolation_on_cpu(cpu)) > return; You can't simply ignore an IPI. There is always a reason for a nohz_full CPU to be kicked. Something triggered a tick dependency. It can be posix cpu timers for example, or anything. > > irq_work_queue_on(&per_cpu(nohz_full_kick_work, cpu), cpu); > -- > 2.26.2 >