From patchwork Wed Mar 5 03:04:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001895 Received: from mail-qv1-f43.google.com (mail-qv1-f43.google.com [209.85.219.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C8C311624CF; Wed, 5 Mar 2025 03:05:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143918; cv=none; b=Is9yuRbxg6VtC+YMxA5AkycIvmsCI9G7tB9nh4W4x1as/mJn0VU/9W1crN5bWP0hxmoUnyGUjmkg5ZzLWcvnpzTyTsYreLt6Ju+maZZh8feFAV4xhHtMArqgKxQmBgW6ZwRh31rA9tg4OQA5AW79ZvV6aBnR4FV6Opwy8M8Qqto= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143918; c=relaxed/simple; bh=ktfnCTdprKnslNhLJY+ueq/kb0WJC7nvwCfvHWR/fNM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K080qV9kmGHXYTHwdt0ghTcEY238zxlcDYTCuKzdn29Wb1yeSvPcYI5uHtNxwPjS+vGuRSWK3Sltrbaiw3inVlObZSQv7PfHl+ko3NgX2oR6JbZCroNjeQ0FnRQZQ2QhTGPeqt+FykZWDJckAi2LM1k2C8M53TC/saDSfUpEArk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IbT6ht7e; arc=none smtp.client-ip=209.85.219.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IbT6ht7e" Received: by mail-qv1-f43.google.com with SMTP id 6a1803df08f44-6e8e6dee861so4296266d6.1; Tue, 04 Mar 2025 19:05:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143915; x=1741748715; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=6dypZEQA15NBPzNlTYgAS3T1CsEbXqMrVbTKXugqbh8=; b=IbT6ht7eLj4wmunbcz6BEpWSSxGtPN2iKGs1iSU2ELZuDQ0SLPgzN760eiEnwBtV6k eK9ugn0RUnWSWvpd/teklt2uc6InysHiE8uggl6BPHQWSWedNsHIyaSHT/hqmeXkCskn 6GA2kHKH3Uv2niqGGCWW9q8r209+vcenO6QUQKtEKoIVEk4VJiFGMzu/+VzYVqinWulC L2SBwBGJU1t1m5Zfb3qxZS1YYUOpX1hGUGBWp0bw6k2ZZC9oKRtgHHHM0u8cRYXwYiga /lzTTPFilvm1E+LQtiNRDJ/YjM6GbbXXMWqXt6X0Iwb2uKy3weWTVLOuzvc5cDa9ED6W saDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143915; x=1741748715; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=6dypZEQA15NBPzNlTYgAS3T1CsEbXqMrVbTKXugqbh8=; b=Zxn5v+jswXfIpajl0Bc1VuLyStLQF5H8tWthRmRTHWEC9SUToOxTGw9UYilIC86v/S jGDuN4wcEELExeKLnA3XqF64gS3nCV85XLdFiSzcXY8W1NKj0jB+GOhG6hB1Mr3R5BMe K0jK23aMjKw/jr3snzNtePtsW6hutc3Y4sXWW6Y8ACmA+CBSB4nswKLCakEmekDBdDg4 ezTP/5Q6lYJ5F8EOGtbwujZTRpnzGVCsuZApjc+JOH3eoNpJXQQiio1j9Fz5SRCIdGYq 9iOZFRcvHBwfuAyCQBPiBeVfzg03SjoXXjG6iAlL0Px/+cSQmRQix29XYXKLzXKBU5n6 i0qQ== X-Forwarded-Encrypted: i=1; AJvYcCUI7HulfIqeytx9VJ9akdrIZssIutlRxJP3RmAT7M8/Xs0rW9g8bpQ1aTmaWnccFSsK0wfDcffY6S0R4RyAkii0@vger.kernel.org, AJvYcCXZJwZAxh7X0VHPATll0FxadlhwVGvyBypKYl86GNSqSDASIbf+8rQNl5SRs2kUV9L9WM5pR3BcPzwY0zo=@vger.kernel.org X-Gm-Message-State: AOJu0YzG1LEJIqw9tLZfpFeNVY57BkzzBwajW1IWKnboXcZW0SpzxIqH wmFazXjLqRGS8ZA9k7YNf95Q/X5RLy3S2PgQ8Ga7yJgdo/HI8UeH X-Gm-Gg: ASbGncsCz5/Wv9iU3YyhIX+oqO2ieQBi1II17lalIh/gOT1ChXVyonHKddNqEghM+3u J39YGCC2BgR4GBsWAkLrY7PM5t3xJWrsJMh4N57DS9nNKpvMXAUyxbn4DCSo8nM8pIlTg8OBDnu uQznAU3ciihFHgmsDF6tAeylkHJ4pblEyeDb6cApeDLikKSXa7/+6uq4l7nYmtwe+u57Ry4oJwg 6OhMH7alB80BpSdyTDxjkukn9v1/nmMnSpkwgIZAsA1XD/y6XcgviJ3qYKcmNkuwhncCrCZv/og RTmsEhYZWzHn1Fz40CDT8eXQJ0a63ZiW3mcNVZOho4vR7zA9BpUFXS682KLrJ+CZjHaq4jY/g3X m9Y+cv2m9OFxW6fTcdB388gxN1Iw9pc96jPc= X-Google-Smtp-Source: AGHT+IGdU8coVX+JMyUMPQF4yyJnAWCWWGbGkl/W+cncdRf0cJd+55o4XN6k3TifudLcwTrFi2c1Sg== X-Received: by 2002:a05:6214:da5:b0:6e6:646d:7550 with SMTP id 6a1803df08f44-6e8e6f8fdd9mr28695586d6.19.1741143914630; Tue, 04 Mar 2025 19:05:14 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6e8976ccbacsm74260296d6.93.2025.03.04.19.05.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:14 -0800 (PST) Received: from phl-compute-12.internal (phl-compute-12.phl.internal [10.202.2.52]) by mailfauth.phl.internal (Postfix) with ESMTP id 7CCAF120006A; Tue, 4 Mar 2025 22:05:13 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-12.internal (MEProxy); Tue, 04 Mar 2025 22:05:13 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpeegleejiedthedvheeggfejveefjeejkefg veffieeujefhueeigfegueehgeeggfenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegsohhquhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgr lhhithihqdeiledvgeehtdeigedqudejjeekheehhedvqdgsohhquhhnrdhfvghngheppe hgmhgrihhlrdgtohhmsehfihigmhgvrdhnrghmvgdpnhgspghrtghpthhtohepfeejpdhm ohguvgepshhmthhpohhuthdprhgtphhtthhopehrtghusehvghgvrhdrkhgvrhhnvghlrd horhhgpdhrtghpthhtohepphhmlhgruggvkhesshhushgvrdgtohhmpdhrtghpthhtohep rhhoshhtvgguthesghhoohgumhhishdrohhrghdprhgtphhtthhopehjohhhnhdrohhgnh gvshhssehlihhnuhhtrhhonhhigidruggvpdhrtghpthhtohepshgvnhhoiihhrghtshhk hiestghhrhhomhhiuhhmrdhorhhgpdhrtghpthhtohepphgruhhlmhgtkheskhgvrhhnvg hlrdhorhhgpdhrtghpthhtohepfhhrvgguvghrihgtsehkvghrnhgvlhdrohhrghdprhgt phhtthhopehnvggvrhgrjhdruhhprgguhhihrgihsehkvghrnhgvlhdrohhrghdprhgtph htthhopehjohgvlhesjhhovghlfhgvrhhnrghnuggvshdrohhrgh X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:12 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev Subject: [PATCH rcu 01/10] rcu: Split rcu_report_exp_cpu_mult() mask parameter and use for tracing Date: Tue, 4 Mar 2025 19:04:56 -0800 Message-ID: <20250305030505.94059-2-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Paul E. McKenney" This commit renames the rcu_report_exp_cpu_mult() function from "mask" to "mask_in" and introduced a "mask" local variable to better support upcoming event-tracing additions. Signed-off-by: Paul E. McKenney Cc: Frederic Weisbecker Signed-off-by: Boqun Feng --- kernel/rcu/tree_exp.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h index 77efed89c79e..8d4895c854c5 100644 --- a/kernel/rcu/tree_exp.h +++ b/kernel/rcu/tree_exp.h @@ -230,17 +230,19 @@ static void __maybe_unused rcu_report_exp_rnp(struct rcu_node *rnp, bool wake) * specified leaf rcu_node structure, which is acquired by the caller. */ static void rcu_report_exp_cpu_mult(struct rcu_node *rnp, unsigned long flags, - unsigned long mask, bool wake) + unsigned long mask_in, bool wake) __releases(rnp->lock) { int cpu; + unsigned long mask; struct rcu_data *rdp; raw_lockdep_assert_held_rcu_node(rnp); - if (!(rnp->expmask & mask)) { + if (!(rnp->expmask & mask_in)) { raw_spin_unlock_irqrestore_rcu_node(rnp, flags); return; } + mask = mask_in & rnp->expmask; WRITE_ONCE(rnp->expmask, rnp->expmask & ~mask); for_each_leaf_node_cpu_mask(rnp, cpu, mask) { rdp = per_cpu_ptr(&rcu_data, cpu); From patchwork Wed Mar 5 03:04:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001896 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3C9C17B505; Wed, 5 Mar 2025 03:05:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143920; cv=none; b=evERz7oBVgqDtn8ANznOgx9rMAKSLWmRMlWQP8OaqyKVppAMrmtGIy4t42rkaBrAzqOBSzhycecFJK1ymObWSZugfVAWHy0eIoQcrTmqU0tjIkycI+jqkEC+tEEl45/LVwPz4RNjHjy7JRTuPMTZI4C3fTWWiPihqqr2Z/DU+sI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143920; c=relaxed/simple; bh=hk5QnFJjSZ7iRvyqIS25iiV+mIdjcFuYUi707oreHVA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CUQXzZb365TMjuwOmQmehdc9tfyRboQBkABXoDzr5N9r+kDVG8hsaGtwvj/rlIBvXf8f0pMsZyTXnJj2AaQpE1PQO7TeS3udMoW+1IlfSW74QyZVz8kgg0QqjbbXJlCkY50CifA8NtZPkuaBEII24iWdOfhbC9jo5QhMijMXki8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fpfPtzJ/; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fpfPtzJ/" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-7c0155af484so867141385a.0; Tue, 04 Mar 2025 19:05:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143917; x=1741748717; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=BxBF1wo3KRiCLNdhUdmDsNLFXHfzkw5YNel2ubjhH4Q=; b=fpfPtzJ/a1ntVd58B9zhXrXfR/gUvjcTnGLWNqEuKV3jSa0VH/qGxFKpRlb2+qfeoy nPl7IySeg5gZBvpyflHgcR3oC63NLg6HGeYj8S4CB0IDeMymTnBkJ9gjrfM7w+LB9Utm UtiZEUYVw0XbdnZHB8sGJIHhUnGkrP+UwcG8Mv0siqps5LJAX6teR1rVr31r87mNfolu lo/dmBzLt/rqTklwwTpQ14ImHv8j26zvSvrKXbMYyW8hlcMBMuVUsP5HBeHC4DMsXJ5k r3myAxbAQcaZHrX5qlPQ8d+hcONagser1/BqeBNCMkhRhitHM3aa2s+JHq1f8k6I6nz7 xhNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143917; x=1741748717; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=BxBF1wo3KRiCLNdhUdmDsNLFXHfzkw5YNel2ubjhH4Q=; b=jxEr0Jt3IbPWoANhy04kCLRePXdeUuAfr6+8ttg0S9/IEJ4MM6SrZG6U6q7SjkGaZO 5XEHh4frjdRKlKBis9vUOZ3RIiNOW7UVdj2zB0HlTRRb3MjVkJG1cnHe/A4+qxV8YEqv p6vXGzLJTZJkxYaz9Nd0x986WVm84wzdSuZemeAtW2JYRFvGMNF+VYm6NUz+nyNn3VFF oUTghIQJ4ScxNwwFjzMmL5AJ1pI3lTjxKMisSz/8yXAbR09ZjlCWT/yecFmOC52Y3UbP t0SUamj9UhChBHy/8H4dynV57242txAhbcQbeWat4+L6Lob+LQN/g0YD/OCU7+nb5gzb Ancg== X-Forwarded-Encrypted: i=1; AJvYcCVY1p1dccWTqB7sBiKGlYf6YRrHRe9d4a7bfPLnIPVdFR3FS25mGUnJseU+Vvyjos7mJemRya9uUR2FcxQevk4R@vger.kernel.org, AJvYcCVtsfZ0MgK2LMlaMGred+UNGSGDnzoxFQ1z4wx0KSWCBFOXk/sR9+W49RRvOm/Uap/RKlCi1kAcsNERWrg=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1xnptUqIm3iG+Xt4B42/06MBdkUuNIbSmt43L8/d2VkVUAJ3t 2OeFGjMNrZGdSqRTXGByU//lKARuuKI9qyKoTHfKtuxRO/sQPfgJ X-Gm-Gg: ASbGnctgV+pDG8yy5XcferJLsPkxIg+nhRpxRpsoGXjPIXiyDDWP70N3eINNTAlwzU/ IfeTu1LaJgizNitEkoEPFcSDayXL1JzgfzFheYeFZMEoDaa08axe9YHkLzn/lIWGdWB9ntH0Xy5 wzlt6OQid4xQJywUoveX2fdvFNhwEITR5WEFf3aqa4SE8g2gVnbwe4N8Ii32RG9tplvm3Hgu4eU THVwxGrNvIUXIt5R0iIDoy93rKWmd/r67XK7ZMVEdH2SDL8PqfUMs/LQov2CYBnUxASnvC3uMCE ubY9EcoA8PiZgWf8KTO+qNhBvdYrIjIzqLP4Nl/1UMZdcmc+Fh5cMopoP3xeBe0DSiGki+87ovJ V9duu9ZIS4h3CmUVV8Km29UqXwNrN9Ewicrc= X-Google-Smtp-Source: AGHT+IEFZsqWR69Mpv/uPHMZFiOoQX6OOFIDU/u9tPOLAlxZDv93fbbOFOcASesA9uVRFuhKHwZFCQ== X-Received: by 2002:a05:6214:20e3:b0:6e8:9957:e705 with SMTP id 6a1803df08f44-6e8e6d3596bmr24561186d6.34.1741143917557; Tue, 04 Mar 2025 19:05:17 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4750804b8c7sm9593281cf.33.2025.03.04.19.05.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:17 -0800 (PST) Received: from phl-compute-12.internal (phl-compute-12.phl.internal [10.202.2.52]) by mailfauth.phl.internal (Postfix) with ESMTP id 692DB120006A; Tue, 4 Mar 2025 22:05:16 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-12.internal (MEProxy); Tue, 04 Mar 2025 22:05:16 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpeegleejiedthedvheeggfejveefjeejkefg veffieeujefhueeigfegueehgeeggfenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegsohhquhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgr lhhithihqdeiledvgeehtdeigedqudejjeekheehhedvqdgsohhquhhnrdhfvghngheppe hgmhgrihhlrdgtohhmsehfihigmhgvrdhnrghmvgdpnhgspghrtghpthhtohepfeekpdhm ohguvgepshhmthhpohhuthdprhgtphhtthhopehrtghusehvghgvrhdrkhgvrhhnvghlrd horhhgpdhrtghpthhtohepphhmlhgruggvkhesshhushgvrdgtohhmpdhrtghpthhtohep rhhoshhtvgguthesghhoohgumhhishdrohhrghdprhgtphhtthhopehjohhhnhdrohhgnh gvshhssehlihhnuhhtrhhonhhigidruggvpdhrtghpthhtohepshgvnhhoiihhrghtshhk hiestghhrhhomhhiuhhmrdhorhhgpdhrtghpthhtohepphgruhhlmhgtkheskhgvrhhnvg hlrdhorhhgpdhrtghpthhtohepfhhrvgguvghrihgtsehkvghrnhgvlhdrohhrghdprhgt phhtthhopehnvggvrhgrjhdruhhprgguhhihrgihsehkvghrnhgvlhdrohhrghdprhgtph htthhopehjohgvlhesjhhovghlfhgvrhhnrghnuggvshdrohhrgh X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:15 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev, Zilin Guan Subject: [PATCH rcu 02/10] rcu: Remove READ_ONCE() for rdp->gpwrap access in __note_gp_changes() Date: Tue, 4 Mar 2025 19:04:57 -0800 Message-ID: <20250305030505.94059-3-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Zilin Guan There is one access to the per-CPU rdp->gpwrap field in the __note_gp_changes() function that does not use READ_ONCE(), but all other accesses do use READ_ONCE(). When using the 8*TREE03 and CONFIG_NR_CPUS=8 configuration, KCSAN found no data races at that point. This is because all calls to __note_gp_changes() hold rnp->lock, which excludes writes to the rdp->gpwrap fields for all CPUs associated with that same leaf rcu_node structure. This commit therefore removes READ_ONCE() from rdp->gpwrap accesses within the __note_gp_changes() function. Signed-off-by: Zilin Guan Signed-off-by: Paul E. McKenney Signed-off-by: Boqun Feng --- kernel/rcu/tree.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 475f31deed14..e4c0ce600b2b 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -1254,7 +1254,7 @@ static bool __note_gp_changes(struct rcu_node *rnp, struct rcu_data *rdp) /* Handle the ends of any preceding grace periods first. */ if (rcu_seq_completed_gp(rdp->gp_seq, rnp->gp_seq) || - unlikely(READ_ONCE(rdp->gpwrap))) { + unlikely(rdp->gpwrap)) { if (!offloaded) ret = rcu_advance_cbs(rnp, rdp); /* Advance CBs. */ rdp->core_needs_qs = false; @@ -1268,7 +1268,7 @@ static bool __note_gp_changes(struct rcu_node *rnp, struct rcu_data *rdp) /* Now handle the beginnings of any new-to-this-CPU grace periods. */ if (rcu_seq_new_gp(rdp->gp_seq, rnp->gp_seq) || - unlikely(READ_ONCE(rdp->gpwrap))) { + unlikely(rdp->gpwrap)) { /* * If the current grace period is waiting for this CPU, * set up to detect a quiescent state, otherwise don't @@ -1283,7 +1283,7 @@ static bool __note_gp_changes(struct rcu_node *rnp, struct rcu_data *rdp) rdp->gp_seq = rnp->gp_seq; /* Remember new grace-period state. */ if (ULONG_CMP_LT(rdp->gp_seq_needed, rnp->gp_seq_needed) || rdp->gpwrap) WRITE_ONCE(rdp->gp_seq_needed, rnp->gp_seq_needed); - if (IS_ENABLED(CONFIG_PROVE_RCU) && READ_ONCE(rdp->gpwrap)) + if (IS_ENABLED(CONFIG_PROVE_RCU) && rdp->gpwrap) WRITE_ONCE(rdp->last_sched_clock, jiffies); WRITE_ONCE(rdp->gpwrap, false); rcu_gpnum_ovf(rnp, rdp); From patchwork Wed Mar 5 03:04:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001897 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFB04189BB6; Wed, 5 Mar 2025 03:05:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143925; cv=none; b=nM6sF9yf/ar0iKtqwjCoGOwsBFqY8VwS026Yx1tT/xyOvNvcPocomyIWOQCJNnjkazWyKtpZhQ3M+RtD+Lp+lry/cnFjxzUdkB5+gaHAndgE6+aLQUOJi/HWzUSPgpVespo06b1E6nBDQvj0Cv44yl9IRYC8bQtgOuQwHZQNTrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143925; c=relaxed/simple; bh=adMX+dMsvQKA4HQUhdFW7hCyoQY2Szn+ZPD3KuV4Ogs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BvfOik20dMJW73e1HVvD/BM9kUW0ID/XYv19Hz7nTSUb24zRjtFyv1/yYEFPrgWq0W4UcZQmIDidaNQYrUPyRHOvDEBrw4CHxifDecK/QiyQrtLRccK10ao+drpcU4L58MNw2BSpwUcQk4lZ4HtzLn9Sa/wdf9G1yiWmJvERsu4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hh8OlOoX; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hh8OlOoX" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-7c08fc20194so1061823885a.2; Tue, 04 Mar 2025 19:05:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143921; x=1741748721; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=TREe/GczQCdCVP8xv9UeUs+VSfmkQsfQHVm77Mom6fk=; b=hh8OlOoXOhYQAyPicSJdJNfhRU1LwV2xdySz9F0oCa0hCH5WTjghnIPEL4ABCLDWyX uDpGQog8BmpMgXqpiZZIatYXr2DgqOwLhomlBCuOKddqUXrwVQolAba0KH4pMg5M255z Hdwb9p6rlfxlfPinp1+Ot7uvtnMTqBhgzYMBiAnnsf8TO52EekkHU5gUYXSSpnVhvUsL CzyqOcRi5wpdweSo7eRtTN0XqkJmODgyO+EFT66CoGyftYBJycqFUfJq4pTq+2DWFtyB 6l51zLxSUGtjl+MFwPJ7Muc2Msk/xxKYU3iH1VQv+QvZ9gK49inx5JyFASwZh/CryNUd zEnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143921; x=1741748721; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=TREe/GczQCdCVP8xv9UeUs+VSfmkQsfQHVm77Mom6fk=; b=t0tbIMRLQm1GEjdWBCi/MyfwzXL05nEShTzaIhD9XfU6f0Mkgw5AEXwLzIZfgQ75jQ eOSdh5+02KZX5ILzhifUfztHuwz2oxH89a2EbPCvyJLq+MfLlGjO/8sNcmKj39y9wYEv xFc3GmoBByec+/Af/9zgtGwjQiZP8YU0qcPXQ8RpB1RNOLjS5fiw/FReLT13TLrk0RWw Nwq+cjfJN5HqSV9hQFY0D7sG2icjLPSn5596mNHHTrfS+Wihct7P41TXVmpqJ6QP2sYJ tsA9eblhJBqQtKo5DvOdeGumwk313f0Lj09RaCyiTjnb/RXH84lHzFErVWt6D7Ak0E4y LOxA== X-Forwarded-Encrypted: i=1; AJvYcCXBDo8oGfgHnA6rA0Uoz11Z8jUeXREJa8Ojl7O0+BA7OWLaRTsyqeGByAW24h69+Aq5ArYIO4GKbIUECVI=@vger.kernel.org, AJvYcCXLYau4FDOo04zwKOX/103j9mQOrlVOglKe+cXakfjqmONBXC23YW2k+CtM+T/qWX2wxgF2J+Ge72zhKE6EdMoP@vger.kernel.org X-Gm-Message-State: AOJu0YzvNiiYi66TktakMuleKnsooBoqKCyhMGW2NMORs3p+9PuyKyFz 17TuBNbJF71Q1e2mo0jX/5cTz79Xp/Hf5S9JxdTlNx7hrIOZT2Kh X-Gm-Gg: ASbGncuTPmVB56iscGG/BFKFh5fPJJJy0SK3S5IEcQlCxNof+ecA+WXhS3tqOe3p5aT G5L3PDfkwD/KcLlDK7N3x5UDrc6v4/RCIzcs+auSghpPndDX6tPPxwfgTcFmGREE6sIMJODGQgK MkE+VeO6EsYzC9vSJij5KgoC2qEKxQaeZv1MTxXp6lc+OTuyKjKpEg0u7rtb5VanTOzFEWVChFK gqUuiga0TjplHXUoIodGhpn2lOfmBskGK6tuexCKR6nSJ9ZIsr7evni/2xSUEZT39OKpKC1aSzd 5ThaKBfFxlrcoQAuEEh6JIZhzoe38osk9x6fzgJUayTrnp8yBdlHcGRcsy6rX53yfwrs48G2mrk CUd0n1Ali1tOhDxnrY53v1a6PI0N3DY3IP0k= X-Google-Smtp-Source: AGHT+IGw01pjVMH6zPVh6zX2lReIYZbwSMgdLWY0SQZkkYGuKVTTap6vTQ91XjXJCakyuYJGmeqP0w== X-Received: by 2002:a05:620a:640b:b0:7c3:d2e9:b6d6 with SMTP id af79cd13be357-7c3d8e8c0c3mr318383785a.49.1741143921368; Tue, 04 Mar 2025 19:05:21 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3cd20e6bdsm195370085a.23.2025.03.04.19.05.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:21 -0800 (PST) Received: from phl-compute-02.internal (phl-compute-02.phl.internal [10.202.2.42]) by mailfauth.phl.internal (Postfix) with ESMTP id 4EF10120006B; Tue, 4 Mar 2025 22:05:20 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Tue, 04 Mar 2025 22:05:20 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertder tdejnecuhfhrohhmpeeuohhquhhnucfhvghnghcuoegsohhquhhnrdhfvghnghesghhmrg hilhdrtghomheqnecuggftrfgrthhtvghrnhepgeffjedugeeujeejiedvueetjedvuddv uddvfeeludegjefhleeiudfhgffggfffnecuffhomhgrihhnpehkvghrnhgvlhdrohhrgh enucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegsohhq uhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgrlhhithihqdeiledvgeehtdeigedqud ejjeekheehhedvqdgsohhquhhnrdhfvghngheppehgmhgrihhlrdgtohhmsehfihigmhgv rdhnrghmvgdpnhgspghrtghpthhtohepfeekpdhmohguvgepshhmthhpohhuthdprhgtph htthhopehrtghusehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepphhmlhgr uggvkhesshhushgvrdgtohhmpdhrtghpthhtoheprhhoshhtvgguthesghhoohgumhhish drohhrghdprhgtphhtthhopehjohhhnhdrohhgnhgvshhssehlihhnuhhtrhhonhhigidr uggvpdhrtghpthhtohepshgvnhhoiihhrghtshhkhiestghhrhhomhhiuhhmrdhorhhgpd hrtghpthhtohepphgruhhlmhgtkheskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepfhhr vgguvghrihgtsehkvghrnhgvlhdrohhrghdprhgtphhtthhopehnvggvrhgrjhdruhhprg guhhihrgihsehkvghrnhgvlhdrohhrghdprhgtphhtthhopehjohgvlhesjhhovghlfhgv rhhnrghnuggvshdrohhrgh X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:18 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev, Joel Fernandes Subject: [PATCH rcu 03/10] rcu: Fix get_state_synchronize_rcu_full() GP-start detection Date: Tue, 4 Mar 2025 19:04:58 -0800 Message-ID: <20250305030505.94059-4-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Paul E. McKenney" The get_state_synchronize_rcu_full() and poll_state_synchronize_rcu_full() functions use the root rcu_node structure's ->gp_seq field to detect the beginnings and ends of grace periods, respectively. This choice is necessary for the poll_state_synchronize_rcu_full() function because (give or take counter wrap), the following sequence is guaranteed not to trigger: get_state_synchronize_rcu_full(&rgos); synchronize_rcu(); WARN_ON_ONCE(!poll_state_synchronize_rcu_full(&rgos)); The RCU callbacks that awaken synchronize_rcu() instances are guaranteed not to be invoked before the root rcu_node structure's ->gp_seq field is updated to indicate the end of the grace period. However, these callbacks might start being invoked immediately thereafter, in particular, before rcu_state.gp_seq has been updated. Therefore, poll_state_synchronize_rcu_full() must refer to the root rcu_node structure's ->gp_seq field. Because this field is updated under this structure's ->lock, any code following a call to poll_state_synchronize_rcu_full() will be fully ordered after the full grace-period computation, as is required by RCU's memory-ordering semantics. By symmetry, the get_state_synchronize_rcu_full() function should also use this same root rcu_node structure's ->gp_seq field. But it turns out that symmetry is profoundly (though extremely infrequently) destructive in this case. To see this, consider the following sequence of events: 1. CPU 0 starts a new grace period, and updates rcu_state.gp_seq accordingly. 2. As its first step of grace-period initialization, CPU 0 examines the current CPU hotplug state and decides that it need not wait for CPU 1, which is currently offline. 3. CPU 1 comes online, and updates its state. But this does not affect the current grace period, but rather the one after that. After all, CPU 1 was offline when the current grace period started, so all pre-existing RCU readers on CPU 1 must have completed or been preempted before it last went offline. The current grace period therefore has nothing it needs to wait for on CPU 1. 4. CPU 1 switches to an rcutorture kthread which is running rcutorture's rcu_torture_reader() function, which starts a new RCU reader. 5. CPU 2 is running rcutorture's rcu_torture_writer() function and collects a new polled grace-period "cookie" using get_state_synchronize_rcu_full(). Because the newly started grace period has not completed initialization, the root rcu_node structure's ->gp_seq field has not yet been updated to indicate that this new grace period has already started. This cookie is therefore set up for the end of the current grace period (rather than the end of the following grace period). 6. CPU 0 finishes grace-period initialization. 7. If CPU 1’s rcutorture reader is preempted, it will be added to the ->blkd_tasks list, but because CPU 1’s ->qsmask bit is not set in CPU 1's leaf rcu_node structure, the ->gp_tasks pointer will not be updated.  Thus, this grace period will not wait on it.  Which is only fair, given that the CPU did not come online until after the grace period officially started. 8. CPUs 0 and 2 then detect the new grace period and then report a quiescent state to the RCU core. 9. Because CPU 1 was offline at the start of the current grace period, CPUs 0 and 2 are the only CPUs that this grace period needs to wait on. So the grace period ends and post-grace-period cleanup starts. In particular, the root rcu_node structure's ->gp_seq field is updated to indicate that this grace period has now ended. 10. CPU 2 continues running rcu_torture_writer() and sees that, from the viewpoint of the root rcu_node structure consulted by the poll_state_synchronize_rcu_full() function, the grace period has ended.  It therefore updates state accordingly. 11. CPU 1 is still running the same RCU reader, which notices this update and thus complains about the too-short grace period. The fix is for the get_state_synchronize_rcu_full() function to use rcu_state.gp_seq instead of the root rcu_node structure's ->gp_seq field. With this change in place, if step 5's cookie indicates that the grace period has not yet started, then any prior code executed by CPU 2 must have happened before CPU 1 came online. This will in turn prevent CPU 1's code in steps 3 and 11 from spanning CPU 2's grace-period wait, thus preventing CPU 1 from being subjected to a too-short grace period. This commit therefore makes this change. Note that there is no change to the poll_state_synchronize_rcu_full() function, which as noted above, must continue to use the root rcu_node structure's ->gp_seq field. This is of course an asymmetry between these two functions, but is an asymmetry that is absolutely required for correct operation. It is a common human tendency to greatly value symmetry, and sometimes symmetry is a wonderful thing. Other times, symmetry results in poor performance. But in this case, symmetry is just plain wrong. Nevertheless, the asymmetry does require an additional adjustment. It is possible for get_state_synchronize_rcu_full() to see a given grace period as having started, but for an immediately following poll_state_synchronize_rcu_full() to see it as having not yet started. Given the current rcu_seq_done_exact() implementation, this will result in a false-positive indication that the grace period is done from poll_state_synchronize_rcu_full(). This is dealt with by making rcu_seq_done_exact() reach back three grace periods rather than just two of them. However, simply changing get_state_synchronize_rcu_full() function to use rcu_state.gp_seq instead of the root rcu_node structure's ->gp_seq field results in a theoretical bug in kernels booted with rcutree.rcu_normal_wake_from_gp=1 due to the following sequence of events: o The rcu_gp_init() function invokes rcu_seq_start() to officially start a new grace period. o A new RCU reader begins, referencing X from some RCU-protected list. The new grace period is not obligated to wait for this reader. o An updater removes X, then calls synchronize_rcu(), which queues a wait element. o The grace period ends, awakening the updater, which frees X while the reader is still referencing it. The reason that this is theoretical is that although the grace period has officially started, none of the CPUs are officially aware of this, and thus will have to assume that the RCU reader pre-dated the start of the grace period. Detailed explanation can be found at [2] and [3]. Except for kernels built with CONFIG_PROVE_RCU=y, which use the polled grace-period APIs, which can and do complain bitterly when this sequence of events occurs. Not only that, there might be some future RCU grace-period mechanism that pulls this sequence of events from theory into practice. This commit therefore also pulls the call to rcu_sr_normal_gp_init() to precede that to rcu_seq_start(). Although this fixes commit 91a967fd6934 ("rcu: Add full-sized polling for get_completed*() and poll_state*()"), it is not clear that it is worth backporting this commit. First, it took me many weeks to convince rcutorture to reproduce this more frequently than once per year. Second, this cannot be reproduced at all without frequent CPU-hotplug operations, as in waiting all of 50 milliseconds from the end of the previous operation until starting the next one. Third, the TREE03.boot settings cause multi-millisecond delays during RCU grace-period initialization, which greatly increase the probability of the above sequence of events. (Don't do this in production workloads!) Fourth, the TREE03 rcutorture scenario was modified to use four-CPU guest OSes, to have a single-rcu_node combining tree, no testing of RCU priority boosting, and no random preemption, and these modifications were necessary to reproduce this issue in a reasonable timeframe. Fifth, extremely heavy use of get_state_synchronize_rcu_full() and/or poll_state_synchronize_rcu_full() is required to reproduce this, and as of v6.12, only kfree_rcu() uses it, and even then not particularly heavily. [boqun: Apply the fix [1], and add the comment before the moved rcu_sr_normal_gp_init(). Additional links are added for explanation.] Signed-off-by: Paul E. McKenney Reviewed-by: Frederic Weisbecker Reviewed-by: Joel Fernandes (Google) Tested-by: Uladzislau Rezki (Sony) Link: https://lore.kernel.org/rcu/d90bd6d9-d15c-4b9b-8a69-95336e74e8f4@paulmck-laptop/ [1] Link: https://lore.kernel.org/rcu/20250303001507.GA3994772@joelnvbox/ [2] Link: https://lore.kernel.org/rcu/Z8bcUsZ9IpRi1QoP@pc636/ [3] Reviewed-by: Joel Fernandes Signed-off-by: Boqun Feng --- kernel/rcu/rcu.h | 2 +- kernel/rcu/tree.c | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h index feb3ac1dc5d5..f87c9d6d36fc 100644 --- a/kernel/rcu/rcu.h +++ b/kernel/rcu/rcu.h @@ -162,7 +162,7 @@ static inline bool rcu_seq_done_exact(unsigned long *sp, unsigned long s) { unsigned long cur_s = READ_ONCE(*sp); - return ULONG_CMP_GE(cur_s, s) || ULONG_CMP_LT(cur_s, s - (2 * RCU_SEQ_STATE_MASK + 1)); + return ULONG_CMP_GE(cur_s, s) || ULONG_CMP_LT(cur_s, s - (3 * RCU_SEQ_STATE_MASK + 1)); } /* diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index e4c0ce600b2b..131fb463ba68 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -1801,10 +1801,14 @@ static noinline_for_stack bool rcu_gp_init(void) /* Advance to a new grace period and initialize state. */ record_gp_stall_check_time(); + /* + * A new wait segment must be started before gp_seq advanced, so + * that previous gp waiters won't observe the new gp_seq. + */ + start_new_poll = rcu_sr_normal_gp_init(); /* Record GP times before starting GP, hence rcu_seq_start(). */ rcu_seq_start(&rcu_state.gp_seq); ASSERT_EXCLUSIVE_WRITER(rcu_state.gp_seq); - start_new_poll = rcu_sr_normal_gp_init(); trace_rcu_grace_period(rcu_state.name, rcu_state.gp_seq, TPS("start")); rcu_poll_gp_seq_start(&rcu_state.gp_seq_polled_snap); raw_spin_unlock_irq_rcu_node(rnp); @@ -3357,14 +3361,17 @@ EXPORT_SYMBOL_GPL(get_state_synchronize_rcu); */ void get_state_synchronize_rcu_full(struct rcu_gp_oldstate *rgosp) { - struct rcu_node *rnp = rcu_get_root(); - /* * Any prior manipulation of RCU-protected data must happen * before the loads from ->gp_seq and ->expedited_sequence. */ smp_mb(); /* ^^^ */ - rgosp->rgos_norm = rcu_seq_snap(&rnp->gp_seq); + + // Yes, rcu_state.gp_seq, not rnp_root->gp_seq, the latter's use + // in poll_state_synchronize_rcu_full() notwithstanding. Use of + // the latter here would result in too-short grace periods due to + // interactions with newly onlined CPUs. + rgosp->rgos_norm = rcu_seq_snap(&rcu_state.gp_seq); rgosp->rgos_exp = rcu_seq_snap(&rcu_state.expedited_sequence); } EXPORT_SYMBOL_GPL(get_state_synchronize_rcu_full); From patchwork Wed Mar 5 03:04:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001898 Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3977D18E362; Wed, 5 Mar 2025 03:05:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143928; cv=none; b=LHeXh59rqaSZPF8KKekBgCFiWOQsaQ1U1vDrzN2/SwIH5vgtU2F697UInI4/r8b9ESKHgCpHQatJA/xxKgpC2rwOUgec1mqJyxztEllDB53BdWrdGWmxQh8Gs5HRVYauwSIvTHga/u+DYMbe8A+d20xJ5uTkDie8rbKWskc2ZHs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143928; c=relaxed/simple; bh=yaJ+DQyu7jgku83hxrldRW9Dcg/hxCWf9piH4QXexso=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hWpVcc3wQedRJ7pC/ZGmm3gSZOPONqxFopsgBzXxW+a1Qi6avFVY0m07uKRJligP2snxcAMNGZ+lFgr8q0TrShN+8W+117ONehb7+EyJ+n8+amXRgpRSnTuVgU/b8KYfrRuuDE2pkC00X3kfD4qC+o+06wMQcTEqtF3UcA0hv44= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=d4+IfiPx; arc=none smtp.client-ip=209.85.160.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="d4+IfiPx" Received: by mail-qt1-f179.google.com with SMTP id d75a77b69052e-47208e35f9cso73429061cf.3; Tue, 04 Mar 2025 19:05:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143926; x=1741748726; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=p1+X3BI72665Sj5vQpqBBeIcR4eyUiWJXeRi1lyT/24=; b=d4+IfiPxoUsQ2TMTjW0XcWD/m6ksqPW1Co6nieFNcOFcEv6mST7eLR9+atoqmBVDnc w9mWPRW087AN4XIZauLmiuLHcDcnc8tsA+j0Y6IxX+t6bztl0LsDHXXcgG1tTjw5TuGq 2MMxGJ+3mdiwVyJwb9GioODHEY93lm+3jaXkLEagEYad0W0QHdOcLvVbSK+dX29IcZvn XTId34aOg0tRXe8oS9z0PZaZ2Uzm6rboLlUO/jICLL1GHv+qlkn6ibHEbV4QUojCcyrB HvuFdC5nX9qFH1oBKHT1pNF9txJW/f4Tf2wLQVLEgFePN5YP6gfeueMC/GU3VtTSqPwO fTMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143926; x=1741748726; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=p1+X3BI72665Sj5vQpqBBeIcR4eyUiWJXeRi1lyT/24=; b=tXVHwXlZN1plKXnkcMtK9vShNg2M0KZfRTRId64LLC8I5Lx9WisWYiag6QNUNlK7Qw 3dg9+jOuSNY8Us5raisWZvoC740nSG3EDb+yII5igIEB8Uj3cpmgwwMYZ6ql+LSA8vFu EgVuK9WEQe6G4v30Kv1ivHjbVJ+JJjTOPOXSohsDWcO0Oox7Uux50mxSkCIJOlANbWGM P5dLAGM6k4W6lUpMgDBCMSOUqOXEWt4zjAKeJyLtMQS1z2ZDEpb8AF6gpfHznAt/fcCH jTRgo6JxPwrN+iCx3LoarMPYHouCV+nRsTnjztoOc0CwYkOKgcvc7nNVZMo+he3ue5jB t54Q== X-Forwarded-Encrypted: i=1; AJvYcCWKTnC8W5qhokBM7oaHQKwdjqvvWnNnR0IVVYBRe9wA41lB/nPqewDGFTbNpkRe82CzLKHLwGMD2fBtLSsBb7+HAiMQ@vger.kernel.org, AJvYcCWoww8zMiYYVMgM6Fr55c45TEGUHkivA6gcwYjTUEoWTYGfA8bjk4KLX3jeZJn9CTJkxD5N+X4ZMEocwLxczWl4@vger.kernel.org, AJvYcCXcyLwxUjhn7uvuMc85EOfe2sOQwnW1RjIXcyKg3KF3/ItIs4lUHa8BOGasItKi/m+YmeW5ZlMPOoIzdCc=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1OK1xtoO8UxgiD1kYgriUDL7QsRDT/mecVHYOOUcTmEri4Eth hbZpW7VoTHBzEMffvTyJ31kDo6C2Hu0ejfmQZZvUWvQJc9Hnegb+ X-Gm-Gg: ASbGncsnLlyfmVtVMvn5VDlh80QNUXtq/URF3BEy5Xq4uQXv4PNDUhr7zgFN9MVGTiq cfeBqDbql4QJDkAek3bYby6T4d00PMX8eZ/cJ/e+FE4SLhGbAUNZK7qXYbNvybvibaUfKmQ5uCK vYqN63gkIbOiNuj5XyTPA2bEw85lDDjIg6GI+X/2FryT70Jdv4WpmzLPA9haJ0LJ+5fbJec9i3Q l7jIdAckm/BocZM+a+hBpQM3KJQPdI5lf4c4jcs3Sngs6uxIMC2aX6KUgr+4nzOPtkTYBo4NUJO 6n16lFHMUyMtBbpl6gG/1r96SnSO4T/y27w1vyO2x7XXu+1IaUbGQEtwoD3y032ZQD1KjFtrVOh Pdl9KHi0EVfSM84eClAr+svZV+3TdABsFCHA= X-Google-Smtp-Source: AGHT+IFbBzLp/C77QcAR9BoVEbCyhnuueyF8GxM8KCxvhjob14XQ4UwhaxUTFVNhUWH98KTaLoUecg== X-Received: by 2002:a05:622a:20a:b0:474:fd83:46c2 with SMTP id d75a77b69052e-4750b23c91dmr14286011cf.9.1741143925875; Tue, 04 Mar 2025 19:05:25 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4750a6b3b86sm6741061cf.42.2025.03.04.19.05.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:25 -0800 (PST) Received: from phl-compute-08.internal (phl-compute-08.phl.internal [10.202.2.48]) by mailfauth.phl.internal (Postfix) with ESMTP id A5EE4120006A; Tue, 4 Mar 2025 22:05:24 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-08.internal (MEProxy); Tue, 04 Mar 2025 22:05:24 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpeegleejiedthedvheeggfejveefjeejkefg veffieeujefhueeigfegueehgeeggfenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegsohhquhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgr lhhithihqdeiledvgeehtdeigedqudejjeekheehhedvqdgsohhquhhnrdhfvghngheppe hgmhgrihhlrdgtohhmsehfihigmhgvrdhnrghmvgdpnhgspghrtghpthhtohepgedtpdhm ohguvgepshhmthhpohhuthdprhgtphhtthhopehrtghusehvghgvrhdrkhgvrhhnvghlrd horhhgpdhrtghpthhtohepphhmlhgruggvkhesshhushgvrdgtohhmpdhrtghpthhtohep rhhoshhtvgguthesghhoohgumhhishdrohhrghdprhgtphhtthhopehjohhhnhdrohhgnh gvshhssehlihhnuhhtrhhonhhigidruggvpdhrtghpthhtohepshgvnhhoiihhrghtshhk hiestghhrhhomhhiuhhmrdhorhhgpdhrtghpthhtohepphgruhhlmhgtkheskhgvrhhnvg hlrdhorhhgpdhrtghpthhtohepfhhrvgguvghrihgtsehkvghrnhgvlhdrohhrghdprhgt phhtthhopehnvggvrhgrjhdruhhprgguhhihrgihsehkvghrnhgvlhdrohhrghdprhgtph htthhopehjohgvlhesjhhovghlfhgvrhhnrghnuggvshdrohhrgh X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:22 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev, Alexei Starovoitov , Andrii Nakryiko , linux-trace-kernel@vger.kernel.org Subject: [PATCH rcu 04/10] rcu-tasks: Move RCU Tasks self-tests to core_initcall() Date: Tue, 4 Mar 2025 19:04:59 -0800 Message-ID: <20250305030505.94059-5-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Paul E. McKenney" The timer and hrtimer softirq processing has moved to dedicated threads for kernels built with CONFIG_IRQ_FORCED_THREADING=y. This results in timers not expiring until later in early boot, which in turn causes the RCU Tasks self-tests to hang in kernels built with CONFIG_PROVE_RCU=y, which further causes the entire kernel to hang. One fix would be to make timers work during this time, but there are no known users of RCU Tasks grace periods during that time, so no justification for the added complexity. Not yet, anyway. This commit therefore moves the call to rcu_init_tasks_generic() from kernel_init_freeable() to a core_initcall(). This works because the timer and hrtimer kthreads are created at early_initcall() time. Fixes: 49a17639508c3 ("softirq: Use a dedicated thread for timer wakeups on PREEMPT_RT.") Signed-off-by: Paul E. McKenney Cc: Sebastian Andrzej Siewior Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Alexei Starovoitov Cc: Andrii Nakryiko Cc: Steven Rostedt Cc: Mathieu Desnoyers Cc: Masami Hiramatsu Cc: Tested-by: Sebastian Andrzej Siewior Reviewed-by: Sebastian Andrzej Siewior Signed-off-by: Boqun Feng --- include/linux/rcupdate.h | 6 ------ init/main.c | 1 - kernel/rcu/tasks.h | 5 ++++- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 48e5c03df1dd..36849a4ea141 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h @@ -121,12 +121,6 @@ void rcu_init(void); extern int rcu_scheduler_active; void rcu_sched_clock_irq(int user); -#ifdef CONFIG_TASKS_RCU_GENERIC -void rcu_init_tasks_generic(void); -#else -static inline void rcu_init_tasks_generic(void) { } -#endif - #ifdef CONFIG_RCU_STALL_COMMON void rcu_sysrq_start(void); void rcu_sysrq_end(void); diff --git a/init/main.c b/init/main.c index 2a1757826397..7f0a2a3dbd29 100644 --- a/init/main.c +++ b/init/main.c @@ -1553,7 +1553,6 @@ static noinline void __init kernel_init_freeable(void) init_mm_internals(); - rcu_init_tasks_generic(); do_pre_smp_initcalls(); lockup_detector_init(); diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h index 59314da5eb60..466668eb4fad 100644 --- a/kernel/rcu/tasks.h +++ b/kernel/rcu/tasks.h @@ -2256,7 +2256,7 @@ void __init tasks_cblist_init_generic(void) #endif } -void __init rcu_init_tasks_generic(void) +static int __init rcu_init_tasks_generic(void) { #ifdef CONFIG_TASKS_RCU rcu_spawn_tasks_kthread(); @@ -2272,7 +2272,10 @@ void __init rcu_init_tasks_generic(void) // Run the self-tests. rcu_tasks_initiate_self_tests(); + + return 0; } +core_initcall(rcu_init_tasks_generic); #else /* #ifdef CONFIG_TASKS_RCU_GENERIC */ static inline void rcu_tasks_bootup_oddness(void) {} From patchwork Wed Mar 5 03:05:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001899 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 457C9191F6D; Wed, 5 Mar 2025 03:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143933; cv=none; b=NKlTAiYVw1Nv1vbEPxJbgOXbxW8DYPaD84bODlYcCKTbQGRT47uPOa2NIs4nE0XM5uJ7qmDm9I+cGY0CLXrruCZ4EcjLLfsozTniXa3q6eD4lopITA0Pq2JV7SQf04ydirSU2UcKZtmwYzjm43yJKiRuN5/sn0hbddJ7HLlrtgg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143933; c=relaxed/simple; bh=hNiZZCSUKvfl7+umet8AF50whccofULzH7u022xq+jE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AgsjZp9Z63UGiAbl8SgA2067NTTfZp5mw0Tzo1ZPmdaYtsvX5weTFaICj/w3kUaBFkMGzzM2vTxBpL8EMH1yWeHrfwnM+Z7dnRuaMr/89MkRcejfvigPKkkVPYtN5djg6dwcw6YE5JEw01ZcHwPVRpVbg+rXXakAOTWE5e1SkTM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OGw5oyCB; arc=none smtp.client-ip=209.85.160.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OGw5oyCB" Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-4750ca77d47so2872311cf.0; Tue, 04 Mar 2025 19:05:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143930; x=1741748730; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=XCzSTpBwfsU59VREINAqcwK+Vgtr2DU2DpO7Ee45wZ8=; b=OGw5oyCBZdPw1Pe1Sppsm211coeaPlWVS1twYqIgWCwgv1tDGfUfnaU2QkC8atF0p4 IbAHsAIcvbGY6CsViFscsKsZ56l9UTCcE5pyxZQ1l92fT4DGqnQim3dRUhN06siHaxtb g1nzda+fznNUMLlkaBJqE3IcHJfh2I7OdQ40iVbORquth1vZjxtwZVR3lyDhn6ACYJ3+ gI01bGcjfC9YzSKeXeyYhibjTDWbDkurCOHqFdWpsfefdvjD2Rz0qqIDnoL51AKyMvWK 61jhnVnH3T85m2fEShdF+1ebExB9fubklf1YBurTZ8OfNpx+VTgKHWM3D+gZpl7MY8un st8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143930; x=1741748730; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=XCzSTpBwfsU59VREINAqcwK+Vgtr2DU2DpO7Ee45wZ8=; b=ajE3wGW0L4CjsKE/VB39Lk5GUDNv8puMN/8UozDUGMs5aCpI7Vwj0nv/43aHIutSYi O6TOqb5y8axIBpxfEumrgUQvTGhfdquMuZPiDzPp6zHXCx0OUCwUkWGfZ346c/wYpAuF iCO+/LhvI6SYaCmnKqj964ZmFTnrbQtJ6sEDCiEDArMBgs52SC0Glur8wbZXdxbejc3Z 35CbbWWmZKRRTs3oGRy7knCAl8/INM5YqHXPwTrULUG8AGqent5avr4h8nnhfhJSknJo HpbfWTCHmUmwdtk6BDUiKhAe4ccEm3dB5TF5cRVyj8gWjVvw3UnSD/+4kN7nD5IGv+4J 06Kw== X-Forwarded-Encrypted: i=1; AJvYcCVHWLvjvv1KyDQK5E2dTddyrwnlOG9gn4tFE6xxFqqoGP7uSZuytyQCtYLfSbQU9gWVT2QLrr/hO8fARpxFQWJY@vger.kernel.org, AJvYcCVS6PcGB95lpwZp5z5a0k4O61h4FVEvFxyXTONhF0w0u1QtdoI5JI2BoEkSLFbqiYY24EbxYss6reaGN78=@vger.kernel.org X-Gm-Message-State: AOJu0YyLPegkm97Ee7efU5iYot/0WLW5+CG3jENIDR8D1gkis1CVVMsF 473aEZS2ae+EbdrEx3GyhI+E6Mhv0UaRwCBKbFi7bkrLAzBstNEe X-Gm-Gg: ASbGncsDuflDs28J0y6y0VaLf6IeztZHZvyEXOA62GKjAopS1rih+O4nmBG9yOQPWyE n/qJHdiS1XvXkHUqDk3T+u1PKW4J04mKxm9PXzKRJdKWiDVbpNSerZfRxRQD+EHtHqNBzwB3k6D NPOuxiA78CyOzSHt+tNxLSg6uKFaNglSXp2lceApe8dyhH3nUWXDU5fBxeq8H34NHcd4FX6UANf fAihXg/l6tEWd/HyKdbXY6lwohjBHRleq+lJGYELJfosioIycvEbm+6++/oNmoWaq1vDcTMR8NA uqVCps/yW/qZM2VjVhp8/YHWMqfr/ovV8hAT9ikwBPhe5wOByhYddps+Eqpujpti4q+tWL8P8Up fO07Un59J9vNA0yW7b20X2LjJG+Mr7bwPDqI= X-Google-Smtp-Source: AGHT+IEuiQDV23EHLSAqALRzSuoMugSbMB/MT1RJRogJrMdDmPlxKFA23NwZEG9gtrXQh9L3GdXQpA== X-Received: by 2002:ac8:5891:0:b0:474:f074:e85e with SMTP id d75a77b69052e-4750b4bdb1bmr26172761cf.41.1741143930057; Tue, 04 Mar 2025 19:05:30 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4750804b8c7sm9595601cf.33.2025.03.04.19.05.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:29 -0800 (PST) Received: from phl-compute-09.internal (phl-compute-09.phl.internal [10.202.2.49]) by mailfauth.phl.internal (Postfix) with ESMTP id ED03B120006A; Tue, 4 Mar 2025 22:05:28 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Tue, 04 Mar 2025 22:05:28 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpeegleejiedthedvheeggfejveefjeejkefg veffieeujefhueeigfegueehgeeggfenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegsohhquhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgr lhhithihqdeiledvgeehtdeigedqudejjeekheehhedvqdgsohhquhhnrdhfvghngheppe hgmhgrihhlrdgtohhmsehfihigmhgvrdhnrghmvgdpnhgspghrtghpthhtohepfeejpdhm ohguvgepshhmthhpohhuthdprhgtphhtthhopehrtghusehvghgvrhdrkhgvrhhnvghlrd horhhgpdhrtghpthhtohepphhmlhgruggvkhesshhushgvrdgtohhmpdhrtghpthhtohep rhhoshhtvgguthesghhoohgumhhishdrohhrghdprhgtphhtthhopehjohhhnhdrohhgnh gvshhssehlihhnuhhtrhhonhhigidruggvpdhrtghpthhtohepshgvnhhoiihhrghtshhk hiestghhrhhomhhiuhhmrdhorhhgpdhrtghpthhtohepphgruhhlmhgtkheskhgvrhhnvg hlrdhorhhgpdhrtghpthhtohepfhhrvgguvghrihgtsehkvghrnhgvlhdrohhrghdprhgt phhtthhopehnvggvrhgrjhdruhhprgguhhihrgihsehkvghrnhgvlhdrohhrghdprhgtph htthhopehjohgvlhesjhhovghlfhgvrhhnrghnuggvshdrohhrgh X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:27 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev Subject: [PATCH rcu 05/10] rcu/nocb: Print segment lengths in show_rcu_nocb_gp_state() Date: Tue, 4 Mar 2025 19:05:00 -0800 Message-ID: <20250305030505.94059-6-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Paul E. McKenney" Analysis of an rcutorture callback-based forward-progress test failure was hampered by the lack of ->cblist segment lengths. This commit therefore adds this information, so that what would have been ".W85620.N." (there are some callbacks waiting for grace period sequence number 85620 and some number more that have not yet been assigned to a grace period) now prints as ".W2(85620).N6." (there are 2 callbacks waiting for grace period 85620 and 6 not yet assigned to a grace period). Note that "D" (done), "N" (next and not yet assigned to a grace period, and "B" (bypass, also not yet assigned to a grace period) have just the number of callbacks without the parenthesized grace-period sequence number. In contrast, "W" (waiting for the current grace period) and "R" (ready to wait for the next grace period to start) both have parenthesized grace-period sequence numbers. Signed-off-by: Paul E. McKenney Signed-off-by: Boqun Feng --- kernel/rcu/tree_nocb.h | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/kernel/rcu/tree_nocb.h b/kernel/rcu/tree_nocb.h index 2605dd234a13..5ff3bc56ff51 100644 --- a/kernel/rcu/tree_nocb.h +++ b/kernel/rcu/tree_nocb.h @@ -1557,8 +1557,11 @@ static void show_rcu_nocb_gp_state(struct rcu_data *rdp) /* Dump out nocb kthread state for the specified rcu_data structure. */ static void show_rcu_nocb_state(struct rcu_data *rdp) { - char bufw[20]; - char bufr[20]; + char bufd[22]; + char bufw[45]; + char bufr[45]; + char bufn[22]; + char bufb[22]; struct rcu_data *nocb_next_rdp; struct rcu_segcblist *rsclp = &rdp->cblist; bool waslocked; @@ -1572,9 +1575,13 @@ static void show_rcu_nocb_state(struct rcu_data *rdp) typeof(*rdp), nocb_entry_rdp); - sprintf(bufw, "%ld", rsclp->gp_seq[RCU_WAIT_TAIL]); - sprintf(bufr, "%ld", rsclp->gp_seq[RCU_NEXT_READY_TAIL]); - pr_info(" CB %d^%d->%d %c%c%c%c%c F%ld L%ld C%d %c%c%s%c%s%c%c q%ld %c CPU %d%s\n", + sprintf(bufd, "%ld", rsclp->seglen[RCU_DONE_TAIL]); + sprintf(bufw, "%ld(%ld)", rsclp->seglen[RCU_WAIT_TAIL], rsclp->gp_seq[RCU_WAIT_TAIL]); + sprintf(bufr, "%ld(%ld)", rsclp->seglen[RCU_NEXT_READY_TAIL], + rsclp->gp_seq[RCU_NEXT_READY_TAIL]); + sprintf(bufn, "%ld", rsclp->seglen[RCU_NEXT_TAIL]); + sprintf(bufb, "%ld", rcu_cblist_n_cbs(&rdp->nocb_bypass)); + pr_info(" CB %d^%d->%d %c%c%c%c%c F%ld L%ld C%d %c%s%c%s%c%s%c%s%c%s q%ld %c CPU %d%s\n", rdp->cpu, rdp->nocb_gp_rdp->cpu, nocb_next_rdp ? nocb_next_rdp->cpu : -1, "kK"[!!rdp->nocb_cb_kthread], @@ -1586,12 +1593,15 @@ static void show_rcu_nocb_state(struct rcu_data *rdp) jiffies - rdp->nocb_nobypass_last, rdp->nocb_nobypass_count, ".D"[rcu_segcblist_ready_cbs(rsclp)], + rcu_segcblist_segempty(rsclp, RCU_DONE_TAIL) ? "" : bufd, ".W"[!rcu_segcblist_segempty(rsclp, RCU_WAIT_TAIL)], rcu_segcblist_segempty(rsclp, RCU_WAIT_TAIL) ? "" : bufw, ".R"[!rcu_segcblist_segempty(rsclp, RCU_NEXT_READY_TAIL)], rcu_segcblist_segempty(rsclp, RCU_NEXT_READY_TAIL) ? "" : bufr, ".N"[!rcu_segcblist_segempty(rsclp, RCU_NEXT_TAIL)], + rcu_segcblist_segempty(rsclp, RCU_NEXT_TAIL) ? "" : bufn, ".B"[!!rcu_cblist_n_cbs(&rdp->nocb_bypass)], + !rcu_cblist_n_cbs(&rdp->nocb_bypass) ? "" : bufb, rcu_segcblist_n_cbs(&rdp->cblist), rdp->nocb_cb_kthread ? task_state_to_char(rdp->nocb_cb_kthread) : '.', rdp->nocb_cb_kthread ? (int)task_cpu(rdp->nocb_cb_kthread) : -1, From patchwork Wed Mar 5 03:05:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001900 Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6D75194137; Wed, 5 Mar 2025 03:05:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143937; cv=none; b=lqs2H9hW9JCDcGpl6Gc9ROnV3au0BxG5vriIU5EacAQHVBVPS3gD4XOfA+0ISfrjalzCC5FWIfNdZZ/wtAB4FptrWItpsYOE+QJJhuBlD9x/MXyx1LbK4xWLy/pUcwgFEz7mi9o/nzM+Zb5L9QfmDQLWKcSibFdHUVVReYXjxNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143937; c=relaxed/simple; bh=TPhOEkbATR6OP9mFw8RaL7AaoyzMl3a7Rp30LlcUOPs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=keg/RsdjA3lokebElKyrvKrqkEh37LndtQfeoYDhNVyQKjy+n/vNvOoBNLtF0U54+JdJ63rAXo+Xcrx/iswj6xPKjIbHWLcArcWKLbUYqputKYp8J0aEPQzd2XvpUX4dX+nLOf/tHVpV4Rb8JMv8TVH6RiviY24CSsY9TpEN0HI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mubgNmf5; arc=none smtp.client-ip=209.85.222.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mubgNmf5" Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-7c3ca86e8c3so136634385a.1; Tue, 04 Mar 2025 19:05:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143933; x=1741748733; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=lebFfDdf7ODuwMHKUv+6Ka+hc9tfR3Q/RE97364NVwU=; b=mubgNmf5jbj2UHeG11qxTnAbpKv+XFfU1aeGUImUwaif9dtCnoqpOXwnC3i0Lyv9Bq md+NMyycXabW+g2ddVd2jAYubpIUigKvBcHS54PuzHTIuKecQ5gcvRoE799LG2xKzW8G 6wRLA730c0q/0kxigKFXqrCGcR12/pgvQEBIldvhOSW+ABtQ1zw1RmCHHDTBYgwVWrU2 7ybxRYC09WkcZZArqjBa0iIEsvkb7lANRtaR4oIA+2vnU43j7y3bWAnFWgg9XogGnbMf /FWxNev57Gqlp1ns/zeX9hZ2h81z8i36WOaME61gxe+7tONKCP1g11JQ9sbiuJ7vDSTl lopw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143933; x=1741748733; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=lebFfDdf7ODuwMHKUv+6Ka+hc9tfR3Q/RE97364NVwU=; b=RME0AWGWQnRc3ONSW5SMB07RGIWmK8aPZ7Ee/0+Q+ZYEoHLgLfR/IK4AQ6yiWt4ZYn gD+7F4DKm2CY6OcFZNQ3SFU5g8lGbU5fNh63rgLPZUh7tiPtXhzEtNa537/DQRzZtBKW gfdhPFQUbGNHJb/IuAJ4JT6zoN32gYCSDTi4S/a591XxXuEPMnFiCzuFMy0sB54YlC/T 8UenFg8prRrOraauuMmv35bnWvg4ofOvTHOpozSyp2N7fcCZDisKlADqphtc7aIWvM4b /iCcv4znNi7q1+1gREKdAP8+geV0VZZuQt7P26BRocL3KQStZGX6uL2KKnlPK63RmkNx Gsgw== X-Forwarded-Encrypted: i=1; AJvYcCXlpMYpcmAB6DB6qqukqSWaUO8drsJNBZeC0KhAW6XMDB16R6ZR4OxcbeyYKuKhjc7uYbHYz88rf2usghA=@vger.kernel.org, AJvYcCXvY593p23sXJKqklFbPjlzfj5qe+pBm+mivurZjyxRwxXWp69lkKPeyswIgqXihypbcNbQihsmqXBsFwymQj0+@vger.kernel.org X-Gm-Message-State: AOJu0YzHTLM/1XUEw1BGdzNe8yzakY80IDSp6dTHYI6yK19I7u/5f/1E WLUiulxw6SOKd6wnVlx27I03I73GMga7QpRyBRx5VkWFj+U/kX4Y X-Gm-Gg: ASbGncsGLfIGLjwjOATLd4yxWVmZokV+M++JfOey6QJLjNHOg8fZBo9EQDUr2IuHoDU 0qJuaBvZGZ20Sc+iKAUQZTcNSuhDO4HRm3aUqnrJVMWOZgF5ZC+6SxyLn6e+IwwJ5lTQAGLFV0e mNW0R8HOOrJA0+arou44CeMcWukVzNaY0+f7HoeTpSBp9p8KBZPluOl/t0CkJV/Kn5hYOaIdnIW ftZZO+7pxGVtBY+dSYfj/8+Fsc9M6E35xYLwNSo893PWkP2dXwdFBeCZ6ij0W8+rXdAjDuda5Oc DRciT/bMaqdc2GBp8Y36nymsXMg6+mA2h079bQN22VI1fFmCPrspV2/xdX43MkoOoAkv0V8s3Jg 8cQDBsMc0nfc36CSY78uyp1RzStB+qbBws4o= X-Google-Smtp-Source: AGHT+IFUmnWC34W7lEtL222mGAHp7ZE3hueA9M8c4yNFof32K5sk4hi8Ou7ClU9GimkCN6Iq8UjlKg== X-Received: by 2002:ad4:5e87:0:b0:6e6:6477:de09 with SMTP id 6a1803df08f44-6e8e6d968ddmr21828866d6.43.1741143933598; Tue, 04 Mar 2025 19:05:33 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6e8976cccb0sm74171366d6.71.2025.03.04.19.05.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:33 -0800 (PST) Received: from phl-compute-01.internal (phl-compute-01.phl.internal [10.202.2.41]) by mailfauth.phl.internal (Postfix) with ESMTP id 61039120006A; Tue, 4 Mar 2025 22:05:32 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Tue, 04 Mar 2025 22:05:32 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpefghfffvefhhfdvgfejgfekvdelgfekgeev ueehlefhiedvgeffjefgteeugfehieenucffohhmrghinhepkhgvrhhnvghlrdhorhhgne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepsghoqhhu nhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqieelvdeghedtieegqdduje ejkeehheehvddqsghoqhhunhdrfhgvnhhgpeepghhmrghilhdrtghomhesfhhigihmvgdr nhgrmhgvpdhnsggprhgtphhtthhopeefledpmhhouggvpehsmhhtphhouhhtpdhrtghpth htoheprhgtuhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehpmhhlrggu vghksehsuhhsvgdrtghomhdprhgtphhtthhopehrohhsthgvughtsehgohhoughmihhsrd horhhgpdhrtghpthhtohepjhhohhhnrdhoghhnvghssheslhhinhhuthhrohhnihigrdgu vgdprhgtphhtthhopehsvghnohiihhgrthhskhihsegthhhrohhmihhumhdrohhrghdprh gtphhtthhopehprghulhhmtghksehkvghrnhgvlhdrohhrghdprhgtphhtthhopehfrhgv uggvrhhitgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepnhgvvghrrghjrdhuphgrug hhhigrhieskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhovghlsehjohgvlhhfvghr nhgrnhguvghsrdhorhhg X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:30 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev, Breno Leitao , Valentin Schneider Subject: [PATCH rcu 06/10] context_tracking: Make RCU watch ct_kernel_exit_state() warning Date: Tue, 4 Mar 2025 19:05:01 -0800 Message-ID: <20250305030505.94059-7-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Paul E. McKenney" The WARN_ON_ONCE() in ct_kernel_exit_state() follows the call to ct_state_inc(), which means that RCU is not watching this WARN_ON_ONCE(). This can (and does) result in extraneous lockdep warnings when this WARN_ON_ONCE() triggers. These extraneous warnings are the opposite of helpful. Therefore, invert the WARN_ON_ONCE() condition and move it before the call to ct_state_inc(). This does mean that the ct_state_inc() return value can no longer be used in the WARN_ON_ONCE() condition, so discard this return value and instead use a call to rcu_is_watching_curr_cpu(). This call is executed only in CONFIG_RCU_EQS_DEBUG=y kernels, so there is no added overhead in production use. [Boqun: Add the subsystem tag in the title] Reported-by: Breno Leitao Signed-off-by: Paul E. McKenney Reviewed-by: Valentin Schneider Reviewed-by: Frederic Weisbecker Link: https://lore.kernel.org/r/bd911cd9-1fe9-447c-85e0-ea811a1dc896@paulmck-laptop Signed-off-by: Boqun Feng --- kernel/context_tracking.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c index 938c48952d26..fb5be6e9b423 100644 --- a/kernel/context_tracking.c +++ b/kernel/context_tracking.c @@ -80,17 +80,16 @@ static __always_inline void rcu_task_trace_heavyweight_exit(void) */ static noinstr void ct_kernel_exit_state(int offset) { - int seq; - /* * CPUs seeing atomic_add_return() must see prior RCU read-side * critical sections, and we also must force ordering with the * next idle sojourn. */ rcu_task_trace_heavyweight_enter(); // Before CT state update! - seq = ct_state_inc(offset); - // RCU is no longer watching. Better be in extended quiescent state! - WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && (seq & CT_RCU_WATCHING)); + // RCU is still watching. Better not be in extended quiescent state! + WARN_ON_ONCE(IS_ENABLED(CONFIG_RCU_EQS_DEBUG) && !rcu_is_watching_curr_cpu()); + (void)ct_state_inc(offset); + // RCU is no longer watching. } /* From patchwork Wed Mar 5 03:05:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001901 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7938119408C; Wed, 5 Mar 2025 03:05:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143940; cv=none; b=BSp357LEDh5ilBjj8IUssIESzA5RkDUjBx/BNczPnpND0L1xDO0ydQZURdueefqHFCYu6Yau/uuknrhCprAugO7HDeRmJr1HQTEL2/l9Xd/bcrDiPXVNmUFXpb0V7iy2jtA5ZMaZ8pbY85+rFTgaRQ2c0fiqtbsbbgmKI536/bE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143940; c=relaxed/simple; bh=htVQ/cFn8gDimJsI774ZgbzxQst76++Dz7pcCkF7/uI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q6g1dUp8sVKVUQvqiHWrM0KnCU9JpFoFqcZOExQKSumNbXS+bYZo0iiLFOEbbKEO2zFLZU+Vg+sMMpGF6IbXkDoVNaAoCDmK53cox/h3iGaQg3uz/UD3n1stPtM8Y15tkiOPw8GICnTOHOLyskpFt/HCkIsQ6+CsdVzW2eAvAw0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Y2vvkN2p; arc=none smtp.client-ip=209.85.222.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Y2vvkN2p" Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-7be49f6b331so615720885a.1; Tue, 04 Mar 2025 19:05:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143937; x=1741748737; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=+smKTbDA0k13UVYSv6ftLrHf0Uww1eKxMUTHXNn3NLI=; b=Y2vvkN2pukZQ5gim8EFZ3Z+b1gNid9hyc6ueKKmwqG6RTQ4le+GWVLJXuXyz/v8DSp Fn39kVd3Zcce3a/D06KW+RLsghBedb1YL6/Y0i5kSJKWac0BdTuExdODFFLI6odPercz CAH8W2iTKZSloURDRpmQgyxWYqNKcXyrJH2cM9aQJWc1KbdEqYaptjEWvi5mmxBSKaiQ gfrtfYgkrVDMS6CZ9VNcgvQH0d34JubCVMC5wpdPkUH55kIG3fZHCF9a+JxEXT2NL+Mc 4tp/5MYt8wC3UIKYNQDKHvzPvFOoGDt02gZ9Vz5PySqVpDQeL8//vIIepW+o1JJNmeFI KaEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143937; x=1741748737; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=+smKTbDA0k13UVYSv6ftLrHf0Uww1eKxMUTHXNn3NLI=; b=HNTHeulk7zSUedfcqz6tuRhMm6lm57Kg3fjhwXKxNLOYd5PthqTU5uY1EBBxVXUSwP 1cnkQmG/fnGYBTUZzqSOsSSpw8J8M0gx3FMHbyRgkiMBYSz6aqLmbNrXiKfJXOnd779X nmuSmyXss68GlMIQT7A5Rrt72CV11q8rQkeceHRhDxLvFbIspKWJ+YTWF87rJ0t/jWKf DEut7z8P+YZSHoXNWIvfuq3ulr2WS7xB0fx6TvAWpgaCYbwmWQ+gWnusclJDuEyZU9sm JjgESSEZ5V45RCw1bR7jT5U8ughwJLIWpWvbcTq5FuIkDwr0RPOHhPBZLIsBEVcCgHpj /ktA== X-Forwarded-Encrypted: i=1; AJvYcCUZegP8wdCcsd5a23uj+tp97Y2Wc2LP/JOxu0y3PJz4dke6OsW9dc99n1PVzOa0vaG4DuwZrHESfqvaR2A=@vger.kernel.org, AJvYcCVRcajaA1iP/DblVHWTFy92CWdy18E2nTpmKqz1vfwj1+rLu0CLh64lGwLAsmobRnUX453HPrnAeGuZW6cu4BuZ@vger.kernel.org X-Gm-Message-State: AOJu0YzODyvmnIKK6j5ZjAPV1SWMmlt2loVxNPIuGMxBLxwUsCMmmMBj 7CrZHfhQv9H575hXdi5VI2UqKwywW/AfB5z1uSa5LbsB+itnF8Vc X-Gm-Gg: ASbGncu6xqovG9khZJr2YT5/qAg2dgFBgI8Fwz2AoalCD6R7yGM3p4dVwBJKJFkbu+d 8B7hdxysfdXxm3Tm7ynoFtsaqRMjYZXj51FZ3FbOQKdA1PmTjpS10rHDbGdpBu1MMxEmyuI+ljf v9RvTO31xPkUsL0TY8eJ+iodYZUFfKb8kQFo/Sl24nJs13nHCQAz0DVYTWcmVvJQhTUSqPeiaQd KVkvCL1Z8KR75oqXBE0kvYXn4845uo7GYAAN48nBGsqRLvhTJtdZT6o1pzvXm2MRjy/yQm7Ap/o koWuI1ef4B6CCT+4KX5aBw5h08amuYvNiupqcDq+3aNKqAI2KlY7+ZY9vAfjQwDL7lLUcm0fZ1Q 62oP7isFBNi1zH+9ba2GTL/iTOfX8ebxTw6w= X-Google-Smtp-Source: AGHT+IHoVSPzj/lvLcsVS6uwvkqTeZb7BDh933B4bENtWOIJJDtOsAV+fXzGX+/TwWLAUI/Xcxu2+A== X-Received: by 2002:a05:620a:2720:b0:7c0:bde7:61b1 with SMTP id af79cd13be357-7c3d8ef3766mr251160685a.50.1741143937345; Tue, 04 Mar 2025 19:05:37 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6e8a2170bcasm60554756d6.34.2025.03.04.19.05.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:37 -0800 (PST) Received: from phl-compute-06.internal (phl-compute-06.phl.internal [10.202.2.46]) by mailfauth.phl.internal (Postfix) with ESMTP id 476B1120006A; Tue, 4 Mar 2025 22:05:36 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Tue, 04 Mar 2025 22:05:36 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpefghfffvefhhfdvgfejgfekvdelgfekgeev ueehlefhiedvgeffjefgteeugfehieenucffohhmrghinhepkhgvrhhnvghlrdhorhhgne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepsghoqhhu nhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqieelvdeghedtieegqdduje ejkeehheehvddqsghoqhhunhdrfhgvnhhgpeepghhmrghilhdrtghomhesfhhigihmvgdr nhgrmhgvpdhnsggprhgtphhtthhopeefjedpmhhouggvpehsmhhtphhouhhtpdhrtghpth htoheprhgtuhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehpmhhlrggu vghksehsuhhsvgdrtghomhdprhgtphhtthhopehrohhsthgvughtsehgohhoughmihhsrd horhhgpdhrtghpthhtohepjhhohhhnrdhoghhnvghssheslhhinhhuthhrohhnihigrdgu vgdprhgtphhtthhopehsvghnohiihhgrthhskhihsegthhhrohhmihhumhdrohhrghdprh gtphhtthhopehprghulhhmtghksehkvghrnhgvlhdrohhrghdprhgtphhtthhopehfrhgv uggvrhhitgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepnhgvvghrrghjrdhuphgrug hhhigrhieskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhovghlsehjohgvlhhfvghr nhgrnhguvghsrdhorhhg X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:34 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev Subject: [PATCH rcu 07/10] Flush console log from kernel_power_off() Date: Tue, 4 Mar 2025 19:05:02 -0800 Message-ID: <20250305030505.94059-8-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Paul E. McKenney" Kernels built with CONFIG_PREEMPT_RT=y can lose significant console output and shutdown time, which hides shutdown-time RCU issues from rcutorture. Therefore, make pr_flush() public and invoke it after then last print in kernel_power_off(). [ paulmck: Apply John Ogness feedback. ] [ paulmck: Appy Sebastian Andrzej Siewior feedback. ] [ paulmck: Apply kernel test robot feedback. ] Signed-off-by: Paul E. McKenney Reviewed-by: John Ogness Reviewed-by: Petr Mladek Cc: Steven Rostedt Cc: Sergey Senozhatsky Link: https://lore.kernel.org/r/5f743488-dc2a-4f19-bdda-cf50b9314832@paulmck-laptop Signed-off-by: Boqun Feng --- include/linux/printk.h | 6 ++++++ kernel/printk/printk.c | 4 +--- kernel/reboot.c | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/linux/printk.h b/include/linux/printk.h index 4217a9f412b2..5b462029d03c 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -207,6 +207,7 @@ void printk_legacy_allow_panic_sync(void); extern bool nbcon_device_try_acquire(struct console *con); extern void nbcon_device_release(struct console *con); void nbcon_atomic_flush_unsafe(void); +bool pr_flush(int timeout_ms, bool reset_on_progress); #else static inline __printf(1, 0) int vprintk(const char *s, va_list args) @@ -315,6 +316,11 @@ static inline void nbcon_atomic_flush_unsafe(void) { } +static inline bool pr_flush(int timeout_ms, bool reset_on_progress) +{ + return true; +} + #endif bool this_cpu_in_panic(void); diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 07668433644b..057db78876cd 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -2461,7 +2461,6 @@ asmlinkage __visible int _printk(const char *fmt, ...) } EXPORT_SYMBOL(_printk); -static bool pr_flush(int timeout_ms, bool reset_on_progress); static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress); #else /* CONFIG_PRINTK */ @@ -2474,7 +2473,6 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre static u64 syslog_seq; -static bool pr_flush(int timeout_ms, bool reset_on_progress) { return true; } static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) { return true; } #endif /* CONFIG_PRINTK */ @@ -4466,7 +4464,7 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre * Context: Process context. May sleep while acquiring console lock. * Return: true if all usable printers are caught up. */ -static bool pr_flush(int timeout_ms, bool reset_on_progress) +bool pr_flush(int timeout_ms, bool reset_on_progress) { return __pr_flush(NULL, timeout_ms, reset_on_progress); } diff --git a/kernel/reboot.c b/kernel/reboot.c index b5a8569e5d81..41ab9e1ba357 100644 --- a/kernel/reboot.c +++ b/kernel/reboot.c @@ -704,6 +704,7 @@ void kernel_power_off(void) migrate_to_reboot_cpu(); syscore_shutdown(); pr_emerg("Power down\n"); + pr_flush(1000, true); kmsg_dump(KMSG_DUMP_SHUTDOWN); machine_power_off(); } From patchwork Wed Mar 5 03:05:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001902 Received: from mail-qk1-f171.google.com (mail-qk1-f171.google.com [209.85.222.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D739B194A75; Wed, 5 Mar 2025 03:05:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143943; cv=none; b=rBEizOTg0+sNhR+V8Ob1YYXVPkNZVXi2Mz5beHfmLsxirxWu7133RNBAL1/MV9xT/UfpASYaTvKXiGmP2FpPcpKePNYm5KWFnG/uw1oP4h0rhG+JT0tqRFWqgp5FoU6PaHJ9kkMY/JZbfHTTwyvOMWbHYKQwy71/5BHpinjCcdg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143943; c=relaxed/simple; bh=FTbCxoRNzeptyiCsRyZeAdbu5kGrrtfegvCbyVJPKRg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FdRS7IH036ZUtb6Kn7FglhkiUuxMcRZArhvqMIYjEKFZCg5MCx4eSAxYGFaZ/lwRBZXSSUxUzAC7uGDPZ1+wQ8XfM4oj+Y7U5HNEz59GbckKD2OwjdiMtp5fmGEswL/iTtJ9MwDJCWYbw1xkXdlfDMXO5DC/mkUGXW5T2RwgX0U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RgG+aZCp; arc=none smtp.client-ip=209.85.222.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RgG+aZCp" Received: by mail-qk1-f171.google.com with SMTP id af79cd13be357-7c3b533a683so316093185a.2; Tue, 04 Mar 2025 19:05:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143941; x=1741748741; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=u6CYER+QWDFGbqGupxQEB5sdNaMc6sLr8skppdSjdWU=; b=RgG+aZCpYc/QG9nIwQogyY733KubmOsI2LaZiRCjgGbtFOsjmUB57begpeROQkzb4Z rzPImilxoTkihWZb0S86TqxItZNP6tLlH1IveWKZyARIQGVXij1UqBtOTSN1YIsD8VYB jkCaGaU9RkNRe08QJMQL5LosSItyZmd4sIzrACBwhtztttSlaKSpWvXOjFwRvObHQDZP r9E7voJmU/N15gMRSd+lkJpUSx9xnHArJUWLJtoiZSVe/fzeDqwYpFzFtk4Z0z5+oQs9 kKM+E1MJk0tw7cngiv1fHAy06eo8ljzNPRm3ker22q78AKLYshVL59UKH4Cc7QmCU8D5 d07w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143941; x=1741748741; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=u6CYER+QWDFGbqGupxQEB5sdNaMc6sLr8skppdSjdWU=; b=Q7yDRaRmo/5z1w/uI8rNczs4WPYWcmtxB71Ym+H1iqfyPzZ+lz5hsCYVnaqFVs3a/7 YiAawROs8FhvXFKhEXCWzkWwmntDAMEJEnXvxpTYiccEp9EdNSRuVLI3hb4FKQ40Majg Dd5j2o2Ns2Ofss/5vvemwEwFfxNK1D6lInCkVzrUC55CmUpM7C0fohhPvlERTlYjRElL Tl2Hm/u9iU3EvsPriXu5aR48tEKi/nC/mV/+r0Q2xrouCtCZdrCUNvWlLVoZ9GsU3sCu MOJ4vrlAMopkjtoOcJLRr8110IIklOAluDAFGUhpSdxiKrn6DSEQp/9lMUPAJp6YqNOu S9EA== X-Forwarded-Encrypted: i=1; AJvYcCU9XqiUOc2RZ2f1oY3dfJEUZGErxAOGKBIETF1BQKno8oyRl89xKdUaDTmzhBjfJA9E1BmbvLFdqTbuuqpIWkQQ@vger.kernel.org, AJvYcCWUJUkQoyeb3pNAUdbLzbCyXLCKAfM6KSlur3zSzJFNd3Kb5HCVcguhrvCAlFdod9qWGgDK+dfNGb8D/ZI=@vger.kernel.org X-Gm-Message-State: AOJu0Yy95J/wn9CJE+6+5wVz3mVFs27g4FeOfM6c7lFAFeuWRvpV5vp4 /iWOlRPQt5ryXHP27M260AdzHiAcFNGWabfT6VW0u06lWegYbbay X-Gm-Gg: ASbGncuCij53nY6R/sGx++8WxD5bY6PXhrdNFYJjcZoKGiH/PrI9c21oGfEx+sj5VLI DxGn80g+zXCOrDo4YNEVDjDRWupy/jyNKIq8pQ6oAmPAwq9DiC1rTo/VkwjoCmOOOC5w3tGoPnQ d5iHDUxAQv7ulLHtAB6rkcujL0yLwc0uiPMJx8N+jxyqV7N6jyxliJAp3+Y0PZq/SgsG+bF5guO q6fTIP/aOvRy5hLDq4AZ2/EslODvoLkaXde53ELuveDJn1PcJ0XwHcSMu+bxkXSvhRh7s2bDduJ arQfbhk0W39bOB0eV0gnVf8AgZAF4O406cjX6vYZGU6gpr90B0PBriZ0QFpEQenNBM7rX0j9BX9 sxkNO9h2huyCMwIYAJnol3eaZTkejWZc+s24= X-Google-Smtp-Source: AGHT+IFFQiKwXNk+FSZRxYuGGL1vRU4+A1PP9vowX0NB2SJbrCiTrutdhkP19/BkACOv1Vq3pcdscQ== X-Received: by 2002:a05:620a:6887:b0:7c0:9f12:2b90 with SMTP id af79cd13be357-7c3d8bd2be6mr306010285a.6.1741143940679; Tue, 04 Mar 2025 19:05:40 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3cc0c20ffsm210181585a.91.2025.03.04.19.05.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:40 -0800 (PST) Received: from phl-compute-09.internal (phl-compute-09.phl.internal [10.202.2.49]) by mailfauth.phl.internal (Postfix) with ESMTP id 9F431120006A; Tue, 4 Mar 2025 22:05:39 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-09.internal (MEProxy); Tue, 04 Mar 2025 22:05:39 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpefghfffvefhhfdvgfejgfekvdelgfekgeev ueehlefhiedvgeffjefgteeugfehieenucffohhmrghinhepkhgvrhhnvghlrdhorhhgne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepsghoqhhu nhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqieelvdeghedtieegqdduje ejkeehheehvddqsghoqhhunhdrfhgvnhhgpeepghhmrghilhdrtghomhesfhhigihmvgdr nhgrmhgvpdhnsggprhgtphhtthhopeefjedpmhhouggvpehsmhhtphhouhhtpdhrtghpth htoheprhgtuhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehpmhhlrggu vghksehsuhhsvgdrtghomhdprhgtphhtthhopehrohhsthgvughtsehgohhoughmihhsrd horhhgpdhrtghpthhtohepjhhohhhnrdhoghhnvghssheslhhinhhuthhrohhnihigrdgu vgdprhgtphhtthhopehsvghnohiihhgrthhskhihsegthhhrohhmihhumhdrohhrghdprh gtphhtthhopehprghulhhmtghksehkvghrnhgvlhdrohhrghdprhgtphhtthhopehfrhgv uggvrhhitgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepnhgvvghrrghjrdhuphgrug hhhigrhieskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhovghlsehjohgvlhhfvghr nhgrnhguvghsrdhorhhg X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:38 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev Subject: [PATCH rcu 08/10] rcutorture: Allow a negative value for nfakewriters Date: Tue, 4 Mar 2025 19:05:03 -0800 Message-ID: <20250305030505.94059-9-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Uladzislau Rezki (Sony)" Currently "nfakewriters" parameter can be set to any value but there is no possibility to adjust it automatically based on how many CPUs a system has where a test is run on. To address this, if the "nfakewriters" is set to negative it will be adjusted to num_online_cpus() during torture initialization. Reviewed-by: Paul E. McKenney Signed-off-by: Uladzislau Rezki (Sony) Link: https://lore.kernel.org/r/20250227131613.52683-1-urezki@gmail.com Signed-off-by: Boqun Feng --- kernel/rcu/rcutorture.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index d26fb1d33ed9..726c2d63ab66 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -147,6 +147,7 @@ MODULE_PARM_DESC(torture_type, "Type of RCU to torture (rcu, srcu, ...)"); static int nrealnocbers; static int nrealreaders; +static int nrealfakewriters; static struct task_struct *writer_task; static struct task_struct **fakewriter_tasks; static struct task_struct **reader_tasks; @@ -1728,7 +1729,7 @@ rcu_torture_fakewriter(void *arg) do { torture_hrtimeout_jiffies(torture_random(&rand) % 10, &rand); if (cur_ops->cb_barrier != NULL && - torture_random(&rand) % (nfakewriters * 8) == 0) { + torture_random(&rand) % (nrealfakewriters * 8) == 0) { cur_ops->cb_barrier(); } else { switch (synctype[torture_random(&rand) % nsynctypes]) { @@ -2522,7 +2523,7 @@ rcu_torture_print_module_parms(struct rcu_torture_ops *cur_ops, const char *tag) "nocbs_nthreads=%d nocbs_toggle=%d " "test_nmis=%d " "preempt_duration=%d preempt_interval=%d\n", - torture_type, tag, nrealreaders, nfakewriters, + torture_type, tag, nrealreaders, nrealfakewriters, stat_interval, verbose, test_no_idle_hz, shuffle_interval, stutter, irqreader, fqs_duration, fqs_holdoff, fqs_stutter, test_boost, cur_ops->can_boost, @@ -3597,7 +3598,7 @@ rcu_torture_cleanup(void) rcu_torture_reader_mbchk = NULL; if (fakewriter_tasks) { - for (i = 0; i < nfakewriters; i++) + for (i = 0; i < nrealfakewriters; i++) torture_stop_kthread(rcu_torture_fakewriter, fakewriter_tasks[i]); kfree(fakewriter_tasks); @@ -3994,6 +3995,14 @@ rcu_torture_init(void) rcu_torture_init_srcu_lockdep(); + if (nfakewriters >= 0) { + nrealfakewriters = nfakewriters; + } else { + nrealfakewriters = num_online_cpus() - 2 - nfakewriters; + if (nrealfakewriters <= 0) + nrealfakewriters = 1; + } + if (nreaders >= 0) { nrealreaders = nreaders; } else { @@ -4050,8 +4059,9 @@ rcu_torture_init(void) writer_task); if (torture_init_error(firsterr)) goto unwind; - if (nfakewriters > 0) { - fakewriter_tasks = kcalloc(nfakewriters, + + if (nrealfakewriters > 0) { + fakewriter_tasks = kcalloc(nrealfakewriters, sizeof(fakewriter_tasks[0]), GFP_KERNEL); if (fakewriter_tasks == NULL) { @@ -4060,7 +4070,7 @@ rcu_torture_init(void) goto unwind; } } - for (i = 0; i < nfakewriters; i++) { + for (i = 0; i < nrealfakewriters; i++) { firsterr = torture_create_kthread(rcu_torture_fakewriter, NULL, fakewriter_tasks[i]); if (torture_init_error(firsterr)) From patchwork Wed Mar 5 03:05:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001903 Received: from mail-qk1-f181.google.com (mail-qk1-f181.google.com [209.85.222.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 266CC199E89; Wed, 5 Mar 2025 03:05:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143946; cv=none; b=SlSxvgnddFWQNceAL6LchnYjv4nid5ixAR+R1Ao8a/2EBLAsjbo9ZskM3LmaPmI22Btp0oa5F7wNSMQPGz4Kv3tSnJjz0xXUkk0SetXGg3K77NEgvjkPU9nObOWdOUN9eIxlJ0h5b2ID78jFmWTOGCkWPrM/wIT7whhahDDmWjk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143946; c=relaxed/simple; bh=tmzTUwcDvfcoyJpi6SQQUu4XwTaZg+heQ4riDadkSPI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S5SqrmDWnsMKnNtulSQD/LpEPrSGI4uVyAU9L6DDsSOaFqpi7bTTODl91n0NQASJaBeYARvshZnd+HQ/stoOy7iPnhVa5Yd77H15MQE+QjNZ40nxlLtk7gZuM0Uh95+Qxh9Diki1LV3fCmRjhfoUFJSxabvui0GJkZs+4Nvdufc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WwNrF/m3; arc=none smtp.client-ip=209.85.222.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WwNrF/m3" Received: by mail-qk1-f181.google.com with SMTP id af79cd13be357-7be49f6b331so615729485a.1; Tue, 04 Mar 2025 19:05:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143944; x=1741748744; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=ZWUbTmfZeSTAjfInLJsRKj3El0zpw1/MvyJ1JvXIc1U=; b=WwNrF/m3DzrKJIka2pBn9Mf15dXkgXe6/dod3d6YmHKOpSJdvxrsB2wTi3hdvDNYFo xrEDnFiJPRWDCk8TGfURDPs/EE3ZuCg/0497NQSQ19OwiEseliYJnZBVRhPdnJP3NmYL 4Y5anx++QmLL4Zzf6HIdVNayuRj1/I4jDtobB7J1goaPumLfYil8LoZqmzQh/TJGiKeT ASDC+vK919IN3rKDZQoWY0rB7jqN41ag652lyDFusF/aTNvYJFbLytzu8HdxPTamA9oO cNId6FaEHqW5A8lWAT1lMyC1NoIYLvfp+EiBhinTgaO1Zsrru0jnTTEK5CmF6VcpjRsf BPnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143944; x=1741748744; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZWUbTmfZeSTAjfInLJsRKj3El0zpw1/MvyJ1JvXIc1U=; b=UaJTB8oP+Yx6k/ZBvHhfpMVmv9/u8G8L4ysXA/xikdzElm+BFZSyT7i04dLY/GufN0 p5nU73YC4qLBowB3OtbbVoJXlInEAdU3L0XTZnDoVw0uDmjWVSzeBclpV356xvwIZQNQ sbxU5Cc+qpW64ykvlgjkLFHN/LH/qHnzotYKj4ntHTaiuwMfWhAEAdtNwRg0h1MN9FgG XW+qplzsrg7bMLE5ipwA05CJCdaJpG/njg+sSQGaQS6czYYQBuhWAMSxd+TKE+AizhT/ 3q+u75yFQUwcjlL9zfpQDTidr9EQ3DkJ8rj20R4HO+zzr5BGwViQptJ3KO2+tcgS/y4m aYTw== X-Forwarded-Encrypted: i=1; AJvYcCVZsdD0smYPmXW8krW1zElovfvR+t0aw+ucDSSn7qW6btBgXzVFRUqQnPqLd8OdU4jTKCKc9UKLtamJwHV8d3Tp@vger.kernel.org, AJvYcCWAhkwQDG9/g4v+F1Va3ZbLgYOxTu9mPCCBC8Tq59mi6QF44Iw+lb1upXf4a/5v5EmHB4krbKaJYmhYDds=@vger.kernel.org X-Gm-Message-State: AOJu0Yxd05E5ge8HSNAiRfcyz9Ye8Tg8RnatVzWB86zebB/s1NIsN4RI RFF2tvB3Ca811u3aAhCQlO4UguNLGQp7iXiM3f+tDg19wbIal5JR X-Gm-Gg: ASbGnctZCxuAVudQKcq2kjggBuOKe5k8EZ0UZjzK90V0eqVrjwvlZjAhTElYlV6LDYM Vrz3w4JeWU0aMBkwjyHxpdudUBUd/gVV3X8aplvuIjH0YgmWs1TDPfqzMibMn/ze/R630keO6Nt lyElVsxt1fjWRYtqv57E9zz0GC2NI72yAUyPkbm/d/jfkhqe4gkSwMi4y5OlB4M2FJg//gr/K1q vZbPvdccbFBEu5Wty42RRdRIsaLPSclQ52B53OMAp1xagd20a4qUa0MIC6VdBdrK4XdFFo6tccL DJGDrcY8Yr0XKiri5Ac+27IQsQELNMdYAbn2n87NNr3GjXLqxQO/R8HSCgfQFqQxiFkoe3W6pVt JDV9j0Ewd4rSvQMk6Hryzs5Po+7FjNH+/qfY= X-Google-Smtp-Source: AGHT+IGbpMYWPfZVn/GZecxLR58PtHpyaPX50Ibx/nZVKroR/TmXFshuqFOaLzZeECRWUFdnxpEcCA== X-Received: by 2002:a05:622a:1389:b0:471:ef27:a314 with SMTP id d75a77b69052e-4750b442bafmr21764871cf.18.1741143943723; Tue, 04 Mar 2025 19:05:43 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-474e3affc66sm38282841cf.4.2025.03.04.19.05.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:43 -0800 (PST) Received: from phl-compute-08.internal (phl-compute-08.phl.internal [10.202.2.48]) by mailfauth.phl.internal (Postfix) with ESMTP id 97BEF120006C; Tue, 4 Mar 2025 22:05:42 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-08.internal (MEProxy); Tue, 04 Mar 2025 22:05:42 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjeefucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpefghfffvefhhfdvgfejgfekvdelgfekgeev ueehlefhiedvgeffjefgteeugfehieenucffohhmrghinhepkhgvrhhnvghlrdhorhhgne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepsghoqhhu nhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqieelvdeghedtieegqdduje ejkeehheehvddqsghoqhhunhdrfhgvnhhgpeepghhmrghilhdrtghomhesfhhigihmvgdr nhgrmhgvpdhnsggprhgtphhtthhopeefjedpmhhouggvpehsmhhtphhouhhtpdhrtghpth htoheprhgtuhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehpmhhlrggu vghksehsuhhsvgdrtghomhdprhgtphhtthhopehrohhsthgvughtsehgohhoughmihhsrd horhhgpdhrtghpthhtohepjhhohhhnrdhoghhnvghssheslhhinhhuthhrohhnihigrdgu vgdprhgtphhtthhopehsvghnohiihhgrthhskhihsegthhhrohhmihhumhdrohhrghdprh gtphhtthhopehprghulhhmtghksehkvghrnhgvlhdrohhrghdprhgtphhtthhopehfrhgv uggvrhhitgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepnhgvvghrrghjrdhuphgrug hhhigrhieskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhovghlsehjohgvlhhfvghr nhgrnhguvghsrdhorhhg X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:41 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev Subject: [PATCH rcu 09/10] rcu: Update TREE05.boot to test normal synchronize_rcu() Date: Tue, 4 Mar 2025 19:05:04 -0800 Message-ID: <20250305030505.94059-10-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Uladzislau Rezki (Sony)" Add extra parameters for rcutorture module. One is the "nfakewriters" which is set -1. There will be created number of test-kthreads which correspond to number of CPUs in a test system. Those threads randomly invoke synchronize_rcu() call. Apart of that "rcu_normal" is set to 1, because it is specifically for a normal synchronize_rcu() testing, also a newly added parameter which is "rcu_normal_wake_from_gp" is set to 1 also. That prevents interaction with other callbacks in a system. Reviewed-by: Paul E. McKenney Signed-off-by: Uladzislau Rezki (Sony) Link: https://lore.kernel.org/r/20250227131613.52683-2-urezki@gmail.com Signed-off-by: Boqun Feng --- tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot b/tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot index c419cac233ee..54f5c9053474 100644 --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot @@ -2,3 +2,9 @@ rcutree.gp_preinit_delay=3 rcutree.gp_init_delay=3 rcutree.gp_cleanup_delay=3 rcupdate.rcu_self_test=1 + +# This part is for synchronize_rcu() testing +rcutorture.nfakewriters=-1 +rcutorture.gp_sync=1 +rcupdate.rcu_normal=1 +rcutree.rcu_normal_wake_from_gp=1 From patchwork Wed Mar 5 03:05:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boqun Feng X-Patchwork-Id: 14001904 Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D6ED18B467; Wed, 5 Mar 2025 03:05:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143949; cv=none; b=ZSQidVDPZCJ67hEDCaynCWEYvVyhHiUsE4jeMkt0YVIn5yVAHkTu7BfYZBYyGe/ON6FIjhctWphiRwwBhkxME9kSmmoi9FRHAR0ToQ3v7kqxwj/YwV882lfZf/vMsfDOhxj7R5xsTIGeVAtZgrFsa+W6CS5aPBfUsq7ahqoZClU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741143949; c=relaxed/simple; bh=8zRq7ZAPDEtp3MVmA8IoDvypSZucbtkomFIWTGs/T30=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=R3vMTLvibgux4gnYM2WyoEhZKdBIqbD/aQ+Vzrxse9zOAIsG0aufQFIqJHlHByXR++rEYjBdfCHE2jAvDdzKfTbZ/wBGI9PaoKQrwnpdt2pCA35/NTw3wez9+V/TlpLUPRwIe6LCtoiblN8bVgFgzy7zJ8pQUIuI7kWKidrpYio= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RC3Z9lfH; arc=none smtp.client-ip=209.85.222.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RC3Z9lfH" Received: by mail-qk1-f182.google.com with SMTP id af79cd13be357-7c08fc20194so1061861185a.2; Tue, 04 Mar 2025 19:05:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741143947; x=1741748747; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:from:to:cc:subject :date:message-id:reply-to; bh=pfiiCaIQ/4q3ANbC0HgoJrrFUh49fZ9FI7aYC2TsAOA=; b=RC3Z9lfHvlLG7CYrosvga6fvC8nmRYI7epotfKmlM74B3MK0yo7yJ2K8Nr1/iMfI3E +6+28Z0u4IjpSouMaJS0Qd6RQzz/tS2U+M514A8ccYnrQYVPo4fLKZMRhQg7Yx2rQHuX 1mqSGAcE3W2YLqz+CAFOp/Dxdsoqv/3kPJh1sgG2Lc/N73m3l614tKzQxKw+1xorDE2/ GPckljEBUcHnvxFqYyTDsvqe/fzuyP6qDzR8wy277nkBFFVe7X5l4deDgNXG0AbHpHTE HZbsWfNU0yxRvpzUx0wTGm6TB+/kl4p6p5LPhSR2roW5gMr9LPxrx4ImZJaVUdyw2EkK vn9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741143947; x=1741748747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:feedback-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=pfiiCaIQ/4q3ANbC0HgoJrrFUh49fZ9FI7aYC2TsAOA=; b=jlaHw9b8YV/WC1LdO7pFCC8EB8C2utaGRTrbWeujTQZnrfnIiHWIZ8hM+ABMzf40mR cuhPZsqJexosFp7dEb5SVCiZqr5bGys+fUrUi79J0ZXEsEuZAYuYdNdSRbEQ7QXVvO3K 0spZgIrfnWahrhcpTn8GBYz4yHtSMjP25H25MNbnH9vhYwTrRI1xJhZfi5Eyss06JYlH DmingLXexpTCrGCdHPxSKPdfBRkFUQF9B9wT0HKSQRhry1G1nwx7qoC5uIerd/iGKM9N Y0TAk63K2Yj1HLnxEKpMqYDJKZQYWzIVWPgxNAIlx7JaYQaSw204M5ZKnKd49mOFZdZQ eiug== X-Forwarded-Encrypted: i=1; AJvYcCVEyFL7KKkqOij6ZG3HFXavkcHNz/eIdL2HvXFFEd9MLTEDpL5RIVgooVK72CyGwTxr5YHG2lQ9QLvopneb1o9A@vger.kernel.org, AJvYcCVwUFmZmIfDK7BnTE7nFf1CjpbVTn54H8LwoLoVaCO1vzlF8/q22BXj5lyWw54O6Xh9pXlLqQXWPNK8zXU=@vger.kernel.org X-Gm-Message-State: AOJu0YzWeuEtND50Fyu4xL8GkFqEuNIaW1p4ipdGRy42GzqTfriY1F0d xsFb9mrAKcNYKXawfqD2ceKMrHQip2+EZebFSBVqF/VBhta7OfON X-Gm-Gg: ASbGnctK6cKx8OrqnhHSvRRvseY//mmxB5a/avfMT/ahsTW5JxqdQ5Ja2+kRgj01yKh Pzg7APutTDjsGbfvIHI/Bb2MnP4OYcHs9qpXNfTQgGtachgV5trvpOJWNF6cslYs0THm5FfnXs9 REKX/46kGDLp4oBbWuGLKzD9UjI5hzzlrMkNZitb4Z/afg7x+FHWXeZxOR11WLy6zfpyCiygWpp PanOQS/UvqMJcFgW5LUdtU2slzD9TQz74LDWHRDuk9eLUKvqNvzzP+LyVhxbi280hm1wkNump8J ZQxWEfItncQqigEuC59CGaCtk3AhCqHDdQstYqUV/C/AO4NgCeSMcMcvhMQKCJBzxtSfHS5b3SU cIURc6BBvGK2EzhuXu5VH6lcVHBUQQPwIoIs= X-Google-Smtp-Source: AGHT+IGSPnM2N0ins91abjkg9pNmv3v/fx5zOwCLPHARmT5szHhUZiMfGjc0ivQMHY/Uv2wzvA+SKw== X-Received: by 2002:a05:620a:86cb:b0:7c3:c869:1aff with SMTP id af79cd13be357-7c3d8dec0a3mr230019085a.16.1741143946987; Tue, 04 Mar 2025 19:05:46 -0800 (PST) Received: from fauth-a1-smtp.messagingengine.com (fauth-a1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7c3c0d34fadsm323062985a.12.2025.03.04.19.05.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 19:05:46 -0800 (PST) Received: from phl-compute-11.internal (phl-compute-11.phl.internal [10.202.2.51]) by mailfauth.phl.internal (Postfix) with ESMTP id B7D64120006A; Tue, 4 Mar 2025 22:05:45 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Tue, 04 Mar 2025 22:05:45 -0500 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddutdefjedvucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredt tdenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpefghfffvefhhfdvgfejgfekvdelgfekgeev ueehlefhiedvgeffjefgteeugfehieenucffohhmrghinhepkhgvrhhnvghlrdhorhhgne cuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepsghoqhhu nhdomhgvshhmthhprghuthhhphgvrhhsohhnrghlihhthidqieelvdeghedtieegqdduje ejkeehheehvddqsghoqhhunhdrfhgvnhhgpeepghhmrghilhdrtghomhesfhhigihmvgdr nhgrmhgvpdhnsggprhgtphhtthhopeefkedpmhhouggvpehsmhhtphhouhhtpdhrtghpth htoheprhgtuhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehpmhhlrggu vghksehsuhhsvgdrtghomhdprhgtphhtthhopehrohhsthgvughtsehgohhoughmihhsrd horhhgpdhrtghpthhtohepjhhohhhnrdhoghhnvghssheslhhinhhuthhrohhnihigrdgu vgdprhgtphhtthhopehsvghnohiihhgrthhskhihsegthhhrohhmihhumhdrohhrghdprh gtphhtthhopehprghulhhmtghksehkvghrnhgvlhdrohhrghdprhgtphhtthhopehfrhgv uggvrhhitgeskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepnhgvvghrrghjrdhuphgrug hhhigrhieskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepjhhovghlsehjohgvlhhfvghr nhgrnhguvghsrdhorhhg X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 4 Mar 2025 22:05:44 -0500 (EST) From: Boqun Feng To: rcu@vger.kernel.org Cc: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Mathieu Desnoyers , Lai Jiangshan , Zqiang , Davidlohr Bueso , Shuah Khan , Sebastian Andrzej Siewior , Clark Williams , Masami Hiramatsu , Yuntao Wang , Andrew Morton , Rasmus Villemoes , Guo Weikang , KP Singh , Huang Shijie , Raul E Rangel , Joel Granados , Anna Schumaker , "Martin K. Petersen" , =?utf-8?q?Thomas_Wei?= =?utf-8?q?=C3=9Fschuh?= , zhangguopeng , Thomas Gleixner , "Neeraj Upadhyay (AMD)" , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-rt-devel@lists.linux.dev, cheung wall Subject: [PATCH rcu 10/10] rcu: Use _full() API to debug synchronize_rcu() Date: Tue, 4 Mar 2025 19:05:05 -0800 Message-ID: <20250305030505.94059-11-boqun.feng@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250305030505.94059-1-boqun.feng@gmail.com> References: <20250305030505.94059-1-boqun.feng@gmail.com> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: "Uladzislau Rezki (Sony)" Switch for using of get_state_synchronize_rcu_full() and poll_state_synchronize_rcu_full() pair to debug a normal synchronize_rcu() call. Just using "not" full APIs to identify if a grace period is passed or not might lead to a false-positive kernel splat. It can happen, because get_state_synchronize_rcu() compresses both normal and expedited states into one single unsigned long value, so a poll_state_synchronize_rcu() can miss GP-completion when synchronize_rcu()/synchronize_rcu_expedited() concurrently run. To address this, switch to poll_state_synchronize_rcu_full() and get_state_synchronize_rcu_full() APIs, which use separate variables for expedited and normal states. Reported-by: cheung wall Closes: https://lore.kernel.org/lkml/Z5ikQeVmVdsWQrdD@pc636/T/ Fixes: 988f569ae041 ("rcu: Reduce synchronize_rcu() latency") Signed-off-by: Uladzislau Rezki (Sony) Reviewed-by: Paul E. McKenney Link: https://lore.kernel.org/r/20250227131613.52683-3-urezki@gmail.com Signed-off-by: Boqun Feng --- include/linux/rcupdate_wait.h | 3 +++ kernel/rcu/tree.c | 8 +++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/linux/rcupdate_wait.h b/include/linux/rcupdate_wait.h index f9bed3d3f78d..4c92d4291cce 100644 --- a/include/linux/rcupdate_wait.h +++ b/include/linux/rcupdate_wait.h @@ -16,6 +16,9 @@ struct rcu_synchronize { struct rcu_head head; struct completion completion; + + /* This is for debugging. */ + struct rcu_gp_oldstate oldstate; }; void wakeme_after_rcu(struct rcu_head *head); diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 131fb463ba68..fb98d4d9d9c9 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -1612,12 +1612,10 @@ static void rcu_sr_normal_complete(struct llist_node *node) { struct rcu_synchronize *rs = container_of( (struct rcu_head *) node, struct rcu_synchronize, head); - unsigned long oldstate = (unsigned long) rs->head.func; WARN_ONCE(IS_ENABLED(CONFIG_PROVE_RCU) && - !poll_state_synchronize_rcu(oldstate), - "A full grace period is not passed yet: %lu", - rcu_seq_diff(get_state_synchronize_rcu(), oldstate)); + !poll_state_synchronize_rcu_full(&rs->oldstate), + "A full grace period is not passed yet!\n"); /* Finally. */ complete(&rs->completion); @@ -3218,7 +3216,7 @@ static void synchronize_rcu_normal(void) * snapshot before adding a request. */ if (IS_ENABLED(CONFIG_PROVE_RCU)) - rs.head.func = (void *) get_state_synchronize_rcu(); + get_state_synchronize_rcu_full(&rs.oldstate); rcu_sr_normal_add_req(&rs);