All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: Alexander.Steffen@infineon.com
Cc: nayna@linux.vnet.ibm.com, linux-integrity@vger.kernel.org,
	zohar@linux.vnet.ibm.com, linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org, peterhuewe@gmx.de,
	tpmdd@selhorst.net, jgunthorpe@obsidianresearch.com,
	patrickc@us.ibm.com
Subject: Re: [PATCH v4 1/4] tpm: move wait_for_tpm_stat() to respective driver files
Date: Fri, 20 Oct 2017 11:56:45 +0300	[thread overview]
Message-ID: <20171020085645.q43e62d2vmspatm2@linux.intel.com> (raw)
In-Reply-To: <d2a4fca3aee340dcb5de88a69814bd90@infineon.com>

On Thu, Oct 19, 2017 at 05:00:29PM +0000, Alexander.Steffen@infineon.com wrote:
> > On Tue, Oct 17, 2017 at 04:32:29PM -0400, Nayna Jain wrote:
> > > The function wait_for_tpm_stat() is currently defined in
> > > tpm-interface file. It is a hardware specific function used
> > > only by tpm_tis and xen-tpmfront, so it is removed from
> > > tpm-interface.c and defined in respective driver files.
> > >
> > > Suggested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> > > Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
> > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> > > ---
> > >  drivers/char/tpm/tpm-interface.c | 60 ----------------------------------------
> > >  drivers/char/tpm/tpm.h           |  2 --
> > >  drivers/char/tpm/tpm_tis_core.c  | 60
> > ++++++++++++++++++++++++++++++++++++++++
> > >  drivers/char/tpm/xen-tpmfront.c  | 60
> > ++++++++++++++++++++++++++++++++++++++++
> > >  4 files changed, 120 insertions(+), 62 deletions(-)
> > >
> > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-
> > interface.c
> > > index 1d6729be4cd6..313f7618d569 100644
> > > --- a/drivers/char/tpm/tpm-interface.c
> > > +++ b/drivers/char/tpm/tpm-interface.c
> > > @@ -1035,66 +1035,6 @@ int tpm_send(u32 chip_num, void *cmd, size_t
> > buflen)
> > >  }
> > >  EXPORT_SYMBOL_GPL(tpm_send);
> > >
> > > -static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> > > -					bool check_cancel, bool *canceled)
> > > -{
> > > -	u8 status = chip->ops->status(chip);
> > > -
> > > -	*canceled = false;
> > > -	if ((status & mask) == mask)
> > > -		return true;
> > > -	if (check_cancel && chip->ops->req_canceled(chip, status)) {
> > > -		*canceled = true;
> > > -		return true;
> > > -	}
> > > -	return false;
> > > -}
> > > -
> > > -int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask, unsigned long
> > timeout,
> > > -		      wait_queue_head_t *queue, bool check_cancel)
> > > -{
> > > -	unsigned long stop;
> > > -	long rc;
> > > -	u8 status;
> > > -	bool canceled = false;
> > > -
> > > -	/* check current status */
> > > -	status = chip->ops->status(chip);
> > > -	if ((status & mask) == mask)
> > > -		return 0;
> > > -
> > > -	stop = jiffies + timeout;
> > > -
> > > -	if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> > > -again:
> > > -		timeout = stop - jiffies;
> > > -		if ((long)timeout <= 0)
> > > -			return -ETIME;
> > > -		rc = wait_event_interruptible_timeout(*queue,
> > > -			wait_for_tpm_stat_cond(chip, mask, check_cancel,
> > > -					       &canceled),
> > > -			timeout);
> > > -		if (rc > 0) {
> > > -			if (canceled)
> > > -				return -ECANCELED;
> > > -			return 0;
> > > -		}
> > > -		if (rc == -ERESTARTSYS && freezing(current)) {
> > > -			clear_thread_flag(TIF_SIGPENDING);
> > > -			goto again;
> > > -		}
> > > -	} else {
> > > -		do {
> > > -			tpm_msleep(TPM_TIMEOUT);
> > > -			status = chip->ops->status(chip);
> > > -			if ((status & mask) == mask)
> > > -				return 0;
> > > -		} while (time_before(jiffies, stop));
> > > -	}
> > > -	return -ETIME;
> > > -}
> > > -EXPORT_SYMBOL_GPL(wait_for_tpm_stat);
> > > -
> > >  #define TPM_ORD_SAVESTATE 152
> > >  #define SAVESTATE_RESULT_SIZE 10
> > >
> > > diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
> > > index 2d5466a72e40..4fc83ac7abeb 100644
> > > --- a/drivers/char/tpm/tpm.h
> > > +++ b/drivers/char/tpm/tpm.h
> > > @@ -525,8 +525,6 @@ int tpm_do_selftest(struct tpm_chip *chip);
> > >  unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip, u32
> > ordinal);
> > >  int tpm_pm_suspend(struct device *dev);
> > >  int tpm_pm_resume(struct device *dev);
> > > -int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask, unsigned long
> > timeout,
> > > -		      wait_queue_head_t *queue, bool check_cancel);
> > >
> > >  static inline void tpm_msleep(unsigned int delay_msec)
> > >  {
> > > diff --git a/drivers/char/tpm/tpm_tis_core.c
> > b/drivers/char/tpm/tpm_tis_core.c
> > > index 63bc6c3b949e..b33126a35694 100644
> > > --- a/drivers/char/tpm/tpm_tis_core.c
> > > +++ b/drivers/char/tpm/tpm_tis_core.c
> > > @@ -31,6 +31,66 @@
> > >  #include "tpm.h"
> > >  #include "tpm_tis_core.h"
> > >
> > > +static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> > > +					bool check_cancel, bool *canceled)
> > > +{
> > > +	u8 status = chip->ops->status(chip);
> > > +
> > > +	*canceled = false;
> > > +	if ((status & mask) == mask)
> > > +		return true;
> > > +	if (check_cancel && chip->ops->req_canceled(chip, status)) {
> > > +		*canceled = true;
> > > +		return true;
> > > +	}
> > > +	return false;
> > > +}
> > > +
> > > +static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
> > > +		unsigned long timeout, wait_queue_head_t *queue,
> > > +		bool check_cancel)
> > > +{
> > > +	unsigned long stop;
> > > +	long rc;
> > > +	u8 status;
> > > +	bool canceled = false;
> > > +
> > > +	/* check current status */
> > > +	status = chip->ops->status(chip);
> > > +	if ((status & mask) == mask)
> > > +		return 0;
> > > +
> > > +	stop = jiffies + timeout;
> > > +
> > > +	if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> > > +again:
> > > +		timeout = stop - jiffies;
> > > +		if ((long)timeout <= 0)
> > > +			return -ETIME;
> > > +		rc = wait_event_interruptible_timeout(*queue,
> > > +			wait_for_tpm_stat_cond(chip, mask, check_cancel,
> > > +					       &canceled),
> > > +			timeout);
> > > +		if (rc > 0) {
> > > +			if (canceled)
> > > +				return -ECANCELED;
> > > +			return 0;
> > > +		}
> > > +		if (rc == -ERESTARTSYS && freezing(current)) {
> > > +			clear_thread_flag(TIF_SIGPENDING);
> > > +			goto again;
> > > +		}
> > > +	} else {
> > > +		do {
> > > +			tpm_msleep(TPM_TIMEOUT);
> > > +			status = chip->ops->status(chip);
> > > +			if ((status & mask) == mask)
> > > +				return 0;
> > > +		} while (time_before(jiffies, stop));
> > > +	}
> > > +	return -ETIME;
> > > +}
> > > +
> > >  /* Before we attempt to access the TPM we must see that the valid bit is
> > set.
> > >   * The specification says that this bit is 0 at reset and remains 0 until the
> > >   * 'TPM has gone through its self test and initialization and has established
> > > diff --git a/drivers/char/tpm/xen-tpmfront.c b/drivers/char/tpm/xen-
> > tpmfront.c
> > > index 656e8af95d52..d20a0a9ded27 100644
> > > --- a/drivers/char/tpm/xen-tpmfront.c
> > > +++ b/drivers/char/tpm/xen-tpmfront.c
> > > @@ -39,6 +39,66 @@ enum status_bits {
> > >  	VTPM_STATUS_CANCELED = 0x8,
> > >  };
> > >
> > > +static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> > > +					bool check_cancel, bool *canceled)
> > > +{
> > > +	u8 status = chip->ops->status(chip);
> > > +
> > > +	*canceled = false;
> > > +	if ((status & mask) == mask)
> > > +		return true;
> > > +	if (check_cancel && chip->ops->req_canceled(chip, status)) {
> > > +		*canceled = true;
> > > +		return true;
> > > +	}
> > > +	return false;
> > > +}
> > > +
> > > +static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
> > > +		unsigned long timeout, wait_queue_head_t *queue,
> > > +		bool check_cancel)
> > > +{
> > > +	unsigned long stop;
> > > +	long rc;
> > > +	u8 status;
> > > +	bool canceled = false;
> > > +
> > > +	/* check current status */
> > > +	status = chip->ops->status(chip);
> > > +	if ((status & mask) == mask)
> > > +		return 0;
> > > +
> > > +	stop = jiffies + timeout;
> > > +
> > > +	if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> > > +again:
> > > +		timeout = stop - jiffies;
> > > +		if ((long)timeout <= 0)
> > > +			return -ETIME;
> > > +		rc = wait_event_interruptible_timeout(*queue,
> > > +			wait_for_tpm_stat_cond(chip, mask, check_cancel,
> > > +					       &canceled),
> > > +			timeout);
> > > +		if (rc > 0) {
> > > +			if (canceled)
> > > +				return -ECANCELED;
> > > +			return 0;
> > > +		}
> > > +		if (rc == -ERESTARTSYS && freezing(current)) {
> > > +			clear_thread_flag(TIF_SIGPENDING);
> > > +			goto again;
> > > +		}
> > > +	} else {
> > > +		do {
> > > +			tpm_msleep(TPM_TIMEOUT);
> > > +			status = chip->ops->status(chip);
> > > +			if ((status & mask) == mask)
> > > +				return 0;
> > > +		} while (time_before(jiffies, stop));
> > > +	}
> > > +	return -ETIME;
> > > +}
> > > +
> > >  static u8 vtpm_status(struct tpm_chip *chip)
> > >  {
> > >  	struct tpm_private *priv = dev_get_drvdata(&chip->dev);
> > > --
> > > 2.13.3
> > >
> > 
> > This commit caused a compiler warning because freezer.h was not included
> > to xen-tpmfront.c. I manually fixed it.
> 
> Yep, and checkpatch.pl still complains about some stuff (mostly
> whitespace) in both patch 1/4 and 2/4. When fixed patches are
> available, I can run them again through my automation.
> Alexander

I'll fix these manually (weird, I run sparse and checkpatch, must have
done some mistake).

