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 <shaoyun.liu@xxxxxxx> > --- > 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 amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx