xref: /linux/drivers/gpu/drm/xe/abi/guc_scheduler_abi.h (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1b0c5cf4fSDaniele Ceraolo Spurio /* SPDX-License-Identifier: MIT */
2b0c5cf4fSDaniele Ceraolo Spurio /*
3b0c5cf4fSDaniele Ceraolo Spurio  * Copyright © 2025 Intel Corporation
4b0c5cf4fSDaniele Ceraolo Spurio  */
5b0c5cf4fSDaniele Ceraolo Spurio 
6b0c5cf4fSDaniele Ceraolo Spurio #ifndef _ABI_GUC_SCHEDULER_ABI_H
7b0c5cf4fSDaniele Ceraolo Spurio #define _ABI_GUC_SCHEDULER_ABI_H
8b0c5cf4fSDaniele Ceraolo Spurio 
950290b7aSDaniele Ceraolo Spurio #include <linux/types.h>
1050290b7aSDaniele Ceraolo Spurio 
11*62829951SChaitanya Kumar Borah /*
12b0c5cf4fSDaniele Ceraolo Spurio  * Generic defines required for registration with and submissions to the GuC
13b0c5cf4fSDaniele Ceraolo Spurio  * scheduler. Includes engine class/instance defines and context attributes
14b0c5cf4fSDaniele Ceraolo Spurio  * (id, priority, etc)
15b0c5cf4fSDaniele Ceraolo Spurio  */
16b0c5cf4fSDaniele Ceraolo Spurio 
17b0c5cf4fSDaniele Ceraolo Spurio /* Engine classes/instances */
18b0c5cf4fSDaniele Ceraolo Spurio #define GUC_RENDER_CLASS		0
19b0c5cf4fSDaniele Ceraolo Spurio #define GUC_VIDEO_CLASS			1
20b0c5cf4fSDaniele Ceraolo Spurio #define GUC_VIDEOENHANCE_CLASS		2
21b0c5cf4fSDaniele Ceraolo Spurio #define GUC_BLITTER_CLASS		3
22b0c5cf4fSDaniele Ceraolo Spurio #define GUC_COMPUTE_CLASS		4
23b0c5cf4fSDaniele Ceraolo Spurio #define GUC_GSC_OTHER_CLASS		5
24b0c5cf4fSDaniele Ceraolo Spurio #define GUC_LAST_ENGINE_CLASS		GUC_GSC_OTHER_CLASS
25b0c5cf4fSDaniele Ceraolo Spurio #define GUC_MAX_ENGINE_CLASSES		16
26b0c5cf4fSDaniele Ceraolo Spurio #define GUC_MAX_INSTANCES_PER_CLASS	32
27b0c5cf4fSDaniele Ceraolo Spurio 
28b0c5cf4fSDaniele Ceraolo Spurio /* context priority values */
29b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CLIENT_PRIORITY_KMD_HIGH	0
30b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CLIENT_PRIORITY_HIGH	1
31b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CLIENT_PRIORITY_KMD_NORMAL	2
32b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CLIENT_PRIORITY_NORMAL	3
33b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CLIENT_PRIORITY_NUM		4
34b0c5cf4fSDaniele Ceraolo Spurio 
35b0c5cf4fSDaniele Ceraolo Spurio /* Context registration */
36b0c5cf4fSDaniele Ceraolo Spurio #define GUC_ID_MAX			65535
37b0c5cf4fSDaniele Ceraolo Spurio #define GUC_ID_UNKNOWN			0xffffffff
38b0c5cf4fSDaniele Ceraolo Spurio 
39b0c5cf4fSDaniele Ceraolo Spurio #define CONTEXT_REGISTRATION_FLAG_KMD	        BIT(0)
40b0c5cf4fSDaniele Ceraolo Spurio #define CONTEXT_REGISTRATION_FLAG_TYPE	        GENMASK(2, 1)
41b0c5cf4fSDaniele Ceraolo Spurio #define   GUC_CONTEXT_NORMAL			0
42b0c5cf4fSDaniele Ceraolo Spurio #define   GUC_CONTEXT_COMPRESSION_SAVE		1
43b0c5cf4fSDaniele Ceraolo Spurio #define   GUC_CONTEXT_COMPRESSION_RESTORE	2
44b0c5cf4fSDaniele Ceraolo Spurio #define   GUC_CONTEXT_COUNT			(GUC_CONTEXT_COMPRESSION_RESTORE + 1)
45b0c5cf4fSDaniele Ceraolo Spurio 
46b0c5cf4fSDaniele Ceraolo Spurio /* context enable/disable */
47b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CONTEXT_DISABLE		0
48b0c5cf4fSDaniele Ceraolo Spurio #define GUC_CONTEXT_ENABLE		1
49b0c5cf4fSDaniele Ceraolo Spurio 
5050290b7aSDaniele Ceraolo Spurio /* scheduler groups */
5150290b7aSDaniele Ceraolo Spurio #define GUC_MAX_SCHED_GROUPS		8
5250290b7aSDaniele Ceraolo Spurio 
5350290b7aSDaniele Ceraolo Spurio struct guc_sched_group {
5450290b7aSDaniele Ceraolo Spurio 	u32 engines[GUC_MAX_ENGINE_CLASSES];
5550290b7aSDaniele Ceraolo Spurio } __packed;
5650290b7aSDaniele Ceraolo Spurio 
57b0c5cf4fSDaniele Ceraolo Spurio #endif
58