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