Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/formatdomain.rst | 6 ++++--
src/conf/domain_conf.c | 7 +++++++
src/conf/domain_conf.h | 1 +
src/conf/schemas/domaincommon.rng | 5 +++++
tests/qemuxmlconfdata/tpm-emulator-tpm2.xml | 2 +-
5 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index 5c09b87d2b..fbd05e089d 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -8097,7 +8097,7 @@ Example: usage of the TPM Emulator
...
<devices>
<tpm model='tpm-tis'>
- <backend type='emulator' version='2.0'>
+ <backend type='emulator' version='2.0' debug='5'>
<encryption secret='6dd3e4a5-1d76-44ce-961f-f119f5aad935'/>
<active_pcr_banks>
<sha256/>
@@ -8141,7 +8141,9 @@ Example: usage of the TPM Emulator
``emulator``
For this backend type the 'swtpm' TPM Emulator must be installed on the
host. Libvirt will automatically start an independent TPM emulator for
- each QEMU guest requesting access to it.
+ each QEMU guest requesting access to it. :since:`10.6.0`, the ``debug``
+ parameter can be used to enable logging in the emulator backend, and
+ accepts non-zero integer values.
``version``
The ``version`` attribute indicates the version of the TPM. This attribute
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index cb1154b23f..ab313adf6e 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -10783,6 +10783,10 @@ virDomainTPMDefParseXML(virDomainXMLOption *xmlopt,
&def->data.emulator.version) < 0)
goto error;
+ if (virXMLPropUInt(backends[0], "debug", 10, VIR_XML_PROP_NONE,
+ &def->data.emulator.debug) < 0)
+ goto error;
+
if (!(def->data.emulator.source = virDomainChrSourceDefNew(xmlopt)))
goto error;
secretuuid = virXPathString("string(./backend/encryption/@secret)",
ctxt);
@@ -24865,6 +24869,9 @@ virDomainTPMDefFormat(virBuffer *buf,
}
if (def->data.emulator.persistent_state)
virBufferAddLit(&backendAttrBuf, "
persistent_state='yes'");
+ if (def->data.emulator.debug != 0)
+ virBufferAsprintf(&backendAttrBuf, " debug='%u'",
+ def->data.emulator.debug);
if (def->data.emulator.hassecretuuid) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 2818a9f1f5..1b9d07f1a4 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1476,6 +1476,7 @@ struct _virDomainTPMDef {
virDomainChrSourceDef *source;
char *storagepath;
char *logfile;
+ unsigned int debug;
unsigned char secretuuid[VIR_UUID_BUFLEN];
bool hassecretuuid;
bool persistent_state;
diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng
index 844a931deb..981ad10a37 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -5913,6 +5913,11 @@
<ref name="virYesNo"/>
</attribute>
</optional>
+ <optional>
+ <attribute name="debug">
+ <ref name="uint8"/>
+ </attribute>
+ </optional>
</group>
<group>
<attribute name="type">
diff --git a/tests/qemuxmlconfdata/tpm-emulator-tpm2.xml
b/tests/qemuxmlconfdata/tpm-emulator-tpm2.xml
index 79acde218b..8a613db456 100644
--- a/tests/qemuxmlconfdata/tpm-emulator-tpm2.xml
+++ b/tests/qemuxmlconfdata/tpm-emulator-tpm2.xml
@@ -28,7 +28,7 @@
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<tpm model='tpm-tis'>
- <backend type='emulator' version='2.0'>
+ <backend type='emulator' version='2.0' debug='3'>
<encryption secret='b4a117f1-8af2-44a4-91b8-7f0d2d4d68a3'/>
<active_pcr_banks>
<sha256/>
--
2.45.1