From: Alex Deucher <alexander.deuc...@amd.com>

[ 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.russ...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index b3e4201a405c8..9cde62b178c3b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -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);
-- 
2.39.5

Reply via email to