Re: [PATCH] pinctrl: stm32: fix the unit of the hwspinlock timeout

Antonio Borneo <[email protected]>
Newsgroups org.kernel.vger.linux-gpio,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Wed, 2026-08-05 at 11:28 +0800, Ju Nan wrote:
> HWSPNLCK_TIMEOUT is passed to hwspin_lock_timeout_in_atomic(), whose
> timeout argument is in milliseconds, not microseconds:
> 
>   atomic_delay += HWSPINLOCK_RETRY_DELAY_US;
>   if (atomic_delay > to * 1000)
>           return -ETIMEDOUT;
> 
> So the driver asks for a 1 second timeout where the comment next to the
> macro says it wants 1 millisecond.
> 
> The hwspinlock core documents this explicitly:
> 
>   If the mode is HWLOCK_IN_ATOMIC (called from an atomic context) the
>   timeout is handled with busy-waiting delays, hence shall not exceed
>   few msecs.
> 
> Pass the value the comment always described. The core retries every
> HWSPINLOCK_RETRY_DELAY_US (100 us), so the semaphore is still polled ten
> times before giving up, which is far longer than any plausible hold time
> on the coprocessor side. A timeout is reported with dev_err() and fails
> the pin configuration or the interrupt allocation, so shortening it
> degrades gracefully.
> 
> Signed-off-by: Ju Nan <[email protected]>

Please add
Fixes: 290a9f937e5a ("pinctrl: stm32: use the hwspin_lock_timeout_in_atomic() API")

> ---
>  drivers/pinctrl/stm32/pinctrl-stm32.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c
> index 6a99708a5..dbc9143ec 100644
> --- a/drivers/pinctrl/stm32/pinctrl-stm32.c
> +++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
> @@ -87,7 +87,7 @@
>  #define gpio_range_to_bank(chip) \
>                 container_of(chip, struct stm32_gpio_bank, range)
>  
> -#define HWSPNLCK_TIMEOUT       1000 /* usec */
> +#define HWSPNLCK_TIMEOUT       1 /* msec */

Please change the macro name as HWSPNLCK_TIMEOUT_MS to keep track of the time units

>  
>  static const char * const stm32_gpio_functions[] = {
>         "gpio", "af0", "af1",

Thanks!
Antonio
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.