From: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: Peter Huewe <peterhuewe-Mmb7MZpHnFY@public.gmane.org>,
Ashley Lai <ashley-fm2HMyfA2y6tG0bUXCXiUA@public.gmane.org>,
Marcel Selhorst <tpmdd-yWjUBOtONefk1uMJSBkQmQ@public.gmane.org>
Cc: tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org,
christophe.ricard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
jason.gunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org,
stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
trousers-tech-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
Jarkko Sakkinen
<jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Subject: [PATCH v10 0/8] TPM 2.0 support
Date: Fri, 12 Dec 2014 11:46:32 -0800 [thread overview]
Message-ID: <1418413600-5400-1-git-send-email-jarkko.sakkinen@linux.intel.com> (raw)
This patch set enables TPM2 protocol and provides drivers for FIFO and
CRB interfaces. This patch set does not export any sysfs attributes for
TPM 2.0 because existing sysfs attributes have three non-trivial issues:
- They are associated with the platform device instead of character
device.
- They are are not trivial key-value pairs but contain text that is
not easily parsed by a computer.
- Raciness as described in
http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/
v2:
- Improved struct tpm_chip life-cycle by taking advantage of devres
API.
- Refined sysfs attributes as simple key-values thereby not repeating
mistakes in TPM1 sysfs attributes.
- Documented functions in tpm-chip.c and tpm2-cmd.c.
- Documented sysfs attributes.
v3:
- Lots of fixes in calling order in device drivers (thanks to Jason
Gunthorpe for pointing these out!).
- Attach sysfs attributes to the misc device because it represents
TPM device to the user space.
v4:
- Disable sysfs attibutes for TPM 2.0 for until we can sort out the
best approach for them.
- Fixed all the style issues found with checkpatch.pl.
v5:
- missing EXPORT_SYMBOL_GPL()
- own class for TPM devices used for TPM 2.0 devices and onwards.
v6:
- Non-racy initialization for sysfs attributes using struct device's
groups field.
- The class 'tpm' is used now for all TPM devices. For the first device
node major MISC_MAJOR and minor TPM_MINOR is used in order to retain
backwards compatability.
v7:
- Release device number and free struct tpm_chip memory inside
tpm_dev_release callback.
- Moved code from tpm-interface.c and tpm_dev.c to tpm-chip.c.
v8:
- Cleaned up unneeded cast from tpm_transmit_cmd().
- Cleaned up redundant PPI_VERSION_LEN constant from tpm_ppi.c.
- Fixed tpm_tis to use tpm2_calc_ordinal_duration() for TPM2 devices.
- tpm_crb: in crb_recv, check that count can hold the TPM header at
minimum.
- tpm_crb: add enumerations for bit flags in start and cancel fields
of the control area.
- tpm_crb: use ioremap() for command and response buffer because
they might be anywhere.
- tpm_crb: use IO access functions for reading ioremapped buffers
because using direct pointers is not portable.
- tpm_crb: only apply ACPI start if start method reported by the
TPM2 ACPI table allows it.
- In tpm2_pcr_read() just calculate index and bit and get rid of
hacky loop.
- Do not add sysfs attributes for TPM 2.0 devices.
v9:
- Fixed compilation issues in v8 (sorry for not using the correct
tree).
- Just do "return tpm_chip_register();" instead of copying return
value to a variable.
- Removed unused tpm2_startup().
- In the CRB driver ACPI TPM2 table could contain platform specific
and therefore inequality test does not work. Fixed in this patch
set.
v10:
- Fixed coccicheck and sparse errors and other reported style errors.
- Fixed build errors without CONFIG_ACPI.
- Fixed build error with CONFIG_OF.
- Added TPM_CHIP_FLAG_REGISTERED to mark successful tpm_chip_register().
It is checked in the beginning of tpm_chip_unregister(), which is
called even when "attach" callback for a device fails because "detach"
callback is always called.
- Added TPM_CHIP_FLAG_PPI to mark successful PPI interface lookup because
in older TPM chips version string might be non-existent.
- Check TPM version from the 4th byte of STS register after requesting
the locality because otherwise the read will return bogus data.
- Some TPM chips just give 0xff as the 4th byte so using that for detecting
TPM family is unstable. Instead I chose the approach of using idempotent
TPM 2.x command to detect such case.
Jarkko Sakkinen (8):
tpm: merge duplicate transmit_cmd() functions
tpm: two-phase chip management functions
tpm: fix raciness of PPI interface lookup
tpm: rename chip->dev to chip->pdev
tpm: device class for tpm
tpm: TPM 2.0 baseline support
tpm: TPM 2.0 CRB Interface
tpm: TPM 2.0 FIFO Interface
Documentation/ABI/stable/sysfs-class-tpm | 22 +-
drivers/char/tpm/Kconfig | 9 +
drivers/char/tpm/Makefile | 3 +-
drivers/char/tpm/tpm-chip.c | 256 +++++++++++++
drivers/char/tpm/tpm-dev.c | 42 +--
drivers/char/tpm/tpm-interface.c | 263 +++++--------
drivers/char/tpm/tpm-sysfs.c | 29 +-
drivers/char/tpm/tpm.h | 118 +++++-
drivers/char/tpm/tpm2-cmd.c | 617 +++++++++++++++++++++++++++++++
drivers/char/tpm/tpm_atmel.c | 25 +-
drivers/char/tpm/tpm_crb.c | 354 ++++++++++++++++++
drivers/char/tpm/tpm_i2c_atmel.c | 55 +--
drivers/char/tpm/tpm_i2c_infineon.c | 43 +--
drivers/char/tpm/tpm_i2c_nuvoton.c | 71 ++--
drivers/char/tpm/tpm_i2c_stm_st33.c | 32 +-
drivers/char/tpm/tpm_ibmvtpm.c | 17 +-
drivers/char/tpm/tpm_infineon.c | 51 +--
drivers/char/tpm/tpm_nsc.c | 34 +-
drivers/char/tpm/tpm_ppi.c | 141 ++++---
drivers/char/tpm/tpm_tis.c | 224 ++++++-----
drivers/char/tpm/xen-tpmfront.c | 14 +-
21 files changed, 1820 insertions(+), 600 deletions(-)
create mode 100644 drivers/char/tpm/tpm-chip.c
create mode 100644 drivers/char/tpm/tpm2-cmd.c
create mode 100644 drivers/char/tpm/tpm_crb.c
--
2.1.0
next reply other threads:[~2014-12-12 19:46 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-12 19:46 Jarkko Sakkinen [this message]
2014-12-12 19:46 ` [PATCH v10 1/8] tpm: merge duplicate transmit_cmd() functions Jarkko Sakkinen
[not found] ` <1418413600-5400-2-git-send-email-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-12-14 14:03 ` Stefan Berger
[not found] ` <548D98B8.3010003-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2014-12-14 14:57 ` Jarkko Sakkinen
[not found] ` <1418569030.9230.7.camel-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-12-14 15:31 ` peterhuewe-Mmb7MZpHnFY
[not found] ` <889c95a4-ae60-44db-be8a-fd56a9497c78-2ueSQiBKiTY7tOexoI0I+QC/G2K4zDHf@public.gmane.org>
2014-12-14 15:42 ` Jarkko Sakkinen
[not found] ` <1418413600-5400-1-git-send-email-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-12-12 19:46 ` [PATCH v10 2/8] tpm: two-phase chip management functions Jarkko Sakkinen
2014-12-12 19:46 ` [PATCH v10 4/8] tpm: rename chip->dev to chip->pdev Jarkko Sakkinen
2014-12-12 19:46 ` [PATCH v10 8/8] tpm: TPM 2.0 FIFO Interface Jarkko Sakkinen
[not found] ` <1418413600-5400-9-git-send-email-jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-12-14 14:48 ` Stefan Berger
[not found] ` <548DA33A.4010300-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
2014-12-14 15:40 ` Jarkko Sakkinen
[not found] ` <20141214154003.GA13338-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-14 16:09 ` Stefan Berger
2014-12-15 20:17 ` [PATCH v10 0/8] TPM 2.0 support Jarkko Sakkinen
2014-12-16 21:19 ` Aw: " Peter Huewe
2014-12-16 21:31 ` Jarkko Sakkinen
2014-12-16 21:32 ` [tpmdd-devel] " Peter Huewe
2014-12-16 21:34 ` Jarkko Sakkinen
2014-12-12 19:46 ` [PATCH v10 3/8] tpm: fix raciness of PPI interface lookup Jarkko Sakkinen
2014-12-12 19:46 ` [PATCH v10 5/8] tpm: device class for tpm Jarkko Sakkinen
2014-12-12 19:46 ` [PATCH v10 6/8] tpm: TPM 2.0 baseline support Jarkko Sakkinen
2014-12-12 19:46 ` [PATCH v10 7/8] tpm: TPM 2.0 CRB Interface Jarkko Sakkinen
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=1418413600-5400-1-git-send-email-jarkko.sakkinen@linux.intel.com \
--to=jarkko.sakkinen-vuqaysv1563yd54fqh9/ca@public.gmane.org \
--cc=ashley-fm2HMyfA2y6tG0bUXCXiUA@public.gmane.org \
--cc=christophe.ricard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=jason.gunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org \
--cc=josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=peterhuewe-Mmb7MZpHnFY@public.gmane.org \
--cc=stefanb-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=tpmdd-yWjUBOtONefk1uMJSBkQmQ@public.gmane.org \
--cc=trousers-tech-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/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;
as well as URLs for NNTP newsgroup(s).