The capabilities reporting merged for TDX was flawed because it would always report TDX as supported simply if QEMU was new enough to have 'tdx-guest'.
Unfortunately the 'query-tdx-capabilities' QMP command that was in early postings: https://mail.gnu.org/archive/html/qemu-devel/2021-07/msg01689.html went missing and I'm not seeing an alternative way to query QEMU to see if TDX is actually launchable. So in these patches I open /dev/kvm and directly ask of the 'TDX' VM type is supported by KVM, which IIUC is equivalent to waht the original 'query-tdx-capabilities' patch was doing. In v2: * Unconditionally report TDX on all arches * Also unconditionally report s390 prot-virt on all arches * Use VIR_AUTOCLOSE * Sanity check ioctl return status < 0 * Remove dead error reporting paths * Add missing ioctl.h header include Daniel P. Berrangé (3): qemu: correctly detect working TDX support qemu: always report TDX feature caps on x86 qemu: always report s390 prot-virt feature in domain caps src/qemu/qemu_capabilities.c | 70 ++++++++++++++++--- src/qemu/qemu_capabilities.h | 3 + .../qemu_10.0.0-q35.x86_64+amdsev.xml | 2 + .../domaincapsdata/qemu_10.0.0-q35.x86_64.xml | 2 + .../qemu_10.0.0-tcg.x86_64+amdsev.xml | 2 + .../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml | 2 + .../qemu_10.0.0-virt.aarch64.xml | 2 + tests/domaincapsdata/qemu_10.0.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_10.0.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_10.0.0.s390x.xml | 1 + .../qemu_10.0.0.x86_64+amdsev.xml | 2 + tests/domaincapsdata/qemu_10.0.0.x86_64.xml | 2 + .../qemu_10.1.0-q35.x86_64+inteltdx.xml | 1 + .../domaincapsdata/qemu_10.1.0-q35.x86_64.xml | 1 + .../qemu_10.1.0-tcg.x86_64+inteltdx.xml | 2 + .../domaincapsdata/qemu_10.1.0-tcg.x86_64.xml | 2 + .../qemu_10.1.0.x86_64+inteltdx.xml | 1 + tests/domaincapsdata/qemu_10.1.0.x86_64.xml | 1 + .../qemu_10.2.0-q35.x86_64+mshv.xml | 1 + .../domaincapsdata/qemu_10.2.0-q35.x86_64.xml | 1 + .../qemu_10.2.0-tcg.x86_64+mshv.xml | 2 + .../domaincapsdata/qemu_10.2.0-tcg.x86_64.xml | 2 + .../qemu_10.2.0.x86_64+mshv.xml | 1 + tests/domaincapsdata/qemu_10.2.0.x86_64.xml | 1 + .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 2 + .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 2 + .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.1.0.ppc64.xml | 2 + tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 2 + .../qemu_7.2.0-hvf.x86_64+hvf.xml | 2 + .../domaincapsdata/qemu_7.2.0-q35.x86_64.xml | 2 + .../qemu_7.2.0-tcg.x86_64+hvf.xml | 2 + .../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_7.2.0.ppc.xml | 2 + tests/domaincapsdata/qemu_7.2.0.x86_64.xml | 2 + .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.0.0.x86_64.xml | 2 + .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_8.1.0.s390x.xml | 1 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 2 + .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml | 2 + .../qemu_8.2.0-tcg-virt.loongarch64.xml | 2 + .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml | 2 + .../qemu_8.2.0-virt.aarch64.xml | 2 + .../qemu_8.2.0-virt.loongarch64.xml | 2 + tests/domaincapsdata/qemu_8.2.0.aarch64.xml | 2 + tests/domaincapsdata/qemu_8.2.0.armv7l.xml | 2 + tests/domaincapsdata/qemu_8.2.0.s390x.xml | 1 + tests/domaincapsdata/qemu_8.2.0.x86_64.xml | 2 + .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml | 2 + .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.0.0.sparc.xml | 2 + tests/domaincapsdata/qemu_9.0.0.x86_64.xml | 2 + .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml | 2 + .../qemu_9.1.0-tcg-virt.riscv64.xml | 2 + .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml | 2 + .../qemu_9.1.0-virt.riscv64.xml | 2 + tests/domaincapsdata/qemu_9.1.0.s390x.xml | 1 + tests/domaincapsdata/qemu_9.1.0.x86_64.xml | 2 + .../qemu_9.2.0-hvf.aarch64+hvf.xml | 2 + .../qemu_9.2.0-q35.x86_64+amdsev.xml | 2 + .../domaincapsdata/qemu_9.2.0-q35.x86_64.xml | 2 + .../qemu_9.2.0-tcg.x86_64+amdsev.xml | 2 + .../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml | 2 + tests/domaincapsdata/qemu_9.2.0.s390x.xml | 1 + .../qemu_9.2.0.x86_64+amdsev.xml | 2 + tests/domaincapsdata/qemu_9.2.0.x86_64.xml | 2 + tests/domaincapsmock.c | 6 ++ 77 files changed, 205 insertions(+), 9 deletions(-) -- 2.51.1
