主题中讨论的其他器件:TLV320AIC3204、
您好!
我们正在我们的某个产品中使用您的编解码器、并已使用提供的 Linux 驱动程序成功将其集成到 Ubuntu 22.04.3中。 但是、驱动程序中存在一个错误、导致出现"原子调度"以及尝试写入不存在的存储器等错误。 由于客户的要求、我们无法自行选择使用自定义内核来修补驱动程序。 我们可以采取其他任何步骤来解决此问题、还是必须等待补丁? 导致引导问题。
当我们禁用驱动程序(这将禁用我们的音频功能)时、引导问题将消失。
以下是我收集的有关此问题的一些日志:
[ 10.027250]错误:原子调度:systemd-udevd/432/0x00000002
[ 10.045960]错误:原子调度:systemd-udevd/432/0x00000000
[ 10.074657]错误:原子调度:systemd-udevd/432/0x00000002
[ 10.083558]错误:原子调度:systemd-udevd/432/0x00000000
[10.101876] 无法处理从虚拟地址0000000000000078的不可读内存中读取的内核
[ 10.111066]内存中止信息:
[ 10.113894] ESR = 0x000096000004
[ 10.117693] EC = 0x25:DABT (电流 EL)、IL = 32位
[ 10.123079] SET = 0、FNV = 0
[ 10.126172] EA = 0、S1PTW = 0
[10.129352] FSC = 0x04:0级转换故障
[ 10.134297]数据中止信息:
[ 10.137212] ISV = 0,ISS = 0x00000004
[10.141098] CM = 0,WNR = 0
[10.144104] 用户 ptable:4K 页,48位 Vas,pgdp=0000000102ef0000
[ 10.150639][0000000000000078] PgD=000000000000、p4d=000000000000
[10.157532] 内部错误:Oops:96000004[#1]抢占 SMP
[ 10.163185] Modules linked in:snd_soc_tlv320aic32x4_spi brcmfmac snd_soc_simple_card (+) brcmutil snd_soc_t lv320aic32x4_i2c cfg80211 snd_soc_BCM2835_I2S snd_soc_tlv320aic32x4 snd_soc_simple_card_utils snd_BCM2835 (CE) SND_SoC_CORE snd_compress snd_seq_midi ac97_BUS raspberrypi_hwmon snd_seq_midi_event snd_pcm_dmaengine snd_raw MIDI SND_PCM SND_SEQ BCM2835_CODEC (CE) BCM2835_ISP (CE) v4l2_mem2mem BCM2835_v4l2 (CE) BCM2835_mmal_vchiq (CE) SN d_seq_device videbuf2_vmalloc snd_timer videbuf2_dma_contig videbuf2_memops v4l2 videobuf2_common SND 视频开发 BCM2835_gpiomem MC VC_SM_CMA (CE) rpivid_mem uio_pdrv_genirq nvmem_rmem uio sch_FQ_codel rtc_ds13 07 drm pstore_blk ramoops adle_Solomon pstore_zone ip_tables x_tables autofs4 btrfs blake2b_generic zstd_compr ESS RAID10 raid456 async_raid6_recov async_memcpy async_pq async_XOR async_tx XOR XOR_neon raid6_pq libcrc32c RAID1 raid0多路径线性 uas usb_storage rtc_pcf85063 dwc2角色 i2c_mux_pinctrl udc_core crct10dif_ce i2c mux (_mux)
[ 10.163386] i2c_BCM2835 phy_generic AES_ARM64
[10.255713] CPU: 3 PID: 432 Comm: systemd-udevd dicted: G WC E 5.15.0-1035-raspi #38-ubuntu
[ 10.265335] Hardware name: Raspberry Pi Compute Module 4 Rev 1.1 (DT)
[10.271866] pstate:204000c5 (nzCv daif +pan -uaO -tco -dit -ssbs BTYPE=-)
[10.278931] PC : pick_next_task_fair+0x1F4/0x490
[ 10.283618] lr : pick_next_task_fair+0x1f0/0x490
[10.288298] sp : ff80000869b130
[10.291656] x29:ff80000869b130 x28:ff80000869bd60 x27:0000000000000030
[10.298901] x26:ffff4767bef7f800 x25:ffffba53cdc2d5f8 x24:ffff4766c459a000
[10.306144] x23:000000000000 x22:ff4767bef7f700 x21:000000000000
[ 10.313388] x20:000000000000 x19:000000000000 x18:000000000000
[10.320632] x17:202020202020452020 x16:4357202020202020 x15:2047203A646574
[ 10.327875] x14:000000000000 x13:38613178302f3461 x12:3178302b636e7473
[10.335117] x11:000000000000 x10:000000000000000a x9:ffba53cd4c8c98
[ 10.342360] x8 : 000000000000000a x7 : 00000000000000000001 x6 : 0000000000000126
[10.349602] x5:ff4766c8b6d800 x4:0000000001674174 x3:ffba53ce565c80
[ 10.356846] x2 : 000000000000 x1 : ffba53ce565c80 x0 : 00003ddd1465
[10.364090] 呼叫跟踪:
[ 10.366567] pick_next_task_fair+0x1F4/0x490
[ 10.370898] __schedule+0x1d8/0x8b0
[10.374436] SCHEDULE+0x70/0x170
[ 10.377709] SCHEDULE_TIMEOUT+0xa0/0x1c4
[ 10.381687] WAIT_FOR_COMPENSATION_TIMEOUT+0x88/0x110
[ 10.386634] BCM2835_i2c_xfer+0xe8/0x3a4 [i2c_BCM2835]
[ 10.391853] __i2c_transfer+0xa4/0x4b0
[ 10.395656] i2c_transfer+0x68/0x130
[ 10.399281] regmap_i2c_read+0x64/0xb0
[ 10.403083] _regmap_raw_read+0xb4/0x270
[ 10.407062] _regmap_BUS_read+0x4c/0x84
[ 10.410952] _regmap_read+0x80/0x200
[ 10.414578] _regmap_update_bits+0xd4/0x110
[ 10.418822] _regmap_select_page+0xb8/0x160
[ 10.423064] _regmap_raw_read+0x10c/0x270
[ 10.427132] _regmap_BUS_read+0x4c/0x84
[ 10.431022] _regmap_read+0x80/0x200
[ 10.434647] _regmap_update_bits+0xd4/0x110
[ 10.438890] regmap_update_bits_base+0x6c/0xa0
[ 10.443398] clk_aic32x4_bdiv_set_parent+0x34/0x40 [SND_SoC_tlv320aic32x4]
[ 10.450381] clk_core_set_parent_nolock+0x158/0x3b0
[ 10.45531] clk_set_parent+0x48/0x180
[ 10.459133] aic32x4_component_prob+0x6c/0x1b0 [SND_SoC_tlv320aic32x4]
[ 10.465849] snd_soc_component_probed+0x30/0x84 [snd_soc_core]
[ 10.471737(2006) SoC_Probe_component+0x1dc/0x374 [SND_SoC_CORE]
[ 10.477445] snd_soc_bind_card+0x27c/0x7c0 [snd_soc_core]
[ 10.482977] SND_SoC_REGISTER_CARD+0xFC/0x114 [SND_SoC_CORE]
[ 10.488778] devm_snd_soc_register_card+0x54/0xb0 [snd_soc_core]
[ 10.494927] aSOC_simple_prob+0x1fc/0x3f0 [SND_SoC_simple_card]
[ 10.501028] platform_probe+0x70/0x110
[ 10.504831] REALITY_PROT+0xd0/0x490
[ 10.508458] __driver_probe_device+0x148/0x190
[ 10.512966] driver_probe_device+0xec/0x180
[ 10.517209] __driver_attach+0x104/0x240
[ 10.521187] BUS_for_each_dev+0x78/0xd0
[ 10.525077] driver_attach+0x2C/0x40
[ 10.528702] BUS_add_driver+0x154/0x270
[ 10.532594] driver_register+0x80/0x13c
[ 10.536486] _platform_driver_register+0x30/0x40
[ 10.541255] asoc_simple_card_init+0x28/0x1000 [SND_SoC_simple_card]
[ 10.547706] DO_ONE_INITCALL+0x4c/0x2c0
[ 10.551596] DO_INIT_MODULE+0x50/0x260
[ 10.555397] LOAD_MODULE+0xa30/0xbd0
[ 10.559021] __do_sys_finit_module+0xa8/0x114
[ 10.563438] ___ARM64_sys_finit_module+0x28/0x3c
[ 10.568031] invoke_syscall+0x50/0x120
[ 10.571835] el0_Svc_common.constprop.0+0x180/0x1a0
[ 10.576784] DO_el0_Svc+0x30/0xb0
[ 10.580145] el0_Svc+0x4c/0x170
[ 10.583330] el0t_64_SYNC_handler+0xa4/0x12c
[ 10.587660] el0t_64_SYNC+0x1a4/0x1a8
[ 10.591377]代码:f9403e60 aa1303e1 97ffe43e f9403a73 (f9403e80)
[ 10.597558]-->结束迹线673aa74947e0992c -->
[10.602240] 注:systemd-udevd[432]已退出 preempt_count 2
[ 20.192047] mmc1:等待硬件中断时超时。
[ 70.108043] RCU: info: RCU_preempt detected stall on cpus/task:
[70.114227] RCU: 0-...!:(后面有1个 GPS) IDLE=9fd/1/0x4000000000000002 softirq=2997/3009 fqs=1
[70.123059] (由2个起搏检测,t=15002个起搏,g=1193,q=7041)
[ 70.128887] CPU 0的任务转储:
[70.132156] task:systemd-journal state: R running task stack: 0 pid:390 PPID: 1 flags:0x000008 00
[ 70.142224]呼叫跟踪:
[ 70.144698] __switch_to+0xf8/0x150
[ 70.148243] __dentry_kill+0x6c/0x1e0
[70.151956] RCU:RCU_preempt kthread 计时器唤醒对于14874 jiffies 没有发生! g1193 f0x0 RCU_GP_WAIT_F QS (5)->状态=0x402
[70.163515] RCU: CPU=3 timer-softirq=292时可能出现计时器处理问题
[70.170487] RCU: RCU_preempt kthread 饿死了14875个四足! g1193 f0x0 RCU_GP_WAIT_FQS (5)->状态=0x402 -> CPU =3
[ 70.181075] RCU: 除非 RCU 抢占 kthread 获得足够的 CPU 时间,否则 OM 现在是预期行为。
[ 70.190338] RCU:RCU grace-period kthread 堆栈 dump:
[70.195457] task:CCU_preempt state:I stack: 0 pid: 15 PPID: 2 flags:0x00000008
[ 70.203931]呼叫跟踪:
[ 70.206405] __switch_to+0xf8/0x150
[ 70.209941] __SCHEDULE+0x328/0x8b0
[70.213478] SCHEDULE+0x70/0x170
[70.216749] SCHEDULE_TIMEOUT+0xa0/0x1c4
[ 70.220727] RCU _gp_fqs_loop+0x120/0x370
[ 70.224704] RCU_gp_kthread+0x128/0x170
[70.228591] kthread+0x128/0x134
[ 70.231864] RET_FROM_FO叉+0x10/0x20
[70.235488] RCU:RCU GP kthread 上次运行的堆栈转储:
[ 70.241047] CPU 3的任务转储:
[70.244315] task:kworker/3:3 state:i stack: 0 pid: 424 PPID: 2 flags:0x00000008
[70.252798] 工作队列: 0x0 (事件)
[ 70.256428]呼叫跟踪:
[ 70.258901] __SWITCH_TO+0xf8/0x150
[ 70.262437] 0x0
期待您的回复、谢谢!