1 /* SPDX-License-Identifier: MIT */
2 /*
3  * Copyright © 2022 Intel Corporation
4  */
5 
6 #ifndef _XE_EXECLIST_TYPES_H_
7 #define _XE_EXECLIST_TYPES_H_
8 
9 #include <linux/list.h>
10 #include <linux/spinlock.h>
11 #include <linux/workqueue.h>
12 
13 #include "xe_exec_queue_types.h"
14 
15 struct xe_hw_engine;
16 struct xe_execlist_exec_queue;
17 
18 struct xe_execlist_port {
19 	struct xe_hw_engine *hwe;
20 
21 	spinlock_t lock;
22 
23 	struct list_head active[XE_EXEC_QUEUE_PRIORITY_COUNT];
24 
25 	u32 last_ctx_id;
26 
27 	struct xe_execlist_exec_queue *running_exl;
28 
29 	struct timer_list irq_fail;
30 
31 	struct xe_lrc *lrc;
32 };
33 
34 struct xe_execlist_exec_queue {
35 	struct xe_exec_queue *q;
36 
37 	struct drm_gpu_scheduler sched;
38 
39 	struct drm_sched_entity entity;
40 
41 	struct xe_execlist_port *port;
42 
43 	bool has_run;
44 
45 	struct work_struct fini_async;
46 
47 	enum xe_exec_queue_priority active_priority;
48 	struct list_head active_link;
49 };
50 
51 #endif
52