If we can report whuether TPM is available, then mgmt apps can enable it by default for new VMs. This is important because OS like Win11 consider TPM to be mandatory. In v2: - Avoid triggering reporting of errors when querying caps - Only skip reporting of emulator backend when swtpm is missing, not entire tpm suppport - Lots of refactoring to support point 1. Daniel P. Berrangé (12): util: use consistent naming for swtpm global variables util: rename typedef for parsing swtpm capabilities util: refactor TPM helper methods to reduce duplicationm util: replace TPM global variables with a struct array util: don't export virTPMEmulatorInit method util: ensure all TPM global vars access is protected by lock util: pull TPM capabilities probing out of main init method util: add a method for checking if swtpm is available conf: add TPM devices to domain capabilities qemu: fill in domain capabilities for TPMs qemu: mock swtpm initialization in tests run: detect daemons when run via wrapper commands docs/schemas/domaincaps.rng | 10 + run.in | 22 +- src/conf/domain_capabilities.c | 14 ++ src/conf/domain_capabilities.h | 10 + src/libvirt_private.syms | 2 +- src/qemu/qemu_capabilities.c | 34 +++ src/qemu/qemu_capabilities.h | 3 + src/qemu/qemu_tpm.c | 6 - src/util/virtpm.c | 232 ++++++++++-------- src/util/virtpm.h | 3 +- .../domaincapsdata/qemu_2.11.0-q35.x86_64.xml | 9 + .../domaincapsdata/qemu_2.11.0-tcg.x86_64.xml | 9 + tests/domaincapsdata/qemu_2.11.0.s390x.xml | 1 + tests/domaincapsdata/qemu_2.11.0.x86_64.xml | 9 + .../domaincapsdata/qemu_2.12.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_2.12.0-tcg.x86_64.xml | 10 + .../qemu_2.12.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_2.12.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_2.12.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_2.12.0.s390x.xml | 1 + tests/domaincapsdata/qemu_2.12.0.x86_64.xml | 10 + .../domaincapsdata/qemu_3.0.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_3.0.0-tcg.x86_64.xml | 10 + tests/domaincapsdata/qemu_3.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_3.0.0.s390x.xml | 1 + tests/domaincapsdata/qemu_3.0.0.x86_64.xml | 10 + .../domaincapsdata/qemu_3.1.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_3.1.0-tcg.x86_64.xml | 10 + tests/domaincapsdata/qemu_3.1.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_3.1.0.x86_64.xml | 10 + .../domaincapsdata/qemu_4.0.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_4.0.0-tcg.x86_64.xml | 10 + .../qemu_4.0.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.0.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.0.0.ppc64.xml | 1 + tests/domaincapsdata/qemu_4.0.0.s390x.xml | 1 + tests/domaincapsdata/qemu_4.0.0.x86_64.xml | 10 + .../domaincapsdata/qemu_4.1.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_4.1.0-tcg.x86_64.xml | 10 + tests/domaincapsdata/qemu_4.1.0.x86_64.xml | 10 + .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 10 + .../qemu_4.2.0-virt.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.aarch64.xml | 1 + tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 6 + tests/domaincapsdata/qemu_4.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 10 + .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 10 + .../qemu_5.0.0-virt.aarch64.xml | 9 + tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 9 + tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 10 + tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 10 + .../domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 10 + tests/domaincapsdata/qemu_5.1.0.sparc.xml | 1 + tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 10 + .../domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 10 + .../qemu_5.2.0-virt.aarch64.xml | 9 + tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 9 + tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 10 + tests/domaincapsdata/qemu_5.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 10 + .../domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 10 + .../qemu_6.0.0-virt.aarch64.xml | 9 + tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 9 + tests/domaincapsdata/qemu_6.0.0.s390x.xml | 1 + tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 10 + .../domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 10 + tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 10 + .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 10 + .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 10 + .../qemu_6.2.0-virt.aarch64.xml | 9 + tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 9 + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 10 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 10 + tests/domaincapstest.c | 9 + 80 files changed, 731 insertions(+), 127 deletions(-) -- 2.33.1