mbox series

[v7,00/21] tpm: separate tpm 1.x and tpm 2.x commands

Message ID 20181019182307.17745-1-tomas.winkler@intel.com (mailing list archive)
Headers show
Series tpm: separate tpm 1.x and tpm 2.x commands | expand

Message

Winkler, Tomas Oct. 19, 2018, 6:22 p.m. UTC
This patch series provides initial separation of tpm 1.x and tpm 2.x
commands, in foresight that the tpm 1.x chips will eventually phase out
and can be compiled out for modern systems.
 A new file is added tpm1-cmd.c that contains tpm 1.x specific commands.
In addition, tpm 1.x commands are now implemented using tpm_buf
structure and instead of tpm_cmd_t construct. The latter is now removed.

Note: my tpm 1.x HW availability is limited hence some more testing is needed.

This series also contains two trivial cleanups and addition of new
commands by TCG spec 1.36, now supported on new Intet's platforms.

V6: 1. Dropping tpm: move pcr extend code to tpm2-cmd.c and rebasing code over that change
    2. Trivial fixes in kdoc and header
V7: 1. Add backportable patch for nuvoton duration calculation
    2. Rebase durations patches over it.
    3. Fix notorious typo tmp->tpm


Tomas Winkler (21):
  tpm: tpm_i2c_nuvoton: use correct command duration for TPM 2.x
  tpm2: add new tpm2 commands according to TCG 1.36
  tpm: sort objects in the Makefile
  tpm: factor out tpm 1.x duration calculation to tpm1-cmd.c
  tpm: add tpm_calc_ordinal_duration() wrapper
  tpm: factor out tpm_get_timeouts()
  tpm: move tpm1_pcr_extend to tpm1-cmd.c
  tpm: move tpm_getcap to tpm1-cmd.c
  tpm: factor out tpm1_get_random into tpm1-cmd.c
  tpm: move tpm 1.x selftest code from tpm-interface.c tpm1-cmd.c
  tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
  tpm: factor out tpm_startup function
  tpm: add tpm_auto_startup() into tpm-interface.c
  tpm: tpm-interface.c drop unused macros
  tpm: tpm-space.c remove unneeded semicolon
  tpm: tpm1: rewrite tpm1_get_random() using tpm_buf structure
  tpm1: implement tpm1_pcr_read_dev() using tpm_buf structure
  tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
  tpm1: reimplement SAVESTATE using tpm_buf
  tpm1: reimplement tpm1_continue_selftest() using tpm_buf
  tpm: use u32 instead of int for PCR index

 drivers/char/tpm/Makefile            |  16 +-
 drivers/char/tpm/st33zp24/st33zp24.c |   2 +-
 drivers/char/tpm/tpm-chip.c          |  11 +-
 drivers/char/tpm/tpm-interface.c     | 817 +++--------------------------------
 drivers/char/tpm/tpm-sysfs.c         |  52 +--
 drivers/char/tpm/tpm.h               |  97 ++---
 drivers/char/tpm/tpm1-cmd.c          | 781 +++++++++++++++++++++++++++++++++
 drivers/char/tpm/tpm2-cmd.c          | 301 +++++++------
 drivers/char/tpm/tpm2-space.c        |   2 +-
 drivers/char/tpm/tpm_i2c_nuvoton.c   |  11 +-
 drivers/char/tpm/tpm_tis_core.c      |  10 +-
 include/linux/tpm.h                  |  11 +-
 security/integrity/ima/ima_crypto.c  |   5 +-
 13 files changed, 1082 insertions(+), 1034 deletions(-)
 create mode 100644 drivers/char/tpm/tpm1-cmd.c

Comments

Jarkko Sakkinen Oct. 20, 2018, 1:19 a.m. UTC | #1
On Fri, 19 Oct 2018, Tomas Winkler wrote:
> This patch series provides initial separation of tpm 1.x and tpm 2.x
> commands, in foresight that the tpm 1.x chips will eventually phase out
> and can be compiled out for modern systems.
> A new file is added tpm1-cmd.c that contains tpm 1.x specific commands.
> In addition, tpm 1.x commands are now implemented using tpm_buf
> structure and instead of tpm_cmd_t construct. The latter is now removed.
>
> Note: my tpm 1.x HW availability is limited hence some more testing is needed.
>
> This series also contains two trivial cleanups and addition of new
> commands by TCG spec 1.36, now supported on new Intet's platforms.
>
> V6: 1. Dropping tpm: move pcr extend code to tpm2-cmd.c and rebasing code over that change
>    2. Trivial fixes in kdoc and header
> V7: 1. Add backportable patch for nuvoton duration calculation
>    2. Rebase durations patches over it.
>    3. Fix notorious typo tmp->tpm
>
>
> Tomas Winkler (21):
>  tpm: tpm_i2c_nuvoton: use correct command duration for TPM 2.x
>  tpm2: add new tpm2 commands according to TCG 1.36
>  tpm: sort objects in the Makefile
>  tpm: factor out tpm 1.x duration calculation to tpm1-cmd.c
>  tpm: add tpm_calc_ordinal_duration() wrapper
>  tpm: factor out tpm_get_timeouts()
>  tpm: move tpm1_pcr_extend to tpm1-cmd.c
>  tpm: move tpm_getcap to tpm1-cmd.c
>  tpm: factor out tpm1_get_random into tpm1-cmd.c
>  tpm: move tpm 1.x selftest code from tpm-interface.c tpm1-cmd.c
>  tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
>  tpm: factor out tpm_startup function
>  tpm: add tpm_auto_startup() into tpm-interface.c
>  tpm: tpm-interface.c drop unused macros
>  tpm: tpm-space.c remove unneeded semicolon
>  tpm: tpm1: rewrite tpm1_get_random() using tpm_buf structure
>  tpm1: implement tpm1_pcr_read_dev() using tpm_buf structure
>  tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
>  tpm1: reimplement SAVESTATE using tpm_buf
>  tpm1: reimplement tpm1_continue_selftest() using tpm_buf
>  tpm: use u32 instead of int for PCR index
>
> drivers/char/tpm/Makefile            |  16 +-
> drivers/char/tpm/st33zp24/st33zp24.c |   2 +-
> drivers/char/tpm/tpm-chip.c          |  11 +-
> drivers/char/tpm/tpm-interface.c     | 817 +++--------------------------------
> drivers/char/tpm/tpm-sysfs.c         |  52 +--
> drivers/char/tpm/tpm.h               |  97 ++---
> drivers/char/tpm/tpm1-cmd.c          | 781 +++++++++++++++++++++++++++++++++
> drivers/char/tpm/tpm2-cmd.c          | 301 +++++++------
> drivers/char/tpm/tpm2-space.c        |   2 +-
> drivers/char/tpm/tpm_i2c_nuvoton.c   |  11 +-
> drivers/char/tpm/tpm_tis_core.c      |  10 +-
> include/linux/tpm.h                  |  11 +-
> security/integrity/ima/ima_crypto.c  |   5 +-
> 13 files changed, 1082 insertions(+), 1034 deletions(-)
> create mode 100644 drivers/char/tpm/tpm1-cmd.c
>
> -- 
> 2.14.4
>
>

Starts to look reosonable:

https://patchwork.kernel.org/project/linux-integrity/list/?series=33257

