[PATCH v3 00/10] vTPM for aarch64

Eric Auger posted 10 patches 5 years, 8 months ago
Test docker-quick@centos7 failed
Test FreeBSD failed
Test docker-mingw@fedora failed
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200226102549.12158-1-eric.auger@redhat.com
Maintainers: Eduardo Habkost <ehabkost@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Thomas Huth <thuth@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Stefan Berger <stefanb@linux.ibm.com>, Richard Henderson <rth@twiddle.net>, Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Igor Mammedov <imammedo@redhat.com>
There is a newer version of this series
default-configs/i386-softmmu.mak        |   2 +-
docs/specs/tpm.rst                      |  25 +-
hw/arm/Kconfig                          |   1 +
hw/arm/sysbus-fdt.c                     |  33 ++
hw/arm/virt.c                           |   7 +
hw/i386/Kconfig                         |   2 +-
hw/i386/acpi-build.c                    |   6 +-
hw/tpm/Kconfig                          |  12 +-
hw/tpm/Makefile.objs                    |   4 +-
hw/tpm/tpm_tis.h                        |  91 +++++
hw/tpm/{tpm_tis.c => tpm_tis_common.c}  | 181 +---------
hw/tpm/tpm_tis_isa.c                    | 170 ++++++++++
hw/tpm/tpm_tis_sysbus.c                 | 159 +++++++++
include/sysemu/tpm.h                    |   7 +-
tests/qtest/Makefile.include            |  11 +-
tests/qtest/tpm-crb-swtpm-test.c        |   8 +-
tests/qtest/tpm-crb-test.c              |   2 +
tests/qtest/tpm-tests.c                 |  10 +-
tests/qtest/tpm-tests.h                 |   5 +-
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              | 433 ++++++++++++++++++++++++
tests/qtest/tpm-tis-util.h              |  23 ++
tests/qtest/tpm-util.c                  |  11 +-
tests/qtest/tpm-util.h                  |   8 +-
27 files changed, 1187 insertions(+), 609 deletions(-)
create mode 100644 hw/tpm/tpm_tis.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
create mode 100644 tests/qtest/tpm-tis-util.h
[PATCH v3 00/10] vTPM for aarch64
Posted by Eric Auger 5 years, 8 months ago
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.
EDK2 support is under development [3]. 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
[3] [PATCH v2 0/5] ArmVirtPkg: implement measured boot for ArmVirtQemu

This series can be found at:
https://github.com/eauger/qemu/tree/v4.2.0-tpm-patch-v3

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

 default-configs/i386-softmmu.mak        |   2 +-
 docs/specs/tpm.rst                      |  25 +-
 hw/arm/Kconfig                          |   1 +
 hw/arm/sysbus-fdt.c                     |  33 ++
 hw/arm/virt.c                           |   7 +
 hw/i386/Kconfig                         |   2 +-
 hw/i386/acpi-build.c                    |   6 +-
 hw/tpm/Kconfig                          |  12 +-
 hw/tpm/Makefile.objs                    |   4 +-
 hw/tpm/tpm_tis.h                        |  91 +++++
 hw/tpm/{tpm_tis.c => tpm_tis_common.c}  | 181 +---------
 hw/tpm/tpm_tis_isa.c                    | 170 ++++++++++
 hw/tpm/tpm_tis_sysbus.c                 | 159 +++++++++
 include/sysemu/tpm.h                    |   7 +-
 tests/qtest/Makefile.include            |  11 +-
 tests/qtest/tpm-crb-swtpm-test.c        |   8 +-
 tests/qtest/tpm-crb-test.c              |   2 +
 tests/qtest/tpm-tests.c                 |  10 +-
 tests/qtest/tpm-tests.h                 |   5 +-
 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              | 433 ++++++++++++++++++++++++
 tests/qtest/tpm-tis-util.h              |  23 ++
 tests/qtest/tpm-util.c                  |  11 +-
 tests/qtest/tpm-util.h                  |   8 +-
 27 files changed, 1187 insertions(+), 609 deletions(-)
 create mode 100644 hw/tpm/tpm_tis.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
 create mode 100644 tests/qtest/tpm-tis-util.h

-- 
2.20.1


