Am 2021-04-29 um 5:36 a.m. schrieb Jonathan Kim:
> Link atomics support over xGMI should be reported independently of PCIe.

I don't understand this change. I don't see any code that gets executed
if (adev->gmc.xgmi.connected_to_cpu). Where is the code that reports
atomics support for this case?

Also, the PCIe code doesn't clear any atomic flags. It only sets flags
that would be set for XGMI anyway. So I don't see why you need to make
that code conditional.

Regards,
  Felix


>
> Signed-off-by: Jonathan Kim <jonathan....@amd.com>
> Tested-by: Ramesh Errabolu <ramesh.errab...@amd.com>
> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_topology.c | 29 ++++++++++++++---------
>  1 file changed, 18 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
> index 083ac9babfa8..30430aefcfc7 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_topology.c
> @@ -1196,6 +1196,7 @@ static void kfd_fill_iolink_non_crat_info(struct 
> kfd_topology_device *dev)
>  {
>       struct kfd_iolink_properties *link, *cpu_link;
>       struct kfd_topology_device *cpu_dev;
> +     struct amdgpu_device *adev;
>       uint32_t cap;
>       uint32_t cpu_flag = CRAT_IOLINK_FLAGS_ENABLED;
>       uint32_t flag = CRAT_IOLINK_FLAGS_ENABLED;
> @@ -1203,18 +1204,24 @@ static void kfd_fill_iolink_non_crat_info(struct 
> kfd_topology_device *dev)
>       if (!dev || !dev->gpu)
>               return;
>  
> -     pcie_capability_read_dword(dev->gpu->pdev,
> -                     PCI_EXP_DEVCAP2, &cap);
> -
> -     if (!(cap & (PCI_EXP_DEVCAP2_ATOMIC_COMP32 |
> -                  PCI_EXP_DEVCAP2_ATOMIC_COMP64)))
> -             cpu_flag |= CRAT_IOLINK_FLAGS_NO_ATOMICS_32_BIT |
> -                     CRAT_IOLINK_FLAGS_NO_ATOMICS_64_BIT;
> +     adev = (struct amdgpu_device *)(dev->gpu->kgd);
> +     if (!adev->gmc.xgmi.connected_to_cpu) {
> +             pcie_capability_read_dword(dev->gpu->pdev,
> +                             PCI_EXP_DEVCAP2, &cap);
> +
> +             if (!(cap & (PCI_EXP_DEVCAP2_ATOMIC_COMP32 |
> +                          PCI_EXP_DEVCAP2_ATOMIC_COMP64)))
> +                     cpu_flag |= CRAT_IOLINK_FLAGS_NO_ATOMICS_32_BIT |
> +                             CRAT_IOLINK_FLAGS_NO_ATOMICS_64_BIT;
> +     }
>  
> -     if (!dev->gpu->pci_atomic_requested ||
> -         dev->gpu->device_info->asic_family == CHIP_HAWAII)
> -             flag |= CRAT_IOLINK_FLAGS_NO_ATOMICS_32_BIT |
> -                     CRAT_IOLINK_FLAGS_NO_ATOMICS_64_BIT;
> +     if (!adev->gmc.xgmi.num_physical_nodes) {
> +             if (!dev->gpu->pci_atomic_requested ||
> +                             dev->gpu->device_info->asic_family ==
> +                                                     CHIP_HAWAII)
> +                     flag |= CRAT_IOLINK_FLAGS_NO_ATOMICS_32_BIT |
> +                             CRAT_IOLINK_FLAGS_NO_ATOMICS_64_BIT;
> +     }
>  
>       /* GPU only creates direct links so apply flags setting to all */
>       list_for_each_entry(link, &dev->io_link_props, list) {
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to