[RFC] drm/xe: Add separate Kconfig file for SR-IOV options
Michal Wajdeczko
michal.wajdeczko at intel.com
Mon Oct 21 08:12:42 UTC 2024
There are few SR-IOV config options that we want to define:
- DRM_XE_SRIOV_VF to allow compile-out support for the SR-IOV
Virtual Function (VF)
- DRM_XE_SRIOV_PF to allow compile-out support for the SR-IOV
Physical Function (PF)
and for use by PF only:
- DRM_XE_SRIOV_DEFAULT_SCHEDULING_[FLEXIBLE|FIXED|CUSTOM]
to select preferred scheduling method using either predefined
parameter values, or custom values
- DRM_XE_SRIOV_DEFAULT_PF_[EXEC_QUANTUM_MS|PREEMPT_TIMEOUT_US]
to define default execution quantum/preempt timeout for the PF
- DRM_XE_SRIOV_DEFAULT_VF_[EXEC_QUANTUM_MS|PREEMPT_TIMEOUT_US]
to define default execution quantum/preempt timeout for the VF
- DRM_XE_SRIOV_DEFAULT_POLICY_[SCHED_IF_IDLE|RESET_ENGINE]
to define default values for advanced scheduling policies
Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
Cc: Thomas Hellstrom <thomas.hellstrom at linux.intel.com>
Cc: Lucas De Marchi <lucas.demarchi at intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
drivers/gpu/drm/xe/Kconfig | 5 ++
drivers/gpu/drm/xe/Kconfig.sriov | 140 +++++++++++++++++++++++++++++++
2 files changed, 145 insertions(+)
create mode 100644 drivers/gpu/drm/xe/Kconfig.sriov
diff --git a/drivers/gpu/drm/xe/Kconfig b/drivers/gpu/drm/xe/Kconfig
index bac96c0dd66e..cd68eda9ca79 100644
--- a/drivers/gpu/drm/xe/Kconfig
+++ b/drivers/gpu/drm/xe/Kconfig
@@ -87,6 +87,11 @@ config DRM_XE_FORCE_PROBE
Use "!*" to block the probe of the driver for all known devices.
+menu "SR-IOV Configuration"
+depends on DRM_XE
+source "drivers/gpu/drm/xe/Kconfig.sriov"
+endmenu
+
menu "drm/Xe Debugging"
depends on DRM_XE
depends on EXPERT
diff --git a/drivers/gpu/drm/xe/Kconfig.sriov b/drivers/gpu/drm/xe/Kconfig.sriov
new file mode 100644
index 000000000000..3bd3eee51e9f
--- /dev/null
+++ b/drivers/gpu/drm/xe/Kconfig.sriov
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config DRM_XE_SRIOV_VF
+ bool
+ prompt "Virtual Function (VF) support"
+ default y
+ help
+ Disable this option only if you want to compile out the SR-IOV VF support.
+ Without SR-IOV VF support, driver can still be used in native mode.
+ This option does not impact the support for the PF mode (if enabled).
+
+ If in doubt, select "Y".
+
+config DRM_XE_SRIOV_PF
+ bool
+ prompt "Physical Function (PF) support" if PCI_IOV=y
+ default PCI_IOV
+ help
+ Disable this option only if you want to compile out the SR-IOV PF support.
+ Without SR-IOV PF support, driver can still be used in native mode.
+ This option does not impact the support for the VF mode (if enabled).
+
+ If in doubt, select "Y".
+
+if DRM_XE_SRIOV_PF
+
+choice
+ prompt "Default Scheduling Profile"
+ default DRM_XE_SRIOV_DEFAULT_SCHEDULING_FLEXIBLE
+ help
+ Select preferred scheduling profile to applied by default.
+ Choose "Flexible" if maximizing the GPU usage is preferred.
+ Choose "Fixed" if consitent VF execution time is required.
+ Choose "Custom" to define all scheduling parameters.
+
+ If in doubt, select "Flexible".
+
+ config DRM_XE_SRIOV_DEFAULT_SCHEDULING_FLEXIBLE
+ bool "Flexible"
+ help
+ Use this config to prefer flexible scheduling method.
+ This config will predefine default scheduling parameters
+ to maximize the GPU usage that may cause some fluctuations
+ between VF execution slots.
+
+ config DRM_XE_SRIOV_DEFAULT_SCHEDULING_FIXED
+ bool "Fixed"
+ help
+ Use this config to prefer fixed scheduling method.
+ This config will predefine default scheduling parameters
+ in a such a way that all VFs execution time slots will
+ be consistent.
+
+ config DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM
+ bool "Custom"
+ help
+ Use this config to define custom default scheduling parameters.
+ This config is mostly needed only if specific scheduling
+ parameters are required without involving any manual
+ provisioning over sysfs or debugfs interfaces.
+
+endchoice
+
+config DRM_XE_SRIOV_DEFAULT_PF_EXEC_QUANTUM_MS
+ int
+ range 0 100000
+ prompt "Default PF execution quantum (ms)" if DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM
+ default 20 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FLEXIBLE
+ default 20 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FIXED
+ default 0 # unlimited
+ help
+ Use this config to define default PF execution-quantum provisioning.
+ The value (in millisecond) indicates the amount of time the workloads
+ from the PF can run on the GPU.
+ Value 0 represents _infinity_ execution-quantum.
+
+config DRM_XE_SRIOV_DEFAULT_PF_PREEMPT_TIMEOUT_US
+ int
+ range 0 100000000
+ prompt "Default PF preemption timeout (us)" if DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM
+ default 20000 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FLEXIBLE
+ default 20000 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FIXED
+ default 0 # unlimited
+ help
+ Use this config to define default PF preemption timeout provisioning.
+ The value (in microseconds) indicates the amount of time the GPU scheduler
+ will wait for the PF workload (context) to yield to other VF.
+ Value 0 represents _infinity_ preemption timeout.
+
+config DRM_XE_SRIOV_DEFAULT_VF_EXEC_QUANTUM_MS
+ int
+ range 0 100000
+ prompt "Default VF execution quantum (ms)" if DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM
+ default 32 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FLEXIBLE
+ default 16 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FIXED
+ default 0 # unlimited
+ help
+ Use this config to define default VF execution-quantum provisioning.
+ The value (in millisecond) indicates the amount of time the workloads
+ from the VF can run on the GPU.
+ Value 0 represents _infinity_ execution-quantum.
+
+config DRM_XE_SRIOV_DEFAULT_VF_PREEMPT_TIMEOUT_US
+ int
+ range 0 100000000
+ prompt "Default VF preemption timeout (us)" if DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM
+ default 32000 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FLEXIBLE
+ default 16000 if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FIXED
+ default 0 # unlimited
+ help
+ Use this config to define default VF preemption timeout provisioning.
+ The value (in microseconds) indicates the amount of time the GPU scheduler
+ will wait for the VF workload (context) to yield to other VF.
+ Value 0 represents _infinity_ preemption timeout.
+
+config DRM_XE_SRIOV_DEFAULT_POLICY_SCHED_IF_IDLE
+ bool
+ prompt "Default schedule-if-idle policy" if DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM
+ default y if DRM_XE_SRIOV_DEFAULT_SCHEDULING_FIXED
+ default n
+ help
+ Enable this config to turn on the strict scheduling policy by default.
+ When this policy is enabled, VFs that do not have work to submit are
+ still allocated a fixed execution time-slice to ensure all active VFs
+ execution is always consistent.
+
+ If in doubt, say "N".
+
+config DRM_XE_SRIOV_DEFAULT_POLICY_RESET_ENGINE
+ bool
+ prompt "Default reset-engine policy" if DRM_XE_SRIOV_DEFAULT_SCHEDULING_CUSTOM && EXPERT
+ default n
+ help
+ Enable this config to turn on the engine reset policy by default.
+ When this policy is enabled, GPU engines will be reset by the GuC
+ on each VF switch to enforce cleanup of any stale HW register state.
+
+ If in doubt, say "N".
+
+endif # DRM_XE_SRIOV_PF
--
2.43.0
More information about the Intel-xe
mailing list