On Wed, Jan 26, 2022 at 04:24:36PM +0100, Takashi Iwai wrote:
Given that the CPU number is the same in alc_update_coefex_idx(), it seems these calls execution is interrupted and interleaved on the same core. And, actually, there are two LEDs to set (mute and micmute). Am I onto something here?
That's an interesting finding, and yes, such a race is quite possible. Below is a quick fix as an attempt to cover it. Could you give it a try?
Well, results are somewhat mixed.
With the supplied patch (with a mutex), the original fixup 91502a9a0b0d ("ALSA: hda/realtek: fix speakers and micmute on HP 855 G8") is no longer needed for speakers to work. So, the original timing issue is identified now.
But unbind-bind problems with IO_PAGE_FAULT and "out of range cmd" are not eliminated. IO_PAGE_FAULT are often logged without accompanying "out of range cmd". And after adding debugging printk() I haven't managed to trigger "out of range cmd" yet. But IO_PAGE_FAULT are more easily triggered.
Are there ways to trace origins of IO_PAGE_FAULT itself?