Update the reboot-mode binding to support an optional cookie
value in mode-<cmd> properties. The cookie is used to supply
additional data for reboot modes that accept two arguments.
Signed-off-by: Shivendra Pratap <shivendra.pratap@oss.qualcomm.com>
---
.../devicetree/bindings/power/reset/reboot-mode.yaml | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
index 3ddac06cec7277789b066d8426ea77d293298fac..a4d2fe1db51e0c1f34ebefddaad82b8cc0b1b34a 100644
--- a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
+++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml
@@ -10,14 +10,15 @@ maintainers:
- Andy Yan <andy.yan@rock-chips.com>
description: |
- This driver get reboot mode arguments and call the write
- interface to store the magic value in special register
- or ram. Then the bootloader can read it and take different
- action according to the argument stored.
+ This driver gets reboot mode arguments and calls the write
+ interface to store the magic and an optional cookie value
+ in special register or ram. Then the bootloader can read it
+ and take different action according to the argument stored.
All mode properties are vendor specific, it is a indication to tell
the bootloader what to do when the system reboots, and should be named
- as mode-xxx = <magic> (xxx is mode name, magic should be a non-zero value).
+ as mode-xxx = <magic cookie> (xxx is mode name, magic should be a
+ non-zero value, cookie is optional).
For example, modes common Android platform are:
- normal: Normal reboot mode, system reboot with command "reboot".
@@ -45,5 +46,6 @@ examples:
mode-recovery = <1>;
mode-bootloader = <2>;
mode-loader = <3>;
+ mode-edl = <1 2>;
};
...
--
2.34.1
On Thu, Jul 10, 2025 at 02:45:44PM +0530, Shivendra Pratap wrote: > Update the reboot-mode binding to support an optional cookie > value in mode-<cmd> properties. The cookie is used to supply > additional data for reboot modes that accept two arguments. > > Signed-off-by: Shivendra Pratap <shivendra.pratap@oss.qualcomm.com> > --- > .../devicetree/bindings/power/reset/reboot-mode.yaml | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml > index 3ddac06cec7277789b066d8426ea77d293298fac..a4d2fe1db51e0c1f34ebefddaad82b8cc0b1b34a 100644 > --- a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml > +++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml > @@ -10,14 +10,15 @@ maintainers: > - Andy Yan <andy.yan@rock-chips.com> > > description: | > - This driver get reboot mode arguments and call the write > - interface to store the magic value in special register > - or ram. Then the bootloader can read it and take different > - action according to the argument stored. > + This driver gets reboot mode arguments and calls the write > + interface to store the magic and an optional cookie value > + in special register or ram. Then the bootloader can read it > + and take different action according to the argument stored. > > All mode properties are vendor specific, it is a indication to tell > the bootloader what to do when the system reboots, and should be named > - as mode-xxx = <magic> (xxx is mode name, magic should be a non-zero value). > + as mode-xxx = <magic cookie> (xxx is mode name, magic should be a > + non-zero value, cookie is optional). I don't understand the distinction between magic and cookie... Isn't all just magic values and some platform needs more than 32-bits of it? > > For example, modes common Android platform are: > - normal: Normal reboot mode, system reboot with command "reboot". > @@ -45,5 +46,6 @@ examples: > mode-recovery = <1>; > mode-bootloader = <2>; > mode-loader = <3>; > + mode-edl = <1 2>; > }; > ... > > -- > 2.34.1 >
On 7/11/2025 4:17 AM, Rob Herring wrote: > On Thu, Jul 10, 2025 at 02:45:44PM +0530, Shivendra Pratap wrote: >> Update the reboot-mode binding to support an optional cookie >> value in mode-<cmd> properties. The cookie is used to supply >> additional data for reboot modes that accept two arguments. >> >> Signed-off-by: Shivendra Pratap <shivendra.pratap@oss.qualcomm.com> >> --- >> .../devicetree/bindings/power/reset/reboot-mode.yaml | 12 +++++++----- >> 1 file changed, 7 insertions(+), 5 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml >> index 3ddac06cec7277789b066d8426ea77d293298fac..a4d2fe1db51e0c1f34ebefddaad82b8cc0b1b34a 100644 >> --- a/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml >> +++ b/Documentation/devicetree/bindings/power/reset/reboot-mode.yaml >> @@ -10,14 +10,15 @@ maintainers: >> - Andy Yan <andy.yan@rock-chips.com> >> >> description: | >> - This driver get reboot mode arguments and call the write >> - interface to store the magic value in special register >> - or ram. Then the bootloader can read it and take different >> - action according to the argument stored. >> + This driver gets reboot mode arguments and calls the write >> + interface to store the magic and an optional cookie value >> + in special register or ram. Then the bootloader can read it >> + and take different action according to the argument stored. >> >> All mode properties are vendor specific, it is a indication to tell >> the bootloader what to do when the system reboots, and should be named >> - as mode-xxx = <magic> (xxx is mode name, magic should be a non-zero value). >> + as mode-xxx = <magic cookie> (xxx is mode name, magic should be a >> + non-zero value, cookie is optional). > > I don't understand the distinction between magic and cookie... Isn't all > just magic values and some platform needs more than 32-bits of it? Need two different arguments. Will try to clarify a bit below. PSCI defines SYSTEM_RESET2 vendor-specific resets which takes two parameters - reset_type and cookie. Both parameters are independent and used by firmware to define different types of resets or shutdown. As per spec: reset_type: Values in the range 0x80000000-0xFFFFFFFF of the reset_type parameter can be used to request vendor-specific resets or shutdowns. cookie: the cookie parameter can be used to pass additional data to the implementation. Now to implement SYSTEM_RESET2 vendor-specific resets using reboot-mode driver, we will need two separate arguments. reboot-mode already defines a magic, which will be used as reset_type. For the second parameter requirement of SYSTEM_RESET2, we add support for additional argument cookie. > >> >> For example, modes common Android platform are: >> - normal: Normal reboot mode, system reboot with command "reboot". >> @@ -45,5 +46,6 @@ examples: >> mode-recovery = <1>; >> mode-bootloader = <2>; >> mode-loader = <3>; >> + mode-edl = <1 2>; >> }; >> ... >> >> -- >> 2.34.1 >>
On Fri, Jul 11, 2025, at 14:32, Shivendra Pratap wrote: > On 7/11/2025 4:17 AM, Rob Herring wrote: >> On Thu, Jul 10, 2025 at 02:45:44PM +0530, Shivendra Pratap wrote: >>> All mode properties are vendor specific, it is a indication to tell >>> the bootloader what to do when the system reboots, and should be named >>> - as mode-xxx = <magic> (xxx is mode name, magic should be a non-zero value). >>> + as mode-xxx = <magic cookie> (xxx is mode name, magic should be a >>> + non-zero value, cookie is optional). >> >> I don't understand the distinction between magic and cookie... Isn't all >> just magic values and some platform needs more than 32-bits of it? > Need two different arguments. Will try to clarify a bit below. > PSCI defines SYSTEM_RESET2 vendor-specific resets which takes two > parameters - reset_type and cookie. Both parameters are independent and > used by firmware to define different types of resets or shutdown. > As per spec: > reset_type: Values in the range 0x80000000-0xFFFFFFFF of the reset_type > parameter > can be used to request vendor-specific resets or shutdowns. > cookie: the cookie parameter can be used to pass additional data to the > implementation. I don't see any distinction here either. As Rob says, you have to get both 32-bit numbers from DT in order to get the desired reboot-mode, and you have to pass them both to the firmware when rebooting. The distinction between cookie and magic value may be relevant in the context of the psci specification, but for the Linux driver, this is really just a 64-bit magic number. Arnd
On 7/11/2025 8:14 PM, Arnd Bergmann wrote: > On Fri, Jul 11, 2025, at 14:32, Shivendra Pratap wrote: >> On 7/11/2025 4:17 AM, Rob Herring wrote: >>> On Thu, Jul 10, 2025 at 02:45:44PM +0530, Shivendra Pratap wrote: >>>> All mode properties are vendor specific, it is a indication to tell >>>> the bootloader what to do when the system reboots, and should be named >>>> - as mode-xxx = <magic> (xxx is mode name, magic should be a non-zero value). >>>> + as mode-xxx = <magic cookie> (xxx is mode name, magic should be a >>>> + non-zero value, cookie is optional). >>> >>> I don't understand the distinction between magic and cookie... Isn't all >>> just magic values and some platform needs more than 32-bits of it? >> Need two different arguments. Will try to clarify a bit below. >> PSCI defines SYSTEM_RESET2 vendor-specific resets which takes two >> parameters - reset_type and cookie. Both parameters are independent and >> used by firmware to define different types of resets or shutdown. >> As per spec: >> reset_type: Values in the range 0x80000000-0xFFFFFFFF of the reset_type >> parameter >> can be used to request vendor-specific resets or shutdowns. >> cookie: the cookie parameter can be used to pass additional data to the >> implementation. > > I don't see any distinction here either. As Rob says, you have to > get both 32-bit numbers from DT in order to get the desired reboot-mode, > and you have to pass them both to the firmware when rebooting. > > The distinction between cookie and magic value may be relevant in the > context of the psci specification, but for the Linux driver, this is > really just a 64-bit magic number. ok. then if i understand, this binding change for reboot-mode be dropped and driver can internally handle the two 32 bit numbers? > > Arnd
On Fri, Jul 11, 2025, at 19:00, Shivendra Pratap wrote: > On 7/11/2025 8:14 PM, Arnd Bergmann wrote: >> On Fri, Jul 11, 2025, at 14:32, Shivendra Pratap wrote: >> >> The distinction between cookie and magic value may be relevant in the >> context of the psci specification, but for the Linux driver, this is >> really just a 64-bit magic number. > ok. then if i understand, this binding change for reboot-mode be dropped > and driver can internally handle the two 32 bit numbers? Yes, if you can easily keep it internal to the psci driver, that would work, or you could just change the callback type to take a 64-bit number and leave the interpretation up to the driver. Arnd
On 7/11/2025 11:09 PM, Arnd Bergmann wrote: > On Fri, Jul 11, 2025, at 19:00, Shivendra Pratap wrote: >> On 7/11/2025 8:14 PM, Arnd Bergmann wrote: >>> On Fri, Jul 11, 2025, at 14:32, Shivendra Pratap wrote: >>> >>> The distinction between cookie and magic value may be relevant in the >>> context of the psci specification, but for the Linux driver, this is >>> really just a 64-bit magic number. >> ok. then if i understand, this binding change for reboot-mode be dropped >> and driver can internally handle the two 32 bit numbers? > > Yes, if you can easily keep it internal to the psci driver, that > would work, or you could just change the callback type to take a > 64-bit number and leave the interpretation up to the driver. ok. thanks. Will try it out. > > Arnd
© 2016 - 2025 Red Hat, Inc.