diff options
-rw-r--r-- | kernel/sched/core.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 3bdf01b494fe..feb54965e16f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -684,10 +684,16 @@ static void wake_up_idle_cpu(int cpu) | |||
684 | 684 | ||
685 | static bool wake_up_full_nohz_cpu(int cpu) | 685 | static bool wake_up_full_nohz_cpu(int cpu) |
686 | { | 686 | { |
687 | /* | ||
688 | * We just need the target to call irq_exit() and re-evaluate | ||
689 | * the next tick. The nohz full kick at least implies that. | ||
690 | * If needed we can still optimize that later with an | ||
691 | * empty IRQ. | ||
692 | */ | ||
687 | if (tick_nohz_full_cpu(cpu)) { | 693 | if (tick_nohz_full_cpu(cpu)) { |
688 | if (cpu != smp_processor_id() || | 694 | if (cpu != smp_processor_id() || |
689 | tick_nohz_tick_stopped()) | 695 | tick_nohz_tick_stopped()) |
690 | smp_send_reschedule(cpu); | 696 | tick_nohz_full_kick_cpu(cpu); |
691 | return true; | 697 | return true; |
692 | } | 698 | } |
693 | 699 | ||