LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Vladimir Oltean <vladimir.oltean@nxp.com>
Cc: Mark Brown <broonie@kernel.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Arnd Bergmann <arnd@arndb.de>,
Thomas Gleixner <tglx@linutronix.de>,
Marc Zyngier <maz@kernel.org>,
Hou Zhiqiang <Zhiqiang.Hou@nxp.com>, Biwen Li <biwen.li@nxp.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] mfd: syscon: request a regmap with raw spinlocks for some devices
Date: Mon, 6 Sep 2021 10:18:04 +0100 [thread overview]
Message-ID: <YTXczJbHYCgkpVGu@google.com> (raw)
In-Reply-To: <20210825205041.927788-3-vladimir.oltean@nxp.com>
On Wed, 25 Aug 2021, Vladimir Oltean 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@kernel.org>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
> ---
> drivers/mfd/syscon.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c
> index 765c0210cb52..70da4e87b072 100644
> --- a/drivers/mfd/syscon.c
> +++ b/drivers/mfd/syscon.c
> @@ -83,6 +83,22 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
> if (ret)
> reg_io_width = 4;
>
> + /*
> + * We might be providing a regmap to e.g. an irqchip driver, and in
> + * that case, normal spinlocks won't do: the IRQ core holds raw
> + * spinlocks, so it needs to be raw spinlocks all the way down.
> + * Detect those drivers here (currently "ls-extirq") and request raw
> + * spinlocks in the regmap config for them.
> + */
> + if (of_device_is_compatible(np, "fsl,lx2160a-isc") ||
> + of_device_is_compatible(np, "fsl,ls2080a-isc") ||
> + of_device_is_compatible(np, "fsl,ls2080a-isc") ||
> + of_device_is_compatible(np, "fsl,ls1088a-isc") ||
> + of_device_is_compatible(np, "fsl,ls1043a-scfg") ||
> + of_device_is_compatible(np, "fsl,ls1046a-scfg") ||
> + of_device_is_compatible(np, "fsl,ls1021a-scfg"))
> + syscon_config.use_raw_spinlock = true;
> +
Since syscon is meant to be a generic solution, I'd like to avoid
spraying platform specific hacks throughout. So, *IF* this is the
chosen solution, I'd prefer to solve this with a generic DT property,
rather than matching on a bunch of compatible strings.
--
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2021-09-06 9:18 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-25 20:50 [PATCH 0/2] Use raw spinlocks in the ls-extirq driver Vladimir Oltean
2021-08-25 20:50 ` [PATCH 1/2] regmap: teach regmap to use raw spinlocks if requested in the config Vladimir Oltean
2021-08-26 23:01 ` Thomas Gleixner
2021-08-27 16:12 ` Vladimir Oltean
2021-08-27 19:59 ` Thomas Gleixner
2021-08-30 10:49 ` Vladimir Oltean
2021-08-30 11:02 ` Rasmus Villemoes
2021-08-30 12:42 ` Mark Brown
2021-08-30 12:19 ` Mark Brown
2021-08-30 14:16 ` Thomas Gleixner
2021-09-01 16:05 ` Mark Brown
2021-09-02 8:35 ` Thomas Gleixner
2021-08-25 20:50 ` [PATCH 2/2] mfd: syscon: request a regmap with raw spinlocks for some devices Vladimir Oltean
2021-08-25 21:24 ` Arnd Bergmann
2021-08-25 22:00 ` Vladimir Oltean
2021-08-26 9:24 ` Arnd Bergmann
2021-08-26 13:57 ` Vladimir Oltean
2021-08-26 14:48 ` Arnd Bergmann
2021-09-06 9:18 ` Lee Jones [this message]
2021-08-26 12:51 ` (subset) [PATCH 0/2] Use raw spinlocks in the ls-extirq driver Mark Brown
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=YTXczJbHYCgkpVGu@google.com \
--to=lee.jones@linaro.org \
--cc=Zhiqiang.Hou@nxp.com \
--cc=arnd@arndb.de \
--cc=biwen.li@nxp.com \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=maz@kernel.org \
--cc=rafael@kernel.org \
--cc=tglx@linutronix.de \
--cc=vladimir.oltean@nxp.com \
/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;
as well as URLs for NNTP newsgroup(s).