drm/amdgpu: Add struct kiq_pm4_funcs into kiq struct
authorRex Zhu <Rex.Zhu@amd.com>
Wed, 22 Aug 2018 03:44:20 +0000 (11:44 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 21 Jun 2019 02:20:57 +0000 (21:20 -0500)
kiq can support 4 pm4 scheduler packets
set_resource, map_queues, unmap_queues, query_status.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h

index f2441c02f9db100c59e3ae3c84ec97917609ec1b..14d6f01db27b92b30ae1a59fd8a944a5b4e84952 100644 (file)
@@ -55,12 +55,32 @@ struct amdgpu_mec {
        DECLARE_BITMAP(queue_bitmap, AMDGPU_MAX_COMPUTE_QUEUES);
 };
 
+struct kiq_pm4_funcs {
+       /* Support ASIC-specific kiq pm4 packets*/
+       void (*kiq_set_resources)(struct amdgpu_ring *kiq_ring,
+                                       uint64_t queue_mask);
+       void (*kiq_map_queues)(struct amdgpu_ring *kiq_ring,
+                                       struct amdgpu_ring *ring);
+       void (*kiq_unmap_queues)(struct amdgpu_ring *kiq_ring,
+                                struct amdgpu_ring *ring, bool reset);
+       void (*kiq_query_status)(struct amdgpu_ring *kiq_ring,
+                                       struct amdgpu_ring *ring,
+                                       u64 addr,
+                                       u64 seq);
+       /* Packet sizes */
+       int set_resources_size;
+       int map_queues_size;
+       int unmap_queues_size;
+       int query_status_size;
+};
+
 struct amdgpu_kiq {
        u64                     eop_gpu_addr;
        struct amdgpu_bo        *eop_obj;
        spinlock_t              ring_lock;
        struct amdgpu_ring      ring;
        struct amdgpu_irq_src   irq;
+       const struct kiq_pm4_funcs *pmf;
 };
 
 /*