forked from Minki/linux
d287801c49
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 |