stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] tpm_tis: turn on TPM before calling tpm_get_timeouts
       [not found] <20191111233418.17676-1-jsnitsel@redhat.com>
@ 2019-11-12  0:03 ` Jerry Snitselaar
       [not found] ` <20191112200328.GA11213@linux.intel.com>
  2019-11-13  0:02 ` [PATCH v3] " Jerry Snitselaar
  2 siblings, 0 replies; 4+ messages in thread
From: Jerry Snitselaar @ 2019-11-12  0:03 UTC (permalink / raw)
  To: linux-integrity
  Cc: Jarkko Sakkinen, Peter Huewe, Jason Gunthorpe, linux-kernel,
	stable, Christian Bundy

With power gating moved out of the tpm_transmit code we need
to power on the TPM prior to calling tpm_get_timeouts.

Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Cc: Peter Huewe <peterhuewe@gmx.de>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()")
Reported-by: Christian Bundy <christianbundy@fraction.io>
Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
---
v2: fix stable cc to correct address

 drivers/char/tpm/tpm_tis_core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index 270f43acbb77..cb101cec8f8b 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -974,13 +974,14 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
 		 * to make sure it works. May as well use that command to set the
 		 * proper timeouts for the driver.
 		 */
+		tpm_chip_start(chip);
 		if (tpm_get_timeouts(chip)) {
 			dev_err(dev, "Could not get TPM timeouts and durations\n");
 			rc = -ENODEV;
+			tpm_stop_chip(chip);
 			goto out_err;
 		}
 
-		tpm_chip_start(chip);
 		chip->flags |= TPM_CHIP_FLAG_IRQ;
 		if (irq) {
 			tpm_tis_probe_irq_single(chip, intmask, IRQF_SHARED,
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] tpm_tis: turn on TPM before calling tpm_get_timeouts
       [not found]           ` <20191112204623.GG5584@ziepe.ca>
@ 2019-11-12 21:14             ` Jerry Snitselaar
  0 siblings, 0 replies; 4+ messages in thread
From: Jerry Snitselaar @ 2019-11-12 21:14 UTC (permalink / raw)
  To: Jason Gunthorpe
  Cc: Jarkko Sakkinen, linux-integrity, Peter Huewe,
	Linux List Kernel Mailing, stable, Christian Bundy

On Tue Nov 12 19, Jason Gunthorpe wrote:
>On Tue, Nov 12, 2019 at 01:31:09PM -0700, Jerry Snitselaar wrote:
>> On Tue, Nov 12, 2019 at 1:28 PM Jerry Snitselaar <jsnitsel@redhat.com> wrote:
>> >
>> > On Tue, Nov 12, 2019 at 1:26 PM Jason Gunthorpe <jgg@ziepe.ca> wrote:
>> > >
>> > > On Tue, Nov 12, 2019 at 01:23:33PM -0700, Jerry Snitselaar wrote:
>> > > > On Tue, Nov 12, 2019 at 1:03 PM Jarkko Sakkinen
>> > > > <jarkko.sakkinen@linux.intel.com> wrote:
>> > > > >
>> > > > > On Mon, Nov 11, 2019 at 04:34:18PM -0700, Jerry Snitselaar wrote:
>> > > > > > With power gating moved out of the tpm_transmit code we need
>> > > > > > to power on the TPM prior to calling tpm_get_timeouts.
>> > > > > >
>> > > > > > Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
>> > > > > > Cc: Peter Huewe <peterhuewe@gmx.de>
>> > > > > > Cc: Jason Gunthorpe <jgg@ziepe.ca>
>> > > > > > Cc: linux-kernel@vger.kernel.org
>> > > > > > Cc: linux-stable@vger.kernel.org
>> > > > > > Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()")
>> > > > > > Reported-by: Christian Bundy <christianbundy@fraction.io>
>> > > > > > Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
>> > > > > >  drivers/char/tpm/tpm_tis_core.c | 3 ++-
>> > > > > >  1 file changed, 2 insertions(+), 1 deletion(-)
>> > > > > >
>> > > > > > diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
>> > > > > > index 270f43acbb77..cb101cec8f8b 100644
>> > > > > > +++ b/drivers/char/tpm/tpm_tis_core.c
>> > > > > > @@ -974,13 +974,14 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
>> > > > > >                * to make sure it works. May as well use that command to set the
>> > > > > >                * proper timeouts for the driver.
>> > > > > >                */
>> > > > > > +             tpm_chip_start(chip);
>> > > > > >               if (tpm_get_timeouts(chip)) {
>> > > > > >                       dev_err(dev, "Could not get TPM timeouts and durations\n");
>> > > > > >                       rc = -ENODEV;
>> > > > > > +                     tpm_stop_chip(chip);
>> > > > > >                       goto out_err;
>> > > > > >               }
>> > > > >
>> > > > > Couldn't this call just be removed?
>> > > > >
>> > > > > /Jarkko
>> > > > >
>> > > >
>> > > > Probably. It will eventually get called when tpm_chip_register
>> > > > happens. I don't know what the reason was for trying it prior to the
>> > > > irq probe.
>> > >
>> > > At least tis once needed the timeouts before registration because it
>> > > was issuing TPM commands to complete its setup.
>> > >
>> > > If timeouts have not been set then no TPM command should be executed.
>> >
>> > Would it function with the timeout values set at the beginning of
>> > tpm_tis_core_init (max values)?
>>
>> I guess that doesn't set the duration values though
>
>There is no reason to use anything but the correct timeouts, as read
>from the device.
>
>Jason
>

Should there be a check in tpm1_get_timeouts and tpm2_get_timeouts:

	if (chip->flags & TPM_CHIP_FLAG_HAVE_TIMEOUTS)
		return 0;

to skip going through it again in the auto startup code if it was
already called and set?


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v3] tpm_tis: turn on TPM before calling tpm_get_timeouts
       [not found] <20191111233418.17676-1-jsnitsel@redhat.com>
  2019-11-12  0:03 ` [PATCH v2] tpm_tis: turn on TPM before calling tpm_get_timeouts Jerry Snitselaar
       [not found] ` <20191112200328.GA11213@linux.intel.com>
@ 2019-11-13  0:02 ` Jerry Snitselaar
  2019-11-14 16:59   ` Jarkko Sakkinen
  2 siblings, 1 reply; 4+ messages in thread
From: Jerry Snitselaar @ 2019-11-13  0:02 UTC (permalink / raw)
  To: linux-integrity
  Cc: Jerry Snitselaar, Jarkko Sakkinen, Peter Huewe, Jason Gunthorpe,
	linux-kernel, stable, Christian Bundy

With power gating moved out of the tpm_transmit code we need
to power on the TPM prior to calling tpm_get_timeouts.

Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Cc: Peter Huewe <peterhuewe@gmx.de>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: linux-kernel@vger.kernel.org
Cc: stable@vger.kernel.org
Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()")
Reported-by: Christian Bundy <christianbundy@fraction.io>
Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
---
v3: call tpm_chip_stop in error path
v2: fix stable cc to correct address

 drivers/char/tpm/tpm_tis_core.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index 270f43acbb77..806acc666696 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -974,13 +974,14 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
 		 * to make sure it works. May as well use that command to set the
 		 * proper timeouts for the driver.
 		 */
+		tpm_chip_start(chip);
 		if (tpm_get_timeouts(chip)) {
 			dev_err(dev, "Could not get TPM timeouts and durations\n");
 			rc = -ENODEV;
+			tpm_chip_stop(chip);
 			goto out_err;
 		}
 
-		tpm_chip_start(chip);
 		chip->flags |= TPM_CHIP_FLAG_IRQ;
 		if (irq) {
 			tpm_tis_probe_irq_single(chip, intmask, IRQF_SHARED,
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] tpm_tis: turn on TPM before calling tpm_get_timeouts
  2019-11-13  0:02 ` [PATCH v3] " Jerry Snitselaar
