]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu: don't free conflicting apertures for non-display devices
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 25 Sep 2024 14:29:31 +0000 (10:29 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:12:36 +0000 (11:12 +0200)
[ Upstream commit 9deacd6c55f1b31e5ab20db79df2e14ac480203c ]

PCI_CLASS_ACCELERATOR_PROCESSING devices won't ever be
the sysfb, so there is no need to free conflicting
apertures.

Reviewed-by: Kent Russell <kent.russell@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index ea50f82b547d9032b2001cabfdc28e85d3f9a353..28190b0ac5fcafae87478395a7c46bf5d473fc00 100644 (file)
@@ -4370,10 +4370,17 @@ int amdgpu_device_init(struct amdgpu_device *adev,
        if (r)
                return r;
 
-       /* Get rid of things like offb */
-       r = aperture_remove_conflicting_pci_devices(adev->pdev, amdgpu_kms_driver.name);
-       if (r)
-               return r;
+       /*
+        * No need to remove conflicting FBs for non-display class devices.
+        * This prevents the sysfb from being freed accidently.
+        */
+       if ((pdev->class >> 8) == PCI_CLASS_DISPLAY_VGA ||
+           (pdev->class >> 8) == PCI_CLASS_DISPLAY_OTHER) {
+               /* Get rid of things like offb */
+               r = aperture_remove_conflicting_pci_devices(adev->pdev, amdgpu_kms_driver.name);
+               if (r)
+                       return r;
+       }
 
        /* Enable TMZ based on IP_VERSION */
        amdgpu_gmc_tmz_set(adev);