mbox series

[SRU,Focal,0/9] alsa/hdmi: support nvidia mst hdmi/dp audio

Message ID 20200812055822.5853-1-hui.wang@canonical.com
Headers show
Series alsa/hdmi: support nvidia mst hdmi/dp audio | expand

Message

Hui Wang Aug. 12, 2020, 5:58 a.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1867704

This patchset will introduce a big change on hda_jack and hda_hdmi,
So I sent the patcheset to oem-b 4 months ago. After 4 months of running
oem-b kernel, there is no any regression reported on this patchset,
now I am backporting the patchset to our focal kernel since our oem
project is waiting for the patchset to be landed to ubuntu 5.4 kernel
ASAP.

This patchset are already merged to mainline kernel 5.5-rc and 5.6-rc,
so there is no need to send the patchset to oem-5.6 or groovy kernel.

[Impact]
On some LENOVO I+N machines, when setting the graphic mode to discrete,
The dp/hdmi audio on the Docking Gen2 can't work with this machine +
LENOVO Docking Gen2, users can't find the hdmi audio entry in the
gnome-sound-setting.

[Fix]
Nvidia developer submit the mst audio support to 5.5-rcN and 5.6-RC1,
those patches could fix this issue.

[Test Case]
set the machien to discrete, plug the dock gen2 to it, then boot, after
booting, plug hdmi or dp to dock gen2, the hdmi or dp audio works.

test other machines without Nvidia graphic or without gen2, their hdmi/dp
audio still work, and check other output/input devices like headphone,
microphone, they all worked as well as before.


[Regression Risk]
one regression possibility is the audio jacks (including analogue and hdmi)
can't work anymore, that means after users plug a headphone, headset, hdmi
monitor or microphone to the audio jacks or hdmi connectors, the audio
driver can't detect the plugging event.

But regression's possibility is very low:
 - this patchset was already applied to oem-b kernel for 4 months, and
   oem projects didn't report any regression on the patchset
 - I tested the testing focal kernel with this patchset on many machines,
   includes a dell hda audio machine, a dell dmic  machine, a Lenovo I+N
   hda audio machine, a lenovo I+N dmic machine, a lenovo I hda audio
   machine, a lenovo amd hda audio machine. The audio on them all worked
   as well as before.


Kai Vehmanen (3):
  ALSA: hda: hdmi - fix regression in connect list handling
  ALSA: hda: hdmi - fix kernel oops caused by invalid PCM idx
  ALSA: hda: hdmi - preserve non-MST PCM routing for Intel platforms

Nikhil Mahale (5):
  ALSA: hda - Rename snd_hda_pin_sense to snd_hda_jack_pin_sense
  ALSA: hda - Add DP-MST jack support
  ALSA: hda - Add DP-MST support for non-acomp codecs
  ALSA: hda - Add DP-MST support for NVIDIA codecs
  ALSA: hda - Fix DP-MST support for NVIDIA codecs

Takashi Iwai (1):
  ALSA: hda: hdmi - Keep old slot assignment behavior for Intel
    platforms

 sound/pci/hda/hda_jack.c   | 151 ++++++++++-----
 sound/pci/hda/hda_jack.h   | 107 +++++++++--
 sound/pci/hda/patch_hdmi.c | 384 ++++++++++++++++++++++++-------------
 3 files changed, 455 insertions(+), 187 deletions(-)

Comments

