Re: [PATCH v3 3/3] ALSA: hda: Disabled unused audio controller for Dell platforms with Switchable Graphics

Pali Rohár
2018-04-17T07:53:04Z

On Tuesday 17 April 2018 04:38:29 Lukas Wunner wrote:
> On Mon, Apr 16, 2018 at 04:25:12PM +0200, Pali Rohár wrote:
> > On Sunday 15 April 2018 21:05:23 Lukas Wunner wrote:
> > > On Sun, Apr 15, 2018 at 07:17:46PM +0200, Pali Rohár wrote:
> > > > On Saturday 14 April 2018 13:17:11 Lukas Wunner wrote:
> > > > > On Sat, Apr 14, 2018 at 12:49:50PM +0200, Pali Rohár wrote:
> > > > > > On Saturday 14 April 2018 12:45:12 Lukas Wunner wrote:
> > > > > > > On Thu, Apr 12, 2018 at 10:15:41PM +0800, Kai-Heng Feng wrote:
> > > > > > > > Do you have any suggestion to check if it connects to the system via
> > > > > > > > Thunderbolt?
> > > > > > >
> > > > > > > Just use pci_is_thunderbolt_attached(), introduced by 8531e283bee6,
> > > > > > > like this:
> > > > > > >
> > > > > > > if (check_dell_switchable_gfx(pci) && !pci_is_thunderbolt_attached(pci))
> > > > > >
> > > > > > And what about PCI-e device attached to ExpressCard slot?
> > > > >
> > > > > I don't know of a bullet-proof way to recognize those.
> > > >
> > > > Hm... maybe another idea: Is it possible to detect which audio pci
> > > > device belongs to graphics card via vga_switcheroo? Currently, looking
> > > > at output it is same PCI device as graphic card, just different PCI
> > > > function.
> > >
> > > No, the DRM drivers don't filter ExpressCard-attached GPUs when
> > > registering with vga_switcheroo.
> >
> > > They do filter Thunderbolt-attached GPUs.
> >
> > So check via vga_switcheroo should at least work for Thunderbolt GPUs.
> >
> > I do not know if it is possible, but for me it looks like that check via
> > vga_switcheroo should be better then adding another heuristic to other
> > drivers.
>
> It is way simpler and more straightforward if hda_intel.c calls
> pci_is_thunderbolt_attached() directly, as I've suggested above.
>
> The DRM drivers call that as well and register with vga_switcheroo
> only if it returns false. So if hda_intel.c asked vga_switcheroo
> and got back a negative answer, it would never know whether it's
> because the DRM driver hasn't finished probing yet, or it's module
> is blacklisted, or whatever.

Ok, module blacklisting can be a problem.

>
> > And once we would have good/reliable check for EC devices we can add it
> > into vga_switcheroo and all users of it could benefit. Anyway, I think
> > that vga_switcheroo should filter also EC GPU cards if it already
> > filters Thunderbolt.
>
> vga_switcheroo doesn't do the filtering, the DRM drivers themselves
> decice whether to register with vga_switcheroo or not. The motivation
> is to avoid middle layers and instead provide the DRM drivers with
> a library of helpers that they may call at their own discretion.

Understood. Driver itself can also do more work, e.g. ask ACPI or do
some other check to decide whatever to register to vga_switcheroo or
not.

But probably, hda_intel should have same logic for disabling device like
gpu drivers for detection if they are going to register into
vga_switcheroo or not.

Right now this seems to be really complicated and suggested solution
with pci_is_thunderbolt_attached() looks to be really simple and better
for now.

> See this blog post and the links therein for background info:
> http://blog.ffwll.ch/2016/12/midlayers-once-more-with-feeling.html
>
> Thanks,
>
> Lukas

--
Pali Rohár
pali.rohar@gmail.com