From patchwork Fri Aug 11 17:00:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134618 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1254681vqi; Fri, 11 Aug 2023 10:41:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG8uAmoR2UXOj0gCUIG7uFMQ8V8EtzLUZ3dC3f44YSh3uYP7iU7v5H5vF1eee/kuUsH9QXp X-Received: by 2002:a17:903:22cb:b0:1b8:a720:f513 with SMTP id y11-20020a17090322cb00b001b8a720f513mr2757864plg.30.1691775698073; Fri, 11 Aug 2023 10:41:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775698; cv=none; d=google.com; s=arc-20160816; b=KL0DwMPV4PDoMNcP9IwVLq38aGXUbNl5XrmLhrBRWBPmJ++fAII5gimZl8XjUyBXyx /AwYd6ItoSAnw9rpfDI1l8mqYiS+6Nbk6qrnMRZCMYjzp8cV9iImo5hSfpZmw2x9NLWB MuJAfLCmCUclflWuJj7LTaXJIny33veVhHvG3Kz+/ldsKenuNloDaAkgw+4gJckRhIRf xlf0ltUkoQvsplOtH7+QvfffhHNTAO0Kv6ebkvznm3mrpAehf92D4utK7+yleOda7lTb NFWxqwoR4SWGrbcCDHcHUtGd+idJoqo3gUHMBLYN2ZjxhYzd92ytFKlyxowUaKI+I7GV pMtQ== 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=1KIWZtD6Y5wj0lSHAnbM5Pjjl10GiUETFG+MrqYmCQU=; fh=K1m6n+brToPLMsYko3rtXKxC+lCostu9M84onRqB7cU=; b=ET2RyqOPf32KpSbTAYi+24G/aJZbmyNIsTKEwXaj8s6fpuQEPbCn69WOMaUHn16w7N iJk5BtZfQWuaeHuPKJY71iFIricTpRILOQLjwKKujI7QjxaXtaE1dwIlfF7QTneplUzE eYsmqH+JhR58FRSdZ1LTTzzStEuMl7WFX8jdT4VnhiMBrzX92UWaizdgDhHH1g7WncN4 RcQogGfYHFZh6NSg5JmGK3P8LLYNpu9hzem2KDVfy7BeNqWVYsEsYKQpRuzdqVrQIfb4 BBUZC4vtkHJnTBfUFNvIA1QeQ9jG0EjDm69lPvMX5GRfy+2rPpKGSsjKoaYsIpJ2Kzr1 9F1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KedcF9hv; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o5-20020a170902d4c500b001b25ade9ea3si3802367plg.337.2023.08.11.10.41.24; Fri, 11 Aug 2023 10:41:38 -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=KedcF9hv; 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 S236088AbjHKRBA (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55898 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235273AbjHKRA6 (ORCPT ); Fri, 11 Aug 2023 13:00:58 -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 6A7811FE3 for ; Fri, 11 Aug 2023 10:00:58 -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 0313565816 for ; Fri, 11 Aug 2023 17:00:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5BF6C433CC; Fri, 11 Aug 2023 17:00:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773257; bh=erurmBk6eYQvncO35/wgAhKngMgxH6cwdYjQXfYK+oY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KedcF9hvhoiTuwvwmjKJlSSKEawCZwEKWmHJ6+4HPVPxmFuWODvSihQVsIlxVDdEK j2eFLIFuxieQuQL/D8VMiGtY9AAsI2NsHptzs0cFPjhp+flYNfGCrgFHvOjD8dsuMw 2J0E7jS4x3RebYPuezSCYxWADvoWlaqUTpY0MB/Rlo7acpO0mmH8SI/mn8qOE+e62S bLdD7ZjPSZlxKPEIv78y+xLAt0R3Q4ihSud4LIcd2pshg2vEDyWcZjN1gTdncJO7l7 fUj4hhvlQqUI93iJ9lb8c+sm1IPpcregD/9taiXt9gWl3FroW81kFREy2WF9fa1atG 8oJo73E1HIvVA== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 01/10] x86: Add a comment about the "magic" behind shadow sti before mwait Date: Fri, 11 Aug 2023 19:00:40 +0200 Message-Id: <20230811170049.308866-2-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955394436187691 X-GMAIL-MSGID: 1773955394436187691 Add a note to make sure we never miss and break the requirements behind it. Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- arch/x86/include/asm/mwait.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index 778df05f8539..341ee4f1d91e 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -87,6 +87,15 @@ static __always_inline void __mwaitx(unsigned long eax, unsigned long ebx, :: "a" (eax), "b" (ebx), "c" (ecx)); } +/* + * Re-enable interrupts right upon calling mwait in such a way that + * no interrupt can fire _before_ the execution of mwait, ie: no + * instruction must be placed between "sti" and "mwait". + * + * This is necessary because if an interrupt queues a timer before + * executing mwait, it would otherwise go unnoticed and the next tick + * would not be reprogrammed accordingly before mwait ever wakes up. + */ static __always_inline void __sti_mwait(unsigned long eax, unsigned long ecx) { mds_idle_clear_cpu_buffers(); From patchwork Fri Aug 11 17:00:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134621 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1256427vqi; Fri, 11 Aug 2023 10:45:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFf1L+REgQ4LTct4cA6MwrYHwJwUPrfs7G47od/jh0obovbkkwx3faHmSgAKPg5x3+Vql5p X-Received: by 2002:a17:902:ec87:b0:1b8:28f6:20e6 with SMTP id x7-20020a170902ec8700b001b828f620e6mr2564163plg.34.1691775911123; Fri, 11 Aug 2023 10:45:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775911; cv=none; d=google.com; s=arc-20160816; b=Dh4A7DPRknYR3QG8r7OighWAYtVtveZkcHSzxdASj9YVAdJ0HLOo3T6+HQL7Cy7cOK o9btsPzH7yS0wZ3FkvtG6lgnvZzHOi1p+2rmobVdsKtkmEDsDgTQXMHow2WWVVaebYo9 4qB5Y0GCoexkw6OQlDqGIlFL8SoRjS2cM5uUxam2fzKprFvW83AgjtDgirrde3h1b5j7 KHaIl4FSK2unX6tpZSaRHlv5LwqZmGgZe8wGKvvpAWpuF3ZI7peJVxpOgqKnqmF1nGbZ +xGbuG4k2hxoUJ+ZlA7tc8CAdmUFc74xfKtKflyAFSVc91CVtUysaLOAbZiRY73F5K48 cLmw== 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=5JObSVNGaua/SnWn/JYpLFzW0jWDYNCIn4fTiPYH/2A=; fh=N/KZXiibka9BfXj4Jcd+eHZJa0GpST73xFI6AQYLVnM=; b=wBfBLHAmJeZcVGv668L+nZKBp4gtGmQgVpz4wXqFUerL+F0/SZ0JFibi+YXuPey7O8 gADhzz5AtGfY2Ralg+oo4aLDOnk5VgM/SRiM5OdvwaR0gtyAUfgdsnULuZvIrIjVSIso Zf+a9qIHDRCj/vbrZTYiYqmkzV2ln5qs/anBYVLq2eSxB4BdgiR5yNvfYfuZ7J1PoTpm ea4gyj5K5emN7wfoc4T8MyN4aVzerBfcm+zxYSd1qp6JJtxmP6FZ7WHH5L4GKjl5XicF To2huS2HlpF9uwtAZoC1eY/d3T+JmSaDCTlIULIewv2VnC5Mdirm6hprwQpd2SYfBTwG Vn2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tadGZnDr; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s20-20020a170903215400b001bd9c43c88csi3532637ple.204.2023.08.11.10.44.54; Fri, 11 Aug 2023 10:45:11 -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=tadGZnDr; 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 S235977AbjHKRBO (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236102AbjHKRBB (ORCPT ); Fri, 11 Aug 2023 13:01:01 -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 D5E8C30CF for ; Fri, 11 Aug 2023 10:01:00 -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 6A96766AFF for ; Fri, 11 Aug 2023 17:01:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4903C433D9; Fri, 11 Aug 2023 17:00:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773259; bh=MSV7rGMv9w657y7ZDGytkmDXoScopLPoMt9dVwnOMVI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tadGZnDr53sGuJqbcI/oAX/TnBDHDgTNARh3umzbcSSYYx8vGBQi5UTdJIr1Lf/TS 1OvVgkVCZNhAzSd9RBsapuBEIOPJmQJHyqd3JXprL9pqM5TJpxz2O14Yhi58dc80N9 tshmu2SFc3VnhW0Xo9DlquA9TuwAQ8Xhg4cs1Ur5bB0Mnsw7QeZ+MSUFHqKaPKkjW2 /4TMCoxxZPae4qVEocgu7fuy+283DWmA3hxOJHsiFocKvDFSmTzq37ZwcFvBfL9obY 7XLrXxi6VcZy9cQFJwieKQ5yVghepD5HlvNwZT/ZWN2RWEbbvXa+mNVQxvVQLlv4xx dc6mKunDYsHVA== From: Frederic Weisbecker To: LKML Cc: Peter Zijlstra , Frederic Weisbecker , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen , Jacob Pan , Len Brown Subject: [PATCH 02/10] cpuidle: Fix CPUIDLE_FLAG_IRQ_ENABLE leaking timer reprogram Date: Fri, 11 Aug 2023 19:00:41 +0200 Message-Id: <20230811170049.308866-3-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955617645733097 X-GMAIL-MSGID: 1773955617645733097 From: Peter Zijlstra intel_idle_irq() re-enables IRQs very early. As a result, an interrupt may fire before mwait() is eventually called. If such an interrupt queues a timer, it may go unnoticed until mwait returns and the idle loop handles the tick re-evaluation. And monitoring TIF_NEED_RESCHED doesn't help because a local timer enqueue doesn't set that flag. The issue is mitigated by the fact that this idle handler is only invoked for shallow C-states when, presumably, the next tick is supposed to be close enough. There may still be rare cases though when the next tick is far away and the selected C-state is shallow, resulting in a timer getting ignored for a while. Fix this with using sti_mwait() whose IRQ-reenablement only triggers upon calling mwait(), dealing with the race while keeping the interrupt latency within acceptable bounds. Fixes: c227233ad64c (intel_idle: enable interrupts before C1 on Xeons) Not-yet-signed-off-by: Peter Zijlstra Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- arch/x86/include/asm/mwait.h | 11 +++++++++-- drivers/idle/intel_idle.c | 19 +++++++------------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index 341ee4f1d91e..920426d691ce 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -124,8 +124,15 @@ static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned lo } __monitor((void *)¤t_thread_info()->flags, 0, 0); - if (!need_resched()) - __mwait(eax, ecx); + + if (!need_resched()) { + if (ecx & 1) { + __mwait(eax, ecx); + } else { + __sti_mwait(eax, ecx); + raw_local_irq_disable(); + } + } } current_clr_polling(); } diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index 256c2d42e350..d676d32741da 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c @@ -131,11 +131,12 @@ static unsigned int mwait_substates __initdata; #define MWAIT2flg(eax) ((eax & 0xFF) << 24) static __always_inline int __intel_idle(struct cpuidle_device *dev, - struct cpuidle_driver *drv, int index) + struct cpuidle_driver *drv, + int index, bool irqoff) { struct cpuidle_state *state = &drv->states[index]; unsigned long eax = flg2MWAIT(state->flags); - unsigned long ecx = 1; /* break on interrupt flag */ + unsigned long ecx = 1*irqoff; /* break on interrupt flag */ mwait_idle_with_hints(eax, ecx); @@ -159,19 +160,13 @@ static __always_inline int __intel_idle(struct cpuidle_device *dev, static __cpuidle int intel_idle(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { - return __intel_idle(dev, drv, index); + return __intel_idle(dev, drv, index, true); } static __cpuidle int intel_idle_irq(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { - int ret; - - raw_local_irq_enable(); - ret = __intel_idle(dev, drv, index); - raw_local_irq_disable(); - - return ret; + return __intel_idle(dev, drv, index, false); } static __cpuidle int intel_idle_ibrs(struct cpuidle_device *dev, @@ -184,7 +179,7 @@ static __cpuidle int intel_idle_ibrs(struct cpuidle_device *dev, if (smt_active) native_wrmsrl(MSR_IA32_SPEC_CTRL, 0); - ret = __intel_idle(dev, drv, index); + ret = __intel_idle(dev, drv, index, true); if (smt_active) native_wrmsrl(MSR_IA32_SPEC_CTRL, spec_ctrl); @@ -196,7 +191,7 @@ static __cpuidle int intel_idle_xstate(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { fpu_idle_fpregs(); - return __intel_idle(dev, drv, index); + return __intel_idle(dev, drv, index, true); } /** From patchwork Fri Aug 11 17:00:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134609 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1252288vqi; Fri, 11 Aug 2023 10:36:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH3PFvmOGenGmgLVm7ytmc0SeL9dcRF5LQKs5ANikhspwDC1oHEMJJEqPxBJCuWMb86gVm5 X-Received: by 2002:a17:90a:72cd:b0:263:4685:f9a5 with SMTP id l13-20020a17090a72cd00b002634685f9a5mr1807053pjk.8.1691775385071; Fri, 11 Aug 2023 10:36:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775385; cv=none; d=google.com; s=arc-20160816; b=Upy75rC3sungy4IRCXyxlHnIz/qrzMTUcOM9oE0vyMQDy7XiVFxN5MueDn/tto1FZO gB3MKKxC8NKtyEb2OKBv8sOotp/9X/fari8aKNAZgoi2GPeMP1g/m8UBwE4fnPDZewqw aAZv8+6ob/5unAIwKw7vfLFrQbRj4Yy9HHpBb+zsEZRqmmTexvzLe/kfbQ9MoiuJ1O8a 5q+zH0aF6mUYUIaRycbuB07vgW/SOIwJ7E0vcm2c3Z0ipzLs8Anx6FbsnCW/rWDGZLdH I+73VtyXUoHng2GtdePODYQZ4WNn0+0zJsqVm0qfTeW2SQA0Xs2bJ4vpzAYB1lUoczU5 tPfQ== 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=plAoRAaaCikEqv+dvKpupAjBzbsBq5twhjRvREEYPGo=; fh=K1m6n+brToPLMsYko3rtXKxC+lCostu9M84onRqB7cU=; b=fDrfs+Af7I5QTAMtTR4bX7/YNDXjJ6qOJiF/0/MXo9DkeL+Nk8zb/PmQpXguDqWI1N gjZ5b9uifKCKdq5tTGDlHGXXmf/MBPDSOnRL04r4jY0Xo2gv4/b7Qp9xtm4XXzyxeTvf iYHus7FYvxPcsZRz9q5MRe5hmt9P40oJijQfDO95Kj2uuaMcHeoBs8nvXIdW5pYDgOGT eMY2tY/SiSs+YXqTCXEfh/X+yjQ+ir+XPQdOr8UIdqELxQv78lSGupSMDbxPjVZTWSNK kZAWMU6eE0FRBwNWWEFRDLBeGwrE3l3JXOJc0FeKaxqvoKn8hPe5KvKNPM/QZ/w0Qb+u MTiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="cMAuv/uU"; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p10-20020a17090a4f0a00b0026813cd5719si1443279pjh.128.2023.08.11.10.36.05; Fri, 11 Aug 2023 10:36:25 -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="cMAuv/uU"; 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 S236378AbjHKRBS (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235983AbjHKRBL (ORCPT ); Fri, 11 Aug 2023 13:01:11 -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 D88DB30E7 for ; Fri, 11 Aug 2023 10:01:02 -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 6E25D67684 for ; Fri, 11 Aug 2023 17:01:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46D28C433C8; Fri, 11 Aug 2023 17:01:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773261; bh=YaoIKYC/HMtW27OOcRlg0CgBQJS8nCnjs/a8mtWVN9k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cMAuv/uUk1D/ks5Q4Tofx42uo+5BObOOtWMdaGvK9vFT2YixjWvjrwrhxmNgits1L 9O8X6v6ubtlin/ESJ/BraO1nBxVuVsD5GIDnmrr+ywXDcsVpxMsTcEjIt7XK/dICL9 /aNDYUXTHwGSLFkS3TEVydJPQWPG8aVYtIjZzR0TIaqcGYjfHCmcr3QIukV9ex873X rfZUX0OBrxoHoGN/gEOO6i9z/5JMiLh3sHiQlyte7T7u2xlvf/WhrLbB46Tx32q/MC kTN+EESC255qjJDAseDUBchyqbkz3+tdE2pALmTWWLxow57Ebe42t2PCdyGilblR05 dNZHqH95bTnNw== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 03/10] cpuidle: Report illegal tick stopped while polling Date: Fri, 11 Aug 2023 19:00:42 +0200 Message-Id: <20230811170049.308866-4-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955066147132787 X-GMAIL-MSGID: 1773955066147132787 poll_idle() can't be called while the tick is stopped because it enables interrupts and only polls on TIF_NEED_RESCHED, which doesn't tell if an interrupt queues a timer that would require a tick re-programming. There is no point anyway to poll with the tick stopped so add a check to make sure it never happens. Signed-off-by: Frederic Weisbecker --- drivers/cpuidle/poll_state.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/cpuidle/poll_state.c b/drivers/cpuidle/poll_state.c index 9b6d90a72601..009f46f121ae 100644 --- a/drivers/cpuidle/poll_state.c +++ b/drivers/cpuidle/poll_state.c @@ -7,6 +7,7 @@ #include #include #include +#include #define POLL_IDLE_RELAX_COUNT 200 @@ -19,6 +20,13 @@ static int __cpuidle poll_idle(struct cpuidle_device *dev, dev->poll_time_limit = false; + /* + * This re-enables IRQs and only polls on TIF_NEED_RESCHED. + * A timer queued by an interrupt here may go unnoticed if + * the tick is stopped. + */ + WARN_ON_ONCE(tick_nohz_tick_stopped()); + raw_local_irq_enable(); if (!current_set_polling_and_test()) { unsigned int loop_count = 0; From patchwork Fri Aug 11 17:00:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134615 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1253380vqi; Fri, 11 Aug 2023 10:38:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEyGTW5MyKcBquMy4+Pf8Dab6/SqXchteFDp7hbfXH1vO3qhY4HMZxG3XZkJ8zPQpi2i2zv X-Received: by 2002:a05:6a00:2d0e:b0:67e:4313:811e with SMTP id fa14-20020a056a002d0e00b0067e4313811emr2822633pfb.0.1691775526928; Fri, 11 Aug 2023 10:38:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775526; cv=none; d=google.com; s=arc-20160816; b=uICeXAgkTJkcXnRU03vt5bu1GwVIlUsVBofI2ekRocuaoY3K56N8/HfuZB3xe55ik6 GWbrZyx8tEYOsMcCrROkqnbJ+BpkVJIIS6T0AT1U7LxTYX9mJgoEDFjqlN68+Pp8Yupo 1//OKPZRojjpcILmebI0eTugKMLCFCkcwncam7kT8YljYGayppNI/YNgEkCPKnjjye3A X1Ev5js3nEU3SViVCwhC9whmGjY5Yg2Xz0SadO/2YHf5Xv3eFVnfHe/aW9iQSGQIprPV cbocavSNEuho9xkOtgIKjO4HsvFliQcI5ZNG7joq6at/vNwmdkuruDTw7MVLQBUJaA7V sRgA== 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=PlGrn91imjXECzlK+h2P5cuDm5pXjV5ugTgupuKWM14=; fh=/j17CRxNYWm50Nf0CjWkmHmtCvvs/7IroindgguQRCc=; b=wu1O1+gjEDepkPSu3k3vYM3RWao9mhmGANuu7AURUURmGh18t2k2td1evoYeqd4M64 iB5Ihm/bdyzZdMSYtOd6fxHYKf8LruwP/JaRXqXGgeOCV65WC69wnECY8B0YMCcpJ8rr VjibPyOAooMPvOd1EAEyXj5BOoz7AWYztY7hEYA1hatB0YZiDw+8uwKw7Ed7BmuOYdt6 YP+2Gu0bI0txfRbqSLLVDHDQuzpqdVVYqOEPEBwEi5HM+SLCQ6CexxJUt0H/1SbwdHoF ebqcOLGbfgXj6T1DjhXOcEDx1M6ruMLTHlR2xkqOwdKTcRdOdd6TWZ+WFlKGH7LIRyop 2WbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@kernel.org header.s=k20201202 header.b=SvV+gp5g; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q27-20020a056a0002bb00b0068781a6993bsi3554119pfs.276.2023.08.11.10.38.32; Fri, 11 Aug 2023 10:38:46 -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=fail header.i=@kernel.org header.s=k20201202 header.b=SvV+gp5g; 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 S236153AbjHKRBV (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236192AbjHKRBM (ORCPT ); Fri, 11 Aug 2023 13:01:12 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6BC4730F8 for ; Fri, 11 Aug 2023 10:01:05 -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 0C08267762 for ; Fri, 11 Aug 2023 17:01:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5125AC433C7; Fri, 11 Aug 2023 17:01:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773264; bh=avuix5bG15MMoG/1/mFgPThQIvzwkN7p3FXy26I7Giw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SvV+gp5g5gzELLIxJzVjWBy9jH4Dr1dph56JxNHJDLbhjtbBPcfgWx0fDvwBMR8JJ MFdvd12oxGLPVAL1BUDpG4jC4IM2ohaqHWnv/6dfM/2rhE1kGmdk7bUHTRNTo4PGBS TH/3EkVf3lwQIgRieERTjBvL/JCtKKilmJ27qqWlNevT0W38UOdZOcL0dS6iZu+ijL rbTuO2gtnRwuiWmqYHvryTQgFj19MKL4UZ0q72ZgZkGhv53ssZ1hxogu7li5d80XSL r+P44pFqvg3cG1DSuwaVBnGRNq6v5NbRGeEu3UHQEe5S2vCO2ZqcF8OWUNtjEFcOuy N0lLJgBOpbUUw== From: Frederic Weisbecker To: LKML Cc: Peter Zijlstra , Frederic Weisbecker , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen , Bibo Mao , WANG Xuerui , Bibo@vger.kernel.org Subject: [PATCH 04/10] loongson: Fix idle VS timer enqueue Date: Fri, 11 Aug 2023 19:00:43 +0200 Message-Id: <20230811170049.308866-5-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955215308312517 X-GMAIL-MSGID: 1773955215308312517 From: Peter Zijlstra Loongson re-enables interrupts on its idle routine and performs a TIF_NEED_RESCHED check afterwards before putting the CPU to sleep. The IRQs firing between the check and the idling instruction may set the TIF_NEED_RESCHED flag. In order to deal with the such a race, IRQs interrupting __arch_cpu_idle() rollback their return address to the beginning of __arch_cpu_idle() so that TIF_NEED_RESCHED is checked again before going back to sleep. However idle IRQs can also queue timers that may require a tick reprogramming through a new generic idle loop iteration but those timers would go unnoticed here because __arch_cpu_idle() only checks TIF_NEED_RESCHED. It doesn't check for pending timers. Fix this with fast-forwarding idle IRQs return value to the end of the idle routine instead of the beginning, so that the generic idle loop handles both TIF_NEED_RESCHED and pending timers. Fixes: 0603839b18f4 (LoongArch: Add exception/interrupt handling) Tested-by: Bibo, Mao Not-yet-signed-off-by: Peter Zijlstra Cc: WANG Xuerui Signed-off-by: Frederic Weisbecker --- arch/loongarch/kernel/genex.S | 32 ++++++++++++++++++-------------- arch/loongarch/kernel/idle.c | 1 - 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/arch/loongarch/kernel/genex.S b/arch/loongarch/kernel/genex.S index 78f066384657..359d693f112e 100644 --- a/arch/loongarch/kernel/genex.S +++ b/arch/loongarch/kernel/genex.S @@ -18,27 +18,31 @@ .align 5 SYM_FUNC_START(__arch_cpu_idle) - /* start of rollback region */ - LONG_L t0, tp, TI_FLAGS - nop - andi t0, t0, _TIF_NEED_RESCHED - bnez t0, 1f - nop - nop - nop + /* start of idle interrupt region */ + move t0, CSR_CRMD_IE + csrxchg t0, t0, LOONGARCH_CSR_CRMD + /* + * If an interrupt lands here; between enabling interrupts above and + * going idle on the next instruction, we must *NOT* go idle since the + * interrupt could have set TIF_NEED_RESCHED or caused an timer to need + * reprogramming. Fall through -- see handle_vint() below -- and have + * the idle loop take care of things. + */ idle 0 - /* end of rollback region */ -1: jr ra + nop + /* end of idle interrupt region */ +SYM_INNER_LABEL(__arch_cpu_idle_exit, SYM_L_LOCAL) + jr ra SYM_FUNC_END(__arch_cpu_idle) SYM_FUNC_START(handle_vint) BACKUP_T0T1 SAVE_ALL - la_abs t1, __arch_cpu_idle + la_abs t1, __arch_cpu_idle_exit LONG_L t0, sp, PT_ERA - /* 32 byte rollback region */ - ori t0, t0, 0x1f - xori t0, t0, 0x1f + /* 16 byte idle interrupt region */ + ori t0, t0, 0x0f + addi.d t0, t0, 1 bne t0, t1, 1f LONG_S t0, sp, PT_ERA 1: move a0, sp diff --git a/arch/loongarch/kernel/idle.c b/arch/loongarch/kernel/idle.c index 0b5dd2faeb90..5ba72d229920 100644 --- a/arch/loongarch/kernel/idle.c +++ b/arch/loongarch/kernel/idle.c @@ -11,7 +11,6 @@ void __cpuidle arch_cpu_idle(void) { - raw_local_irq_enable(); __arch_cpu_idle(); /* idle instruction needs irq enabled */ raw_local_irq_disable(); } From patchwork Fri Aug 11 17:00:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134603 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1235318vqi; Fri, 11 Aug 2023 10:06:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHDwZAlG0TpLWtSf00qNDMCS9qEM5HpcWX1mPruliaoBVIaKaG3R4aDEszJJQS0pt0ykO9U X-Received: by 2002:a17:902:aa41:b0:1bb:7a73:6b59 with SMTP id c1-20020a170902aa4100b001bb7a736b59mr1962344plr.32.1691773600629; Fri, 11 Aug 2023 10:06:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691773600; cv=none; d=google.com; s=arc-20160816; b=PoLNdSBZX6/Dx/bbi9GlRPeoAxO1kYldOhMU3kxSYxUN1daXFcB0a9mScTizUxyHQv /ww+Ks86JuYdtrlKEtiaukJ2HhRtKpshmFQbP3uDidHNYZ8UNQZPxTB5yGtdjCykmRik lV43H5OyZmJMnYiFo6VFWLOGowYvPWQuCFuwslqN4SDX6We/Lv614qBrVV2Ni9mTKsVt CbCYhY/bsRTC2B8abzHHJ5AGvOH3En3UKJ1/3v0anmm5rHizdHtNurnQ9zpPw7czgrSo 6j83oIPDGNTZ14iu5F5FTpy29J34SQAcGsg+eS8SaCmwMtf82yibTN1CMaZeTg5VZLL0 nFZw== 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=9GYTz5f02cG5in8OXKwjupz+fQx3DnOBfUdk1tXLwHk=; fh=K1m6n+brToPLMsYko3rtXKxC+lCostu9M84onRqB7cU=; b=gZwhkZNPfYEyRLVdlQ1j1vvijM8fU24CzJisPTx2i/D85bCv3Hr48UtPhISNb3bDsC YFK86vsoiqjYSMJyKlRSwlk29sT7JaFjwkRFRKthyOxYxuZuIMicOMbe1q0oZ1VKQydp PxAOevqKl7XpP3CygxnVG7CuB8v/ut8ISjgECLa0E6AGiQT7Edz47BHgsFOtea4OG19q 1JDCj5hySB4tReP6dSIUGb8vIuaxAbZ8K0KT4sQ9opN7xoORYQALzJWBILfa0crQzbNK qz3/NqHqhJ3mTnVt+lWWjABY0HFZGxKfFpC3Uh3lscOUrG8Uxa5XgjG0UunoAYKSlEGc 0qZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=rMyizXCK; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t3-20020a170902bc4300b001bdad5c05f7si2473048plz.546.2023.08.11.10.06.17; Fri, 11 Aug 2023 10:06:40 -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=rMyizXCK; 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 S236192AbjHKRBX (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236137AbjHKRBN (ORCPT ); Fri, 11 Aug 2023 13:01:13 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B943F358D for ; Fri, 11 Aug 2023 10:01:07 -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 1B6C4645D4 for ; Fri, 11 Aug 2023 17:01:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E0C8EC433C8; Fri, 11 Aug 2023 17:01:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773266; bh=S08tGTg2h98OGDPV+poOPJ31ZbhjI75bLqTCYfR8VLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rMyizXCKChWj0nTYNr5wnl6eRtZ4EEFVV37VHgROtV2bk77XB8WECJhMjGHeVS7WZ BMoZ6/X6yfFy33d1vj2Hv8Bc2DtvbP8Ef1H99meYWnt3BmuxqvnCWhnfeWo7wFg/eB ZtQlfZxqqZxOKqklVkyphHAhpysYvKQCErpy83U9EzDTPhmLR9rxIqJ9pMmviOx7wk LwbbNqaxxFuyTdM50rLCYvFP7iPCyZf1qJCJxtwzPfz9K4HCO1HrmNcqkNObPZdC92 +nMDMROWFF1t+ZI4Gq1drjVj5d/dgXYmCvMI1ZxuqEGs8C/gTsXhNXQQLjVwklg3MD Tsga622F1V/6Q== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 05/10] cpuidle: Comment about timers requirements VS idle handler Date: Fri, 11 Aug 2023 19:00:44 +0200 Message-Id: <20230811170049.308866-6-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773953194775668951 X-GMAIL-MSGID: 1773953194775668951 Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- kernel/sched/idle.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 342f58a329f5..d52f6e3e3854 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -258,6 +258,36 @@ static void do_idle(void) while (!need_resched()) { rmb(); + /* + * Interrupts shouldn't be re-enabled from that point on until + * the CPU sleeping instruction is reached. Otherwise an interrupt + * may fire and queue a timer that would be ignored until the CPU + * wakes from the sleeping instruction. And testing need_resched() + * doesn't tell about pending needed timer reprogram. + * + * Several cases to consider: + * + * - SLEEP-UNTIL-PENDING-INTERRUPT based instructions such as + * "wfi" or "mwait" are fine because they can be entered with + * interrupt disabled. + * + * - sti;mwait() couple is fine because the interrupts are + * re-enabled only upon the execution of mwait, leaving no gap + * in-between. + * + * - ROLLBACK based idle handlers with the sleeping instruction + * called with interrupts enabled are NOT fine. In this scheme + * when the interrupt detects it has interrupted an idle handler, + * it rolls back to its beginning which performs the + * need_resched() check before re-executing the sleeping + * instruction. This can leak a pending needed timer reprogram. + * If such a scheme is really mandatory due to the lack of an + * appropriate CPU sleeping instruction, then a FAST-FORWARD + * must instead be applied: when the interrupt detects it has + * interrupted an idle handler, it must resume to the end of + * this idle handler so that the generic idle loop is iterated + * again to reprogram the tick. + */ local_irq_disable(); if (cpu_is_offline(cpu)) { From patchwork Fri Aug 11 17:00:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134612 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1253031vqi; Fri, 11 Aug 2023 10:38:04 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH2ZZ0rZyLqtDCbxy/EEYI2L0AhgYCY5rQXIXsd7dFrIFcsUPKNEMn1Gwxo/ipMAjn59hv4 X-Received: by 2002:a17:903:41c5:b0:1b5:64a4:bea0 with SMTP id u5-20020a17090341c500b001b564a4bea0mr3000360ple.10.1691775484154; Fri, 11 Aug 2023 10:38:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775484; cv=none; d=google.com; s=arc-20160816; b=yfMgLBgtn2Ph4kz85Ag8XhDAi8BoqTcyimCHn0cSDb9xzGUW3T/C1g098tSMrJ66wj 5mxkwx4XKuOvmMNrzOmDx94Mol1l9E5qq0chXJ5ZvfsdwQZ/WpN/6NUko48tJhz7xOQy jZnSYuByR5k/8e3eRhFev2pEbhoG0rESAG5JhIM3gnCDQGv866/n3LrBP/6ak88qEC18 EUIpM+1xmOkAERcSKgpqj8oI08B14IpQ/peVvGoYmFPtcebOAP806Oi/Le62BAlmHo/J Je6pyPw/TyOluNgDYhnZ8nSkxTtECkURjtt8ykwkBftl2zK3PnhJMtIo1iNFcmB5JBOJ /uPA== 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=4xeqmHl2t+YnJfov58NB3HrnsAyJLsX10R2Tffj5RqA=; fh=pQeWpAa0NFKPT5g/38wXju99oTS1bj4HpHnsse8R7XM=; b=fvYjalVCsbC6n6dVVm8G3DVxTPSBW9rGd6Gu4bb8eUtlpFni1gEwP+7cFvUXigRtd3 1mSBYfKQOqAlcx4d241hA2xvYW+lartMOoYa06rwTxIt+hhVIs9Du6jyv+s9Ypdl7jD4 sjux8CDySEORJXK0wqU0IxUbWuRpNR32VOWsruAxcP0G5BQNo/kveh9YsceF2JcUK7ZV k3SYatI0oB2rg8t15Sd5IOtO70GZkZAT4u5XtqNGqV3nBhSJxl4HlzNZVNmWbgiOsZqD qNPR/i19Jn/+PMIAALHICO99P+4f0B2IlHTvxcJH4NLVQGAvlopXqNWpQ8+3Uz0giG7Y cvPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NhgGjX14; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b10-20020a170903228a00b001bb993ef74dsi3673835plh.461.2023.08.11.10.37.45; Fri, 11 Aug 2023 10:38:04 -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=NhgGjX14; 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 S236210AbjHKRBc (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234617AbjHKRBP (ORCPT ); Fri, 11 Aug 2023 13:01:15 -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 C337B35A9 for ; Fri, 11 Aug 2023 10:01:09 -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 4C316645D4 for ; Fri, 11 Aug 2023 17:01:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EC1BAC433C7; Fri, 11 Aug 2023 17:01:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773268; bh=1NQPETUBxztpoNgtonFeGuuxCy+oiM7V1jas7MgPpLw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NhgGjX14Vfxa5mHU4CwZ2RvYwEyiALn1takLmpPnUFScmOqNOLb0xTxOhL1wecuIS dMQBaSRZK7lU0sYnl1m4AKEEZJsC+GDq86xovFbDEUqs2OoqKC5F0/tNP7MOzZQD8Z GTn92asL7geG3HT25qM9kIileTY0/BNd0CIotA8zwuKZ8G/VX6V3qXCWkZAi5H16ni scdvr1dq69gt2tSYU5VnJS/bPiV2FeaeH5yNcVqNZCWd9lWLK7JFpI6pdOYRNs6fG3 XUwWGuwqqyEnTInszoWbFfRtaWNeqjUM3iM0GnYPZQIcOfLhmJP9IrMCwx2LjTQbif od+SqAWYBmbaA== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Marcelo Tosatti , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 06/10] cpuidle: Remove unnecessary current_clr_polling_and_test() from haltpoll Date: Fri, 11 Aug 2023 19:00:45 +0200 Message-Id: <20230811170049.308866-7-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955169976061660 X-GMAIL-MSGID: 1773955169976061660 When cpuidle drivers ->enter() callback are called, the TIF_NR_POLLING flag is cleared already and TIF_NEED_RESCHED checked by call_cpuidle(). Therefore calling current_clr_polling_and_test() is redundant here and further setting of TIF_NEED_RESCHED will result in an IPI and thus an idle loop exit. This call can be safely removed. Cc: Marcelo Tosatti Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- drivers/cpuidle/cpuidle-haltpoll.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/cpuidle/cpuidle-haltpoll.c b/drivers/cpuidle/cpuidle-haltpoll.c index e66df22f9695..b641bc535102 100644 --- a/drivers/cpuidle/cpuidle-haltpoll.c +++ b/drivers/cpuidle/cpuidle-haltpoll.c @@ -28,11 +28,8 @@ static enum cpuhp_state haltpoll_hp_state; static int default_enter_idle(struct cpuidle_device *dev, struct cpuidle_driver *drv, int index) { - if (current_clr_polling_and_test()) { - local_irq_enable(); - return index; - } arch_cpu_idle(); + return index; } From patchwork Fri Aug 11 17:00:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134626 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1259684vqi; Fri, 11 Aug 2023 10:52:21 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFeHRdALWUYLZ67uGxxVo+QTqierO88z4gbcLCrv2Ua99gNzLB51u6ayT37icrnEJUi9Qnu X-Received: by 2002:aa7:c911:0:b0:523:364b:e6a9 with SMTP id b17-20020aa7c911000000b00523364be6a9mr2112119edt.38.1691776340835; Fri, 11 Aug 2023 10:52:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691776340; cv=none; d=google.com; s=arc-20160816; b=KlJIx++OKbkia25WUT6QxZPlR1a54HJAJJGyhyFpUs7XrXHSFasx9HzLB9OX7iUunp Hnij564rHqQF3EAGHU6HUD/MGeqK/QQ0Cj9WAhSdgV1wGr8PqPeo7LBqxcNd+uB9yH8D ubu44bwbY26AKQf5pCU1EP/zXlDHMtttrGG90VQtSfuHSXMfUt7G7OM3twNJZ7FPVYEl vrj3W/n/+nqkH+EIq17QZofbLegSoDfplVdQ5mYrDLpZuEkahS9lEBxeK3jiHWLlOWRc qZAUrF/B76z6FLHk+PxDsVlhJ2S78lyn1ND0U1LlC0TUcn4hqjYA6wziXsl8NVnarGuw nPXQ== 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=UwW1cMHX8vYlcia3JmzEH5ATHx/9nmzLSsas3qKjsfU=; fh=K1m6n+brToPLMsYko3rtXKxC+lCostu9M84onRqB7cU=; b=M2MXIjVkxGoMSgdzAcrStDvov8mcgmHsmNkEYk0JMAJqFqe2mKM3GCC+DqF8G+IfP6 qCszgSY8w6ufZFnA1OuSJf7HQ9O+WB5U420KWEcbQiWIsW1eF4f8BDsleNRwWXOjwHZj ZpxtGg/63xCdoWAXnuHDLhYiUcqOslj6nGf3mP9WOFMT1Sm62GadaA2YA0pDXB4JJNHg k42RrbeH+iiLFop8n+0AiCHy2ivaM5V+T1rq5QyW/rMJv1GWAV7SOjfgLFg+2fACdR3k CHXg5zpFBOz+lodDq/mbBkUJka5TvXTRvhgKeL7KkJrTxGny0Ley47okOhsMrNoqGPyq mq1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=A4PolbeR; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d2-20020a50ea82000000b005233d031616si3965786edo.556.2023.08.11.10.51.56; Fri, 11 Aug 2023 10:52:20 -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=A4PolbeR; 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 S236359AbjHKRBh (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236208AbjHKRBQ (ORCPT ); Fri, 11 Aug 2023 13:01:16 -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 CB52C30CF for ; Fri, 11 Aug 2023 10:01:11 -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 61BBA645D4 for ; Fri, 11 Aug 2023 17:01:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 30619C433BA; Fri, 11 Aug 2023 17:01:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773270; bh=TVovZjwyix5rQdhW8ECdApx6w3lNWl+b+lPUjWG+UIw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=A4PolbeRtyjUDFVWk+7yFw7BYAFBwaI4HrMy6fwJNiTWTirl79pOSGigmrem5nhhh N2kc0CnhxTT5A+ddzcDvVN90XSyvLjVp0XdycOwkMO8WHTqGcOEiGtE2vjixmyjkdj v02fmOiWR09SWyMYyW6mksAtAZp31nh1M4vDoJFTAjK/GgO/J2+97rgUMnRuScK1f3 Ye0JvYUa80GerYbElkN0TchAmUmsvacjyoGg1nNFhmLQkFrem36wwm6EeE0lTzooOu CBm6UAIJXt3rHZnpoPtTrd35G1eB8egqnGgoK0bSYg+ujZiEX9AdpP1Tb+wcKGEFZn yulqZnvlHCM5w== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 07/10] cpuidle: Remove unnecessary current_clr_polling() on poll_idle() Date: Fri, 11 Aug 2023 19:00:46 +0200 Message-Id: <20230811170049.308866-8-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773956068527572040 X-GMAIL-MSGID: 1773956068527572040 There is no point in clearing TIF_NR_POLLING and folding TIF_NEED_RESCHED upon poll_idle() exit because cpuidle_idle_call() is going to set again TIF_NR_POLLING anyway. Also if TIF_NEED_RESCHED is set, it will be folded and TIF_NR_POLLING will be cleared at the end of do_idle(). Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- drivers/cpuidle/poll_state.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/cpuidle/poll_state.c b/drivers/cpuidle/poll_state.c index 009f46f121ae..44a656464d06 100644 --- a/drivers/cpuidle/poll_state.c +++ b/drivers/cpuidle/poll_state.c @@ -48,8 +48,6 @@ static int __cpuidle poll_idle(struct cpuidle_device *dev, } raw_local_irq_disable(); - current_clr_polling(); - return index; } From patchwork Fri Aug 11 17:00:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134625 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1258601vqi; Fri, 11 Aug 2023 10:49:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHaM6nllqHzr5TRNZruKJmyAK3qLjlvtrTAQGu95NzAKN3jZnfGJOfgC23yaUV7DD5KgzMv X-Received: by 2002:aa7:da4c:0:b0:523:ca05:6528 with SMTP id w12-20020aa7da4c000000b00523ca056528mr1794600eds.12.1691776190084; Fri, 11 Aug 2023 10:49:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691776190; cv=none; d=google.com; s=arc-20160816; b=WiEH+shTwa1qBo5welZPTjt6XmLosLcX1+h/0abhaDPpb1z9l/gd1tSUnTDRaxk6BL hU4VL2CsRKZJt1wj4do+QIYuiHB/Y3qDPmCkhlzN2phN5KgXQjd8DVjXmfifAoMXQXe7 uWZTdpeo3ejwAjoAgDRy6doEpPpZ4An00/5R1O6bNp28DQc9TePMJN1xhZZiTWHzjBtH qYLLRcq90qx+U1BOH80b6uErq/Spezo63PDj1+/C7Chzvc5NlFTmTU6Z4un74GENqm+k NbkRjTJvnSQMN0zZr1Cc03rccdRHTHARtksunLBhKj1XXDhmaDBjxxKO8h0TGCngNG63 TLcA== 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=h9jpzNoyji8s+VCgxNCeWarE0fnvpyGSAILy/5QpYLs=; fh=K1m6n+brToPLMsYko3rtXKxC+lCostu9M84onRqB7cU=; b=T9U6NdYrZZAliL8pn2xvIqex0QE4fnLHeoles0A/P6QKqqO8+6N7UAZ1v/tjd6GBzN aKgLR868NW4+EU0nFsavok9iQ0C319BUAUwEU9tfpsV3UU0efmEmfNLQL6EreBxSOkA9 PXsVtKBWM18xxdP/BewYGeTU+GdaILsZ7G5q/mYUB1Ry1z0apBPKZdTpiQCEQFizJ5zs P8cmPlcvQ5LxPc3V4emDT9693VrlrXxxtYrAKoskW51yYO+6SeyHJxpxEtUm4+78eTTS 2rzQkGRR9FiLOgEKhVTKGRprfyxfH8a25WZRA3hE7sKmnj+4kwWVWLzjd1BvZNn4y0iD 6atA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ZV58pxKm; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d7-20020aa7d5c7000000b0052322eb7739si3761908eds.33.2023.08.11.10.49.25; Fri, 11 Aug 2023 10:49:50 -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=ZV58pxKm; 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 S236558AbjHKRBk (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236229AbjHKRBQ (ORCPT ); Fri, 11 Aug 2023 13:01:16 -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 EA45530F0 for ; Fri, 11 Aug 2023 10:01:13 -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 7A59B67759 for ; Fri, 11 Aug 2023 17:01:13 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 44C77C433CA; Fri, 11 Aug 2023 17:01:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773272; bh=U6FUfmWsk+FhGtzYnlY3GoE5tLhV5tMKcMnNpThTCkM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZV58pxKmzLSPMaZiCldsycJVqKgIEqoKHshWDQ8vgXi1SSW2VWucBhgjWu0xTUAfX pJRibgZKZPYK7uZQPAIniijse8V4bO/cabLnzly0V7fwRfipt0EweNB8BM0mzbR8q9 +WfUOBx/78Qwz7EYKih5hY6fmZLBv1mPX8+oaa8JG8vBgNNUAGPfdGgxklEqOTjubV MGSzQA7TiORxR1kMRo5VA6drktmP7P/Usn0lNP8qIZIRNSo4KR4j5NwJzua0IDSjSW dmL1lK9qdaQsOE0Q66DOfOwtOzDD3elojxy+XAnIIVxxT5Iw2ee9Zi0H+2BAUfWR5A qWldTTNg4CfQw== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 08/10] x86: Remove __current_clr_polling() from mwait_idle() Date: Fri, 11 Aug 2023 19:00:47 +0200 Message-Id: <20230811170049.308866-9-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955910251652109 X-GMAIL-MSGID: 1773955910251652109 mwait_idle() is only ever called through by cpuidle, either from default_idle_call() or from cpuidle_enter(). In any case cpuidle_idle_call() sets again TIF_NR_POLLING after calling it so there is no point for this atomic operation upon idle exit. Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- arch/x86/kernel/process.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 72015dba72ab..f1eb769770b1 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -918,7 +918,6 @@ static __cpuidle void mwait_idle(void) raw_local_irq_disable(); } } - __current_clr_polling(); } void select_idle_routine(const struct cpuinfo_x86 *c) From patchwork Fri Aug 11 17:00:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134623 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1256951vqi; Fri, 11 Aug 2023 10:46:16 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH50sn5CWN4G4KA7QMkjat9ctv6f72yfI0vskJ6GezBYpfjO2VnO1Is5yN40pX4/r4/zpzJ X-Received: by 2002:a05:6a21:78a6:b0:141:d594:c85d with SMTP id bf38-20020a056a2178a600b00141d594c85dmr3204550pzc.0.1691775976257; Fri, 11 Aug 2023 10:46:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775976; cv=none; d=google.com; s=arc-20160816; b=tVrGJ5C+OEgTEwD7U2Q5I4tt4dSNzLHCNm2Mda9v9AgU2P7Hx9InhV0x1Q/JXruyIz Ok7Ln2KhK72ItQEirLtrSNsjPsImMu8DxLetzM9ENoyzSzMiYRcXBAwsQ+0mgkYM8UQ8 dHWWQpPUEggQu3dxQ5L7v1Fji5yfBdJVmwQLJ2+JQW9HDipkwOmcMPio7qZY/XrBhfgs AqVnfdflSK8HH8hHt8h9maGy2sAett9Qi4l8e0u8WDG8MP1dPVlroZUt0CyrDRi8wj0X lN7UrEJ06LzYb0erdOzshLGEeWZ1AYU6FB5hSpi73UkXaz+IPKEC0LGjaVu6fXo8fFsW mYAA== 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=IJRHoT4fhes4GgaWroXMPjpCYA8l4Ixor+bhxWQVlig=; fh=B15Ov2cShcY+dslvQFXR3OOrlAZYP5T4L/0y7SElBZE=; b=0mp2UKJGcV1sGjqplTjvlFYti6ZeSe2uIDy15g/eBfQ4BRge3TtmwYFZkab3X3sKVD FpmKm/zVyPm/NyEUQ41mkHO6AXb6pmrnsr6xCDsN9uKN/i3cmACuTPfEfU/zM/XKImG9 JNq84KEO4LMdRvHVOukIKkebZUwUHdb5F+Gw81OsFXc4wRBYKWAl290EBBNaVx7Y9MiJ wh8wqPIZeco/riC9ydcTVW6GvlYGQyjMtgR03edXzEOiMWyGLygV3+FUSbxKgJru65TG 4fj/rI21KJzDdo+1+O1ETuAH5vxaWyw1rkC5V9NPSIgk9dUljUaBHVLkj6Yp2AXUwCiD MIhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=tsZvUQ8y; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b20-20020a656694000000b00565333417aesi3745785pgw.108.2023.08.11.10.46.01; Fri, 11 Aug 2023 10:46:16 -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=tsZvUQ8y; 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 S236272AbjHKRBq (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236258AbjHKRBT (ORCPT ); Fri, 11 Aug 2023 13:01:19 -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 8D34C30F4 for ; Fri, 11 Aug 2023 10:01:16 -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 B406B65816 for ; Fri, 11 Aug 2023 17:01:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5A9C4C433CC; Fri, 11 Aug 2023 17:01:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773275; bh=MZmgDtu6USFXQ4e5nMMY/JREFBhjkYnO2RkDI2BMkjU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tsZvUQ8ySYF4A2/3RW0XnSo8R5YkRZYqdUrubU/I4yprZB7EkuAc8o0ZDWS6CgdIj /pti4fyBFMT4Sv5SBTP1DZ9IRU8YcGYdjcDmsKDoZ/rHHBT5zmVCoPU9Q3MjhOn8/C E9AuFAiCgmS2cl/iDyxSVbPN47DpkxdEM6o8+FBYHd0GnoMFW3PT3fUriTZ71egoNH by8fx8X7n9VDlixdvztUxnZdl4Hwp0qoCeTXDXltjXgxrB/tHMV9Q2f0oVRYsGAPD4 xUhRjxJQ6Bdp+cro5zKPo1PCtBsS9f+d30qWxh2lr1VXdSqk/+Te1ThPAtMV016YG5 4HiBbDkUAESlA== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Len Brown , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 09/10] x86: Remove the current_clr_polling() call upon mwait exit Date: Fri, 11 Aug 2023 19:00:48 +0200 Message-Id: <20230811170049.308866-10-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955686264732693 X-GMAIL-MSGID: 1773955686264732693 mwait_idle_with_hints() is mostly called from cpuidle which already sets back TIF_NR_POLLING and fold TIF_NEED_RESCHED if necessary. The only non-cpuidle caller is power_saving_thread() which acts as an idle loop and is the only reason why mwait_idle_with_hints() carries a costly fully ordered atomic operation upon idle exit. Make this overhead proper to power_saving_thread() instead which already duplicates quite some cpuidle code. Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- arch/x86/include/asm/mwait.h | 1 - drivers/acpi/acpi_pad.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/include/asm/mwait.h b/arch/x86/include/asm/mwait.h index 920426d691ce..c1be3775b94a 100644 --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -134,7 +134,6 @@ static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned lo } } } - current_clr_polling(); } /* diff --git a/drivers/acpi/acpi_pad.c b/drivers/acpi/acpi_pad.c index 7a453c5ff303..5a44afafe185 100644 --- a/drivers/acpi/acpi_pad.c +++ b/drivers/acpi/acpi_pad.c @@ -174,6 +174,7 @@ static int power_saving_thread(void *data) stop_critical_timings(); mwait_idle_with_hints(power_saving_mwait_eax, 1); + current_clr_polling(); start_critical_timings(); tick_broadcast_exit(); From patchwork Fri Aug 11 17:00:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 134619 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1255685vqi; Fri, 11 Aug 2023 10:43:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGkQnlj4R8lRtZWXZgPTcDMhz6YGYTDeBMjA8NcVmmos/fcDar9nFVY+axcox2+HbdXSx+F X-Received: by 2002:a17:902:e809:b0:1bc:8fca:9d59 with SMTP id u9-20020a170902e80900b001bc8fca9d59mr2910412plg.29.1691775818333; Fri, 11 Aug 2023 10:43:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691775818; cv=none; d=google.com; s=arc-20160816; b=TRg1xyU/AOgtlMsvZqIdCzbmu5xETwdbioJq6tlnBbEVElkIYP/zoWcLNsPwYdW8RH +5lf5Cu0WDf7ael0jXe9f+tfeiLZf8mDTZUBOHNjnFWCDnzOaO4MSzuOGACOysRQaeBb ambENsTsdcop2pNh98WND6e73yjL493SwUlrH12zmikF8FeVOo4bKGtWAVOYAzlicHn+ Hpme1dMH1zaR+X1vFYYLlmWqDZ+yVtLyuIGfC5dDyo+sHIbwwRcchJmC5udf7eZHoqqA 4+zQ/6+ePXV0AW0LuIRi10Lxu+DCHOSJ1RdGZFcQlEhbpGlk/d6xyVM+Li19+SvOsHM3 VPPA== 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=/1e/Ezvk0A+lAKVouQTAbob1bW/Pz5dNlGk3HL43HOs=; fh=K1m6n+brToPLMsYko3rtXKxC+lCostu9M84onRqB7cU=; b=Ka6oOWCobUuIIzwlXQz7jkmt7MRmshtRsT/+c+ZYUieeZHQ+kNMwJxpl5HpKbST5Sy WtQKPzN+LUic7KoCiWX7EKKs69R/63TF6VN1pSfVUEdz6gcDTs9g+1go5jIpRt76KlKx MpC+3wOelIY4VeGwfcLz7urU/2adyYEqJoTy6LuIbpZq8m8yieXSP/Cab1zw6cGmPkDQ 8TO4b8V97EMpJIPNyXVEIM6YhRjcsh/SpE4v1hACzMsC1uXzkIRa27EI08R+HYDguHA0 SJSaZ/0QYj6BL74lCs4B8NPZP6KwHtIDXKhWh3UhWQ5VpA5hx+cLF/09beydWlnCxgml ygbg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=NrrMLc0j; 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: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id iw12-20020a170903044c00b001b8944aa943si3513575plb.315.2023.08.11.10.43.24; Fri, 11 Aug 2023 10:43:38 -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=NrrMLc0j; 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 S236432AbjHKRBs (ORCPT + 99 others); Fri, 11 Aug 2023 13:01:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233683AbjHKRBV (ORCPT ); Fri, 11 Aug 2023 13:01:21 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B5E530FC for ; Fri, 11 Aug 2023 10:01:18 -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 BF77065939 for ; Fri, 11 Aug 2023 17:01:17 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9360CC433CB; Fri, 11 Aug 2023 17:01:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1691773277; bh=P4hs1/vw36aQkpeJTSOOps59gS7gR0fhrgXS9eBIDR8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NrrMLc0j8bQVcFnhM/w9g+r6Jx7CbJC1Aptg+KGJMQYywqTu8zZGMtNNk2L+HG9z0 tqpckeIrYK2wdaicMpSB3HMZKuo+d98Tz6kQ5+JSek8FQffuhop5UonVZXQPUj1g1g vuvlBpHO6d31PCOCW5avnN1CjyuoYN6vwOpFMN1oM2kKu5cWwfkRlDAa05OdPN3LkG aIvAmc1WKA9b01Qv2qvPwQPLVzPviCfRZVpPtd8hwOEUe25TgQMLdZ7FdMnn00CYt8 vBcppA144m1gmulthZZ7oeI49eYC85SAMKw0YZVCbAd/fUMOVrMWfnNendhXccnQbg j7psMNPqSQTkg== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Peter Zijlstra , "Rafael J . Wysocki" , Daniel Lezcano , Thomas Gleixner , Anna-Maria Behnsen Subject: [PATCH 10/10] sched/timers: Explain why idle task schedules out on remote timer enqueue Date: Fri, 11 Aug 2023 19:00:49 +0200 Message-Id: <20230811170049.308866-11-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230811170049.308866-1-frederic@kernel.org> References: <20230811170049.308866-1-frederic@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773955520665221724 X-GMAIL-MSGID: 1773955520665221724 Trying to avoid that didn't bring much value after testing, add comment about this. Signed-off-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki --- kernel/sched/core.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c52c2eba7c73..e53b892167ad 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1135,6 +1135,28 @@ static void wake_up_idle_cpu(int cpu) if (cpu == smp_processor_id()) return; + /* + * Set TIF_NEED_RESCHED and send an IPI if in the non-polling + * part of the idle loop. This forces an exit from the idle loop + * and a round trip to schedule(). Now this could be optimized + * because a simple new idle loop iteration is enough to + * re-evaluate the next tick. Provided some re-ordering of tick + * nohz functions that would need to follow TIF_NR_POLLING + * clearing: + * + * - On most archs, a simple fetch_or on ti::flags with a + * "0" value would be enough to know if an IPI needs to be sent. + * + * - x86 needs to perform a last need_resched() check between + * monitor and mwait which doesn't take timers into account. + * There a dedicated TIF_TIMER flag would be required to + * fetch_or here and be checked along with TIF_NEED_RESCHED + * before mwait(). + * + * However, remote timer enqueue is not such a frequent event + * and testing of the above solutions didn't appear to report + * much benefits. + */ if (set_nr_and_not_polling(rq->idle)) smp_send_reschedule(cpu); else