From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 70D75292B4B for ; Thu, 25 Jun 2026 14:03:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782396241; cv=none; b=g1qGGZRNQURzVVdiWQd7B6Pd/uVl8pTlw91be8hpljK7ofSmShLGqzX4jj7l0XPMlGJQ92yP2I2vMKs4HCDvEuKm+M7wrHozoEy1HH2xLEgEj9jreGlQr8i5R1tmn3CbbaAKOmRZCES4LUo9RkK0/9u3g2HEijMiJN8SEypAA2k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782396241; c=relaxed/simple; bh=SW2Goo4rC3spCqQexUxOpucCwXM94gSy77m8ajd8jMw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=qMv4nm5ijNTOz2dbeLotFGXuGOrhlIsdVSXcj9tcAmlGEKxsxJE0TLvyxB1y+830gX6rjVNRjUtEzFbBycUmM5CjREukrK7o5LyOmOi06zIJQO7pckrD39T8o9i5lIdGBLlrsIpNY1I2CcfdGYZo88CaN+OXdZX0pZdyUDHQ184= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=NdzVzaAs; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="NdzVzaAs" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-46cacc39191so401326f8f.0 for ; Thu, 25 Jun 2026 07:03:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1782396237; x=1783001037; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=FXePbhpqmqUIpWXHZ6AhrPzihy8SICwPudmPEVZUNGU=; b=NdzVzaAs1yK9j5aKrWRhOLNczB1teRTlcAk9Bpwx0mbmtn2GjtJi009e8Z8pqNSPU2 Msn3oO9E0pQ+TCbYVWhTZf0oQ/geeaM8oZPbrUmDj77xFt8W/7Qzgel1hRT89pHottA2 lGcUJ/x6oH5CmB6wVb0V1eULxqlXEqB9VN9uoNxGU16+s5UMS8jsf7yvjrxlcNxrsnnd T8Kwa6kyNTnl/5YdzxSRii+zQ3qXrdLv3nIhPsUYN3Z5YPWwNHYDGHLq74RNBlpqrRLU k725Ce3Z1xILSKpMVuQsza8V8r2NdmZV1PA7iPL8zM7ImkiJRSofk3eDV5+axNYqkZNU EbdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782396237; x=1783001037; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FXePbhpqmqUIpWXHZ6AhrPzihy8SICwPudmPEVZUNGU=; b=oeZ9Rqn4TxMCuOzjc//FgUeD/ZOjKP8FGZHPVRW1nj+gZY4PLmWm+d8SIQEdDthx0T gmcpJt4eMY7P8hyJmvcyM+VKui/nQZ1x9wT2ssy7EnPFmUbeny6woAaVDzRu+UJozyIT kyHZpoL0HbBjmk1lE8c4++nKSZR1qgyKiYagw/wAHbNE48zXGnJz2PEUzSnlF2fZ/ZIF gkVQ/wTlRhdLtc7UYs5t+V2qPsNiCeHUJSp4KnHpO2yxGNMvpLcN561XQ2+0SHsQxEPL S4sReYiaLur5NAvT2Bffb45SvPaJCZn3s0ArMgS7bCDLEBFe9vHaML0G8v33K7bLvZCp vKng== X-Forwarded-Encrypted: i=1; AHgh+Rrbe8k3SnHdiPCaw3SXUGZ7SgcmGpCJryWXLDZ8SnUJ5v0vtW1uRR0+hIRViFOgXqJwv3yEZ4KoglbZRAo=@vger.kernel.org X-Gm-Message-State: AOJu0YwigcCc7OhQ5VMl7oQS5NvK/IU1VOxTxzU5FRfaYGmcHtS2i4P8 1AWu9o/ISU5M2NnE3whWHgMRsCuay2QO5ARYXItqqJPLJRFhkAsSYdAP3sq3wrzfZ3w= X-Gm-Gg: AfdE7cmni7IblyE5azANFdA4cuhPHf+UmMaSbgxueg4u65Eyaxh9prcuahh6gtBtcK2 d2KKZqcUd++Pszkl4w/nhK8SG7VgKp72qYFK4pZAwkFU7ljAD1kAMcK6VUunT5XRjmleNUb3pA1 EsLI7WbJnmdZnTeeXaBLUv5sn3/2K9hzUXOL4bBZwGtzSx3d1Q2aQRq10Tsm8CscUmXFW1AXs4L 3B9xWcJb4OnDWzOmjMTv/gUr2QAzUHckgWXJ39/TpDmUU1QOilgy6LDOM/oSIUA+RnIpA2XTpl6 gS8M8wYeDbEhTPAX76ZlRJHI2AWyFQNijL+1HWbRq6uDJunbdbLS1gdoXJTtaqt8pEgfgr7JGJK pPyy9l6djkf9O9jJzcKQ0dERpcbaaawmbPmvofcUwf+LE0+x8Jbkr6BnLXbcXoyqY1EcvK3F7Fa zi X-Received: by 2002:a5d:5f4d:0:b0:460:395c:7404 with SMTP id ffacd0b85a97d-46da9aceb40mr4346600f8f.20.1782396232681; Thu, 25 Jun 2026 07:03:52 -0700 (PDT) Received: from pathway.suse.cz ([176.114.240.130]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-46d86960983sm7584574f8f.4.2026.06.25.07.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Jun 2026 07:03:51 -0700 (PDT) Date: Thu, 25 Jun 2026 16:03:48 +0200 From: Petr Mladek To: Bradley Morgan Cc: Feng Tang , Andrew Morton , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Mukesh Kumar Chaurasiya , Andy Shevchenko , Jinchao Wang , Kees Cook , Rio , Joel Granados , Pnina Feder , Petr Pavlu , Sergey Senozhatsky , Douglas Anderson , Mayank Rungta , Tejun Heo , Zhenguo Yao , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH v2 1/4] sys_info: add helper for callers that handle all_bt Message-ID: References: <9b8c96e291696815d3c7de5d3e199298dee0279d.1782228656.git.include@grrlz.net> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9b8c96e291696815d3c7de5d3e199298dee0279d.1782228656.git.include@grrlz.net> On Tue 2026-06-23 15:34:58, Bradley Morgan wrote: > Some callers handle SYS_INFO_ALL_BT themselves before calling sys_info(). > Add a helper that strips that bit without turning an all_bt only mask into > a kernel_sys_info fallback. > > Signed-off-by: Bradley Morgan > --- > Changes since v1: > - New patch for the shared helper suggested by Petr. > > include/linux/sys_info.h | 1 + > lib/sys_info.c | 15 +++++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/include/linux/sys_info.h b/include/linux/sys_info.h > index a5bc3ea3d44b..87a841ec7b6a 100644 > --- a/include/linux/sys_info.h > +++ b/include/linux/sys_info.h > @@ -18,6 +18,7 @@ > #define SYS_INFO_BLOCKED_TASKS 0x00000080 > > void sys_info(unsigned long si_mask); > +void sys_info_without_all_bt(unsigned long si_mask); > unsigned long sys_info_parse_param(char *str); > > #ifdef CONFIG_SYSCTL > diff --git a/lib/sys_info.c b/lib/sys_info.c > index f32a06ec9ed4..6afd4c697633 100644 > --- a/lib/sys_info.c > +++ b/lib/sys_info.c > @@ -164,3 +164,18 @@ void sys_info(unsigned long si_mask) > { > __sys_info(si_mask ? : kernel_si_mask); > } > + > +void sys_info_without_all_bt(unsigned long si_mask) > +{ > + unsigned long dump_mask = si_mask & ~SYS_INFO_ALL_BT; > + > + /* > + * Do not call sys_info() when the caller context required only > + * backtraces from all CPUs. Otherwise sys_info() would fall back > + * to the generic kernel_si_mask. > + */ > + if (si_mask && !dump_mask) > + return; > + > + sys_info(dump_mask); > +} Sashiko AI pointed out that this function still migth trigger printing duplicate backtraces when (si_mask == 0). It calls sys_info(0) which falls back to kernel_si_mask which might have SYS_INFO_ALL_BT bit set, see https://sashiko.dev/#/patchset/9b8c96e291696815d3c7de5d3e199298dee0279d.1782228656.git.include%40grrlz.net => we need to eventually disable the SYS_INFO_ALL_BT bit also in kernel_si_mask. I think about creating a generic API which would allow to apply a filter mask, something like: >From 02fc810a801adc0fc4d1fd14318415719bdfc656 Mon Sep 17 00:00:00 2001 From: Bradley Morgan Date: Tue, 23 Jun 2026 15:34:58 +0000 Subject: [PATCH 1/4] sys_info: add helper for callers that print some sys_info on their own Some callers print some sys_info on their own before calling sys_info(). Add a helper which would allow to prevent a duplicated output. It is a bit tricky because kernel_si_mask should be used only when the call-specific si_mask is empty. But the duplicated output must be prevented there as well. Signed-off-by: Bradley Morgan Fixes: a9af76a78760 ("watchdog: add sys_info sysctls to dump sys info on system lockup") ? Fixes: a9af76a78760 ("watchdog: add sys_info sysctls to dump sys info on system lockup") --- include/linux/sys_info.h | 1 + lib/sys_info.c | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/include/linux/sys_info.h b/include/linux/sys_info.h index a5bc3ea3d44b..f1c2552ca3d1 100644 --- a/include/linux/sys_info.h +++ b/include/linux/sys_info.h @@ -18,6 +18,7 @@ #define SYS_INFO_BLOCKED_TASKS 0x00000080 void sys_info(unsigned long si_mask); +void sys_info_with_filter(unsigned long si_mask, unsigned long si_ignore_mask); unsigned long sys_info_parse_param(char *str); #ifdef CONFIG_SYSCTL diff --git a/lib/sys_info.c b/lib/sys_info.c index f32a06ec9ed4..d411fee10415 100644 --- a/lib/sys_info.c +++ b/lib/sys_info.c @@ -136,8 +136,10 @@ static int __init sys_info_sysctl_init(void) subsys_initcall(sys_info_sysctl_init); #endif -static void __sys_info(unsigned long si_mask) +static void __sys_info(unsigned long si_mask, unsigned long si_ignore_mask) { + si_mask &= ~si_ignore_mask; + if (si_mask & SYS_INFO_TASKS) show_state(); @@ -160,7 +162,21 @@ static void __sys_info(unsigned long si_mask) show_state_filter(TASK_UNINTERRUPTIBLE); } +void sys_info_with_filter(unsigned long si_mask, unsigned long si_ignore_mask) +{ + unsigned long dump_mask = si_mask & ~si_ignore_mask; + + /* + * Do not fall back to kernel_si_mask when the caller context + * required only the ignored information. + */ + if (si_mask && !dump_mask) + return; + + __sys_info(dump_mask ? : kernel_si_mask, si_ignore_mask); +} + void sys_info(unsigned long si_mask) { - __sys_info(si_mask ? : kernel_si_mask); + sys_info_with_filter(si_mask, 0); } The next patches might use sys_info_with_filter(si_mask, SYS_INFO_ALL_BT) instead of sys_info_without_all_bt(si_mask). Feel free to bike shed about the function name. Also I am not sure whether to pass the filter as bits to filter or already the complement (~mask). Best Regards, Petr