drm/amdkfd: remove duplicated PCIE atomics request
authorJack Xiao <Jack.Xiao@amd.com>
Wed, 29 May 2019 05:52:17 +0000 (13:52 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 1 Jul 2019 19:54:47 +0000 (14:54 -0500)
Since amdgpu has always requested PCIE atomics, kfd don't
need duplicated PCIE atomics enablement. Referring to amdgpu
request result is enough.

Signed-off-by: Jack Xiao <Jack.Xiao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
drivers/gpu/drm/amd/amdkfd/kfd_device.c

index fab3eb173b05de95710243f4d910269fcb7935cd..9fa4f25a3745ad9889a87afe704dda1d0577b960 100644 (file)
@@ -668,6 +668,13 @@ bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid)
        return false;
 }
 
+bool amdgpu_amdkfd_have_atomics_support(struct kgd_dev *kgd)
+{
+       struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
+
+       return adev->have_atomics_support;
+}
+
 #ifndef CONFIG_HSA_AMD
 bool amdkfd_fence_check_mm(struct dma_fence *f, struct mm_struct *mm)
 {
index 93a25c799d75bf9969ee75633e15b106936974cb..b6076d19e4429c1b304563e44cbea8e1f4f40567 100644 (file)
@@ -135,6 +135,7 @@ int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine,
                                uint32_t vmid, uint64_t gpu_addr,
                                uint32_t *ib_cmd, uint32_t ib_len);
 void amdgpu_amdkfd_set_compute_idle(struct kgd_dev *kgd, bool idle);
+bool amdgpu_amdkfd_have_atomics_support(struct kgd_dev *kgd);
 
 struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void);
 struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void);
index 2e2f7241f3819aa9a29a4fdd7a6977a592221da9..24db82b61b0b74903f83a3c30b90584b7e2acd9b 100644 (file)
@@ -504,17 +504,15 @@ struct kfd_dev *kgd2kfd_probe(struct kgd_dev *kgd,
         * 32 and 64-bit requests are possible and must be
         * supported.
         */
-       ret = pci_enable_atomic_ops_to_root(pdev,
-                       PCI_EXP_DEVCAP2_ATOMIC_COMP32 |
-                       PCI_EXP_DEVCAP2_ATOMIC_COMP64);
-       if (device_info->needs_pci_atomics && ret < 0) {
+       kfd->pci_atomic_requested = amdgpu_amdkfd_have_atomics_support(kgd);
+       if (device_info->needs_pci_atomics &&
+           !kfd->pci_atomic_requested) {
                dev_info(kfd_device,
                         "skipped device %x:%x, PCI rejects atomics\n",
                         pdev->vendor, pdev->device);
                kfree(kfd);
                return NULL;
-       } else if (!ret)
-               kfd->pci_atomic_requested = true;
+       }
 
        kfd->kgd = kgd;
        kfd->device_info = device_info;