diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala index ee8cf13..ede5e0e 100644 --- a/src/vm-configurator.vala +++ b/src/vm-configurator.vala @@ -38,6 +38,13 @@ private class Boxes.VMConfigurator { private const string LIBOSINFO_XML = "%s"; private const string LIBOSINFO_OS_ID_XML = ""; + /* this var is used for passporting virt type information between function set_cpu_config and statement: + "var virt_type = guest_kvm_enabled (best_caps) ? DomainVirtType.KVM : DomainVirtType.QEMU;" + the concrete type of virt_type_p refers to /usr/share/vala/vapi/libvirt-gconfig-1.0.vapi:75: public GVirConfig.DomainVirtType get_virt_type (); + the virt_type_p must be static then member function create_domain_config and set_cpu_config can access it. + */ + private static GVirConfig.DomainVirtType virt_type_p = DomainVirtType.QEMU; + public static Domain create_domain_config (InstallerMedia install_media, string target_path, Capabilities caps, DomainCapabilities domain_caps) throws VMConfiguratorError { var domain = new Domain (); @@ -46,9 +53,13 @@ private class Boxes.VMConfigurator { var best_caps = get_best_guest_caps (caps, install_media); domain.memory = install_media.resources.ram / KIBIBYTES; - set_cpu_config (domain, caps); + //set_cpu_config (domain, caps); //move this statement before statement:"domain.set_virt_type (virt_type);" var virt_type = guest_kvm_enabled (best_caps) ? DomainVirtType.KVM : DomainVirtType.QEMU; + // passporting virt type information + virt_type_p = virt_type; + // new call position + set_cpu_config (domain, caps); domain.set_virt_type (virt_type); set_os_config (domain, install_media, best_caps, domain_caps); @@ -244,7 +255,10 @@ private class Boxes.VMConfigurator { domain.vcpu = topology.get_sockets () * topology.get_cores () * topology.get_threads (); var cpu = new DomainCpu (); - cpu.set_mode (DomainCpuMode.HOST_PASSTHROUGH); + if(virt_type_p == DomainVirtType.QEMU) + cpu.set_mode (DomainCpuMode.HOST_MODEL); + else /* if virt_type_p == DomainVirtType.KVM or other */ + cpu.set_mode (DomainCpuMode.HOST_PASSTHROUGH); cpu.set_topology (topology); domain.set_cpu (cpu);