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) | ||||
| 		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) | ||||
| 		vga_switcheroo_init_domain_pm_ops(rdev->dev, &rdev->vga_pm_domain); | ||||
| 
 | ||||
| @ -1564,6 +1566,7 @@ void radeon_device_fini(struct radeon_device *rdev) | ||||
| 	/* evict vram memory */ | ||||
| 	radeon_bo_evict_vram(rdev); | ||||
| 	radeon_fini(rdev); | ||||
| 	if (!pci_is_thunderbolt_attached(rdev->pdev)) | ||||
| 		vga_switcheroo_unregister_client(rdev->pdev); | ||||
| 	if (rdev->flags & RADEON_IS_PX) | ||||
| 		vga_switcheroo_fini_domain_pm_ops(rdev->dev); | ||||
|  | ||||
| @ -115,7 +115,8 @@ int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags) | ||||
| 
 | ||||
| 	if ((radeon_runtime_pm != 0) && | ||||
| 	    radeon_has_atpx() && | ||||
| 	    ((flags & RADEON_IS_IGP) == 0)) | ||||
| 	    ((flags & RADEON_IS_IGP) == 0) && | ||||
| 	    !pci_is_thunderbolt_attached(rdev->pdev)) | ||||
| 		flags |= RADEON_IS_PX; | ||||
| 
 | ||||
| 	/* radeon_device_init should report only fatal error
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user