On Wed, Jul 7, 2021 at 12:02 AM Takashi Iwai <tiwai@xxxxxxx> wrote: > On Tue, 06 Jul 2021 19:50:08 +0200, Max Filippov wrote: > > linux v5.13 booting on qemu-system-xtensa virt board gets stuck inside > > snd_intel8x0_probe -> intel8x0_measure_ac97_clock with this patch. > > Prior to it it boots successfully for me. > > I'm curious if this issue has been reported yet. > > > > What I see is an IRQ flood, at some point snd_intel8x0_interrupt > > and timer ISR are called in loop and execution never returns to > > the interrupted function intel8x0_measure_ac97_clock. > > > > Any idea what it could be? > > That's something odd with the VM. As the chip itself has never shown > such a problem on real systems, maybe the best action would be to just > skip the clock measurement on VM. The measurement itself is > unreliable on VM, so it makes more sense. > > That said, something like below would work? It didn't change anything in my case. My further observation is that the snd_intel8x0_update is called before the ichdev->prepared is set to one and as a result IRQ is apparently never cleared. Perhaps because intel8x0_measure_ac97_clock is called from the snd_intel8x0_probe, well before the snd_intel8x0_pcm_prepare that sets ichdev->prepared is called. > thanks, > > Takashi > > --- > diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c > index 2d1bfbcba933..b75f832d7777 100644 > --- a/sound/pci/intel8x0.c > +++ b/sound/pci/intel8x0.c > @@ -2199,6 +2199,9 @@ static int snd_intel8x0_mixer(struct intel8x0 *chip, int ac97_clock, > pbus->private_free = snd_intel8x0_mixer_free_ac97_bus; > if (ac97_clock >= 8000 && ac97_clock <= 48000) > pbus->clock = ac97_clock; > + else if (chip->inside_vm) > + pbus->clock = 48000; > + > /* FIXME: my test board doesn't work well with VRA... */ > if (chip->device_type == DEVICE_ALI) > pbus->no_vra = 1; -- Thanks. -- Max