GUC VF CONFIGURATION KLVS(9)
π GuC VF Configuration KLVs(9)
okay so welcome to the Kernel API Manual page for GuC VF Configuration KLVs(9). This is the bestie-approved list of GuC KLV_ keys available for use with PF2GUC_UPDATE_VF_CFG. no cap, every single key is here π
GUC_KLV_VF_CFG_GGTT_STARTβ0x0001β a 4K aligned start GTT address/offset assigned to VF. Value is 64 bits. β¨GUC_KLV_VF_CFG_GGTT_SIZEβ0x0002β a 4K aligned size of GGTT assigned to VF. Value is 64 bits. πGUC_KLV_VF_CFG_LMEM_SIZEβ0x0003β a 2M aligned size of local memory assigned to VF. Value is 64 bits. πGUC_KLV_VF_CFG_NUM_CONTEXTSβ0x0004β refers to the number of contexts allocated to this VF.:0:no contexts (default):1-65535:number of contexts (Gen12)
GUC_KLV_VF_CFG_TILE_MASKβ0x0005β for multi-tiled products, this field contains the bitwise-OR of tiles assigned to the VF. Bit-0-set means VF has access to Tile-0, Bit-31-set means VF has access to Tile-31, and etc. At least one tile will always be allocated. If all bits are zero, VF KMD should treat this as a fatal error. For, single-tile products this KLV config is ignored. π¨GUC_KLV_VF_CFG_NUM_DOORBELLSβ0x0006β refers to the number of doorbells allocated to this VF.:0:no doorbells (default):1-255:number of doorbells (Gen12)
GUC_KLV_VF_CFG_EXEC_QUANTUMβ0x8A01β this config sets the VFs-execution-quantum in milliseconds.- GUC will attempt to obey the maximum values as much as HW is capable of and this will never be perfectly-exact (accumulated nano-second granularity) since the GPUs clock time runs off a different crystal from the CPUs clock.
- Changing this KLV on a VF that is currently running a context won't take effect until a new context is scheduled in.
- That said, when the PF is changing this value from
0x0to a non-zero value, it might never take effect if the VF is running an infinitely long compute or shader kernel. In such a scenario, the PF would need to trigger a VM PAUSE and then change the KLV to force it to take effect. Such cases might typically happen on a1PF+1VFVirtualization config enabled for heavier workloads like AI/ML. - If scheduling groups are supported, the provided value is applied to all groups (even if they've not yet been enabled). Support for this feature is available from GuC
70.53.0. - The max value for this KLV is 100 seconds, anything exceeding that will be clamped to the max.
- Values:
:0:infinite exec quantum (default):100000:maximum exec quantum (100000ms == 100s)
GUC_KLV_VF_CFG_PREEMPT_TIMEOUTβ0x8A02β this config sets the VF-preemption-timeout in microseconds.- GUC will attempt to obey the minimum and maximum values as much as HW is capable and this will never be perfectly-exact (accumulated nano-second granularity) since the GPUs clock time runs off a different crystal from the CPUs clock.
- Changing this KLV on a VF that is currently running a context won't take effect until a new context is scheduled in.
- That said, when the PF is changing this value from
0x0to a non-zero value, it might never take effect if the VF is running an infinitely long compute or shader kernel. In this case, the PF would need to trigger a VM PAUSE and then change the KLV to force it to take effect. Such cases might typically happen on a1PF+1VFVirtualization config enabled for heavier workloads like AI/ML. - If scheduling groups are supported, the provided value is applied to all groups (even if they've not yet been enabled). Support for this feature is available from GuC
70.53.0. - The max value for this KLV is 100 seconds, anything exceeding that will be clamped to the max.
- Values:
:0:no preemption timeout (default):100000000:maximum preemption timeout (100000000us == 100s)
GUC_KLV_VF_CFG_THRESHOLD_CAT_ERRβ0x8A03β this config sets threshold for CAT errors caused by the VF.:0:adverse events or error will not be reported (default):n:event occurrence count per sampling interval
GUC_KLV_VF_CFG_THRESHOLD_ENGINE_RESETβ0x8A04β this config sets threshold for engine reset caused by the VF.:0:adverse events or error will not be reported (default):n:event occurrence count per sampling interval
GUC_KLV_VF_CFG_THRESHOLD_PAGE_FAULTβ0x8A05β this config sets threshold for page fault errors caused by the VF.:0:adverse events or error will not be reported (default):n:event occurrence count per sampling interval
GUC_KLV_VF_CFG_THRESHOLD_H2G_STORMβ0x8A06β this config sets threshold for H2G interrupts triggered by the VF.:0:adverse events or error will not be reported (default):n:time (us) per sampling interval
GUC_KLV_VF_CFG_THRESHOLD_IRQ_STORMβ0x8A07β this config sets threshold for GT interrupts triggered by the VF's workloads.:0:adverse events or error will not be reported (default):n:time (us) per sampling interval
GUC_KLV_VF_CFG_THRESHOLD_DOORBELL_STORMβ0x8A08β this config sets threshold for doorbell's ring triggered by the VF.:0:adverse events or error will not be reported (default):n:time (us) per sampling interval
GUC_KLV_VF_CFG_BEGIN_DOORBELL_IDβ0x8A0Aβ refers to the start index of doorbell assigned to this VF.:0:(default):1-255:number of doorbells (Gen12)
GUC_KLV_VF_CFG_BEGIN_CONTEXT_IDβ0x8A0Bβ refers to the start index in context array allocated to this VFβs use.:0:(default):1-65535:number of contexts (Gen12)
GUC_KLV_VF_CFG_SCHED_PRIORITYβ0x8A0Cβ this config controls VFβs scheduling priority.:0:LOW = schedule VF only if it has active work (default):1:NORMAL = schedule VF always, irrespective of whether it has work or not:2:HIGH = schedule VF in the next time-slice after current active time-slice completes if it has active work
GUC_KLV_VF_CFG_THRESHOLD_MULTI_LRC_COUNTβ0x8A0Dβ given that multi-LRC contexts are incompatible with SRIOV scheduler groups and cause the latter to be turned off when registered with the GuC, this config allows the PF to set a threshold for multi-LRC context registrations by VFs to monitor their behavior. πGUC_KLV_VF_CFG_ENGINE_GROUP_EXEC_QUANTUM'β0x8A0Eβ this config sets the VFs-execution-quantum for each scheduling group in milliseconds. The driver must provide an array of values, with each of them matching the respective group index (first value goes to group 0, second to group 1, etc). The setting of group values follows the same behavior and rules as setting viaGUC_KLV_VF_CFG_EXEC_QUANTUM. Note that the GuC always sets the EQ for all groups (even the non-enabled ones), so if we provide fewer values than the max the GuC will use0for the remaining groups. This KLV is available starting from GuC70.53.0. π¦GUC_KLV_VF_CFG_ENGINE_GROUP_PREEMPT_TIMEOUT'β0x8A0Fβ this config sets the VFs-preemption-timeout for each scheduling group in microseconds. The driver must provide an array of values, with each of them matching the respective group index (first value goes to group 0, second to group 1, etc). The setting of group values follows the same behavior and rules as setting viaGUC_KLV_VF_CFG_PREEMPT_TIMEOUT. Note that the GuC always sets the EQ for all groups (even the non-enabled ones), so if we provide fewer values than the max the GuC will use0for the remaining groups. This KLV is available starting from GuC70.53.0. πΈ
π SEE ALSO
- Kernel file
./drivers/gpu/drm/xe/abi/guc_klvs_abi.h GuC KLV(9)GuC Global Config KLVs(9)GuC Self Config KLVs(9)GuC Opt In Feature KLVs(9)GuC Scheduling Policies KLVs(9)GuC VGT Policy KLVs(9)GuC Reserved KLVs(9)
and that's the whole vibe, bestie π«Ά β this page comes from source/version ./drivers/gpu/drm/xe/abi, dated October 2026, and its manual title is GuC VF Configuration KLVs(9). slay π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms