summaryrefslogtreecommitdiff
path: root/tools/lib/python/kdoc/python_version.py
diff options
context:
space:
mode:
authorBob Song <songxiebing@kylinos.cn>2026-10-10 16:27:24 +0800
committerTakashi Iwai <tiwai@suse.de>2026-10-10 11:55:26 +0200
commit51ee6ce2418cb41698f1bfb9fc2f08d0e274c68e (patch)
treea5b15bec933ecac1179b134499f31677b500a84f /tools/lib/python/kdoc/python_version.py
parentf2293e7b2ddd803b1461e0490f9b2f32089c1dd0 (diff)
ALSA: hda: Reset response counter when a verb times out
On some controllers the HDA link reports a verb timeout and the driver falls back to polling mode. After that, every subsequent verb sent to that codec address keeps timing out (roughly one second per verb), while the hardware itself looks perfectly healthy: the RIRB write pointer keeps advancing, interrupts are still delivered, and verbs that carry no reply payload -- notably writes -- still take effect on the codec. The reason is that bus->rirb.cmds[addr] is incremented for every verb and only decremented in snd_hdac_bus_update_rirb() when a matching RIRB response is read, without any rollback for a response that never arrives. A controller that cannot fall back to the single-command mode (chip->fallback_to_single_cmd == 0, e.g. the ACPI platform, Tegra and CIX controllers) returns an error right away and never performs the bus reset that would reinitialize CORB/RIRB and clear the counter, so a single lost response leaves bus->rirb.cmds[addr] non-zero forever. Each following verb then still gets one response that only brings the count back to the stale baseline of 1, and snd_hdac_bus_get_response() keeps timing out even though the codec answers normally. Handle it in the core helper snd_hdac_bus_exec_verb_unlocked(): whenever get_response() reports an error, reset the pending counter for the codec address, so a late response is simply treated as a spurious response and the following verbs recover. Doing it here covers all HD-audio controllers instead of relying on each controller's fallback setting. Add a small helper snd_hdac_bus_reset_response_counter() for this. Signed-off-by: Bob Song <songxiebing@kylinos.cn> Link: https://patch.msgid.link/20261010082724.1653199-1-songxiebing@kylinos.cn Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions