From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 600BFC4332E for ; Thu, 19 Mar 2020 09:25:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4230620754 for ; Thu, 19 Mar 2020 09:25:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726926AbgCSJZ5 (ORCPT ); Thu, 19 Mar 2020 05:25:57 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:60077 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725767AbgCSJZ4 (ORCPT ); Thu, 19 Mar 2020 05:25:56 -0400 Received: from bigeasy by Galois.linutronix.de with local (Exim 4.80) (envelope-from ) id 1jErQq-0004NV-Su; Thu, 19 Mar 2020 10:25:40 +0100 Date: Thu, 19 Mar 2020 10:25:40 +0100 From: Sebastian Andrzej Siewior To: Joel Fernandes Cc: "Paul E. McKenney" , Josh Triplett , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Thomas Glexiner , Scott Wood , Clark Williams , Juri Lelli , linux-rt-users@vger.kernel.org, rcu , LKML , Ingo Molnar Subject: Re: RCU use of swait Message-ID: <20200319092540.gpgzx2qao3r4okql@linutronix.de> References: <20200305003526.GA20601@paulmck-ThinkPad-P72> <20200305081135.yg7wryd3hrqzocrm@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2020-03-18 20:47:18 [-0400], Joel Fernandes wrote: > In RCU, there are some truly-atomic code sections containing an > swake_upXX() call, which would be considered atomic also on > PREEMPT_RT, one example is: > > rcu_core() contains an local_irq_{save,restore}() section. > > /* No grace period and unregistered callbacks? */ > if (!rcu_gp_in_progress() && > rcu_segcblist_is_enabled(&rdp->cblist) && !offloaded) { > local_irq_save(flags); > if (!rcu_segcblist_restempty(&rdp->cblist, RCU_NEXT_READY_TAIL)) > rcu_accelerate_cbs_unlocked(rnp, rdp); > local_irq_restore(flags); > } > > And rcu_accelerate_cbs_unlocked(rnp, rdp) calls rcu_gp_kthread_wake() > which does an swake_up_one(), so I think we will have to leave it as > swake_up() the way it is. There is also this: irq_exit() rcu_irq_exit() rcu_nmi_exit_common(true); rcu_prepare_for_idle() if (rcu_segcblist_pend_cbs(&rdp->cblist)) rcu_gp_kthread_wake() swake_up_one(&rcu_state.gp_wq); So I *think* this is another one. > thanks, > > - Joel Sebastian