regmap: Don't lock in regmap_reinit_cache()
Subsystems (2)
PATCH v2 1/1 regmap: Don't lock in regmap_reinit_cache()
When bus->fast_io is set, the locking here is done with spinlocks. This is currently true for the regmap-mmio bus implementation.
While holding a spinlock we can't go to sleep, various operations like removing the debugfs entries or re-initializing the cache will sleep, therefore, shift the locking up to the user.
Signed-off-by Dimitris Papastamos <[email protected]>
---
V2, removed the change id that was automatically.
drivers/base/regmap/regmap.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)
drivers/base/regmap/regmap.c +4 -9
@@ -659,13 +659,12 @@ EXPORT_SYMBOL_GPL(devm_regmap_init);* new cache. This can be used to restore the cache to defaults or to * update the cache configuration to reflect runtime discovery of the * hardware. +* +* No explicit locking is done here, the user needs to ensure that +* this function will not race with other calls to regmap. */ int regmap_reinit_cache (struct regmap *map,const struct regmap_config *config) { -int ret; - - map->lock (map); -regcache_exit (map);regmap_debugfs_exit (map);
@@ -681,11 +680,7 @@ int regmap_reinit_cache(struct regmap *map, const struct regmap_config *config) map->cache_bypass = false; map->cache_only = false; - ret =regcache_init (map, config); - - map->unlock (map); - -return ret; +return regcache_init (map, config); }EXPORT_SYMBOL_GPL (regmap_reinit_cache);
Signature · 1 line
1.7.11.3
Mark Brown
AppliedQuoted 2 lines · Dimitris Papastamos
When
bus->fast_iois set, the locking here is done with spinlocks. This is currently true for the regmap-mmio bus implementation.
Applied, thanks.