ping .

Felix , can you help check this patch ?

Regards

shaoyun.liu

On 2019-04-17 2:59 p.m., Liu, Shaoyun wrote:
> Upper level runtime need the xgmi hops info to determine the data path
>
> Change-Id: I969b419eab125157e223e9b03980ca229c1e6af4
> Signed-off-by: shaoyunl <[email protected]>
> ---
>   drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 8 ++++++--
>   drivers/gpu/drm/amd/amdkfd/kfd_crat.h | 3 ++-
>   2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> index 2e7c449..d48c6c5 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> @@ -341,6 +341,7 @@ static int kfd_parse_subtype_cache(struct 
> crat_subtype_cache *cache,
>       return 0;
>   }
>   
> +
>   /* kfd_parse_subtype_iolink - parse iolink subtypes and attach it to correct
>    * topology device present in the device_list
>    */
> @@ -372,7 +373,7 @@ static int kfd_parse_subtype_iolink(struct 
> crat_subtype_iolink *iolink,
>                       if (props->iolink_type == CRAT_IOLINK_TYPE_PCIEXPRESS)
>                               props->weight = 20;
>                       else if (props->iolink_type == CRAT_IOLINK_TYPE_XGMI)
> -                             props->weight = 15;
> +                             props->weight = 15 * iolink->num_hops_xgmi;
>                       else
>                               props->weight = node_distance(id_from, id_to);
>   
> @@ -1092,6 +1093,7 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int 
> *avail_size,
>   
>   static int kfd_fill_gpu_xgmi_link_to_gpu(int *avail_size,
>                       struct kfd_dev *kdev,
> +                     struct kfd_dev *peer_kdev,
>                       struct crat_subtype_iolink *sub_type_hdr,
>                       uint32_t proximity_domain_from,
>                       uint32_t proximity_domain_to)
> @@ -1110,6 +1112,8 @@ static int kfd_fill_gpu_xgmi_link_to_gpu(int 
> *avail_size,
>       sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_XGMI;
>       sub_type_hdr->proximity_domain_from = proximity_domain_from;
>       sub_type_hdr->proximity_domain_to = proximity_domain_to;
> +     sub_type_hdr->num_hops_xgmi =
> +             amdgpu_amdkfd_get_xgmi_hops_count(kdev->kgd, peer_kdev->kgd);
>       return 0;
>   }
>   
> @@ -1287,7 +1291,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
>                               (char *)sub_type_hdr +
>                               sizeof(struct crat_subtype_iolink));
>                       ret = kfd_fill_gpu_xgmi_link_to_gpu(
> -                             &avail_size, kdev,
> +                             &avail_size, kdev, peer_dev->gpu,
>                               (struct crat_subtype_iolink *)sub_type_hdr,
>                               proximity_domain, nid);
>                       if (ret < 0)
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.h 
> b/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
> index 7c3f192..579835c 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.h
> @@ -257,7 +257,7 @@ struct crat_subtype_ccompute {
>   #define CRAT_IOLINK_TYPE_OTHER              16
>   #define CRAT_IOLINK_TYPE_MAX                255
>   
> -#define CRAT_IOLINK_RESERVED_LENGTH  24
> +#define CRAT_IOLINK_RESERVED_LENGTH  20
>   
>   struct crat_subtype_iolink {
>       uint8_t         type;
> @@ -274,6 +274,7 @@ struct crat_subtype_iolink {
>       uint32_t        minimum_bandwidth_mbs;
>       uint32_t        maximum_bandwidth_mbs;
>       uint32_t        recommended_transfer_size;
> +     uint32_t        num_hops_xgmi;
>       uint8_t         reserved2[CRAT_IOLINK_RESERVED_LENGTH];
>   };
>   
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to