From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukas Wunner Subject: [PATCH 0/5] Thunderbolt GPU fixes Date: Fri, 24 Feb 2017 20:19:45 +0100 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Michael Jamet , linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, platform-driver-x86-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Alex Deucher , Ben Skeggs , nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Bjorn Helgaas , Darren Hart , Mika Westerberg , Christian Koenig , Andy Shevchenko List-Id: amd-gfx.lists.freedesktop.org Rml4IFRodW5kZXJib2x0LXJlbGF0ZWQgaXNzdWVzIGluIGFwcGxlLWdtdXggYW5kIHZnYV9zd2l0 Y2hlcm9vOgoKUGF0Y2ggWzEvNV0gKCJSZWNvZ25pemUgVGh1bmRlcmJvbHQgZGV2aWNlcyIpIGhh cyBhbHJlYWR5IGJlZW4gc3ViamVjdGVkCnRvIGEgZmFpciBhbW91bnQgb2Ygc2NydXRpbnkgb3Zl ciBhdCBsaW51eC1wY2lALCBJJ3ZlIHN1Ym1pdHRlZCBpdCA1IHRpbWVzCnRvdGFsIHNpbmNlIE1h eSAyMDE2LiAgV2l0aCBsdWNrIGl0IG1heSBiZSBpbiBhY2stYWJsZSBzaGFwZSBub3cuCgpQYXRj aCBbMi81XSBhbWVuZHMgYXBwbGUtZ211eCB0byBoYW5kbGUgY29tYmluZWQgRFAvVGh1bmRlcmJv bHQgcG9ydHMKcHJvcGVybHkgb24gbmV3ZXIgTWFjQm9vayBQcm9zLgoKUGF0Y2hlcyBbMy81XSB0 byBbNS81XSBhdm9pZCByZWdpc3RlcmluZyBleHRlcm5hbCBUaHVuZGVyYm9sdCBHUFVzIHdpdGgK dmdhX3N3aXRjaGVyb286ICBEYXZlIEFpcmxpZSBkZXNpZ25lZCB2Z2Ffc3dpdGNoZXJvbyB0byBy ZWdpc3RlciBHUFVzCnVuY29uZGl0aW9uYWxseS4gIFNvIGlmIGEgZGVza3RvcCBib3ggaGFzIG11 bHRpcGxlIEdQVXMsIHZnYV9zd2l0Y2hlcm9vCndpbGwgc2VlIG1vcmUgdGhhbiBvbmUgZGlzY3Jl dGUgR1BVIGJ1dCB0aGF0J3Mgbm90IGEgcHJvYmxlbSBiZWNhdXNlIG9uCmRlc2t0b3AgYm94ZXMg bm8gaGFuZGxlciBpcyByZWdpc3RlcmVkIGFuZCB0aHVzIHZnYV9zd2l0Y2hlcm9vX2VuYWJsZSgp CmlzIG5ldmVyIGNhbGxlZC4gIEh5YnJpZCBncmFwaGljcyBsYXB0b3BzIG9uIHRoZSBvdGhlciBo YW5kIGRvIHJlZ2lzdGVyCmEgaGFuZGxlciwgYnV0IGFyZSBhc3N1bWVkIHRvIG5ldmVyIHJlZ2lz dGVyIG1vcmUgdGhhbiBvbmUgZGlzY3JldGUgR1BVLgpIb3dldmVyIG9uY2UgYSBUaHVuZGVyYm9s dCBlR1BVIGlzIGF0dGFjaGVkIHRvIGEgaHlicmlkIGdyYXBoaWNzIGxhcHRvcCwKdGhhdCBhc3N1 bXB0aW9uIGlzIG5vIGxvbmdlciB0cnVlIGFuZCB0aGluZ3MgZ28gc291dGggd2hlbiB2Z2Ffc3dp dGNoZXJvbwpydW50aW1lIHN1c3BlbmRzIHRoZSBleHRlcm5hbCBkaXNjcmV0ZSBHUFUgYW5kIHRo ZW4gY2FsbHMgdGhlIGhhbmRsZXIgdG8KY3V0IHBvd2VyIHRvIHRoZSBpbnRlcm5hbCBkaXNjcmV0 ZSBHUFUuICBUaGUgZHJpdmVyIGZvciB0aGUgaW50ZXJuYWwgR1BVCndpbGwgc2l0IHRoZXJlIHB1 enpsZWQgYW5kIHR5cGljYWxseSBjYXVzZSBhIGxvY2t1cC4KClRoaXMgc2VyaWVzIGlzIGp1c3Qg YSBmaXJzdCBzdGVwIHRvd2FyZHMgcHJvcGVyIGhhbmRsaW5nIG9mIGVHUFVzLCBhbm90aGVyCndp bGwgYmUgc3VwcG9ydCBmb3Igc3VycHJpc2UgcmVtb3ZhbDogIERSTSBkcml2ZXJzIG5lZWQgdG8g Y2Vhc2UgTU1JTyBhbmQKUENJIGNvbmZpZyBzcGFjZSBhY2Nlc3Mgb25jZSBhIGRldmljZSBpcyBn b25lIHRvIGF2b2lkIGRlbGF5aW5nIGRldmljZQp0ZWFyZG93biBvciBhY2Nlc3NpbmcgYSBuZXds eSBhdHRhY2hlZCByZXBsYWNlbWVudCBkZXZpY2UuICBBbHNvLCBNTUlPCnJlYWRzIHRvIHJlbW92 ZWQgZGV2aWNlcyByZXR1cm4gImFsbCBvbmVzIiwgd2hpY2ggcmVzdWx0cyBpbiBhbiBpbmZpbml0 ZQpsb29wIGUuZy4gaW4gbm91dmVhdSdzIG52a21fbnNlYygpLgoKVGhlIHF1ZXN0aW9uIGlzIGhv dyB0byByZWNvZ25pemUgZGV2aWNlIHJlbW92YWwuICBPbmUgY29tbW9uIG1ldGhvZCBpcyB0bwpy ZWFkIHRoZSB2ZW5kb3IgcmVnaXN0ZXIgd2l0aCBwY2lfZGV2aWNlX2lzX3ByZXNlbnQoKSwgYnV0 IHRoaXMgcmVwb3J0cwphIGZhbHNlIHBvc2l0aXZlIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBi dXQgaW4gRDNjb2xkLiAgQSBiZXR0ZXIgbWV0aG9kCmlzIHRvIGxldCB0aGUgUENJZSBob3RwbHVn IGRyaXZlciByZWNvZ25pemUgYW5kIGNhY2hlIGRldmljZSByZW1vdmFsLgpLZWl0aCBCdXNjaCBo YXMgZGV2ZWxvcGVkIHBhdGNoZXMgd2hpY2ggZG8gZXhhY3RseSB0aGF0LCB0aGV5J3JlIG5vdyBh dAp2NiBhbmQgZnVsbHkgcmV2aWV3ZWQgYnkgQ2hyaXN0b3BoIEhlbGx3aWcgYnV0IGFsYXMgd2Vy ZSBub3QgaW5jbHVkZWQgaW4KdGhlIDQuMTEgUENJIHB1bGwgZm9yIHNvbWUgcmVhc29uOgpodHRw Oi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LXBjaS9tc2c1ODEyMy5odG1sCgpJJ3ZlIHB1 c2hlZCB0aGUgcHJlc2VudCBzZXJpZXMgdG8gR2l0SHViIGluIGNhc2UgYW55b25lIHByZWZlcnMg cmV2aWV3aW5nCml0IGluIGEgR1VJOgpodHRwczovL2dpdGh1Yi5jb20vbDFrL2xpbnV4L2NvbW1p dHMvdGh1bmRlcmJvbHRfZ3B1X3YxCgpUaGFua3MsCgpMdWthcwoKCkx1a2FzIFd1bm5lciAoNSk6 CiAgUENJOiBSZWNvZ25pemUgVGh1bmRlcmJvbHQgZGV2aWNlcwogIGFwcGxlLWdtdXg6IERvbid0 IHN3aXRjaCBleHRlcm5hbCBEUCBwb3J0IG9uIDIwMTErIE1hY0Jvb2sgUHJvcwogIGRybS9ub3V2 ZWF1OiBEb24ndCByZWdpc3RlciBUaHVuZGVyYm9sdCBlR1BVIHdpdGggdmdhX3N3aXRjaGVyb28K ICBkcm0vcmFkZW9uOiBEb24ndCByZWdpc3RlciBUaHVuZGVyYm9sdCBlR1BVIHdpdGggdmdhX3N3 aXRjaGVyb28KICBkcm0vYW1kZ3B1OiBEb24ndCByZWdpc3RlciBUaHVuZGVyYm9sdCBlR1BVIHdp dGggdmdhX3N3aXRjaGVyb28KCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2 aWNlLmMgfCAgNyArKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21z LmMgICAgfCAgMyArKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfdmdhLmMgICAg ICB8IDEwICsrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2RldmljZS5j ICAgICB8ICA3ICsrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ttcy5jICAg ICAgICB8ICAzICsrLQogZHJpdmVycy9wY2kvcGNpLmggICAgICAgICAgICAgICAgICAgICAgICAg IHwgIDIgKysKIGRyaXZlcnMvcGNpL3Byb2JlLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDIx ICsrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL3BsYXRmb3JtL3g4Ni9hcHBsZS1nbXV4LmMg ICAgICAgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvbGlu dXgvcGNpLmggICAgICAgICAgICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysr KysKIDkgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCi0t IAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Ck5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout1.hostsharing.net ([83.223.95.204]:42999 "EHLO mailout1.hostsharing.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750995AbdBXTT2 (ORCPT ); Fri, 24 Feb 2017 14:19:28 -0500 Message-Id: From: Lukas Wunner Date: Fri, 24 Feb 2017 20:19:45 +0100 Subject: [PATCH 0/5] Thunderbolt GPU fixes To: dri-devel@lists.freedesktop.org Cc: Bjorn Helgaas , Michael Jamet , Mika Westerberg , linux-pci@vger.kernel.org, Darren Hart , Andy Shevchenko , platform-driver-x86@vger.kernel.org, Ben Skeggs , nouveau@lists.freedesktop.org, Alex Deucher , Christian Koenig , amd-gfx@lists.freedesktop.org, Peter Wu Sender: linux-pci-owner@vger.kernel.org List-ID: 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 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