Message ID | 20200213202329.898607-4-stefanb@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enable vTPM 2.0 for the IBM vTPM driver | expand |
On Thu, Feb 13, 2020 at 03:23:28PM -0500, Stefan Berger wrote: > From: Stefan Berger <stefanb@linux.ibm.com> > > Implement tpm2_init() that gets the TPM 2 timeouts and command durations > and command code attributes. This function is to be called in case the > TPM_OPS_AUTO_STARTUP flag is not set and therefore tpm2_auto_startup() > is not called. > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> The commit makes zero effort trying to explain what the heck tpm_init() is and when it should be used and why the function name tpm2_init(). /Jarkko
On 2/25/20 12:00 PM, Jarkko Sakkinen wrote: > On Thu, Feb 13, 2020 at 03:23:28PM -0500, Stefan Berger wrote: >> From: Stefan Berger <stefanb@linux.ibm.com> >> >> Implement tpm2_init() that gets the TPM 2 timeouts and command durations >> and command code attributes. This function is to be called in case the >> TPM_OPS_AUTO_STARTUP flag is not set and therefore tpm2_auto_startup() >> is not called. >> >> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > The commit makes zero effort trying to explain what the heck tpm_init() > is and when it should be used and why the function name tpm2_init(). Are you saying the explanation of when to use tpm2_init above is not enough? 'bviously we are trying to cover the case of using the TPM 2 by a driver that doesn't use the TPM_OPS_AUTO_STARTUP flag and therefore the TPM 2 timeouts and command durations and command code attributes are not set as they would be if tpm2_auto_startup() was to be called and tpm2_init() is the alternative to call. I didn't like tpm2_init() either... any suggestions for a better name? Stefan > > /Jarkko
On Tue, Feb 25, 2020 at 01:20:39PM -0500, Stefan Berger wrote: > On 2/25/20 12:00 PM, Jarkko Sakkinen wrote: > > On Thu, Feb 13, 2020 at 03:23:28PM -0500, Stefan Berger wrote: > > > From: Stefan Berger <stefanb@linux.ibm.com> > > > > > > Implement tpm2_init() that gets the TPM 2 timeouts and command durations > > > and command code attributes. This function is to be called in case the > > > TPM_OPS_AUTO_STARTUP flag is not set and therefore tpm2_auto_startup() > > > is not called. > > > > > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > > The commit makes zero effort trying to explain what the heck tpm_init() > > is and when it should be used and why the function name tpm2_init(). > > Are you saying the explanation of when to use tpm2_init above is not enough? > 'bviously we are trying to cover the case of using the TPM 2 by a driver > that doesn't use the TPM_OPS_AUTO_STARTUP flag and therefore the TPM 2 > timeouts and command durations and command code attributes are not set as > they would be if tpm2_auto_startup() was to be called and tpm2_init() is the > alternative to call. I didn't like tpm2_init() either... any suggestions for > a better name? I'm not getting what this commit is trying to do in the first place. /Jarkko
On 2/26/20 10:02 AM, Jarkko Sakkinen wrote: > On Tue, Feb 25, 2020 at 01:20:39PM -0500, Stefan Berger wrote: >> On 2/25/20 12:00 PM, Jarkko Sakkinen wrote: >>> On Thu, Feb 13, 2020 at 03:23:28PM -0500, Stefan Berger wrote: >>>> From: Stefan Berger <stefanb@linux.ibm.com> >>>> >>>> Implement tpm2_init() that gets the TPM 2 timeouts and command durations >>>> and command code attributes. This function is to be called in case the >>>> TPM_OPS_AUTO_STARTUP flag is not set and therefore tpm2_auto_startup() >>>> is not called. >>>> >>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> >>> The commit makes zero effort trying to explain what the heck tpm_init() >>> is and when it should be used and why the function name tpm2_init(). >> Are you saying the explanation of when to use tpm2_init above is not enough? >> 'bviously we are trying to cover the case of using the TPM 2 by a driver >> that doesn't use the TPM_OPS_AUTO_STARTUP flag and therefore the TPM 2 >> timeouts and command durations and command code attributes are not set as >> they would be if tpm2_auto_startup() was to be called and tpm2_init() is the >> alternative to call. I didn't like tpm2_init() either... any suggestions for >> a better name? > I'm not getting what this commit is trying to do in the first place. I sent out v3, maybe the text there is better. > > /Jarkko
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c index a438b1206fcb..cca0e542172d 100644 --- a/drivers/char/tpm/tpm-interface.c +++ b/drivers/char/tpm/tpm-interface.c @@ -371,8 +371,11 @@ int tpm_auto_startup(struct tpm_chip *chip) { int rc; - if (!(chip->ops->flags & TPM_OPS_AUTO_STARTUP)) + if (!(chip->ops->flags & TPM_OPS_AUTO_STARTUP)) { + if (chip->flags & TPM_CHIP_FLAG_TPM2) + return tpm2_init(chip); return 0; + } if (chip->flags & TPM_CHIP_FLAG_TPM2) rc = tpm2_auto_startup(chip); diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h index 5620747da0cf..895f8a1e17d2 100644 --- a/drivers/char/tpm/tpm.h +++ b/drivers/char/tpm/tpm.h @@ -222,6 +222,7 @@ ssize_t tpm2_get_tpm_pt(struct tpm_chip *chip, u32 property_id, u32 *value, const char *desc); ssize_t tpm2_get_pcr_allocation(struct tpm_chip *chip); +int tpm2_init(struct tpm_chip *chip); int tpm2_auto_startup(struct tpm_chip *chip); void tpm2_shutdown(struct tpm_chip *chip, u16 shutdown_type); unsigned long tpm2_calc_ordinal_duration(struct tpm_chip *chip, u32 ordinal); diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c index 13696deceae8..d5b4b0449c23 100644 --- a/drivers/char/tpm/tpm2-cmd.c +++ b/drivers/char/tpm/tpm2-cmd.c @@ -709,6 +709,20 @@ static int tpm2_startup(struct tpm_chip *chip) return rc; } +/** + * tpm2_init - Get timeouts and command code attributes + * in case tpm2_auto_startup is not used. + * @chip: TPM chip to use + * + * Return 0 on success, < 0 in case of fatal error. + */ +int tpm2_init(struct tpm_chip *chip) +{ + tpm2_get_timeouts(chip); + + return tpm2_get_cc_attrs_tbl(chip); +} + /** * tpm2_auto_startup - Perform the standard automatic TPM initialization * sequence