@@ -160,6 +160,8 @@ const (
160160 OpenKernelModulesEnabledEnvName = "OPEN_KERNEL_MODULES_ENABLED"
161161 // KernelModuleTypeEnvName is the name of the driver-container envvar to set the desired kernel module type
162162 KernelModuleTypeEnvName = "KERNEL_MODULE_TYPE"
163+ // DriverVersionEnvName is the name of the envvar to set the desired driver version
164+ DriverVersionEnvName = "DRIVER_VERSION"
163165 // MPSRootEnvName is the name of the envvar for configuring the MPS root
164166 MPSRootEnvName = "MPS_ROOT"
165167 // DefaultMPSRoot is the default MPS root path on the host
@@ -1002,7 +1004,7 @@ func TransformDriver(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n C
10021004 }
10031005
10041006 // update driver-manager initContainer
1005- err = transformDriverManagerInitContainer (obj , & config .Driver .Manager , config .Driver .GPUDirectRDMA )
1007+ err = transformDriverManagerInitContainer (obj , & config .Driver .Manager , config .Driver .GPUDirectRDMA , config . Driver . Version , config . Driver . KernelModuleType )
10061008 if err != nil {
10071009 return err
10081010 }
@@ -1050,7 +1052,7 @@ func TransformDriver(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec, n C
10501052// TransformVGPUManager transforms NVIDIA vGPU Manager daemonset with required config as per ClusterPolicy
10511053func TransformVGPUManager (obj * appsv1.DaemonSet , config * gpuv1.ClusterPolicySpec , n ClusterPolicyController ) error {
10521054 // update k8s-driver-manager initContainer
1053- err := transformDriverManagerInitContainer (obj , & config .VGPUManager .DriverManager , nil )
1055+ err := transformDriverManagerInitContainer (obj , & config .VGPUManager .DriverManager , nil , config . VGPUManager . Version , "" )
10541056 if err != nil {
10551057 return fmt .Errorf ("failed to transform k8s-driver-manager initContainer for vGPU Manager: %v" , err )
10561058 }
@@ -2009,7 +2011,7 @@ func TransformKataManager(obj *appsv1.DaemonSet, config *gpuv1.ClusterPolicySpec
20092011// TransformVFIOManager transforms VFIO-PCI Manager daemonset with required config as per ClusterPolicy
20102012func TransformVFIOManager (obj * appsv1.DaemonSet , config * gpuv1.ClusterPolicySpec , n ClusterPolicyController ) error {
20112013 // update k8s-driver-manager initContainer
2012- err := transformDriverManagerInitContainer (obj , & config .VFIOManager .DriverManager , nil )
2014+ err := transformDriverManagerInitContainer (obj , & config .VFIOManager .DriverManager , nil , config . VFIOManager . Version , "" )
20132015 if err != nil {
20142016 return fmt .Errorf ("failed to transform k8s-driver-manager initContainer for VFIO Manager: %v" , err )
20152017 }
@@ -2741,7 +2743,7 @@ func transformConfigManagerSidecarContainer(obj *appsv1.DaemonSet, config *gpuv1
27412743 return nil
27422744}
27432745
2744- func transformDriverManagerInitContainer (obj * appsv1.DaemonSet , driverManagerSpec * gpuv1.DriverManagerSpec , rdmaSpec * gpuv1.GPUDirectRDMASpec ) error {
2746+ func transformDriverManagerInitContainer (obj * appsv1.DaemonSet , driverManagerSpec * gpuv1.DriverManagerSpec , rdmaSpec * gpuv1.GPUDirectRDMASpec , driverVersion string , kernelModuleType string ) error {
27452747 container := findContainerByName (obj .Spec .Template .Spec .InitContainers , "k8s-driver-manager" )
27462748
27472749 if container == nil {
@@ -2765,6 +2767,16 @@ func transformDriverManagerInitContainer(obj *appsv1.DaemonSet, driverManagerSpe
27652767 }
27662768 }
27672769
2770+ // set driver version for config change detection
2771+ if driverVersion != "" {
2772+ setContainerEnv (container , DriverVersionEnvName , driverVersion )
2773+ }
2774+
2775+ // set kernel module type for config change detection
2776+ if kernelModuleType != "" {
2777+ setContainerEnv (container , KernelModuleTypeEnvName , kernelModuleType )
2778+ }
2779+
27682780 // set/append environment variables for driver-manager initContainer
27692781 if len (driverManagerSpec .Env ) > 0 {
27702782 for _ , env := range driverManagerSpec .Env {
0 commit comments