From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
stefanb@linux.ibm.com, qemu-devel@nongnu.org,
qemu-arm@nongnu.org, peter.maydell@linaro.org
Cc: marcandre.lureau@redhat.com, lersek@redhat.com, ardb@kernel.org,
philmd@redhat.com
Subject: [PATCH v5 00/10] vTPM for aarch64
Date: Thu, 5 Mar 2020 17:51:39 +0100 [thread overview]
Message-ID: <20200305165149.618-1-eric.auger@redhat.com> (raw)
This series adds the capability to instantiate an MMIO TPM TIS
in ARM virt. It is candidate to qemu 5.0.
The existing TPM TIS code is reshuffled into a generic part,
the ISA device and the sysbus device. The sysbus TPM-TIS
device gets dynamically instantiated in machvirt on the
platform bus.
ACPI boot is not yet supported on ARM. Note that the UEFI
firmware is itself a consumer of the DT description, so we
need the DT related changes regardless of whether the VM
boots in DT or ACPI mode.
Related qtests are reshuffled to allow the reuse of existing
tests for both the ISA and the sysbus devices: Adaption
consists in changing the qemu command line (change in the
device name and provide explicit machine options) and adapt
to the relocation of the TPM-TIS device in the memory map.
The series was tested with the swtpm/libtpms emulator.
Automatic guest LUKS volume unlocking (tpm2) was successful.
Thanks to Ard for supporting me when setting up the test
environment.
Best Regards
Eric
Testing:
mkdir /tmp/tpm
swtpm socket \
--tpm2 \
-t -d \
--tpmstate dir=/tmp/tpm \
--ctrl type=unixio,path=/tmp/swtpm-sock
qemu command line must be augmented with the following options:
-chardev socket,id=chrtpm,path=/tmp/swtpm-sock \
-tpmdev emulator,id=tpm0,chardev=chrtpm \
-device tpm-tis-device,tpmdev=tpm0 \
References:
[1] libtpms: https://github.com/stefanberger/libtpms/wiki
[2] swtpm: https://github.com/stefanberger/swtpm/wiki
This series can be found at:
https://github.com/eauger/qemu/tree/v4.2.0-tpm-patch-v5
History:
v4 -> v5:
- Fix osx make check error in
[PATCH v4 06/10] hw/arm/virt: vTPM support
(put TYPE_BINDING(TYPE_TPM_TIS_SYSBUS, add_tpm_tis_fdt_node)
outside of CONFIG_LINUX)
Tested with make vm-build-openbsd
v3 -> v4:
- collect additional R-b's
- add 'Not used but needed for linking' mention related to
tpm_tis_base_addr in CRB test files
- fix comment style
RFCv2 -> PATCH v3:
- Updated the doc for ARM
- Adapted existing tests for ARM
- use qemu_fdt_setprop_string in add_tpm_tis_fdt_node
- Collected R-b's
- Comments not taken into account:
- I have kept the tpm-tis-device name for now despite Stefan's
suggestion to rename it into tpm-tis-sysbus. This is not
frozen though
- Common state still is not a QOM object (no double inheritence)
RFC v1 -> RFC v2:
- restructure the existing code with common, ISA and sysbus part.
- both ARM and x86 integration were tested.
Eric Auger (10):
tpm: rename TPM_TIS into TPM_TIS_ISA
tpm: Use TPMState as a common struct
tpm: Separate tpm_tis common functions from isa code
tpm: Separate TPM_TIS and TPM_TIS_ISA configs
tpm: Add the SysBus TPM TIS device
hw/arm/virt: vTPM support
docs/specs/tpm: Document TPM_TIS sysbus device for ARM
test: tpm: pass optional machine options to swtpm test functions
test: tpm-tis: Get prepared to share tests between ISA and sysbus
devices
test: tpm-tis: Add Sysbus TPM-TIS device test
docs/specs/tpm.rst | 25 +-
default-configs/i386-softmmu.mak | 2 +-
hw/tpm/tpm_tis.h | 91 +++++
include/sysemu/tpm.h | 7 +-
tests/qtest/tpm-tests.h | 5 +-
tests/qtest/tpm-tis-util.h | 23 ++
tests/qtest/tpm-util.h | 8 +-
hw/arm/sysbus-fdt.c | 33 ++
hw/arm/virt.c | 7 +
hw/i386/acpi-build.c | 6 +-
hw/tpm/{tpm_tis.c => tpm_tis_common.c} | 181 +---------
hw/tpm/tpm_tis_isa.c | 170 +++++++++
hw/tpm/tpm_tis_sysbus.c | 159 +++++++++
tests/qtest/tpm-crb-swtpm-test.c | 9 +-
tests/qtest/tpm-crb-test.c | 3 +
tests/qtest/tpm-tests.c | 10 +-
tests/qtest/tpm-tis-device-swtpm-test.c | 76 ++++
tests/qtest/tpm-tis-device-test.c | 87 +++++
tests/qtest/tpm-tis-swtpm-test.c | 8 +-
tests/qtest/tpm-tis-test.c | 414 +---------------------
tests/qtest/tpm-tis-util.c | 451 ++++++++++++++++++++++++
tests/qtest/tpm-util.c | 11 +-
hw/arm/Kconfig | 1 +
hw/i386/Kconfig | 2 +-
hw/tpm/Kconfig | 12 +-
hw/tpm/Makefile.objs | 4 +-
tests/qtest/Makefile.include | 11 +-
27 files changed, 1207 insertions(+), 609 deletions(-)
create mode 100644 hw/tpm/tpm_tis.h
create mode 100644 tests/qtest/tpm-tis-util.h
rename hw/tpm/{tpm_tis.c => tpm_tis_common.c} (85%)
create mode 100644 hw/tpm/tpm_tis_isa.c
create mode 100644 hw/tpm/tpm_tis_sysbus.c
create mode 100644 tests/qtest/tpm-tis-device-swtpm-test.c
create mode 100644 tests/qtest/tpm-tis-device-test.c
create mode 100644 tests/qtest/tpm-tis-util.c
--
2.20.1
next reply other threads:[~2020-03-05 17:06 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-05 16:51 Eric Auger [this message]
2020-03-05 16:51 ` [PATCH v5 01/10] tpm: rename TPM_TIS into TPM_TIS_ISA Eric Auger
2020-03-05 16:51 ` [PATCH v5 02/10] tpm: Use TPMState as a common struct Eric Auger
2020-03-05 16:51 ` [PATCH v5 03/10] tpm: Separate tpm_tis common functions from isa code Eric Auger
2020-03-05 16:51 ` [PATCH v5 04/10] tpm: Separate TPM_TIS and TPM_TIS_ISA configs Eric Auger
2020-03-05 16:51 ` [PATCH v5 05/10] tpm: Add the SysBus TPM TIS device Eric Auger
2020-03-05 16:51 ` [PATCH v5 06/10] hw/arm/virt: vTPM support Eric Auger
2020-03-05 16:51 ` [PATCH v5 07/10] docs/specs/tpm: Document TPM_TIS sysbus device for ARM Eric Auger
2020-03-05 16:51 ` [PATCH v5 08/10] test: tpm: pass optional machine options to swtpm test functions Eric Auger
2020-03-05 16:51 ` [PATCH v5 09/10] test: tpm-tis: Get prepared to share tests between ISA and sysbus devices Eric Auger
2020-03-05 16:51 ` [PATCH v5 10/10] test: tpm-tis: Add Sysbus TPM-TIS device test Eric Auger
2022-05-12 13:08 ` Peter Maydell
2022-05-12 15:59 ` Eric Auger
2022-05-12 16:05 ` Peter Maydell
2022-05-13 7:51 ` Igor Mammedov
2020-03-05 18:05 ` [PATCH v5 00/10] vTPM for aarch64 Stefan Berger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200305165149.618-1-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=ardb@kernel.org \
--cc=eric.auger.pro@gmail.com \
--cc=lersek@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanb@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.