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