Received: by 10.223.176.46 with SMTP id f43csp194659wra; Thu, 18 Jan 2018 16:05:28 -0800 (PST) X-Google-Smtp-Source: ACJfBosKM+kOppoSw+GwMvUNlquOpNtp5rghJTSZ8R0eqlhI/N7qfdG7Ch2JMhEohrC3qVnxjNSE X-Received: by 10.99.110.78 with SMTP id j75mr37222053pgc.371.1516320328392; Thu, 18 Jan 2018 16:05:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516320328; cv=none; d=google.com; s=arc-20160816; b=eleTDCueTBPjPAFrSsU+obXa3PhElExaF/VJBtKSHF6o2Ws0cbMoXnH6cM678L+nCN aQUrZDPbeEfhnXuvxvXwKA0YX6I59r9pEbHX+aTdBQnyMXY3yrgvs46rglrAekuj+qj8 +QRr7KdXKy8Xbv+1KGRMlHFmYN0h/C0saB9ys4OF/qGT8q7PFXeBPctGX3bVpGEpk4E2 TMsP5zju9gxQ8SuMFmir8HFE03DEwR3rdvmas1sIJMV6yYUxOMk9pNc0YmTPQPgfIfi9 9cRsEKZKCvvu5uSKcHYfMjz3NpnB8EbBTi0iC8dLonCIjJrwX8x3f/MjxDWO16VIHBNo k4vQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dmarc-filter:arc-authentication-results; bh=XRT0yJLxz32XMZUCu6ZoAyFEZYwq7aeIbxbXfefNrOw=; b=gzd8XvGKm1OSB4Vx87rK6pCjDgn1zIhoX9Nq9t1D6MYknjj0eXq6Mttk8wh/u/PBLm aGwUSSx8YCdEIoNq1Kt4yEooMgWct9T0LAg9uREqy0+wWWxW4Law0bIW+ShQBKnDGdIp WpbYaUPH52aAyH0GA3Xy+bPaDIBSliF6MpcyGYtItcXZEEUM1retzFunacY7aZpxYVlD HJp2mSFFlPHZuPfgLHMLOLtlde6+/9hS3rxpggcYjTURAxJqNS6+dSh7g/96vKadKwRJ fyPvOKBCDMiryaAdBtItmYFNPluL08BDIs9XivWlS81yVl+Oim4+p3veZrricMwbefH7 nqsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bg8-v6si323954plb.748.2018.01.18.16.05.14; Thu, 18 Jan 2018 16:05:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755226AbeASADS (ORCPT + 99 others); Thu, 18 Jan 2018 19:03:18 -0500 Received: from mail.kernel.org ([198.145.29.99]:39076 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754796AbeASACl (ORCPT ); Thu, 18 Jan 2018 19:02:41 -0500 Received: from localhost.localdomain (i16-les03-th2-31-37-47-191.sfr.lns.abo.bbox.fr [31.37.47.191]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 748622175B; Fri, 19 Jan 2018 00:02:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 748622175B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=frederic@kernel.org From: Frederic Weisbecker To: Ingo Molnar Cc: LKML , Frederic Weisbecker , Peter Zijlstra , Chris Metcalf , Thomas Gleixner , Luiz Capitulino , Christoph Lameter , "Paul E . McKenney" , Wanpeng Li , Mike Galbraith , Rik van Riel Subject: [PATCH 2/6] nohz: Allow to check if remote CPU tick is stopped Date: Fri, 19 Jan 2018 01:02:16 +0100 Message-Id: <1516320140-13189-3-git-send-email-frederic@kernel.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1516320140-13189-1-git-send-email-frederic@kernel.org> References: <1516320140-13189-1-git-send-email-frederic@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This check is racy but provides a good heuristic to determine whether a CPU may need a remote tick or not. Signed-off-by: Frederic Weisbecker Cc: Chris Metcalf Cc: Christoph Lameter Cc: Luiz Capitulino Cc: Mike Galbraith Cc: Paul E. McKenney Cc: Peter Zijlstra Cc: Rik van Riel Cc: Thomas Gleixner Cc: Wanpeng Li Cc: Ingo Molnar --- include/linux/tick.h | 2 ++ kernel/time/tick-sched.c | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/include/linux/tick.h b/include/linux/tick.h index 7cc3592..944c829 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h @@ -114,6 +114,7 @@ enum tick_dep_bits { #ifdef CONFIG_NO_HZ_COMMON extern bool tick_nohz_enabled; extern int tick_nohz_tick_stopped(void); +extern int tick_nohz_tick_stopped_cpu(int cpu); extern void tick_nohz_idle_enter(void); extern void tick_nohz_idle_exit(void); extern void tick_nohz_irq_exit(void); @@ -125,6 +126,7 @@ extern u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time); #else /* !CONFIG_NO_HZ_COMMON */ #define tick_nohz_enabled (0) static inline int tick_nohz_tick_stopped(void) { return 0; } +static inline int tick_nohz_tick_stopped_cpu(int cpu) { return 0; } static inline void tick_nohz_idle_enter(void) { } static inline void tick_nohz_idle_exit(void) { } diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index f7cc7ab..97c4317 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -486,6 +486,13 @@ int tick_nohz_tick_stopped(void) return __this_cpu_read(tick_cpu_sched.tick_stopped); } +int tick_nohz_tick_stopped_cpu(int cpu) +{ + struct tick_sched *ts = per_cpu_ptr(&tick_cpu_sched, cpu); + + return ts->tick_stopped; +} + /** * tick_nohz_update_jiffies - update jiffies when idle was interrupted * -- 2.7.4