Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2510280pxj; Mon, 10 May 2021 04:52:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy+z4yC6CaRb6N+QfH4p4j/g2iB19/9TBiXUTcbrTC7nBapkhAl3SbndFc6ReJJfgry7250 X-Received: by 2002:a50:f113:: with SMTP id w19mr28013542edl.46.1620647460731; Mon, 10 May 2021 04:51:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620647460; cv=none; d=google.com; s=arc-20160816; b=ouk/fe8cke//yNwHTMyTpZrr46vv8vm55D6hhrIVEFJ20wZXEBPa4PnGbx6mPvJd6V N4gUx+S67X6V+FCJy8lXiPqG4pu28G9yVSX+04VFz/oq4Xlvh5Bh4IbcFD/Y95zIpckc r5HHF6Ogkfy7n3VP+CmHqLHQ5IDxx+57RewoLsiD2nWlQ5X5ZRCA7VfVsJt57s43KFSf EpihhKAsbP/Y81Mn2yee9d+19hPd6QF+ba38/RWqFT9XLtCsnUFDcFJvNa++dKKD+iE6 fHRdydq85ncoHEIml+nQlCNp3mImdUkb9vUga2Ua1deOSfAdmSrfcI8uc9ublKU6b8aw PG1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=VErkqqmjNOariaAFyhw9M3Kphl+GOikK4ijEWyZFzI0=; b=xrVrcRmNwEVTIzRUUJ8LmAmvpetzkQiS9qb/RGalB6fx9KfrVTxND/weLSpc/ovmLU UztOHzDj9yimQVh9C9RHdSvFAeFN7cRUuxm75pkHRt4rrZPPNiQHrwjUaAn0jD7JEAP1 810l6tjeAksGuhmrCsgkMb0/8bkzMYbkNBy+Ct5Mp9NfoxGlAZ+po4n+17I4rmkldhar XfSZ3CG+86xdRkT4PQewyzX4zwZn9DSBW237RhYi/ti4XynnYyMt+kiFAlIkPbTLcZ/u kwxf0x6ZrAroZ1MlcDw6mUCTT/7BO0eliDlRHyNm2S8nzOm6+ZbcZYbXO9DGDVQs7FIc Xgow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PMl1HMKs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bt12si9932200ejb.669.2021.05.10.04.50.37; Mon, 10 May 2021 04:51:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=PMl1HMKs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236856AbhEJLpy (ORCPT + 99 others); Mon, 10 May 2021 07:45:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:54598 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232425AbhEJK6P (ORCPT ); Mon, 10 May 2021 06:58:15 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 050B96194E; Mon, 10 May 2021 10:52:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620643941; bh=zisSpLmXvGj0wWL2cVNivIspnQewVlGp4zkqiChOCjM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=PMl1HMKs+oMX21taoygwNCfen2Egc6IDsYYZ0bNbgAkv15NcmAKYVtr6Kq+THXKM5 40JpnSq58+sitaPVb+pLJUtcqivHfbErETauEPF1PPjwEOVnpy0CdUEFXsZz7JrJeU 5MS6PF1n4Fpr2fWDuyXVoa7j9790GFR9tcJ42XkcePPJPVSHmkCg3/HVvgYMTdGwfY WO7VLiJ2ac+zwHTFI/A+ZVOft5oYRke8Sm0xwLnJxX+sZIKboEj9m3mVS58vJ6vzlA zEHJTMjPUUckEKNxZbB8LFQUNnOw9+WR+ea0HMegeDbjz1j9z21X7zsnjwsWiW/s4T 5TFBkqWpiggdQ== Date: Mon, 10 May 2021 12:52:19 +0200 From: Frederic Weisbecker To: Peter Zijlstra Cc: Thomas Gleixner , LKML , Marcelo Tosatti , "Rafael J . Wysocki" , Yunfeng Ye Subject: Re: [PATCH 8/8] tick/nohz: Kick only _queued_ task whose tick dependency is updated Message-ID: <20210510105219.GB97481@lothringen> References: <20210422120158.33629-1-frederic@kernel.org> <20210422120158.33629-9-frederic@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 05, 2021 at 03:57:08PM +0200, Peter Zijlstra wrote: > On Thu, Apr 22, 2021 at 02:01:58PM +0200, Frederic Weisbecker wrote: > > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > > index 98191218d891..08526227d200 100644 > > --- a/kernel/sched/core.c > > +++ b/kernel/sched/core.c > > @@ -1580,6 +1580,11 @@ static inline void uclamp_post_fork(struct task_struct *p) { } > > static inline void init_uclamp(void) { } > > #endif /* CONFIG_UCLAMP_TASK */ > > > > +bool sched_task_on_rq(struct task_struct *p) > > +{ > > + return task_on_rq_queued(p); > > +} > > + > > static inline void enqueue_task(struct rq *rq, struct task_struct *p, int flags) > > { > > if (!(flags & ENQUEUE_NOCLOCK)) > > That's a wee bit sad.. I know... But I couldn't find a better way. > > > diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c > > index ad5c3905196a..faba7881048f 100644 > > --- a/kernel/time/tick-sched.c > > +++ b/kernel/time/tick-sched.c > > @@ -324,8 +324,6 @@ void tick_nohz_full_kick_cpu(int cpu) > > > > static void tick_nohz_kick_task(struct task_struct *tsk) > > { > > - int cpu = task_cpu(tsk); > > - > > /* > > * If the task concurrently migrates to another cpu, > > * we guarantee it sees the new tick dependency upon > > @@ -340,6 +338,23 @@ static void tick_nohz_kick_task(struct task_struct *tsk) > > * tick_nohz_task_switch() smp_mb() (atomic_fetch_or()) > > * LOAD p->tick_dep_mask LOAD p->cpu > > */ > > + int cpu = task_cpu(tsk); > > + > > + /* > > + * If the task is not running, run_posix_cpu_timers > > + * has nothing to elapsed, can spare IPI in that > > + * case. > > + * > > + * activate_task() STORE p->tick_dep_mask > > + * STORE p->on_rq > > + * __schedule() (switch to task 'p') smp_mb() (atomic_fetch_or()) > > + * LOCK rq->lock LOAD p->on_rq > > + * smp_mb__after_spin_lock() > > + * tick_nohz_task_switch() > > + * LOAD p->tick_dep_mask > > + */ > > That needs indenting, the style is distinctly different from the comment > right above it. Ok, I'll fix that. > > > + if (!sched_task_on_rq(tsk)) > > + return; > > I'm too tired, but do we really need the task_cpu() load to be before > this? Nope, it should be fine to put it after. Thanks! > > > > > preempt_disable(); > > if (cpu_online(cpu)) > > -- > > 2.25.1 > >