Re: [PATCH v17 07/12] firmware: psci: Implement vendor-specific resets as reboot-mode

Shivendra Pratap
2025-11-19T12:03:11Z

On 11/19/2025 3:07 PM, Lorenzo Pieralisi wrote:
> On Tue, Nov 18, 2025 at 11:11:33PM +0530, Shivendra Pratap wrote:
>
> [...]
>
>>> Yes this could be a potential way forward but that's decoupled from the
>>> options below. If we take this route PSCI maintainers should be added
>>> as maintainers for this reboot mode driver.
>>
>> you mean the new psci_reset driver? yes. Maintainer would be PSCI maintainer,
>> if we create a new psci_reset reboot mode driver.
>
> Yes.
>
>>>> - struct with pre-built psci reset_types - (warm, soft, cold). Currently
>>>> only two modes supported, anything other than warm/soft defaults to cold.
>>>> - vendor resets to be added as per vendor choice, inside psci device tree(SOC specific).
>>>> - psci_reset registers with reboot-mode for registering vendor resets. Here, we
>>>> have a problem, the pre-built psci reset_types - (warm, soft, cold) cannot be added via
>>>> reboot-mode framework.
>>>
>>> Why ?
>>
>> If we want the new psci_reset to take the reboot-mode framework route, is it ok to
>> add default modes (warm, cold) in the device tree?
>> If not, then the design of reboot-mode framework(power:reset:reboot-mode.c) needs to be
>> further changed to equip this new feature.
>
> Well, yes, all it needs to do is allowing prepopulated reboot modes on top
> of which DT based ones are added.

The mode-cold , adds a third variable to reboot-modes as the first parameter for
invoke_psci_fn is different for cold vs warm/vendor.

cold reset call : invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0);
vendor/warm reset call: invoke_psci_fn(PSCI_FN_NATIVE(1_1, SYSTEM_RESET2), vendor, cookiee, 0);

Each mode will have 3 argument - like:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MODE , cold reset, reset_type, cookie
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -
COLD , 1 , 0 , 0
WARM , 0 , 0 , 0
vendor1, 0 ,0x80000000 , 1
vendor2, 0 ,0x80000010 , 0

So reboot-mode framework will now define and support upto three 32 bit arguments for each mode?

thanks,
Shivendra