Re: [PATCH v2 2/2] firmware: exynos-acpm: allow use during system shutdown
From: Krzysztof Kozlowski
Date: Tue Mar 25 2025 - 03:57:40 EST
On 24/03/2025 16:34, André Draszik wrote:
> +static bool acpm_may_sleep(void)
> +{
> + return system_state <= SYSTEM_RUNNING ||
> + (IS_ENABLED(CONFIG_PREEMPT_COUNT) ? preemptible() : !irqs_disabled());
> +}
> +
> /**
> * acpm_dequeue_by_polling() - RX dequeue by polling.
> * @achan: ACPM channel info.
> @@ -300,7 +314,10 @@ static int acpm_dequeue_by_polling(struct acpm_chan *achan,
> return 0;
>
> /* Determined experimentally. */
> - usleep_range(20, 30);
> + if (!acpm_may_sleep())
> + udelay(10);
> + else
... and what do you do if IRQs get disabled exactly in this moment? This
is just racy. You cannot check for a condition and assume it will be
valid for whatever time you want it to be valid.
What happens if system_state is changed to shutdown in this particular
moment? How did you prevent this from happening?
> + usleep_range(20, 30);
> } while (ktime_before(ktime_get(), timeout));
>
> dev_err(dev, "Timeout! ch:%u s:%u bitmap:%lx.\n",
>
Best regards,
Krzysztof