On 04/27/2015 09:07 AM, Michal Privoznik wrote:
The only version that's supported in QEMU is version 2,
currently.
Fortunately, it is enabled by aarch64 automatically, so there's
nothing for us that needs to be put onto command line.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_command.c | 13 +++++++++++
.../qemuxml2argvdata/qemuxml2argv-aarch64-gic.args | 6 +++++
.../qemuxml2argvdata/qemuxml2argv-aarch64-gic.xml | 26 ++++++++++++++++++++++
tests/qemuxml2argvtest.c | 2 ++
4 files changed, 47 insertions(+)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.xml
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index a54f3a3..0341300 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7199,6 +7199,19 @@ qemuBuildCpuArgStr(virQEMUDriverPtr driver,
have_cpu = true;
}
+ if (def->features[VIR_DOMAIN_FEATURE_GIC] == VIR_TRISTATE_SWITCH_ON) {
+ if (def->gic_version != 2) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("gic version '%u' is not supported"),
+ def->gic_version);
+ goto cleanup;
+ }
This is where I'd expect the "if gic_version != 0" type logic to go.
That way the future could handle version==2, version==3, etc. Eventually
one would think that magic number would be replaced by something else.
So after this I see that it doesn't matter "today", but could matter
"someday" since nothing gets sent or built up in the command line.
+
+ /* There's no command line argument currently to turn on/off GIC. It's
+ * done automatically by qemu-system-aarch64. But if this changes, lets
+ * put the code here. */
+ }
+
if (virBufferCheckError(&buf) < 0)
goto cleanup;
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.args
b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.args
new file mode 100644
index 0000000..e61cd1e
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.args
@@ -0,0 +1,6 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
+/usr/bin/qemu-system-aarch64 -S -M virt -no-kvm -cpu cortex-a53 -m 1024 -smp 1 \
+-nographic -nodefaults -monitor unix:/tmp/test-monitor,server,nowait -boot c \
+-kernel /aarch64.kernel -initrd /aarch64.initrd -append console=ttyAMA0 -usb \
+-net nic,macaddr=52:54:00:09:a4:37,vlan=0,model=virtio,name=net0 \
+-net user,vlan=0,name=hostnet0
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.xml
b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.xml
new file mode 100644
index 0000000..08d3d71
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-aarch64-gic.xml
@@ -0,0 +1,26 @@
+<domain type="qemu">
+ <name>aarch64test</name>
+ <uuid>6ba410c5-1e5c-4d57-bee7-2228e7ffa32f</uuid>
+ <memory>1048576</memory>
+ <currentMemory>1048576</currentMemory>
+ <vcpu>1</vcpu>
+ <features>
+ <acpi/>
+ <gic version='2'/>
Both enabled? Probably could remove acpi, right?
John
+ </features>
+ <cpu match='exact'>
+ <model>cortex-a53</model>
+ </cpu>
+ <os>
+ <type arch="aarch64" machine="virt">hvm</type>
+ <kernel>/aarch64.kernel</kernel>
+ <initrd>/aarch64.initrd</initrd>
+ <cmdline>console=ttyAMA0</cmdline>
+ </os>
+ <devices>
+ <emulator>/usr/bin/qemu-system-aarch64</emulator>
+ <interface type='user'>
+ <mac address='52:54:00:09:a4:37'/>
+ </interface>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 055ceee..ce5a7e8 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -1531,6 +1531,8 @@ mymain(void)
DO_TEST("aarch64-cpu-model-host", QEMU_CAPS_DEVICE, QEMU_CAPS_DRIVE,
QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DEVICE_VIRTIO_MMIO,
QEMU_CAPS_CPU_HOST, QEMU_CAPS_KVM);
+ DO_TEST("aarch64-gic", QEMU_CAPS_DEVICE, QEMU_CAPS_DRIVE,
+ QEMU_CAPS_KVM);
DO_TEST("kvm-pit-device", QEMU_CAPS_KVM_PIT_TICK_POLICY);
DO_TEST("kvm-pit-delay", QEMU_CAPS_NO_KVM_PIT);