[PATCH 3/3] drm/amdkfd: remove duplicated PCIE atomics request

Kuehling, Felix Felix.Kuehling at amd.com
Wed May 29 21:38:21 UTC 2019


On 2019-05-29 2:32 a.m., Xiao, Jack wrote:
> 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 at amd.com>

This patch is Reviewed-by: Felix Kuehling <Felix.Kuehling at 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 98326e3b..ddd6c52 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -620,6 +620,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)
>   {
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> index f57f297..8d135c82 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> @@ -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);
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> index 7b4ea24..76a1599 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> @@ -481,17 +481,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;


More information about the amd-gfx mailing list