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