drm/amdkfd: Cleanup DQM ASIC-specific ops
Remove empty initialize function. Rename register_process to update_qpd to avoid confusion with the non-ASIC-specific register_process. Shorten ops_asic_specific to asic_ops. Signed-off-by: Yong Zhao <yong.zhao@amd.com> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>hifive-unleashed-5.1
parent
5a29ad6b9e
commit
bfd5e378a9
|
@ -467,7 +467,7 @@ static int register_process(struct device_queue_manager *dqm,
|
||||||
mutex_lock(&dqm->lock);
|
mutex_lock(&dqm->lock);
|
||||||
list_add(&n->list, &dqm->queues);
|
list_add(&n->list, &dqm->queues);
|
||||||
|
|
||||||
retval = dqm->ops_asic_specific.register_process(dqm, qpd);
|
retval = dqm->asic_ops.update_qpd(dqm, qpd);
|
||||||
|
|
||||||
dqm->processes_count++;
|
dqm->processes_count++;
|
||||||
|
|
||||||
|
@ -629,7 +629,7 @@ static int create_sdma_queue_nocpsch(struct device_queue_manager *dqm,
|
||||||
pr_debug("SDMA queue id: %d\n", q->properties.sdma_queue_id);
|
pr_debug("SDMA queue id: %d\n", q->properties.sdma_queue_id);
|
||||||
pr_debug("SDMA engine id: %d\n", q->properties.sdma_engine_id);
|
pr_debug("SDMA engine id: %d\n", q->properties.sdma_engine_id);
|
||||||
|
|
||||||
dqm->ops_asic_specific.init_sdma_vm(dqm, q, qpd);
|
dqm->asic_ops.init_sdma_vm(dqm, q, qpd);
|
||||||
retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
|
retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
|
||||||
&q->gart_mqd_addr, &q->properties);
|
&q->gart_mqd_addr, &q->properties);
|
||||||
if (retval)
|
if (retval)
|
||||||
|
@ -696,8 +696,6 @@ static int set_sched_resources(struct device_queue_manager *dqm)
|
||||||
|
|
||||||
static int initialize_cpsch(struct device_queue_manager *dqm)
|
static int initialize_cpsch(struct device_queue_manager *dqm)
|
||||||
{
|
{
|
||||||
int retval;
|
|
||||||
|
|
||||||
pr_debug("num of pipes: %d\n", get_pipes_per_mec(dqm));
|
pr_debug("num of pipes: %d\n", get_pipes_per_mec(dqm));
|
||||||
|
|
||||||
mutex_init(&dqm->lock);
|
mutex_init(&dqm->lock);
|
||||||
|
@ -706,11 +704,8 @@ static int initialize_cpsch(struct device_queue_manager *dqm)
|
||||||
dqm->sdma_queue_count = 0;
|
dqm->sdma_queue_count = 0;
|
||||||
dqm->active_runlist = false;
|
dqm->active_runlist = false;
|
||||||
dqm->sdma_bitmap = (1 << CIK_SDMA_QUEUES) - 1;
|
dqm->sdma_bitmap = (1 << CIK_SDMA_QUEUES) - 1;
|
||||||
retval = dqm->ops_asic_specific.initialize(dqm);
|
|
||||||
if (retval)
|
|
||||||
mutex_destroy(&dqm->lock);
|
|
||||||
|
|
||||||
return retval;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int start_cpsch(struct device_queue_manager *dqm)
|
static int start_cpsch(struct device_queue_manager *dqm)
|
||||||
|
@ -850,7 +845,7 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
dqm->ops_asic_specific.init_sdma_vm(dqm, q, qpd);
|
dqm->asic_ops.init_sdma_vm(dqm, q, qpd);
|
||||||
retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
|
retval = mqd->init_mqd(mqd, &q->mqd, &q->mqd_mem_obj,
|
||||||
&q->gart_mqd_addr, &q->properties);
|
&q->gart_mqd_addr, &q->properties);
|
||||||
if (retval)
|
if (retval)
|
||||||
|
@ -1095,7 +1090,7 @@ static bool set_cache_memory_policy(struct device_queue_manager *dqm,
|
||||||
qpd->sh_mem_ape1_limit = limit >> 16;
|
qpd->sh_mem_ape1_limit = limit >> 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = dqm->ops_asic_specific.set_cache_memory_policy(
|
retval = dqm->asic_ops.set_cache_memory_policy(
|
||||||
dqm,
|
dqm,
|
||||||
qpd,
|
qpd,
|
||||||
default_policy,
|
default_policy,
|
||||||
|
@ -1270,11 +1265,11 @@ struct device_queue_manager *device_queue_manager_init(struct kfd_dev *dev)
|
||||||
|
|
||||||
switch (dev->device_info->asic_family) {
|
switch (dev->device_info->asic_family) {
|
||||||
case CHIP_CARRIZO:
|
case CHIP_CARRIZO:
|
||||||
device_queue_manager_init_vi(&dqm->ops_asic_specific);
|
device_queue_manager_init_vi(&dqm->asic_ops);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CHIP_KAVERI:
|
case CHIP_KAVERI:
|
||||||
device_queue_manager_init_cik(&dqm->ops_asic_specific);
|
device_queue_manager_init_cik(&dqm->asic_ops);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
WARN(1, "Unexpected ASIC family %u",
|
WARN(1, "Unexpected ASIC family %u",
|
||||||
|
|
|
@ -128,9 +128,8 @@ struct device_queue_manager_ops {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct device_queue_manager_asic_ops {
|
struct device_queue_manager_asic_ops {
|
||||||
int (*register_process)(struct device_queue_manager *dqm,
|
int (*update_qpd)(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd);
|
struct qcm_process_device *qpd);
|
||||||
int (*initialize)(struct device_queue_manager *dqm);
|
|
||||||
bool (*set_cache_memory_policy)(struct device_queue_manager *dqm,
|
bool (*set_cache_memory_policy)(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd,
|
struct qcm_process_device *qpd,
|
||||||
enum cache_policy default_policy,
|
enum cache_policy default_policy,
|
||||||
|
@ -156,7 +155,7 @@ struct device_queue_manager_asic_ops {
|
||||||
|
|
||||||
struct device_queue_manager {
|
struct device_queue_manager {
|
||||||
struct device_queue_manager_ops ops;
|
struct device_queue_manager_ops ops;
|
||||||
struct device_queue_manager_asic_ops ops_asic_specific;
|
struct device_queue_manager_asic_ops asic_ops;
|
||||||
|
|
||||||
struct mqd_manager *mqds[KFD_MQD_TYPE_MAX];
|
struct mqd_manager *mqds[KFD_MQD_TYPE_MAX];
|
||||||
struct packet_manager packets;
|
struct packet_manager packets;
|
||||||
|
@ -179,8 +178,10 @@ struct device_queue_manager {
|
||||||
bool active_runlist;
|
bool active_runlist;
|
||||||
};
|
};
|
||||||
|
|
||||||
void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops);
|
void device_queue_manager_init_cik(
|
||||||
void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops);
|
struct device_queue_manager_asic_ops *asic_ops);
|
||||||
|
void device_queue_manager_init_vi(
|
||||||
|
struct device_queue_manager_asic_ops *asic_ops);
|
||||||
void program_sh_mem_settings(struct device_queue_manager *dqm,
|
void program_sh_mem_settings(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd);
|
struct qcm_process_device *qpd);
|
||||||
unsigned int get_queues_num(struct device_queue_manager *dqm);
|
unsigned int get_queues_num(struct device_queue_manager *dqm);
|
||||||
|
|
|
@ -32,18 +32,17 @@ static bool set_cache_memory_policy_cik(struct device_queue_manager *dqm,
|
||||||
enum cache_policy alternate_policy,
|
enum cache_policy alternate_policy,
|
||||||
void __user *alternate_aperture_base,
|
void __user *alternate_aperture_base,
|
||||||
uint64_t alternate_aperture_size);
|
uint64_t alternate_aperture_size);
|
||||||
static int register_process_cik(struct device_queue_manager *dqm,
|
static int update_qpd_cik(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd);
|
struct qcm_process_device *qpd);
|
||||||
static int initialize_cpsch_cik(struct device_queue_manager *dqm);
|
|
||||||
static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
|
static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
|
||||||
struct qcm_process_device *qpd);
|
struct qcm_process_device *qpd);
|
||||||
|
|
||||||
void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops)
|
void device_queue_manager_init_cik(
|
||||||
|
struct device_queue_manager_asic_ops *asic_ops)
|
||||||
{
|
{
|
||||||
ops->set_cache_memory_policy = set_cache_memory_policy_cik;
|
asic_ops->set_cache_memory_policy = set_cache_memory_policy_cik;
|
||||||
ops->register_process = register_process_cik;
|
asic_ops->update_qpd = update_qpd_cik;
|
||||||
ops->initialize = initialize_cpsch_cik;
|
asic_ops->init_sdma_vm = init_sdma_vm;
|
||||||
ops->init_sdma_vm = init_sdma_vm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
@ -99,7 +98,7 @@ static bool set_cache_memory_policy_cik(struct device_queue_manager *dqm,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int register_process_cik(struct device_queue_manager *dqm,
|
static int update_qpd_cik(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd)
|
struct qcm_process_device *qpd)
|
||||||
{
|
{
|
||||||
struct kfd_process_device *pdd;
|
struct kfd_process_device *pdd;
|
||||||
|
@ -148,8 +147,3 @@ static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
|
||||||
|
|
||||||
q->properties.sdma_vm_addr = value;
|
q->properties.sdma_vm_addr = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int initialize_cpsch_cik(struct device_queue_manager *dqm)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -33,18 +33,17 @@ static bool set_cache_memory_policy_vi(struct device_queue_manager *dqm,
|
||||||
enum cache_policy alternate_policy,
|
enum cache_policy alternate_policy,
|
||||||
void __user *alternate_aperture_base,
|
void __user *alternate_aperture_base,
|
||||||
uint64_t alternate_aperture_size);
|
uint64_t alternate_aperture_size);
|
||||||
static int register_process_vi(struct device_queue_manager *dqm,
|
static int update_qpd_vi(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd);
|
struct qcm_process_device *qpd);
|
||||||
static int initialize_cpsch_vi(struct device_queue_manager *dqm);
|
|
||||||
static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
|
static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
|
||||||
struct qcm_process_device *qpd);
|
struct qcm_process_device *qpd);
|
||||||
|
|
||||||
void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops)
|
void device_queue_manager_init_vi(
|
||||||
|
struct device_queue_manager_asic_ops *asic_ops)
|
||||||
{
|
{
|
||||||
ops->set_cache_memory_policy = set_cache_memory_policy_vi;
|
asic_ops->set_cache_memory_policy = set_cache_memory_policy_vi;
|
||||||
ops->register_process = register_process_vi;
|
asic_ops->update_qpd = update_qpd_vi;
|
||||||
ops->initialize = initialize_cpsch_vi;
|
asic_ops->init_sdma_vm = init_sdma_vm;
|
||||||
ops->init_sdma_vm = init_sdma_vm;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
@ -104,7 +103,7 @@ static bool set_cache_memory_policy_vi(struct device_queue_manager *dqm,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int register_process_vi(struct device_queue_manager *dqm,
|
static int update_qpd_vi(struct device_queue_manager *dqm,
|
||||||
struct qcm_process_device *qpd)
|
struct qcm_process_device *qpd)
|
||||||
{
|
{
|
||||||
struct kfd_process_device *pdd;
|
struct kfd_process_device *pdd;
|
||||||
|
@ -160,8 +159,3 @@ static void init_sdma_vm(struct device_queue_manager *dqm, struct queue *q,
|
||||||
|
|
||||||
q->properties.sdma_vm_addr = value;
|
q->properties.sdma_vm_addr = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int initialize_cpsch_vi(struct device_queue_manager *dqm)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue