[PATCH v6 0/5] Implement vendor resets for PSCI SYSTEM_RESET2
Elliot Berman
quic_eberman at quicinc.com
Fri Oct 18 12:39:45 PDT 2024
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.
---
Lorenzo and I are also looking for some feedback on whether it is safe
to perform a vendor SYSTEM_RESET2 irrespective of the enum reboot_mode:
https://lore.kernel.org/all/Zw5ffeYW5uRpsaG3@lpieralisi/
---
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/
To: Bjorn Andersson <andersson at kernel.org>
To: Konrad Dybcio <konrad.dybcio at linaro.org>
To: Sebastian Reichel <sre at kernel.org>
To: Rob Herring <robh at kernel.org>
To: Krzysztof Kozlowski <krzysztof.kozlowski+dt at linaro.org>
To: Conor Dooley <conor+dt at kernel.org>
To: Vinod Koul <vkoul at kernel.org>
To: Andy Yan <andy.yan at rock-chips.com>
To: Lorenzo Pieralisi <lpieralisi at kernel.org>
To: Mark Rutland <mark.rutland at arm.com>
To: Bartosz Golaszewski <bartosz.golaszewski at linaro.org>
To: Arnd Bergmann <arnd at arndb.de>
To: Olof Johansson <olof at lixom.net>A
To: Catalin Marinas <catalin.marinas at arm.com>
To: Will Deacon <will at kernel.org>
To: cros-qcom-dts-watchers at chromium.org
Cc: Satya Durga Srinivasu Prabhala <quic_satyap at quicinc.com>
Cc: Melody Olvera <quic_molvera at quicinc.com>
Cc: Shivendra Pratap <quic_spratap at quicinc.com>
Cc: devicetree at vger.kernel.org
Cc: linux-kernel at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org
Cc: Florian Fainelli <florian.fainelli at broadcom.com>
Cc: linux-pm at vger.kernel.org
Cc: linux-arm-msm at vger.kernel.org
Signed-off-by: Elliot Berman <quic_eberman at 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
To: Sebastian Reichel <sre at kernel.org>
To: Rob Herring <robh at kernel.org>
To: Krzysztof Kozlowski <krzk+dt at kernel.org>
To: Conor Dooley <conor+dt at kernel.org>
To: Bartosz Golaszewski <bartosz.golaszewski at linaro.org>
To: Vinod Koul <vkoul at kernel.org>
To: Andy Yan <andy.yan at rock-chips.com>
To: Lorenzo Pieralisi <lpieralisi at kernel.org>
To: Mark Rutland <mark.rutland at arm.com>
To: Bjorn Andersson <andersson at kernel.org>
To: Konrad Dybcio <konradybcio at kernel.org>
To: cros-qcom-dts-watchers at chromium.org
Cc: linux-pm at vger.kernel.org
Cc: devicetree at vger.kernel.org
Cc: linux-kernel at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org
Cc: linux-arm-msm at vger.kernel.org
---
Elliot Berman (5):
dt-bindings: power: reset: Convert mode-.* properties to array
dt-bindings: arm: Document reboot mode magic
firmware: psci: Read and use vendor reset types
arm64: dts: qcom: Add PSCI SYSTEM_RESET2 types for qcm6490-idp
arm64: dts: qcom: Add PSCI SYSTEM_RESET2 types for sa8775p-ride
Documentation/devicetree/bindings/arm/psci.yaml | 43 ++++++++++
.../bindings/power/reset/nvmem-reboot-mode.yaml | 4 +
.../devicetree/bindings/power/reset/qcom,pon.yaml | 7 ++
.../bindings/power/reset/reboot-mode.yaml | 4 +-
.../bindings/power/reset/syscon-reboot-mode.yaml | 4 +
arch/arm64/boot/dts/qcom/qcm6490-idp.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 | 92 ++++++++++++++++++++++
include/linux/arm-smccc.h | 5 ++
11 files changed, 173 insertions(+), 4 deletions(-)
---
base-commit: 98f7e32f20d28ec452afb208f9cffc08448a2652
change-id: 20231016-arm-psci-system_reset2-vendor-reboots-cc3ad456c070
Best regards,
--
Elliot Berman <quic_eberman at quicinc.com>
More information about the linux-arm-kernel
mailing list