Re: [PATCH v14 0/6] power: reset: Introduce the Power State Change Reasons Recording (PSCRR) framework

From: Bradley Morgan

Date: Tue Sep 22 2026 - 02:33:25 EST


On 21 September 2026 18:44:15 BST, Faruque Ansari
<faruque.ansari@xxxxxxxxxxxxxxxx> wrote:
>Hello all,
>
>A system power-state transition - a shutdown or a reboot - rarely has a
>single, unambiguous cause, and no one component sees the whole picture:
>the
>PMIC, the watchdog, the SoC reset registers, the bootloader and software
>each
>only know their own part, so there is no single source of truth.
>
>PSCRR gives these sources one central place to report side by side. Every
>provider keeps its own view - several providers, and several reasons
>within a
>provider, can be reported at once and are deliberately not collapsed into
>a
>single "winning" cause (a bit of a minority report). On top of that it
>adds a
>software-backed recorder, so software-detected reasons - under-voltage,
>over-temperature, a watchdog pretimeout, a panic, a controlled reboot -
>are
>captured too and survive into the next boot.
>
>The NVMEM-cell binding a recorder needs to pick its storage is still
>deadlocked, and several projects already need the framework, so this v13
>posts the framework, its reboot/reason infrastructure and the sysfs
>documentation only; the provider drivers (NVMEM, PMIC, ...) and the tests
>follow separately once the binding is resolved. One built-in provider,
>reporting the bootloader's device-tree /chosen/reset-source, is kept so
>the
>framework is useful on its own without a new binding.
>
>For followup drivers, see:
> https://github.com/olerem/linux-2.6/tree/v7.2/topic/pscr-v12
>
>Changes in v14:
>- Ignore v13, it was mistakenly posted as a reply to Oleksij's v12
> patch series.
>
>Changes in v13:
>- Rework pscrr_provider_register() based on review feedback from Francesco Valla:
> move the pscrr_root check before allocation and narrow pscrr_lock scope.
>- Carry the series forward with Faruque Ansari as author and Oleksij
> Rempel as co-developer, and vice versa where required.
>- Link to v12: https://lore.kernel.org/r/20260731095959.296056-1-o.rempel@xxxxxxxxxxxxxx
>
>Changes in v12:
>- Drop all provider drivers and their tests; post the framework alone. The
> NVMEM-cell binding a recorder needs to pick its storage is still
> deadlocked, and several projects already need the framework - so unblock
> the core now and let the providers (NVMEM, PMIC, ...) follow separately.
>- Rework into a multi-provider design (per-provider /sys/kernel/pscrr/
> directories); add reason tokens and a built-in /chosen/reset-source
> provider.
>
>Changes in v11:
>- add missing break reported by kernel test robot <lkp@xxxxxxxxx>
>
>Changes in v10:
>- add some add Reviewed-by tags
>- regulator_handle_critical: set pscr = PSCR_UNKNOWN for default case
>- make g_pscrr static
>
>Changes in 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 in 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
>
>Changes in v7:
>- document expected values in sysfs documentation
>- make write support optional
>
>Changes in v6:
>- add sysfs documentation
>- push core part of the reset reason into kernel/reboot.c
>
>Changes in v5:
>- fix compile with NVMEM=n and potential issues with NVMEM=m
>
>Changes in v4:
>- fix compile with CONFIG_PSCRR=n
>
>Changes in v3:
>- rework to remove devicetree dependencies
>- extend NVMEM to search devices and cells by names
>
>Changes in v2:
>- rename the framework from PSCR to PSCRR (last R is for Recorder)
>- extend the power-on reason header and reuse it for the detected reason
>- rebase on top of v6.8-rc1

Hey, I dont see the use to PSCRR, are you planning to ship any providers?

>
>To: Sebastian Reichel <sre@xxxxxxxxxx>
>To: Benson Leung <bleung@xxxxxxxxxxxx>
>To: Tzung-Bi Shih <tzungbi@xxxxxxxxxx>
>To: Guenter Roeck <groeck@xxxxxxxxxxxx>
>To: Liam Girdwood <lgirdwood@xxxxxxxxx>
>To: Mark Brown <broonie@xxxxxxxxxx>
>To: Matti Vaittinen <mazziesaccount@xxxxxxxxx>
>To: Rafael J. Wysocki <rafael@xxxxxxxxxx>
>To: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>
>To: Zhang Rui <rui.zhang@xxxxxxxxx>
>To: Lukasz Luba <lukasz.luba@xxxxxxx>
>To: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
>To: Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>
>Cc: linux-arm-msm@xxxxxxxxxxxxxxx
>Cc: linux-pm@xxxxxxxxxxxxxxx
>Cc: linux-kernel@xxxxxxxxxxxxxxx
>Cc: chrome-platform@xxxxxxxxxxxxxxx
>Cc: avaneesh.dwivedi@xxxxxxxxxxxxxxxx
>Cc: Umang Chheda <umang.chheda@xxxxxxxxxxxxxxxx>
>
>Signed-off-by: Faruque Ansari <faruque.ansari@xxxxxxxxxxxxxxxx>
>---
>Faruque Ansari (6):
> power: Extend power_on_reason.h for upcoming PSCRR framework
> reboot: hw_protection_trigger: use standardized numeric shutdown/reboot reasons instead of strings
> reboot: add parsable tokens for power state change reasons
> reboot: extend psc_reason with power-on and reset causes
> power: reset: Introduce PSCR Recording Framework for Non-Volatile Storage
> Documentation: Add sysfs documentation for PSCRR
>
> Documentation/ABI/testing/sysfs-kernel-pscrr | 108 +++++
> MAINTAINERS | 11 +
> drivers/platform/chrome/cros_ec_lpc.c | 2 +-
> drivers/power/reset/Kconfig | 2 +
> drivers/power/reset/Makefile | 1 +
> drivers/power/reset/pscrr/Kconfig | 33 ++
> drivers/power/reset/pscrr/Makefile | 2 +
> drivers/power/reset/pscrr/pscrr.c | 633
> +++++++++++++++++++++++++++
> drivers/regulator/core.c | 16 +-
> drivers/regulator/irq_helpers.c | 9 +-
> drivers/thermal/thermal_core.c | 3 +-
> include/linux/power/power_on_reason.h | 5 +
> include/linux/pscrr.h | 107 +++++
> include/linux/reboot.h | 108 ++++-
> kernel/reboot.c | 165 ++++++-
> 15 files changed, 1183 insertions(+), 22 deletions(-)
>---
>base-commit: 5c4d4169604b335c38bbc79bc1fc03042981fc6f
>change-id: 20260921-pscrr-framework-25f48818efe8
>
>Best regards,
>

--- Thanks!
"I'm not a very positive person" - Linus torvalds