drm/amdgpu: move PX checking into amdgpu_device_ip_early_init
authorjsg <jsg@openbsd.org>
Mon, 11 Apr 2022 03:24:33 +0000 (03:24 +0000)
committerjsg <jsg@openbsd.org>
Mon, 11 Apr 2022 03:24:33 +0000 (03:24 +0000)
From Alex Deucher
0884abb259f180bc737cdb2c681d907b86f266e8 in linux 5.15.y/5.15.33
901e2be20dc55079997ea1885ea77fc72e6826e7 in mainline linux

sys/dev/pci/drm/amd/amdgpu/amdgpu_device.c
sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c

index a4d915d..1c99fd9 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/module.h>
 #include <linux/console.h>
 #include <linux/slab.h>
+#include <linux/pci.h>
 
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_probe_helper.h>
@@ -2101,6 +2102,8 @@ out:
  */
 static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
 {
+       struct drm_device *dev = adev_to_drm(adev);
+       struct pci_dev *parent;
        int i, r;
 
        amdgpu_device_enable_virtual_display(adev);
@@ -2200,6 +2203,16 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
                return -EINVAL;
        }
 
+       if (amdgpu_has_atpx() &&
+           (amdgpu_is_atpx_hybrid() ||
+            amdgpu_has_atpx_dgpu_power_cntl()) &&
+           ((adev->flags & AMD_IS_APU) == 0) &&
+           !pci_is_thunderbolt_attached(dev->pdev))
+               adev->flags |= AMD_IS_PX;
+
+       parent = pci_upstream_bridge(adev->pdev);
+       adev->has_pr3 = parent ? pci_pr3_present(parent) : false;
+
        amdgpu_amdkfd_device_probe(adev);
 
        adev->pm.pp_feature = amdgpu_pp_feature_mask;
index 15add19..262e8fd 100644 (file)
@@ -208,21 +208,10 @@ static void amdgpu_get_audio_func(struct amdgpu_device *adev)
 int amdgpu_driver_load_kms(struct amdgpu_device *adev, unsigned long flags)
 {
        struct drm_device *dev;
-       struct pci_dev *parent;
        int r, acpi_status;
 
        dev = adev_to_drm(adev);
 
-       if (amdgpu_has_atpx() &&
-           (amdgpu_is_atpx_hybrid() ||
-            amdgpu_has_atpx_dgpu_power_cntl()) &&
-           ((flags & AMD_IS_APU) == 0) &&
-           !pci_is_thunderbolt_attached(to_pci_dev(dev->dev)))
-               flags |= AMD_IS_PX;
-
-       parent = pci_upstream_bridge(adev->pdev);
-       adev->has_pr3 = parent ? pci_pr3_present(parent) : false;
-
        /* amdgpu_device_init should report only fatal error
         * like memory allocation failure or iomapping failure,
         * or memory manager initialization failure, it must
@@ -2135,13 +2124,6 @@ amdgpu_attachhook(struct device *self)
        struct drm_device       *dev = &adev->ddev;
        int r, acpi_status;
 
-       if (amdgpu_has_atpx() &&
-           (amdgpu_is_atpx_hybrid() ||
-            amdgpu_has_atpx_dgpu_power_cntl()) &&
-           ((adev->flags & AMD_IS_APU) == 0) &&
-           !pci_is_thunderbolt_attached(dev->pdev))
-               adev->flags |= AMD_IS_PX;
-
        /* amdgpu_device_init should report only fatal error
         * like memory allocation failure or iomapping failure,
         * or memory manager initialization failure, it must