diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2818-drm-amdkfd-remove-duplicated-PCIE-atomics-request.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2818-drm-amdkfd-remove-duplicated-PCIE-atomics-request.patch | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2818-drm-amdkfd-remove-duplicated-PCIE-atomics-request.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2818-drm-amdkfd-remove-duplicated-PCIE-atomics-request.patch new file mode 100644 index 00000000..df2c47dd --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2818-drm-amdkfd-remove-duplicated-PCIE-atomics-request.patch @@ -0,0 +1,78 @@ +From eedbfbf6c406b7dfdbd2e96a501433156877f92a Mon Sep 17 00:00:00 2001 +From: Jack Xiao <Jack.Xiao@amd.com> +Date: Wed, 29 May 2019 13:52:17 +0800 +Subject: [PATCH 2818/2940] drm/amdkfd: remove duplicated PCIE atomics request + +Since amdgpu has always requested PCIE atomics, kfd don't +need duplicated PCIE atomics enablement. Referring to amdgpu +request result is enough. + +Change-Id: I1f4d6cadf9804ad74f914243b120d71fda95df28 +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> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 7 +++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 1 + + drivers/gpu/drm/amd/amdkfd/kfd_device.c | 10 ++++------ + 3 files changed, 12 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +index 6b92be548484..b2657294b811 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +@@ -624,6 +624,13 @@ void amdgpu_amdkfd_debug_mem_fence(struct kgd_dev *kgd) + amdgpu_asic_flush_hdp((struct amdgpu_device *) kgd, NULL); + } + ++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) + { +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +index 96ff067ae88e..3a521cf36c90 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +@@ -124,6 +124,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); +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c +index 9bd16644c25c..af49d2dd361d 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c +@@ -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; +-- +2.17.1 + |