On 03/23/2016 08:55 PM, Peter Xu wrote:
This patch add "query-gic-capabilities" but does not
implemnet it. The
s/implemnet/implement/
command is ARM-only. The command will return a list of GICCapability
struct that describes all GIC versions that current QEMU and system
support.
Libvirt is possibly the first consumer of this new command.
Before this patch, user will successfully configure all kinds of GIC
devices for ARM guests, no matter whether current QEMU/kernel support
it. If the specified GIC version/type is not supported, user will got an
ambiguous "QEMU boot failure" when trying to start the VM. This is not
user-friendly.
With this patch, libvirt should be able to query which type (and which
version) of GIC device that we support. Use this information, libvirt
can warn the user during configuration of guests when specified GIC
device type is not supported. Or better, we can just list those versions
that we support, and filter out those not-supported ones.
For example, if we got the query result:
{"return": [{"emulated": false, "version": 3,
"kernel": true},
{"emulated": true, "version": 2, "kernel":
false}]}
Then it means that we support emulated GIC version 2 using:
qemu-system-aarch64 -M virt,accel=tcg,gic-version=2 ...
or kvm-accelerated GIC version 3 using:
qemu-system-aarch64 -M virt,accel=kvm,gic-version=3 ...
This helps - it shows how libvirt will map the query into qemu command
lines.
If we specify other explicit GIC version rather than the above, QEMU
will not be able to boot.
Besides, the community is working on a more generic way to query these
kind of information. However, due to the eagerness of this command, we
decided to first implement this ad-hoc one, then when the generic method
is ready, we can move on to that one smoothly.
Signed-off-by: Peter Xu <peterx(a)redhat.com>
---
Interface looks fine from QMP perspective:
Reviewed-by: Eric Blake <eblake(a)redhat.com>
Libvirt should be able to cope with the information here, and
introspection will let us know if we ever expand the struct.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org