qapi/tpm.json | 7 +- hw/tpm/tpm_int.h | 25 +- hw/tpm/tpm_tis.h | 70 ------ hw/tpm/tpm_util.h | 8 +- include/hw/acpi/tpm.h | 65 +++++ include/sysemu/tpm.h | 59 +++-- include/sysemu/tpm_backend.h | 70 ++---- backends/tpm.c | 121 ++++----- hw/i386/acpi-build.c | 33 ++- hw/tpm/tpm_crb.c | 320 ++++++++++++++++++++++++ hw/tpm/tpm_emulator.c | 95 +++---- hw/tpm/tpm_passthrough.c | 114 +++------ hw/tpm/tpm_tis.c | 499 +++++++++++++++++++------------------ hw/tpm/tpm_util.c | 1 + tpm.c | 63 ++--- default-configs/i386-softmmu.mak | 1 + default-configs/x86_64-softmmu.mak | 1 + hw/tpm/Makefile.objs | 1 + scripts/checkpatch.pl | 1 - 19 files changed, 899 insertions(+), 655 deletions(-) delete mode 100644 hw/tpm/tpm_tis.h create mode 100644 hw/tpm/tpm_crb.c
Hi, I accumulated a series of patch doing some TPM code cleanup while doing review. I removed some dead code, simplified other parts, and tried to isolate implementation of the backend and frontend by using a new TPMIf interface. I solved a few issues, and added some FIXME for what should be tackled. Finally, I implemented a simple CRB device (tpm 2.0) that is work in progress for now - it works fine with passthrough, but swtpm/libtpms with win10 has some issues that need more investigations. seabios CRB support is required for TPM 2.0 & emulation (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html) Comments/review welcome! Based-on: <1507222112-20315-1-git-send-email-stefanb@linux.vnet.ibm.com> Marc-André Lureau (42): tpm-tis: remove unused hw_access argument tpm-tis: remove RAISE_STS_IRQ tpm: make tpm_get_backend_driver() static tpm: lookup tpm backend class in tpm_driver_find_by_type() tpm: replace tpm_get_backend_driver() to drop be_drivers tpm: remove tpm_register_driver() tpm: move TPMSizedBuffer to tpm_tis.h tpm: remove TPMDriverOps tpm: remove init() class method tpm: remove configure_tpm() hop tpm: remove unused TPMBackendCmd tpm: remove needless cast tpm: remove locty argument from receive_cb tpm: add TPMBackendCmd to hold the request state tpm-emulator: fix error handling tpm: remove locty_data from TPMState tpm-tis: move TPMState to TIS header tpm-tis: remove tpm_tis.h header tpm-tis: fold TPMTISEmuState in TPMState tpm: add a QOM TPM interface tpm: move recv_data_callback to TPM interface tpm-backend: store TPMIf interface, improve backend_init() tpm-tis: no longer expose TPMState tpm-be: call request_completed() out of thread tpm-be: report error instead of front-end tpm-be: ask model to the TPM interface tpm: remove unused opened code tpm-passthrough: don't save guessed cancel_path in options tpm-be: update optional function pointers tpm-passthrough: pass TPMPassthruState to handle_device_opts tpm-backend: move set 'id' to common code tpm-passthrough: make it safer to destroy after creation tpm-passthrough: remove error cleanup from handle_device_opts tpm-passthrough: workaround a possible race tpm-tis: simplify header inclusion tpm: rename qemu_find_tpm() -> qemu_find_tpm_be() tpm: lookup the the TPM interface instead of TIS device tpm: add TPM interface to lookup TPM version tpm: add tpm_cmd_get_size() to tpm_util acpi: change TPM TIS data conditions tpm-emulator: add a FIXME comment about blocking cancel WIP: add TPM CRB device qapi/tpm.json | 7 +- hw/tpm/tpm_int.h | 25 +- hw/tpm/tpm_tis.h | 70 ------ hw/tpm/tpm_util.h | 8 +- include/hw/acpi/tpm.h | 65 +++++ include/sysemu/tpm.h | 59 +++-- include/sysemu/tpm_backend.h | 70 ++---- backends/tpm.c | 121 ++++----- hw/i386/acpi-build.c | 33 ++- hw/tpm/tpm_crb.c | 320 ++++++++++++++++++++++++ hw/tpm/tpm_emulator.c | 95 +++---- hw/tpm/tpm_passthrough.c | 114 +++------ hw/tpm/tpm_tis.c | 499 +++++++++++++++++++------------------ hw/tpm/tpm_util.c | 1 + tpm.c | 63 ++--- default-configs/i386-softmmu.mak | 1 + default-configs/x86_64-softmmu.mak | 1 + hw/tpm/Makefile.objs | 1 + scripts/checkpatch.pl | 1 - 19 files changed, 899 insertions(+), 655 deletions(-) delete mode 100644 hw/tpm/tpm_tis.h create mode 100644 hw/tpm/tpm_crb.c -- 2.14.1.146.gd35faa819
Hi,
This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Message-id: 20171009225623.29232-1-marcandre.lureau@redhat.com
Subject: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-build@min-glib
time make docker-test-mingw@fedora
time make docker-test-block@fedora
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
* [new tag] patchew/20171009225623.29232-1-marcandre.lureau@redhat.com -> patchew/20171009225623.29232-1-marcandre.lureau@redhat.com
Switched to a new branch 'test'
1dce39db4e WIP: add TPM CRB device
481a3ff9a1 tpm-emulator: add a FIXME comment about blocking cancel
92b718f0bc acpi: change TPM TIS data conditions
7a5b3c7e34 tpm: add tpm_cmd_get_size() to tpm_util
c86a6c13fe tpm: add TPM interface to lookup TPM version
cb6c286a51 tpm: lookup the the TPM interface instead of TIS device
0a9cb16319 tpm: rename qemu_find_tpm() -> qemu_find_tpm_be()
3d466eac2e tpm-tis: simplify header inclusion
051ab09e7f tpm-passthrough: workaround a possible race
e71b0dfd67 tpm-passthrough: remove error cleanup from handle_device_opts
61a0c63b00 tpm-passthrough: make it safer to destroy after creation
97eff12f27 tpm-backend: move set 'id' to common code
e27125f135 tpm-passthrough: pass TPMPassthruState to handle_device_opts
ecc5e62220 tpm-be: update optional function pointers
89c2da5c03 tpm-passthrough: don't save guessed cancel_path in options
3b407217ac tpm: remove unused opened code
3c2d81a760 tpm-be: ask model to the TPM interface
e17d2a2182 tpm-be: report error instead of front-end
f6ef06e45a tpm-be: call request_completed() out of thread
66e88599a8 tpm-tis: no longer expose TPMState
2c1dd01ce2 tpm-backend: store TPMIf interface, improve backend_init()
ab75259a6a tpm: move recv_data_callback to TPM interface
ed74316259 tpm: add a QOM TPM interface
f337bf38c4 tpm-tis: fold TPMTISEmuState in TPMState
ea1ab75a79 tpm-tis: remove tpm_tis.h header
9e5a008957 tpm-tis: move TPMState to TIS header
d3876cfd87 tpm: remove locty_data from TPMState
fa98b71832 tpm-emulator: fix error handling
615d6665cf tpm: add TPMBackendCmd to hold the request state
efcbfbf394 tpm: remove locty argument from receive_cb
275316a7ec tpm: remove needless cast
31f46d602f tpm: remove unused TPMBackendCmd
6f3a9189fa tpm: remove configure_tpm() hop
caffb9d70e tpm: remove init() class method
e409f33d71 tpm: remove TPMDriverOps
469aa44016 tpm: move TPMSizedBuffer to tpm_tis.h
3ab076999f tpm: remove tpm_register_driver()
989a4ad6b3 tpm: replace tpm_get_backend_driver() to drop be_drivers
c2f5ab0c8a tpm: lookup tpm backend class in tpm_driver_find_by_type()
b6b7b04801 tpm: make tpm_get_backend_driver() static
c20e4a8a99 tpm-tis: remove RAISE_STS_IRQ
4cb2372572 tpm-tis: remove unused hw_access argument
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-0efrn1fp/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
BUILD centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-0efrn1fp/src'
GEN docker-src.2017-10-09-19.30.27.26521/qemu.tar
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
bison-2.4.1-5.el6.x86_64
bzip2-devel-1.0.5-7.el6_0.x86_64
ccache-3.1.6-2.el6.x86_64
csnappy-devel-0-6.20150729gitd7bc683.el6.x86_64
flex-2.5.35-9.el6.x86_64
gcc-4.4.7-18.el6.x86_64
gettext-0.17-18.el6.x86_64
git-1.7.1-9.el6_9.x86_64
glib2-devel-2.28.8-9.el6.x86_64
libepoxy-devel-1.2-3.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
librdmacm-devel-1.0.21-0.el6.x86_64
lzo-devel-2.03-3.1.el6_5.1.x86_64
make-3.81-23.el6.x86_64
mesa-libEGL-devel-11.0.7-4.el6.x86_64
mesa-libgbm-devel-11.0.7-4.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
spice-glib-devel-0.26-8.el6.x86_64
spice-server-devel-0.12.4-16.el6.x86_64
tar-1.23-15.el6_8.x86_64
vte-devel-0.25.1-9.el6.x86_64
xen-devel-4.6.6-2.el6.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=bison bzip2-devel ccache csnappy-devel flex g++ gcc gettext git glib2-devel libepoxy-devel libfdt-devel librdmacm-devel lzo-devel make mesa-libEGL-devel mesa-libgbm-devel pixman-devel SDL-devel spice-glib-devel spice-server-devel tar vte-devel xen-devel zlib-devel
HOSTNAME=6bc53d17e441
TERM=xterm
MAKEFLAGS= -j8
J=8
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
TARGET_LIST=
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
FEATURES= dtc
DEBUG=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/tmp/qemu-test/install
No C++ compiler available; disabling C++ specific optional code
Install prefix /tmp/qemu-test/install
BIOS directory /tmp/qemu-test/install/share/qemu
firmware path /tmp/qemu-test/install/share/qemu-firmware
binary directory /tmp/qemu-test/install/bin
library directory /tmp/qemu-test/install/lib
module directory /tmp/qemu-test/install/lib/qemu
libexec directory /tmp/qemu-test/install/libexec
include directory /tmp/qemu-test/install/include
config directory /tmp/qemu-test/install/etc
local state directory /tmp/qemu-test/install/var
Manual directory /tmp/qemu-test/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DNCURSES_WIDECHAR -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/spice-server -I/usr/include/cacard -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/spice-1
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
SDL support yes (1.2.14)
GTK support yes (2.24.23)
GTK GL support no
VTE support yes (0.25.1)
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support yes
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
Multipath support no
VNC support yes
VNC SASL support no
VNC JPEG support yes
VNC PNG support yes
xen support yes
xen ctrl version 40600
pv dom build no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
RDMA support yes
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
vhost-user support yes
Trace backends log
spice support yes (0.12.6/0.12.4)
rbd support no
xfsctl support no
smartcard support yes
libusb no
usb net redir no
OpenGL support yes
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
crypto afalg no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
TPM emulator yes
QOM debugging yes
Live block migration yes
lzo support yes
snappy support no
bzip2 support yes
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
mkdir -p dtc/libfdt
mkdir -p dtc/tests
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
GEN qemu-options.def
GEN config-host.h
GEN qapi-types.h
GEN qmp-commands.h
GEN qapi-visit.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qmp-marshal.c
GEN qapi-types.c
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN trace/generated-helpers.c
GEN module_block.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN hw/ide/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN scsi/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN hw/ide/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN scsi/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qobject-input-visitor.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qbool.o
CC qobject/qlit.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/acl.o
CC util/fifo8.o
CC util/cacheinfo.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/uri.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/crc32c.o
CC util/uuid.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/timed-average.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC crypto/trace.o
CC io/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/display/trace.o
CC hw/input/trace.o
CC hw/timer/trace.o
CC hw/dma/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/vfio/trace.o
CC hw/acpi/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC hw/ide/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC nbd/trace.o
CC scsi/trace.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/get-vm-name.o
CC stubs/iothread.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/change-state-handler.o
CC stubs/monitor.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/xen-hvm.o
CC stubs/pci-host-piix.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qcow2-bitmap.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/throttle.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC scsi/utils.o
CC scsi/pr-manager.o
CC scsi/pr-manager-helper.o
CC block/dmg-bz2.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-glib.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-io.o
CC scsi/qemu-pr-helper.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC cpus-common.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/spiceaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC chardev/msmouse.o
CC block/stream.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC chardev/spice.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/xen_disk.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/xen_console.o
CC hw/char/cadence_uart.o
CC hw/char/cmsdk-apb-uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/core/platform-bus.o
CC hw/cpu/core.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/ssd0323.o
CC hw/display/xenfb.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/display/qxl.o
CC hw/display/qxl-logger.o
CC hw/display/qxl-render.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/smbus.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/input/hid.o
CC hw/ide/ich.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/edu.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/xen_nic.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_pci_bridge.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/q35.o
CC hw/pci-host/piix.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios-stub.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/ssi/mss-spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/timer/cmsdk-apb-timer.o
CC hw/timer/mss-timer.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_crb.o
CC hw/tpm/tpm_passthrough.o
CC hw/tpm/tpm_util.o
/tmp/qemu-test/src/hw/tpm/tpm_crb.c: In function 'tpm_crb_reset':
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:205: error: unknown field 'intf_id_bits' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:206: error: unknown field 'type' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:207: error: unknown field 'version' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:207: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:207: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:208: error: unknown field 'cap_locality' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:208: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:208: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:209: error: unknown field 'cap_crb_idle_bypass' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:209: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:209: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:210: error: unknown field 'cap_data_xfer_size_support' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:210: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:210: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:211: error: unknown field 'cap_fifo' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:211: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:211: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:212: error: unknown field 'cap_crb' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:212: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:212: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:213: error: unknown field 'cap_if_res' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:213: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:213: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:214: error: unknown field 'if_selector' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:214: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:214: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:215: error: unknown field 'if_selector_lock' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:215: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:215: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:216: error: unknown field 'rid' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:216: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:216: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:217: error: unknown field 'vid' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:217: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:217: warning: (near initialization for '(anonymous).<anonymous>')
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:218: error: unknown field 'did' specified in initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:218: warning: excess elements in union initializer
/tmp/qemu-test/src/hw/tpm/tpm_crb.c:218: warning: (near initialization for '(anonymous).<anonymous>')
make: *** [hw/tpm/tpm_crb.o] Error 1
make: *** Waiting for unfinished jobs....
Traceback (most recent call last):
File "./tests/docker/docker.py", line 385, in <module>
sys.exit(main())
File "./tests/docker/docker.py", line 382, in main
return args.cmdobj.run(args, argv)
File "./tests/docker/docker.py", line 239, in run
return Docker().run(argv, args.keep, quiet=args.quiet)
File "./tests/docker/docker.py", line 207, in run
quiet=quiet)
File "./tests/docker/docker.py", line 125, in _do_check
return subprocess.check_call(self._command + cmd, **kwargs)
File "/usr/lib64/python2.7/subprocess.py", line 186, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['docker', 'run', '--label', 'com.qemu.instance.uuid=d69319c4ad4911e7bbb952540069c830', '-u', '0', '-t', '--security-opt', 'seccomp=unconfined', '--rm', '--net=none', '-e', 'TARGET_LIST=', '-e', 'EXTRA_CONFIGURE_OPTS=', '-e', 'V=', '-e', 'J=8', '-e', 'DEBUG=', '-e', 'SHOW_ENV=1', '-e', 'CCACHE_DIR=/var/tmp/ccache', '-v', '/root/.cache/qemu-docker-ccache:/var/tmp/ccache:z', '-v', '/var/tmp/patchew-tester-tmp-0efrn1fp/src/docker-src.2017-10-09-19.30.27.26521:/var/tmp/qemu:z,ro', 'qemu:centos6', '/var/tmp/qemu/run', 'test-quick']' returned non-zero exit status 2
make[1]: *** [tests/docker/Makefile.include:129: docker-run] Error 1
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-0efrn1fp/src'
make: *** [tests/docker/Makefile.include:161: docker-run-test-quick@centos6] Error 2
real 2m24.250s
user 0m1.607s
sys 0m1.680s
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
On 10/09/2017 06:55 PM, Marc-André Lureau wrote:
> Hi,
>
> I accumulated a series of patch doing some TPM code cleanup while
> doing review. I removed some dead code, simplified other parts, and
> tried to isolate implementation of the backend and frontend by using a
> new TPMIf interface. I solved a few issues, and added some FIXME for
> what should be tackled. Finally, I implemented a simple CRB device
> (tpm 2.0) that is work in progress for now - it works fine with
> passthrough, but swtpm/libtpms with win10 has some issues that need
> more investigations.
>
> seabios CRB support is required for TPM 2.0 & emulation
> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html)
>
> Comments/review welcome!
Are you going to post a v2 soon?
Stefan
Hi Stefan ----- Original Message ----- > On 10/09/2017 06:55 PM, Marc-André Lureau wrote: > > Hi, > > > > I accumulated a series of patch doing some TPM code cleanup while > > doing review. I removed some dead code, simplified other parts, and > > tried to isolate implementation of the backend and frontend by using a > > new TPMIf interface. I solved a few issues, and added some FIXME for > > what should be tackled. Finally, I implemented a simple CRB device > > (tpm 2.0) that is work in progress for now - it works fine with > > passthrough, but swtpm/libtpms with win10 has some issues that need > > more investigations. > > > > seabios CRB support is required for TPM 2.0 & emulation > > (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html) > > > > Comments/review welcome! > > Are you going to post a v2 soon? I was wondering if you would take the patches that you already reviewed for the next pull request. That way v2 would be smaller. thanks
On 10/19/2017 10:33 AM, Marc-André Lureau wrote:
> Hi Stefan
>
> ----- Original Message -----
>> On 10/09/2017 06:55 PM, Marc-André Lureau wrote:
>>> Hi,
>>>
>>> I accumulated a series of patch doing some TPM code cleanup while
>>> doing review. I removed some dead code, simplified other parts, and
>>> tried to isolate implementation of the backend and frontend by using a
>>> new TPMIf interface. I solved a few issues, and added some FIXME for
>>> what should be tackled. Finally, I implemented a simple CRB device
>>> (tpm 2.0) that is work in progress for now - it works fine with
>>> passthrough, but swtpm/libtpms with win10 has some issues that need
>>> more investigations.
>>>
>>> seabios CRB support is required for TPM 2.0 & emulation
>>> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html)
>>>
>>> Comments/review welcome!
>> Are you going to post a v2 soon?
> I was wondering if you would take the patches that you already reviewed for the next pull request. That way v2 would be smaller.
I'll take them up to 21/42.
Stefan
On 10/19/2017 10:44 AM, Stefan Berger wrote:
> On 10/19/2017 10:33 AM, Marc-André Lureau wrote:
>> Hi Stefan
>>
>> ----- Original Message -----
>>> On 10/09/2017 06:55 PM, Marc-André Lureau wrote:
>>>> Hi,
>>>>
>>>> I accumulated a series of patch doing some TPM code cleanup while
>>>> doing review. I removed some dead code, simplified other parts, and
>>>> tried to isolate implementation of the backend and frontend by using a
>>>> new TPMIf interface. I solved a few issues, and added some FIXME for
>>>> what should be tackled. Finally, I implemented a simple CRB device
>>>> (tpm 2.0) that is work in progress for now - it works fine with
>>>> passthrough, but swtpm/libtpms with win10 has some issues that need
>>>> more investigations.
>>>>
>>>> seabios CRB support is required for TPM 2.0 & emulation
>>>> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html)
>>>>
>>>> Comments/review welcome!
>>> Are you going to post a v2 soon?
>> I was wondering if you would take the patches that you already
>> reviewed for the next pull request. That way v2 would be smaller.
>
> I'll take them up to 21/42.
Tested them and it seems to work fine. I'll post later today.
Did you have any more luck with win10 and tpm2 ?
Stefan
Hi ----- Original Message ----- > On 10/19/2017 10:44 AM, Stefan Berger wrote: > > On 10/19/2017 10:33 AM, Marc-André Lureau wrote: > >> Hi Stefan > >> > >> ----- Original Message ----- > >>> On 10/09/2017 06:55 PM, Marc-André Lureau wrote: > >>>> Hi, > >>>> > >>>> I accumulated a series of patch doing some TPM code cleanup while > >>>> doing review. I removed some dead code, simplified other parts, and > >>>> tried to isolate implementation of the backend and frontend by using a > >>>> new TPMIf interface. I solved a few issues, and added some FIXME for > >>>> what should be tackled. Finally, I implemented a simple CRB device > >>>> (tpm 2.0) that is work in progress for now - it works fine with > >>>> passthrough, but swtpm/libtpms with win10 has some issues that need > >>>> more investigations. > >>>> > >>>> seabios CRB support is required for TPM 2.0 & emulation > >>>> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html) > >>>> > >>>> Comments/review welcome! > >>> Are you going to post a v2 soon? > >> I was wondering if you would take the patches that you already > >> reviewed for the next pull request. That way v2 would be smaller. > > > > I'll take them up to 21/42. > > Tested them and it seems to work fine. I'll post later today. > > Did you have any more luck with win10 and tpm2 ? I haven't had time so far to investigate further. The summary was that Windows refuses to talk with a TPM2/TIS device (it doesn't even shows up in device list), while TPM2/CRB is being recognized and communicated with. However, there are some failure with swtpm/libtpms that are unclear, and will require more verbosity in libtpms. I plan to resume this effort in a few weeks. Thanks
On 10/19/2017 01:00 PM, Marc-André Lureau wrote:
> Hi
>
> ----- Original Message -----
>> On 10/19/2017 10:44 AM, Stefan Berger wrote:
>>> On 10/19/2017 10:33 AM, Marc-André Lureau wrote:
>>>> Hi Stefan
>>>>
>>>> ----- Original Message -----
>>>>> On 10/09/2017 06:55 PM, Marc-André Lureau wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I accumulated a series of patch doing some TPM code cleanup while
>>>>>> doing review. I removed some dead code, simplified other parts, and
>>>>>> tried to isolate implementation of the backend and frontend by using a
>>>>>> new TPMIf interface. I solved a few issues, and added some FIXME for
>>>>>> what should be tackled. Finally, I implemented a simple CRB device
>>>>>> (tpm 2.0) that is work in progress for now - it works fine with
>>>>>> passthrough, but swtpm/libtpms with win10 has some issues that need
>>>>>> more investigations.
>>>>>>
>>>>>> seabios CRB support is required for TPM 2.0 & emulation
>>>>>> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html)
>>>>>>
>>>>>> Comments/review welcome!
>>>>> Are you going to post a v2 soon?
>>>> I was wondering if you would take the patches that you already
>>>> reviewed for the next pull request. That way v2 would be smaller.
>>> I'll take them up to 21/42.
>> Tested them and it seems to work fine. I'll post later today.
>>
>> Did you have any more luck with win10 and tpm2 ?
> I haven't had time so far to investigate further.
>
> The summary was that Windows refuses to talk with a TPM2/TIS device (it doesn't even shows up in device list), while TPM2/CRB is being recognized and communicated with. However, there are some failure with swtpm/libtpms that are unclear, and will require more verbosity in libtpms. I plan to resume this effort in a few weeks.
TPM1.2 + TIS seems good.
TPM 2 + CRB seems to have a problem with a key handle 0x81 00 00 01.
Stefan
> Thanks
>
On 10/09/2017 06:55 PM, Marc-André Lureau wrote:
> Hi,
>
> I accumulated a series of patch doing some TPM code cleanup while
> doing review. I removed some dead code, simplified other parts, and
> tried to isolate implementation of the backend and frontend by using a
> new TPMIf interface. I solved a few issues, and added some FIXME for
> what should be tackled. Finally, I implemented a simple CRB device
> (tpm 2.0) that is work in progress for now - it works fine with
> passthrough, but swtpm/libtpms with win10 has some issues that need
> more investigations.
You are using the swtpm with --tpm2, right? And I suppose you are using
the tpm2-preview.rev146 branch of libtpms. What are the symptoms?
Most of this series looks good to me. I'll go over it again and will add
my Reviewed-by. It seems to have some build problems, though.
For libtpms + swtpm the biggest challenge is supporting state migration,
especially with TPM2. I have that working on the swtpm level in form of
test cases and also with the old CUSE TPM support in QEMU + libvirt
mgmt. stack with CUSE support. So ideally we would get to that point as
well with the QEMU TPM emulator device to make sure suspend/resume,
snapshotting, and migration work. libtpms 0.6 should have TPM 2 code and
ideally swtpm 0.1 would support TPM 2 as well.
Regards,
Stefan
>
> seabios CRB support is required for TPM 2.0 & emulation
> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html)
>
> Comments/review welcome!
>
> Based-on: <1507222112-20315-1-git-send-email-stefanb@linux.vnet.ibm.com>
>
> Marc-André Lureau (42):
> tpm-tis: remove unused hw_access argument
> tpm-tis: remove RAISE_STS_IRQ
> tpm: make tpm_get_backend_driver() static
> tpm: lookup tpm backend class in tpm_driver_find_by_type()
> tpm: replace tpm_get_backend_driver() to drop be_drivers
> tpm: remove tpm_register_driver()
> tpm: move TPMSizedBuffer to tpm_tis.h
> tpm: remove TPMDriverOps
> tpm: remove init() class method
> tpm: remove configure_tpm() hop
> tpm: remove unused TPMBackendCmd
> tpm: remove needless cast
> tpm: remove locty argument from receive_cb
> tpm: add TPMBackendCmd to hold the request state
> tpm-emulator: fix error handling
> tpm: remove locty_data from TPMState
> tpm-tis: move TPMState to TIS header
> tpm-tis: remove tpm_tis.h header
> tpm-tis: fold TPMTISEmuState in TPMState
> tpm: add a QOM TPM interface
> tpm: move recv_data_callback to TPM interface
> tpm-backend: store TPMIf interface, improve backend_init()
> tpm-tis: no longer expose TPMState
> tpm-be: call request_completed() out of thread
> tpm-be: report error instead of front-end
> tpm-be: ask model to the TPM interface
> tpm: remove unused opened code
> tpm-passthrough: don't save guessed cancel_path in options
> tpm-be: update optional function pointers
> tpm-passthrough: pass TPMPassthruState to handle_device_opts
> tpm-backend: move set 'id' to common code
> tpm-passthrough: make it safer to destroy after creation
> tpm-passthrough: remove error cleanup from handle_device_opts
> tpm-passthrough: workaround a possible race
> tpm-tis: simplify header inclusion
> tpm: rename qemu_find_tpm() -> qemu_find_tpm_be()
> tpm: lookup the the TPM interface instead of TIS device
> tpm: add TPM interface to lookup TPM version
> tpm: add tpm_cmd_get_size() to tpm_util
> acpi: change TPM TIS data conditions
> tpm-emulator: add a FIXME comment about blocking cancel
> WIP: add TPM CRB device
>
> qapi/tpm.json | 7 +-
> hw/tpm/tpm_int.h | 25 +-
> hw/tpm/tpm_tis.h | 70 ------
> hw/tpm/tpm_util.h | 8 +-
> include/hw/acpi/tpm.h | 65 +++++
> include/sysemu/tpm.h | 59 +++--
> include/sysemu/tpm_backend.h | 70 ++----
> backends/tpm.c | 121 ++++-----
> hw/i386/acpi-build.c | 33 ++-
> hw/tpm/tpm_crb.c | 320 ++++++++++++++++++++++++
> hw/tpm/tpm_emulator.c | 95 +++----
> hw/tpm/tpm_passthrough.c | 114 +++------
> hw/tpm/tpm_tis.c | 499 +++++++++++++++++++------------------
> hw/tpm/tpm_util.c | 1 +
> tpm.c | 63 ++---
> default-configs/i386-softmmu.mak | 1 +
> default-configs/x86_64-softmmu.mak | 1 +
> hw/tpm/Makefile.objs | 1 +
> scripts/checkpatch.pl | 1 -
> 19 files changed, 899 insertions(+), 655 deletions(-)
> delete mode 100644 hw/tpm/tpm_tis.h
> create mode 100644 hw/tpm/tpm_crb.c
>
Hi Stefan On Tue, Oct 10, 2017 at 4:34 AM, Stefan Berger <stefanb@linux.vnet.ibm.com> wrote: > On 10/09/2017 06:55 PM, Marc-André Lureau wrote: >> >> Hi, >> >> I accumulated a series of patch doing some TPM code cleanup while >> doing review. I removed some dead code, simplified other parts, and >> tried to isolate implementation of the backend and frontend by using a >> new TPMIf interface. I solved a few issues, and added some FIXME for >> what should be tackled. Finally, I implemented a simple CRB device >> (tpm 2.0) that is work in progress for now - it works fine with >> passthrough, but swtpm/libtpms with win10 has some issues that need >> more investigations. > > > You are using the swtpm with --tpm2, right? And I suppose you are using the > tpm2-preview.rev146 branch of libtpms. What are the symptoms? Yes, I was using tpm2-preview.rev146.ossl11 branch Windows complained about malfunctioning TPM 2.0 device, despite doing many exchanges. Sadly, I couldn't find many option to make libtpms a bit more verbose, as I am not able to parse the hexdump. I haven't spent much time investigating yet. > > Most of this series looks good to me. I'll go over it again and will add my > Reviewed-by. It seems to have some build problems, though. I fixed the build issue (gcc on centos is a bit old), last version is https://github.com/elmarco/qemu/commits/tpm. > > For libtpms + swtpm the biggest challenge is supporting state migration, > especially with TPM2. I have that working on the swtpm level in form of test > cases and also with the old CUSE TPM support in QEMU + libvirt mgmt. stack > with CUSE support. So ideally we would get to that point as well with the > QEMU TPM emulator device to make sure suspend/resume, snapshotting, and > migration work. libtpms 0.6 should have TPM 2 code and ideally swtpm 0.1 > would support TPM 2 as well. Yes! thanks a lot for working on this, this is indeed essential. How close are you from releasing the migration code? Depending how quickly this series is reviewed & merged, I would like to work on cleaning up the threading code next. thanks > > Regards, > Stefan > > >> >> seabios CRB support is required for TPM 2.0 & emulation >> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html) >> >> Comments/review welcome! >> >> Based-on: <1507222112-20315-1-git-send-email-stefanb@linux.vnet.ibm.com> >> >> Marc-André Lureau (42): >> tpm-tis: remove unused hw_access argument >> tpm-tis: remove RAISE_STS_IRQ >> tpm: make tpm_get_backend_driver() static >> tpm: lookup tpm backend class in tpm_driver_find_by_type() >> tpm: replace tpm_get_backend_driver() to drop be_drivers >> tpm: remove tpm_register_driver() >> tpm: move TPMSizedBuffer to tpm_tis.h >> tpm: remove TPMDriverOps >> tpm: remove init() class method >> tpm: remove configure_tpm() hop >> tpm: remove unused TPMBackendCmd >> tpm: remove needless cast >> tpm: remove locty argument from receive_cb >> tpm: add TPMBackendCmd to hold the request state >> tpm-emulator: fix error handling >> tpm: remove locty_data from TPMState >> tpm-tis: move TPMState to TIS header >> tpm-tis: remove tpm_tis.h header >> tpm-tis: fold TPMTISEmuState in TPMState >> tpm: add a QOM TPM interface >> tpm: move recv_data_callback to TPM interface >> tpm-backend: store TPMIf interface, improve backend_init() >> tpm-tis: no longer expose TPMState >> tpm-be: call request_completed() out of thread >> tpm-be: report error instead of front-end >> tpm-be: ask model to the TPM interface >> tpm: remove unused opened code >> tpm-passthrough: don't save guessed cancel_path in options >> tpm-be: update optional function pointers >> tpm-passthrough: pass TPMPassthruState to handle_device_opts >> tpm-backend: move set 'id' to common code >> tpm-passthrough: make it safer to destroy after creation >> tpm-passthrough: remove error cleanup from handle_device_opts >> tpm-passthrough: workaround a possible race >> tpm-tis: simplify header inclusion >> tpm: rename qemu_find_tpm() -> qemu_find_tpm_be() >> tpm: lookup the the TPM interface instead of TIS device >> tpm: add TPM interface to lookup TPM version >> tpm: add tpm_cmd_get_size() to tpm_util >> acpi: change TPM TIS data conditions >> tpm-emulator: add a FIXME comment about blocking cancel >> WIP: add TPM CRB device >> >> qapi/tpm.json | 7 +- >> hw/tpm/tpm_int.h | 25 +- >> hw/tpm/tpm_tis.h | 70 ------ >> hw/tpm/tpm_util.h | 8 +- >> include/hw/acpi/tpm.h | 65 +++++ >> include/sysemu/tpm.h | 59 +++-- >> include/sysemu/tpm_backend.h | 70 ++---- >> backends/tpm.c | 121 ++++----- >> hw/i386/acpi-build.c | 33 ++- >> hw/tpm/tpm_crb.c | 320 ++++++++++++++++++++++++ >> hw/tpm/tpm_emulator.c | 95 +++---- >> hw/tpm/tpm_passthrough.c | 114 +++------ >> hw/tpm/tpm_tis.c | 499 >> +++++++++++++++++++------------------ >> hw/tpm/tpm_util.c | 1 + >> tpm.c | 63 ++--- >> default-configs/i386-softmmu.mak | 1 + >> default-configs/x86_64-softmmu.mak | 1 + >> hw/tpm/Makefile.objs | 1 + >> scripts/checkpatch.pl | 1 - >> 19 files changed, 899 insertions(+), 655 deletions(-) >> delete mode 100644 hw/tpm/tpm_tis.h >> create mode 100644 hw/tpm/tpm_crb.c >> > > -- Marc-André Lureau
On 10/10/2017 08:14 AM, Marc-André Lureau wrote:
> Hi Stefan
>
> On Tue, Oct 10, 2017 at 4:34 AM, Stefan Berger
> <stefanb@linux.vnet.ibm.com> wrote:
>> On 10/09/2017 06:55 PM, Marc-André Lureau wrote:
>>> Hi,
>>>
>>> I accumulated a series of patch doing some TPM code cleanup while
>>> doing review. I removed some dead code, simplified other parts, and
>>> tried to isolate implementation of the backend and frontend by using a
>>> new TPMIf interface. I solved a few issues, and added some FIXME for
>>> what should be tackled. Finally, I implemented a simple CRB device
>>> (tpm 2.0) that is work in progress for now - it works fine with
>>> passthrough, but swtpm/libtpms with win10 has some issues that need
>>> more investigations.
>>
>> You are using the swtpm with --tpm2, right? And I suppose you are using the
>> tpm2-preview.rev146 branch of libtpms. What are the symptoms?
> Yes, I was using tpm2-preview.rev146.ossl11 branch
>
> Windows complained about malfunctioning TPM 2.0 device, despite doing
> many exchanges. Sadly, I couldn't find many option to make libtpms a
> bit more verbose, as I am not able to parse the hexdump. I haven't
> spent much time investigating yet.
libtpms's TPM 2 code doesn't have a lot of debugging output. The only
solution for now is to crank up the log level to 20 and have it log into
a file. It at least shows the exchange of messages.
>
>> Most of this series looks good to me. I'll go over it again and will add my
>> Reviewed-by. It seems to have some build problems, though.
> I fixed the build issue (gcc on centos is a bit old), last version is
> https://github.com/elmarco/qemu/commits/tpm.
>
>> For libtpms + swtpm the biggest challenge is supporting state migration,
>> especially with TPM2. I have that working on the swtpm level in form of test
>> cases and also with the old CUSE TPM support in QEMU + libvirt mgmt. stack
>> with CUSE support. So ideally we would get to that point as well with the
>> QEMU TPM emulator device to make sure suspend/resume, snapshotting, and
>> migration work. libtpms 0.6 should have TPM 2 code and ideally swtpm 0.1
>> would support TPM 2 as well.
> Yes! thanks a lot for working on this, this is indeed essential. How
> close are you from releasing the migration code?
>
> Depending how quickly this series is reviewed & merged, I would like
> to work on cleaning up the threading code next.
I haven't worked on the suspend/resume part. It would have to be a port
of these 3 patches:
https://github.com/stefanberger/qemu-tpm/commit/9d8c9c3f0df288242d03f78d3b103099c1910574
https://github.com/stefanberger/qemu-tpm/commit/b9ea09d2e26eac92b4a1604a7afa695c4fc2735e
https://github.com/stefanberger/qemu-tpm/commit/27d332dc3b2c6bfd0fcd38e69f5c899651f3a5d8
Stefan
>
>
> thanks
>
>> Regards,
>> Stefan
>>
>>
>>> seabios CRB support is required for TPM 2.0 & emulation
>>> (https://mail.coreboot.org/pipermail/seabios/2017-October/011839.html)
>>>
>>> Comments/review welcome!
>>>
>>> Based-on: <1507222112-20315-1-git-send-email-stefanb@linux.vnet.ibm.com>
>>>
>>> Marc-André Lureau (42):
>>> tpm-tis: remove unused hw_access argument
>>> tpm-tis: remove RAISE_STS_IRQ
>>> tpm: make tpm_get_backend_driver() static
>>> tpm: lookup tpm backend class in tpm_driver_find_by_type()
>>> tpm: replace tpm_get_backend_driver() to drop be_drivers
>>> tpm: remove tpm_register_driver()
>>> tpm: move TPMSizedBuffer to tpm_tis.h
>>> tpm: remove TPMDriverOps
>>> tpm: remove init() class method
>>> tpm: remove configure_tpm() hop
>>> tpm: remove unused TPMBackendCmd
>>> tpm: remove needless cast
>>> tpm: remove locty argument from receive_cb
>>> tpm: add TPMBackendCmd to hold the request state
>>> tpm-emulator: fix error handling
>>> tpm: remove locty_data from TPMState
>>> tpm-tis: move TPMState to TIS header
>>> tpm-tis: remove tpm_tis.h header
>>> tpm-tis: fold TPMTISEmuState in TPMState
>>> tpm: add a QOM TPM interface
>>> tpm: move recv_data_callback to TPM interface
>>> tpm-backend: store TPMIf interface, improve backend_init()
>>> tpm-tis: no longer expose TPMState
>>> tpm-be: call request_completed() out of thread
>>> tpm-be: report error instead of front-end
>>> tpm-be: ask model to the TPM interface
>>> tpm: remove unused opened code
>>> tpm-passthrough: don't save guessed cancel_path in options
>>> tpm-be: update optional function pointers
>>> tpm-passthrough: pass TPMPassthruState to handle_device_opts
>>> tpm-backend: move set 'id' to common code
>>> tpm-passthrough: make it safer to destroy after creation
>>> tpm-passthrough: remove error cleanup from handle_device_opts
>>> tpm-passthrough: workaround a possible race
>>> tpm-tis: simplify header inclusion
>>> tpm: rename qemu_find_tpm() -> qemu_find_tpm_be()
>>> tpm: lookup the the TPM interface instead of TIS device
>>> tpm: add TPM interface to lookup TPM version
>>> tpm: add tpm_cmd_get_size() to tpm_util
>>> acpi: change TPM TIS data conditions
>>> tpm-emulator: add a FIXME comment about blocking cancel
>>> WIP: add TPM CRB device
>>>
>>> qapi/tpm.json | 7 +-
>>> hw/tpm/tpm_int.h | 25 +-
>>> hw/tpm/tpm_tis.h | 70 ------
>>> hw/tpm/tpm_util.h | 8 +-
>>> include/hw/acpi/tpm.h | 65 +++++
>>> include/sysemu/tpm.h | 59 +++--
>>> include/sysemu/tpm_backend.h | 70 ++----
>>> backends/tpm.c | 121 ++++-----
>>> hw/i386/acpi-build.c | 33 ++-
>>> hw/tpm/tpm_crb.c | 320 ++++++++++++++++++++++++
>>> hw/tpm/tpm_emulator.c | 95 +++----
>>> hw/tpm/tpm_passthrough.c | 114 +++------
>>> hw/tpm/tpm_tis.c | 499
>>> +++++++++++++++++++------------------
>>> hw/tpm/tpm_util.c | 1 +
>>> tpm.c | 63 ++---
>>> default-configs/i386-softmmu.mak | 1 +
>>> default-configs/x86_64-softmmu.mak | 1 +
>>> hw/tpm/Makefile.objs | 1 +
>>> scripts/checkpatch.pl | 1 -
>>> 19 files changed, 899 insertions(+), 655 deletions(-)
>>> delete mode 100644 hw/tpm/tpm_tis.h
>>> create mode 100644 hw/tpm/tpm_crb.c
>>>
>>
>
>
© 2016 - 2026 Red Hat, Inc.