These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / gpu / drm / amd / amdkfd / kfd_device_queue_manager.h
index 488f51d..ec4036a 100644 (file)
@@ -88,9 +88,11 @@ struct device_queue_manager_ops {
                                struct queue *q,
                                struct qcm_process_device *qpd,
                                int *allocate_vmid);
+
        int     (*destroy_queue)(struct device_queue_manager *dqm,
                                struct qcm_process_device *qpd,
                                struct queue *q);
+
        int     (*update_queue)(struct device_queue_manager *dqm,
                                struct queue *q);
 
@@ -100,8 +102,10 @@ struct device_queue_manager_ops {
 
        int     (*register_process)(struct device_queue_manager *dqm,
                                        struct qcm_process_device *qpd);
+
        int     (*unregister_process)(struct device_queue_manager *dqm,
                                        struct qcm_process_device *qpd);
+
        int     (*initialize)(struct device_queue_manager *dqm);
        int     (*start)(struct device_queue_manager *dqm);
        int     (*stop)(struct device_queue_manager *dqm);
@@ -109,15 +113,32 @@ struct device_queue_manager_ops {
        int     (*create_kernel_queue)(struct device_queue_manager *dqm,
                                        struct kernel_queue *kq,
                                        struct qcm_process_device *qpd);
+
        void    (*destroy_kernel_queue)(struct device_queue_manager *dqm,
                                        struct kernel_queue *kq,
                                        struct qcm_process_device *qpd);
+
+       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_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);
+       void    (*init_sdma_vm)(struct device_queue_manager *dqm,
+                               struct queue *q,
+                               struct qcm_process_device *qpd);
 };
 
 /**
@@ -134,7 +155,7 @@ struct device_queue_manager_ops {
 
 struct device_queue_manager {
        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 packet_manager   packets;
@@ -157,8 +178,8 @@ struct device_queue_manager {
        bool                    active_runlist;
 };
 
-void device_queue_manager_init_cik(struct device_queue_manager_ops *ops);
-void device_queue_manager_init_vi(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_asic_ops *ops);
 void program_sh_mem_settings(struct device_queue_manager *dqm,
                                        struct qcm_process_device *qpd);
 int init_pipelines(struct device_queue_manager *dqm,