Bug 151811 - Updating from 4.6.4 to 4.6.5 breaks snd_hda_intel (Lenovo Thinkpad P50)
Summary: Updating from 4.6.4 to 4.6.5 breaks snd_hda_intel (Lenovo Thinkpad P50)
Status: RESOLVED INVALID
Alias: None
Product: Drivers
Classification: Unclassified
Component: Sound(ALSA) (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Jaroslav Kysela
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-08-09 14:51 UTC by Matthias Hensler
Modified: 2016-08-10 10:10 UTC (History)
1 user (show)

See Also:
Kernel Version: 4.6.5
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments
dmesg for 3.6.4 (working kernel) (113.04 KB, text/plain)
2016-08-09 20:31 UTC, Matthias Hensler
Details
dmesg for 3.6.5 (non-working kernel) (113.84 KB, text/plain)
2016-08-09 20:32 UTC, Matthias Hensler
Details
alsa-info for 3.6.4 (38.87 KB, text/plain)
2016-08-09 20:32 UTC, Matthias Hensler
Details
alsa-info for 3.6.5 (18.29 KB, text/plain)
2016-08-09 20:32 UTC, Matthias Hensler
Details

Description Matthias Hensler 2016-08-09 14:51:55 UTC
Up to 4.6.4 (Fedora Kernel kernel-4.6.4-301.fc24.x86_64) everything is fine. After installing 4.6.5 (Fedora Kernel kernel-4.6.5-300.fc24.x86_64) sound is gone. Reverting back to 4.6.4 fixes the issue.

The problem seems related to the snd_hda_codec_realtek module, which is not loaded any longer on 4.6.5. From the changelog I see a couple of changes to the snd_hda-driver related to Thinkpads.


dmesg on 4.6.5 (broken):
Aug  9 12:40:53 kobayashi-maru kernel: snd_hda_intel 0000:00:1f.3: HSW/BDW HD-audio HDMI/DP requires binding with gfx driver
Aug  9 12:40:53 kobayashi-maru kernel: snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
Aug  9 12:40:53 kobayashi-maru kernel: snd_hda_intel 0000:01:00.1: Disabling MSI
Aug  9 12:40:53 kobayashi-maru kernel: snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
Aug  9 12:40:53 kobayashi-maru kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input10
Aug  9 12:40:53 kobayashi-maru kernel: input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input11
Aug  9 12:40:53 kobayashi-maru kernel: input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input12

dmesg on 4.6.4 (working):
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_intel 0000:01:00.1: Disabling MSI
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC298: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0:    inputs:
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
Aug  9 15:23:48 kobayashi-maru kernel: snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
Aug  9 15:23:48 kobayashi-maru kernel: input: HDA Intel PCH Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input9
Aug  9 15:23:48 kobayashi-maru kernel: input: HDA Intel PCH Headphone as /devices/pci0000:00/0000:00:1f.3/sound/card0/input10
Aug  9 15:23:48 kobayashi-maru kernel: input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input12
Aug  9 15:23:48 kobayashi-maru kernel: input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input13
Aug  9 15:23:48 kobayashi-maru kernel: input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input14


The PCI-devices in question are:
00:1f.3 Audio device: Intel Corporation Sunrise Point-H HD Audio (rev 31)
01:00.0 VGA compatible controller: NVIDIA Corporation GM107GLM [Quadro M2000M] (rev a2)


System is a Lenovo Thinkpad P50 (20EN0008GE) with latest BIOS (1.30).

I am happy to provide any needed additional information.
Comment 1 Takashi Iwai 2016-08-09 20:06:33 UTC
Could you give the full dmesg outputs on both working and broken kernels?
Also, run alsa-info.sh with --no-upload option on both kernels, and upload the outputs, too.

A good test would be to simply copy sound/pci/hda/patch_realtek.c from 4.6.4 to 4.6.5 and check whether it works now.
Comment 2 Matthias Hensler 2016-08-09 20:31:48 UTC
Created attachment 228071 [details]
dmesg for 3.6.4 (working kernel)
Comment 3 Matthias Hensler 2016-08-09 20:32:05 UTC
Created attachment 228081 [details]
dmesg for 3.6.5 (non-working kernel)
Comment 4 Matthias Hensler 2016-08-09 20:32:26 UTC
Created attachment 228091 [details]
alsa-info for 3.6.4
Comment 5 Matthias Hensler 2016-08-09 20:32:43 UTC
Created attachment 228101 [details]
alsa-info for 3.6.5
Comment 6 Matthias Hensler 2016-08-09 20:32:54 UTC
Here you go for dmesg and alsa-info.

Trying to copy patch_realtek.c might take some time unfortunately, as I have to build the kernel first.

So far it just seems that the realtek_codec just gets not loaded and the kernel spews this message instead:

HSW/BDW HD-audio HDMI/DP requires binding with gfx driver
Comment 7 Takashi Iwai 2016-08-10 06:57:39 UTC
There is no code change at all between 4.6.4 and 4.6.5 relevant with the "HSW/BDW" message.  Something else must be broken.

The message is only for HSW/BDW HDMI controller, and yours is SKL.  That is, it must not appear on your machine.

It's in an if block by the macro, defined in sound/pci/hda/hda_intel.c:

#define CONTROLLER_IN_GPU(pci) (((pci)->device == 0x0a0c) || \
                                        ((pci)->device == 0x0c0c) || \
                                        ((pci)->device == 0x0d0c) || \
                                        ((pci)->device == 0x160c))

