lockdep complains recursive locking and deadlock when two different regmap instances are called in a nested order. That happen easily for example when both I2C client and muxed/repeater I2C adapter are using regmap. As a solution, pass regmap name for lockdep in order to force lockdep validate regmap mutex per driver - not as all regmap instances grouped together. Here is example connection, where nested regmap is used to control I2C mux. __________ ___________ ___________ | USB IF | | demod | | tuner | |----------| |-----------| |-----------| | |--I2C--|-----/ ----|--I2C--| | |I2C master| | I2C mux | | I2C slave | |__________| |___________| |___________| Cc: Mark Brown <broonie@xxxxxxxxxx> Signed-off-by: Antti Palosaari <crope@xxxxxx> --- drivers/base/regmap/regmap.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index d2f8a81..8d8ad37 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c @@ -559,6 +559,12 @@ struct regmap *regmap_init(struct device *dev, mutex_init(&map->mutex); map->lock = regmap_lock_mutex; map->unlock = regmap_unlock_mutex; + if (config->name) { + static struct lock_class_key key; + + lockdep_set_class_and_name(&map->mutex, &key, + config->name); + } } map->lock_arg = map; } -- http://palosaari.fi/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html