From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from metis.whiteo.stw.pengutronix.de (metis.whiteo.stw.pengutronix.de [185.203.201.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D6DE51E47A8 for ; Mon, 14 Jul 2025 10:18:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.203.201.7 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752488282; cv=none; b=fd5tZIigQqHqqY2UGhiMFPTKdX8BGhPnNmyLjkLx3Ely/cQ+/mEHwzpbzCS9IgIlX2rcnQL8NYN+pq5HGkG275LFnPUxHTkBdrO5rKW3Tje38llveyVYT/SYC3ddQUgCSXI3vbF2GVBS/hvp8cHiQwTZmmSme+vzcxPuYPLtuEU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1752488282; c=relaxed/simple; bh=aeszjQw2c9arLj1BbbOYpfg53cIWR3hrpjFv96howeM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=VT5rrrBQZejy9C6YyrfCRPZa0sMIqo9LlcDVwKpUdzXBFu7ElmdZsmfmQeoiP53Zde9Gl5NQI8bylD5+FEP4p7rz/FlxGDR1ctROGbW+hC0Um58mIzPXYwip6147MuVEpsXr8nETtB3oNDriEnrseQ1jwmPDPCMqZvjXP8rTtzE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de; spf=pass smtp.mailfrom=pengutronix.de; arc=none smtp.client-ip=185.203.201.7 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=pengutronix.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pengutronix.de Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ubGFp-0006xk-La; Mon, 14 Jul 2025 12:17:49 +0200 Received: from pty.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::c5]) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ubGFo-008Oei-1j; Mon, 14 Jul 2025 12:17:48 +0200 Received: from ore by pty.whiteo.stw.pengutronix.de with local (Exim 4.96) (envelope-from ) id 1ubGFo-0007P4-1M; Mon, 14 Jul 2025 12:17:48 +0200 Date: Mon, 14 Jul 2025 12:17:48 +0200 From: Oleksij Rempel To: Sebastian Reichel , Srinivas Kandagatla , Benson Leung , Tzung-Bi Shih , Daniel Lezcano , Greg Kroah-Hartman Cc: kernel@pengutronix.de, linux-kernel@vger.kernel.org, Liam Girdwood , Mark Brown , "Rafael J. Wysocki" , Zhang Rui , Lukasz Luba , linux-pm@vger.kernel.org, =?utf-8?B?U8O4cmVu?= Andersen , Guenter Roeck , Matti Vaittinen , Ahmad Fatoum , Andrew Morton , chrome-platform@lists.linux.dev Subject: Re: [PATCH v11 0/7] Introduction of PSCR Framework and Related Components Message-ID: References: <20250618120255.3141862-1-o.rempel@pengutronix.de> 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=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20250618120255.3141862-1-o.rempel@pengutronix.de> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ore@pengutronix.de X-SA-Exim-Scanned: No (on metis.whiteo.stw.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Hi Greg, this patch series doesn’t belong to any single existing subsystem. It spans drivers like power/reset/, touches nvmem, regulator, and adds new interfaces. Since there's no clear maintainer fit and the code is self-contained, I’d like to ask you to pick it up. The latest version is v11 and has addressed all review comments. Thanks! Oleksij On Wed, Jun 18, 2025 at 02:02:48PM +0200, Oleksij Rempel wrote: > changes v11: > - add missing break reported by kernel test robot > > changes v10: > - add some add Reviewed-by tags > - regulator_handle_critical: set pscr = PSCR_UNKNOWN for default case > - make g_pscrr static > > changes v9: > - Remove redundant pr_crit() messages before hw_protection_trigger() > - Replace psc_reason_to_str() switch with static const string array > - Mark psc_last_reason as static > > changes v8: > - Use DEFINE_GUARD() and guard(g_pscrr) for scoped locking of the global > pscrr_core struct > - Replace manual mutex_lock/unlock with automatic cleanup-based guard() > usage > - Centralize backend and locking state in struct pscrr_core > - Prepare for future multi-backend support with clean encapsulation > - Improve sysfs documentation: > * Added full enum psc_reason value table > * Simplified example comments, removed redundant "may differ" phrasing > * Added note that not all values are supported on all systems > * Linked value definitions to include/linux/reboot.h > * Added clear read/write usage examples for sysfs entries > > changes v7: > - document expected values in sysfs documentation > - make write support optional > > changes v6: > - add sysfs documentation > - rebase against latest hw_protection_reboot changes: > https://web.git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?h=mm-nonmm-unstable&id=212dd3f6e57f6af8ed3caa23b93adc29334f9652 > - push core part of the reset reason the kernel/reboot.c > > changes v5: > - fix compile with NVMEM=n and potential issues with NVMEM=m > > changes v4: > - fix compile with CONFIG_PSCRR=n > > changes v3 > - rework to remove devicetree dependencies > - extend NVMEM to search devices and cells by names. > > changes v2: > - rename the framework from PSCR to PSCRR (last R is for Recorder) > - extend power on reason header and use it to show detected reason on > system start and in sysfs. > - remove "unknow" reason > - rebase on top of v6.8-rc1 > - yaml fixes > - zero reason state on boot > > Hello all, > > This patch series introduces the Power State Change Reasons Recording > (PSCRR) framework and its related components into the kernel. The PSCR > framework is designed for systems where traditional methods of storing > power state change reasons, like PMICs or watchdogs, are inadequate. It > provides a structured way to store reasons for system shutdowns and > reboots, such as under-voltage or software-triggered events, in > non-volatile hardware storage. > > These changes are critical for systems requiring detailed postmortem > analysis and where immediate power-down scenarios limit traditional > storage options. The framework also assists bootloaders and early-stage > system components in making informed recovery decisions. > > > > Oleksij Rempel (7): > power: Extend power_on_reason.h for upcoming PSCRR framework > reboot: hw_protection_trigger: use standardized numeric > shutdown/reboot reasons instead of strings > power: reset: Introduce PSCR Recording Framework for Non-Volatile > Storage > nvmem: provide consumer access to cell size metrics > nvmem: add support for device and sysfs-based cell lookups > power: reset: add PSCR NVMEM Driver for Recording Power State Change > Reasons > Documentation: Add sysfs documentation for PSCRR reboot reason > tracking > > .../ABI/testing/sysfs-kernel-reboot-pscrr | 74 ++++ > drivers/nvmem/core.c | 134 ++++++ > drivers/platform/chrome/cros_ec_lpc.c | 2 +- > drivers/power/reset/Kconfig | 47 ++ > drivers/power/reset/Makefile | 2 + > drivers/power/reset/pscrr-nvmem.c | 254 +++++++++++ > drivers/power/reset/pscrr.c | 405 ++++++++++++++++++ > drivers/regulator/core.c | 16 +- > drivers/regulator/irq_helpers.c | 9 +- > drivers/thermal/thermal_core.c | 3 +- > include/linux/nvmem-consumer.h | 25 ++ > include/linux/power/power_on_reason.h | 4 + > include/linux/pscrr.h | 58 +++ > include/linux/reboot.h | 77 +++- > kernel/reboot.c | 85 +++- > 15 files changed, 1173 insertions(+), 22 deletions(-) > create mode 100644 Documentation/ABI/testing/sysfs-kernel-reboot-pscrr > create mode 100644 drivers/power/reset/pscrr-nvmem.c > create mode 100644 drivers/power/reset/pscrr.c > create mode 100644 include/linux/pscrr.h > > -- > 2.39.5 > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |