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: 6efb943b8616ec53a5e444193dccf1af9ad627b5 |
||
|---|---|---|
| .. | ||
| 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 | ||