Received: by 2002:a05:6358:7058:b0:131:369:b2a3 with SMTP id 24csp2380967rwp; Fri, 14 Jul 2023 05:29:09 -0700 (PDT) X-Google-Smtp-Source: APBJJlHz+BZu7GOkirI+0BjAONvsMsLipSh31LcK/ufh3LblY36xeP+g6bzNoUAWETTuxHr0bG4f X-Received: by 2002:a17:902:d2c5:b0:1b7:d0b3:1678 with SMTP id n5-20020a170902d2c500b001b7d0b31678mr3490475plc.17.1689337749130; Fri, 14 Jul 2023 05:29:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689337749; cv=none; d=google.com; s=arc-20160816; b=de7vnqk2yGhicG5rTY3y0xQ98cFNVurApVmEMXHifrG6+VtpxFoklWC9gAKFREdp+9 Ci0qCpExXFwTo8S4OQMPOCUoVSQDveA2yWpharTj0wSDwV93isPuVp1MU8eYCnOqAg7D 1dXIe3NEIcrCK7WjwyikbS/9K9/nlh+jIZ0DhH+qFeXX7G9SP2ir3iPysHWb6URTxj0K w94Ca50KiSp4mtCpVfWpGsCtWEE+Nwr6D+NE/wQmUmN4tR/hr4GX6LsxY5ARaGQkiGW/ a44wrLDvoEVMsrgMs3hHS6gwUEvG4v1YgRrjjHuC8EqtNrPjW5Mw9am8Zck3HP6diHys vnHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=PU/dDkGlaP+BQOkYqUFvlOR5a15Zkn2dL0CNUDn9lZE=; fh=vNYwn+erbeWwD/B9CW78N3vavRIPBl+xONykG2Vq2so=; b=DU++8RtuZvaZMR27ML6JPO7nV77Cmvqj0Jj6MPE66tXk2HStuekrYXysVb304AvaFL VzNKrE2M9cddqQQach2k6NlshzcYOjHA0/u4Tn5re/K2iI0lqKPYy/efRl0yuxnyLBCw 1ETYx5RMS3J8gccv9+90HFYHxzAi//1ncThOmaLn3rj0MZPRRcyqB31vs14DMmTu5nHe BiiyiBhMigFAgKvSbQcQBD/oFr+ZH3cNhNUuI91bRClzFzapxgzIcmMUmJ5HDh2uBHBo flaARkCWYtYp0Ga9xTfUu0t9BBk7WUCnmkHFYMqdJKDSfSJcGkCAQW7kun33ewXVilFM QYng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EELJSa6d; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c19-20020a170902f31300b001b8c4168e20si6867686ple.58.2023.07.14.05.28.55; Fri, 14 Jul 2023 05:29:09 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EELJSa6d; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S235725AbjGNMJK (ORCPT + 99 others); Fri, 14 Jul 2023 08:09:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57018 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235709AbjGNMJF (ORCPT ); Fri, 14 Jul 2023 08:09:05 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4BF92212B for ; Fri, 14 Jul 2023 05:09:04 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CAB1B61CF1 for ; Fri, 14 Jul 2023 12:09:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 58240C433CB; Fri, 14 Jul 2023 12:09:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1689336543; bh=nUjt9aPIm8t8zpCcFZjv3pXhHtLHcHwW+ZKfovq5PGQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EELJSa6dEHGyMIPSwoSdvUpZm/AQsox03og/2qj+DWzf101pcI642XDG3WektyVaN Up2r9pkCt/JsJ+uVAS8qFHYS9q47Vl0auU+lk5wG1K4i0nXHEViENcW+PaUUjtEcO0 I0jp1jssPkj3Jw6hEQOlX8ED2NO/9PvKaEIG/qBLXWrn2yLoOmCw0+wuZvWbClBFWS qHrsbu/BS9vZNPeTJKpc1tLBS/fqB9mAhFrazZOeo40+nKK/LISOXEvWDkjx1COIAG 6WvBimR4igEcq/Q2+o2NdTmwbdUrUgS9zPOq4TX3IDFJsX+BliqACR+lg7nnRcegQ7 +EkBl5Y66fdOQ== From: Frederic Weisbecker To: Thomas Gleixner Cc: LKML , Frederic Weisbecker Subject: [PATCH 3/3] tick/nohz: Don't shutdown the lowres tick from itself Date: Fri, 14 Jul 2023 14:08:52 +0200 Message-Id: <20230714120852.23573-4-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230714120852.23573-1-frederic@kernel.org> References: <20230714120852.23573-1-frederic@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In lowres dynticks mode, just like in highres dynticks mode, when there is no tick to program in the future, the tick eventually gets deactivated either: * From the idle loop if in idle mode. * From the IRQ exit if in full dynticks mode. Therefore there is no need to deactivate it from the tick itself. This just just brings more overhead in the idle tick path for no reason. Fixes: 62c1256d5447 ("timers/nohz: Switch to ONESHOT_STOPPED in the low-res handler when the tick is stopped") Signed-off-by: Frederic Weisbecker --- kernel/time/tick-sched.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index dd25da8531f4..101251e103be 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -1392,18 +1392,16 @@ static void tick_lowres_handler(struct clock_event_device *dev) tick_sched_do_timer(ts, now); tick_sched_handle(ts, regs); - if (unlikely(ts->tick_stopped)) { - /* - * The clockevent device is not reprogrammed, so change the - * clock event device to ONESHOT_STOPPED to avoid spurious - * interrupts on devices which might not be truly one shot. - */ - tick_program_event(KTIME_MAX, 1); - return; + /* + * In dynticks mode, tick reprogram is deferred: + * - to the idle task if in dynticks-idle + * - to IRQ exit if in full-dynticks. + */ + if (likely(!ts->tick_stopped)) { + hrtimer_forward(&ts->sched_timer, now, TICK_NSEC); + tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1); } - hrtimer_forward(&ts->sched_timer, now, TICK_NSEC); - tick_program_event(hrtimer_get_expires(&ts->sched_timer), 1); } static inline void tick_nohz_activate(struct tick_sched *ts, int mode) @@ -1508,7 +1506,11 @@ static enum hrtimer_restart tick_highres_handler(struct hrtimer *timer) else ts->next_tick = 0; - /* No need to reprogram if we are in idle or full dynticks mode */ + /* + * In dynticks mode, tick reprogram is deferred: + * - to the idle task if in dynticks-idle + * - to IRQ exit if in full-dynticks. + */ if (unlikely(ts->tick_stopped)) return HRTIMER_NORESTART; -- 2.34.1