Message ID | 20170822132255.23945-54-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
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? I always assumed that all the QAPI and QMP dispatching code would be compiled only once, and never be compiled with -DNEED_CPU_H defined.
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 always assumed that all the QAPI and QMP dispatching code would > be compiled only once, and never be compiled with -DNEED_CPU_H > defined. No longer after 49/54.
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)']} ## # @CpuModelCompareResult: diff --git a/include/sysemu/arch_init.h b/include/sysemu/arch_init.h index e9f1ea0cca..fb3d20a1b8 100644 --- a/include/sysemu/arch_init.h +++ b/include/sysemu/arch_init.h @@ -32,8 +32,5 @@ int kvm_available(void); int xen_available(void); CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp); -CpuModelExpansionInfo *arch_query_cpu_model_expansion(CpuModelExpansionType type, - CpuModelInfo *mode, - Error **errp); #endif diff --git a/monitor.c b/monitor.c index 6ddc3c7ff7..ca67a584d2 100644 --- a/monitor.c +++ b/monitor.c @@ -971,9 +971,6 @@ static void qmp_query_qmp_schema(QDict *qdict, QObject **ret_data, */ static void qmp_unregister_commands_hack(void) { -#if !defined(TARGET_S390X) && !defined(TARGET_I386) - qmp_unregister_command(&qmp_commands, "query-cpu-model-expansion"); -#endif #if !defined(TARGET_PPC) && !defined(TARGET_ARM) && !defined(TARGET_I386) \ && !defined(TARGET_S390X) qmp_unregister_command(&qmp_commands, "query-cpu-definitions"); diff --git a/qmp.c b/qmp.c index 7b6861846f..afa266ec1e 100644 --- a/qmp.c +++ b/qmp.c @@ -546,13 +546,6 @@ CpuDefinitionInfoList *qmp_query_cpu_definitions(Error **errp) return arch_query_cpu_definitions(errp); } -CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type, - CpuModelInfo *model, - Error **errp) -{ - return arch_query_cpu_model_expansion(type, model, errp); -} - void qmp_add_client(const char *protocol, const char *fdname, bool has_skipauth, bool skipauth, bool has_tls, bool tls, Error **errp) diff --git a/stubs/arch-query-cpu-model-expansion.c b/stubs/arch-query-cpu-model-expansion.c deleted file mode 100644 index ae7cf554d1..0000000000 --- a/stubs/arch-query-cpu-model-expansion.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "qemu/osdep.h" -#include "qemu-common.h" -#include "sysemu/arch_init.h" -#include "qapi/qmp/qerror.h" - -CpuModelExpansionInfo *arch_query_cpu_model_expansion(CpuModelExpansionType type, - CpuModelInfo *mode, - Error **errp) -{ - error_setg(errp, QERR_UNSUPPORTED); - return NULL; -} diff --git a/target/i386/cpu.c b/target/i386/cpu.c index ddc45abd70..d683e70a13 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -2574,7 +2574,7 @@ out: } CpuModelExpansionInfo * -arch_query_cpu_model_expansion(CpuModelExpansionType type, +qmp_query_cpu_model_expansion(CpuModelExpansionType type, CpuModelInfo *model, Error **errp) { diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index cdff9cdd3b..863dce064f 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -22,6 +22,7 @@ #ifndef CONFIG_USER_ONLY #include "sysemu/arch_init.h" #endif +#include "qmp-commands.h" #define CPUDEF_INIT(_type, _gen, _ec_ga, _mha_pow, _hmfai, _name, _desc) \ { \ @@ -520,7 +521,7 @@ static void cpu_info_from_model(CpuModelInfo *info, const S390CPUModel *model, } } -CpuModelExpansionInfo *arch_query_cpu_model_expansion(CpuModelExpansionType type, +CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type, CpuModelInfo *model, Error **errp) { diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs index 1421824eb3..eb17628ede 100644 --- a/stubs/Makefile.objs +++ b/stubs/Makefile.objs @@ -1,5 +1,4 @@ stub-obj-y += arch-query-cpu-def.o -stub-obj-y += arch-query-cpu-model-expansion.o stub-obj-y += bdrv-next-monitor-owned.o stub-obj-y += blk-commit-all.o stub-obj-y += blockdev-close-all-bdrv-states.o
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