From 1f83147653208f01effab0cf89209b8454d15f03 Mon Sep 17 00:00:00 2001
From: "Xinle.Guo" <guoxinle1@huawei.com>
Date: Mon, 10 Jan 2022 10:49:44 +0800
Subject: [PATCH 1/5] stratovirt: update configuration toml file

1.Adapt to default machine type as microvm.
2.Add more configuration items.
3.Modify toml file format.

Signed-off-by: Xinle.Guo <guoxinle1@huawei.com>
---
 src/runtime/Makefile                          |  2 +
 .../config/configuration-stratovirt.toml.in   | 67 ++++++++++++-------
 2 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/src/runtime/Makefile b/src/runtime/Makefile
index ff93ab3..bade196 100644
--- a/src/runtime/Makefile
+++ b/src/runtime/Makefile
@@ -292,6 +292,7 @@ ifneq (,$(STRATOVIRTCMD))
 	CONFIGS += $(CONFIG_STRATOVIRT)
 
 	# stratovirt-specific options (all should be suffixed by "_STRATOVIRT")
+	DEFMACHINETYPE_STRATOVIRT := microvm
 	DEFBLOCKSTORAGEDRIVER_STRATOVIRT := virtio-mmio
 	DEFNETWORKMODEL_STRATOVIRT := tcfilter
 	KENRELTYPE_STRATOVIRT = uncompressed
@@ -437,6 +438,7 @@ USER_VARS += FIRMWAREPATH
 USER_VARS += MACHINEACCELERATORS
 USER_VARS += CPUFEATURES
 USER_VARS += DEFMACHINETYPE_CLH
+USER_VARS += DEFMACHINETYPE_STRATOVIRT
 USER_VARS += KERNELPARAMS
 USER_VARS += LIBEXECDIR
 USER_VARS += LOCALSTATEDIR
diff --git a/src/runtime/cli/config/configuration-stratovirt.toml.in b/src/runtime/cli/config/configuration-stratovirt.toml.in
index 753e3dc..db46665 100644
--- a/src/runtime/cli/config/configuration-stratovirt.toml.in
+++ b/src/runtime/cli/config/configuration-stratovirt.toml.in
@@ -14,6 +14,8 @@
 path = "@STRATOVIRTPATH@"
 kernel = "@KERNELPATH_STRATOVIRT@"
 initrd = "@IMAGEPATH@"
+#image = "/var/lib/kata/kata-containers-rootfs.img"
+machine_type = "@DEFMACHINETYPE_STRATOVIRT@"
 
 # List of valid annotation names for the hypervisor
 # Each member of the list is a regular expression, which is the base name
@@ -29,12 +31,12 @@ valid_hypervisor_paths = @STRATOVIRTVALIDHYPERVISORPATHS@
 # Path for the ozone specific to stratovirt
 # If the ozone path is set, stratovirt will be launched in 
 # ozone secure environment. It is disabled by default.
-# ozone_path = "@STRATOVIRTOZONEPATH@"
+#ozone_path = "@STRATOVIRTOZONEPATH@"
 
 # List of valid ozone path values for the hypervisor
 # Each member of the list can be a regular expression
 # The default if not set is empty (all annotations rejected.)
-# valid_jailer_paths = @STRATOVIRTVALIDOZONEPATHS@
+#valid_jailer_paths = @STRATOVIRTVALIDOZONEPATHS@
 
 # Optional space-separated list of options to pass to the guest kernel.
 # For example, use `kernel_params = "vsyscall=emulate"` if you are having
@@ -87,18 +89,18 @@ default_bridges = @DEFBRIDGES@
 # Default memory size in MiB for SB/VM.
 # If unspecified then it will be set @DEFMEMSZ@ MiB.
 default_memory = @DEFMEMSZ@
-#
+
 # Default memory slots per SB/VM.
 # If unspecified then it will be set @DEFMEMSLOTS@.
 # This is will determine the times that memory will be hotadded to sandbox/VM.
-# memory_slots = @DEFMEMSLOTS@
+#memory_slots = @DEFMEMSLOTS@
 
 # The size in MiB will be plused to max memory of hypervisor.
 # It is the memory address space for the NVDIMM devie.
 # If set block storage driver (block_device_driver) to "nvdimm",
 # should set memory_offset to the size of block device.
 # Default 0
-# memory_offset = 0
+#memory_offset = 0
 
 # Disable block device from being used for a container's rootfs.
 # In case of a storage driver like devicemapper where a container's
@@ -108,6 +110,14 @@ default_memory = @DEFMEMSZ@
 # 9pfs is used instead to pass the rootfs.
 disable_block_device_use = @DEFDISABLEBLOCK@
 
+# Shared file system type:
+#   - virtio-fs (default)
+#   - virtio-9p
+shared_fs = "virtio-fs"
+
+# Path to vhost-user-fs daemon.
+virtio_fs_daemon = "/usr/bin/vhost_user_fs"
+
 # Block storage driver to be used for the hypervisor in case the container
 # rootfs is backed by a block device. This is virtio-scsi, virtio-blk
 # or nvdimm.
@@ -120,12 +130,17 @@ block_device_driver = "@DEFBLOCKSTORAGEDRIVER_STRATOVIRT@"
 # Specifies cache-related options for block devices.
 # Denotes whether use of O_DIRECT (bypass the host page cache) is enabled.
 # Default false
-# block_device_cache_direct = true
+#block_device_cache_direct = true
 
 # Specifies cache-related options for block devices.
 # Denotes whether flush requests for the device are ignored.
 # Default false
