From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752644Ab3LQWvw (ORCPT ); Tue, 17 Dec 2013 17:51:52 -0500 Received: from mail-we0-f181.google.com ([74.125.82.181]:42719 "EHLO mail-we0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752435Ab3LQWvp (ORCPT ); Tue, 17 Dec 2013 17:51:45 -0500 From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Steven Rostedt , "Paul E. McKenney" , John Stultz , Alex Shi , Kevin Hilman Subject: [PATCH 07/13] sched: Enable IPI reception on timekeeper under nohz full system Date: Tue, 17 Dec 2013 23:51:26 +0100 Message-Id: <1387320692-28460-8-git-send-email-fweisbec@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1387320692-28460-1-git-send-email-fweisbec@gmail.com> References: <1387320692-28460-1-git-send-email-fweisbec@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We need the default timekeeping CPU to be able to receive IPIs sent from full dynticks CPUs when they wake up from full system idle state. Therefore we need an entrypoint from the scheduler IPI so that the need to poll on timekeeping duty is re-evaluated from irq_exit(). In order to achieve this, lets take the scheduler IPI everytime as long as there is at least one full dynticks CPU around. Full dynticks CPUs are interested too in taking scheduler IPIs to reevaluate their tick. Signed-off-by: Frederic Weisbecker Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Steven Rostedt Cc: Paul E. McKenney Cc: John Stultz Cc: Alex Shi Cc: Kevin Hilman --- kernel/sched/core.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index e85cda2..f46a7bc 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1502,9 +1502,9 @@ void scheduler_ipi(void) if (tif_need_resched()) set_preempt_need_resched(); - if (llist_empty(&this_rq()->wake_list) - && !tick_nohz_full_cpu(smp_processor_id()) - && !got_nohz_idle_kick()) + if (llist_empty(&this_rq()->wake_list) && + !tick_nohz_full_enabled() && + !got_nohz_idle_kick()) return; /* -- 1.8.3.1