From: Eduardo Habkost <ehabkost@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Eric Blake <eblake@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>,
Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH v2 53/54] qapi: make query-cpu-model-expansion depend on s390 or x86
Date: Wed, 23 Aug 2017 09:57:43 -0300 [thread overview]
Message-ID: <20170823125743.GF27715@localhost.localdomain> (raw)
In-Reply-To: <2076518614.2481492.1503483676829.JavaMail.zimbra@redhat.com>
On Wed, Aug 23, 2017 at 06:21:16AM -0400, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
> > On Tue, Aug 22, 2017 at 03:22:54PM +0200, Marc-André Lureau wrote:
> > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > > ---
> > > qapi-schema.json | 4 +++-
> > > include/sysemu/arch_init.h | 3 ---
> > > monitor.c | 3 ---
> > > qmp.c | 7 -------
> > > stubs/arch-query-cpu-model-expansion.c | 12 ------------
> > > target/i386/cpu.c | 2 +-
> > > target/s390x/cpu_models.c | 3 ++-
> > > stubs/Makefile.objs | 1 -
> > > 8 files changed, 6 insertions(+), 29 deletions(-)
> > > delete mode 100644 stubs/arch-query-cpu-model-expansion.c
> > >
> > > diff --git a/qapi-schema.json b/qapi-schema.json
> > > index 6c1adb35b5..127a2c71c6 100644
> > > --- a/qapi-schema.json
> > > +++ b/qapi-schema.json
> > > @@ -4535,7 +4535,9 @@
> > > { 'command': 'query-cpu-model-expansion',
> > > 'data': { 'type': 'CpuModelExpansionType',
> > > 'model': 'CpuModelInfo' },
> > > - 'returns': 'CpuModelExpansionInfo' }
> > > + 'returns': 'CpuModelExpansionInfo',
> > > + 'if': ['defined(NEED_CPU_H)',
> > > + 'defined(TARGET_S390X) || defined(TARGET_I386)']}
> >
> > Maybe this is already documented somewhere in the series (I'm
> > still going through the other patches), but: why exactly is
> > 'defined(NEED_CPU_H)' in the list, too?
>
> The point of this series is to make qapi schema configurable.
>
> Some types/commands/events are target-specifc. In order to
> #ifdef on poisoined symbols, we make most of QAPI generated
> code built per-target in patch 49/54. But the common code still
> need to compile some units, that's why #ifdef NEED_CPU_U. The
> clean solution is probably to split the generated schema to
> common & per-target, that's not covered in the series.
I see. I'm worried about one thing: what if the QMP dispatch
code is incorrectly moved back to common code later? It will
silently skip all the arch-dependent commands without any
warnings.
e.g.: I just applied the following change on top of your series,
and all arch-dependent commands are silently skipped:
diff --git a/Makefile.objs b/Makefile.objs
index 2664720..24a4ea0 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -2,7 +2,7 @@
# Common libraries for tools and emulators
stub-obj-y = stubs/ crypto/
util-obj-y = util/ qobject/ qapi/
-util-obj-y += qapi-types.o qapi-visit.o
+util-obj-y += qmp-introspect.o qapi-types.o qapi-visit.o qapi-event.o
chardev-obj-y = chardev/
@@ -72,6 +72,13 @@ common-obj-y += chardev/
common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
common-obj-$(CONFIG_FDT) += device_tree.o
+
+######################################################################
+# qapi
+
+common-obj-y += qmp-marshal.o
+common-obj-y += qmp-introspect.o
+common-obj-y += qmp.o hmp.o
endif
#######################################################################
diff --git a/Makefile.target b/Makefile.target
index c5f8ded..7f42c45 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -157,10 +157,6 @@ endif
GENERATED_FILES += hmp-commands.h hmp-commands-info.h
-obj-y += qmp-introspect.o qapi-types.o qapi-visit.o qapi-event.o
-obj-y += qmp-marshal.o qmp-introspect.o
-obj-y += qmp.o hmp.o
-
endif # CONFIG_SOFTMMU
# Workaround for http://gcc.gnu.org/PR55489, see configure.
We wouldn't need to check NEED_CPU_H at all if the condition on
QMP commands affect only the actual QMP dispatch code, and not
the generated types or declarations. e.g.:
diff --git a/qapi-schema.json b/qapi-schema.json
index 194859f..67b46ad 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -3578,7 +3578,7 @@
##
{ 'command': 'dump-skeys',
'data': { 'filename': 'str' },
- 'if': ['defined(NEED_CPU_H)', 'defined(TARGET_S390X)']}
+ 'if': ['defined(TARGET_S390X)']}
##
# @netdev_add:
@@ -4434,8 +4434,7 @@
# Since: 1.2.0
##
{ 'command': 'query-cpu-definitions', 'returns': ['CpuDefinitionInfo'],
- 'if': ['defined(NEED_CPU_H)',
- 'defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X)'] }
+ 'if': ['defined(TARGET_PPC) || defined(TARGET_ARM) || defined(TARGET_I386) || defined(TARGET_S390X)'] }
##
# @CpuModelInfo:
@@ -4538,8 +4537,7 @@
'data': { 'type': 'CpuModelExpansionType',
'model': 'CpuModelInfo' },
'returns': 'CpuModelExpansionInfo',
- 'if': ['defined(NEED_CPU_H)',
- 'defined(TARGET_S390X) || defined(TARGET_I386)']}
+ 'if': ['defined(TARGET_S390X) || defined(TARGET_I386)']}
##
# @CpuModelCompareResult:
@@ -4627,7 +4625,7 @@
{ 'command': 'query-cpu-model-comparison',
'data': { 'modela': 'CpuModelInfo', 'modelb': 'CpuModelInfo' },
'returns': 'CpuModelCompareInfo',
- 'if': ['defined(NEED_CPU_H)', 'defined(TARGET_S390X)']}
+ 'if': ['defined(TARGET_S390X)']}
##
@@ -4681,7 +4679,7 @@
'data': { 'modela': 'CpuModelInfo',
'modelb': 'CpuModelInfo' },
'returns': 'CpuModelBaselineInfo',
- 'if': ['defined(NEED_CPU_H)', 'defined(TARGET_S390X)']}
+ 'if': ['defined(TARGET_S390X)']}
##
# @AddfdInfo:
@@ -6303,7 +6301,7 @@
#
##
{ 'command': 'rtc-reset-reinjection',
- 'if': ['defined(NEED_CPU_H)', 'defined(TARGET_I386)'] }
+ 'if': ['defined(TARGET_I386)'] }
# Rocker ethernet network switch
{ 'include': 'qapi/rocker.json' }
@@ -6466,7 +6464,7 @@
#
##
{ 'command': 'query-gic-capabilities', 'returns': ['GICCapability'],
- 'if': ['defined(NEED_CPU_H)', 'defined(TARGET_ARM)']}
+ 'if': ['defined(TARGET_ARM)']}
##
# @CpuInstanceProperties:
diff --git a/scripts/qapi.py b/scripts/qapi.py
index bcd8d37..769a730 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1720,8 +1720,7 @@ class QAPISchema(object):
ifcond = expr.get('if')
if isinstance(data, OrderedDict):
data = self._make_implicit_object_type(
- name, info, doc, 'arg', self._make_members(data, info),
- ifcond)
+ name, info, doc, 'arg', self._make_members(data, info))
if isinstance(rets, list):
assert len(rets) == 1
rets = self._make_array_type(rets[0], info)
diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index db45415..2baa73f 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -228,7 +228,7 @@ class QAPISchemaGenCommandVisitor(QAPISchemaVisitor):
self.defn = None
self._regy = None
self._visited_ret_types = None
- self.if_members = ['decl', 'defn', '_regy']
+ self.if_members = ['defn', '_regy']
def visit_begin(self, schema):
self.decl = ''
--
Eduardo
next prev parent reply other threads:[~2017-08-23 12:58 UTC|newest]
Thread overview: 140+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-22 13:22 [Qemu-devel] [PATCH v2 00/54] qapi: add #if pre-processor conditions to generated code Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 01/54] qapi: fix type_seen key error Marc-André Lureau
2017-08-22 15:00 ` Markus Armbruster
2017-08-22 15:50 ` Marc-André Lureau
2017-08-22 16:40 ` Markus Armbruster
2017-08-25 6:02 ` Markus Armbruster
2017-08-25 12:57 ` Eduardo Habkost
2017-08-25 14:12 ` Marc-André Lureau
2017-08-28 10:52 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 02/54] qdict: add qdict_put_null() helper Marc-André Lureau
2017-08-22 15:09 ` Markus Armbruster
2017-08-25 15:46 ` Eric Blake
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 03/54] qobject: add literal qobject type Marc-André Lureau
2017-08-22 15:31 ` Markus Armbruster
2017-08-22 15:42 ` Marc-André Lureau
2017-08-22 16:24 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 04/54] qlit: add qobject_form_qlit() Marc-André Lureau
2017-08-22 15:40 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 05/54] qapi: generate a literal qobject for introspection Marc-André Lureau
2017-08-22 16:33 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 06/54] qapi: introduce qapi_enum_lookup() Marc-André Lureau
2017-08-22 18:10 ` John Snow
2017-08-23 8:02 ` Markus Armbruster
2017-08-23 10:10 ` Marc-André Lureau
2017-08-24 11:14 ` Dr. David Alan Gilbert
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 07/54] tpm: simplify driver registration & lookup Marc-André Lureau
2017-08-23 9:04 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 08/54] hmp: use qapi_enum_parse() in hmp_migrate_set_capability Marc-André Lureau
2017-08-23 9:34 ` Markus Armbruster
2017-08-24 11:29 ` Dr. David Alan Gilbert
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 09/54] hmp: use qapi_enum_parse() in hmp_migrate_set_parameter Marc-André Lureau
2017-08-23 9:43 ` Markus Armbruster
2017-08-24 13:16 ` Dr. David Alan Gilbert
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 10/54] block: use qemu_enum_parse() in blkdebug_debug_breakpoint Marc-André Lureau
2017-08-23 10:05 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 11/54] quorum: use qapi_enum_parse() in quorum_open Marc-André Lureau
2017-08-22 13:40 ` Alberto Garcia
2017-08-23 11:15 ` Markus Armbruster
2017-08-23 11:24 ` Markus Armbruster
2017-08-23 11:53 ` Alberto Garcia
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 12/54] qapi: change enum lookup structure Marc-André Lureau
2017-08-23 12:09 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 13/54] qapi: drop the sentinel in enum array Marc-André Lureau
2017-08-23 12:37 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 14/54] qapi2texi: minor python code simplification Marc-André Lureau
2017-08-22 13:56 ` Philippe Mathieu-Daudé
2017-09-01 15:49 ` Markus Armbruster
2017-09-04 8:18 ` Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 15/54] qapi: add 'if' to top-level expressions Marc-André Lureau
2017-09-04 13:27 ` Markus Armbruster
2017-09-05 13:58 ` Marc-André Lureau
2017-09-06 11:36 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 16/54] qapi: add a test for invalid 'if' Marc-André Lureau
2017-09-04 13:31 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 17/54] qapi: add 'if' condition on entity objects Marc-André Lureau
2017-09-04 16:13 ` Markus Armbruster
2017-09-05 15:38 ` Marc-André Lureau
2017-09-05 16:31 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 18/54] qapi: add 'ifcond' to visitor methods Marc-André Lureau
2017-09-04 16:47 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 19/54] qapi: add #if/#endif helpers Marc-André Lureau
2017-09-05 9:32 ` Markus Armbruster
2017-09-06 15:19 ` Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 20/54] qapi-introspect: modify to_qlit() to take an optional suffix Marc-André Lureau
2017-09-05 9:42 ` Markus Armbruster
2017-09-06 14:02 ` Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 21/54] qapi-introspect: modify to_qlit() to generate #if code Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 22/54] qapi-introspect: add preprocessor conditions to generated QLit Marc-André Lureau
2017-09-05 14:24 ` Markus Armbruster
2017-09-05 16:24 ` Marc-André Lureau
2017-09-06 11:38 ` Markus Armbruster
2017-09-06 14:26 ` Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 23/54] qapi-commands: add #if conditions to commands Marc-André Lureau
2017-09-05 14:53 ` Markus Armbruster
2017-09-05 15:05 ` Marc-André Lureau
2017-09-05 15:08 ` Marc-André Lureau
2017-09-05 16:34 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 24/54] qapi-event: add #if conditions to events Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 25/54] qapi-visit: add #if conditions to visitors Marc-André Lureau
2017-09-06 10:54 ` Markus Armbruster
2017-09-06 14:22 ` Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 26/54] qapi-types: refactor variants handling Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 27/54] qapi-types: add #if conditions to types Marc-André Lureau
2017-09-06 11:43 ` Markus Armbruster
2017-09-06 14:56 ` Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 28/54] qapi: do not define enumeration value explicitely Marc-André Lureau
2017-08-22 14:00 ` Philippe Mathieu-Daudé
2017-09-05 17:45 ` Markus Armbruster
2017-09-06 12:09 ` Marc-André Lureau
2017-09-06 13:39 ` Markus Armbruster
2017-09-06 13:55 ` Marc-André Lureau
2017-09-06 15:20 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 29/54] qapi: add 'if' to enum members Marc-André Lureau
2017-09-06 13:01 ` Markus Armbruster
2017-09-07 14:11 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 30/54] qapi: add #if conditions on generated enum values Marc-André Lureau
2017-09-06 15:38 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 31/54] tests: add some enum members tests Marc-André Lureau
2017-09-06 15:41 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 32/54] qapi: add 'if' to struct members Marc-André Lureau
2017-09-07 14:26 ` Markus Armbruster
2017-09-07 15:30 ` Marc-André Lureau
2017-09-07 15:52 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 33/54] qapi: add some struct member tests Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 34/54] qapi: add #if conditions to generated struct members Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 35/54] qapi: add 'if' on union variants Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 36/54] qapi: add #if conditions to generated variants Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 37/54] qapi: 'if' to alternate variant Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 38/54] qapi: add tests for invalid alternate Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 39/54] qapi: add #if conditions to generated alternate variants Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 40/54] docs: document schema configuration Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 41/54] qapi2texi: add 'If:' section to generated documentation Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 42/54] qapi2texi: add 'If:' condition to enum values Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 43/54] qapi2texi: add 'If:' condition to struct members Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 44/54] qapi2texi: add condition to variants Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 45/54] qapi: add conditions to VNC type/commands/events on the schema Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 46/54] qapi: add conditions to SPICE " Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 47/54] qapi: add conditions to REPLICATION type/commands " Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 48/54] tests/qmp-test: add query-qmp-schema test Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 49/54] build-sys: make qemu qapi objects per-target Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 50/54] qapi: make rtc-reset-reinjection depend on TARGET_I386 Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 51/54] qapi: make s390 commands depend on TARGET_S390X Marc-André Lureau
2017-08-22 14:24 ` Cornelia Huck
2017-08-22 14:25 ` David Hildenbrand
2017-08-22 14:41 ` Marc-André Lureau
2017-08-22 15:14 ` Cornelia Huck
2017-08-22 15:46 ` Marc-André Lureau
2017-08-22 15:58 ` Markus Armbruster
2017-08-22 16:01 ` David Hildenbrand
2017-08-22 16:25 ` Markus Armbruster
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 52/54] qapi: make query-gic-capabilities depend on TARGET_ARM Marc-André Lureau
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 53/54] qapi: make query-cpu-model-expansion depend on s390 or x86 Marc-André Lureau
2017-08-22 18:42 ` Eduardo Habkost
2017-08-23 10:21 ` Marc-André Lureau
2017-08-23 12:57 ` Eduardo Habkost [this message]
2017-08-23 13:58 ` Marc-André Lureau
2017-08-23 14:13 ` Eduardo Habkost
2017-08-22 13:22 ` [Qemu-devel] [PATCH v2 54/54] qapi: make query-cpu-definitions depend on specific targets Marc-André Lureau
2017-08-22 14:47 ` [Qemu-devel] [PATCH v2 00/54] qapi: add #if pre-processor conditions to generated code no-reply
2017-08-23 12:46 ` Markus Armbruster
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170823125743.GF27715@localhost.localdomain \
--to=ehabkost@redhat.com \
--cc=agraf@suse.de \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).