Re: [PATCH v2 0/4] soundwire: qcom: stablity fixes

From: Johan Hovold
Date: Thu Jun 08 2023 - 09:05:10 EST


On Thu, Jun 08, 2023 at 01:45:22PM +0100, Srinivas Kandagatla wrote:
> On 08/06/2023 13:40, Johan Hovold wrote:

> > Looking at the above log it seems like we hit a probe deferral somewhere
> > as some resource is not available yet, and this is eventually turned
> > into a hard failure that breaks audio as the error is propagated up the
> > stack.
>
> I was looking at this too, And I think this change should help..
> Not tried it though

> ret = snd_soc_tplg_component_load(component, &audioreach_tplg_ops, fw);
> - if (ret < 0) {
> + if (ret < 0)
> dev_err(dev, "tplg component load failed%d\n", ret);
> - ret = -EINVAL;
> - }

That in itself only seems to make the problem worse with new follow-on
errors. Looks like a dereference of an error pointer in a codec driver:

[ 12.086999] snd-sc8280xp sound: ASoC: adding FE link failed
[ 12.087231] snd-sc8280xp sound: ASoC: topology: could not load header: -517
[ 12.087547] qcom-apm gprsvc:service:2:1: tplg component load failed-517
[ 12.088865] snd-sc8280xp sound: ASoC: failed to instantiate card -517
[ 12.117093] genirq: Flags mismatch irq 289. 00002001 (HPHR PDM WD INT) vs. 00002001 (HPHR PDM WD INT)
[ 12.117504] wcd938x_codec audio-codec: Failed to request HPHR WD interrupt (-16)
[ 12.117664] genirq: Flags mismatch irq 290. 00002001 (HPHL PDM WD INT) vs. 00002001 (HPHL PDM WD INT)
[ 12.117861] wcd938x_codec audio-codec: Failed to request HPHL WD interrupt (-16)
[ 12.118010] genirq: Flags mismatch irq 291. 00002001 (AUX PDM WD INT) vs. 00002001 (AUX PDM WD INT)
[ 12.118197] wcd938x_codec audio-codec: Failed to request Aux WD interrupt (-16)
[ 12.118579] genirq: Flags mismatch irq 292. 00002001 (mbhc sw intr) vs. 00002001 (mbhc sw intr)
[ 12.118763] wcd938x_codec audio-codec: Failed to request mbhc interrupts -16
[ 12.122415] snd-sc8280xp sound: ASoC: Parent card not yet available, widget card binding deferred
[ 12.126740] Unable to handle kernel paging request at virtual address fffffffffffffff8
[ 12.126856] Mem abort info:
[ 12.126903] ESR = 0x0000000096000004
[ 12.126961] EC = 0x25: DABT (current EL), IL = 32 bits
[ 12.127036] SET = 0, FnV = 0
[ 12.127085] EA = 0, S1PTW = 0
[ 12.127135] FSC = 0x04: level 0 translation fault
[ 12.127205] Data abort info:
[ 12.127250] ISV = 0, ISS = 0x00000004
[ 12.127308] CM = 0, WnR = 0
[ 12.127356] swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000028e41b000
[ 12.127445] [fffffffffffffff8] pgd=0000000000000000, p4d=0000000000000000
[ 12.127624] Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP
[ 12.127674] Modules linked in: q6apm_dai q6apm_lpass_dais snd_soc_wsa883x q6prm_clocks snd_q6dsp_common q6prm michael_mic cbc des_generic libdes ecb algif_skcipher md5 algif_hash af_alg ip6_tables xt_LOG nf_log_syslog ipt_REJECT nf_reject_ipv4 xt_tcpudp xt_conntrack snd_q6apm nf_conntrack libcrc32c nf_defrag_ipv6 nf_defrag_ipv4 iptable_filter r8152 mii qrtr_mhi panel_edp snd_soc_hdmi_codec venus_dec venus_enc fastrpc gpio_sbu_mux rpmsg_ctrl apr videobuf2_dma_contig rpmsg_char qrtr_smd qcom_spmi_adc_tm5 videobuf2_memops snd_soc_lpass_va_macro snd_soc_lpass_tx_macro snd_soc_lpass_wsa_macro snd_soc_lpass_rx_macro snd_soc_lpass_macro_common ath11k_pci qcom_pm8008_regulator ath11k mac80211 venus_core pmic_glink_altmode qcom_battmgr msm libarc4 v4l2_mem2mem hci_uart videobuf2_v4l2 gpu_sched btqca videodev bluetooth drm_display_helper cfg80211 phy_qcom_qmp_combo videobuf2_common leds_qcom_lpg qcom_spmi_temp_alarm drm_dp_aux_bus ecdh_generic qcom_spmi_adc5 drm_kms_helper mc ecc led_class_multicolor rtc_pm8xxx mhi industrialio
[ 12.127941] qcom_pon rfkill syscopyarea snd_soc_sc8280xp reboot_mode qcom_vadc_common sysfillrect nvmem_qcom_spmi_sdam qcom_pm8008 snd_soc_wcd938x sysimgblt snd_soc_qcom_common snd_soc_qcom_sdw videocc_sc8280xp typec phy_qcom_edp qcom_stats regmap_i2c snd_soc_wcd938x_sdw phy_qcom_qmp_usb pinctrl_sc8280xp_lpass_lpi phy_qcom_snps_femto_v2 qcom_q6v5_pas icc_bwmon soundwire_qcom regmap_sdw pinctrl_lpass_lpi snd_soc_wcd_mbhc lpasscc_sc8280xp qcom_pil_info snd_soc_core qcom_common snd_compress qcom_glink_smem qcom_q6v5 snd_pcm qcom_sysmon snd_timer icc_osm_l3 mdt_loader qrtr qcom_wdt qcom_rng snd pmic_glink pdr_interface soundcore socinfo qmi_helpers pwm_bl soundwire_bus drm dm_mod ip_tables x_tables ipv6 pcie_qcom crc8 phy_qcom_qmp_pcie nvme nvme_core hid_multitouch i2c_qcom_geni i2c_hid_of i2c_hid i2c_core
[ 12.129101] CPU: 1 PID: 158 Comm: kworker/u16:7 Not tainted 6.4.0-rc5 #62
[ 12.129153] Hardware name: LENOVO 21BYZ9SRUS/21BYZ9SRUS, BIOS N3HET53W (1.25 ) 10/12/2022
[ 12.129209] Workqueue: events_unbound deferred_probe_work_func
[ 12.129267] pstate: a0400005 (NzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 12.129319] pc : wcd_mbhc_start+0x28/0x380 [snd_soc_wcd_mbhc]
[ 12.129381] lr : wcd938x_codec_set_jack+0x28/0x48 [snd_soc_wcd938x]
[ 12.129445] sp : ffff80000a523950
[ 12.129471] x29: ffff80000a523950 x28: ffff408fd176f080 x27: ffff408fd176c880
[ 12.129530] x26: ffffac710f2c0b20 x25: 0002000000000000 x24: 00000000fffffdf4
[ 12.129588] x23: ffff408fd176c880 x22: ffff408fd176d518 x21: ffff408fd176f080
[ 12.129645] x20: ffff408fc5c30c80 x19: fffffffffffffff0 x18: 0000000000000020
[ 12.129701] x17: 0000000000000000 x16: ffffac710e565dac x15: ffffffffffffffff
[ 12.129758] x14: ffff40905779741b x13: ffffffffffffffff x12: 0000000000000000
[ 12.129814] x11: ffff409b340586f0 x10: ffffac710fbcf1e0 x9 : 0000000000000000
[ 12.129870] x8 : ffff408fd9288700 x7 : 0000000000000000 x6 : ffff408fd77891a0
[ 12.129926] x5 : ffff408fd176f750 x4 : 0000000000000000 x3 : ffffac70c8662310
[ 12.132271] x2 : ffff408fd176d518 x1 : ffff408fc3480158 x0 : fffffffffffffff0
[ 12.133443] Call trace:
[ 12.134003] wcd_mbhc_start+0x28/0x380 [snd_soc_wcd_mbhc]
[ 12.134567] wcd938x_codec_set_jack+0x28/0x48 [snd_soc_wcd938x]
[ 12.135131] snd_soc_component_set_jack+0x28/0x8c [snd_soc_core]
[ 12.135709] qcom_snd_wcd_jack_setup+0x7c/0x19c [snd_soc_qcom_common]
[ 12.136278] sc8280xp_snd_init+0x20/0x2c [snd_soc_sc8280xp]
[ 12.137080] snd_soc_link_init+0x28/0x90 [snd_soc_core]
[ 12.139427] snd_soc_bind_card+0x628/0xbfc [snd_soc_core]
[ 12.141761] snd_soc_register_card+0xec/0x104 [snd_soc_core]
[ 12.144082] devm_snd_soc_register_card+0x4c/0xa4 [snd_soc_core]
[ 12.146402] sc8280xp_platform_probe+0xf0/0x108 [snd_soc_sc8280xp]
[ 12.148694] platform_probe+0x68/0xd8
[ 12.150969] really_probe+0x184/0x3c8
[ 12.153257] __driver_probe_device+0x7c/0x16c
[ 12.155532] driver_probe_device+0x3c/0x110
[ 12.157787] __device_attach_driver+0xbc/0x158
[ 12.160056] bus_for_each_drv+0x84/0xe0
[ 12.162304] __device_attach+0xa8/0x1d4
[ 12.164518] device_initial_probe+0x14/0x20
[ 12.166716] bus_probe_device+0xb0/0xb4
[ 12.168924] deferred_probe_work_func+0xa0/0xf4
[ 12.171100] process_one_work+0x288/0x5bc
[ 12.173267] worker_thread+0x74/0x450
[ 12.175409] kthread+0x124/0x128
[ 12.177555] ret_from_fork+0x10/0x20
[ 12.179683] Code: fa401804 54001ae0 a9025bf5 aa0003f3 (f9400415)
[ 12.181815] ---[ end trace 0000000000000000 ]---

Johan