drm/amdgpu: add check for ACPI power resources
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 9 Dec 2020 18:07:30 +0000 (13:07 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 Dec 2020 16:35:12 +0000 (11:35 -0500)
Check if the device has ACPI power resources so we can
enable runtime pm if so.

Acked-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c

index 859aae7800565a91b495c1030352fbee8f31e975..e119185210dea56d41a05d23718ae27d40eaae58 100644 (file)
@@ -1024,6 +1024,7 @@ struct amdgpu_device {
        /* enable runtime pm on the device */
        bool                            runpm;
        bool                            in_runpm;
+       bool                            has_pr3;
 
        bool                            pm_sysfs_en;
        bool                            ucode_sysfs_en;
index 38fb903338a463ee52475eed1a23d2e5d2b7d1e4..ec8fff7839efbe73ea36767cea4b07801051086f 100644 (file)
@@ -133,6 +133,7 @@ void amdgpu_register_gpu_instance(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);
@@ -144,6 +145,9 @@ int amdgpu_driver_load_kms(struct amdgpu_device *adev, unsigned long flags)
            !pci_is_thunderbolt_attached(dev->pdev))
                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