177b6f79dSJohn Harrison /* SPDX-License-Identifier: MIT */ 277b6f79dSJohn Harrison /* 377b6f79dSJohn Harrison * Copyright © 2021 Intel Corporation 477b6f79dSJohn Harrison */ 577b6f79dSJohn Harrison 677b6f79dSJohn Harrison #ifndef _ABI_GUC_KLVS_ABI_H 777b6f79dSJohn Harrison #define _ABI_GUC_KLVS_ABI_H 877b6f79dSJohn Harrison 92584b354SJohn Harrison #include <linux/types.h> 102584b354SJohn Harrison 1177b6f79dSJohn Harrison /** 1277b6f79dSJohn Harrison * DOC: GuC KLV 1377b6f79dSJohn Harrison * 1477b6f79dSJohn Harrison * +---+-------+--------------------------------------------------------------+ 1577b6f79dSJohn Harrison * | | Bits | Description | 1677b6f79dSJohn Harrison * +===+=======+==============================================================+ 1777b6f79dSJohn Harrison * | 0 | 31:16 | **KEY** - KLV key identifier | 1877b6f79dSJohn Harrison * | | | - `GuC Self Config KLVs`_ | 1977b6f79dSJohn Harrison * | | | | 2077b6f79dSJohn Harrison * | +-------+--------------------------------------------------------------+ 2177b6f79dSJohn Harrison * | | 15:0 | **LEN** - length of VALUE (in 32bit dwords) | 2277b6f79dSJohn Harrison * +---+-------+--------------------------------------------------------------+ 2377b6f79dSJohn Harrison * | 1 | 31:0 | **VALUE** - actual value of the KLV (format depends on KEY) | 2477b6f79dSJohn Harrison * +---+-------+ | 2577b6f79dSJohn Harrison * |...| | | 2677b6f79dSJohn Harrison * +---+-------+ | 2777b6f79dSJohn Harrison * | n | 31:0 | | 2877b6f79dSJohn Harrison * +---+-------+--------------------------------------------------------------+ 2977b6f79dSJohn Harrison */ 3077b6f79dSJohn Harrison 3177b6f79dSJohn Harrison #define GUC_KLV_LEN_MIN 1u 32d154613dSArnd Bergmann #define GUC_KLV_0_KEY (0xffffu << 16) 33d154613dSArnd Bergmann #define GUC_KLV_0_LEN (0xffffu << 0) 34d154613dSArnd Bergmann #define GUC_KLV_n_VALUE (0xffffffffu << 0) 3577b6f79dSJohn Harrison 3677b6f79dSJohn Harrison /** 3777b6f79dSJohn Harrison * DOC: GuC Self Config KLVs 3877b6f79dSJohn Harrison * 3977b6f79dSJohn Harrison * `GuC KLV`_ keys available for use with HOST2GUC_SELF_CFG_. 4077b6f79dSJohn Harrison * 4177b6f79dSJohn Harrison * _`GUC_KLV_SELF_CFG_H2G_CTB_ADDR` : 0x0902 4277b6f79dSJohn Harrison * Refers to 64 bit Global Gfx address of H2G `CT Buffer`_. 4377b6f79dSJohn Harrison * Should be above WOPCM address but below APIC base address for native mode. 4477b6f79dSJohn Harrison * 4577b6f79dSJohn Harrison * _`GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR` : 0x0903 4677b6f79dSJohn Harrison * Refers to 64 bit Global Gfx address of H2G `CTB Descriptor`_. 4777b6f79dSJohn Harrison * Should be above WOPCM address but below APIC base address for native mode. 4877b6f79dSJohn Harrison * 4977b6f79dSJohn Harrison * _`GUC_KLV_SELF_CFG_H2G_CTB_SIZE` : 0x0904 5077b6f79dSJohn Harrison * Refers to size of H2G `CT Buffer`_ in bytes. 5177b6f79dSJohn Harrison * Should be a multiple of 4K. 5277b6f79dSJohn Harrison * 5377b6f79dSJohn Harrison * _`GUC_KLV_SELF_CFG_G2H_CTB_ADDR` : 0x0905 5477b6f79dSJohn Harrison * Refers to 64 bit Global Gfx address of G2H `CT Buffer`_. 5577b6f79dSJohn Harrison * Should be above WOPCM address but below APIC base address for native mode. 5677b6f79dSJohn Harrison * 5777b6f79dSJohn Harrison * _`GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR` : 0x0906 5877b6f79dSJohn Harrison * Refers to 64 bit Global Gfx address of G2H `CTB Descriptor`_. 5977b6f79dSJohn Harrison * Should be above WOPCM address but below APIC base address for native mode. 6077b6f79dSJohn Harrison * 6177b6f79dSJohn Harrison * _`GUC_KLV_SELF_CFG_G2H_CTB_SIZE` : 0x0907 6277b6f79dSJohn Harrison * Refers to size of G2H `CT Buffer`_ in bytes. 6377b6f79dSJohn Harrison * Should be a multiple of 4K. 6477b6f79dSJohn Harrison */ 6577b6f79dSJohn Harrison 6677b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_KEY 0x0902 6777b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_ADDR_LEN 2u 6877b6f79dSJohn Harrison 6977b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_KEY 0x0903 7077b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_DESCRIPTOR_ADDR_LEN 2u 7177b6f79dSJohn Harrison 7277b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_KEY 0x0904 7377b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_H2G_CTB_SIZE_LEN 1u 7477b6f79dSJohn Harrison 7577b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_KEY 0x0905 7677b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_ADDR_LEN 2u 7777b6f79dSJohn Harrison 7877b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_KEY 0x0906 7977b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_DESCRIPTOR_ADDR_LEN 2u 8077b6f79dSJohn Harrison 8177b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_KEY 0x0907 8277b6f79dSJohn Harrison #define GUC_KLV_SELF_CFG_G2H_CTB_SIZE_LEN 1u 8377b6f79dSJohn Harrison 842584b354SJohn Harrison /* 851e88da4fSJohn Harrison * Global scheduling policy update keys. 861e88da4fSJohn Harrison */ 871e88da4fSJohn Harrison enum { 881e88da4fSJohn Harrison GUC_SCHEDULING_POLICIES_KLV_ID_RENDER_COMPUTE_YIELD = 0x1001, 891e88da4fSJohn Harrison }; 901e88da4fSJohn Harrison 911e88da4fSJohn Harrison /* 922584b354SJohn Harrison * Per context scheduling policy update keys. 932584b354SJohn Harrison */ 942584b354SJohn Harrison enum { 952584b354SJohn Harrison GUC_CONTEXT_POLICIES_KLV_ID_EXECUTION_QUANTUM = 0x2001, 962584b354SJohn Harrison GUC_CONTEXT_POLICIES_KLV_ID_PREEMPTION_TIMEOUT = 0x2002, 972584b354SJohn Harrison GUC_CONTEXT_POLICIES_KLV_ID_SCHEDULING_PRIORITY = 0x2003, 982584b354SJohn Harrison GUC_CONTEXT_POLICIES_KLV_ID_PREEMPT_TO_IDLE_ON_QUANTUM_EXPIRY = 0x2004, 992584b354SJohn Harrison GUC_CONTEXT_POLICIES_KLV_ID_SLPM_GT_FREQUENCY = 0x2005, 1002584b354SJohn Harrison 1012584b354SJohn Harrison GUC_CONTEXT_POLICIES_KLV_NUM_IDS = 5, 1022584b354SJohn Harrison }; 1032584b354SJohn Harrison 10477b6f79dSJohn Harrison #endif /* _ABI_GUC_KLVS_ABI_H */ 105