mirror of
https://github.com/torvalds/linux.git
synced 2025-11-05 03:00:13 +02:00
The ls-extirq irqchip driver accesses regmap inside its implementation
of the struct irq_chip :: irq_set_type method, and currently regmap
only knows to lock using normal spinlocks. But the method above wants
raw spinlock context, so this isn't going to work and triggers a
"[ BUG: Invalid wait context ]" splat.
The best we can do given the arrangement of the code is to patch regmap
and the syscon driver: regmap to support raw spinlocks, and syscon to
request them on behalf of its ls-extirq consumer.
Link: https://lore.kernel.org/lkml/20210825135438.ubcuxm5vctt6ne2q@skbuf/T/#u
Vladimir Oltean (2):
regmap: teach regmap to use raw spinlocks if requested in the config
mfd: syscon: request a regmap with raw spinlocks for some devices
drivers/base/regmap/internal.h | 4 ++++
drivers/base/regmap/regmap.c | 35 +++++++++++++++++++++++++++++-----
drivers/mfd/syscon.c | 16 ++++++++++++++++
include/linux/regmap.h | 2 ++
4 files changed, 52 insertions(+), 5 deletions(-)
--
2.25.1
base-commit:
|
||
|---|---|---|
| .. | ||
| internal.h | ||
| Kconfig | ||
| Makefile | ||
| regcache-flat.c | ||
| regcache-lzo.c | ||
| regcache-rbtree.c | ||
| regcache.c | ||
| regmap-ac97.c | ||
| regmap-debugfs.c | ||
| regmap-i2c.c | ||
| regmap-i3c.c | ||
| regmap-irq.c | ||
| regmap-mdio.c | ||
| regmap-mmio.c | ||
| regmap-sccb.c | ||
| regmap-sdw-mbq.c | ||
| regmap-sdw.c | ||
| regmap-slimbus.c | ||
| regmap-spi-avmm.c | ||
| regmap-spi.c | ||
| regmap-spmi.c | ||
| regmap-w1.c | ||
| regmap.c | ||
| trace.h | ||