drivers/base/regmap/regmap-slimbus.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
Commit 4e65bda8273c ("ASoC: wcd934x: fix error handling in
wcd934x_codec_parse_data()") revealed the problem in the slimbus regmap.
That commit breaks audio playback, for instance, on sdm845 Thundercomm
Dragonboard 845c board:
Unable to handle kernel paging request at virtual address ffff8000847cbad4
...
CPU: 5 UID: 0 PID: 776 Comm: aplay Not tainted 6.18.0-rc1-00028-g7ea30958b305 #11 PREEMPT
Hardware name: Thundercomm Dragonboard 845c (DT)
...
Call trace:
slim_xfer_msg+0x24/0x1ac [slimbus] (P)
slim_read+0x48/0x74 [slimbus]
regmap_slimbus_read+0x18/0x24 [regmap_slimbus]
_regmap_raw_read+0xe8/0x174
_regmap_bus_read+0x44/0x80
_regmap_read+0x60/0xd8
_regmap_update_bits+0xf4/0x140
_regmap_select_page+0xa8/0x124
_regmap_raw_write_impl+0x3b8/0x65c
_regmap_bus_raw_write+0x60/0x80
_regmap_write+0x58/0xc0
regmap_write+0x4c/0x80
wcd934x_hw_params+0x494/0x8b8 [snd_soc_wcd934x]
snd_soc_dai_hw_params+0x3c/0x7c [snd_soc_core]
__soc_pcm_hw_params+0x22c/0x634 [snd_soc_core]
dpcm_be_dai_hw_params+0x1d4/0x38c [snd_soc_core]
dpcm_fe_dai_hw_params+0x9c/0x17c [snd_soc_core]
snd_pcm_hw_params+0x124/0x464 [snd_pcm]
snd_pcm_common_ioctl+0x110c/0x1820 [snd_pcm]
snd_pcm_ioctl+0x34/0x4c [snd_pcm]
__arm64_sys_ioctl+0xac/0x104
invoke_syscall+0x48/0x104
el0_svc_common.constprop.0+0x40/0xe0
do_el0_svc+0x1c/0x28
el0_svc+0x34/0xec
el0t_64_sync_handler+0xa0/0xf0
el0t_64_sync+0x198/0x19c
The __devm_regmap_init_slimbus() started to be used instead of
__regmap_init_slimbus() after the commit mentioned above and turns out
the incorrect bus_context pointer (3rd argument) was used in
__devm_regmap_init_slimbus(). It should be just "slimbus" (which is equal
to &slimbus->dev). Correct it. The wcd934x codec seems to be the only or
the first user of devm_regmap_init_slimbus() but we should fix it till
the point where __devm_regmap_init_slimbus() was introduced therefore
two "Fixes" tags.
While at this, also correct the same argument in __regmap_init_slimbus().
Fixes: 4e65bda8273c ("ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()")
Fixes: 7d6f7fb053ad ("regmap: add SLIMbus support")
Cc: stable@vger.kernel.org
Cc: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Cc: Ma Ke <make24@iscas.ac.cn>
Cc: Steev Klimaszewski <steev@kali.org>
Cc: Srinivas Kandagatla <srini@kernel.org>
Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
---
The patch/fix is for the current 6.18 development cycle
since it fixes the regression introduced in 6.18.0-rc1.
Changes in v2:
- &slimbus->dev replaced with just "slimbus", no functional change
(as suggested by Dmitry);
- the same argument in __regmap_init_slimbus() was replaced with
"slimbus" (as suggested by Dmitry);
- reduced the backtrace log in the commit message (as suggested by Mark);
- corrected subject/title, few typos, added mention of non-managed init
func change, rephrased smth;
- added Reviewed-by tag from Abel.
Prev version: https://lore.kernel.org/linux-sound/20251020015557.1127542-1-alexey.klimov@linaro.org/
drivers/base/regmap/regmap-slimbus.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/base/regmap/regmap-slimbus.c b/drivers/base/regmap/regmap-slimbus.c
index 54eb7d227cf4..e523fae73004 100644
--- a/drivers/base/regmap/regmap-slimbus.c
+++ b/drivers/base/regmap/regmap-slimbus.c
@@ -48,8 +48,7 @@ struct regmap *__regmap_init_slimbus(struct slim_device *slimbus,
if (IS_ERR(bus))
return ERR_CAST(bus);
- return __regmap_init(&slimbus->dev, bus, &slimbus->dev, config,
- lock_key, lock_name);
+ return __regmap_init(&slimbus->dev, bus, slimbus, config, lock_key, lock_name);
}
EXPORT_SYMBOL_GPL(__regmap_init_slimbus);
@@ -63,8 +62,7 @@ struct regmap *__devm_regmap_init_slimbus(struct slim_device *slimbus,
if (IS_ERR(bus))
return ERR_CAST(bus);
- return __devm_regmap_init(&slimbus->dev, bus, &slimbus, config,
- lock_key, lock_name);
+ return __devm_regmap_init(&slimbus->dev, bus, slimbus, config, lock_key, lock_name);
}
EXPORT_SYMBOL_GPL(__devm_regmap_init_slimbus);
--
2.47.3
On Wed, 22 Oct 2025 21:10:12 +0100, Alexey Klimov wrote:
> Commit 4e65bda8273c ("ASoC: wcd934x: fix error handling in
> wcd934x_codec_parse_data()") revealed the problem in the slimbus regmap.
> That commit breaks audio playback, for instance, on sdm845 Thundercomm
> Dragonboard 845c board:
>
> Unable to handle kernel paging request at virtual address ffff8000847cbad4
> ...
> CPU: 5 UID: 0 PID: 776 Comm: aplay Not tainted 6.18.0-rc1-00028-g7ea30958b305 #11 PREEMPT
> Hardware name: Thundercomm Dragonboard 845c (DT)
> ...
> Call trace:
> slim_xfer_msg+0x24/0x1ac [slimbus] (P)
> slim_read+0x48/0x74 [slimbus]
> regmap_slimbus_read+0x18/0x24 [regmap_slimbus]
> _regmap_raw_read+0xe8/0x174
> _regmap_bus_read+0x44/0x80
> _regmap_read+0x60/0xd8
> _regmap_update_bits+0xf4/0x140
> _regmap_select_page+0xa8/0x124
> _regmap_raw_write_impl+0x3b8/0x65c
> _regmap_bus_raw_write+0x60/0x80
> _regmap_write+0x58/0xc0
> regmap_write+0x4c/0x80
> wcd934x_hw_params+0x494/0x8b8 [snd_soc_wcd934x]
> snd_soc_dai_hw_params+0x3c/0x7c [snd_soc_core]
> __soc_pcm_hw_params+0x22c/0x634 [snd_soc_core]
> dpcm_be_dai_hw_params+0x1d4/0x38c [snd_soc_core]
> dpcm_fe_dai_hw_params+0x9c/0x17c [snd_soc_core]
> snd_pcm_hw_params+0x124/0x464 [snd_pcm]
> snd_pcm_common_ioctl+0x110c/0x1820 [snd_pcm]
> snd_pcm_ioctl+0x34/0x4c [snd_pcm]
> __arm64_sys_ioctl+0xac/0x104
> invoke_syscall+0x48/0x104
> el0_svc_common.constprop.0+0x40/0xe0
> do_el0_svc+0x1c/0x28
> el0_svc+0x34/0xec
> el0t_64_sync_handler+0xa0/0xf0
> el0t_64_sync+0x198/0x19c
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git for-next
Thanks!
[1/1] regmap: slimbus: fix bus_context pointer in regmap init calls
commit: 434f7349a1f00618a620b316f091bd13a12bc8d2
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
On 10/22/25 9:10 PM, Alexey Klimov wrote:
> Commit 4e65bda8273c ("ASoC: wcd934x: fix error handling in
> wcd934x_codec_parse_data()") revealed the problem in the slimbus regmap.
> That commit breaks audio playback, for instance, on sdm845 Thundercomm
> Dragonboard 845c board:
>
> Unable to handle kernel paging request at virtual address ffff8000847cbad4
> ...
> CPU: 5 UID: 0 PID: 776 Comm: aplay Not tainted 6.18.0-rc1-00028-g7ea30958b305 #11 PREEMPT
> Hardware name: Thundercomm Dragonboard 845c (DT)
> ...
> Call trace:
> slim_xfer_msg+0x24/0x1ac [slimbus] (P)
> slim_read+0x48/0x74 [slimbus]
> regmap_slimbus_read+0x18/0x24 [regmap_slimbus]
> _regmap_raw_read+0xe8/0x174
> _regmap_bus_read+0x44/0x80
> _regmap_read+0x60/0xd8
> _regmap_update_bits+0xf4/0x140
> _regmap_select_page+0xa8/0x124
> _regmap_raw_write_impl+0x3b8/0x65c
> _regmap_bus_raw_write+0x60/0x80
> _regmap_write+0x58/0xc0
> regmap_write+0x4c/0x80
> wcd934x_hw_params+0x494/0x8b8 [snd_soc_wcd934x]
> snd_soc_dai_hw_params+0x3c/0x7c [snd_soc_core]
> __soc_pcm_hw_params+0x22c/0x634 [snd_soc_core]
> dpcm_be_dai_hw_params+0x1d4/0x38c [snd_soc_core]
> dpcm_fe_dai_hw_params+0x9c/0x17c [snd_soc_core]
> snd_pcm_hw_params+0x124/0x464 [snd_pcm]
> snd_pcm_common_ioctl+0x110c/0x1820 [snd_pcm]
> snd_pcm_ioctl+0x34/0x4c [snd_pcm]
> __arm64_sys_ioctl+0xac/0x104
> invoke_syscall+0x48/0x104
> el0_svc_common.constprop.0+0x40/0xe0
> do_el0_svc+0x1c/0x28
> el0_svc+0x34/0xec
> el0t_64_sync_handler+0xa0/0xf0
> el0t_64_sync+0x198/0x19c
>
> The __devm_regmap_init_slimbus() started to be used instead of
> __regmap_init_slimbus() after the commit mentioned above and turns out
> the incorrect bus_context pointer (3rd argument) was used in
> __devm_regmap_init_slimbus(). It should be just "slimbus" (which is equal
> to &slimbus->dev). Correct it. The wcd934x codec seems to be the only or
> the first user of devm_regmap_init_slimbus() but we should fix it till
> the point where __devm_regmap_init_slimbus() was introduced therefore
> two "Fixes" tags.
>
> While at this, also correct the same argument in __regmap_init_slimbus().
>
> Fixes: 4e65bda8273c ("ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()")
> Fixes: 7d6f7fb053ad ("regmap: add SLIMbus support")
> Cc: stable@vger.kernel.org
> Cc: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> Cc: Ma Ke <make24@iscas.ac.cn>
> Cc: Steev Klimaszewski <steev@kali.org>
> Cc: Srinivas Kandagatla <srini@kernel.org>
> Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
>
> The patch/fix is for the current 6.18 development cycle
> since it fixes the regression introduced in 6.18.0-rc1.
>
> Changes in v2:
> - &slimbus->dev replaced with just "slimbus", no functional change
> (as suggested by Dmitry);
> - the same argument in __regmap_init_slimbus() was replaced with
> "slimbus" (as suggested by Dmitry);
> - reduced the backtrace log in the commit message (as suggested by Mark);
> - corrected subject/title, few typos, added mention of non-managed init
> func change, rephrased smth;
> - added Reviewed-by tag from Abel.
>
> Prev version: https://lore.kernel.org/linux-sound/20251020015557.1127542-1-alexey.klimov@linaro.org/
>
> drivers/base/regmap/regmap-slimbus.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
In case Mark if you want to pick this up,
Acked-by: Srinivas Kandagatla <srini@kernel.org>
> diff --git a/drivers/base/regmap/regmap-slimbus.c b/drivers/base/regmap/regmap-slimbus.c
> index 54eb7d227cf4..e523fae73004 100644
> --- a/drivers/base/regmap/regmap-slimbus.c
> +++ b/drivers/base/regmap/regmap-slimbus.c
> @@ -48,8 +48,7 @@ struct regmap *__regmap_init_slimbus(struct slim_device *slimbus,
> if (IS_ERR(bus))
> return ERR_CAST(bus);
>
> - return __regmap_init(&slimbus->dev, bus, &slimbus->dev, config,
> - lock_key, lock_name);
> + return __regmap_init(&slimbus->dev, bus, slimbus, config, lock_key, lock_name);
> }
> EXPORT_SYMBOL_GPL(__regmap_init_slimbus);
>
> @@ -63,8 +62,7 @@ struct regmap *__devm_regmap_init_slimbus(struct slim_device *slimbus,
> if (IS_ERR(bus))
> return ERR_CAST(bus);
>
> - return __devm_regmap_init(&slimbus->dev, bus, &slimbus, config,
> - lock_key, lock_name);
> + return __devm_regmap_init(&slimbus->dev, bus, slimbus, config, lock_key, lock_name);
> }
> EXPORT_SYMBOL_GPL(__devm_regmap_init_slimbus);
>
On Wed, Oct 22, 2025 at 09:10:12PM +0100, Alexey Klimov wrote:
> Commit 4e65bda8273c ("ASoC: wcd934x: fix error handling in
> wcd934x_codec_parse_data()") revealed the problem in the slimbus regmap.
> That commit breaks audio playback, for instance, on sdm845 Thundercomm
> Dragonboard 845c board:
>
> Unable to handle kernel paging request at virtual address ffff8000847cbad4
> ...
> CPU: 5 UID: 0 PID: 776 Comm: aplay Not tainted 6.18.0-rc1-00028-g7ea30958b305 #11 PREEMPT
> Hardware name: Thundercomm Dragonboard 845c (DT)
> ...
> Call trace:
> slim_xfer_msg+0x24/0x1ac [slimbus] (P)
> slim_read+0x48/0x74 [slimbus]
> regmap_slimbus_read+0x18/0x24 [regmap_slimbus]
> _regmap_raw_read+0xe8/0x174
> _regmap_bus_read+0x44/0x80
> _regmap_read+0x60/0xd8
> _regmap_update_bits+0xf4/0x140
> _regmap_select_page+0xa8/0x124
> _regmap_raw_write_impl+0x3b8/0x65c
> _regmap_bus_raw_write+0x60/0x80
> _regmap_write+0x58/0xc0
> regmap_write+0x4c/0x80
> wcd934x_hw_params+0x494/0x8b8 [snd_soc_wcd934x]
> snd_soc_dai_hw_params+0x3c/0x7c [snd_soc_core]
> __soc_pcm_hw_params+0x22c/0x634 [snd_soc_core]
> dpcm_be_dai_hw_params+0x1d4/0x38c [snd_soc_core]
> dpcm_fe_dai_hw_params+0x9c/0x17c [snd_soc_core]
> snd_pcm_hw_params+0x124/0x464 [snd_pcm]
> snd_pcm_common_ioctl+0x110c/0x1820 [snd_pcm]
> snd_pcm_ioctl+0x34/0x4c [snd_pcm]
> __arm64_sys_ioctl+0xac/0x104
> invoke_syscall+0x48/0x104
> el0_svc_common.constprop.0+0x40/0xe0
> do_el0_svc+0x1c/0x28
> el0_svc+0x34/0xec
> el0t_64_sync_handler+0xa0/0xf0
> el0t_64_sync+0x198/0x19c
>
> The __devm_regmap_init_slimbus() started to be used instead of
> __regmap_init_slimbus() after the commit mentioned above and turns out
> the incorrect bus_context pointer (3rd argument) was used in
> __devm_regmap_init_slimbus(). It should be just "slimbus" (which is equal
> to &slimbus->dev). Correct it. The wcd934x codec seems to be the only or
> the first user of devm_regmap_init_slimbus() but we should fix it till
> the point where __devm_regmap_init_slimbus() was introduced therefore
> two "Fixes" tags.
>
> While at this, also correct the same argument in __regmap_init_slimbus().
>
> Fixes: 4e65bda8273c ("ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data()")
> Fixes: 7d6f7fb053ad ("regmap: add SLIMbus support")
> Cc: stable@vger.kernel.org
> Cc: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> Cc: Ma Ke <make24@iscas.ac.cn>
> Cc: Steev Klimaszewski <steev@kali.org>
> Cc: Srinivas Kandagatla <srini@kernel.org>
> Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
> Signed-off-by: Alexey Klimov <alexey.klimov@linaro.org>
> ---
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
© 2016 - 2026 Red Hat, Inc.