mbox series

[0/4] Unconditionally register TI-SCI reset handler

Message ID 20240326223730.54639-1-afd@ti.com
Headers show
Series Unconditionally register TI-SCI reset handler | expand

Message

Andrew Davis March 26, 2024, 10:37 p.m. UTC
Hello all,

This series is the replacement for this series[0] and is based on a
comment in that series by Rob here[1].

First patch is just a fixup, second patch is the core of the series.

Thanks,
Andrew

[0] https://lore.kernel.org/lkml/20240131221957.213717-1-afd@ti.com/
[1] https://lore.kernel.org/lkml/20240201230351.GA1900918-robh@kernel.org/

Andrew Davis (4):
  firmware: ti_sci: Use devm_register_restart_handler()
  firmware: ti_sci: Unconditionally register reset handler
  ARM: dts: ti: keystone: k2g: Remove ti,system-reboot-controller
    property
  dt-bindings: arm: keystone: Remove ti,system-reboot-controller
    property

 .../bindings/arm/keystone/ti,sci.yaml         |  5 ----
 .../boot/dts/ti/keystone/keystone-k2g.dtsi    |  5 ----
 drivers/firmware/ti_sci.c                     | 24 +++++--------------
 3 files changed, 6 insertions(+), 28 deletions(-)

Comments

Markus Schneider-Pargmann April 2, 2024, 8:14 a.m. UTC | #1
On Tue, Mar 26, 2024 at 05:37:27PM -0500, Andrew Davis wrote:
> Use device life-cycle managed register function to simplify probe.
> 
> Signed-off-by: Andrew Davis <afd@ti.com>
> Reviewed-by: Gabriel Somlo <gsomlo@gmail.com>

Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>

Best
Markus

> ---
>  drivers/firmware/ti_sci.c | 15 +++++----------
>  1 file changed, 5 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/firmware/ti_sci.c b/drivers/firmware/ti_sci.c
> index 8b9a2556de16d..9885e1763591b 100644
> --- a/drivers/firmware/ti_sci.c
> +++ b/drivers/firmware/ti_sci.c
> @@ -87,7 +87,6 @@ struct ti_sci_desc {
>   * struct ti_sci_info - Structure representing a TI SCI instance
>   * @dev:	Device pointer
>   * @desc:	SoC description for this instance
> - * @nb:	Reboot Notifier block
>   * @d:		Debugfs file entry
>   * @debug_region: Memory region where the debug message are available
>   * @debug_region_size: Debug region size
> @@ -103,7 +102,6 @@ struct ti_sci_desc {
>   */
>  struct ti_sci_info {
>  	struct device *dev;
> -	struct notifier_block nb;
>  	const struct ti_sci_desc *desc;
>  	struct dentry *d;
>  	void __iomem *debug_region;
> @@ -122,7 +120,6 @@ struct ti_sci_info {
>  
>  #define cl_to_ti_sci_info(c)	container_of(c, struct ti_sci_info, cl)
>  #define handle_to_ti_sci_info(h) container_of(h, struct ti_sci_info, handle)
> -#define reboot_to_ti_sci_info(n) container_of(n, struct ti_sci_info, nb)
>  
>  #ifdef CONFIG_DEBUG_FS
>  
> @@ -3254,10 +3251,9 @@ devm_ti_sci_get_resource(const struct ti_sci_handle *handle, struct device *dev,
>  }
>  EXPORT_SYMBOL_GPL(devm_ti_sci_get_resource);
>  
> -static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode,
> -				void *cmd)
> +static int tisci_reboot_handler(struct sys_off_data *data)
>  {
> -	struct ti_sci_info *info = reboot_to_ti_sci_info(nb);
> +	struct ti_sci_info *info = data->cb_data;
>  	const struct ti_sci_handle *handle = &info->handle;
>  
>  	ti_sci_cmd_core_reboot(handle);
> @@ -3400,10 +3396,9 @@ static int ti_sci_probe(struct platform_device *pdev)
>  	ti_sci_setup_ops(info);
>  
>  	if (reboot) {
> -		info->nb.notifier_call = tisci_reboot_handler;
> -		info->nb.priority = 128;
> -
> -		ret = register_restart_handler(&info->nb);
> +		ret = devm_register_restart_handler(dev,
> +						    tisci_reboot_handler,
> +						    info);
>  		if (ret) {
>  			dev_err(dev, "reboot registration fail(%d)\n", ret);
>  			goto out;
> -- 
> 2.39.2
>
Markus Schneider-Pargmann April 2, 2024, 8:19 a.m. UTC | #2
On Tue, Mar 26, 2024 at 05:37:28PM -0500, Andrew Davis wrote:
> There was once a limitation that there could only be one system
> reset handler. Due to that we only would register this handler
> when a non-standard device tree property was found, else we left
> the default handler in place (usually PSCI). Now that we can
> have multiple handlers, and TI-SCI reset is always available
> in the firmware, register this handler unconditionally.
> 
> This priority is left at the default so higher priority handlers
> (like PSCI) are still attempted first.
> 
> Signed-off-by: Andrew Davis <afd@ti.com>

Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>

Best
Markus
> ---
>  drivers/firmware/ti_sci.c | 15 ++++-----------
>  1 file changed, 4 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/firmware/ti_sci.c b/drivers/firmware/ti_sci.c
> index 9885e1763591b..160968301b1fb 100644
> --- a/drivers/firmware/ti_sci.c
> +++ b/drivers/firmware/ti_sci.c
> @@ -3299,7 +3299,6 @@ static int ti_sci_probe(struct platform_device *pdev)
>  	struct mbox_client *cl;
>  	int ret = -EINVAL;
>  	int i;
> -	int reboot = 0;
>  	u32 h_id;
>  
>  	desc = device_get_match_data(dev);
> @@ -3323,8 +3322,6 @@ static int ti_sci_probe(struct platform_device *pdev)
>  		}
>  	}
>  
> -	reboot = of_property_read_bool(dev->of_node,
> -				       "ti,system-reboot-controller");
>  	INIT_LIST_HEAD(&info->node);
>  	minfo = &info->minfo;
>  
> @@ -3395,14 +3392,10 @@ static int ti_sci_probe(struct platform_device *pdev)
>  
>  	ti_sci_setup_ops(info);
>  
> -	if (reboot) {
> -		ret = devm_register_restart_handler(dev,
> -						    tisci_reboot_handler,
> -						    info);
> -		if (ret) {
> -			dev_err(dev, "reboot registration fail(%d)\n", ret);
> -			goto out;
> -		}
> +	ret = devm_register_restart_handler(dev, tisci_reboot_handler, info);
> +	if (ret) {
> +		dev_err(dev, "reboot registration fail(%d)\n", ret);
> +		goto out;
>  	}
>  
>  	dev_info(dev, "ABI: %d.%d (firmware rev 0x%04x '%s')\n",
> -- 
> 2.39.2
>
Nishanth Menon April 9, 2024, 7:53 p.m. UTC | #3
Hi Andrew Davis,

On Tue, 26 Mar 2024 17:37:26 -0500, Andrew Davis wrote:
> This series is the replacement for this series[0] and is based on a
> comment in that series by Rob here[1].
> 
> First patch is just a fixup, second patch is the core of the series.
> 
> Thanks,
> Andrew
> 
> [...]

I have applied the following to branch ti-drivers-soc-next on [1].
Thank you!

[1/4] firmware: ti_sci: Use devm_register_restart_handler()
      commit: c0e5a431442d7bbfbd3704212680e49faa8ee46c
[2/4] firmware: ti_sci: Unconditionally register reset handler
      commit: 8c8ff39838e02b6df91b80e086426dcb9ac86908

and the following to branch ti-keystone-dts-next on [1].

[3/4] ARM: dts: ti: keystone: k2g: Remove ti,system-reboot-controller property
      commit: 345d22f4f45369a33b416a96c92bc273e41d695b
[4/4] dt-bindings: arm: keystone: Remove ti,system-reboot-controller property
      commit: 60242b20fe784ef9142050be8b68bd85e94be557

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent up the chain during
the next merge window (or sooner if it is a relevant bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git