Stefan Bader Aug. 12, 2020, 7:39 a.m. UTC | #1
On 12.08.20 07:58, Hui Wang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1867704
> 
> This patchset will introduce a big change on hda_jack and hda_hdmi,
> So I sent the patcheset to oem-b 4 months ago. After 4 months of running
> oem-b kernel, there is no any regression reported on this patchset,
> now I am backporting the patchset to our focal kernel since our oem
> project is waiting for the patchset to be landed to ubuntu 5.4 kernel
> ASAP.
> 
> This patchset are already merged to mainline kernel 5.5-rc and 5.6-rc,
> so there is no need to send the patchset to oem-5.6 or groovy kernel.
> 
> [Impact]
> On some LENOVO I+N machines, when setting the graphic mode to discrete,
> The dp/hdmi audio on the Docking Gen2 can't work with this machine +
> LENOVO Docking Gen2, users can't find the hdmi audio entry in the
> gnome-sound-setting.
> 
> [Fix]
> Nvidia developer submit the mst audio support to 5.5-rcN and 5.6-RC1,
> those patches could fix this issue.
> 
> [Test Case]
> set the machien to discrete, plug the dock gen2 to it, then boot, after
> booting, plug hdmi or dp to dock gen2, the hdmi or dp audio works.
> 
> test other machines without Nvidia graphic or without gen2, their hdmi/dp
> audio still work, and check other output/input devices like headphone,
> microphone, they all worked as well as before.
> 
> 
> [Regression Risk]
> one regression possibility is the audio jacks (including analogue and hdmi)
> can't work anymore, that means after users plug a headphone, headset, hdmi
> monitor or microphone to the audio jacks or hdmi connectors, the audio
> driver can't detect the plugging event.
> 
> But regression's possibility is very low:
>  - this patchset was already applied to oem-b kernel for 4 months, and
>    oem projects didn't report any regression on the patchset
>  - I tested the testing focal kernel with this patchset on many machines,
>    includes a dell hda audio machine, a dell dmic  machine, a Lenovo I+N
>    hda audio machine, a lenovo I+N dmic machine, a lenovo I hda audio
>    machine, a lenovo amd hda audio machine. The audio on them all worked
>    as well as before.
> 
> 
> Kai Vehmanen (3):
>   ALSA: hda: hdmi - fix regression in connect list handling
>   ALSA: hda: hdmi - fix kernel oops caused by invalid PCM idx
>   ALSA: hda: hdmi - preserve non-MST PCM routing for Intel platforms
> 
> Nikhil Mahale (5):
>   ALSA: hda - Rename snd_hda_pin_sense to snd_hda_jack_pin_sense
>   ALSA: hda - Add DP-MST jack support
>   ALSA: hda - Add DP-MST support for non-acomp codecs
>   ALSA: hda - Add DP-MST support for NVIDIA codecs
>   ALSA: hda - Fix DP-MST support for NVIDIA codecs
> 
> Takashi Iwai (1):
>   ALSA: hda: hdmi - Keep old slot assignment behavior for Intel
>     platforms
> 
>  sound/pci/hda/hda_jack.c   | 151 ++++++++++-----
>  sound/pci/hda/hda_jack.h   | 107 +++++++++--
>  sound/pci/hda/patch_hdmi.c | 384 ++++++++++++++++++++++++-------------
>  3 files changed, 455 insertions(+), 187 deletions(-)
> 
Seems like at least some wider range testing has happened. Just double checking,
when I am looking for DP-MST in the upstream kernel, there is one following your
patchset:

Commit db8454023b7f9ca6d341cc83ce033a1f0e33d9c3
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Feb 6 17:28:02 2020 +0100

    ALSA: hda/hdmi: Don't use standard hda_jack for generic HDMI jacks

    The current HDMI codec driver code manages the jack detection in two
    different ways: for Intel codecs with audio component, the driver
    creates snd_jack objects by itself while the standard hda_jack stuff
    is used for the rest.  This was basically because the audio component
    doesn't need the pin sense reading and the unsol event handling, hence
    it just needs to report the corresponding jacks directly.

    It was a bit messy but not too messy until the driver got DP-MST
    support for Nvidia that re-uses the part of dyn_pcm_assign feature
    while keeping the pin sense and the unsol event handling.  Now, for
    DP-MST, we use hda_jack for pin sensing and unsol events but use the
    own snd_jack objects.  Meanwhile for non-DP-MST, hda_jack is used for
    pin sense and unsol events, and the jacks are bound on hda_jack.

    Moreover, there is a polling mode support where the unsol event isn't
    used.  For those, we also have special handling.

Could that be something that might be an issue?

