On 05/18/18 14:23, marcandre.lur...@redhat.com wrote: > From: Marc-André Lureau <marcandre.lur...@redhat.com> > > Hi, > > The following series adds basic TPM PPI 1.3 support for OVMF-on-QEMU > with TPM2 (I haven't looked at TPM1, for lack of interest). > > PPI test runs successfully with Windows 10 WHLK, despite the limited > number of supported funcions (tpm2_ppi_funcs table, in particular, no > function allows to manipulate Tcg2PhysicalPresenceFlags) > > The way it works is relatively simple: a memory region is allocated by > QEMU to save PPI related variables. An ACPI interface is exposed by > QEMU to let the guest manipulate those. At boot, ovmf processes and > updates the PPI qemu region and request variables. > > I build edk2 with: > > $ build -DTPM2_ENABLE > > I test with qemu & swtpm/libtpms (tpm2 branches, swtpm_setup.sh --tpm2 > --tpm-state tpmstatedir) > > $ swtpm socket --tpmstate tpmstatedir --ctrl type=unixio,path=tpmsock > --tpm2 & > > $ qemu .. -chardev socket,id=chrtpm,path=tpmsock -tpmdev > emulator,id=tpm0,chardev=chrtpm -device tpm-crb,tpmdev=tpm0 > > Github trees: > https://github.com/elmarco/edk2/tree/tpm-ppi > https://github.com/elmarco/qemu/tree/tpm-ppi > > Thanks > > v3: after Laszlo review > - dropped DxeTcg2PhysicalPresenceLib.uni > - removed mTpm2PPIFuncs static initialization, use hard-coded assignments > - declared STATIC the functions that should be > - fixed an OUT/IN decorator > - use EFI_PROTOCOL_ERROR instead of EFI_INVALID_PARAMETER when PPI > initialization fails > - replaced EFI_D_INFO with DEBUG_INFO > - added a check for mPpi address that it doesn't cross a page boundary > - added a GetMemorySpaceDescriptor() check for memory type > - declared *mPpi as volatile, to correct mmio access > - a few more style changes > - comments updated > - some minor dead code/inclusion/defines removal > - added a few r-b tags > > v2: > - style and commit message fixes > > Marc-André Lureau (4): > OvmfPkg: add Tcg2PhysicalPresenceLibNull when !TPM2_ENABLE > OvmfPkg/IndustryStandard: add QemuTpm.h header > OvmfPkg: add Tcg2PhysicalPresenceLibQemu > OvmfPkg/PlatformBootManagerLib: process TPM PPI request > > OvmfPkg/OvmfPkgIa32.dsc | 4 +- > OvmfPkg/OvmfPkgIa32X64.dsc | 4 +- > OvmfPkg/OvmfPkgX64.dsc | 4 +- > .../PlatformBootManagerLib.inf | 2 + > .../DxeTcg2PhysicalPresenceLib.inf | 33 + > .../DxeTcg2PhysicalPresenceLib.inf | 46 +- > OvmfPkg/Include/IndustryStandard/QemuTpm.h | 69 ++ > .../PlatformBootManagerLib/BdsPlatform.c | 6 + > .../DxeTcg2PhysicalPresenceLib.c | 20 +- > .../DxeTcg2PhysicalPresenceLib.c | 919 ++++++++++++++++++ > .../PhysicalPresenceStrings.uni | 33 +- > 11 files changed, 1081 insertions(+), 59 deletions(-) > create mode 100644 > OvmfPkg/Library/Tcg2PhysicalPresenceLibNull/DxeTcg2PhysicalPresenceLib.inf > copy {SecurityPkg/Library/DxeTcg2PhysicalPresenceLib => > OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu}/DxeTcg2PhysicalPresenceLib.inf > (66%) > create mode 100644 OvmfPkg/Include/IndustryStandard/QemuTpm.h > copy > EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Library/BaseLib/Ia32/CpuSleep.c > => OvmfPkg/Library/Tcg2PhysicalPresenceLibNull/DxeTcg2PhysicalPresenceLib.c > (55%) > create mode 100644 > OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu/DxeTcg2PhysicalPresenceLib.c > copy {SecurityPkg/Library/DxeTcg2PhysicalPresenceLib => > OvmfPkg/Library/Tcg2PhysicalPresenceLibQemu}/PhysicalPresenceStrings.uni (56%) >
I briefly summarized the updates that I mentioned in review on the patches themselves, and pushed the series as commit range 75135cc6988e..8d65d3b25e35. Thank you guys again! Laszlo