All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 0/8] TPM 2.0 support
@ 2014-12-02 22:31 ` Jarkko Sakkinen
  0 siblings, 0 replies; 41+ messages in thread
From: Jarkko Sakkinen @ 2014-12-02 22:31 UTC (permalink / raw)
  To: Peter Huewe, Ashley Lai, Marcel Selhorst
  Cc: tpmdd-devel, linux-kernel, josh.triplett, christophe.ricard,
	jason.gunthorpe, linux-api, trousers-tech, Jarkko Sakkinen

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/

This is too big effort to be included into this patch set and requires
more discussion.

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.

Jarkko Sakkinen (7):
  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

Will Arthur (1):
  tpm: TPM 2.0 FIFO Interface

 drivers/char/tpm/Kconfig            |   9 +
 drivers/char/tpm/Makefile           |   3 +-
 drivers/char/tpm/tpm-chip.c         | 251 ++++++++++++++++
 drivers/char/tpm/tpm-dev.c          |  42 +--
 drivers/char/tpm/tpm-interface.c    | 261 ++++++----------
 drivers/char/tpm/tpm-sysfs.c        |  29 +-
 drivers/char/tpm/tpm.h              | 113 ++++++-
 drivers/char/tpm/tpm2-cmd.c         | 571 ++++++++++++++++++++++++++++++++++++
 drivers/char/tpm/tpm_atmel.c        |  25 +-
 drivers/char/tpm/tpm_crb.c          | 356 ++++++++++++++++++++++
 drivers/char/tpm/tpm_i2c_atmel.c    |  49 ++--
 drivers/char/tpm/tpm_i2c_infineon.c |  43 +--
 drivers/char/tpm/tpm_i2c_nuvoton.c  |  68 ++---
 drivers/char/tpm/tpm_i2c_stm_st33.c |  44 ++-
 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          | 137 +++++----
 drivers/char/tpm/tpm_tis.c          | 180 +++++++-----
 drivers/char/tpm/xen-tpmfront.c     |  14 +-
 20 files changed, 1717 insertions(+), 580 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


^ permalink raw reply	[flat|nested] 41+ messages in thread
* [PATCH v9 0/8] TPM 2.0 support
@ 2014-12-04  5:49 Jarkko Sakkinen
  2014-12-04  5:49 ` [PATCH v8 1/8] tpm: merge duplicate transmit_cmd() functions Jarkko Sakkinen
  0 siblings, 1 reply; 41+ messages in thread
From: Jarkko Sakkinen @ 2014-12-04  5:49 UTC (permalink / raw)
  To: Peter Huewe, Ashley Lai, Marcel Selhorst
  Cc: tpmdd-devel, linux-kernel, josh.triplett, christophe.ricard,
	jason.gunthorpe, linux-api, trousers-tech, Jarkko Sakkinen

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/

This is too big effort to be included into this patch set and requires
more discussion.

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. Changed check whether
  buffer size is less than mandatory fields in the ACPI TPM2 table.

Jarkko Sakkinen (7):
  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

Will Arthur (1):
  tpm: TPM 2.0 FIFO Interface

 drivers/char/tpm/Kconfig            |   9 +
 drivers/char/tpm/Makefile           |   3 +-
 drivers/char/tpm/tpm-chip.c         | 251 +++++++++++++++++
 drivers/char/tpm/tpm-dev.c          |  42 +--
 drivers/char/tpm/tpm-interface.c    | 261 ++++++-----------
 drivers/char/tpm/tpm-sysfs.c        |  29 +-
 drivers/char/tpm/tpm.h              | 107 +++++--
 drivers/char/tpm/tpm2-cmd.c         | 542 ++++++++++++++++++++++++++++++++++++
 drivers/char/tpm/tpm_atmel.c        |  25 +-
 drivers/char/tpm/tpm_crb.c          | 356 +++++++++++++++++++++++
 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 |  28 +-
 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          | 137 +++++----
 drivers/char/tpm/tpm_tis.c          | 192 ++++++++-----
 drivers/char/tpm/xen-tpmfront.c     |  14 +-
 20 files changed, 1689 insertions(+), 578 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


^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2014-12-08 16:18 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-02 22:31 [PATCH v8 0/8] TPM 2.0 support Jarkko Sakkinen
2014-12-02 22:31 ` Jarkko Sakkinen
2014-12-02 22:31 ` [PATCH v8 1/8] tpm: merge duplicate transmit_cmd() functions Jarkko Sakkinen
2014-12-02 22:31   ` Jarkko Sakkinen
2014-12-02 22:31 ` [PATCH v8 2/8] tpm: two-phase chip management functions Jarkko Sakkinen
2014-12-02 22:31 ` [PATCH v8 3/8] tpm: fix raciness of PPI interface lookup Jarkko Sakkinen
2014-12-02 22:31 ` [PATCH v8 4/8] tpm: rename chip->dev to chip->pdev Jarkko Sakkinen
2014-12-02 22:31 ` [PATCH v8 5/8] tpm: device class for tpm Jarkko Sakkinen
2014-12-02 22:31 ` [PATCH v8 6/8] tpm: TPM 2.0 baseline support Jarkko Sakkinen
2014-12-03  2:21   ` [tpmdd-devel] " Stefan Berger
2014-12-03  2:21     ` Stefan Berger
2014-12-03  2:28   ` Stefan Berger
2014-12-04 23:13     ` Peter Hüwe
2014-12-04 23:13       ` Peter Hüwe
2014-12-08 13:56       ` Jarkko Sakkinen
2014-12-08 13:56         ` Jarkko Sakkinen
2014-12-08 16:18         ` peterhuewe
2014-12-08 16:18           ` peterhuewe-Mmb7MZpHnFY
2014-12-02 22:31 ` [PATCH v8 7/8] tpm: TPM 2.0 CRB Interface Jarkko Sakkinen
2014-12-02 23:07   ` [tpmdd-devel] " Stefan Berger
2014-12-02 23:07     ` Stefan Berger
2014-12-02 23:10   ` Peter Hüwe
2014-12-02 22:31 ` [PATCH v8 8/8] tpm: TPM 2.0 FIFO Interface Jarkko Sakkinen
2014-12-02 22:55 ` [PATCH v8 0/8] TPM 2.0 support Peter Hüwe
2014-12-02 22:55   ` Peter Hüwe
2014-12-03 10:10   ` Jarkko Sakkinen
2014-12-03 10:10     ` Jarkko Sakkinen
2014-12-02 23:16 ` Peter Hüwe
2014-12-02 23:16   ` Peter Hüwe
2014-12-02 23:21   ` [tpmdd-devel] " Peter Hüwe
2014-12-02 23:21     ` Peter Hüwe
2014-12-02 23:24     ` Aaro Koskinen
2014-12-02 23:24       ` Aaro Koskinen
2014-12-02 23:33       ` Peter Hüwe
2014-12-02 23:33         ` Peter Hüwe
2014-12-02 23:48         ` Joe Perches
2014-12-03  0:03     ` Thomas Gleixner
2014-12-03  0:03       ` Thomas Gleixner
2014-12-04  5:52   ` Jarkko Sakkinen
2014-12-04  5:52     ` Jarkko Sakkinen
2014-12-04  5:49 [PATCH v9 " Jarkko Sakkinen
2014-12-04  5:49 ` [PATCH v8 1/8] tpm: merge duplicate transmit_cmd() functions Jarkko Sakkinen

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.