-Stefan
Hui Wang Aug. 13, 2020, 2:11 a.m. UTC | #2
On 2020/8/12 下午3:39, Stefan Bader wrote:
> On 12.08.20 07:58, Hui Wang wrote:
>> BugLink: https://bugs.launchpad.net/bugs/1867704
>>
>> This patchset will introduce a big change on hda_jack and hda_hdmi,
>> So I sent the patcheset to oem-b 4 months ago. After 4 months of running
>> oem-b kernel, there is no any regression reported on this patchset,
>> now I am backporting the patchset to our focal kernel since our oem
>> project is waiting for the patchset to be landed to ubuntu 5.4 kernel
>> ASAP.
>>
>> This patchset are already merged to mainline kernel 5.5-rc and 5.6-rc,
>> so there is no need to send the patchset to oem-5.6 or groovy kernel.
>>
>> [Impact]
>> On some LENOVO I+N machines, when setting the graphic mode to discrete,
>> The dp/hdmi audio on the Docking Gen2 can't work with this machine +
>> LENOVO Docking Gen2, users can't find the hdmi audio entry in the
>> gnome-sound-setting.
>>
>> [Fix]
>> Nvidia developer submit the mst audio support to 5.5-rcN and 5.6-RC1,
>> those patches could fix this issue.
>>
>> [Test Case]
>> set the machien to discrete, plug the dock gen2 to it, then boot, after
>> booting, plug hdmi or dp to dock gen2, the hdmi or dp audio works.
>>
>> test other machines without Nvidia graphic or without gen2, their hdmi/dp
>> audio still work, and check other output/input devices like headphone,
>> microphone, they all worked as well as before.
>>
>>
>> [Regression Risk]
>> one regression possibility is the audio jacks (including analogue and hdmi)
>> can't work anymore, that means after users plug a headphone, headset, hdmi
>> monitor or microphone to the audio jacks or hdmi connectors, the audio
>> driver can't detect the plugging event.
>>
>> But regression's possibility is very low:
>>   - this patchset was already applied to oem-b kernel for 4 months, and
>>     oem projects didn't report any regression on the patchset
>>   - I tested the testing focal kernel with this patchset on many machines,
>>     includes a dell hda audio machine, a dell dmic  machine, a Lenovo I+N
>>     hda audio machine, a lenovo I+N dmic machine, a lenovo I hda audio
>>     machine, a lenovo amd hda audio machine. The audio on them all worked
>>     as well as before.
>>
>>
>> Kai Vehmanen (3):
>>    ALSA: hda: hdmi - fix regression in connect list handling
>>    ALSA: hda: hdmi - fix kernel oops caused by invalid PCM idx
>>    ALSA: hda: hdmi - preserve non-MST PCM routing for Intel platforms
>>
>> Nikhil Mahale (5):
>>    ALSA: hda - Rename snd_hda_pin_sense to snd_hda_jack_pin_sense
>>    ALSA: hda - Add DP-MST jack support
>>    ALSA: hda - Add DP-MST support for non-acomp codecs
>>    ALSA: hda - Add DP-MST support for NVIDIA codecs
>>    ALSA: hda - Fix DP-MST support for NVIDIA codecs
>>
>> Takashi Iwai (1):
>>    ALSA: hda: hdmi - Keep old slot assignment behavior for Intel
>>      platforms
>>
>>   sound/pci/hda/hda_jack.c   | 151 ++++++++++-----
>>   sound/pci/hda/hda_jack.h   | 107 +++++++++--
>>   sound/pci/hda/patch_hdmi.c | 384 ++++++++++++++++++++++++-------------
>>   3 files changed, 455 insertions(+), 187 deletions(-)
>>
> Seems like at least some wider range testing has happened. Just double checking,
> when I am looking for DP-MST in the upstream kernel, there is one following your
> patchset:
>
> Commit db8454023b7f9ca6d341cc83ce033a1f0e33d9c3
> Author: Takashi Iwai <tiwai@suse.de>
> Date:   Thu Feb 6 17:28:02 2020 +0100
>
>      ALSA: hda/hdmi: Don't use standard hda_jack for generic HDMI jacks
>
>      The current HDMI codec driver code manages the jack detection in two
>      different ways: for Intel codecs with audio component, the driver
>      creates snd_jack objects by itself while the standard hda_jack stuff
>      is used for the rest.  This was basically because the audio component
>      doesn't need the pin sense reading and the unsol event handling, hence
>      it just needs to report the corresponding jacks directly.
>
>      It was a bit messy but not too messy until the driver got DP-MST
>      support for Nvidia that re-uses the part of dyn_pcm_assign feature
>      while keeping the pin sense and the unsol event handling.  Now, for
>      DP-MST, we use hda_jack for pin sensing and unsol events but use the
>      own snd_jack objects.  Meanwhile for non-DP-MST, hda_jack is used for
>      pin sense and unsol events, and the jacks are bound on hda_jack.
>
>      Moreover, there is a polling mode support where the unsol event isn't
>      used.  For those, we also have special handling.
>
> Could that be something that might be an issue?

This is not an issue, the patch is not for fixing an existing bug,  it 
is just unifying the the snd_jack usage through the patch_hdmi.c, and it 
is not only for nvidia dp-mst, it is for all hdmi codecs (mst or no-mst; 
component or non-component), this patch is more like a cleanup or sth 
similar to it.

Without this patch, the patch_hdmi still works.

Thanks,

Hui.


>
> -Stefan
>
>
Stefan Bader Aug. 14, 2020, 10:09 a.m. UTC | #3
On 12.08.20 07:58, Hui Wang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1867704
> 
> This patchset will introduce a big change on hda_jack and hda_hdmi,
> So I sent the patcheset to oem-b 4 months ago. After 4 months of running
> oem-b kernel, there is no any regression reported on this patchset,
> now I am backporting the patchset to our focal kernel since our oem
> project is waiting for the patchset to be landed to ubuntu 5.4 kernel
> ASAP.
> 
> This patchset are already merged to mainline kernel 5.5-rc and 5.6-rc,
> so there is no need to send the patchset to oem-5.6 or groovy kernel.
> 
> [Impact]
> On some LENOVO I+N machines, when setting the graphic mode to discrete,
> The dp/hdmi audio on the Docking Gen2 can't work with this machine +
> LENOVO Docking Gen2, users can't find the hdmi audio entry in the
> gnome-sound-setting.
> 
> [Fix]
> Nvidia developer submit the mst audio support to 5.5-rcN and 5.6-RC1,
> those patches could fix this issue.
> 
> [Test Case]
> set the machien to discrete, plug the dock gen2 to it, then boot, after
> booting, plug hdmi or dp to dock gen2, the hdmi or dp audio works.
> 
> test other machines without Nvidia graphic or without gen2, their hdmi/dp
> audio still work, and check other output/input devices like headphone,
> microphone, they all worked as well as before.
> 
> 
> [Regression Risk]
> one regression possibility is the audio jacks (including analogue and hdmi)
> can't work anymore, that means after users plug a headphone, headset, hdmi
> monitor or microphone to the audio jacks or hdmi connectors, the audio
> driver can't detect the plugging event.
> 
> But regression's possibility is very low:
>  - this patchset was already applied to oem-b kernel for 4 months, and
>    oem projects didn't report any regression on the patchset
>  - I tested the testing focal kernel with this patchset on many machines,
>    includes a dell hda audio machine, a dell dmic  machine, a Lenovo I+N
>    hda audio machine, a lenovo I+N dmic machine, a lenovo I hda audio
>    machine, a lenovo amd hda audio machine. The audio on them all worked
>    as well as before.
> 
> 
> Kai Vehmanen (3):
>   ALSA: hda: hdmi - fix regression in connect list handling
>   ALSA: hda: hdmi - fix kernel oops caused by invalid PCM idx
>   ALSA: hda: hdmi - preserve non-MST PCM routing for Intel platforms
> 
> Nikhil Mahale (5):
>   ALSA: hda - Rename snd_hda_pin_sense to snd_hda_jack_pin_sense
>   ALSA: hda - Add DP-MST jack support
>   ALSA: hda - Add DP-MST support for non-acomp codecs
>   ALSA: hda - Add DP-MST support for NVIDIA codecs
>   ALSA: hda - Fix DP-MST support for NVIDIA codecs
> 
> Takashi Iwai (1):
>   ALSA: hda: hdmi - Keep old slot assignment behavior for Intel
>     platforms
> 
>  sound/pci/hda/hda_jack.c   | 151 ++++++++++-----
>  sound/pci/hda/hda_jack.h   | 107 +++++++++--
>  sound/pci/hda/patch_hdmi.c | 384 ++++++++++++++++++++++++-------------
>  3 files changed, 455 insertions(+), 187 deletions(-)
> 
Acked-by: Stefan Bader <stefan.bader@canonical.com>
AceLan Kao Aug. 21, 2020, 6:26 a.m. UTC | #4
Those commits stay in OEM-B since 4.15.0-1077.87 this March, should be stable enough.

Acked-By: AceLan Kao <acelan.kao@canonical.com>
Kelsey Skunberg Aug. 28, 2020, 4:20 a.m. UTC | #5
Applied to focal master-next. thank you! 

-Kelsey

On 2020-08-12 13:58:13 , Hui Wang wrote:
> BugLink: https://bugs.launchpad.net/bugs/1867704
> 
> This patchset will introduce a big change on hda_jack and hda_hdmi,
> So I sent the patcheset to oem-b 4 months ago. After 4 months of running
> oem-b kernel, there is no any regression reported on this patchset,
> now I am backporting the patchset to our focal kernel since our oem
> project is waiting for the patchset to be landed to ubuntu 5.4 kernel
> ASAP.
> 
> This patchset are already merged to mainline kernel 5.5-rc and 5.6-rc,
> so there is no need to send the patchset to oem-5.6 or groovy kernel.
> 
> [Impact]
> On some LENOVO I+N machines, when setting the graphic mode to discrete,
> The dp/hdmi audio on the Docking Gen2 can't work with this machine +
> LENOVO Docking Gen2, users can't find the hdmi audio entry in the
> gnome-sound-setting.
> 
> [Fix]
> Nvidia developer submit the mst audio support to 5.5-rcN and 5.6-RC1,
> those patches could fix this issue.
> 
> [Test Case]
> set the machien to discrete, plug the dock gen2 to it, then boot, after
> booting, plug hdmi or dp to dock gen2, the hdmi or dp audio works.
> 
> test other machines without Nvidia graphic or without gen2, their hdmi/dp
> audio still work, and check other output/input devices like headphone,
> microphone, they all worked as well as before.
> 
> 
> [Regression Risk]
> one regression possibility is the audio jacks (including analogue and hdmi)
> can't work anymore, that means after users plug a headphone, headset, hdmi
> monitor or microphone to the audio jacks or hdmi connectors, the audio
> driver can't detect the plugging event.
> 
> But regression's possibility is very low:
>  - this patchset was already applied to oem-b kernel for 4 months, and
>    oem projects didn't report any regression on the patchset
>  - I tested the testing focal kernel with this patchset on many machines,
>    includes a dell hda audio machine, a dell dmic  machine, a Lenovo I+N
>    hda audio machine, a lenovo I+N dmic machine, a lenovo I hda audio
>    machine, a lenovo amd hda audio machine. The audio on them all worked
>    as well as before.
> 
> 
> Kai Vehmanen (3):
>   ALSA: hda: hdmi - fix regression in connect list handling
>   ALSA: hda: hdmi - fix kernel oops caused by invalid PCM idx
>   ALSA: hda: hdmi - preserve non-MST PCM routing for Intel platforms
> 
> Nikhil Mahale (5):
>   ALSA: hda - Rename snd_hda_pin_sense to snd_hda_jack_pin_sense
>   ALSA: hda - Add DP-MST jack support
>   ALSA: hda - Add DP-MST support for non-acomp codecs
>   ALSA: hda - Add DP-MST support for NVIDIA codecs
>   ALSA: hda - Fix DP-MST support for NVIDIA codecs
> 
> Takashi Iwai (1):
>   ALSA: hda: hdmi - Keep old slot assignment behavior for Intel
>     platforms
> 
>  sound/pci/hda/hda_jack.c   | 151 ++++++++++-----
>  sound/pci/hda/hda_jack.h   | 107 +++++++++--
>  sound/pci/hda/patch_hdmi.c | 384 ++++++++++++++++++++++++-------------
>  3 files changed, 455 insertions(+), 187 deletions(-)
> 
> -- 
> 2.17.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team