Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp868542rdg; Wed, 11 Oct 2023 07:44:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG2e6hUiWoicFNKNnHs3SCCd4/MuoPxCk++iPYg4hLM8uf0Kjvtj7AH+/WCYGUULK3Jut0A X-Received: by 2002:a17:902:ea05:b0:1c9:bf02:664b with SMTP id s5-20020a170902ea0500b001c9bf02664bmr4780882plg.7.1697035475372; Wed, 11 Oct 2023 07:44:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697035475; cv=none; d=google.com; s=arc-20160816; b=X1d7slmYlMcrbDW3WlSkGBlXXlSJTth5nXBE8Bh9AmgavFpJ/ukt6mLu+deBbyXMzo GTE07b5mdDGpqVA8cdhVUKhwMOKnnFbcU1qBCWPVOT7wn2t1UNIAsB/AwUB5FhiVEL1q XYxqVTesdX6/+SSCzSOQLLSATCr1/nqquOnofiJ6a78y83RJyOE5MC7erb/YZMetY/j4 sW0XVVpQ9pGGdGR4dCLnFvTL8XEU6FoYobmUY+itrpeoX0EM4OV/Z3Zn5IZyXCHlZ+Mk dft1JtPtfOydzo6e5Wg4ftKmbGjMTinOuu58yvuM3dm0stOrlvq9BIzIjub6n4dVsvi/ LIBw== 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:subject:cc:to:from:date; bh=iowOyxCNnwYSbdfE3CfJA5ZLpYlYTt+UVvXyNcU5uG4=; fh=Ck2sHx0mEXN7xDxHNvqsbaPiffvBnHlnnSPmGx7JX74=; b=FLTCJ6h+TK/pAFHGBBF92YsXSbPkHFj7PJch/qVIfybl6eAOg8m3DQGWh7eccvpmCS D5a33cT7w4nmwdVGI1BgYldygbClSeEId5II0Eby4P+pL7c7EbYPwMxPIs8OXwX1rBAy ot6ZkklpSOxRQXeWzLSzA26fn4uLcrE19JkahGYWsRG+yzI6w/ebjX/yI1w6+xsnyuKH AMz1KgkAtGFBvUQL24CeV7028yedatxYoOCfqSTHxKgdWEjtJqhm13stDb9K+kfnOMXd JY8+L5oogVKf8gnx+oSRIkNY1j39SGXK5+KY5mtKCrVImu6N/K+1ZWjGhxoKA9uknlgR ISGQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id u2-20020a17090341c200b001c9ce2b6ba0si1664071ple.278.2023.10.11.07.44.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Oct 2023 07:44:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 8F07A80ECF89; Wed, 11 Oct 2023 07:44:32 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235041AbjJKOoP (ORCPT + 99 others); Wed, 11 Oct 2023 10:44:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234947AbjJKOoO (ORCPT ); Wed, 11 Oct 2023 10:44:14 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D72EBB6; Wed, 11 Oct 2023 07:44:09 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5030CC433C8; Wed, 11 Oct 2023 14:44:07 +0000 (UTC) Date: Wed, 11 Oct 2023 10:45:29 -0400 From: Steven Rostedt To: Greg Kroah-Hartman Cc: Naresh Kamboju , Masami Hiramatsu , stable@vger.kernel.org, patches@lists.linux.dev, linux-kernel@vger.kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, linux@roeck-us.net, shuah@kernel.org, patches@kernelci.org, lkft-triage@lists.linaro.org, pavel@denx.de, jonathanh@nvidia.com, f.fainelli@gmail.com, sudipm.mukherjee@gmail.com, srw@sladewatkins.net, rwarsow@gmx.de, Mark Rutland , "Paul E. McKenney" , Peter Zijlstra Subject: Re: [PATCH 4.19 00/29] 4.19.282-rc1 review Message-ID: <20231011104529.75f53d4b@gandalf.local.home> In-Reply-To: <2023101125-subpanel-enviably-28cd@gregkh> References: <20230424131121.155649464@linuxfoundation.org> <20230426170945.0ec0f1ef@gandalf.local.home> <20230426181415.17c893f5@gandalf.local.home> <2023101132-playable-flagstick-1abf@gregkh> <2023101125-subpanel-enviably-28cd@gregkh> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=2.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Wed, 11 Oct 2023 07:44:32 -0700 (PDT) X-Spam-Level: ** On Wed, 11 Oct 2023 11:05:48 +0200 Greg Kroah-Hartman wrote: > > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry. > > Nope, I can't, it doesn't apply there, so I need a backported, and > TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there. This is a quick backport for 4.19 as the conflict seemed to be due to added code that is unrelated to this change. I built and booted it, but it should have more testing. Naresh, if you want this in 4.19, please run it through your tests and give your tested by. Greg, please do not take it until Naresh has tested it. Thanks, -- Steve diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index 2d182dc1b49e..01bde6dec13a 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv, * executing it contains RCU usage regarded as invalid in the idle * context, so tell RCU about that. */ - RCU_NONIDLE(tick_freeze()); + tick_freeze(); /* * The state used here cannot be a "coupled" one, because the "coupled" * cpuidle mechanism enables interrupts and doing that with timekeeping * suspended is generally unsafe. */ stop_critical_timings(); + rcu_idle_enter(); drv->states[index].enter_s2idle(dev, drv, index); if (WARN_ON_ONCE(!irqs_disabled())) local_irq_disable(); @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv, * first CPU executing it calls functions containing RCU read-side * critical sections, so tell RCU about that. */ - RCU_NONIDLE(tick_unfreeze()); + rcu_idle_exit(); + tick_unfreeze(); start_critical_timings(); time_end = ns_to_ktime(local_clock()); @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv, /* Take note of the planned idle state. */ sched_idle_set_state(target_state); - trace_cpu_idle_rcuidle(index, dev->cpu); + trace_cpu_idle(index, dev->cpu); time_start = ns_to_ktime(local_clock()); stop_critical_timings(); + rcu_idle_enter(); entered_state = target_state->enter(dev, drv, index); + rcu_idle_exit(); start_critical_timings(); sched_clock_idle_wakeup_event(); time_end = ns_to_ktime(local_clock()); - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu); + trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu); /* The cpu is no longer idle or about to enter idle. */ sched_idle_set_state(NULL); diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 44a17366c8ec..4e3d149d64ad 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup); static noinline int __cpuidle cpu_idle_poll(void) { + trace_cpu_idle(0, smp_processor_id()); + stop_critical_timings(); rcu_idle_enter(); - trace_cpu_idle_rcuidle(0, smp_processor_id()); local_irq_enable(); - stop_critical_timings(); while (!tif_need_resched() && - (cpu_idle_force_poll || tick_check_broadcast_expired())) + (cpu_idle_force_poll || tick_check_broadcast_expired())) cpu_relax(); - start_critical_timings(); - trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id()); + rcu_idle_exit(); + start_critical_timings(); + trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()); return 1; } @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void) local_irq_enable(); } else { stop_critical_timings(); + rcu_idle_enter(); arch_cpu_idle(); + rcu_idle_exit(); start_critical_timings(); } } @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void) if (cpuidle_not_available(drv, dev)) { tick_nohz_idle_stop_tick(); - rcu_idle_enter(); default_idle_call(); goto exit_idle; @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void) if (idle_should_enter_s2idle() || dev->use_deepest_state) { if (idle_should_enter_s2idle()) { - rcu_idle_enter(); entered_state = cpuidle_enter_s2idle(drv, dev); if (entered_state > 0) { local_irq_enable(); goto exit_idle; } - - rcu_idle_exit(); } tick_nohz_idle_stop_tick(); - rcu_idle_enter(); next_state = cpuidle_find_deepest_state(drv, dev); call_cpuidle(drv, dev, next_state); @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void) else tick_nohz_idle_retain_tick(); - rcu_idle_enter(); - entered_state = call_cpuidle(drv, dev, next_state); /* * Give the governor an opportunity to reflect on the outcome @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void) */ if (WARN_ON_ONCE(irqs_disabled())) local_irq_enable(); - - rcu_idle_exit(); } /*