Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Eliav Farber" <farbere@amazon.com>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH v5 4/4] pps: clients: gpio: release pins to an inactive state on remove and shutdown
Date: Tue, 22 Sep 2026 10:39:29 +0000	[thread overview]
Message-ID: <20260922103930.5760E1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260922103051.5257-5-farbere@amazon.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] timers: use of timer_delete_sync() instead of timer_shutdown_sync() in teardown
--

commit c434ce52f848555ba764fe5cc2d58d2fed47b99f
Author: Eliav Farber <farbere@amazon.com>

pps: clients: gpio: release pins to an inactive state on remove and shutdown

This commit introduces logic to look up and apply an "inactive" pinctrl state
when the driver is unbound or the system is shut down. This ensures pins are
not left stuck in their default GPIO function for subsequent kernels like
kexec. It introduces a new shutdown callback that tears down the IRQ and
the echo timer before restoring the mux state.

> diff --git a/drivers/pps/clients/pps-gpio.c b/drivers/pps/clients/pps-gpio.c
> index aec534c246af1..203bf465ed8bf 100644
> --- a/drivers/pps/clients/pps-gpio.c
> +++ b/drivers/pps/clients/pps-gpio.c

[ ... ]

> @@ -216,9 +298,31 @@ static void pps_gpio_remove(struct platform_device *pdev)

[ ... ]