This is the list of patches (assuming that I didn't miss anything) that
still need tested-by tags:

- tpm: factor out tpm1_get_random into tpm1-cmd.c
- tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
- tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
   (the subsystem tag is wrong in this, just noticed, should be 'tpm:')
- tpm: use u32 instead of int for PCR index

/Jarkko
Winkler, Tomas Oct. 22, 2018, 5:12 p.m. UTC | #2
> 
> On Fri, 19 Oct 2018, Tomas Winkler wrote:
> > This patch series provides initial separation of tpm 1.x and tpm 2.x
> > commands, in foresight that the tpm 1.x chips will eventually phase
> > out and can be compiled out for modern systems.
> > A new file is added tpm1-cmd.c that contains tpm 1.x specific commands.
> > In addition, tpm 1.x commands are now implemented using tpm_buf
> > structure and instead of tpm_cmd_t construct. The latter is now removed.
> >
> > Note: my tpm 1.x HW availability is limited hence some more testing is
> needed.
> >
> > This series also contains two trivial cleanups and addition of new
> > commands by TCG spec 1.36, now supported on new Intet's platforms.
> >
> > V6: 1. Dropping tpm: move pcr extend code to tpm2-cmd.c and rebasing
> code over that change
> >    2. Trivial fixes in kdoc and header
> > V7: 1. Add backportable patch for nuvoton duration calculation
> >    2. Rebase durations patches over it.
> >    3. Fix notorious typo tmp->tpm
> >
> >
> > Tomas Winkler (21):
> >  tpm: tpm_i2c_nuvoton: use correct command duration for TPM 2.x
> >  tpm2: add new tpm2 commands according to TCG 1.36
> >  tpm: sort objects in the Makefile
> >  tpm: factor out tpm 1.x duration calculation to tpm1-cmd.c
> >  tpm: add tpm_calc_ordinal_duration() wrapper
> >  tpm: factor out tpm_get_timeouts()
> >  tpm: move tpm1_pcr_extend to tpm1-cmd.c
> >  tpm: move tpm_getcap to tpm1-cmd.c
> >  tpm: factor out tpm1_get_random into tpm1-cmd.c
> >  tpm: move tpm 1.x selftest code from tpm-interface.c tpm1-cmd.c
> >  tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
> >  tpm: factor out tpm_startup function
> >  tpm: add tpm_auto_startup() into tpm-interface.c
> >  tpm: tpm-interface.c drop unused macros
> >  tpm: tpm-space.c remove unneeded semicolon
> >  tpm: tpm1: rewrite tpm1_get_random() using tpm_buf structure
> >  tpm1: implement tpm1_pcr_read_dev() using tpm_buf structure
> >  tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
> >  tpm1: reimplement SAVESTATE using tpm_buf
> >  tpm1: reimplement tpm1_continue_selftest() using tpm_buf
> >  tpm: use u32 instead of int for PCR index
> >
> > drivers/char/tpm/Makefile            |  16 +-
> > drivers/char/tpm/st33zp24/st33zp24.c |   2 +-
> > drivers/char/tpm/tpm-chip.c          |  11 +-
> > drivers/char/tpm/tpm-interface.c     | 817 +++--------------------------------
> > drivers/char/tpm/tpm-sysfs.c         |  52 +--
> > drivers/char/tpm/tpm.h               |  97 ++---
> > drivers/char/tpm/tpm1-cmd.c          | 781
> +++++++++++++++++++++++++++++++++
> > drivers/char/tpm/tpm2-cmd.c          | 301 +++++++------
> > drivers/char/tpm/tpm2-space.c        |   2 +-
> > drivers/char/tpm/tpm_i2c_nuvoton.c   |  11 +-
> > drivers/char/tpm/tpm_tis_core.c      |  10 +-
> > include/linux/tpm.h                  |  11 +-
> > security/integrity/ima/ima_crypto.c  |   5 +-
> > 13 files changed, 1082 insertions(+), 1034 deletions(-) create mode
> > 100644 drivers/char/tpm/tpm1-cmd.c
> >
> > --
> > 2.14.4
> >
> >
> 
> Starts to look reosonable:
> 
> https://patchwork.kernel.org/project/linux-integrity/list/?series=33257
> 
> This is the list of patches (assuming that I didn't miss anything) that still
> need tested-by tags:

Those are just code movements, we are running them form months on our systems.

> 
> - tpm: factor out tpm1_get_random into tpm1-cmd.c
> - tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
> - tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
>    (the subsystem tag is wrong in this, just noticed, should be 'tpm:')
When have you established this requirement I missed that and it cannot be deduced from the git history.

> - tpm: use u32 instead of int for PCR index

The last one maybe need some more target testing.

Thanks
Tomas
Jarkko Sakkinen Oct. 23, 2018, 1:14 p.m. UTC | #3
On Mon, 22 Oct 2018, Winkler, Tomas wrote:
>> This is the list of patches (assuming that I didn't miss anything)
>> that still need tested-by tags:
>
> Those are just code movements, we are running them form months on our
> systems.

I'm not sure what point you are trying to make. You cannot give
tested-by by yourself to yourself you know. By saying that you
are just saying things. It is not any form of peer testing.

>> - tpm: factor out tpm1_get_random into tpm1-cmd.c
>> - tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
>> - tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
>>    (the subsystem tag is wrong in this, just noticed, should be 'tpm:')
> When have you established this requirement I missed that and it cannot
> be deduced from the git history.

Which requirement?

/jarkko
Winkler, Tomas Oct. 23, 2018, 1:35 p.m. UTC | #4
> 
> On Mon, 22 Oct 2018, Winkler, Tomas wrote:
> >> This is the list of patches (assuming that I didn't miss anything)
> >> that still need tested-by tags:
> >
> > Those are just code movements, we are running them form months on our
> > systems.
> 
> I'm not sure what point you are trying to make. You cannot give tested-by by
> yourself to yourself you know. By saying that you are just saying things. It is
> not any form of peer testing.
No, you are exposed to that code base as well, after all you are working @intel.
> 
> >> - tpm: factor out tpm1_get_random into tpm1-cmd.c
> >> - tpm: factor out tpm 1.x pm suspend flow into tpm1-cmd.c
> >> - tpm1: rename tpm1_pcr_read_dev to tpm1_pcr_read()
> >>    (the subsystem tag is wrong in this, just noticed, should be
> >> 'tpm:')
> > When have you established this requirement I missed that and it cannot
> > be deduced from the git history.
> 
> Which requirement?

The requirement that the  subsystem prefix should be 'tpm:' 


Thanks
Tomas