Commit d42af779 authored by Oded Gabbay's avatar Oded Gabbay

drm/amdkfd: Use new struct for asic specific ops

This patch creates a new structure for asic specific operations, instead
of using the existing structure of operations.

This is done to make the code flow more logic, readable and maintainable.

The change is done only to the device queue manager module at this point.
Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 8856d8e0
...@@ -120,6 +120,18 @@ struct device_queue_manager_ops { ...@@ -120,6 +120,18 @@ struct device_queue_manager_ops {
uint64_t alternate_aperture_size); uint64_t alternate_aperture_size);
}; };
struct device_queue_manager_asic_ops {
int (*register_process)(struct device_queue_manager *dqm,
struct qcm_process_device *qpd);
int (*initialize)(struct device_queue_manager *dqm);
bool (*set_cache_memory_policy)(struct device_queue_manager *dqm,
struct qcm_process_device *qpd,
enum cache_policy default_policy,
enum cache_policy alternate_policy,
void __user *alternate_aperture_base,
uint64_t alternate_aperture_size);
};
/** /**
* struct device_queue_manager * struct device_queue_manager
* *
...@@ -134,7 +146,7 @@ struct device_queue_manager_ops { ...@@ -134,7 +146,7 @@ struct device_queue_manager_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_ops ops_asic_specific; struct device_queue_manager_asic_ops ops_asic_specific;
struct mqd_manager *mqds[KFD_MQD_TYPE_MAX]; struct mqd_manager *mqds[KFD_MQD_TYPE_MAX];
struct packet_manager packets; struct packet_manager packets;
...@@ -157,8 +169,8 @@ struct device_queue_manager { ...@@ -157,8 +169,8 @@ struct device_queue_manager {
bool active_runlist; bool active_runlist;
}; };
void device_queue_manager_init_cik(struct device_queue_manager_ops *ops); void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops);
void device_queue_manager_init_vi(struct device_queue_manager_ops *ops); void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *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);
int init_pipelines(struct device_queue_manager *dqm, int init_pipelines(struct device_queue_manager *dqm,
......
...@@ -34,7 +34,7 @@ static int register_process_cik(struct device_queue_manager *dqm, ...@@ -34,7 +34,7 @@ static int register_process_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 int initialize_cpsch_cik(struct device_queue_manager *dqm);
void device_queue_manager_init_cik(struct device_queue_manager_ops *ops) void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops)
{ {
ops->set_cache_memory_policy = set_cache_memory_policy_cik; ops->set_cache_memory_policy = set_cache_memory_policy_cik;
ops->register_process = register_process_cik; ops->register_process = register_process_cik;
......
...@@ -33,7 +33,7 @@ static int register_process_vi(struct device_queue_manager *dqm, ...@@ -33,7 +33,7 @@ static int register_process_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 int initialize_cpsch_vi(struct device_queue_manager *dqm);
void device_queue_manager_init_vi(struct device_queue_manager_ops *ops) void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops)
{ {
pr_warn("amdkfd: VI DQM is not currently supported\n"); pr_warn("amdkfd: VI DQM is not currently supported\n");
......
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