[alsa-devel] Linux-Kernel: System freezes after hibernate or suspend on a Mac mini 6, 2
Takashi Iwai
tiwai at suse.de
Mon Apr 23 21:26:22 CEST 2018
On Mon, 23 Apr 2018 20:40:37 +0200,
Johannes Geiss wrote:
>
> On Mon, 23 Apr 2018 15:42:33 +0200
> Takashi Iwai <tiwai at suse.de> wrote:
>
> > Did you get the error message "Too many HDMI devices" as mentioned in
> > the changelog?
>
> Yes:
>
> Mar 14 11:29:48 mizar kernel: snd_hda_intel 0000:00:1b.0: Too many HDMI
> devices Mar 14 11:29:48 mizar kernel: snd_hda_intel 0000:00:1b.0:
> Consider building the kernel with CONFIG_SND_DYNAMIC_MINORS=y Mar 14
> 11:29:48 mizar kernel: input: HDA Intel PCH Line
> as /devices/pci0000:00/0000:00:1b.0/sound/card0/input3 Mar 14 11:29:48
> mizar kernel: input: HDA Intel PCH Headphone
> as /devices/pci0000:00/0000:00:1b.0/sound/card0/input4 Mar 14 11:29:48
> mizar kernel: input: HDA Intel PCH SPDIF In
> as /devices/pci0000:00/0000:00:1b.0/sound/card0/input5 Mar 14 11:29:48
> mizar kernel: input: HDA Intel PCH HDMI/DP,pcm=3
> as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7 Mar 14 11:29:48
> mizar kernel: input: HDA Intel PCH HDMI/DP,pcm=7
> as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8 Mar 14 11:29:48
> mizar kernel: input: HDA Intel PCH HDMI/DP
> as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9 Mar 14 11:29:48
> mizar systemd[1]: Reached target Sound Card.
>
> Does this mean I should try to use CONFIG_SND_DYNAMIC_MINORS=y to solve
> the hibernate/suspend problem?
I guess the problem should gone with that kconfig, yes.
But it doesn't mean that we ignore the issue.
What about the patch below? Does it change the behavior?
thanks,
Takashi
-- 8< --
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -1383,6 +1383,8 @@ static void hdmi_pcm_setup_pin(struct hdmi_spec *spec,
pcm = get_pcm_rec(spec, per_pin->pcm_idx);
else
return;
+ if (!pcm->pcm)
+ return;
if (!test_bit(per_pin->pcm_idx, &spec->pcm_in_use))
return;
@@ -2151,8 +2153,13 @@ static int generic_hdmi_build_controls(struct hda_codec *codec)
int dev, err;
int pin_idx, pcm_idx;
-
for (pcm_idx = 0; pcm_idx < spec->pcm_used; pcm_idx++) {
+ if (!get_pcm_rec(spec, pcm_idx)->pcm) {
+ /* no PCM; mark this not to be selected */
+ set_bit(idx, &spec->pcm_bitmap);
+ continue;
+ }
+
err = generic_hdmi_build_jack(codec, pcm_idx);
if (err < 0)
return err;
More information about the Alsa-devel
mailing list