Received: by 10.192.165.156 with SMTP id m28csp535008imm; Fri, 13 Apr 2018 03:37:27 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+bYE4d0EsQrVx94QSrJST55YarWR9D83au0CV1PBCULVP5I/Q8jzkUykDu7LTWO2pafzoS X-Received: by 10.99.64.131 with SMTP id n125mr3663334pga.303.1523615847238; Fri, 13 Apr 2018 03:37:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523615847; cv=none; d=google.com; s=arc-20160816; b=InCXU0wLuArDFOiMmLOYvojycwe91NBMvdBIxGfy9A4tCCP5enHYZoDvpku6tCMfhQ j5M/UAgwZDfu6HHmGLMMGAWUbfdQ2kJNo7tFg8sya/njU1Fe96FkiavuURa353cJgIsW sG6zB3l5KtXSjRikPxG4tucbrb4Y2bQ7CTsqR9B/1d4w4EguYwU6xYD8ESTK3Yx4WtAZ 6/rRSIGF/Fqq9HrFeLv+C7AF1qkH4JzmGq9ml+xF07qw5Em0ULKSqFfA+284SY8qcgnd Le5kJl23FvogvH9owCjrkQV+r4KfwrxO9gk+Bu4flHo3vPyYDtZitalbu0vpIINNSJjF 1zeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=VnVmcLpyY4+CdFGGrTDwD3TWW9ebdCDKfF7is3fnKVU=; b=MFV0nISr07OIk8GEFKLbrrBBOcJhaNFluhr3beW/tlYELBB7IFvXddb6wY8C3gpIcs vwTP+wmaLT1P/iZrCoLXdRrYDNI2Ne7dzh5t+DUF08Z7khGsh1L87uUNIz+rz/bvBOMk h06ljhsBxTt1jJ3sJyEa6Y/JKa9yjImibxuiz/yzI5eJ1nZl2PJEszpIqRJGfc+colst I1lwDzHe8fJ8OzxEQz3wiFQZi04GnE4J1iE1fFHW84EWhTLXm+MsvQwrdnK0hFXpA9Lo TanFkSxJiZwgD+pFHgz3hfkGDiIpQNw+jL/PnQz6vKdEzun2YApP6FsY+uiVvA4dCDWn HSOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=eVfCsgjF; 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 g130si3826431pgc.225.2018.04.13.03.37.11; Fri, 13 Apr 2018 03:37:27 -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; dkim=fail header.i=@gmail.com header.s=20161025 header.b=eVfCsgjF; 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 S1754075AbeDMIro (ORCPT + 99 others); Fri, 13 Apr 2018 04:47:44 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:37904 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751041AbeDMIrl (ORCPT ); Fri, 13 Apr 2018 04:47:41 -0400 Received: by mail-oi0-f66.google.com with SMTP id c3-v6so7710484oib.5; Fri, 13 Apr 2018 01:47:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=VnVmcLpyY4+CdFGGrTDwD3TWW9ebdCDKfF7is3fnKVU=; b=eVfCsgjFzlo/vjSGg4hAMOOwDipW7vjLAhATkmApbRfxVn8r8LDySTajf91YI+LMoN EpTooXwGBgmPT9p+IuDSmi6QtEgf8Uy5ti+G5m4zzft50yS8oFSiIgq2icu+zgV0D4w9 K2XilVGEFLmX8pCLHwHD4gdCKZChrKPWpTRLMnim/yE7xtnV+1viQdVhqTTGA5QGSYSE YFEQOPE5rdLxdVkH16VVgCPtUq5oyReExXx5A/WYBHRHY7t6hTUcTNqhVNVrMDtXIJBL M9KIp8VkMjijhDz246F9AGR1u13wQ44ukmDHp57e7qY70J7mEmTw0C22/p+N+SB+8/EE PJMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=VnVmcLpyY4+CdFGGrTDwD3TWW9ebdCDKfF7is3fnKVU=; b=sO7NuC6Zueu6yVxt1hBzvudWMyqdNZTD8zOaB//lRK2QlIOG031AfN2VHJZW0XGVOJ gzuVfNniq5aq5LMmh08j2TLXKvMXj83qIvfHafXSvaeZCnb9jo448xRBdqWCfa8/rs8A IEJie9ydgzx2E+a2iLyna3tm4cXK3c22+2VNSE75YIfbAsGy9wa019YLhvKIRuApi4XS 3DKsBfv7Nh7aDwBQxe9jZEg5IYknYXjcBTKv3woyKHWvAg49TgWlPiIJbLghZl1CFE7Q VJu0h61lTQx/M2oaM09pPtoEyHNy5R7zgq6EcFlFkdv7Uw65EYjjV0h9612veXY9dTVt brgQ== X-Gm-Message-State: ALQs6tCVbPGEAmqlVUE/v6YQTrw++rOAXKSCKOjwYgL1idrVV2BJePN0 4zsi7b63ijCPw9QiW011Urhb/OtyZbnOIlhmRc0= X-Received: by 2002:aca:913:: with SMTP id 19-v6mr7453080oij.358.1523609260341; Fri, 13 Apr 2018 01:47:40 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a9d:9f7:0:0:0:0:0 with HTTP; Fri, 13 Apr 2018 01:47:39 -0700 (PDT) In-Reply-To: <1523531671-27491-7-git-send-email-ulf.hansson@linaro.org> References: <1523531671-27491-1-git-send-email-ulf.hansson@linaro.org> <1523531671-27491-7-git-send-email-ulf.hansson@linaro.org> From: "Rafael J. Wysocki" Date: Fri, 13 Apr 2018 10:47:39 +0200 X-Google-Sender-Auth: eeC4v3yY3HLLj4YurzTS1YeQSxc Message-ID: Subject: Re: [PATCH v7 06/26] timer: Export next wakeup time of a CPU To: Ulf Hansson Cc: "Rafael J . Wysocki" , Sudeep Holla , Lorenzo Pieralisi , Mark Rutland , Linux PM , Kevin Hilman , Lina Iyer , Lina Iyer , Rob Herring , Daniel Lezcano , Thomas Gleixner , Vincent Guittot , Stephen Boyd , Juri Lelli , Geert Uytterhoeven , linux-arm-kernel@lists.infradead.org, linux-arm-msm , Linux Kernel Mailing List , Frederic Weisbecker , Ingo Molnar Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 12, 2018 at 1:14 PM, Ulf Hansson wrote: > From: Lina Iyer > > Knowing the sleep duration of CPUs, is known to be needed while selecting > the most energy efficient idle state for a CPU or a group of CPUs. > > However, to be able to compute the sleep duration, we need to know at what > time the next expected wakeup is for the CPU. Therefore, let's export this > information via a new function, tick_nohz_get_next_wakeup(). Following > changes make use of it. > > Cc: Thomas Gleixner > Cc: Daniel Lezcano > Cc: Lina Iyer > Cc: Frederic Weisbecker > Cc: Ingo Molnar > Signed-off-by: Lina Iyer > Co-developed-by: Ulf Hansson > Signed-off-by: Ulf Hansson > --- > include/linux/tick.h | 10 ++++++++++ > kernel/time/tick-sched.c | 11 +++++++++++ > 2 files changed, 21 insertions(+) > > diff --git a/include/linux/tick.h b/include/linux/tick.h > index 389aa25..d341811 100644 > --- a/include/linux/tick.h > +++ b/include/linux/tick.h > @@ -125,6 +125,7 @@ extern bool tick_nohz_idle_got_tick(void); > extern ktime_t tick_nohz_get_sleep_length(ktime_t *delta_next); > extern unsigned long tick_nohz_get_idle_calls(void); > extern unsigned long tick_nohz_get_idle_calls_cpu(int cpu); > +extern ktime_t tick_nohz_get_next_wakeup(int cpu); > extern u64 get_cpu_idle_time_us(int cpu, u64 *last_update_time); > extern u64 get_cpu_iowait_time_us(int cpu, u64 *last_update_time); > > @@ -151,6 +152,15 @@ static inline ktime_t tick_nohz_get_sleep_length(ktime_t *delta_next) > *delta_next = TICK_NSEC; > return *delta_next; > } > + > +static inline ktime_t tick_nohz_get_next_wakeup(int cpu) > +{ > + ktime_t t; > + > + /* Next wake up is the tick period, assume it starts now */ > + return ktime_add(tick_nohz_get_sleep_length(&t), ktime_get()); > +} Well, given that tick_nohz_get_sleep_length() is just the above in this case, wouldn't it be simpler to return ktime_add(ktime_get(), TICK_NSEC) from here? > + > static inline u64 get_cpu_idle_time_us(int cpu, u64 *unused) { return -1; } > static inline u64 get_cpu_iowait_time_us(int cpu, u64 *unused) { return -1; } > > diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c > index 646645e..08db7f3 100644 > --- a/kernel/time/tick-sched.c > +++ b/kernel/time/tick-sched.c > @@ -1098,6 +1098,17 @@ unsigned long tick_nohz_get_idle_calls(void) > return ts->idle_calls; > } > > +/** > + * tick_nohz_get_next_wakeup - return the next wake up of the CPU > + */ > +ktime_t tick_nohz_get_next_wakeup(int cpu) > +{ > + struct clock_event_device *dev = > + per_cpu(tick_cpu_device.evtdev, cpu); I would avoid breaking the line, honestly. If you really really want to avoid going above the 80 chars line length limit, why don't you do struct clock_event_device *dev; dev = per_cpu(tick_cpu_device.evtdev, cpu); > + > + return dev->next_event; > +} > + > static void tick_nohz_account_idle_ticks(struct tick_sched *ts) > { > #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE > --