public inbox for linux-integrity@vger.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: Jerry Snitselaar <jsnitsel@redhat.com>
Cc: Laurent Bigonville <bigon@debian.org>,
	James Bottomley <James.Bottomley@HansenPartnership.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Alexander.Steffen@infineon.com, linux-integrity@vger.kernel.org
Subject: Re: [tpmdd-devel] tpm device not showing up in /dev anymore
Date: Fri, 4 May 2018 11:20:29 +0300	[thread overview]
Message-ID: <20180504082029.GD6373@linux.intel.com> (raw)
In-Reply-To: <20180503174311.d7bejzqjclvdcfyn@cantor>

On Thu, May 03, 2018 at 10:43:11AM -0700, Jerry Snitselaar wrote:
> On Thu May 03 18, Laurent Bigonville wrote:
> > Le 15/03/18 a 17:24, Jarkko Sakkinen a ecrit :
> > > On Fri, 2018-03-09 at 18:24 +0100, Laurent Bigonville wrote:
> > > > The duration that that was in your patch seems to work, cannot this be
> > > > implemented?
> > > > 
> > > > I'm quite surprised I'm the only one impacted by this...
> > > Sorry it took so long time response but I had forgotten so too many
> > > details.
> > > 
> > > After re-reading (PHEW!) the whole thread I'm thinking if we could
> > > use section 5.5.2.4 as a reference to select a timeout of TIMEOUT_A
> > > (albeit it is for request locality) and use Jerry's suggestion to
> > > put wait_for_tpm_stat() there? Opinions?
> > Hey,
> > 
> > Sorry to bother you again, but are there any progress on getting this
> > mainlined?
> > 
> > Kind regards,
> > 
> > Laurent Bigonville
> 
> Jarkko would something like this work? Building it to test on tpm2.0 system right now.
> I don't have access to a system with a tpm1.2 tis device at the moment. I tested a
> patch similar to this based on the slightly older code that is currently in the
> rhel kernel and it seemed work fine. release_locality was still a void function
> back then, so might have to think more about the return values here and checking
> them. Also wondering if release_locality, check_locality, and wait_for_tpm_stat
> can be refactored since they would all have basically the same chunk of code.
> 
> Jerry
> 
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index 5a1f47b43947..31ee154450eb 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -143,12 +143,56 @@ static bool check_locality(struct tpm_chip *chip, int l)
>        return false;
> }
> 
> +static bool locality_inactive(struct tpm_chip *chip, int l)
> +{
> +       struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
> +       int rc;
> +       u8 access;
> +
> +       rc = tpm_tis_read8(priv, TPM_ACCESS(l), &access);
> +       if (rc < 0)
> +               return false;
> +
> +       if ((access & (TPM_ACCESS_VALID | TPM_ACCESS_ACTIVE_LOCALITY)) == TPM_ACCESS_VALID)
> +               return true;
> +
> +       return false;
> +}
> +
> static int release_locality(struct tpm_chip *chip, int l)
> {
>        struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
> +       unsigned long stop, timeout;
> +       long rc;
> 
>        tpm_tis_write8(priv, TPM_ACCESS(l), TPM_ACCESS_ACTIVE_LOCALITY);
> 
> +       stop = jiffies + chip->timeout_a;
> +
> +       if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> +again:
> +               timeout = stop - jiffies;
> +               if ((long)timeout <= 0)
> +                       return -1;
> +
> +               rc = wait_event_interruptible_timeout(priv->int_queue,
> +                                                     (locality_inactive(chip, l)),
> +                                                     timeout);
> +
> +               if (rc > 0)
> +                       return rc;
> +
> +               if (rc == -ERESTARTSYS && freezing(current)) {
> +                       clear_thread_flag(TIF_SIGPENDING);
> +                       goto again;
> +               }
> +       } else {
> +               do {
> +                       if (locality_inactive(chip, l))
> +                               return 0;
> +                       tpm_msleep(TPM_TIMEOUT);
> +               } while (time_before(jiffies, stop));
> +       }

Maybe have the second branch first with a return statement and
convert the thing going on in the first branch as a loop?

/Jarkko

  reply	other threads:[~2018-05-04  8:20 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <f9526f55-df96-64fc-a4d6-877ce04e7156@debian.org>
     [not found] ` <dcad0104c46d4d5f88e642862bdb42c2@MUCSE603.infineon.com>
     [not found]   ` <47c4300b-8701-79a6-1c58-3a5853f4c5e3@debian.org>
     [not found]     ` <595efb25-8d87-f39d-037f-9c9a98462339@debian.org>
     [not found]       ` <857106e4bb864bb8a68b1381fffc8f50@MUCSE603.infineon.com>
     [not found]         ` <20170831164015.3ajgwydgxtippwoz@rhwork>
     [not found]           ` <0d9be244-ace0-030d-6ff9-c4e94c63b7e9@debian.org>
     [not found]             ` <20170906040555.fqedhmo5277sd6fq@linux.intel.com>
2017-10-14  8:13               ` [tpmdd-devel] tpm device not showing up in /dev anymore Jerry Snitselaar
2017-10-21  8:53                 ` Laurent Bigonville
2017-10-23 13:23                   ` Jarkko Sakkinen
2017-10-23 13:45                     ` Jerry Snitselaar
2017-10-23 13:48                       ` Laurent Bigonville
2017-10-24 13:51                       ` Jarkko Sakkinen
2017-10-24 14:57                         ` Jerry Snitselaar
2017-10-24 16:07                           ` Jarkko Sakkinen
2017-11-09  0:04                             ` Laurent Bigonville
2017-11-09 19:58                               ` Laurent Bigonville
2017-11-09 23:50                                 ` Jerry Snitselaar
2017-11-10  2:19                                   ` Jerry Snitselaar
2017-11-10  0:28                                 ` Jerry Snitselaar
2017-11-10  7:07                                   ` Jerry Snitselaar
2017-11-10  8:21                                     ` Laurent Bigonville
2017-11-10 20:53                                       ` Jerry Snitselaar
2017-11-11 15:45                                         ` Jason Gunthorpe
2017-11-11 19:12                                           ` Jerry Snitselaar
2017-11-11 19:46                                             ` Jason Gunthorpe
2017-11-11 20:31                                               ` Jerry Snitselaar
2017-11-14  0:26                                                 ` Laurent Bigonville
2017-11-14  2:45                                                   ` Jason Gunthorpe
2017-11-14 14:59                                                 ` Jarkko Sakkinen
2017-11-14 15:17                                                   ` James Bottomley
2017-11-17 13:16                                                     ` Jarkko Sakkinen
2018-01-02 23:54                                                       ` Laurent Bigonville
2018-01-03  0:33                                                         ` Jerry Snitselaar
2018-01-05 19:01                                                           ` Laurent Bigonville
2018-02-09 10:53                                                           ` Laurent Bigonville
2018-02-14 11:44                                                             ` Jarkko Sakkinen
2018-03-09 17:24                                                               ` Laurent Bigonville
2018-03-15 16:24                                                                 ` Jarkko Sakkinen
2018-05-03 11:38                                                                   ` Laurent Bigonville
2018-05-03 17:43                                                                     ` Jerry Snitselaar
2018-05-04  8:20                                                                       ` Jarkko Sakkinen [this message]
2018-05-04  8:18                                                                     ` Jarkko Sakkinen
2018-05-04 14:22                                                                       ` Jerry Snitselaar
2017-11-14 14:55                                               ` Jarkko Sakkinen
2017-11-14 14:43                                         ` Jarkko Sakkinen
2017-10-25  8:04                         ` Laurent Bigonville

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180504082029.GD6373@linux.intel.com \
    --to=jarkko.sakkinen@linux.intel.com \
    --cc=Alexander.Steffen@infineon.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=bigon@debian.org \
    --cc=jgg@ziepe.ca \
    --cc=jsnitsel@redhat.com \
    --cc=linux-integrity@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox