On Sat, 14 Jan 2017 10:20:16 +0100, Enrico Mioso wrote:
Hello Takashi, thank you very much again for your kindness and patience...
I'll enable the tracepoint. Discrepancies in the single_cmd value are derived from the fact that I am still using the hackish version of the patch, since I didn't reboot... otherwise I should have started from scratch some very-long operations. But the value has remained to 0, and the fallback didn't happen, as expected.
Ok, reading note.rst now. I was wondering, but I may well be wrong: in the past that fallback code brought my system to single cmd mode after polling... Now it crashes, and as I said before, the switching from polling to last_cmd is kind-of immediate most of the times these days (e.g.: on this kernel). May be something goes wrong in the fallback path? Or is this caused by an invalid verb ? Guessing verb = something like a command...
Yes, maybe the fallback to single cmd got broken somehow. I'd need to check with a fault injection.
In anyway, the verb is DIGI_CONVERT_2, and the only possible place is the beep setup.
Could you try the below to see whether it makes any difference?
Takashi
--- diff --git a/sound/pci/hda/hda_beep.c b/sound/pci/hda/hda_beep.c index c397e7da0eac..07930e69812a 100644 --- a/sound/pci/hda/hda_beep.c +++ b/sound/pci/hda/hda_beep.c @@ -228,9 +228,11 @@ int snd_hda_attach_beep_device(struct hda_codec *codec, int nid) return -ENOMEM; snprintf(beep->phys, sizeof(beep->phys), "card%d/codec#%d/beep0", codec->card->number, codec->addr); +#if 0 /* enable linear scale */ snd_hda_codec_write_cache(codec, nid, 0, AC_VERB_SET_DIGI_CONVERT_2, 0x01); +#endif
beep->nid = nid; beep->codec = codec;