Received: by 2002:a05:6358:f14:b0:e5:3b68:ec04 with SMTP id b20csp1709134rwj; Sun, 18 Dec 2022 14:00:07 -0800 (PST) X-Google-Smtp-Source: AA0mqf5Wbpm8ZIee2a4llyMhgALvW5F4gIllGvjIe9wHZXFds/rIirFmLJk0NfKsYbw+hsLaHoP8 X-Received: by 2002:a05:6402:142:b0:46f:f36b:a471 with SMTP id s2-20020a056402014200b0046ff36ba471mr35958359edu.22.1671400807076; Sun, 18 Dec 2022 14:00:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671400807; cv=none; d=google.com; s=arc-20160816; b=EWdE1fPQc64Uiewx2ipLWGH71xCzYJ+AoUJwL+Fi28mNIw9G54AxuamUj+jFElouCN 3VhwPd1r2eusOXAQGPjow1PD36IajShtHUHyuXcWUY4SWB+mFlXcgtMLVeXLw5uk6ffc TnzqCm6h6lMm02ZpriQ0s5LRItKOqPAi4RVBetovYr5fy498nJuC9OfeWfdksVx9zokF 4SiUDSzp16uyzuF+9nDS6obXQfMpwugyayXA7INs/rAGMODv1dbzYUY+g36+BBlAJV2V QnPRqGARR7nbmsQsYcIjk3nNxhWuXdE8ST/qsI323PUP50YwJ6CIozU6Mxpu/TZcnrP6 HU5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=TpHLqKVH79TMfENsVoD6e8/Lr+5zSBRRAc4inRZzCrU=; b=dEU+oMJSH8gXsAMos9AagR4rRMdWsa2Y2iMDvIJoaeAJr3jLvMpyjVBf4HzJwTVXk+ TdE14yHxWaqDtKY1I1Xg06RW0r00Tr2O7kDIwh2ajYX9Enoefs3QjboPu0Ll8yvJ4yU1 M4CSvIdTYt3KuQCjMKPKsiR2e64e6AXCqlDAA4oudDmoNRtqxtYSLfAIgr4i6hIKwoHR EgqPXWW5vvIiylahy7LDoXgL+rLo3jDBE8TR3T6tzggpRM8HAAq2IZ2Hd6wQNBfRt1Qs Vs/YIFcQbXP0t3YNecPZMKuwTbRomnSBo8jlDyTCR+OB1wAiqxeCjoZrS8e1leFjYHW3 3zqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b=e1JcGvnD; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qb22-20020a1709077e9600b007e08e2619e7si5827213ejc.860.2022.12.18.13.59.50; Sun, 18 Dec 2022 14:00:07 -0800 (PST) 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=@joelfernandes.org header.s=google header.b=e1JcGvnD; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230385AbiLRVDC (ORCPT + 70 others); Sun, 18 Dec 2022 16:03:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59126 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229507AbiLRVCu (ORCPT ); Sun, 18 Dec 2022 16:02:50 -0500 Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 232C33882 for ; Sun, 18 Dec 2022 13:02:49 -0800 (PST) Received: by mail-lf1-x129.google.com with SMTP id y25so11039730lfa.9 for ; Sun, 18 Dec 2022 13:02:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=TpHLqKVH79TMfENsVoD6e8/Lr+5zSBRRAc4inRZzCrU=; b=e1JcGvnD65bW967DfJog3AZxXpOmuu+jYa1ApT5630jyeoOCmlyWuEwO+ZgltGghnY t4ur771veL8Pg17VQ1FaBy754bS3dZXsNhSAdrxTZg/Ji1yfZxA9drVx6NLPD4RMqUpj YqZpWNB6an6jwEowgAnN60zvfNtIRDH+fPaOg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TpHLqKVH79TMfENsVoD6e8/Lr+5zSBRRAc4inRZzCrU=; b=g7pGZV8v7fqzigRAEG2TSP8XJ9J5JbydKFLRa1A5V24HaFkDBcUrbeie0w35jkTEfy FG55xNsMKZOsikNByfhpyZAmOpbdoCCziE7yGKjYa4WS44mn54e32/tb5AkWedbTP3Iw pK50p/9cE9Y79judf4SbBsg+FHCh95V53ZsPZIrQbJvDv0ro64pl/1OofGFSpH3+7Pac ooytKhgZD7ReseSZp7qzmcv2rdv6zMEHsG8oUyTc6ya+3XZsKyXU9fz/PpXNwf8jddvh 3NxbGVzKu6uKayG5TG2izoSkUMRkbZUjRH440cMWhnSkLq6a28I09KhZEgDChpRkMGbg eecw== X-Gm-Message-State: ANoB5plwqU2Q1LGpMtHBw7Y8lqUHYoimL/iSnjOjFSiSGbNa8OjNII+T Xkz9qQEEZXEHHwb5o1+owN/BUvDUoDaiGiq5YB0Q/g== X-Received: by 2002:a05:6512:224c:b0:4b5:ad89:8174 with SMTP id i12-20020a056512224c00b004b5ad898174mr3182761lfu.84.1671397367405; Sun, 18 Dec 2022 13:02:47 -0800 (PST) MIME-Version: 1.0 References: <20221215035755.2820163-1-qiang1.zhang@intel.com> <20221217010345.GF4001@paulmck-ThinkPad-P17-Gen-1> <20221217051759.GK4001@paulmck-ThinkPad-P17-Gen-1> <20221218180638.GR4001@paulmck-ThinkPad-P17-Gen-1> <20221218194434.GS4001@paulmck-ThinkPad-P17-Gen-1> In-Reply-To: <20221218194434.GS4001@paulmck-ThinkPad-P17-Gen-1> From: Joel Fernandes Date: Sun, 18 Dec 2022 16:02:35 -0500 Message-ID: Subject: Re: [PATCH] rcu: Fix opposite might_sleep() check in rcu_blocking_is_gp() To: paulmck@kernel.org Cc: "Zhang, Qiang1" , "frederic@kernel.org" , "quic_neeraju@quicinc.com" , "rcu@vger.kernel.org" , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, 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 On Sun, Dec 18, 2022 at 2:44 PM Paul E. McKenney wrote: [...] > > > > If not, I would do something like this: > > > > > > > > ---8<----------------------- > > > > > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > > > index 79aea7df4345..23c2303de9f4 100644 > > > > --- a/kernel/rcu/tree.c > > > > +++ b/kernel/rcu/tree.c > > > > @@ -3435,11 +3435,12 @@ static int rcu_blocking_is_gp(void) > > > > { > > > > int ret; > > > > > > > > + might_sleep(); /* Check for RCU read-side critical section. */ > > > > + > > > > // Invoking preempt_model_*() too early gets a splat. > > > > if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE || > > > > preempt_model_full() || preempt_model_rt()) > > > > return rcu_scheduler_active == RCU_SCHEDULER_INACTIVE; > > If the scheduler is inactive (early boot with interrupts disabled), > we return here. > > > > > - might_sleep(); /* Check for RCU read-side critical section. */ > > We get here only if the scheduler has started, and even then only in > preemption-disabled kernels. > > Or is you concern that the might_sleep() never gets invoked in kernels > with preemption enabled? Fixing that would require a slightly different > patch, though. > > Or should I have waited until tomorrow to respond to this email? ;-) No, I think you are quite right. I was not referring to rcu_sleep_check(), but rather the following prints in might_sleep(). I see an unconditional call to might_sleep() from kvfree_call_rcu() but not one from synchronize_rcu() which can also sleep. But I see your point, early boot code has interrupts disabled, but can still totally call synchronize_rcu() when the scheduler is INACTIVE. And might_sleep() might bitterly complain. Thanks for the clarification. pr_err("BUG: sleeping function called from invalid context at %s:%d\n", file, line); pr_err("in_atomic(): %d, irqs_disabled(): %d, non_block: %d, pid: %d, name: %s\n", in_atomic(), irqs_disabled(), current->non_block_count, current->pid, current->comm); pr_err("preempt_count: %x, expected: %x\n", preempt_count(), offsets & MIGHT_RESCHED_PREEMPT_MASK); Thanks, - Joel > > > > /* > > > > * If the rcu_state.n_online_cpus counter is equal to one,