Received: by 10.223.164.221 with SMTP id h29csp41264wrb; Fri, 3 Nov 2017 10:08:44 -0700 (PDT) X-Google-Smtp-Source: ABhQp+QdaenffoRKqgKR6gAXLTU9IEK/IMWXfoc/wU63Lxdo1QnzrpU3Hu97TJdocZGXXBiSVI3t X-Received: by 10.159.247.12 with SMTP id d12mr7147998pls.265.1509728924098; Fri, 03 Nov 2017 10:08:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1509728924; cv=none; d=google.com; s=arc-20160816; b=PzQ7H/QhoZ8EVKhzbGVunLaaRmhRCLSyrJi9mV05KJFHOabjIqV8AEc+bWOfxic4yC ljpLebgKHD+cKr/+VMCb6QdUGyHVslsNazWa3heh0C1vlPdSy0QQKO3QULZCG6RiLYR9 qITWyyURNutMYDYwSeQ4pb5Re/VG4oYLSjElCZmfTfS9bHy1b7S19dszs5tmf7otouCV qEwFaWPfR0GFx1p2+3edaTBrQ2azO6UlbmzEeXiLcqvf+esfba/wyevkAQRTCgxLfVOB 3cPGfpGBAgueCyXiyTd7gIVKBpRZ+aWdU/qpnT5XwnaCoeXWKvblmoaWPNlYoumxi+x8 Af4g== 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:arc-authentication-results; bh=D0L6tqzvTnBHfQ2eqhUghhG3ozb4Lel8rbDl1HVR4us=; b=P7FAnUYVf/i/l10g9dYsw+lbrR+zEdYHVm22H2jeaDKyNaZrpGfI1482K2WX6cDlC8 qkqw8Mi4wrb0Rya3TsKjmmI6e36+b+Qlm9UtqA+csfvwfCQMdWmq359yYtJZmh3FPZAe wPmZFuegVvi267XGSRHIt+TYhJy7c/hPp9TunQ4xHd/jG7204yHLUQlTj+5+VIUrZD0r Ggnlcv2Rd3No75vXMK7I3467C+jbI3DyeZfiazunITZFteHAvECtyWLOS5EnnzNWkY1h 6U260cQbhl8mXhMmT3+5J8nYA7TOrUOEG+3spr742MEDL5BZqTJn+MZ09P4+M4Kh/MNE 8bkw== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o21si6536437pgc.7.2017.11.03.10.08.31; Fri, 03 Nov 2017 10:08:44 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mellanox.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756285AbdKCRFQ (ORCPT + 93 others); Fri, 3 Nov 2017 13:05:16 -0400 Received: from mail-il-dmz.mellanox.com ([193.47.165.129]:56242 "EHLO mellanox.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756247AbdKCRFK (ORCPT ); Fri, 3 Nov 2017 13:05:10 -0400 Received: from Internal Mail-Server by MTLPINE1 (envelope-from cmetcalf@mellanox.com) with ESMTPS (AES256-SHA encrypted); 3 Nov 2017 19:05:07 +0200 Received: from ld-1.internal.tilera.com (ld-1.internal.tilera.com [10.15.7.41]) by mtbu-labmail01.internal.tilera.com (8.14.4/8.14.4) with ESMTP id vA3H55T6008340; Fri, 3 Nov 2017 13:05:05 -0400 Received: (from cmetcalf@localhost) by ld-1.internal.tilera.com (8.14.7/8.13.8/Submit) id vA3H55FK010519; Fri, 3 Nov 2017 13:05:05 -0400 From: Chris Metcalf To: Steven Rostedt , Ingo Molnar , Peter Zijlstra , Andrew Morton , Rik van Riel , Tejun Heo , Frederic Weisbecker , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , Michal Hocko , linux-kernel@vger.kernel.org Cc: Chris Metcalf Subject: [PATCH v16 05/13] Add try_stop_full_tick() API for NO_HZ_FULL Date: Fri, 3 Nov 2017 13:04:44 -0400 Message-Id: <1509728692-10460-6-git-send-email-cmetcalf@mellanox.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1509728692-10460-1-git-send-email-cmetcalf@mellanox.com> References: <1509728692-10460-1-git-send-email-cmetcalf@mellanox.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This API checks to see if the scheduler tick can be stopped, and if so, stops it and returns 0; otherwise it returns an error. This is intended for use with task isolation, where we will want to be able to stop the tick synchronously when returning to userspace. Signed-off-by: Chris Metcalf --- include/linux/tick.h | 1 + kernel/time/tick-sched.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/linux/tick.h b/include/linux/tick.h index fe01e68bf520..078ff2464b00 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h @@ -234,6 +234,7 @@ static inline void tick_dep_clear_signal(struct signal_struct *signal, extern void tick_nohz_full_kick_cpu(int cpu); extern void __tick_nohz_task_switch(void); +extern int try_stop_full_tick(void); #else static inline int housekeeping_any_cpu(void) { diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index c7a899c5ce64..c026145eba2f 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -861,6 +861,24 @@ static void tick_nohz_full_update_tick(struct tick_sched *ts) #endif } +#ifdef CONFIG_TASK_ISOLATION +int try_stop_full_tick(void) +{ + int cpu = smp_processor_id(); + struct tick_sched *ts = this_cpu_ptr(&tick_cpu_sched); + + /* For an unstable clock, we should return a permanent error code. */ + if (atomic_read(&tick_dep_mask) & TICK_DEP_MASK_CLOCK_UNSTABLE) + return -EINVAL; + + if (!can_stop_full_tick(cpu, ts)) + return -EAGAIN; + + tick_nohz_stop_sched_tick(ts, ktime_get(), cpu); + return 0; +} +#endif + static bool can_stop_idle_tick(int cpu, struct tick_sched *ts) { /* -- 2.1.2 From 1583349781236557232@xxx Mon Nov 06 20:27:00 +0000 2017 X-GM-THRID: 1582821193795495794 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread