From: "Cohen, Eugene" <eugene@hp.com>
To: "Yao, Jiewen" <jiewen.yao@intel.com>,
"Bin, Sung-Uk (빈성욱)" <sunguk-bin@hp.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
"Zhang, Chao B" <chao.b.zhang@intel.com>
Cc: "Chae, Matthew" <matthew.chae@hp.com>
Subject: Re: [RFC] TPM non-MMIO Access
Date: Mon, 12 Nov 2018 13:58:33 +0000 [thread overview]
Message-ID: <CS1PR8401MB11894DBA283172B78C1DAF51B4C10@CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM> (raw)
In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503F3E3705@shsmsx102.ccr.corp.intel.com>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 6300 bytes --]
Jiewen,
We don't have a patch yet â we wanted to check with you first before going too far.
à Or just a simple replace-all for MmioRead/Write->TpmMmioRead/Write.
Yes, basically â with a library class to support it.
We should not call it "TpmMmioRead8" since on some paths it is not MMIO at all. We should call it TpmRead8 (or something like that) and then the MMIO instance of the library class would call Mmio functions.
Thanks,
Eugene
From: Yao, Jiewen <jiewen.yao@intel.com>
Sent: Sunday, November 11, 2018 9:33 PM
To: Bin, Sung-Uk (ë¹ì±ì±) <sunguk-bin@hp.com>; Cohen, Eugene <eugene@hp.com>; edk2-devel@lists.01.org; Zhang, Chao B <chao.b.zhang@intel.com>
Cc: Chae, Matthew <matthew.chae@hp.com>
Subject: RE: [RFC] TPM non-MMIO Access
OK. Thanks for the clarification.
If possible, would you please post your patch to somewhere?
Do you request to change any other logic in existing Tpm2DeviceLib ?
Or just a simple replace-all for MmioRead/Write->TpmMmioRead/Write.
Thank you
Yao Jiewen
From: Bin, Sung-Uk (ë¹ì±ì±) [mailto:sunguk-bin@hp.com]
Sent: Monday, November 12, 2018 12:17 PM
To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; Cohen, Eugene <eugene@hp.com<mailto:eugene@hp.com>>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>; Zhang, Chao B <chao.b.zhang@intel.com<mailto:chao.b.zhang@intel.com>>
Cc: Chae, Matthew <matthew.chae@hp.com<mailto:matthew.chae@hp.com>>
Subject: RE: [RFC] TPM non-MMIO Access
Hi Jiewen
What Eugene proposes is not to make those another TPM device library instances.
Instead, we propose new âTpmIoLibâ which can handle both MMIO and non-MMIO device.
è Currently Tpm12Tis.c, Tpm2Tis.c and Tpm2Ptp.c uses IoLib (CPU IO), and what we propose is to replace it with TpmIoLib.
For example, TpmIoLib can provide TpmMmioRead() and Tpm12Tis.c, Tpm2Tis.c and Tpm2Ptp.c can use TpmMmioRead() instead of MmioRead().
- TpmIoLib for PC (default in SecurityPkg)
UINT8 TpmMmioRead8 (UINTN Address )
{
return MmioRead8(Address);
}
- TpmIoLib for SPI (vendor creates new instance)
UINT8 TpmMmioRead8 (UINTN Address )
{
UINT8 Data, SpiCs;
SpiCs = (Address & 0xFF0000) >> 16;
TpmAddress = Address & 0xFFFF;
/* Vendor specific SPI control for TPM */
â¦
SpiWrite(SpiCs, TpmAddress);
â¦
SpiRead(SpiCs, TpmAddress, &Data);
return Data;
}
This proposal came from code maintanance,
when we need to update SecurityPkg, then in this case itâs more easy to update than making another Tpm2DeviceLibDTpm instance.
Thanks,
Bin
From: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>
Sent: Saturday, November 10, 2018 8:18 AM
To: Cohen, Eugene <eugene@hp.com<mailto:eugene@hp.com>>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>; Zhang, Chao B <chao.b.zhang@intel.com<mailto:chao.b.zhang@intel.com>>
Cc: Bin, Sung-Uk (ë¹ì±ì±) <sunguk-bin@hp.com<mailto:sunguk-bin@hp.com>>; Chae, Matthew <matthew.chae@hp.com<mailto:matthew.chae@hp.com>>
Subject: RE: [RFC] TPM non-MMIO Access
Hi Eugene
The TpmIoLib proposal is similar to the existing TpmDeviceLib.
We have I2C TPM instance as example. You may create Tpm12DeviceLibXXXSpi.
Please let us know if there is any gap to support your non-MMIO device.
Thank you
Yao Jiewen
From: Yao, Jiewen
Sent: Saturday, November 10, 2018 7:12 AM
To: 'Cohen, Eugene' <eugene@hp.com<mailto:eugene@hp.com>>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>; Zhang, Chao B <chao.b.zhang@intel.com<mailto:chao.b.zhang@intel.com>>
Cc: Bin, Sung-Uk (ë¹ì±ì±) <sunguk-bin@hp.com<mailto:sunguk-bin@hp.com>>; Chae, Matthew <matthew.chae@hp.com<mailto:matthew.chae@hp.com>>
Subject: RE: [RFC] TPM non-MMIO Access
Hi Eugene
Complete agree.
1) please ignore TpmCommLib. It is deprecated. âº
2) we did notice there is non-MMIO TPM device before and abstract the device access via Tpm2DeviceLib and Tpm12DeviceLib library class. The Tpm2DeviceLibDTpm and Tpm12DeviceLibDTpm are the library instance for MMIO TIS access.
We do have other instance such as QuarkPlatformPkg\Library\Tpm12DeviceLibAtmelI2c or QuarkPlatformPkg\Library\Tpm12DeviceLibInfineonI2c.
3) Tcg2Config is also a TPM device oriented driver. It is optional.
You may want to take a look at QuarkPlatformPkg\Quark.dsc to see different TPM device is chosen.
#
# TPM 1.2 Hardware. Options are [NONE, LPC, ATMEL_I2C, INFINEON_I2C]
#
DEFINE TPM_12_HARDWARE = NONE
Thank you
Yao Jiewen
From: Cohen, Eugene [mailto:eugene@hp.com]
Sent: Saturday, November 10, 2018 6:38 AM
To: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>; Zhang, Chao B <chao.b.zhang@intel.com<mailto:chao.b.zhang@intel.com>>; Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>
Cc: Bin, Sung-Uk (ë¹ì±ì±) <sunguk-bin@hp.com<mailto:sunguk-bin@hp.com>>; Chae, Matthew <matthew.chae@hp.com<mailto:matthew.chae@hp.com>>
Subject: [RFC] TPM non-MMIO Access
Dear SecurityPkg maintainers,
We are trying to use the SecurityPkg TPM support (Tcg2Config, Tpm2DeviceLibDTpm, etc) and see that access to the TPM are using the MMIO routines such as MmioRead8().
Not all platforms support memory-mapped access to the TPM so we would like to propose that we create a library to abstract the TPM access, called the TpmIoLib. One instance of the library would provide the Mmio (TpmIoLibMmio) method but others can use protocols like SPI (TpmIoLibSpi).
Before starting this work I wanted to check if you agree with the approach of replacing the Mmio calls with new TpmIoLib ones. We can upstream the library header and mmio library instance (or you could do the work if you think it would be easier for you).
I counted up the number of instances of unique MMIO calls in the TPM libraries and got
Library/TpmCommLib/TisPc.c:7
Library/Tpm2DeviceLibDTpm/Tpm2Tis.c:13
Library/Tpm2DeviceLibDTpm/Tpm2Ptp.c:29
Library/Tpm12DeviceLibDTpm/Tpm12Tis.c:16
Please let me know if this works for you and how you'd like to structure the change.
Thanks,
Eugene
\x16º&
next prev parent reply other threads:[~2018-11-12 13:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-09 22:37 [RFC] TPM non-MMIO Access Cohen, Eugene
2018-11-09 23:11 ` Yao, Jiewen
2018-11-09 23:17 ` Yao, Jiewen
[not found] ` <AT5PR8401MB0897901965373899E2D9351DF4C10@AT5PR8401MB0897.NAMPRD84.PROD.OUTLOOK.COM>
2018-11-12 4:33 ` Yao, Jiewen
2018-11-12 13:58 ` Cohen, Eugene [this message]
2018-11-12 16:44 ` Kinney, Michael D
2018-11-12 20:23 ` Cohen, Eugene
2018-11-13 2:13 ` Bin, Sung-Uk (빈성욱)
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-list 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=CS1PR8401MB11894DBA283172B78C1DAF51B4C10@CS1PR8401MB1189.NAMPRD84.PROD.OUTLOOK.COM \
--to=devel@edk2.groups.io \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox