Re: [PATCH 2/3] tpm2-cmd: Use dynamic delay to wait for self test result

Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/[email protected]>
Newsgroups net.sourceforge.lists.tpmdd-devel
Message-ID <[email protected]>
On Sun, Aug 20, 2017 at 09:26:32PM +0300, Jarkko Sakkinen wrote:
> On Fri, Aug 18, 2017 at 02:15:31PM +0200, Alexander Steffen wrote:
> > 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-d0qZbvYSIPpWk0Htik3J/[email protected]>
> > ---
> >  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 7e328d6..e3d4cc3 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;
> >  
> >  		msleep(delay_msec);
> > +		duration -= delay_msec;
> > +
> > +		/* wait longer the next round */
> > +		delay_msec *= 2;
> >  	}
> >  
> >  	return rc;
> > -- 
> > 2.7.4
> > 
> 
> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/[email protected]>
> 
> /Jarkko


Applying: tpm2-cmd: Use dynamic delay to wait for self test result
error: sha1 information is lacking or useless (drivers/char/tpm/tpm2-cmd.c).
error: could not build fake ancestor
Patch failed at 0001 tpm2-cmd: Use dynamic delay to wait for self test result
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

Please rebase your patches.

/Jarkko

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.