> +static void pps_gpio_shutdown(struct platform_device *pdev)
> +{
> +	struct pps_gpio_device_data *data = platform_get_drvdata(pdev);
> +
> +	/*
> +	 * The kernel keeps running after device_shutdown() (e.g. to load and
> +	 * start a kexec image), so quiesce the hardware before touching the
> +	 * mux: free the IRQ and stop the echo timer first, then release the
> +	 * pins last, so no callback can drive a pin after it is handed back.
> +	 * The PPS source is left registered; that is a remove-time concern.
> +	 */
> +	free_irq(data->irq, data);
> +	/* reset the echo state, if the board has an echo GPIO */
> +	if (data->echo_pin) {
> +		timer_delete_sync(&data->echo_timer);

[Severity: Low]
Should this teardown sequence in pps_gpio_shutdown() use 
timer_shutdown_sync() instead of timer_delete_sync()?

The modern timer API guidelines mandate using timer_shutdown_sync() in
device teardown paths to robustly prevent the timer from being re-armed.
While free_irq() runs prior and stops the interrupt handler from running
concurrently, timer_shutdown_sync() remains the documented standard for
fully shutting down a timer.

> +		gpiod_set_value(data->echo_pin, 0);
> +	}
> +	pps_gpio_release_pins(&pdev->dev);
> +}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260922103051.5257-1-farbere@amazon.com?part=4

  reply	other threads:[~2026-09-22 10:39 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-16 13:47 [PATCH 0/2] pps-gpio: restore pin mux on unbind and shutdown Eliav Farber
2026-09-16 13:47 ` [PATCH 1/2] dt-bindings: pps: pps-gpio: document optional idle pinctrl state Eliav Farber
2026-09-16 13:47 ` [PATCH 2/2] pps: clients: gpio: release pins to idle state on remove and shutdown Eliav Farber
2026-09-16 13:57   ` sashiko-bot
2026-09-16 16:48 ` [PATCH 0/2] pps-gpio: restore pin mux on unbind " Rodolfo Giometti
2026-09-16 18:25   ` Farber, Eliav
2026-09-16 18:26 ` [PATCH v2 " Eliav Farber
2026-09-16 18:26   ` [PATCH v2 1/2] dt-bindings: pps: pps-gpio: document optional pinctrl states Eliav Farber
2026-09-17  7:13     ` Rodolfo Giometti
2026-09-17  7:48       ` Farber, Eliav
2026-09-16 18:26   ` [PATCH v2 2/2] pps: clients: gpio: release pins to an inactive state on remove and shutdown Eliav Farber
2026-09-16 18:43     ` sashiko-bot
2026-09-17  7:14     ` Rodolfo Giometti
2026-09-17  7:52       ` Farber, Eliav
2026-09-17  7:56   ` [PATCH v3 0/3] pps-gpio: restore pin mux on unbind " Eliav Farber
2026-09-17  7:56     ` [PATCH v3 1/3] pps: clients: gpio: propagate probe error codes Eliav Farber
2026-09-17  8:04       ` sashiko-bot
2026-09-17  9:58       ` Bartosz Golaszewski
2026-09-18  7:50       ` Rodolfo Giometti
2026-09-17  7:56     ` [PATCH v3 2/3] dt-bindings: pps: pps-gpio: document optional pinctrl states Eliav Farber
2026-09-17 15:35       ` Rob Herring (Arm)
2026-09-17 16:13       ` Rob Herring
2026-09-18  7:50       ` Rodolfo Giometti
2026-09-18 15:43         ` Rob Herring
2026-09-17  7:56     ` [PATCH v3 3/3] pps: clients: gpio: release pins to an inactive state on remove and shutdown Eliav Farber
2026-09-17  8:10       ` sashiko-bot
2026-09-19 17:11     ` [PATCH v4 0/3] pps-gpio: restore pin mux on unbind " Eliav Farber
2026-09-22  7:40       ` Rodolfo Giometti
2026-09-22 10:08         ` Farber, Eliav
2026-09-22 10:30       ` [PATCH v5 0/4] " Eliav Farber
2026-09-22 10:30         ` [PATCH v5 1/4] pps: clients: gpio: propagate probe error codes Eliav Farber
2026-09-22 10:30         ` [PATCH v5 2/4] pps: clients: gpio: only tear down the echo timer when it exists Eliav Farber
2026-09-22 10:30         ` [PATCH v5 3/4] dt-bindings: pps: pps-gpio: document optional pinctrl states Eliav Farber
2026-09-22 12:46           ` Rodolfo Giometti
2026-09-23 12:36             ` Rob Herring
2026-09-23 13:13               ` Farber, Eliav
2026-09-23 18:04                 ` Rob Herring
2026-09-22 10:30         ` [PATCH v5 4/4] pps: clients: gpio: release pins to an inactive state on remove and shutdown Eliav Farber
2026-09-22 10:39           ` sashiko-bot [this message]
2026-09-22 12:46           ` Rodolfo Giometti
2026-09-22 14:55             ` Farber, Eliav
2026-09-23  7:50               ` Rodolfo Giometti
2026-09-23 18:22         ` [PATCH v6 0/4] pps-gpio: restore pin mux on unbind " Eliav Farber
2026-09-23 18:22           ` [PATCH v6 1/4] pps: clients: gpio: propagate probe error codes Eliav Farber
2026-09-24 12:58             ` Rodolfo Giometti
2026-09-24 14:46             ` Bartosz Golaszewski
2026-09-23 18:22           ` [PATCH v6 2/4] pps: clients: gpio: only tear down the echo timer when it exists Eliav Farber
2026-09-24 12:59             ` Rodolfo Giometti
2026-09-24 14:47             ` Bartosz Golaszewski
2026-09-23 18:22           ` [PATCH v6 3/4] dt-bindings: pps: pps-gpio: document optional pinctrl states Eliav Farber
2026-09-23 18:41             ` Rob Herring
2026-09-24 12:59             ` Rodolfo Giometti
2026-09-23 18:22           ` [PATCH v6 4/4] pps: clients: gpio: release pins to an inactive state on remove and shutdown Eliav Farber
2026-09-24 12:59             ` Rodolfo Giometti
2026-10-01  7:53             ` Linus Walleij
2026-09-24 12:58           ` [PATCH v6 0/4] pps-gpio: restore pin mux on unbind " Rodolfo Giometti
2026-09-19 17:11     ` [PATCH v4 1/3] pps: clients: gpio: propagate probe error codes Eliav Farber
2026-09-22  7:40       ` Rodolfo Giometti
2026-09-22  8:08         ` Farber, Eliav
2026-09-22  8:22           ` Rodolfo Giometti
2026-09-22 10:06             ` Farber, Eliav
2026-09-19 17:11     ` [PATCH v4 2/3] dt-bindings: pps: pps-gpio: document optional pinctrl states Eliav Farber
2026-09-22  7:40       ` Rodolfo Giometti
2026-09-22 10:11         ` Farber, Eliav
2026-09-19 17:11     ` [PATCH v4 3/3] pps: clients: gpio: release pins to an inactive state on remove and shutdown Eliav Farber
2026-09-22  7:40       ` Rodolfo Giometti
2026-09-22 10:13         ` Farber, Eliav

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=20260922103930.5760E1F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=farbere@amazon.com \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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