Re: [PATCH v3 00/10] vTPM for aarch64
Posted by Stefan Berger 5 years, 8 months ago
On 2/26/20 5:25 AM, Eric Auger wrote:
> This series adds the capability to instantiate an MMIO TPM TIS
> in ARM virt. It is candidate to qemu 5.0.

Looks good. Can you run the checkpatch script over the patches and 
address the warnings?



Re: [PATCH v3 00/10] vTPM for aarch64
Posted by Auger Eric 5 years, 8 months ago
Hi Stefan,

On 2/26/20 2:32 PM, Stefan Berger wrote:
> On 2/26/20 5:25 AM, Eric Auger wrote:
>> This series adds the capability to instantiate an MMIO TPM TIS
>> in ARM virt. It is candidate to qemu 5.0.
> 
> Looks good. Can you run the checkpatch script over the patches and
> address the warnings?
> 
> 
Thank you for you review!

About warnings

- There are warnings due to new files added but I think they all have an
entry in MAINTAINERS as wildcards are used.

- In tpm: Add the SysBus TPM TIS device.
  There is line over 80 chars but I think it is fine

#define TPM_TIS_SYSBUS(obj) OBJECT_CHECK(TPMStateSysBus, (obj),
TYPE_TPM_TIS_SYSBUS)

- test: tpm-tis: Get prepared to share tests between ISA and sysbus devices
has lots of warnings due to old comment style being used in
tests/qtest/tpm-tis-test.c. I did not fix the style issue because I just
copy the code into tpm-tis-util.c

Do you want me to fix them in the same patch, in a separate patch or
ignore the style issue for now?

Thanks

Eric


Re: [PATCH v3 00/10] vTPM for aarch64
Posted by Stefan Berger 5 years, 8 months ago
On 2/26/20 12:47 PM, Auger Eric wrote:
> Hi Stefan,
>
> On 2/26/20 2:32 PM, Stefan Berger wrote:
>> On 2/26/20 5:25 AM, Eric Auger wrote:
>>> This series adds the capability to instantiate an MMIO TPM TIS
>>> in ARM virt. It is candidate to qemu 5.0.
>> Looks good. Can you run the checkpatch script over the patches and
>> address the warnings?
>>
>>
> Thank you for you review!
>
> About warnings
>
> - There are warnings due to new files added but I think they all have an
> entry in MAINTAINERS as wildcards are used.
>
> - In tpm: Add the SysBus TPM TIS device.
>    There is line over 80 chars but I think it is fine
>
> #define TPM_TIS_SYSBUS(obj) OBJECT_CHECK(TPMStateSysBus, (obj),
> TYPE_TPM_TIS_SYSBUS)


Ok, leave it as it is.


    Stefan



Re: [PATCH v3 00/10] vTPM for aarch64
Posted by Auger Eric 5 years, 8 months ago
Hi Stefan,

On 2/26/20 6:53 PM, Stefan Berger wrote:
> On 2/26/20 12:47 PM, Auger Eric wrote:
>> Hi Stefan,
>>
>> On 2/26/20 2:32 PM, Stefan Berger wrote:
>>> On 2/26/20 5:25 AM, Eric Auger wrote:
>>>> This series adds the capability to instantiate an MMIO TPM TIS
>>>> in ARM virt. It is candidate to qemu 5.0.
>>> Looks good. Can you run the checkpatch script over the patches and
>>> address the warnings?
>>>
>>>
>> Thank you for you review!
>>
>> About warnings
>>
>> - There are warnings due to new files added but I think they all have an
>> entry in MAINTAINERS as wildcards are used.
>>
>> - In tpm: Add the SysBus TPM TIS device.
>>    There is line over 80 chars but I think it is fine
>>
>> #define TPM_TIS_SYSBUS(obj) OBJECT_CHECK(TPMStateSysBus, (obj),
>> TYPE_TPM_TIS_SYSBUS)
> 
> 
> Ok, leave it as it is.
and sorry, what about the comment style issues derived from existing files?

"
- test: tpm-tis: Get prepared to share tests between ISA and sysbus devices
has lots of warnings due to old comment style being used in
tests/qtest/tpm-tis-test.c. I did not fix the style issue because I just
copy the code into tpm-tis-util.c

Do you want me to fix them in the same patch, in a separate patch or
ignore the style issue for now?
"

Thanks

Eric


> 
> 
>    Stefan
> 
> 


Re: [PATCH v3 00/10] vTPM for aarch64
Posted by Stefan Berger 5 years, 8 months ago
On 2/26/20 1:18 PM, Auger Eric wrote:
> Hi Stefan,
>
> On 2/26/20 6:53 PM, Stefan Berger wrote:
>> On 2/26/20 12:47 PM, Auger Eric wrote:
>>> Hi Stefan,
>>>
>>> On 2/26/20 2:32 PM, Stefan Berger wrote:
>>>> On 2/26/20 5:25 AM, Eric Auger wrote:
>>>>> This series adds the capability to instantiate an MMIO TPM TIS
>>>>> in ARM virt. It is candidate to qemu 5.0.
>>>> Looks good. Can you run the checkpatch script over the patches and
>>>> address the warnings?
>>>>
>>>>
>>> Thank you for you review!
>>>
>>> About warnings
>>>
>>> - There are warnings due to new files added but I think they all have an
>>> entry in MAINTAINERS as wildcards are used.
>>>
>>> - In tpm: Add the SysBus TPM TIS device.
>>>     There is line over 80 chars but I think it is fine
>>>
>>> #define TPM_TIS_SYSBUS(obj) OBJECT_CHECK(TPMStateSysBus, (obj),
>>> TYPE_TPM_TIS_SYSBUS)
>>
>> Ok, leave it as it is.
> and sorry, what about the comment style issues derived from existing files?
>
> "
> - test: tpm-tis: Get prepared to share tests between ISA and sysbus devices
> has lots of warnings due to old comment style being used in
> tests/qtest/tpm-tis-test.c. I did not fix the style issue because I just
> copy the code into tpm-tis-util.c
>
> Do you want me to fix them in the same patch, in a separate patch or
> ignore the style issue for now?


if you could fix them that would be great...


> "
>
> Thanks
>
> Eric
>
>
>>
>>     Stefan
>>
>>


Re: [PATCH v3 00/10] vTPM for aarch64
Posted by Auger Eric 5 years, 8 months ago
Hi Stefan,

On 2/26/20 9:01 PM, Stefan Berger wrote:
> On 2/26/20 1:18 PM, Auger Eric wrote:
>> Hi Stefan,
>>
>> On 2/26/20 6:53 PM, Stefan Berger wrote:
>>> On 2/26/20 12:47 PM, Auger Eric wrote:
>>>> Hi Stefan,
>>>>
>>>> On 2/26/20 2:32 PM, Stefan Berger wrote:
>>>>> On 2/26/20 5:25 AM, Eric Auger wrote:
>>>>>> This series adds the capability to instantiate an MMIO TPM TIS
>>>>>> in ARM virt. It is candidate to qemu 5.0.
>>>>> Looks good. Can you run the checkpatch script over the patches and
>>>>> address the warnings?
>>>>>
>>>>>
>>>> Thank you for you review!
>>>>
>>>> About warnings
>>>>
>>>> - There are warnings due to new files added but I think they all
>>>> have an
>>>> entry in MAINTAINERS as wildcards are used.
>>>>
>>>> - In tpm: Add the SysBus TPM TIS device.
>>>>     There is line over 80 chars but I think it is fine
>>>>
>>>> #define TPM_TIS_SYSBUS(obj) OBJECT_CHECK(TPMStateSysBus, (obj),
>>>> TYPE_TPM_TIS_SYSBUS)
>>>
>>> Ok, leave it as it is.
>> and sorry, what about the comment style issues derived from existing
>> files?
>>
>> "
>> - test: tpm-tis: Get prepared to share tests between ISA and sysbus
>> devices
>> has lots of warnings due to old comment style being used in
>> tests/qtest/tpm-tis-test.c. I did not fix the style issue because I just
>> copy the code into tpm-tis-util.c
>>
>> Do you want me to fix them in the same patch, in a separate patch or
>> ignore the style issue for now?
> 
> 
> if you could fix them that would be great...

Sure, I will fix them.

Thanks

Eric
> 
> 
>> "
>>
>> Thanks
>>
>> Eric
>>
>>
>>>
>>>     Stefan
>>>
>>>
> 
>