Blob Blame History Raw
---
 src/meson.build | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/meson.build b/src/meson.build
index ac79b7fc..00903170 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -125,8 +125,8 @@ dependencies = [
   dependency ('libsecret-1'),
   dependency ('libsoup-2.4', version: '>= 2.38'),
   dependency ('libusb-1.0', version: '>= 1.0.9'),
-  dependency ('libvirt-gconfig-1.0', version: '>= 0.2.0'),
-  dependency ('libvirt-gobject-1.0', version: '>= 0.2.0'),
+  dependency ('libvirt-gconfig-1.0', version: '>= 2.0.0'),
+  dependency ('libvirt-gobject-1.0', version: '>= 2.0.0'),
   dependency ('libxml-2.0', version: '>= 2.7.8'),
   dependency ('spice-client-gtk-3.0', version: '>= 0.32'),
   dependency ('tracker-sparql-2.0'),
--

---
 src/installer-media.vala | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/installer-media.vala b/src/installer-media.vala
index feb5d7b..b29c10b 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -25,12 +25,24 @@ private class Boxes.InstallerMedia : GLib.Object {
     public virtual bool need_user_input_for_vm_creation { get { return false; } }
     public virtual bool ready_to_create { get { return true; } }
 
+    public bool supports_virtio1_disk {
+        get {
+            return (find_device_by_prop (supported_devices, DEVICE_PROP_NAME, "virtio1.0-block") != null);
+        }
+    }
+
     public bool supports_virtio_disk {
         get {
             return (find_device_by_prop (supported_devices, DEVICE_PROP_NAME, "virtio-block") != null);
         }
     }
 
+    public bool supports_virtio1_net {
+        get {
+            return (find_device_by_prop (supported_devices, DEVICE_PROP_NAME, "virtio1.0-net") != null);
+        }
+    }
+
     public bool supports_virtio_net {
         get {
             return (find_device_by_prop (supported_devices, DEVICE_PROP_NAME, "virtio-net") != null);
-- 

---
 src/unattended-installer.vala | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/unattended-installer.vala b/src/unattended-installer.vala
index 4e0ba23..6a37e20 100644
--- a/src/unattended-installer.vala
+++ b/src/unattended-installer.vala
@@ -232,7 +232,7 @@ private class Boxes.UnattendedInstaller: InstallerMedia {
         if (os.distro == "win")
             config.set_target_disk ("C");
         else
-            config.set_target_disk (supports_virtio_disk? "/dev/vda" : "/dev/sda");
+            config.set_target_disk (supports_virtio_disk || supports_virtio1_disk? "/dev/vda" : "/dev/sda");

         var disk_config = get_unattended_disk_config (script.path_format);
         var device_path = device_name_to_path (script.path_format, disk_config.get_target_dev ());
@@ -360,7 +360,7 @@ private class Boxes.UnattendedInstaller: InstallerMedia {
             disk.set_target_bus (DomainDiskBus.FDC);
         } else {
             // Path format checks below are most probably practically redundant but a small price for future safety
-            if (supports_virtio_disk)
+            if (supports_virtio_disk || supports_virtio1_disk)
                 disk.set_target_dev ((path_format == PathFormat.UNIX)? "sda" : "E");
             else
                 disk.set_target_dev ((path_format == PathFormat.UNIX)? "sdb" : "E");
--

---
 src/vm-configurator.vala | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index e8eefa3..ceadc80 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -114,9 +114,10 @@ private class Boxes.VMConfigurator {
         console.set_source (new DomainChardevSourcePty ());
         domain.add_device (console);
 
+        var supports_virtio_net = install_media.supports_virtio_net || install_media.supports_virtio1_net;
         var iface = create_network_interface (domain,
                                               is_libvirt_bridge_net_available (),
-                                              install_media.supports_virtio_net);
+                                              supports_virtio_net);
         domain.add_device (iface);
 
         return domain;
@@ -309,7 +310,7 @@ private class Boxes.VMConfigurator {
         disk.set_driver_cache (DomainDiskCacheType.WRITEBACK);
 
         var dev_letter_str = ((char) (dev_index + 97)).to_string ();
-        if (install_media.supports_virtio_disk) {
+        if (install_media.supports_virtio_disk || install_media.supports_virtio1_disk) {
             debug ("Using virtio controller for the main disk");
             disk.set_target_bus (DomainDiskBus.VIRTIO);
             disk.set_target_dev ("vd" + dev_letter_str);
-- 

---
 src/installer-media.vala | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/installer-media.vala b/src/installer-media.vala
index b29c10b..0a83ba0 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -49,6 +49,12 @@ private class Boxes.InstallerMedia : GLib.Object {
         }
     }

+    public bool prefers_q35 {
+        get {
+            return false;
+        }
+    }
+
     public virtual bool live { get { return os_media == null || os_media.live; } }
     public virtual bool eject_after_install { get { return os_media == null || os_media.eject_after_install; } }

--

---
 src/installer-media.vala | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/installer-media.vala b/src/installer-media.vala
index 0a83ba0..7d95d65 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -55,6 +55,12 @@ private class Boxes.InstallerMedia : GLib.Object {
         }
     }

+    public bool prefers_ich9 {
+        get {
+            return false;
+        }
+    }
+
     public virtual bool live { get { return os_media == null || os_media.live; } }
     public virtual bool eject_after_install { get { return os_media == null || os_media.eject_after_install; } }

--

---
 src/installer-media.vala | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/installer-media.vala b/src/installer-media.vala
index 7d95d65..ba6bfc8 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -173,7 +173,7 @@ private class Boxes.InstallerMedia : GLib.Object {
         disk.set_target_dev (device_name);
         if (iso_path != null)
             disk.set_source (iso_path);
-        disk.set_target_bus (DomainDiskBus.IDE);
+        disk.set_target_bus (prefers_q35? DomainDiskBus.SATA : DomainDiskBus.IDE);
         if (mandatory)
             disk.set_startup_policy (DomainDiskStartupPolicy.MANDATORY);

--

---
 src/unattended-installer.vala | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/unattended-installer.vala b/src/unattended-installer.vala
index 6a37e20..e3fd115 100644
--- a/src/unattended-installer.vala
+++ b/src/unattended-installer.vala
@@ -379,7 +379,7 @@ private class Boxes.UnattendedInstaller: InstallerMedia {
         disk.set_source (secondary_disk_file.get_path ());
         disk.set_target_dev ((path_format == PathFormat.DOS)? "E" : "hdd");
         disk.set_guest_device_type (DomainDiskGuestDeviceType.CDROM);
-        disk.set_target_bus (DomainDiskBus.IDE);
+        disk.set_target_bus (prefers_q35? DomainDiskBus.SATA : DomainDiskBus.IDE);

         return disk;
     }
--

---
 src/vm-configurator.vala | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index ceadc80..c537316 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -315,8 +315,13 @@ private class Boxes.VMConfigurator {
             disk.set_target_bus (DomainDiskBus.VIRTIO);
             disk.set_target_dev ("vd" + dev_letter_str);
         } else {
-            debug ("Using IDE controller for the main disk");
-            disk.set_target_bus (DomainDiskBus.IDE);
+            if (install_media.prefers_q35) {
+                debug ("Using SATA controller for the main disk");
+                disk.set_target_bus (DomainDiskBus.SATA);
+            } else {
+                debug ("Using IDE controller for the main disk");
+                disk.set_target_bus (DomainDiskBus.IDE);
+            }
             disk.set_target_dev ("hd" + dev_letter_str);
         }

--

---
 src/vm-configurator.vala | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index c537316..07804f9 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -363,13 +363,22 @@ private class Boxes.VMConfigurator {
         domain.add_device (video);
     }
 
-    private static void set_sound_config (Domain domain, InstallerMedia install_media) {
-        var sound = new DomainSound ();
+    private static DomainSoundModel get_sound_model (InstallerMedia install_media) {
+        if (install_media.prefers_ich9)
+            return (DomainSoundModel) DomainSoundModel.ICH9;
+
         var device = find_device_by_prop (install_media.supported_devices, DEVICE_PROP_CLASS, "audio");
-        var model = (device != null)? get_enum_value (device.get_name (), typeof (DomainSoundModel)) :
-                                      DomainSoundModel.AC97;
+        if (device == null)
+            return (DomainSoundModel) DomainSoundModel.ICH6;
+
+        var model = get_enum_value (device.get_name (), typeof (DomainSoundModel));
         return_if_fail (model != -1);
-        sound.set_model ((DomainSoundModel) model);
+        return (DomainSoundModel) model;
+    }
+
+    private static void set_sound_config (Domain domain, InstallerMedia install_media) {
+        var sound = new DomainSound ();
+        sound.set_model (get_sound_model (install_media));
 
         domain.add_device (sound);
     }
-- 

---
 src/vm-configurator.vala | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index 07804f9..3dc1c8e 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -338,6 +338,7 @@ private class Boxes.VMConfigurator {
         os.set_boot_devices (boot_devices);

         os.set_arch (old_os.get_arch ());
+        os.set_machine (old_os.get_machine ());

         domain.set_os (os);
     }
--

---
 src/vm-configurator.vala | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/vm-configurator.vala b/src/vm-configurator.vala
index 3dc1c8e..6c20f5e 100644
--- a/src/vm-configurator.vala
+++ b/src/vm-configurator.vala
@@ -347,6 +347,8 @@ private class Boxes.VMConfigurator {
         var os = new DomainOs ();
         os.set_os_type (DomainOsType.HVM);
         os.set_arch (guest_caps.get_arch ().get_name ());
+        if (install_media.prefers_q35)
+            os.set_machine ("q35");

         var boot_devices = new GLib.List<DomainOsBootDevice> ();
         install_media.set_direct_boot_params (os);
--

---
 src/installer-media.vala | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/installer-media.vala b/src/installer-media.vala
index ba6bfc8..4a8d913 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -57,7 +57,14 @@ private class Boxes.InstallerMedia : GLib.Object {
 
     public bool prefers_ich9 {
         get {
-            return false;
+            if (!prefers_q35)
+                return false;
+
+            var device = find_device_by_prop (supported_devices, DEVICE_PROP_NAME, "ich9-hda");
+            if (device == null)
+                return false;
+
+            return true;
         }
     }
 
-- 

---
 src/installer-media.vala | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/installer-media.vala b/src/installer-media.vala
index 4a8d913..5bde3ca 100644
--- a/src/installer-media.vala
+++ b/src/installer-media.vala
@@ -51,7 +51,17 @@ private class Boxes.InstallerMedia : GLib.Object {

     public bool prefers_q35 {
         get {
-            return false;
+            if (os == null)
+                return true;
+
+            var device = find_device_by_prop (supported_devices, DEVICE_PROP_NAME, "qemu-x86-q35");
+            if (device == null)
+                return false;
+
+            if (supports_virtio_net && !supports_virtio1_net)
+                return false;
+
+            return true;
         }
     }

--