For ARM platform, we still do not have any interface to query
whether current QEMU/host support specific GIC version. This
patchset is trying to add one QMP interface for that. By querying
the GIC capability using the new interface, one should know exactly
what GIC version(s) the platform will support. The capability bits
will be decided by both QEMU and host kernel.
The current patchset only provides interface for review. Its handler
is a fake one which returns empty always.
The command interface I am planning to add is something like this:
-> { "execute": "query-gic-capability" }
<- { "return": [ "gicv2", "gicv2-kvm",
"gicv3-kvm" ] }
Currently, all the possible supported GIC versions are:
- gicv2: GIC version 2 without kernel IRQ chip
- gicv2-kvm: GIC version 2 with kernel IRQ chip
- gicv3: GIC version 3 without kernel IRQ chip (not supported)
- gicv3-kvm: GIC version 3 with kernel IRQ chip
Since "gicv3" is still not supported (to use GICv3, kernel irqchip
support is required for now, which corresponds to "gicv3-kvm"),
currently the maximum superset of the result should be:
["gicv2", "gicv2-kvm", "gicv3-kvm"]
Please help review whether the interface suits our need, also please
point out any error I have made.
One question: how should I make this command "ARM only"? I see that
in qmp-commands.hx, I can use something like "#if defined
TARGET_ARM" to block out ARM specified commands, however how should
I do the similiar thing in qapi-schema.json?
Thanks!
Peter
Peter Xu (2):
arm: gic: add GICType
arm: gic: add "query-gic-capability" interface
qapi-schema.json | 28 ++++++++++++++++++++++++++++
qmp-commands.hx | 25 +++++++++++++++++++++++++
qmp.c | 5 +++++
scripts/qapi.py | 1 +
4 files changed, 59 insertions(+)
--
2.4.3