Re: [PATCH 2/2] mfd: syscon: request a regmap with raw spinlocks for some devices

From: Arnd Bergmann
Date: Wed Aug 25 2021 - 17:25:12 EST


On Wed, Aug 25, 2021 at 10:50 PM Vladimir Oltean
<vladimir.oltean@xxxxxxx> wrote:
>
> This patch solves a ls-extirq irqchip driver bug in a perhaps
> non-intuitive (at least non-localized) way.
>
> The issue is that ls-extirq uses regmap, and due to the fact that it is
> being called by the IRQ core under raw spinlock context, it needs to use
> raw spinlocks itself. So it needs to request raw spinlocks from the
> regmap config.
>
> All is fine so far, except the ls-extirq driver does not manage its own
> regmap, instead it uses syscon_node_to_regmap() to get it from the
> parent syscon (this driver).
>
> Because the syscon regmap is initialized before any of the consumer
> drivers (ls-extirq) probe, we need to know beforehand whether to request
> raw spinlocks or not.
>
> The solution seems to be to check some compatible string. The ls-extirq
> driver probes on quite a few NXP Layerscape SoCs, all with different
> compatible strings. This is potentially fragile and subject to bit rot
> (since the fix is not localized to the ls-extirq driver, adding new
> compatible strings there but not here seems plausible). Anyway, it is
> probably the best we can do without major rework.
>
> Suggested-by: Mark Brown <broonie@xxxxxxxxxx>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>

This should work, but how hard would it be to change the ls-extirq
driver instead to not use the syscon driver at all but make the extirq
driver set up the regmap itself?

Are there any other users of the syscon?

Arnd