Thank you!

/Jarkko

WARNING: multiple messages have this Message-ID (diff)
From: jarkko.sakkinen@linux.intel.com (Jarkko Sakkinen)
To: linux-security-module@vger.kernel.org
Subject: [PATCH v4 1/4] tpm: move wait_for_tpm_stat() to respective driver files
Date: Fri, 20 Oct 2017 11:56:45 +0300	[thread overview]
Message-ID: <20171020085645.q43e62d2vmspatm2@linux.intel.com> (raw)
In-Reply-To: <d2a4fca3aee340dcb5de88a69814bd90@infineon.com>

On Thu, Oct 19, 2017 at 05:00:29PM +0000, Alexander.Steffen at infineon.com wrote:
> > On Tue, Oct 17, 2017 at 04:32:29PM -0400, Nayna Jain wrote:
> > > The function wait_for_tpm_stat() is currently defined in
> > > tpm-interface file. It is a hardware specific function used
> > > only by tpm_tis and xen-tpmfront, so it is removed from
> > > tpm-interface.c and defined in respective driver files.
> > >
> > > Suggested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> > > Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
> > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> > > ---
> > >  drivers/char/tpm/tpm-interface.c | 60 ----------------------------------------
> > >  drivers/char/tpm/tpm.h           |  2 --
> > >  drivers/char/tpm/tpm_tis_core.c  | 60
> > ++++++++++++++++++++++++++++++++++++++++
> > >  drivers/char/tpm/xen-tpmfront.c  | 60
> > ++++++++++++++++++++++++++++++++++++++++
> > >  4 files changed, 120 insertions(+), 62 deletions(-)
> > >
> > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-
> > interface.c
> > > index 1d6729be4cd6..313f7618d569 100644
> > > --- a/drivers/char/tpm/tpm-interface.c
> > > +++ b/drivers/char/tpm/tpm-interface.c
> > > @@ -1035,66 +1035,6 @@ int tpm_send(u32 chip_num, void *cmd, size_t
> > buflen)
> > >  }
> > >  EXPORT_SYMBOL_GPL(tpm_send);
> > >
> > > -static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> > > -					bool check_cancel, bool *canceled)
> > > -{
> > > -	u8 status = chip->ops->status(chip);
> > > -
> > > -	*canceled = false;
> > > -	if ((status & mask) == mask)
> > > -		return true;
> > > -	if (check_cancel && chip->ops->req_canceled(chip, status)) {
> > > -		*canceled = true;
> > > -		return true;
> > > -	}
> > > -	return false;
> > > -}
> > > -
> > > -int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask, unsigned long
> > timeout,
> > > -		      wait_queue_head_t *queue, bool check_cancel)
> > > -{
> > > -	unsigned long stop;
> > > -	long rc;
> > > -	u8 status;
> > > -	bool canceled = false;
> > > -
> > > -	/* check current status */
> > > -	status = chip->ops->status(chip);
> > > -	if ((status & mask) == mask)
> > > -		return 0;
> > > -
> > > -	stop = jiffies + timeout;
> > > -
> > > -	if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> > > -again:
> > > -		timeout = stop - jiffies;
> > > -		if ((long)timeout <= 0)
> > > -			return -ETIME;
> > > -		rc = wait_event_interruptible_timeout(*queue,
> > > -			wait_for_tpm_stat_cond(chip, mask, check_cancel,
> > > -					       &canceled),
> > > -			timeout);
> > > -		if (rc > 0) {
> > > -			if (canceled)
> > > -				return -ECANCELED;
> > > -			return 0;
> > > -		}
> > > -		if (rc == -ERESTARTSYS && freezing(current)) {
> > > -			clear_thread_flag(TIF_SIGPENDING);
> > > -			goto again;
> > > -		}
> > > -	} else {
> > > -		do {
> > > -			tpm_msleep(TPM_TIMEOUT);
> > > -			status = chip->ops->status(chip);
> > > -			if ((status & mask) == mask)
> > > -				return 0;
> > > -		} while (time_before(jiffies, stop));
> > > -	}
> > > -	return -ETIME;
> > > -}
> > > -EXPORT_SYMBOL_GPL(wait_for_tpm_stat);
> > > -
> > >  #define TPM_ORD_SAVESTATE 152
> > >  #define SAVESTATE_RESULT_SIZE 10
> > >
> > > diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
> > > index 2d5466a72e40..4fc83ac7abeb 100644
> > > --- a/drivers/char/tpm/tpm.h
> > > +++ b/drivers/char/tpm/tpm.h
> > > @@ -525,8 +525,6 @@ int tpm_do_selftest(struct tpm_chip *chip);
> > >  unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip, u32
> > ordinal);
> > >  int tpm_pm_suspend(struct device *dev);
> > >  int tpm_pm_resume(struct device *dev);
> > > -int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask, unsigned long
> > timeout,
> > > -		      wait_queue_head_t *queue, bool check_cancel);
> > >
> > >  static inline void tpm_msleep(unsigned int delay_msec)
> > >  {
> > > diff --git a/drivers/char/tpm/tpm_tis_core.c
> > b/drivers/char/tpm/tpm_tis_core.c
> > > index 63bc6c3b949e..b33126a35694 100644
> > > --- a/drivers/char/tpm/tpm_tis_core.c
> > > +++ b/drivers/char/tpm/tpm_tis_core.c
> > > @@ -31,6 +31,66 @@
> > >  #include "tpm.h"
> > >  #include "tpm_tis_core.h"
> > >
> > > +static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> > > +					bool check_cancel, bool *canceled)
> > > +{
> > > +	u8 status = chip->ops->status(chip);
> > > +
> > > +	*canceled = false;
> > > +	if ((status & mask) == mask)
> > > +		return true;
> > > +	if (check_cancel && chip->ops->req_canceled(chip, status)) {
> > > +		*canceled = true;
> > > +		return true;
> > > +	}
> > > +	return false;
> > > +}
> > > +
> > > +static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
> > > +		unsigned long timeout, wait_queue_head_t *queue,
> > > +		bool check_cancel)
> > > +{
> > > +	unsigned long stop;
> > > +	long rc;
> > > +	u8 status;
> > > +	bool canceled = false;
> > > +
> > > +	/* check current status */
> > > +	status = chip->ops->status(chip);
> > > +	if ((status & mask) == mask)
> > > +		return 0;
> > > +
> > > +	stop = jiffies + timeout;
> > > +
> > > +	if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> > > +again:
> > > +		timeout = stop - jiffies;
> > > +		if ((long)timeout <= 0)
> > > +			return -ETIME;
> > > +		rc = wait_event_interruptible_timeout(*queue,
> > > +			wait_for_tpm_stat_cond(chip, mask, check_cancel,
> > > +					       &canceled),
> > > +			timeout);
> > > +		if (rc > 0) {
> > > +			if (canceled)
> > > +				return -ECANCELED;
> > > +			return 0;
> > > +		}
> > > +		if (rc == -ERESTARTSYS && freezing(current)) {
> > > +			clear_thread_flag(TIF_SIGPENDING);
> > > +			goto again;
> > > +		}
> > > +	} else {
> > > +		do {
> > > +			tpm_msleep(TPM_TIMEOUT);
> > > +			status = chip->ops->status(chip);
> > > +			if ((status & mask) == mask)
> > > +				return 0;
> > > +		} while (time_before(jiffies, stop));
> > > +	}
> > > +	return -ETIME;
> > > +}
> > > +
> > >  /* Before we attempt to access the TPM we must see that the valid bit is
> > set.
> > >   * The specification says that this bit is 0 at reset and remains 0 until the
> > >   * 'TPM has gone through its self test and initialization and has established
> > > diff --git a/drivers/char/tpm/xen-tpmfront.c b/drivers/char/tpm/xen-
> > tpmfront.c
> > > index 656e8af95d52..d20a0a9ded27 100644
> > > --- a/drivers/char/tpm/xen-tpmfront.c
> > > +++ b/drivers/char/tpm/xen-tpmfront.c
> > > @@ -39,6 +39,66 @@ enum status_bits {
> > >  	VTPM_STATUS_CANCELED = 0x8,
> > >  };
> > >
> > > +static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> > > +					bool check_cancel, bool *canceled)
> > > +{
> > > +	u8 status = chip->ops->status(chip);
> > > +
> > > +	*canceled = false;
> > > +	if ((status & mask) == mask)
> > > +		return true;
> > > +	if (check_cancel && chip->ops->req_canceled(chip, status)) {
> > > +		*canceled = true;
> > > +		return true;
> > > +	}
> > > +	return false;
> > > +}
> > > +
> > > +static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
> > > +		unsigned long timeout, wait_queue_head_t *queue,
> > > +		bool check_cancel)
> > > +{
> > > +	unsigned long stop;
> > > +	long rc;
> > > +	u8 status;
> > > +	bool canceled = false;
> > > +
> > > +	/* check current status */
> > > +	status = chip->ops->status(chip);
> > > +	if ((status & mask) == mask)
> > > +		return 0;
> > > +
> > > +	stop = jiffies + timeout;
> > > +
> > > +	if (chip->flags & TPM_CHIP_FLAG_IRQ) {
> > > +again:
> > > +		timeout = stop - jiffies;
> > > +		if ((long)timeout <= 0)
> > > +			return -ETIME;
> > > +		rc = wait_event_interruptible_timeout(*queue,
> > > +			wait_for_tpm_stat_cond(chip, mask, check_cancel,
> > > +					       &canceled),
> > > +			timeout);
> > > +		if (rc > 0) {
> > > +			if (canceled)
> > > +				return -ECANCELED;
> > > +			return 0;
> > > +		}
> > > +		if (rc == -ERESTARTSYS && freezing(current)) {
> > > +			clear_thread_flag(TIF_SIGPENDING);
> > > +			goto again;
> > > +		}
> > > +	} else {
> > > +		do {
> > > +			tpm_msleep(TPM_TIMEOUT);
> > > +			status = chip->ops->status(chip);
> > > +			if ((status & mask) == mask)
> > > +				return 0;
> > > +		} while (time_before(jiffies, stop));
> > > +	}
> > > +	return -ETIME;
> > > +}
> > > +
> > >  static u8 vtpm_status(struct tpm_chip *chip)
> > >  {
> > >  	struct tpm_private *priv = dev_get_drvdata(&chip->dev);
> > > --
> > > 2.13.3
> > >
> > 
> > This commit caused a compiler warning because freezer.h was not included
> > to xen-tpmfront.c. I manually fixed it.
> 
> Yep, and checkpatch.pl still complains about some stuff (mostly
> whitespace) in both patch 1/4 and 2/4. When fixed patches are
> available, I can run them again through my automation.
> Alexander

I'll fix these manually (weird, I run sparse and checkpatch, must have
done some mistake).

Thank you!

/Jarkko
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2017-10-20  8:56 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-17 20:32 [PATCH v4 0/4] additional TPM performance improvements Nayna Jain
2017-10-17 20:32 ` Nayna Jain
2017-10-17 20:32 ` [PATCH v4 1/4] tpm: move wait_for_tpm_stat() to respective driver files Nayna Jain
2017-10-17 20:32   ` Nayna Jain
2017-10-19 14:21   ` Jarkko Sakkinen
2017-10-19 14:21     ` Jarkko Sakkinen
2017-10-19 17:00     ` Alexander.Steffen
2017-10-19 17:00       ` Alexander.Steffen at infineon.com
2017-10-20  8:56       ` Jarkko Sakkinen [this message]
2017-10-20  8:56         ` Jarkko Sakkinen
2017-10-23 13:32         ` Nayna Jain
2017-10-23 13:32           ` Nayna Jain
2017-10-23 13:32           ` Nayna Jain
2017-10-24 13:45           ` Jarkko Sakkinen
2017-10-24 13:45             ` Jarkko Sakkinen
2017-10-17 20:32 ` [PATCH v4 2/4] tpm: ignore burstcount to improve tpm_tis send() performance Nayna Jain
2017-10-17 20:32   ` Nayna Jain
2017-10-18 15:25   ` Jarkko Sakkinen
2017-10-18 15:25     ` Jarkko Sakkinen
2017-10-19 14:23   ` Jarkko Sakkinen
2017-10-19 14:23     ` Jarkko Sakkinen
2017-10-20 14:42   ` Alexander.Steffen
2017-10-20 14:42     ` Alexander.Steffen at infineon.com
2017-10-20 18:02     ` Ken Goldman
2017-10-20 18:02       ` Ken Goldman
2017-10-23  2:57     ` Jarkko Sakkinen
2017-10-23  2:57       ` Jarkko Sakkinen
2017-11-07 18:29     ` Nayna Jain
2017-11-07 18:29       ` Nayna Jain
2017-11-07 18:29       ` Nayna Jain
2017-11-08 11:32       ` Alexander.Steffen
2017-11-08 11:32         ` Alexander.Steffen at infineon.com
2017-11-16 14:34       ` Alexander.Steffen
2017-11-16 14:34         ` Alexander.Steffen at infineon.com
2017-11-22  6:52       ` Alexander.Steffen
2017-11-22  6:52         ` Alexander.Steffen at infineon.com
2017-11-23 14:47         ` Nayna Jain
2017-11-23 14:47           ` Nayna Jain
2017-11-23 16:19           ` Alexander.Steffen
2017-11-23 16:19             ` Alexander.Steffen at infineon.com
2017-11-26 15:22           ` Jarkko Sakkinen
2017-11-26 15:22             ` Jarkko Sakkinen
2017-11-26 16:37             ` Mimi Zohar
2017-11-26 16:37               ` Mimi Zohar
2017-11-27  7:08               ` Leendert van Doorn
2017-11-27  7:08                 ` Leendert van Doorn
2017-11-27  7:08                 ` Leendert van Doorn
2017-11-27 13:22                 ` Mimi Zohar
2017-11-27 13:22                   ` Mimi Zohar
2017-11-27 13:22                   ` Mimi Zohar
2017-11-28 20:19                 ` Jarkko Sakkinen
2017-11-28 20:19                   ` Jarkko Sakkinen
2017-11-28 20:19                   ` Jarkko Sakkinen
2017-10-17 20:32 ` [PATCH v4 3/4] tpm: reduce tpm polling delay in tpm_tis_core Nayna Jain
2017-10-17 20:32   ` Nayna Jain
2017-10-18 15:24   ` Jarkko Sakkinen
2017-10-18 15:24     ` Jarkko Sakkinen
2017-10-19 14:22     ` Jarkko Sakkinen
2017-10-19 14:22       ` Jarkko Sakkinen
2017-10-17 20:32 ` [PATCH v4 4/4] tpm: use tpm_msleep() value as max delay Nayna Jain
2017-10-17 20:32   ` Nayna Jain
2017-10-19 14:22   ` Jarkko Sakkinen
2017-10-19 14:22     ` Jarkko Sakkinen

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=20171020085645.q43e62d2vmspatm2@linux.intel.com \
    --to=jarkko.sakkinen@linux.intel.com \
    --cc=Alexander.Steffen@infineon.com \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=nayna@linux.vnet.ibm.com \
    --cc=patrickc@us.ibm.com \
    --cc=peterhuewe@gmx.de \
    --cc=tpmdd@selhorst.net \
    --cc=zohar@linux.vnet.ibm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.