@ 2019-11-14 16:59   ` Jarkko Sakkinen
  0 siblings, 0 replies; 4+ messages in thread
From: Jarkko Sakkinen @ 2019-11-14 16:59 UTC (permalink / raw)
  To: Jerry Snitselaar
  Cc: linux-integrity, Peter Huewe, Jason Gunthorpe, linux-kernel,
	stable, Christian Bundy

On Tue, Nov 12, 2019 at 05:02:43PM -0700, Jerry Snitselaar wrote:
> With power gating moved out of the tpm_transmit code we need
> to power on the TPM prior to calling tpm_get_timeouts.
> 
> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> Cc: Peter Huewe <peterhuewe@gmx.de>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: linux-kernel@vger.kernel.org
> Cc: stable@vger.kernel.org
> Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of tpm_transmit()")
> Reported-by: Christian Bundy <christianbundy@fraction.io>
> Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
> ---
> v3: call tpm_chip_stop in error path
> v2: fix stable cc to correct address
> 
>  drivers/char/tpm/tpm_tis_core.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index 270f43acbb77..806acc666696 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -974,13 +974,14 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
>  		 * to make sure it works. May as well use that command to set the
>  		 * proper timeouts for the driver.
>  		 */
> +		tpm_chip_start(chip);
>  		if (tpm_get_timeouts(chip)) {
>  			dev_err(dev, "Could not get TPM timeouts and durations\n");
>  			rc = -ENODEV;
> +			tpm_chip_stop(chip);
>  			goto out_err;
>  		}
>  
> -		tpm_chip_start(chip);

As the commit describes the call is not there for any other reason than
pinging the TPM.

/Jarkko

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-11-14 16:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20191111233418.17676-1-jsnitsel@redhat.com>
2019-11-12  0:03 ` [PATCH v2] tpm_tis: turn on TPM before calling tpm_get_timeouts Jerry Snitselaar
     [not found] ` <20191112200328.GA11213@linux.intel.com>
     [not found]   ` <CALzcddtMiSzhgZv5R6xqb1Amyk7cdY4mJdYDS86KRxH4wR_EGA@mail.gmail.com>
     [not found]     ` <20191112202623.GB5584@ziepe.ca>
     [not found]       ` <CALzcddtse-4bKWaA0+ns-gVKGyQzMrYWS4n1rFpbbhKLb83z7g@mail.gmail.com>
     [not found]         ` <CALzcddv2aLQ1krYFeNtWNOxyF3aSD0-p3j_p3CgS2Vx-__sQPA@mail.gmail.com>
     [not found]           ` <20191112204623.GG5584@ziepe.ca>
2019-11-12 21:14             ` [PATCH] " Jerry Snitselaar
2019-11-13  0:02 ` [PATCH v3] " Jerry Snitselaar
2019-11-14 16:59   ` Jarkko Sakkinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).