drm/radeon: Don't register Thunderbolt eGPU with vga_switcheroo
An external Thunderbolt GPU can neither drive the laptop's panel nor be powered off by the platform, so there's no point in registering it with vga_switcheroo. In fact, when the external GPU is runtime suspended, vga_switcheroo will cut power to the internal discrete GPU, resulting in a lockup. Moreover AMD's Windows driver special-cases Thunderbolt as well. Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Lukas Wunner <lukas@wunner.de> Link: http://patchwork.freedesktop.org/patch/msgid/72d8a9645aece3eff44e116303f0fec8be061c88.1489145162.git.lukas@wunner.de
This commit is contained in:
parent
8531e283be
commit
7ffb0ce31c
@ -1471,7 +1471,9 @@ int radeon_device_init(struct radeon_device *rdev,
|
|||||||
|
|
||||||
if (rdev->flags & RADEON_IS_PX)
|
if (rdev->flags & RADEON_IS_PX)
|
||||||
runtime = true;
|
runtime = true;
|
||||||
vga_switcheroo_register_client(rdev->pdev, &radeon_switcheroo_ops, runtime);
|
if (!pci_is_thunderbolt_attached(rdev->pdev))
|
||||||
|
vga_switcheroo_register_client(rdev->pdev,
|
||||||
|
&radeon_switcheroo_ops, runtime);
|
||||||
if (runtime)
|
if (runtime)
|
||||||
vga_switcheroo_init_domain_pm_ops(rdev->dev, &rdev->vga_pm_domain);
|
vga_switcheroo_init_domain_pm_ops(rdev->dev, &rdev->vga_pm_domain);
|
||||||
|
|
||||||
@ -1564,7 +1566,8 @@ void radeon_device_fini(struct radeon_device *rdev)
|
|||||||
/* evict vram memory */
|
/* evict vram memory */
|
||||||
radeon_bo_evict_vram(rdev);
|
radeon_bo_evict_vram(rdev);
|
||||||
radeon_fini(rdev);
|
radeon_fini(rdev);
|
||||||
vga_switcheroo_unregister_client(rdev->pdev);
|
if (!pci_is_thunderbolt_attached(rdev->pdev))
|
||||||
|
vga_switcheroo_unregister_client(rdev->pdev);
|
||||||
if (rdev->flags & RADEON_IS_PX)
|
if (rdev->flags & RADEON_IS_PX)
|
||||||
vga_switcheroo_fini_domain_pm_ops(rdev->dev);
|
vga_switcheroo_fini_domain_pm_ops(rdev->dev);
|
||||||
vga_client_register(rdev->pdev, NULL, NULL, NULL);
|
vga_client_register(rdev->pdev, NULL, NULL, NULL);
|
||||||
|
@ -115,7 +115,8 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags)
|
|||||||
|
|
||||||
if ((radeon_runtime_pm != 0) &&
|
if ((radeon_runtime_pm != 0) &&
|
||||||
radeon_has_atpx() &&
|
radeon_has_atpx() &&
|
||||||
((flags & RADEON_IS_IGP) == 0))
|
((flags & RADEON_IS_IGP) == 0) &&
|
||||||
|
!pci_is_thunderbolt_attached(rdev->pdev))
|
||||||
flags |= RADEON_IS_PX;
|
flags |= RADEON_IS_PX;
|
||||||
|
|
||||||
/* radeon_device_init should report only fatal error
|
/* radeon_device_init should report only fatal error
|
||||||
|
Loading…
x
Reference in New Issue
Block a user