Commit 972fcdb5 authored by Oak Zeng's avatar Oak Zeng Committed by Alex Deucher

drm/amdkfd: Introduce asic-specific mqd_manager_init function

Global function mqd_manager_init just calls asic-specific functions and it
is not necessary. Delete it and introduce a mqd_manager_init interface in
dqm for asic-specific mqd manager init. Call mqd_manager_init interface
directly to initialize mqd manager
Signed-off-by: default avatarOak Zeng <ozeng@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 1986a3b0
...@@ -583,7 +583,7 @@ static struct mqd_manager *get_mqd_manager( ...@@ -583,7 +583,7 @@ static struct mqd_manager *get_mqd_manager(
mqd_mgr = dqm->mqd_mgrs[type]; mqd_mgr = dqm->mqd_mgrs[type];
if (!mqd_mgr) { if (!mqd_mgr) {
mqd_mgr = mqd_manager_init(type, dqm->dev); mqd_mgr = dqm->asic_ops.mqd_manager_init(type, dqm->dev);
if (!mqd_mgr) if (!mqd_mgr)
pr_err("mqd manager is NULL"); pr_err("mqd manager is NULL");
dqm->mqd_mgrs[type] = mqd_mgr; dqm->mqd_mgrs[type] = mqd_mgr;
......
...@@ -158,6 +158,8 @@ struct device_queue_manager_asic_ops { ...@@ -158,6 +158,8 @@ struct device_queue_manager_asic_ops {
void (*init_sdma_vm)(struct device_queue_manager *dqm, void (*init_sdma_vm)(struct device_queue_manager *dqm,
struct queue *q, struct queue *q,
struct qcm_process_device *qpd); struct qcm_process_device *qpd);
struct mqd_manager * (*mqd_manager_init)(enum KFD_MQD_TYPE type,
struct kfd_dev *dev);
}; };
/** /**
......
...@@ -48,6 +48,7 @@ void device_queue_manager_init_cik( ...@@ -48,6 +48,7 @@ void device_queue_manager_init_cik(
asic_ops->set_cache_memory_policy = set_cache_memory_policy_cik; asic_ops->set_cache_memory_policy = set_cache_memory_policy_cik;
asic_ops->update_qpd = update_qpd_cik; asic_ops->update_qpd = update_qpd_cik;
asic_ops->init_sdma_vm = init_sdma_vm; asic_ops->init_sdma_vm = init_sdma_vm;
asic_ops->mqd_manager_init = mqd_manager_init_cik;
} }
void device_queue_manager_init_cik_hawaii( void device_queue_manager_init_cik_hawaii(
...@@ -56,6 +57,7 @@ void device_queue_manager_init_cik_hawaii( ...@@ -56,6 +57,7 @@ void device_queue_manager_init_cik_hawaii(
asic_ops->set_cache_memory_policy = set_cache_memory_policy_cik; asic_ops->set_cache_memory_policy = set_cache_memory_policy_cik;
asic_ops->update_qpd = update_qpd_cik_hawaii; asic_ops->update_qpd = update_qpd_cik_hawaii;
asic_ops->init_sdma_vm = init_sdma_vm_hawaii; asic_ops->init_sdma_vm = init_sdma_vm_hawaii;
asic_ops->mqd_manager_init = mqd_manager_init_cik_hawaii;
} }
static uint32_t compute_sh_mem_bases_64bit(unsigned int top_address_nybble) static uint32_t compute_sh_mem_bases_64bit(unsigned int top_address_nybble)
......
...@@ -37,6 +37,7 @@ void device_queue_manager_init_v9( ...@@ -37,6 +37,7 @@ void device_queue_manager_init_v9(
{ {
asic_ops->update_qpd = update_qpd_v9; asic_ops->update_qpd = update_qpd_v9;
asic_ops->init_sdma_vm = init_sdma_vm_v9; asic_ops->init_sdma_vm = init_sdma_vm_v9;
asic_ops->mqd_manager_init = mqd_manager_init_v9;
} }
static uint32_t compute_sh_mem_bases_64bit(struct kfd_process_device *pdd) static uint32_t compute_sh_mem_bases_64bit(struct kfd_process_device *pdd)
......
...@@ -54,6 +54,7 @@ void device_queue_manager_init_vi( ...@@ -54,6 +54,7 @@ void device_queue_manager_init_vi(
asic_ops->set_cache_memory_policy = set_cache_memory_policy_vi; asic_ops->set_cache_memory_policy = set_cache_memory_policy_vi;
asic_ops->update_qpd = update_qpd_vi; asic_ops->update_qpd = update_qpd_vi;
asic_ops->init_sdma_vm = init_sdma_vm; asic_ops->init_sdma_vm = init_sdma_vm;
asic_ops->mqd_manager_init = mqd_manager_init_vi;
} }
void device_queue_manager_init_vi_tonga( void device_queue_manager_init_vi_tonga(
...@@ -62,6 +63,7 @@ void device_queue_manager_init_vi_tonga( ...@@ -62,6 +63,7 @@ void device_queue_manager_init_vi_tonga(
asic_ops->set_cache_memory_policy = set_cache_memory_policy_vi_tonga; asic_ops->set_cache_memory_policy = set_cache_memory_policy_vi_tonga;
asic_ops->update_qpd = update_qpd_vi_tonga; asic_ops->update_qpd = update_qpd_vi_tonga;
asic_ops->init_sdma_vm = init_sdma_vm_tonga; asic_ops->init_sdma_vm = init_sdma_vm_tonga;
asic_ops->mqd_manager_init = mqd_manager_init_vi_tonga;
} }
static uint32_t compute_sh_mem_bases_64bit(unsigned int top_address_nybble) static uint32_t compute_sh_mem_bases_64bit(unsigned int top_address_nybble)
......
...@@ -24,35 +24,6 @@ ...@@ -24,35 +24,6 @@
#include "kfd_mqd_manager.h" #include "kfd_mqd_manager.h"
#include "amdgpu_amdkfd.h" #include "amdgpu_amdkfd.h"
struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type,
struct kfd_dev *dev)
{
switch (dev->device_info->asic_family) {
case CHIP_KAVERI:
return mqd_manager_init_cik(type, dev);
case CHIP_HAWAII:
return mqd_manager_init_cik_hawaii(type, dev);
case CHIP_CARRIZO:
return mqd_manager_init_vi(type, dev);
case CHIP_TONGA:
case CHIP_FIJI:
case CHIP_POLARIS10:
case CHIP_POLARIS11:
case CHIP_POLARIS12:
return mqd_manager_init_vi_tonga(type, dev);
case CHIP_VEGA10:
case CHIP_VEGA12:
case CHIP_VEGA20:
case CHIP_RAVEN:
return mqd_manager_init_v9(type, dev);
default:
WARN(1, "Unexpected ASIC family %u",
dev->device_info->asic_family);
}
return NULL;
}
void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm, void mqd_symmetrically_map_cu_mask(struct mqd_manager *mm,
const uint32_t *cu_mask, uint32_t cu_mask_count, const uint32_t *cu_mask, uint32_t cu_mask_count,
uint32_t *se_mask) uint32_t *se_mask)
......
...@@ -819,8 +819,6 @@ void uninit_queue(struct queue *q); ...@@ -819,8 +819,6 @@ void uninit_queue(struct queue *q);
void print_queue_properties(struct queue_properties *q); void print_queue_properties(struct queue_properties *q);
void print_queue(struct queue *q); void print_queue(struct queue *q);
struct mqd_manager *mqd_manager_init(enum KFD_MQD_TYPE type,
struct kfd_dev *dev);
struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE type, struct mqd_manager *mqd_manager_init_cik(enum KFD_MQD_TYPE type,
struct kfd_dev *dev); struct kfd_dev *dev);
struct mqd_manager *mqd_manager_init_cik_hawaii(enum KFD_MQD_TYPE type, struct mqd_manager *mqd_manager_init_cik_hawaii(enum KFD_MQD_TYPE type,
......
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