[PATCH 0/5] Thunderbolt GPU fixes
Daniel Vetter
daniel at ffwll.ch
Thu Mar 9 15:03:47 UTC 2017
On Fri, Feb 24, 2017 at 08:19:45PM +0100, Lukas Wunner wrote:
> Fix Thunderbolt-related issues in apple-gmux and vga_switcheroo:
>
> Patch [1/5] ("Recognize Thunderbolt devices") has already been subjected
> to a fair amount of scrutiny over at linux-pci@, I've submitted it 5 times
> total since May 2016. With luck it may be in ack-able shape now.
>
> Patch [2/5] amends apple-gmux to handle combined DP/Thunderbolt ports
> properly on newer MacBook Pros.
>
> Patches [3/5] to [5/5] avoid registering external Thunderbolt GPUs with
> vga_switcheroo: Dave Airlie designed vga_switcheroo to register GPUs
> unconditionally. So if a desktop box has multiple GPUs, vga_switcheroo
> will see more than one discrete GPU but that's not a problem because on
> desktop boxes no handler is registered and thus vga_switcheroo_enable()
> is never called. Hybrid graphics laptops on the other hand do register
> a handler, but are assumed to never register more than one discrete GPU.
> However once a Thunderbolt eGPU is attached to a hybrid graphics laptop,
> that assumption is no longer true and things go south when vga_switcheroo
> runtime suspends the external discrete GPU and then calls the handler to
> cut power to the internal discrete GPU. The driver for the internal GPU
> will sit there puzzled and typically cause a lockup.
>
> This series is just a first step towards proper handling of eGPUs, another
> will be support for surprise removal: DRM drivers need to cease MMIO and
> PCI config space access once a device is gone to avoid delaying device
> teardown or accessing a newly attached replacement device. Also, MMIO
> reads to removed devices return "all ones", which results in an infinite
> loop e.g. in nouveau's nvkm_nsec().
>
> The question is how to recognize device removal. One common method is to
> read the vendor register with pci_device_is_present(), but this reports
> a false positive if the device is present but in D3cold. A better method
> is to let the PCIe hotplug driver recognize and cache device removal.
> Keith Busch has developed patches which do exactly that, they're now at
> v6 and fully reviewed by Christoph Hellwig but alas were not included in
> the 4.11 PCI pull for some reason:
> http://www.spinics.net/lists/linux-pci/msg58123.html
>
> I've pushed the present series to GitHub in case anyone prefers reviewing
> it in a GUI:
> https://github.com/l1k/linux/commits/thunderbolt_gpu_v1
For merging, should I smash this all into drm-misc? The only thing outside
is the apple-gmux driver ...
-Daniel
>
> Thanks,
>
> Lukas
>
>
> Lukas Wunner (5):
> PCI: Recognize Thunderbolt devices
> apple-gmux: Don't switch external DP port on 2011+ MacBook Pros
> drm/nouveau: Don't register Thunderbolt eGPU with vga_switcheroo
> drm/radeon: Don't register Thunderbolt eGPU with vga_switcheroo
> drm/amdgpu: Don't register Thunderbolt eGPU with vga_switcheroo
>
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 +++++--
> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 3 ++-
> drivers/gpu/drm/nouveau/nouveau_vga.c | 10 +++++++++-
> drivers/gpu/drm/radeon/radeon_device.c | 7 +++++--
> drivers/gpu/drm/radeon/radeon_kms.c | 3 ++-
> drivers/pci/pci.h | 2 ++
> drivers/pci/probe.c | 21 ++++++++++++++++++++
> drivers/platform/x86/apple-gmux.c | 31 +++++++++++++++++++++++++++++-
> include/linux/pci.h | 23 ++++++++++++++++++++++
> 9 files changed, 99 insertions(+), 8 deletions(-)
>
> --
> 2.11.0
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the amd-gfx
mailing list