linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 0/5] Implement vendor resets for PSCI SYSTEM_RESET2
@ 2025-03-03 21:08 Elliot Berman
  2025-03-03 21:08 ` [PATCH v9 1/5] dt-bindings: arm: Document reboot mode magic Elliot Berman
                   ` (4 more replies)
  0 siblings, 5 replies; 22+ messages in thread
From: Elliot Berman @ 2025-03-03 21:08 UTC (permalink / raw)
  To: Bjorn Andersson, Sebastian Reichel, Rob Herring, Conor Dooley,
	Vinod Koul, Andy Yan, Lorenzo Pieralisi, Mark Rutland,
	Bartosz Golaszewski, Arnd Bergmann, Olof Johansson,
	Catalin Marinas, Will Deacon, cros-qcom-dts-watchers,
	Krzysztof Kozlowski, Konrad Dybcio, Konrad Dybcio
  Cc: Srinivas Kandagatla, Satya Durga Srinivasu Prabhala,
	Melody Olvera, Shivendra Pratap, devicetree, linux-kernel,
	linux-arm-kernel, Florian Fainelli, Stephen Boyd, linux-pm,
	linux-arm-msm, Elliot Berman, Elliot Berman, Elliot Berman,
	Konrad Dybcio

The PSCI SYSTEM_RESET2 call allows vendor firmware to define additional
reset types which could be mapped to the reboot argument.

Setting up reboot on Qualcomm devices can be inconsistent from chipset
to chipset. Generally, there is a PMIC register that gets written to
decide the reboot type. There is also sometimes a cookie that can be
written to indicate that the bootloader should behave differently than a
regular boot. These knobs evolve over product generations and require
more drivers. Qualcomm firmwares are beginning to expose vendor
SYSTEM_RESET2 types to simplify driver requirements from Linux.

Add support in PSCI to statically wire reboot mode commands from
userspace to a vendor reset and cookie value using the device tree. The
DT bindings are similar to reboot mode framework except that 2
integers are accepted (the type and cookie). Also, reboot mode framework
is intended to program the cookies, but not actually reboot the host.
PSCI SYSTEM_RESET2 does both. I've not added support for reading ACPI
tables since I don't have any device which provides them + firmware that
supports vendor SYSTEM_RESET2 types.

Previous discussions around SYSTEM_RESET2:
- https://lore.kernel.org/lkml/20230724223057.1208122-2-quic_eberman@quicinc.com/T/
- https://lore.kernel.org/all/4a679542-b48d-7e11-f33a-63535a5c68cb@quicinc.com/

Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>

Changes in v9:
- Don't fallback to architecturally defined resets from Lorenzo.
- Link to v8: https://lore.kernel.org/r/20241107-arm-psci-system_reset2-vendor-reboots-v8-0-e8715fa65cb5@quicinc.com

Changes in v8:
- Code style nits from Stephen
- Add rb3gen2
- Link to v7: https://lore.kernel.org/r/20241028-arm-psci-system_reset2-vendor-reboots-v7-0-a4c40b0ebc54@quicinc.com

Changes in v7:
- Code style nits from Stephen
- Dropped unnecessary hunk from the sa8775p-ride patch
- Link to v6: https://lore.kernel.org/r/20241018-arm-psci-system_reset2-vendor-reboots-v6-0-50cbe88b0a24@quicinc.com

Changes in v6:
- Rebase to v6.11 and fix trivial conflicts in qcm6490-idp
- Add sa8775p-ride support (same as qcm6490-idp)
- Link to v5: https://lore.kernel.org/r/20240617-arm-psci-system_reset2-vendor-reboots-v5-0-086950f650c8@quicinc.com

Changes in v5:
- Drop the nested "items" in prep for future dtschema tools
- Link to v4: https://lore.kernel.org/r/20240611-arm-psci-system_reset2-vendor-reboots-v4-0-98f55aa74ae8@quicinc.com

Changes in v4:
- Change mode- properties from uint32-matrix to uint32-array
- Restructure the reset-types node so only the restriction is in the
  if/then schemas and not the entire definition
- Link to v3: https://lore.kernel.org/r/20240515-arm-psci-system_reset2-vendor-reboots-v3-0-16dd4f9c0ab4@quicinc.com

