summaryrefslogtreecommitdiffstats
path: root/sound/soc/sof/trace.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2023-07-19 00:30:40 +0100
committerMark Brown <broonie@kernel.org>2023-07-19 12:58:42 +0100
commitb460a52257b1f5299ca70b7d1bb32442d3ce7bf6 (patch)
treee61cb35ba46ae6b620f61db4ea9c8ba62314c240 /sound/soc/sof/trace.c
parent0c9d2eb5e94792fe64019008a04d4df5e57625af (diff)
downloadlinux-stable-b460a52257b1f5299ca70b7d1bb32442d3ce7bf6.tar.gz
linux-stable-b460a52257b1f5299ca70b7d1bb32442d3ce7bf6.tar.bz2
linux-stable-b460a52257b1f5299ca70b7d1bb32442d3ce7bf6.zip
regcache: Push async I/O request down into the rbtree cache
Currently the regcache core unconditionally enables async I/O for all cache types, causing problems for the maple tree cache which dynamically allocates the buffers used to write registers to the device since async requires the buffers to be kept around until the I/O has been completed. This use of async I/O is mainly for the rbtree cache which stores data in a format directly usable for regmap_raw_write(), though there is a special case for single register writes which would also have allowed it to be used with the flat cache. It is a bit of a landmine for other caches since it implicitly converts sync operations to async, and with modern hardware it is not clear that async I/O is actually a performance win as shown by the performance work David Jander did with SPI. In multi core systems the cost of managing concurrency ends up swamping the performance benefit and almost all modern systems are multi core. Address this by pushing the enablement of async I/O down into the rbtree cache where it is actively used, avoiding surprises for other cache implementations. Reported-by: Charles Keepax <ckeepax@opensource.cirrus.com> Fixes: bfa0b38c1483 ("regmap: maple: Implement block sync for the maple tree cache") Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com> Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20230719-regcache-async-rbtree-v1-1-b03d30cf1daf@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/sof/trace.c')
0 files changed, 0 insertions, 0 deletions