On 6/9/21 6:01 PM, Marc-André Lureau wrote: > Hi > > On Wed, Jun 9, 2021 at 7:33 PM Philippe Mathieu-Daudé <phi...@redhat.com > <mailto:phi...@redhat.com>> wrote: > > When the management layer queries a binary built using --disable-tpm > for TPM devices, it gets confused by getting empty responses: > > { "execute": "query-tpm" } > { > "return": [ > ] > } > { "execute": "query-tpm-types" } > { > "return": [ > ] > } > { "execute": "query-tpm-models" } > { > "return": [ > ] > } > > Make it clearer by returning an error, mentioning the feature is > disabled: > > { "execute": "query-tpm" } > { > "error": { > "class": "GenericError", > "desc": "this feature or command is not currently supported" > } > } > > Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com > <mailto:phi...@redhat.com>> > > > Why not make the qapi schema conditional?
I'm getting: qapi/qapi-commands-tpm.c:123:13: error: ‘qmp_marshal_output_TPMInfoList’ defined but not used [-Werror=unused-function] 123 | static void qmp_marshal_output_TPMInfoList(TPMInfoList *ret_in, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ qapi/qapi-commands-tpm.c:73:13: error: ‘qmp_marshal_output_TpmTypeList’ defined but not used [-Werror=unused-function] 73 | static void qmp_marshal_output_TpmTypeList(TpmTypeList *ret_in, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ qapi/qapi-commands-tpm.c:23:13: error: ‘qmp_marshal_output_TpmModelList’ defined but not used [-Werror=unused-function] 23 | static void qmp_marshal_output_TpmModelList(TpmModelList *ret_in, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors Fixed doing: -- >8 -- diff --git a/scripts/qapi/commands.py b/scripts/qapi/commands.py index 0e13d510547..85e332a5979 100644 --- a/scripts/qapi/commands.py +++ b/scripts/qapi/commands.py @@ -91,6 +91,7 @@ def gen_call(name: str, def gen_marshal_output(ret_type: QAPISchemaType) -> str: return mcgen(''' +__attribute__((unused)) static void qmp_marshal_output_%(c_name)s(%(c_type)s ret_in, QObject **ret_out, Error **errp) { --- But I doubt this is correct... I suppose gen_marshal_output() should be elided if no command use the type? The enum is used however: include/sysemu/tpm.h-37-struct TPMIfClass { include/sysemu/tpm.h-38- InterfaceClass parent_class; include/sysemu/tpm.h-39- include/sysemu/tpm.h:40: enum TpmModel model; include/sysemu/tpm.h-41- void (*request_completed)(TPMIf *obj, int ret); include/sysemu/tpm.h-42- enum TPMVersion (*get_version)(TPMIf *obj); include/sysemu/tpm.h-43-}; include/sysemu/tpm.h-44-