diff --git a/src/runtime/config/configuration-clh.toml.in b/src/runtime/config/configuration-clh.toml.in index 38c97c01f..883c7a9ef 100644 --- a/src/runtime/config/configuration-clh.toml.in +++ b/src/runtime/config/configuration-clh.toml.in @@ -220,6 +220,12 @@ block_device_driver = "virtio-blk" # Default 1 #hypervisor_loglevel = 1 +# If false and nvdimm is supported, use nvdimm device to plug guest image. +# Otherwise virtio-block device is used. +# +# nvdimm is not supported when `confidential_guest = true`. +disable_image_nvdimm = @DEFDISABLEIMAGENVDIMM@ + # Enable hot-plugging of VFIO devices to a root-port. # The default setting is "no-port" #hot_plug_vfio = "root-port" diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index 064e590a9..f15d945ca 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -1095,6 +1095,7 @@ func newClhHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) { BlockDeviceCacheDirect: h.BlockDeviceCacheDirect, EnableIOThreads: h.EnableIOThreads, Msize9p: h.msize9p(), + DisableImageNvdimm: h.DisableImageNvdimm, ColdPlugVFIO: h.coldPlugVFIO(), HotPlugVFIO: h.hotPlugVFIO(), PCIeRootPort: h.pcieRootPort(), diff --git a/src/runtime/virtcontainers/clh.go b/src/runtime/virtcontainers/clh.go index 29c800125..2b78d2e44 100644 --- a/src/runtime/virtcontainers/clh.go +++ b/src/runtime/virtcontainers/clh.go @@ -570,7 +570,10 @@ func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, network Net // Set initial amount of cpu's for the virtual machine clh.vmconfig.Cpus = chclient.NewCpusConfig(int32(clh.config.NumVCPUs()), int32(clh.config.DefaultMaxVCPUs)) - params, err := getNonUserDefinedKernelParams(hypervisorConfig.RootfsType, clh.config.ConfidentialGuest, !clh.config.ConfidentialGuest, clh.config.Debug, clh.config.ConfidentialGuest, clh.config.IOMMU) + disableNvdimm := (clh.config.DisableImageNvdimm || clh.config.ConfidentialGuest) + enableDax := !disableNvdimm + + params, err := getNonUserDefinedKernelParams(hypervisorConfig.RootfsType, disableNvdimm, enableDax, clh.config.Debug, clh.config.ConfidentialGuest, clh.config.IOMMU) if err != nil { return err } @@ -590,7 +593,7 @@ func (clh *cloudHypervisor) CreateVM(ctx context.Context, id string, network Net } if assetType == types.ImageAsset { - if clh.config.ConfidentialGuest { + if clh.config.DisableImageNvdimm || clh.config.ConfidentialGuest { disk := chclient.NewDiskConfig(assetPath) disk.SetReadonly(true)