-# block_device_cache_noflush = true
+#block_device_cache_noflush = true
+
+# Enable iothreads to be used. This causes IO to be
+# handled in a separate IO thread. This is currently only implemented
+# for virtio blk.
+#enable_iothreads = true
 
 # Enable pre allocation of VM RAM, default false
 # Enabling this will result in lower container density
@@ -134,7 +149,7 @@ block_device_driver = "@DEFBLOCKSTORAGEDRIVER_STRATOVIRT@"
 # upfront or in the cases where you want memory latencies
 # to be very predictable
 # Default false
-# enable_mem_prealloc = true
+#enable_mem_prealloc = true
 
 # Enable huge pages for VM RAM, default false
 # Enabling this will result in the VM memory
@@ -142,42 +157,48 @@ block_device_driver = "@DEFBLOCKSTORAGEDRIVER_STRATOVIRT@"
 # This is useful when you want to use vhost-user network
 # stacks within the container. This will automatically
 # result in memory pre allocation
-# enable_hugepages = true
+#enable_hugepages = true
 
 # Enable vIOMMU, default false
 # Enabling this will result in the VM having a vIOMMU device
 # This will also add the following options to the kernel's
 # command line: intel_iommu=on,iommu=pt
-# enable_iommu = true
+#enable_iommu = true
 
 # Enable swap of vm memory. Default false.
 # The behaviour is undefined if mem_prealloc is also set to true
-# enable_swap = true
+#enable_swap = true
 
 # This option changes the default hypervisor and kernel parameters
 # to enable debug output where available.
 #
 # Default false
-# enable_debug = true
+#enable_debug = true
 
 # Disable the customizations done in the runtime when it detects
 # that it is running on top a VMM. This will result in the runtime
 # behaving as it would when running on bare metal.
 #
-# disable_nesting_checks = true
+#disable_nesting_checks = true
 
 # This is the msize used for 9p shares. It is the number of bytes
 # used for 9p packet payload.
-# msize_9p =
+#msize_9p =
 
 # VFIO devices are hotplugged on a bridge by default.
 # Enable hotplugging on root bus. This may be required for devices with
 # a large PCI bar, as this is a current limitation with hotplugging on
 # a bridge.
 # Default false
-# hotplug_vfio_on_root_bus = true
+#hotplug_vfio_on_root_bus = true
+
+# Before hot plugging a PCIe device, you need to add a pcie_root_port device.
+# Use this parameter when using some large PCI bar devices, such as Nvidia GPU
+# The value means the number of pcie_root_port
+# This value is valid when hotplug_vfio_on_root_bus is true and machine_type is "q35"
+# Default 0
+pcie_root_port = 2
 
-#
 # Default entropy source.
 # The path to a host source of entropy (including a real hardware RNG)
 # /dev/urandom and /dev/random are two main options.
@@ -187,7 +208,7 @@ block_device_driver = "@DEFBLOCKSTORAGEDRIVER_STRATOVIRT@"
 # The source of entropy /dev/urandom is non-blocking and provides a
 # generally acceptable source of entropy. It should work well for pretty much
 # all practical purposes.
-# entropy_source= ""
+entropy_source= "@DEFENTROPYSOURCE@"
 
 # List of valid annotations values for entropy_source
 # The default if not set is empty (all annotations rejected.)
@@ -209,7 +230,7 @@ valid_entropy_sources = @DEFVALIDENTROPYSOURCES@
 # https://github.com/opencontainers/runtime-spec/blob/v1.0.1/config.md#posix-platform-hooks
 # Warnings will be logged if any error is encountered will scanning for hooks,
 # but it will not abort container execution.
-# guest_hook_path = "/usr/share/oci/hooks"
+#guest_hook_path = "/usr/share/oci/hooks"
 
 [factory]
 # VM templating support. Once enabled, new VMs are created from template
@@ -312,14 +333,14 @@ path = "@NETMONPATH@"
 #     Uses tc filter rules to redirect traffic from the network interface
 #     provided by plugin to a tap interface connected to the VM.
 #
-internetworking_model="@DEFNETWORKMODEL_STRATOVIRT@"
+internetworking_model = "@DEFNETWORKMODEL_STRATOVIRT@"
 
 # disable guest seccomp
 # Determines whether container seccomp profiles are passed to the virtual
 # machine and applied by the kata agent. If set to true, seccomp is not applied
 # within the guest
 # (default: true)
-disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@
+disable_guest_seccomp = @DEFDISABLEGUESTSECCOMP@
 
 # If enabled, the runtime will create opentracing.io traces and spans.
 # (See https://www.jaegertracing.io/docs/getting-started).
@@ -352,15 +373,15 @@ disable_guest_seccomp=@DEFDISABLEGUESTSECCOMP@
 # The sandbox cgroup path is the parent cgroup of a container with the PodSandbox annotation.
 # The sandbox cgroup is constrained if there is no container type annotation.
 # See: https://godoc.org/github.com/kata-containers/runtime/virtcontainers#ContainerType
-sandbox_cgroup_only=@DEFSANDBOXCGROUPONLY@
+sandbox_cgroup_only = @DEFSANDBOXCGROUPONLY@
 
 # Enabled experimental feature list, format: ["a", "b"].
 # Experimental features are features not stable enough for production,
 # they may break compatibility, and are prepared for a big version bump.
 # Supported experimental features:
 # (default: [])
-experimental=@DEFAULTEXPFEATURES@
+experimental = @DEFAULTEXPFEATURES@
 
 # If enabled, user can run pprof tools with shim v2 process through kata-monitor.
 # (default: false)
-# enable_pprof = true
+#enable_pprof = true
-- 
2.20.1.windows.1

