1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2021 Intel Corporation 4 */ 5 6 #ifndef _ABI_GUC_KLVS_ABI_H 7 #define _ABI_GUC_KLVS_ABI_H 8 9 #include <linux/types.h> 10 11 /** 12 * DOC: GuC KLV 13 * 14 * +---+-------+--------------------------------------------------------------+ 15 * | | Bits | Description | 16 * +===+=======+==============================================================+ 17 * | 0 | 31:16 | **KEY** - KLV key identifier | 18 * | | | - `GuC Self Config KLVs`_ | 19 * | | | | 20 * | +-------+--------------------------------------------------------------+ 21 * | | 15:0 | **LEN** - length of VALUE (in 32bit dwords) | 22 * +---+-------+--------------------------------------------------------------+ 23 * | 1 | 31:0 | **VALUE** - actual value of the KLV (format depends on KEY) | 24 * +---+-------+ | 25 * |...| | | 26 * +---+-------+ | 27 * | n | 31:0 | | 28 * +---+-------+--------------------------------------------------------------+ 29 */ 30 31 #define GUC_KLV_LEN_MIN 1u 32 #define GUC_KLV_0_KEY (0xffffu << 16) 33 #define GUC_KLV_0_LEN (0xffffu << 0) 34 #define GUC_KLV_n_VALUE (0xffffffffu << 0) 35 36 /** 37 * DOC: GuC Self Config KLVs 38 * 39 * `GuC KLV`_ keys available for use with HOST2GUC_SELF_CFG_. 40 * 41 * _`GUC_KLV_SELF_CFG_H2G_CTB_ADDR` : 0x0902 42 * Refers to 64 bit Global Gfx address of H2G `CT Buffer`_. 43 * Should be above WOPCM address but below APIC base address for native mode. 44 * 45 * _`GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR` : 0x0903 46 * Refers to 64 bit Global Gfx address of H2G `CTB Descriptor`_. 47 * Should be above WOPCM address but below APIC base address for native mode. 48 * 49 * _`GUC_KLV_SELF_CFG_H2G_CTB_SIZE` : 0x0904 50 * Refers to size of H2G `CT Buffer`_ in bytes. 51 * Should be a multiple of 4K. 52 * 53 * _`GUC_KLV_SELF_CFG_G2H_CTB_ADDR` : 0x0905 54 * Refers to 64 bit Global Gfx address of G2H `CT Buffer`_. 55 * Should be above WOPCM address but below APIC base address for native mode. 56 * 57 * _`GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR` : 0x0906 58 * Refers to 64 bit Global Gfx address of G2H `CTB Descriptor`_. 59 * Should be above WOPCM address but below APIC base address for native mode. 60 * 61 * _`GUC_KLV_SELF_CFG_G2H_CTB_SIZE` : 0x0907 62 * Refers to size of G2H `CT Buffer`_ in bytes. 63 * Should be a multiple of 4K. 64 */ 65 66 #define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_KEY 0x0902 67 #define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_LEN 2u 68 69 #define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_KEY 0x0903 70 #define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_LEN 2u 71 72 #define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_KEY 0x0904 73 #define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_LEN 1u 74 75 #define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_KEY 0x0905 76 #define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_LEN 2u 77 78 #define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_KEY 0x0906 79 #define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_LEN 2u 80 81 #define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_KEY 0x0907 82 #define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_LEN 1u 83 84 /* 85 * Global scheduling policy update keys. 86 */ 87 enum { 88 GUC_SCHEDULING_POLICIES_KLV_ID_RENDER_COMPUTE_YIELD = 0x1001, 89 }; 90 91 /* 92 * Per context scheduling policy update keys. 93 */ 94 enum { 95 GUC_CONTEXT_POLICIES_KLV_ID_EXECUTION_QUANTUM = 0x2001, 96 GUC_CONTEXT_POLICIES_KLV_ID_PREEMPTION_TIMEOUT = 0x2002, 97 GUC_CONTEXT_POLICIES_KLV_ID_SCHEDULING_PRIORITY = 0x2003, 98 GUC_CONTEXT_POLICIES_KLV_ID_PREEMPT_TO_IDLE_ON_QUANTUM_EXPIRY = 0x2004, 99 GUC_CONTEXT_POLICIES_KLV_ID_SLPM_GT_FREQUENCY = 0x2005, 100 101 GUC_CONTEXT_POLICIES_KLV_NUM_IDS = 5, 102 }; 103 104 /* 105 * Workaround keys: 106 */ 107 enum { 108 GUC_WORKAROUND_KLV_SERIALIZED_RA_MODE = 0x9001, 109 GUC_WORKAROUND_KLV_BLOCK_INTERRUPTS_WHEN_MGSR_BLOCKED = 0x9002, 110 GUC_WORKAROUND_KLV_AVOID_GFX_CLEAR_WHILE_ACTIVE = 0x9006, 111 }; 112 113 #endif /* _ABI_GUC_KLVS_ABI_H */ 114