Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1724433 > unrolled thread

[PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution

Started byAlexander Steffen <Alexander.Steffen@infineon.com>
First post2017-08-31 19:20 +0200
Last post2017-09-08 12:10 +0200
Articles 6 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution Alexander Steffen <Alexander.Steffen@infineon.com> - 2017-08-31 19:20 +0200
    [PATCH RESEND v2 2/3] tpm2-cmd: Use dynamic delay to wait for self test result Alexander Steffen <Alexander.Steffen@infineon.com> - 2017-08-31 19:20 +0200
    [PATCH RESEND v2 1/3] tpm2-cmd: Trigger only missing self tests Alexander Steffen <Alexander.Steffen@infineon.com> - 2017-08-31 19:20 +0200
    Re: [PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-09-02 12:20 +0200
    Re: [PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-09-06 15:00 +0200
      Re: [PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-09-08 12:10 +0200

#1724433 — [PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution

FromAlexander Steffen <Alexander.Steffen@infineon.com>
Date2017-08-31 19:20 +0200
Subject[PATCH RESEND v2 0/3] tpm2-cmd: Improve self test execution
Message-ID<ukBih-8so-5@gated-at.bofh.it>
The self test logic for TPM 2.0 was probably based on the implementation
for TPM 1.2, but did not correctly take into account some TPM 2.0 specifics.
This patch series fixes those issues.

v2:
- Moved implementation description from comment to commit message.

Alexander Steffen (3):
  tpm2-cmd: Trigger only missing self tests
  tpm2-cmd: Use dynamic delay to wait for self test result
  tpm2-cmd: React correctly to RC_TESTING from self tests

 drivers/char/tpm/tpm2-cmd.c | 69 +++++++++++++--------------------------------
 1 file changed, 20 insertions(+), 49 deletions(-)

-- 
2.7.4

[toc] | [next] | [standalone]


#1724435 — [PATCH RESEND v2 2/3] tpm2-cmd: Use dynamic delay to wait for self test result

FromAlexander Steffen <Alexander.Steffen@infineon.com>
Date2017-08-31 19:20 +0200
Subject[PATCH RESEND v2 2/3] tpm2-cmd: Use dynamic delay to wait for self test result
Message-ID<ukBii-8so-21@gated-at.bofh.it>
In reply to#1724433
In order to avoid delaying the code longer than necessary while still
giving the TPM enough time to execute the self tests asynchronously, start
with a small delay between two polls and increase it each round.

Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
---
 drivers/char/tpm/tpm2-cmd.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index 8e940a5..2178437 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -877,20 +877,17 @@ static int tpm2_start_selftest(struct tpm_chip *chip, bool full)
 static int tpm2_do_selftest(struct tpm_chip *chip)
 {
 	int rc;
-	unsigned int loops;
-	unsigned int delay_msec = 100;
-	unsigned long duration;
-	int i;
-
-	duration = tpm2_calc_ordinal_duration(chip, TPM2_CC_SELF_TEST);
+	unsigned int delay_msec = 20;
+	long duration;
 
-	loops = jiffies_to_msecs(duration) / delay_msec;
+	duration = jiffies_to_msecs(
+		tpm2_calc_ordinal_duration(chip, TPM2_CC_SELF_TEST));
 
 	rc = tpm2_start_selftest(chip, false);
 	if (rc)
 		return rc;
 
-	for (i = 0; i < loops; i++) {
+	while (duration > 0) {
 		/* Attempt to read a PCR value */
 		rc = tpm2_pcr_read(chip, 0, NULL);
 		if (rc < 0)
@@ -900,6 +897,10 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
 			break;
 
 		tpm_msleep(delay_msec);
+		duration -= delay_msec;
+
+		/* wait longer the next round */
+		delay_msec *= 2;
 	}
 
 	return rc;
-- 
2.7.4

[toc] | [prev] | [next] | [standalone]


#1724436 — [PATCH RESEND v2 1/3] tpm2-cmd: Trigger only missing self tests

FromAlexander Steffen <Alexander.Steffen@infineon.com>
Date2017-08-31 19:20 +0200
Subject[PATCH RESEND v2 1/3] tpm2-cmd: Trigger only missing self tests
Message-ID<ukBii-8so-23@gated-at.bofh.it>
In reply to#1724433
tpm2_do_selftest is only used during initialization of the TPM to ensure
that the device functions correctly. Therefore, it is sufficient to request
only missing self tests (parameter full_test=0), not a reexecution of all
self tests, as was done before. This allows for a faster execution of this
command.

Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
---
 drivers/char/tpm/tpm2-cmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index e1a41b7..8e940a5 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -865,7 +865,7 @@ static int tpm2_start_selftest(struct tpm_chip *chip, bool full)
 }
 
 /**
- * tpm2_do_selftest() - run a full self test
+ * tpm2_do_selftest() - ensure that all self tests have passed
  *
  * @chip: TPM chip to use
  *
@@ -886,7 +886,7 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
 
 	loops = jiffies_to_msecs(duration) / delay_msec;
 
-	rc = tpm2_start_selftest(chip, true);
+	rc = tpm2_start_selftest(chip, false);
 	if (rc)
 		return rc;
 
-- 
2.7.4

[toc] | [prev] | [next] | [standalone]


#1725478

FromJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date2017-09-02 12:20 +0200
Message-ID<uldGV-1HA-7@gated-at.bofh.it>
In reply to#1724433
On Thu, Aug 31, 2017 at 07:18:55PM +0200, Alexander Steffen wrote:
> The self test logic for TPM 2.0 was probably based on the implementation
> for TPM 1.2, but did not correctly take into account some TPM 2.0 specifics.
> This patch series fixes those issues.
> 
> v2:
> - Moved implementation description from comment to commit message.
> 
> Alexander Steffen (3):
>   tpm2-cmd: Trigger only missing self tests
>   tpm2-cmd: Use dynamic delay to wait for self test result
>   tpm2-cmd: React correctly to RC_TESTING from self tests
> 
>  drivers/char/tpm/tpm2-cmd.c | 69 +++++++++++++--------------------------------
>  1 file changed, 20 insertions(+), 49 deletions(-)
> 
> -- 
> 2.7.4
> 

Great, just have to test these.

/Jarkko

[toc] | [prev] | [next] | [standalone]


#1727421

FromJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date2017-09-06 15:00 +0200
Message-ID<umI5Y-1TZ-21@gated-at.bofh.it>
In reply to#1724433
On Thu, Aug 31, 2017 at 07:18:55PM +0200, Alexander Steffen wrote:
> The self test logic for TPM 2.0 was probably based on the implementation
> for TPM 1.2, but did not correctly take into account some TPM 2.0 specifics.
> This patch series fixes those issues.
> 
> v2:
> - Moved implementation description from comment to commit message.
> 
> Alexander Steffen (3):
>   tpm2-cmd: Trigger only missing self tests
>   tpm2-cmd: Use dynamic delay to wait for self test result
>   tpm2-cmd: React correctly to RC_TESTING from self tests
> 
>  drivers/char/tpm/tpm2-cmd.c | 69 +++++++++++++--------------------------------
>  1 file changed, 20 insertions(+), 49 deletions(-)
> 
> -- 
> 2.7.4
> 

Applied to my master for convenient testing.

/Jarkko

[toc] | [prev] | [next] | [standalone]


#1728745

FromJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date2017-09-08 12:10 +0200
Message-ID<unooy-5ko-13@gated-at.bofh.it>
In reply to#1727421
On Wed, Sep 06, 2017 at 03:57:40PM +0300, Jarkko Sakkinen wrote:
> On Thu, Aug 31, 2017 at 07:18:55PM +0200, Alexander Steffen wrote:
> > The self test logic for TPM 2.0 was probably based on the implementation
> > for TPM 1.2, but did not correctly take into account some TPM 2.0 specifics.
> > This patch series fixes those issues.
> > 
> > v2:
> > - Moved implementation description from comment to commit message.
> > 
> > Alexander Steffen (3):
> >   tpm2-cmd: Trigger only missing self tests
> >   tpm2-cmd: Use dynamic delay to wait for self test result
> >   tpm2-cmd: React correctly to RC_TESTING from self tests
> > 
> >  drivers/char/tpm/tpm2-cmd.c | 69 +++++++++++++--------------------------------
> >  1 file changed, 20 insertions(+), 49 deletions(-)
> > 
> > -- 
> > 2.7.4
> > 
> 
> Applied to my master for convenient testing.
> 
> /Jarkko

Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>

/Jarkko

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web