Commit 574c4183 authored by Graham Sider's avatar Graham Sider Committed by Alex Deucher

drm/amdkfd: replace kgd_dev in get amdgpu_amdkfd funcs

Modified definitions:

- amdgpu_amdkfd_get_fw_version
- amdgpu_amdkfd_get_local_mem_info
- amdgpu_amdkfd_get_gpu_clock_counter
- amdgpu_amdkfd_get_max_engine_clock_in_mhz
- amdgpu_amdkfd_get_cu_info
- amdgpu_amdkfd_get_dmabuf_info
- amdgpu_amdkfd_get_vram_usage
- amdgpu_amdkfd_get_hive_id
- amdgpu_amdkfd_get_unique_id
- amdgpu_amdkfd_get_mmio_remap_phys_addr
- amdgpu_amdkfd_get_num_gws
- amdgpu_amdkfd_get_asic_rev_id
- amdgpu_amdkfd_get_noretry
- amdgpu_amdkfd_get_xgmi_hops_count
- amdgpu_amdkfd_get_xgmi_bandwidth_mbytes
- amdgpu_amdkfd_get_pcie_bandwidth_mbytes

Also replaces kfd_device_by_kgd with kfd_device_by_adev, now
searching via adev rather than kgd.
Signed-off-by: default avatarGraham Sider <Graham.Sider@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 6bfc7c7e
...@@ -358,11 +358,9 @@ void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj) ...@@ -358,11 +358,9 @@ void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj)
amdgpu_bo_unref(&bo); amdgpu_bo_unref(&bo);
} }
uint32_t amdgpu_amdkfd_get_fw_version(struct kgd_dev *kgd, uint32_t amdgpu_amdkfd_get_fw_version(struct amdgpu_device *adev,
enum kgd_engine_type type) enum kgd_engine_type type)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
switch (type) { switch (type) {
case KGD_ENGINE_PFP: case KGD_ENGINE_PFP:
return adev->gfx.pfp_fw_version; return adev->gfx.pfp_fw_version;
...@@ -395,11 +393,9 @@ uint32_t amdgpu_amdkfd_get_fw_version(struct kgd_dev *kgd, ...@@ -395,11 +393,9 @@ uint32_t amdgpu_amdkfd_get_fw_version(struct kgd_dev *kgd,
return 0; return 0;
} }
void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd, void amdgpu_amdkfd_get_local_mem_info(struct amdgpu_device *adev,
struct kfd_local_mem_info *mem_info) struct kfd_local_mem_info *mem_info)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
memset(mem_info, 0, sizeof(*mem_info)); memset(mem_info, 0, sizeof(*mem_info));
mem_info->local_mem_size_public = adev->gmc.visible_vram_size; mem_info->local_mem_size_public = adev->gmc.visible_vram_size;
...@@ -424,19 +420,15 @@ void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd, ...@@ -424,19 +420,15 @@ void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd,
mem_info->mem_clk_max = 100; mem_info->mem_clk_max = 100;
} }
uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct kgd_dev *kgd) uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
if (adev->gfx.funcs->get_gpu_clock_counter) if (adev->gfx.funcs->get_gpu_clock_counter)
return adev->gfx.funcs->get_gpu_clock_counter(adev); return adev->gfx.funcs->get_gpu_clock_counter(adev);
return 0; return 0;
} }
uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct kgd_dev *kgd) uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
/* the sclk is in quantas of 10kHz */ /* the sclk is in quantas of 10kHz */
if (amdgpu_sriov_vf(adev)) if (amdgpu_sriov_vf(adev))
return adev->clock.default_sclk / 100; return adev->clock.default_sclk / 100;
...@@ -446,9 +438,8 @@ uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct kgd_dev *kgd) ...@@ -446,9 +438,8 @@ uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct kgd_dev *kgd)
return 100; return 100;
} }
void amdgpu_amdkfd_get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info) void amdgpu_amdkfd_get_cu_info(struct amdgpu_device *adev, struct kfd_cu_info *cu_info)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
struct amdgpu_cu_info acu_info = adev->gfx.cu_info; struct amdgpu_cu_info acu_info = adev->gfx.cu_info;
memset(cu_info, 0, sizeof(*cu_info)); memset(cu_info, 0, sizeof(*cu_info));
...@@ -469,13 +460,12 @@ void amdgpu_amdkfd_get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info) ...@@ -469,13 +460,12 @@ void amdgpu_amdkfd_get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info)
cu_info->lds_size = acu_info.lds_size; cu_info->lds_size = acu_info.lds_size;
} }
int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, int amdgpu_amdkfd_get_dmabuf_info(struct amdgpu_device *adev, int dma_buf_fd,
struct kgd_dev **dma_buf_kgd, struct amdgpu_device **dmabuf_adev,
uint64_t *bo_size, void *metadata_buffer, uint64_t *bo_size, void *metadata_buffer,
size_t buffer_size, uint32_t *metadata_size, size_t buffer_size, uint32_t *metadata_size,
uint32_t *flags) uint32_t *flags)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
struct dma_buf *dma_buf; struct dma_buf *dma_buf;
struct drm_gem_object *obj; struct drm_gem_object *obj;
struct amdgpu_bo *bo; struct amdgpu_bo *bo;
...@@ -503,8 +493,8 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, ...@@ -503,8 +493,8 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd,
goto out_put; goto out_put;
r = 0; r = 0;
if (dma_buf_kgd) if (dmabuf_adev)
*dma_buf_kgd = (struct kgd_dev *)adev; *dmabuf_adev = adev;
if (bo_size) if (bo_size)
*bo_size = amdgpu_bo_size(bo); *bo_size = amdgpu_bo_size(bo);
if (metadata_buffer) if (metadata_buffer)
...@@ -524,32 +514,28 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, ...@@ -524,32 +514,28 @@ int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd,
return r; return r;
} }
uint64_t amdgpu_amdkfd_get_vram_usage(struct kgd_dev *kgd) uint64_t amdgpu_amdkfd_get_vram_usage(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
struct ttm_resource_manager *vram_man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM); struct ttm_resource_manager *vram_man = ttm_manager_type(&adev->mman.bdev, TTM_PL_VRAM);
return amdgpu_vram_mgr_usage(vram_man); return amdgpu_vram_mgr_usage(vram_man);
} }
uint64_t amdgpu_amdkfd_get_hive_id(struct kgd_dev *kgd) uint64_t amdgpu_amdkfd_get_hive_id(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
return adev->gmc.xgmi.hive_id; return adev->gmc.xgmi.hive_id;
} }
uint64_t amdgpu_amdkfd_get_unique_id(struct kgd_dev *kgd) uint64_t amdgpu_amdkfd_get_unique_id(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
return adev->unique_id; return adev->unique_id;
} }
uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *src) uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct amdgpu_device *dst,
struct amdgpu_device *src)
{ {
struct amdgpu_device *peer_adev = (struct amdgpu_device *)src; struct amdgpu_device *peer_adev = src;
struct amdgpu_device *adev = (struct amdgpu_device *)dst; struct amdgpu_device *adev = dst;
int ret = amdgpu_xgmi_get_hops_count(adev, peer_adev); int ret = amdgpu_xgmi_get_hops_count(adev, peer_adev);
if (ret < 0) { if (ret < 0) {
...@@ -561,16 +547,18 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s ...@@ -561,16 +547,18 @@ uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *s
return (uint8_t)ret; return (uint8_t)ret;
} }
int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct kgd_dev *dst, struct kgd_dev *src, bool is_min) int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct amdgpu_device *dst,
struct amdgpu_device *src,
bool is_min)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)dst, *peer_adev; struct amdgpu_device *adev = dst, *peer_adev;
int num_links; int num_links;
if (adev->asic_type != CHIP_ALDEBARAN) if (adev->asic_type != CHIP_ALDEBARAN)
return 0; return 0;
if (src) if (src)
peer_adev = (struct amdgpu_device *)src; peer_adev = src;
/* num links returns 0 for indirect peers since indirect route is unknown. */ /* num links returns 0 for indirect peers since indirect route is unknown. */
num_links = is_min ? 1 : amdgpu_xgmi_get_num_links(adev, peer_adev); num_links = is_min ? 1 : amdgpu_xgmi_get_num_links(adev, peer_adev);
...@@ -585,9 +573,8 @@ int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct kgd_dev *dst, struct kgd_dev ...@@ -585,9 +573,8 @@ int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct kgd_dev *dst, struct kgd_dev
return (num_links * 16 * 25000)/BITS_PER_BYTE; return (num_links * 16 * 25000)/BITS_PER_BYTE;
} }
int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct kgd_dev *dev, bool is_min) int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct amdgpu_device *adev, bool is_min)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)dev;
int num_lanes_shift = (is_min ? ffs(adev->pm.pcie_mlw_mask) : int num_lanes_shift = (is_min ? ffs(adev->pm.pcie_mlw_mask) :
fls(adev->pm.pcie_mlw_mask)) - 1; fls(adev->pm.pcie_mlw_mask)) - 1;
int gen_speed_shift = (is_min ? ffs(adev->pm.pcie_gen_mask & int gen_speed_shift = (is_min ? ffs(adev->pm.pcie_gen_mask &
...@@ -643,31 +630,23 @@ int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct kgd_dev *dev, bool is_min) ...@@ -643,31 +630,23 @@ int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct kgd_dev *dev, bool is_min)
return (num_lanes_factor * gen_speed_mbits_factor)/BITS_PER_BYTE; return (num_lanes_factor * gen_speed_mbits_factor)/BITS_PER_BYTE;
} }
uint64_t amdgpu_amdkfd_get_mmio_remap_phys_addr(struct kgd_dev *kgd) uint64_t amdgpu_amdkfd_get_mmio_remap_phys_addr(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
return adev->rmmio_remap.bus_addr; return adev->rmmio_remap.bus_addr;
} }
uint32_t amdgpu_amdkfd_get_num_gws(struct kgd_dev *kgd) uint32_t amdgpu_amdkfd_get_num_gws(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
return adev->gds.gws_size; return adev->gds.gws_size;
} }
uint32_t amdgpu_amdkfd_get_asic_rev_id(struct kgd_dev *kgd) uint32_t amdgpu_amdkfd_get_asic_rev_id(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
return adev->rev_id; return adev->rev_id;
} }
int amdgpu_amdkfd_get_noretry(struct kgd_dev *kgd) int amdgpu_amdkfd_get_noretry(struct amdgpu_device *adev)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
return adev->gmc.noretry; return adev->gmc.noretry;
} }
......
...@@ -209,29 +209,33 @@ int amdgpu_amdkfd_alloc_gws(struct amdgpu_device *adev, size_t size, ...@@ -209,29 +209,33 @@ int amdgpu_amdkfd_alloc_gws(struct amdgpu_device *adev, size_t size,
void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj); void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj);
int amdgpu_amdkfd_add_gws_to_process(void *info, void *gws, struct kgd_mem **mem); int amdgpu_amdkfd_add_gws_to_process(void *info, void *gws, struct kgd_mem **mem);
int amdgpu_amdkfd_remove_gws_from_process(void *info, void *mem); int amdgpu_amdkfd_remove_gws_from_process(void *info, void *mem);
uint32_t amdgpu_amdkfd_get_fw_version(struct kgd_dev *kgd, uint32_t amdgpu_amdkfd_get_fw_version(struct amdgpu_device *adev,
enum kgd_engine_type type); enum kgd_engine_type type);
void amdgpu_amdkfd_get_local_mem_info(struct kgd_dev *kgd, void amdgpu_amdkfd_get_local_mem_info(struct amdgpu_device *adev,
struct kfd_local_mem_info *mem_info); struct kfd_local_mem_info *mem_info);
uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct kgd_dev *kgd); uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct amdgpu_device *adev);
uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct kgd_dev *kgd); uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct amdgpu_device *adev);
void amdgpu_amdkfd_get_cu_info(struct kgd_dev *kgd, struct kfd_cu_info *cu_info); void amdgpu_amdkfd_get_cu_info(struct amdgpu_device *adev,
int amdgpu_amdkfd_get_dmabuf_info(struct kgd_dev *kgd, int dma_buf_fd, struct kfd_cu_info *cu_info);
struct kgd_dev **dmabuf_kgd, int amdgpu_amdkfd_get_dmabuf_info(struct amdgpu_device *adev, int dma_buf_fd,
struct amdgpu_device **dmabuf_adev,
uint64_t *bo_size, void *metadata_buffer, uint64_t *bo_size, void *metadata_buffer,
size_t buffer_size, uint32_t *metadata_size, size_t buffer_size, uint32_t *metadata_size,
uint32_t *flags); uint32_t *flags);
uint64_t amdgpu_amdkfd_get_vram_usage(struct kgd_dev *kgd); uint64_t amdgpu_amdkfd_get_vram_usage(struct amdgpu_device *adev);
uint64_t amdgpu_amdkfd_get_hive_id(struct kgd_dev *kgd); uint64_t amdgpu_amdkfd_get_hive_id(struct amdgpu_device *adev);
uint64_t amdgpu_amdkfd_get_unique_id(struct kgd_dev *kgd); uint64_t amdgpu_amdkfd_get_unique_id(struct amdgpu_device *adev);
uint64_t amdgpu_amdkfd_get_mmio_remap_phys_addr(struct kgd_dev *kgd); uint64_t amdgpu_amdkfd_get_mmio_remap_phys_addr(struct amdgpu_device *adev);
uint32_t amdgpu_amdkfd_get_num_gws(struct kgd_dev *kgd); uint32_t amdgpu_amdkfd_get_num_gws(struct amdgpu_device *adev);
uint32_t amdgpu_amdkfd_get_asic_rev_id(struct kgd_dev *kgd); uint32_t amdgpu_amdkfd_get_asic_rev_id(struct amdgpu_device *adev);
int amdgpu_amdkfd_get_noretry(struct kgd_dev *kgd); int amdgpu_amdkfd_get_noretry(struct amdgpu_device *adev);
uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct kgd_dev *dst, struct kgd_dev *src); uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct amdgpu_device *dst,
int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct kgd_dev *dst, struct kgd_dev *src, bool is_min); struct amdgpu_device *src);
int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct kgd_dev *dev, bool is_min); int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct amdgpu_device *dst,
struct amdgpu_device *src,
bool is_min);
int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct amdgpu_device *adev, bool is_min);
/* Read user wptr from a specified user address space with page fault /* Read user wptr from a specified user address space with page fault
* disabled. The memory must be pinned and mapped to the hardware when * disabled. The memory must be pinned and mapped to the hardware when
......
...@@ -851,7 +851,7 @@ static int kfd_ioctl_get_clock_counters(struct file *filep, ...@@ -851,7 +851,7 @@ static int kfd_ioctl_get_clock_counters(struct file *filep,
dev = kfd_device_by_id(args->gpu_id); dev = kfd_device_by_id(args->gpu_id);
if (dev) if (dev)
/* Reading GPU clock counter from KGD */ /* Reading GPU clock counter from KGD */
args->gpu_clock_counter = amdgpu_amdkfd_get_gpu_clock_counter(dev->kgd); args->gpu_clock_counter = amdgpu_amdkfd_get_gpu_clock_counter(dev->adev);
else else
/* Node without GPU resource */ /* Node without GPU resource */
args->gpu_clock_counter = 0; args->gpu_clock_counter = 0;
...@@ -1244,7 +1244,7 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev) ...@@ -1244,7 +1244,7 @@ bool kfd_dev_is_large_bar(struct kfd_dev *dev)
if (dev->use_iommu_v2) if (dev->use_iommu_v2)
return false; return false;
amdgpu_amdkfd_get_local_mem_info(dev->kgd, &mem_info); amdgpu_amdkfd_get_local_mem_info(dev->adev, &mem_info);
if (mem_info.local_mem_size_private == 0 && if (mem_info.local_mem_size_private == 0 &&
mem_info.local_mem_size_public > 0) mem_info.local_mem_size_public > 0)
return true; return true;
...@@ -1313,7 +1313,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep, ...@@ -1313,7 +1313,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
err = -EINVAL; err = -EINVAL;
goto err_unlock; goto err_unlock;
} }
offset = amdgpu_amdkfd_get_mmio_remap_phys_addr(dev->kgd); offset = amdgpu_amdkfd_get_mmio_remap_phys_addr(dev->adev);
if (!offset) { if (!offset) {
err = -ENOMEM; err = -ENOMEM;
goto err_unlock; goto err_unlock;
...@@ -1680,7 +1680,7 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep, ...@@ -1680,7 +1680,7 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep,
{ {
struct kfd_ioctl_get_dmabuf_info_args *args = data; struct kfd_ioctl_get_dmabuf_info_args *args = data;
struct kfd_dev *dev = NULL; struct kfd_dev *dev = NULL;
struct kgd_dev *dma_buf_kgd; struct amdgpu_device *dmabuf_adev;
void *metadata_buffer = NULL; void *metadata_buffer = NULL;
uint32_t flags; uint32_t flags;
unsigned int i; unsigned int i;
...@@ -1700,15 +1700,15 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep, ...@@ -1700,15 +1700,15 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep,
} }
/* Get dmabuf info from KGD */ /* Get dmabuf info from KGD */
r = amdgpu_amdkfd_get_dmabuf_info(dev->kgd, args->dmabuf_fd, r = amdgpu_amdkfd_get_dmabuf_info(dev->adev, args->dmabuf_fd,
&dma_buf_kgd, &args->size, &dmabuf_adev, &args->size,
metadata_buffer, args->metadata_size, metadata_buffer, args->metadata_size,
&args->metadata_size, &flags); &args->metadata_size, &flags);
if (r) if (r)
goto exit; goto exit;
/* Reverse-lookup gpu_id from kgd pointer */ /* Reverse-lookup gpu_id from kgd pointer */
dev = kfd_device_by_kgd(dma_buf_kgd); dev = kfd_device_by_adev(dmabuf_adev);
if (!dev) { if (!dev) {
r = -EINVAL; r = -EINVAL;
goto exit; goto exit;
...@@ -2066,7 +2066,7 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process, ...@@ -2066,7 +2066,7 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process,
if (vma->vm_end - vma->vm_start != PAGE_SIZE) if (vma->vm_end - vma->vm_start != PAGE_SIZE)
return -EINVAL; return -EINVAL;
address = amdgpu_amdkfd_get_mmio_remap_phys_addr(dev->kgd); address = amdgpu_amdkfd_get_mmio_remap_phys_addr(dev->adev);
vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE | vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
VM_DONTDUMP | VM_PFNMAP; VM_DONTDUMP | VM_PFNMAP;
......
...@@ -1993,16 +1993,16 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int *avail_size, ...@@ -1993,16 +1993,16 @@ static int kfd_fill_gpu_direct_io_link_to_cpu(int *avail_size,
if (adev->asic_type == CHIP_ALDEBARAN) { if (adev->asic_type == CHIP_ALDEBARAN) {
sub_type_hdr->minimum_bandwidth_mbs = sub_type_hdr->minimum_bandwidth_mbs =
amdgpu_amdkfd_get_xgmi_bandwidth_mbytes( amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(
kdev->kgd, NULL, true); kdev->adev, NULL, true);
sub_type_hdr->maximum_bandwidth_mbs = sub_type_hdr->maximum_bandwidth_mbs =
sub_type_hdr->minimum_bandwidth_mbs; sub_type_hdr->minimum_bandwidth_mbs;
} }
} else { } else {
sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_PCIEXPRESS; sub_type_hdr->io_interface_type = CRAT_IOLINK_TYPE_PCIEXPRESS;
sub_type_hdr->minimum_bandwidth_mbs = sub_type_hdr->minimum_bandwidth_mbs =
amdgpu_amdkfd_get_pcie_bandwidth_mbytes(kdev->kgd, true); amdgpu_amdkfd_get_pcie_bandwidth_mbytes(kdev->adev, true);
sub_type_hdr->maximum_bandwidth_mbs = sub_type_hdr->maximum_bandwidth_mbs =
amdgpu_amdkfd_get_pcie_bandwidth_mbytes(kdev->kgd, false); amdgpu_amdkfd_get_pcie_bandwidth_mbytes(kdev->adev, false);
} }
sub_type_hdr->proximity_domain_from = proximity_domain; sub_type_hdr->proximity_domain_from = proximity_domain;
...@@ -2044,11 +2044,11 @@ static int kfd_fill_gpu_xgmi_link_to_gpu(int *avail_size, ...@@ -2044,11 +2044,11 @@ static int kfd_fill_gpu_xgmi_link_to_gpu(int *avail_size,
sub_type_hdr->proximity_domain_from = proximity_domain_from; sub_type_hdr->proximity_domain_from = proximity_domain_from;
sub_type_hdr->proximity_domain_to = proximity_domain_to; sub_type_hdr->proximity_domain_to = proximity_domain_to;
sub_type_hdr->num_hops_xgmi = sub_type_hdr->num_hops_xgmi =
amdgpu_amdkfd_get_xgmi_hops_count(kdev->kgd, peer_kdev->kgd); amdgpu_amdkfd_get_xgmi_hops_count(kdev->adev, peer_kdev->adev);
sub_type_hdr->maximum_bandwidth_mbs = sub_type_hdr->maximum_bandwidth_mbs =
amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(kdev->kgd, peer_kdev->kgd, false); amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(kdev->adev, peer_kdev->adev, false);
sub_type_hdr->minimum_bandwidth_mbs = sub_type_hdr->maximum_bandwidth_mbs ? sub_type_hdr->minimum_bandwidth_mbs = sub_type_hdr->maximum_bandwidth_mbs ?
amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(kdev->kgd, NULL, true) : 0; amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(kdev->adev, NULL, true) : 0;
return 0; return 0;
} }
...@@ -2114,7 +2114,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image, ...@@ -2114,7 +2114,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
cu->flags |= CRAT_CU_FLAGS_GPU_PRESENT; cu->flags |= CRAT_CU_FLAGS_GPU_PRESENT;
cu->proximity_domain = proximity_domain; cu->proximity_domain = proximity_domain;
amdgpu_amdkfd_get_cu_info(kdev->kgd, &cu_info); amdgpu_amdkfd_get_cu_info(kdev->adev, &cu_info);
cu->num_simd_per_cu = cu_info.simd_per_cu; cu->num_simd_per_cu = cu_info.simd_per_cu;
cu->num_simd_cores = cu_info.simd_per_cu * cu_info.cu_active_number; cu->num_simd_cores = cu_info.simd_per_cu * cu_info.cu_active_number;
cu->max_waves_simd = cu_info.max_waves_per_simd; cu->max_waves_simd = cu_info.max_waves_per_simd;
...@@ -2145,7 +2145,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image, ...@@ -2145,7 +2145,7 @@ static int kfd_create_vcrat_image_gpu(void *pcrat_image,
* report the total FB size (public+private) as a single * report the total FB size (public+private) as a single
* private heap. * private heap.
*/ */
amdgpu_amdkfd_get_local_mem_info(kdev->kgd, &local_mem_info); amdgpu_amdkfd_get_local_mem_info(kdev->adev, &local_mem_info);
sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr + sub_type_hdr = (typeof(sub_type_hdr))((char *)sub_type_hdr +
sub_type_hdr->length); sub_type_hdr->length);
......
...@@ -894,7 +894,7 @@ static int kfd_gws_init(struct kfd_dev *kfd) ...@@ -894,7 +894,7 @@ static int kfd_gws_init(struct kfd_dev *kfd)
|| (kfd->device_info->asic_family == CHIP_ALDEBARAN || (kfd->device_info->asic_family == CHIP_ALDEBARAN
&& kfd->mec2_fw_version >= 0x28)) && kfd->mec2_fw_version >= 0x28))
ret = amdgpu_amdkfd_alloc_gws(kfd->adev, ret = amdgpu_amdkfd_alloc_gws(kfd->adev,
amdgpu_amdkfd_get_num_gws(kfd->kgd), &kfd->gws); amdgpu_amdkfd_get_num_gws(kfd->adev), &kfd->gws);
return ret; return ret;
} }
...@@ -911,11 +911,11 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, ...@@ -911,11 +911,11 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
unsigned int size, map_process_packet_size; unsigned int size, map_process_packet_size;
kfd->ddev = ddev; kfd->ddev = ddev;
kfd->mec_fw_version = amdgpu_amdkfd_get_fw_version(kfd->kgd, kfd->mec_fw_version = amdgpu_amdkfd_get_fw_version(kfd->adev,
KGD_ENGINE_MEC1); KGD_ENGINE_MEC1);
kfd->mec2_fw_version = amdgpu_amdkfd_get_fw_version(kfd->kgd, kfd->mec2_fw_version = amdgpu_amdkfd_get_fw_version(kfd->adev,
KGD_ENGINE_MEC2); KGD_ENGINE_MEC2);
kfd->sdma_fw_version = amdgpu_amdkfd_get_fw_version(kfd->kgd, kfd->sdma_fw_version = amdgpu_amdkfd_get_fw_version(kfd->adev,
KGD_ENGINE_SDMA1); KGD_ENGINE_SDMA1);
kfd->shared_resources = *gpu_resources; kfd->shared_resources = *gpu_resources;
...@@ -996,9 +996,9 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, ...@@ -996,9 +996,9 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
goto kfd_doorbell_error; goto kfd_doorbell_error;
} }
kfd->hive_id = amdgpu_amdkfd_get_hive_id(kfd->kgd); kfd->hive_id = amdgpu_amdkfd_get_hive_id(kfd->adev);
kfd->noretry = amdgpu_amdkfd_get_noretry(kfd->kgd); kfd->noretry = amdgpu_amdkfd_get_noretry(kfd->adev);
if (kfd_interrupt_init(kfd)) { if (kfd_interrupt_init(kfd)) {
dev_err(kfd_device, "Error initializing interrupts\n"); dev_err(kfd_device, "Error initializing interrupts\n");
...@@ -1016,7 +1016,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd, ...@@ -1016,7 +1016,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
*/ */
if (kfd_gws_init(kfd)) { if (kfd_gws_init(kfd)) {
dev_err(kfd_device, "Could not allocate %d gws\n", dev_err(kfd_device, "Could not allocate %d gws\n",
amdgpu_amdkfd_get_num_gws(kfd->kgd)); amdgpu_amdkfd_get_num_gws(kfd->adev));
goto gws_error; goto gws_error;
} }
......
...@@ -100,7 +100,7 @@ void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm, ...@@ -100,7 +100,7 @@ void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm,
struct kfd_cu_info cu_info; struct kfd_cu_info cu_info;
uint32_t cu_per_sh[KFD_MAX_NUM_SE][KFD_MAX_NUM_SH_PER_SE] = {0}; uint32_t cu_per_sh[KFD_MAX_NUM_SE][KFD_MAX_NUM_SH_PER_SE] = {0};
int i, se, sh, cu; int i, se, sh, cu;
amdgpu_amdkfd_get_cu_info(mm->dev->kgd, &cu_info); amdgpu_amdkfd_get_cu_info(mm->dev->adev, &cu_info);
if (cu_mask_count > cu_info.cu_active_number) if (cu_mask_count > cu_info.cu_active_number)
cu_mask_count = cu_info.cu_active_number; cu_mask_count = cu_info.cu_active_number;
......
...@@ -985,7 +985,7 @@ struct kfd_topology_device *kfd_topology_device_by_proximity_domain( ...@@ -985,7 +985,7 @@ struct kfd_topology_device *kfd_topology_device_by_proximity_domain(
struct kfd_topology_device *kfd_topology_device_by_id(uint32_t gpu_id); struct kfd_topology_device *kfd_topology_device_by_id(uint32_t gpu_id);
struct kfd_dev *kfd_device_by_id(uint32_t gpu_id); struct kfd_dev *kfd_device_by_id(uint32_t gpu_id);
struct kfd_dev *kfd_device_by_pci_dev(const struct pci_dev *pdev); struct kfd_dev *kfd_device_by_pci_dev(const struct pci_dev *pdev);
struct kfd_dev *kfd_device_by_kgd(const struct kgd_dev *kgd); struct kfd_dev *kfd_device_by_adev(const struct amdgpu_device *adev);
int kfd_topology_enum_kfd_devices(uint8_t idx, struct kfd_dev **kdev); int kfd_topology_enum_kfd_devices(uint8_t idx, struct kfd_dev **kdev);
int kfd_numa_node_to_apic_id(int numa_node_id); int kfd_numa_node_to_apic_id(int numa_node_id);
void kfd_double_confirm_iommu_support(struct kfd_dev *gpu); void kfd_double_confirm_iommu_support(struct kfd_dev *gpu);
......
...@@ -118,7 +118,7 @@ int pqm_set_gws(struct process_queue_manager *pqm, unsigned int qid, ...@@ -118,7 +118,7 @@ int pqm_set_gws(struct process_queue_manager *pqm, unsigned int qid,
return ret; return ret;
pqn->q->gws = mem; pqn->q->gws = mem;
pdd->qpd.num_gws = gws ? amdgpu_amdkfd_get_num_gws(dev->kgd) : 0; pdd->qpd.num_gws = gws ? amdgpu_amdkfd_get_num_gws(dev->adev) : 0;
return pqn->q->device->dqm->ops.update_queue(pqn->q->device->dqm, return pqn->q->device->dqm->ops.update_queue(pqn->q->device->dqm,
pqn->q, NULL); pqn->q, NULL);
......
...@@ -113,7 +113,7 @@ struct kfd_dev *kfd_device_by_pci_dev(const struct pci_dev *pdev) ...@@ -113,7 +113,7 @@ struct kfd_dev *kfd_device_by_pci_dev(const struct pci_dev *pdev)
return device; return device;
} }
struct kfd_dev *kfd_device_by_kgd(const struct kgd_dev *kgd) struct kfd_dev *kfd_device_by_adev(const struct amdgpu_device *adev)
{ {
struct kfd_topology_device *top_dev; struct kfd_topology_device *top_dev;
struct kfd_dev *device = NULL; struct kfd_dev *device = NULL;
...@@ -121,7 +121,7 @@ struct kfd_dev *kfd_device_by_kgd(const struct kgd_dev *kgd) ...@@ -121,7 +121,7 @@ struct kfd_dev *kfd_device_by_kgd(const struct kgd_dev *kgd)
down_read(&topology_lock); down_read(&topology_lock);
list_for_each_entry(top_dev, &topology_device_list, list) list_for_each_entry(top_dev, &topology_device_list, list)
if (top_dev->gpu && top_dev->gpu->kgd == kgd) { if (top_dev->gpu && top_dev->gpu->adev == adev) {
device = top_dev->gpu; device = top_dev->gpu;
break; break;
} }
...@@ -531,7 +531,7 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr, ...@@ -531,7 +531,7 @@ static ssize_t node_show(struct kobject *kobj, struct attribute *attr,
sysfs_show_32bit_prop(buffer, offs, "sdma_fw_version", sysfs_show_32bit_prop(buffer, offs, "sdma_fw_version",
dev->gpu->sdma_fw_version); dev->gpu->sdma_fw_version);
sysfs_show_64bit_prop(buffer, offs, "unique_id", sysfs_show_64bit_prop(buffer, offs, "unique_id",
amdgpu_amdkfd_get_unique_id(dev->gpu->kgd)); amdgpu_amdkfd_get_unique_id(dev->gpu->adev));
} }
...@@ -1106,7 +1106,7 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu) ...@@ -1106,7 +1106,7 @@ static uint32_t kfd_generate_gpu_id(struct kfd_dev *gpu)
if (!gpu) if (!gpu)
return 0; return 0;
amdgpu_amdkfd_get_local_mem_info(gpu->kgd, &local_mem_info); amdgpu_amdkfd_get_local_mem_info(gpu->adev, &local_mem_info);
local_mem_size = local_mem_info.local_mem_size_private + local_mem_size = local_mem_info.local_mem_size_private +
local_mem_info.local_mem_size_public; local_mem_info.local_mem_size_public;
...@@ -1189,7 +1189,7 @@ static void kfd_fill_mem_clk_max_info(struct kfd_topology_device *dev) ...@@ -1189,7 +1189,7 @@ static void kfd_fill_mem_clk_max_info(struct kfd_topology_device *dev)
* for APUs - If CRAT from ACPI reports more than one bank, then * for APUs - If CRAT from ACPI reports more than one bank, then
* all the banks will report the same mem_clk_max information * all the banks will report the same mem_clk_max information
*/ */
amdgpu_amdkfd_get_local_mem_info(dev->gpu->kgd, &local_mem_info); amdgpu_amdkfd_get_local_mem_info(dev->gpu->adev, &local_mem_info);
list_for_each_entry(mem, &dev->mem_props, list) list_for_each_entry(mem, &dev->mem_props, list)
mem->mem_clk_max = local_mem_info.mem_clk_max; mem->mem_clk_max = local_mem_info.mem_clk_max;
...@@ -1372,7 +1372,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu) ...@@ -1372,7 +1372,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
* needed for the topology * needed for the topology
*/ */
amdgpu_amdkfd_get_cu_info(dev->gpu->kgd, &cu_info); amdgpu_amdkfd_get_cu_info(dev->gpu->adev, &cu_info);
strncpy(dev->node_props.name, gpu->device_info->asic_name, strncpy(dev->node_props.name, gpu->device_info->asic_name,
KFD_TOPOLOGY_PUBLIC_NAME_SIZE); KFD_TOPOLOGY_PUBLIC_NAME_SIZE);
...@@ -1384,13 +1384,13 @@ int kfd_topology_add_device(struct kfd_dev *gpu) ...@@ -1384,13 +1384,13 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
dev->node_props.vendor_id = gpu->pdev->vendor; dev->node_props.vendor_id = gpu->pdev->vendor;
dev->node_props.device_id = gpu->pdev->device; dev->node_props.device_id = gpu->pdev->device;
dev->node_props.capability |= dev->node_props.capability |=
((amdgpu_amdkfd_get_asic_rev_id(dev->gpu->kgd) << ((amdgpu_amdkfd_get_asic_rev_id(dev->gpu->adev) <<
HSA_CAP_ASIC_REVISION_SHIFT) & HSA_CAP_ASIC_REVISION_SHIFT) &
HSA_CAP_ASIC_REVISION_MASK); HSA_CAP_ASIC_REVISION_MASK);
dev->node_props.location_id = pci_dev_id(gpu->pdev); dev->node_props.location_id = pci_dev_id(gpu->pdev);
dev->node_props.domain = pci_domain_nr(gpu->pdev->bus); dev->node_props.domain = pci_domain_nr(gpu->pdev->bus);
dev->node_props.max_engine_clk_fcompute = dev->node_props.max_engine_clk_fcompute =
amdgpu_amdkfd_get_max_engine_clock_in_mhz(dev->gpu->kgd); amdgpu_amdkfd_get_max_engine_clock_in_mhz(dev->gpu->adev);
dev->node_props.max_engine_clk_ccompute = dev->node_props.max_engine_clk_ccompute =
cpufreq_quick_get_max(0) / 1000; cpufreq_quick_get_max(0) / 1000;
dev->node_props.drm_render_minor = dev->node_props.drm_render_minor =
...@@ -1404,7 +1404,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu) ...@@ -1404,7 +1404,7 @@ int kfd_topology_add_device(struct kfd_dev *gpu)
gpu->device_info->num_sdma_queues_per_engine; gpu->device_info->num_sdma_queues_per_engine;
dev->node_props.num_gws = (dev->gpu->gws && dev->node_props.num_gws = (dev->gpu->gws &&
dev->gpu->dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) ? dev->gpu->dqm->sched_policy != KFD_SCHED_POLICY_NO_HWS) ?
amdgpu_amdkfd_get_num_gws(dev->gpu->kgd) : 0; amdgpu_amdkfd_get_num_gws(dev->gpu->adev) : 0;
dev->node_props.num_cp_queues = get_cp_queues_num(dev->gpu->dqm); dev->node_props.num_cp_queues = get_cp_queues_num(dev->gpu->dqm);
kfd_fill_mem_clk_max_info(dev); kfd_fill_mem_clk_max_info(dev);
......
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