Provide a config option for users to enable the driver.
Since the feature works for paravirtualized case and make sense only
with SMP, enforce those dependencies. Driver is going to select
CONFIG_PREFERRED_CPU=y for scheduler mechanisms to work.

It is recommended to build the driver as module instead of yes
due to below reasons.
- Module parameters are read only after init. If one wants to change
  them having as module allows that.
- Driver can be disabled if it is built as module.
- If it is module, admin user has to enable it. Since this feature works
  best when all VMs work in co-operative manner, admin will likely
  enable it in all VMs.

Signed-off-by: Shrikanth Hegde <[email protected]>
---
 drivers/virt/Kconfig  | 18 ++++++++++++++++++
 drivers/virt/Makefile |  1 +
 2 files changed, 19 insertions(+)

diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
index 52eb7e4ba71f..5c26a59792c9 100644
--- a/drivers/virt/Kconfig
+++ b/drivers/virt/Kconfig
@@ -41,6 +41,24 @@ config FSL_HV_MANAGER
           4) A kernel interface for receiving callbacks when a managed
             partition shuts down.
 
+config STEAL_GOVERNOR
+       tristate "Dynamic vCPU management based on steal time"
+       depends on PARAVIRT && SMP
+       select PREFERRED_CPU
+       default m
+       help
+         This driver helps to reduce the steal time in paravirtualised
+         environments, thereby reducing vCPU preemption. Reducing vCPU
+         preemption provides improved lock holder preemption and reduces
+         cost of vCPU preemption in the host.
+
+         By default preferred CPUs will be same as active CPUs. Depending
+         on the steal time when steal_governor driver is enabled,
+         preferred CPUs could become subset of active CPUs.
+
+         It is recommended to build it as module and load the module
+         to enable it.
+
 source "drivers/virt/vboxguest/Kconfig"
 
 source "drivers/virt/nitro_enclaves/Kconfig"
diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
index f29901bd7820..05fb075ef5b8 100644
--- a/drivers/virt/Makefile
+++ b/drivers/virt/Makefile
@@ -5,6 +5,7 @@
 
 obj-$(CONFIG_FSL_HV_MANAGER)   += fsl_hypervisor.o
 obj-$(CONFIG_VMGENID)          += vmgenid.o
+obj-$(CONFIG_STEAL_GOVERNOR)   += steal_governor.o
 obj-y                          += vboxguest/
 
 obj-$(CONFIG_NITRO_ENCLAVES)   += nitro_enclaves/
-- 
2.47.3


Reply via email to