[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aHTZTFxfS6Bn4yhz@pengutronix.de>
Date: Mon, 14 Jul 2025 12:17:48 +0200
From: Oleksij Rempel <o.rempel@...gutronix.de>
To: Sebastian Reichel <sre@...nel.org>,
Srinivas Kandagatla <srinivas.kandagatla@...aro.org>,
Benson Leung <bleung@...omium.org>,
Tzung-Bi Shih <tzungbi@...nel.org>,
Daniel Lezcano <daniel.lezcano@...aro.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: kernel@...gutronix.de, linux-kernel@...r.kernel.org,
Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>,
"Rafael J. Wysocki" <rafael@...nel.org>,
Zhang Rui <rui.zhang@...el.com>, Lukasz Luba <lukasz.luba@....com>,
linux-pm@...r.kernel.org,
Søren Andersen <san@...v.dk>,
Guenter Roeck <groeck@...omium.org>,
Matti Vaittinen <mazziesaccount@...il.com>,
Ahmad Fatoum <a.fatoum@...gutronix.de>,
Andrew Morton <akpm@...ux-foundation.org>,
chrome-platform@...ts.linux.dev
Subject: Re: [PATCH v11 0/7] Introduction of PSCR Framework and Related
Components
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 <lkp@...el.com>
>
> 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 |
Powered by blists - more mailing lists