On Wed, Jan 19, 2022 at 10:12:43AM +0100, Takashi Iwai wrote:
Actually, the timing issues are present here as well. Sometimes unbind & bind works fine. But fails on the second round.
Here "fails" means the kernel Oops / crash? If yes, the back trace would be helpful.
No, I mean "IO_PAGE_FAULT" and "out of range cmd" don't appear on every unbind & bind. Sometimes it works cleanly.
Backtraces for the source of "out of range cmd" messages:
--- a/sound/hda/hdac_device.c +++ b/sound/hda/hdac_device.c @@ -231,6 +231,7 @@ static unsigned int snd_hdac_make_cmd(struct hdac_device *codec, hda_nid_t nid, (verb & ~0xfff) || (parm & ~0xffff)) { dev_err(&codec->dev, "out of range cmd %x:%x:%x:%x\n", addr, nid, verb, parm); + dump_stack(); return -1; }
give me the following:
snd_hda_codec_realtek hdaudioC1D0: out of range cmd 0:20:400:90170118 Workqueue: events set_brightness_delayed Call Trace: <TASK> dump_stack_lvl+0x34/0x4c snd_hdac_make_cmd.cold+0x17/0x2c snd_hdac_codec_write+0x16/0x60 coef_mute_led_set+0x3a/0x60 set_brightness_delayed+0x6f/0xb0 process_one_work+0x1e1/0x380 worker_thread+0x4e/0x3b0 ? rescuer_thread+0x370/0x370 kthread+0x145/0x170 ? set_kthread_struct+0x50/0x50 ret_from_fork+0x22/0x30 </TASK>
I'll have more time to look into this deeper later this week.