Changes in v3:
- Limit outer number of items to 1 for mode-* properties
- Move the reboot-mode for psci under a subnode "reset-types"
- Fix the DT node in qcm6490-idp so it doesn't overwrite the one from
  sc7820.dtsi
- Link to v2: https://lore.kernel.org/r/20240414-arm-psci-system_reset2-vendor-reboots-v2-0-da9a055a648f@quicinc.com

Changes in v2:
- Fixes to schema as suggested by Rob and Krzysztof
- Add qcm6490 idp as first Qualcomm device to support
- Link to v1: https://lore.kernel.org/r/20231117-arm-psci-system_reset2-vendor-reboots-v1-0-03c4612153e2@quicinc.com

Changes in v1:
- Reference reboot-mode bindings as suggeted by Rob.
- Link to RFC: https://lore.kernel.org/r/20231030-arm-psci-system_reset2-vendor-reboots-v1-0-dcdd63352ad1@quicinc.com

---
Elliot Berman (5):
      dt-bindings: arm: Document reboot mode magic
      firmware: psci: Read and use vendor reset types
      arm64: dts: qcom: qcm6490-idp: Add PSCI SYSTEM_RESET2 types
      arm64: dts: qcom: qcs6490-rb3gen2: Add PSCI SYSTEM_RESET2 types
      arm64: dts: qcom: sa8775p-ride: Add PSCI SYSTEM_RESET2 types

 Documentation/devicetree/bindings/arm/psci.yaml |  43 ++++++++++
 arch/arm64/boot/dts/qcom/qcm6490-idp.dts        |   7 ++
 arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts    |   7 ++
 arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi      |   7 ++
 arch/arm64/boot/dts/qcom/sa8775p.dtsi           |   2 +-
 arch/arm64/boot/dts/qcom/sc7280.dtsi            |   2 +-
 drivers/firmware/psci/psci.c                    | 105 ++++++++++++++++++++++++
 7 files changed, 171 insertions(+), 2 deletions(-)
---
base-commit: ffd294d346d185b70e28b1a28abe367bbfe53c04
change-id: 20231016-arm-psci-system_reset2-vendor-reboots-cc3ad456c070

Best regards,
-- 
Elliot Berman <elliot.berman@oss.qualcomm.com>


^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2025-06-19 15:42 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-03 21:08 [PATCH v9 0/5] Implement vendor resets for PSCI SYSTEM_RESET2 Elliot Berman
2025-03-03 21:08 ` [PATCH v9 1/5] dt-bindings: arm: Document reboot mode magic Elliot Berman
2025-03-03 21:08 ` [PATCH v9 2/5] firmware: psci: Read and use vendor reset types Elliot Berman
2025-03-03 22:08   ` Florian Fainelli
2025-03-14 11:19   ` Lorenzo Pieralisi
2025-03-14 16:31     ` Arnd Bergmann
2025-03-25 14:13       ` Mukesh Ojha
2025-03-25 14:03     ` Mukesh Ojha
2025-04-02 18:39       ` Mukesh Ojha
2025-04-08 15:16       ` Lorenzo Pieralisi
2025-04-09 18:18         ` Shivendra Pratap
2025-04-16 12:05           ` Lorenzo Pieralisi
2025-05-06 17:33             ` Shivendra Pratap
2025-06-18 13:14               ` Dmitry Baryshkov
2025-06-19  9:00                 ` Shivendra Pratap
2025-06-19 11:04                   ` Dmitry Baryshkov
2025-06-19 12:32                     ` Shivendra Pratap
2025-06-19 14:16                       ` Dmitry Baryshkov
2025-06-19 15:37                         ` Shivendra Pratap
2025-03-03 21:08 ` [PATCH v9 3/5] arm64: dts: qcom: qcm6490-idp: Add PSCI SYSTEM_RESET2 types Elliot Berman
2025-03-03 21:08 ` [PATCH v9 4/5] arm64: dts: qcom: qcs6490-rb3gen2: " Elliot Berman
2025-03-03 21:08 ` [PATCH v9 5/5] arm64: dts: qcom: sa8775p-ride: " Elliot Berman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).