From: Stefan Berger <stefanb@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, "Stefan Berger" <stefanb@linux.ibm.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [PULL v1 5/5] tpm: Return QMP error when TPM is disabled in build
Date: Tue, 15 Jun 2021 11:21:52 -0400 [thread overview]
Message-ID: <20210615152152.2496772-6-stefanb@linux.vnet.ibm.com> (raw)
In-Reply-To: <20210615152152.2496772-1-stefanb@linux.vnet.ibm.com>
From: Philippe Mathieu-Daudé <philmd@redhat.com>
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": [
]
}
To make it clearer by returning an error:
- Make the TPM QAPI schema conditional
All of tpm.json is now 'if': 'defined(CONFIG_TPM)'.
- Adapt the HMP command
- Remove stubs which became unnecessary
The management layer now gets a 'CommandNotFound' error:
{ "execute": "query-tpm" }
{
"error": {
"class": "CommandNotFound",
"desc": "The command query-tpm has not been found"
}
}
Suggested-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
MAINTAINERS | 1 -
monitor/hmp-cmds.c | 4 ++++
qapi/tpm.json | 28 +++++++++++++++++++---------
stubs/meson.build | 1 -
stubs/tpm.c | 25 -------------------------
5 files changed, 23 insertions(+), 36 deletions(-)
delete mode 100644 stubs/tpm.c
diff --git a/MAINTAINERS b/MAINTAINERS
index 7d9cd29042..636bf2f536 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2707,7 +2707,6 @@ TPM
M: Stefan Berger <stefanb@linux.ibm.com>
S: Maintained
F: tpm.c
-F: stubs/tpm.c
F: hw/tpm/*
F: include/hw/acpi/tpm.h
F: include/sysemu/tpm*
diff --git a/monitor/hmp-cmds.c b/monitor/hmp-cmds.c
index d10ee14110..0942027208 100644
--- a/monitor/hmp-cmds.c
+++ b/monitor/hmp-cmds.c
@@ -901,6 +901,7 @@ void hmp_info_pci(Monitor *mon, const QDict *qdict)
void hmp_info_tpm(Monitor *mon, const QDict *qdict)
{
+#ifdef CONFIG_TPM
TPMInfoList *info_list, *info;
Error *err = NULL;
unsigned int c = 0;
@@ -946,6 +947,9 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
c++;
}
qapi_free_TPMInfoList(info_list);
+#else
+ monitor_printf(mon, "TPM device not supported\n");
+#endif /* CONFIG_TPM */
}
void hmp_quit(Monitor *mon, const QDict *qdict)
diff --git a/qapi/tpm.json b/qapi/tpm.json
index 6a10c9ed8d..75590979fd 100644
--- a/qapi/tpm.json
+++ b/qapi/tpm.json
@@ -17,7 +17,9 @@
#
# Since: 1.5
##
-{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ] }
+{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ],
+ 'if': 'defined(CONFIG_TPM)' }
+
##
# @query-tpm-models:
#
@@ -33,7 +35,8 @@
# <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
#
##
-{ 'command': 'query-tpm-models', 'returns': ['TpmModel'] }
+{ 'command': 'query-tpm-models', 'returns': ['TpmModel'],
+ 'if': 'defined(CONFIG_TPM)' }
##
# @TpmType:
@@ -46,7 +49,8 @@
#
# Since: 1.5
##
-{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ] }
+{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ],
+ 'if': 'defined(CONFIG_TPM)' }
##
# @query-tpm-types:
@@ -63,7 +67,8 @@
# <- { "return": [ "passthrough", "emulator" ] }
#
##
-{ 'command': 'query-tpm-types', 'returns': ['TpmType'] }
+{ 'command': 'query-tpm-types', 'returns': ['TpmType'],
+ 'if': 'defined(CONFIG_TPM)' }
##
# @TPMPassthroughOptions:
@@ -79,7 +84,8 @@
##
{ 'struct': 'TPMPassthroughOptions',
'data': { '*path': 'str',
- '*cancel-path': 'str' } }
+ '*cancel-path': 'str' },
+ 'if': 'defined(CONFIG_TPM)' }
##
# @TPMEmulatorOptions:
@@ -90,7 +96,8 @@
#
# Since: 2.11
##
-{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' } }
+{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
+ 'if': 'defined(CONFIG_TPM)' }
##
# @TpmTypeOptions:
@@ -104,7 +111,8 @@
##
{ 'union': 'TpmTypeOptions',
'data': { 'passthrough' : 'TPMPassthroughOptions',
- 'emulator': 'TPMEmulatorOptions' } }
+ 'emulator': 'TPMEmulatorOptions' },
+ 'if': 'defined(CONFIG_TPM)' }
##
# @TPMInfo:
@@ -122,7 +130,8 @@
{ 'struct': 'TPMInfo',
'data': {'id': 'str',
'model': 'TpmModel',
- 'options': 'TpmTypeOptions' } }
+ 'options': 'TpmTypeOptions' },
+ 'if': 'defined(CONFIG_TPM)' }
##
# @query-tpm:
@@ -152,4 +161,5 @@
# }
#
##
-{ 'command': 'query-tpm', 'returns': ['TPMInfo'] }
+{ 'command': 'query-tpm', 'returns': ['TPMInfo'],
+ 'if': 'defined(CONFIG_TPM)' }
diff --git a/stubs/meson.build b/stubs/meson.build
index 65c22c0568..d4e9549dc9 100644
--- a/stubs/meson.build
+++ b/stubs/meson.build
@@ -38,7 +38,6 @@ stub_ss.add(files('runstate-check.c'))
stub_ss.add(files('sysbus.c'))
stub_ss.add(files('target-get-monitor-def.c'))
stub_ss.add(files('target-monitor-defs.c'))
-stub_ss.add(files('tpm.c'))
stub_ss.add(files('trace-control.c'))
stub_ss.add(files('uuid.c'))
stub_ss.add(files('vmgenid.c'))
diff --git a/stubs/tpm.c b/stubs/tpm.c
deleted file mode 100644
index e79bd2a6c2..0000000000
--- a/stubs/tpm.c
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * TPM stubs
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- */
-
-#include "qemu/osdep.h"
-#include "qapi/qapi-commands-tpm.h"
-#include "hw/acpi/tpm.h"
-
-TPMInfoList *qmp_query_tpm(Error **errp)
-{
- return NULL;
-}
-
-TpmTypeList *qmp_query_tpm_types(Error **errp)
-{
- return NULL;
-}
-
-TpmModelList *qmp_query_tpm_models(Error **errp)
-{
- return NULL;
-}
--
2.31.1
next prev parent reply other threads:[~2021-06-15 15:27 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-15 15:21 [PULL v1 0/5] Merge tpm 2021/06/15 v1 Stefan Berger
2021-06-15 15:21 ` [PULL v1 1/5] i386: Eliminate all TPM related code if CONFIG_TPM is not set Stefan Berger
2021-06-15 15:21 ` [PULL v1 2/5] arm: " Stefan Berger
2021-06-15 15:21 ` [PULL v1 3/5] acpi: " Stefan Berger
2021-06-15 15:21 ` [PULL v1 4/5] sysemu: Make TPM structures inaccessible if CONFIG_TPM is not defined Stefan Berger
2021-06-15 15:21 ` Stefan Berger [this message]
2021-06-16 12:50 ` [PULL v1 0/5] Merge tpm 2021/06/15 v1 Peter Maydell
2021-06-16 14:38 ` Philippe Mathieu-Daudé
2021-06-16 14:48 ` Stefan Berger
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=20210615152152.2496772-6-stefanb@linux.vnet.ibm.com \
--to=stefanb@linux.vnet.ibm.com \
--cc=armbru@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanb@linux.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.