RE: [PATCH] drm/amdgpu: check thunderbolt before switcheroo registration

"Feng, Kenneth" <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <MW4PR12MB68039DF3A0BAE220A309F95D8EDC2@MW4PR12MB6803.namprd12.prod.outlook.com>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.