summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2023-10-26 18:49:19 +0300
committerMark Brown <broonie@kernel.org>2023-10-26 18:54:05 +0300
commit0ec7731655de196bc1e4af99e495b38778109d22 (patch)
tree7a767c630dca25456fd088ffa6c6adecb627e5f2 /init
parentc6df843348d6b71ea986266c12831cb60c2cf325 (diff)
downloadlinux-0ec7731655de196bc1e4af99e495b38778109d22.tar.xz
regmap: Ensure range selector registers are updated after cache sync
When we sync the register cache we do so with the cache bypassed in order to avoid overhead from writing the synced values back into the cache. If the regmap has ranges and the selector register for those ranges is in a register which is cached this has the unfortunate side effect of meaning that the physical and cached copies of the selector register can be out of sync after a cache sync. The cache will have whatever the selector was when the sync started and the hardware will have the selector for the register that was synced last. Fix this by rewriting all cached selector registers after every sync, ensuring that the hardware and cache have the same content. This will result in extra writes that wouldn't otherwise be needed but is simple so hopefully robust. We don't read from the hardware since not all devices have physical read support. Given that nobody noticed this until now it is likely that we are rarely if ever hitting this case. Reported-by: Hector Martin <marcan@marcan.st> Cc: stable@vger.kernel.org Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20231026-regmap-fix-selector-sync-v1-1-633ded82770d@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'init')
0 files changed, 0 insertions, 0 deletions