AMD General

Reviewed-by: Kenneth Feng <[email protected]>


-----Original Message-----
From: Wang, Yang(Kevin) <[email protected]>
Sent: Wednesday, August 12, 2026 11:48 AM
To: [email protected]
Cc: Deucher, Alexander <[email protected]>; Zhang, Hawking 
<[email protected]>; Feng, Kenneth <[email protected]>
Subject: [PATCH] drm/amdgpu: check thunderbolt before switcheroo registration

introduce a helper to consolidate the vga_switcheroo registration condition 
used by the init and fini paths.

keep the explicit pci_is_thunderbolt_attached() check, as dev_is_removable() 
does not provide equivalent coverage for thunderbolt-attached gpus.

this ensures such devices remain excluded from switcheroo registration while 
preserving the existing px and apple gmux handling.

Signed-off-by: Yang Wang <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index dd48ad6e9c52..5fd9116d3581 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -3807,6 +3807,14 @@ static void amdgpu_device_sys_interface_fini(struct 
amdgpu_device *adev)
        amdgpu_ptl_sysfs_fini(adev);
 }

+static bool
+amdgpu_device_should_register_switcheroo(struct amdgpu_device *adev,
+bool px) {
+       return !pci_is_thunderbolt_attached(adev->pdev) &&
+              (px || (!dev_is_removable(&adev->pdev->dev) &&
+                      apple_gmux_detect(NULL, NULL))); }
+
 /**
  * amdgpu_device_init - initialize the driver
  *
@@ -4257,9 +4265,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,

        px = amdgpu_device_supports_px(adev);

-       if (!pci_is_thunderbolt_attached(adev->pdev) &&
-           (px || (!dev_is_removable(&adev->pdev->dev) &&
-                   apple_gmux_detect(NULL, NULL))))
+       if (amdgpu_device_should_register_switcheroo(adev, px))
                vga_switcheroo_register_client(adev->pdev,
                                               &amdgpu_switcheroo_ops, px);

@@ -4424,9 +4430,7 @@ void amdgpu_device_fini_sw(struct amdgpu_device *adev)

        px = amdgpu_device_supports_px(adev);

-       if (!pci_is_thunderbolt_attached(adev->pdev) &&
-           (px || (!dev_is_removable(&adev->pdev->dev) &&
-                   apple_gmux_detect(NULL, NULL))))
+       if (amdgpu_device_should_register_switcheroo(adev, px))
                vga_switcheroo_unregister_client(adev->pdev);

        if (px)
--
2.54.0

Reply via email to