Please check whether it's same on your 4.6.5 kernel code.
And, if it's still correct, try to put a printk() before the "HSW/BDW" message, something like:

--- a/sound/pci/hda/hda_intel.c                                                 
+++ b/sound/pci/hda/hda_intel.c                                                 
@@ -2048,6 +2048,7 @@ static int azx_probe_continue(struct azx *chip)
                         * codecs can be on the same link.                      
                         */                                                     
                        if (CONTROLLER_IN_GPU(pci)) {                           
+                               dev_err(chip->card->dev, "XXX %x\n", pci->devic\
e);                                                                             
                                dev_err(chip->card->dev,                        
                                        "HSW/BDW HD-audio HDMI/DP requires bind\
ing with gfx driver\n");                                                        
                                goto out_free;
Comment 8 Matthias Hensler 2016-08-10 08:38:48 UTC
What a mess. I figured the bug to be upstream, as the Changelog for the Fedorabuild was quite short and did not mention anything besides some CVEs.

But looks like you are right, that macro was extended by two additional devices (0xa170 and 0x9d70).

The Fedora-patch in question looks like a backport to me:
From c0afc8df2c54301034e0ad8a537c7b817b72e06a Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Tue, 12 Jul 2016 22:40:01 +0200
Subject: [PATCH] Revert "ALSA: hda - remove controller dependency on i915
 power well for SKL"

This reverts commit 03b135cebc47d75ea2dc346770374ab741966955.
---
 sound/pci/hda/hda_intel.c  | 4 +++-
 sound/pci/hda/patch_hdmi.c | 3 +--
 2 files changed, 4 insertions(+), 3 deletions(-)


Just a quick googling reveals a lot to be going on there.

I will now build a 4.6.5-version without that patch. If that solves the problem I will go downstream and report the problem against the Fedorakernel.

Thanks so far for the help.
Comment 9 Matthias Hensler 2016-08-10 10:05:37 UTC
Hi Takashi,

please excuse the noise. The problem was indeed caused by the mentioned downstream patch and is not a regression with the upstream kernel. Sound is working fine after removing the patch.

I already filed a bug with the Fedoraguys at Redhat (https://bugzilla.redhat.com/show_bug.cgi?id=1365828).

Therefore please close the bug here.
Comment 10 Takashi Iwai 2016-08-10 10:10:50 UTC
OK, thanks for checking.

AFAIK, the revert was due to the issue of runtime PM on Skylake i915 HDMI/DP.  A proper fix was already posted to intel-gfx ML instead of this broken revert.

Note You need to log in before you can comment on or make changes to this bug.