android_kernel_msm-6.1_noth.../drivers/base
Mark Brown 164fa9a0b1 regmap: Ensure range selector registers are updated after cache sync
commit 0ec7731655de196bc1e4af99e495b38778109d22 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-11-28 17:07:09 +00:00
..
firmware_loader
power PM: sleep: wakeirq: fix wake irq arming 2023-08-03 10:24:16 +02:00
regmap regmap: Ensure range selector registers are updated after cache sync 2023-11-28 17:07:09 +00:00
test driver core: test_async: fix an error code 2023-09-13 09:42:53 +02:00
arch_numa.c
arch_topology.c RISC-V Patches for the 6.1 Merge Window, Part 1 2022-10-09 13:24:01 -07:00
attribute_container.c
auxiliary.c
base.h
bus.c
cacheinfo.c drivers: base: cacheinfo: Fix shared_cpu_map changes in event of CPU hotplug 2023-06-09 10:34:17 +02:00
class.c class: fix possible memory leak in __class_register() 2022-12-31 13:32:38 +01:00
component.c drivers: base: component: fix memory leak with using debugfs_lookup() 2023-03-11 13:55:39 +01:00
container.c
core.c drivers: base: Free devm resources when unregistering a device 2023-09-13 09:42:54 +02:00
cpu.c x86/srso: Add a Speculative RAS Overflow mitigation 2023-08-08 20:03:50 +02:00
dd.c driver core: Call dma_cleanup() on the test_remove path 2023-09-13 09:42:53 +02:00
devcoredump.c
devres.c
devtmpfs.c
driver.c
firmware.c
hypervisor.c
init.c
isa.c
Kconfig
Makefile
map.c
memory.c
module.c
node.c - Yu Zhao's Multi-Gen LRU patches are here. They've been under test in 2022-10-10 17:53:04 -07:00
physical_location.c driver core: location: Free struct acpi_pld_info *pld before return false 2023-03-10 09:33:33 +01:00
physical_location.h
pinctrl.c
platform-msi.c
platform.c platform: Provide a remove callback that returns no value 2023-05-24 17:32:43 +01:00
property.c drivers: fwnode: fix fwnode_irq_get[_byname]() 2023-07-19 16:21:57 +02:00
soc.c
swnode.c
syscore.c
topology.c
trace.c
trace.h
transport_class.c drivers: base: transport_class: fix resource leak when transport_add_device() fails 2023-03-10 09:33:34 +01:00