Commit d34184e3 authored by Rajneesh Bhardwaj's avatar Rajneesh Bhardwaj Committed by Alex Deucher

drm/amdkfd: expose host gpu link via sysfs (v2)

Currently host-gpu io link is always reported as PCIe however, on some
A+A systems, there could be one xgmi link available. This change exposes
xgmi link via sysfs when it is present.

v2: fix includes (Alex)
Reviewed-by: default avatarOak Zeng <oak.zeng@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarRajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3cbb3a97
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "kfd_priv.h" #include "kfd_priv.h"
#include "kfd_topology.h" #include "kfd_topology.h"
#include "kfd_iommu.h" #include "kfd_iommu.h"
#include "amdgpu.h"
#include "amdgpu_amdkfd.h" #include "amdgpu_amdkfd.h"
/* GPU Processor ID base for dGPUs for which VCRAT needs to be created. /* GPU Processor ID base for dGPUs for which VCRAT needs to be created.
...@@ -1113,6 +1114,8 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int *avail_size, ...@@ -1113,6 +1114,8 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int *avail_size,
struct crat_subtype_iolink *sub_type_hdr, struct crat_subtype_iolink *sub_type_hdr,
uint32_t proximity_domain) uint32_t proximity_domain)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kdev->kgd;
*avail_size -= sizeof(struct crat_subtype_iolink); *avail_size -= sizeof(struct crat_subtype_iolink);
if (*avail_size < 0) if (*avail_size < 0)
return -ENOMEM; return -ENOMEM;
...@@ -1129,7 +1132,18 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int *avail_size, ...@@ -1129,7 +1132,18 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int *avail_size,
/* Fill in IOLINK subtype. /* Fill in IOLINK subtype.
* TODO: Fill-in other fields of iolink subtype * TODO: Fill-in other fields of iolink subtype
*/ */
sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_PCIEXPRESS; if (adev->gmc.xgmi.connected_to_cpu) {
/*
* with host gpu xgmi link, host can access gpu memory whether
* or not pcie bar type is large, so always create bidirectional
* io link.
*/
sub_type_hdr->flags |= CRAT_IOLINK_FLAGS_BI_DIRECTIONAL;
sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_XGMI;
} else {
sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_PCIEXPRESS;
}
sub_type_hdr->proximity_domain_from = proximity_domain; sub_type_hdr->proximity_domain_from = proximity_domain;
#ifdef CONFIG_NUMA #ifdef CONFIG_NUMA
if (kdev->pdev->dev.numa_node == NUMA_NO_NODE) if (kdev->pdev->dev.numa_node == NUMA_NO_NODE)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment