[libvirt] [PATCH 2/2] qemu: Implement GIC
John Ferlan
jferlan at redhat.com
Wed Apr 29 11:33:22 UTC 2015
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 at 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);
>
More information about the libvir-list
mailing list