[Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device

Marc-André Lureau posted 42 patches 6 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20171009225623.29232-1-marcandre.lureau@redhat.com
Test checkpatch passed
Test docker failed
Test s390x passed
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
[Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Marc-André Lureau 6 years, 5 months ago
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


Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by no-reply@patchew.org 6 years, 5 months ago
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
Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Stefan Berger 6 years, 5 months ago
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


Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Marc-André Lureau 6 years, 5 months ago
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

Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Stefan Berger 6 years, 5 months ago
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


Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Stefan Berger 6 years, 5 months ago
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


Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Marc-André Lureau 6 years, 5 months ago
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

Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Stefan Berger 6 years, 5 months ago
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
>


Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Stefan Berger 6 years, 5 months ago
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
>


Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Marc-André Lureau 6 years, 5 months ago
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

Re: [Qemu-devel] [PATCH 00/42] TPM: code cleanup & CRB device
Posted by Stefan Berger 6 years, 5 months ago
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
>>>
>>
>
>