From: Krzysztof Kozlowski <krzk@kernel.org>
To: Shivendra Pratap <shivendra.pratap@oss.qualcomm.com>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>,
Bjorn Andersson <andersson@kernel.org>,
Sebastian Reichel <sre@kernel.org>, Rob Herring <robh@kernel.org>,
Sudeep Holla <sudeep.holla@arm.com>,
Souvik Chakravarty <Souvik.Chakravarty@arm.com>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Andy Yan <andy.yan@rock-chips.com>,
Mark Rutland <mark.rutland@arm.com>,
Lorenzo Pieralisi <lpieralisi@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Konrad Dybcio <konradybcio@kernel.org>,
cros-qcom-dts-watchers@chromium.org,
Vinod Koul <vkoul@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>
Cc: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>,
Stephen Boyd <swboyd@chromium.org>,
Andre Draszik <andre.draszik@linaro.org>,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-arm-msm@vger.kernel.org,
Elliot Berman <quic_eberman@quicinc.com>,
Srinivas Kandagatla <srini@kernel.org>,
Elliot Berman <elliot.berman@oss.qualcomm.com>,
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Subject: Re: [PATCH v12 0/8] Implement vendor resets for PSCI SYSTEM_RESET2
Date: Thu, 24 Jul 2025 14:48:41 +0200 [thread overview]
Message-ID: <a1d3264f-a46a-42c4-b518-a66c8e0b70b4@kernel.org> (raw)
In-Reply-To: <56599da9-0200-72b5-012e-942a1fc954b2@oss.qualcomm.com>
On 24/07/2025 14:24, Shivendra Pratap wrote:
>
>
> On 7/24/2025 5:46 AM, Florian Fainelli wrote:
>> On 7/21/25 11:28, Shivendra Pratap wrote:
>>> The PSCI SYSTEM_RESET2 call allows vendor firmware to define
>>> additional reset types which could be mapped to the reboot
>>> argument.
>>>
>>> User-space should be able to reboot a device into different
>>> operational boot-states supported by underlying bootloader and
>>> firmware. Generally, some HW registers need to be written, based
>>> on which the bootloader and firmware decide the next boot state
>>> of device, after the reset. For example, a requirement on
>>> Qualcomm platforms may state that reboot with "bootloader"
>>> command, should reboot the device into bootloader flashing mode
>>> and reboot with “edl” command, should reboot the device into an
>>> Emergency flashing mode. Setting up such reboots on Qualcomm
>>> devices can be inconsistent across SoC platforms and may require
>>> setting different HW registers, where some of these registers may
>>> not be accessible to HLOS. These knobs evolve over product
>>> generations and require more drivers. PSCI defines a
>>> vendor-specific reset in SYSTEM_RESET2 spec, which enables the
>>> firmware to take care of underlying setting for any such
>>> supported vendor-specific reboot. Qualcomm firmwares are
>>> beginning to support and expose PSCI SYSTEM_RESET2
>>> vendor-specific reset types to simplify driver requirements from
>>> Linux. With such support added in the firmware, we now need a
>>> Linux interface which can make use of the firmware calls for PSCI
>>> vendor-specific resets. This will align such reboot requirement
>>> across platforms and vendors.
>>>
>>> The current psci driver supports two types of resets –
>>> SYSTEM_RESET2 Arch warm-reset and SYSTEM_RESET cold-reset. The
>>> patchset introduces the PSCI SYSTEM_RESET2 vendor-specific reset
>>> into the reset path of the psci driver and aligns it to work with
>>> reboot system call - LINUX_REBOOT_CMD_RESTART2, when used along
>>> with a supported string-based command in “*arg”.
>>>
>>> The patchset uses reboot-mode based commands, to define the
>>> supported vendor reset-types commands in psci device tree node
>>> and registers these commands with the reboot-mode framework.
>>>
>>> The PSCI vendor-specific reset takes two arguments, being,
>>> reset_type and cookie as defined by the spec. To accommodate this
>>> requirement, enhance the reboot-mode framework to support two
>>> 32-bit arguments by switching to 64-bit magic values.
>>>
>>> Along this line, the patchset also extends the reboot-mode
>>> framework to add a non-device-based registration function, which
>>> will allow drivers to register using device tree node, while
>>> keeping backward compatibility for existing users of reboot-mode.
>>> This will enable psci driver to register for reboot-mode and
>>> implement a write function, which will save the magic and then
>>> use it in psci reset path to make a vendor-specific reset call
>>> into the firmware. In addition, the patchset will expose a sysfs
>>> entry interface within reboot-mode which can be used by userspace
>>> to view the supported reboot-mode commands.
>>>
>>> The list of vendor-specific reset commands remains open due to
>>> divergent requirements across vendors, but this can be
>>> streamlined and standardized through dedicated device tree
>>> bindings.
>>>
>>> Currently three drivers register with reboot-mode framework -
>>> syscon-reboot-mode, nvmem-reboot-mode and qcom-pon. Consolidated
>>> list of commands currently added across various vendor DTs:
>>> mode-loader
>>> mode-normal
>>> mode-bootloader
>>> mode-charge
>>> mode-fastboot
>>> mode-reboot-ab-update
>>> mode-recovery
>>> mode-rescue
>>> mode-shutdown-thermal
>>> mode-shutdown-thermal-battery
>>>
>>> Detailed list of commands being used by syscon-reboot-mode:
>>> arm64/boot/dts/exynos/exynosautov9.dtsi:
>>> mode-bootloader = <EXYNOSAUTOV9_BOOT_BOOTLOADER>;
>>> mode-fastboot = <EXYNOSAUTOV9_BOOT_FASTBOOT>;
>>> mode-recovery = <EXYNOSAUTOV9_BOOT_RECOVERY>;
>>>
>>> arm64/boot/dts/exynos/google/gs101.dtsi:
>>> mode-bootloader = <0xfc>;
>>> mode-charge = <0x0a>;
>>> mode-fastboot = <0xfa>;
>>> mode-reboot-ab-update = <0x52>;
>>> mode-recovery = <0xff>;
>>> mode-rescue = <0xf9>;
>>> mode-shutdown-thermal = <0x51>;
>>> mode-shutdown-thermal-battery = <0x51>;
>>>
>>> arm64/boot/dts/hisilicon/hi3660-hikey960.dts:
>>> mode-normal = <0x77665501>;
>>> mode-bootloader = <0x77665500>;
>>> mode-recovery = <0x77665502>;
>>>
>>> arm64/boot/dts/hisilicon/hi6220-hikey.dts:
>>> mode-normal = <0x77665501>;
>>> mode-bootloader = <0x77665500>;
>>> mode-recovery = <0x77665502>;
>>>
>>> arm64/boot/dts/rockchip/px30.dtsi:
>>> mode-bootloader = <BOOT_BL_DOWNLOAD>;
>>> mode-fastboot = <BOOT_FASTBOOT>;
>>> mode-loader = <BOOT_BL_DOWNLOAD>;
>>> mode-normal = <BOOT_NORMAL>;
>>> mode-recovery = <BOOT_RECOVERY>;
>>>
>>> arm64/boot/dts/rockchip/rk3308.dtsi:
>>> mode-bootloader = <BOOT_BL_DOWNLOAD>;
>>> mode-loader = <BOOT_BL_DOWNLOAD>;
>>> mode-normal = <BOOT_NORMAL>;
>>> mode-recovery = <BOOT_RECOVERY>;
>>> mode-fastboot = <BOOT_FASTBOOT>;
>>>
>>> arm64/boot/dts/rockchip/rk3566-lckfb-tspi.dts:
>>> mode-normal = <BOOT_NORMAL>;
>>> mode-loader = <BOOT_BL_DOWNLOAD>;
>>> mode-recovery = <BOOT_RECOVERY>;
>>> mode-bootloader = <BOOT_FASTBOOT>;
>>>
>>> Detailed list of commands being used by nvmem-reboot-mode:
>>> arm64/boot/dts/qcom/pmXXXX.dtsi:(multiple qcom DTs)
>>> mode-recovery = <0x01>;
>>> mode-bootloader = <0x02>;
>>>
>>> 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>
>>> Signed-off-by: Shivendra Pratap <shivendra.pratap@oss.qualcomm.com>
>>
>> On ARCH_BRCMSTB:
>>
>> Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
>>
>> For the sysfs bits, should not we be seeing "psci" instead of "reboot-mode" twice in this path:
>>
>> # cat /sys/class/reboot-mode/reboot-mode/reboot_modes
>> powercycle
> As per current patch, we create a class named - "reboot-mode".
> /sys/class/reboot-mode
>
> Then comes the DT node name of the registering driver.
> /sys/class/reboot-mode/<DT node name of the registering driver>/
This means that node name becomes part of the ABI? I am not happy about
it. Where is such ABI documented? Because your last patch tells
something completely else!
I strongly insist using compatible as way to find your device, not node
names.
In any case you need to document such ABI in Devicetree bindings,
because sysfs ABI is not enough.
Best regards,
Krzysztof
next prev parent reply other threads:[~2025-07-24 12:48 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-21 18:28 [PATCH v12 0/8] Implement vendor resets for PSCI SYSTEM_RESET2 Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 1/8] power: reset: reboot-mode: Add device tree node-based registration Shivendra Pratap
2025-07-21 21:36 ` Dmitry Baryshkov
2025-07-22 16:17 ` Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 2/8] power: reset: reboot-mode: Add support for 64 bit magic Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 3/8] dt-bindings: arm: Document reboot mode magic Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 4/8] firmware: psci: Implement vendor-specific resets as reboot-mode Shivendra Pratap
2025-07-22 16:11 ` kernel test robot
2025-07-21 18:28 ` [PATCH v12 5/8] arm64: dts: qcom: qcm6490-idp: Add PSCI SYSTEM_RESET2 types Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 6/8] arm64: dts: qcom: qcs6490-rb3gen2: " Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 7/8] arm64: dts: qcom: sa8775p-ride: " Shivendra Pratap
2025-07-21 18:28 ` [PATCH v12 8/8] power: reset: reboot-mode: Expose sysfs for registered reboot_modes Shivendra Pratap
2025-07-22 17:22 ` kernel test robot
2025-07-24 0:16 ` [PATCH v12 0/8] Implement vendor resets for PSCI SYSTEM_RESET2 Florian Fainelli
2025-07-24 12:24 ` Shivendra Pratap
2025-07-24 12:48 ` Krzysztof Kozlowski [this message]
2025-07-24 14:04 ` Shivendra Pratap
2025-07-24 14:38 ` Krzysztof Kozlowski
2025-07-24 14:43 ` Arnd Bergmann
2025-07-24 16:38 ` Florian Fainelli
2025-07-24 18:21 ` Shivendra Pratap
2025-07-24 20:14 ` Arnd Bergmann
2025-07-25 3:34 ` Shivendra Pratap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a1d3264f-a46a-42c4-b518-a66c8e0b70b4@kernel.org \
--to=krzk@kernel.org \
--cc=Souvik.Chakravarty@arm.com \
--cc=andersson@kernel.org \
--cc=andre.draszik@linaro.org \
--cc=andy.yan@rock-chips.com \
--cc=arnd@arndb.de \
--cc=bartosz.golaszewski@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=conor+dt@kernel.org \
--cc=cros-qcom-dts-watchers@chromium.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=elliot.berman@oss.qualcomm.com \
--cc=florian.fainelli@broadcom.com \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mark.rutland@arm.com \
--cc=mukesh.ojha@oss.qualcomm.com \
--cc=quic_eberman@quicinc.com \
--cc=robh@kernel.org \
--cc=shivendra.pratap@oss.qualcomm.com \
--cc=sre@kernel.org \
--cc=srini@kernel.org \
--cc=sudeep.holla@arm.com \
--cc=swboyd@chromium.org \
--cc=vkoul@kernel.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).