[PATCH 17/31] qemu: Update qemuDomainSupportsPCI()

Andrea Bolognani via Devel posted 31 patches 2 weeks, 5 days ago
[PATCH 17/31] qemu: Update qemuDomainSupportsPCI()
Posted by Andrea Bolognani via Devel 2 weeks, 5 days ago
The sparc architecture doesn't support PCI, and neither does
the isapc machine type.

One of the isapc tests starts failing as a consequence of
this change, which is expected; somewhat surprisingly, another
test for the same machine type goes from an early/hard failure
(PARSE_ERROR) to a late/soft one (FAILURE) instead. This will
be rectified by a later commit.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 src/qemu/qemu_domain.c                        | 10 ++++++
 .../isapc-pci.x86_64-latest.args              | 31 -------------------
 .../isapc-pci.x86_64-latest.err               |  1 +
 ...ontroller-default-isapc.x86_64-latest.xml} |  5 +--
 tests/qemuxmlconftest.c                       |  4 +--
 5 files changed, 16 insertions(+), 35 deletions(-)
 delete mode 100644 tests/qemuxmlconfdata/isapc-pci.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/isapc-pci.x86_64-latest.err
 rename tests/qemuxmlconfdata/{isapc-pci.x86_64-latest.xml => usb-controller-default-isapc.x86_64-latest.xml} (86%)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 81a8ca906d..186e36da03 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -7703,6 +7703,16 @@ qemuDomainSupportsPCI(const virDomainDef *def)
         return false;
     }
 
+    if (ARCH_IS_X86(def->os.arch)) {
+        if (STREQ(def->os.machine, "isapc")) {
+            return false;
+        }
+        return true;
+    }
+
+    if (def->os.arch == VIR_ARCH_SPARC)
+        return false;
+
     /* On all other architectures, PCI support is assumed to
      * be present */
     return true;
diff --git a/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.args b/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.args
deleted file mode 100644
index 789b7de0ed..0000000000
--- a/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.args
+++ /dev/null
@@ -1,31 +0,0 @@
-LC_ALL=C \
-PATH=/bin \
-HOME=/var/lib/libvirt/qemu/domain--1-test \
-USER=test \
-LOGNAME=test \
-XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-test/.local/share \
-XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-test/.cache \
-XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-test/.config \
-/usr/bin/qemu-system-x86_64 \
--name guest=test,debug-threads=on \
--S \
--object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-test/master-key.aes"}' \
--machine isapc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
--accel tcg \
--cpu 486 \
--m size=2097152k \
--object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":2147483648}' \
--overcommit mem-lock=off \
--smp 1,sockets=1,cores=1,threads=1 \
--uuid 11dbdcdd-4c3b-482b-8903-9bdb8c0a2774 \
--display none \
--no-user-config \
--nodefaults \
--chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
--mon chardev=charmonitor,id=monitor,mode=control \
--rtc base=utc \
--no-shutdown \
--boot strict=on \
--audiodev '{"id":"audio1","driver":"none"}' \
--sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
--msg timestamp=on
diff --git a/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.err b/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.err
new file mode 100644
index 0000000000..0a45494ea2
--- /dev/null
+++ b/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: Machine type 'isapc' does not support PCI
diff --git a/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.xml b/tests/qemuxmlconfdata/usb-controller-default-isapc.x86_64-latest.xml
similarity index 86%
rename from tests/qemuxmlconfdata/isapc-pci.x86_64-latest.xml
rename to tests/qemuxmlconfdata/usb-controller-default-isapc.x86_64-latest.xml
index a32f3243d5..c18e2b1b0d 100644
--- a/tests/qemuxmlconfdata/isapc-pci.x86_64-latest.xml
+++ b/tests/qemuxmlconfdata/usb-controller-default-isapc.x86_64-latest.xml
@@ -1,5 +1,5 @@
 <domain type='qemu'>
-  <name>test</name>
+  <name>q35-test</name>
   <uuid>11dbdcdd-4c3b-482b-8903-9bdb8c0a2774</uuid>
   <memory unit='KiB'>2097152</memory>
   <currentMemory unit='KiB'>2097152</currentMemory>
@@ -17,9 +17,10 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-x86_64</emulator>
-    <controller type='pci' index='0' model='pci-root'/>
+    <controller type='usb' index='0' model='piix3-uhci'/>
     <input type='mouse' bus='ps2'/>
     <input type='keyboard' bus='ps2'/>
     <audio id='1' type='none'/>
+    <memballoon model='none'/>
   </devices>
 </domain>
diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c
index b3e1e37abb..9653dcc7df 100644
--- a/tests/qemuxmlconftest.c
+++ b/tests/qemuxmlconftest.c
@@ -1295,7 +1295,7 @@ mymain(void)
 
     DO_TEST_CAPS_LATEST_PARSE_ERROR("no-memory");
 
-    DO_TEST_CAPS_LATEST("isapc-pci");
+    DO_TEST_CAPS_LATEST_PARSE_ERROR("isapc-pci");
 
     DO_TEST_CAPS_LATEST("genid");
     DO_TEST_CAPS_LATEST("genid-auto");
@@ -1971,7 +1971,7 @@ mymain(void)
                  ARG_QEMU_CAPS_DEL, QEMU_CAPS_DEVICE_QEMU_XHCI, QEMU_CAPS_NEC_USB_XHCI, QEMU_CAPS_PCI_OHCI, QEMU_CAPS_LAST,
                  ARG_END);
 
-    DO_TEST_CAPS_LATEST_PARSE_ERROR("usb-controller-default-isapc");
+    DO_TEST_CAPS_LATEST_FAILURE("usb-controller-default-isapc");
     DO_TEST_CAPS_LATEST("usb-controller-default-i440fx");
     DO_TEST_CAPS_LATEST("usb-controller-default-q35");
     DO_TEST_CAPS_ARCH_LATEST("usb-controller-default-pseries", "ppc64");
-- 
2.50.1