Peter Xu <pet...@redhat.com> writes: > On Wed, Mar 02, 2016 at 10:47:39AM +0100, Markus Armbruster wrote: >> Peter Xu <pet...@redhat.com> writes: >> > If temporarily not considering kernel_irqchip=split case: >> > >> > [{ >> > "version": 2, >> > "emulated": true, >> > "kernel": true >> > }, >> > { >> > "version": 3, >> > "emulated": false, >> > "kernel": true >> > }] >> > >> > To use array rather than dict so that we do not need to change qapi >> > schema again when GICv4 comes. >> >> Drive-by shooting without sufficient context: we may *want* to change >> the QAPI schema, because that makes the change introspectable with >> query-schema. > > Failed to catch the point. :( > > What's "query-schema"? Is that a QMP command?
Yes. More than you ever wanted to know: http://events.linuxfoundation.org/sites/events/files/slides/armbru-qemu-introspection.pdf https://www.youtube.com/watch?v=IEa8Ao8_B9o&list=PLW3ep1uCIRfyLNSu708gWG7uvqlolk0ep&index=28 > What I meant is that, we can define the following (for example): > > { 'struct': 'GICCapInfo', > 'data': [ > 'version': 'int', > 'emulated': 'bool', > 'kernel': 'bool'] } > > And: > > { 'command': 'query-gic-capability', > 'returns': ['GICCapInfo'] } > > So we can keep this schema as it is when new versions arrive. We > can just push another element in. To answer questions of the sort "can this QEMU version do X?", it's often useful to tie X to a schema change that is visible in the result of query-schema. Often != always. I'd rather not mess with the schema in unnatural ways just to make something visible in query-schema. Note that "can this *board* do X" is a different question.