From: Mimi Zohar <zohar@linux.vnet.ibm.com>
To: Nayna Jain <nayna@linux.vnet.ibm.com>, linux-integrity@vger.kernel.org
Cc: linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org, peterhuewe@gmx.de,
jarkko.sakkinen@linux.intel.com, tpmdd@selhorst.net,
jgunthorpe@obsidianresearch.com, patrickc@us.ibm.com
Subject: Re: [PATCH v2 1/2] tpm: reduce poll sleep time in tpm_transmit()
Date: Wed, 18 Apr 2018 11:01:48 -0400 [thread overview]
Message-ID: <1524063708.3272.301.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180417131246.434-2-nayna@linux.vnet.ibm.com>
On Tue, 2018-04-17 at 09:12 -0400, Nayna Jain wrote:
> The TPM polling code in tpm_transmit sleeps in each loop iteration for
> 5 msecs. However, the TPM might return earlier, and thus waiting for
> 5 msecs adds an unnecessary delay. This patch reduces the polling sleep
> time in tpm_transmit() from 5 msecs to 1 msecs.
>
> Additionally, this patch renames TPM_POLL_SLEEP and moves it to tpm.h as
> an enum value.
>
> After this change, performance on a TPM 1.2 with an 8 byte burstcount
> for 1000 extends improved from ~14 sec to ~10.7 sec.
>
> Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
> ---
> drivers/char/tpm/tpm-interface.c | 2 +-
> drivers/char/tpm/tpm.h | 3 ++-
> drivers/char/tpm/tpm_tis_core.c | 10 ++--------
> 3 files changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> index 9e80a953d693..a676d8ad5992 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -470,7 +470,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
> goto out;
> }
>
> - tpm_msleep(TPM_TIMEOUT);
> + tpm_msleep(TPM_TIMEOUT_POLL);
> rmb();
> } while (time_before(jiffies, stop));
>
> diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
> index f895fba4e20d..7e797377e1eb 100644
> --- a/drivers/char/tpm/tpm.h
> +++ b/drivers/char/tpm/tpm.h
> @@ -53,7 +53,8 @@ enum tpm_const {
> enum tpm_timeout {
> TPM_TIMEOUT = 5, /* msecs */
> TPM_TIMEOUT_RETRY = 100, /* msecs */
> - TPM_TIMEOUT_RANGE_US = 300 /* usecs */
> + TPM_TIMEOUT_RANGE_US = 300, /* usecs */
> + TPM_TIMEOUT_POLL = 1 /* msecs */
> };
>
> /* TPM addresses */
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index da074e3db19b..021e6b68f2db 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -31,12 +31,6 @@
> #include "tpm.h"
> #include "tpm_tis_core.h"
>
> -/* This is a polling delay to check for status and burstcount.
> - * As per ddwg input, expectation is that status check and burstcount
> - * check should return within few usecs.
> - */
> -#define TPM_POLL_SLEEP 1 /* msec */
> -
> static void tpm_tis_clkrun_enable(struct tpm_chip *chip, bool value);
>
> static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> @@ -90,7 +84,7 @@ static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
> }
> } else {
> do {
> - tpm_msleep(TPM_POLL_SLEEP);
> + tpm_msleep(TPM_TIMEOUT_POLL);
> status = chip->ops->status(chip);
> if ((status & mask) == mask)
> return 0;
> @@ -232,7 +226,7 @@ static int get_burstcount(struct tpm_chip *chip)
> burstcnt = (value >> 8) & 0xFFFF;
> if (burstcnt)
> return burstcnt;
> - tpm_msleep(TPM_POLL_SLEEP);
> + tpm_msleep(TPM_TIMEOUT_POLL);
> } while (time_before(jiffies, stop));
> return -EBUSY;
> }
WARNING: multiple messages have this Message-ID (diff)
From: zohar@linux.vnet.ibm.com (Mimi Zohar)
To: linux-security-module@vger.kernel.org
Subject: [PATCH v2 1/2] tpm: reduce poll sleep time in tpm_transmit()
Date: Wed, 18 Apr 2018 11:01:48 -0400 [thread overview]
Message-ID: <1524063708.3272.301.camel@linux.vnet.ibm.com> (raw)
In-Reply-To: <20180417131246.434-2-nayna@linux.vnet.ibm.com>
On Tue, 2018-04-17 at 09:12 -0400, Nayna Jain wrote:
> The TPM polling code in tpm_transmit sleeps in each loop iteration for
> 5 msecs. However, the TPM might return earlier, and thus waiting for
> 5 msecs adds an unnecessary delay. This patch reduces the polling sleep
> time in tpm_transmit() from 5 msecs to 1 msecs.
>
> Additionally, this patch renames TPM_POLL_SLEEP and moves it to tpm.h as
> an enum value.
>
> After this change, performance on a TPM 1.2 with an 8 byte burstcount
> for 1000 extends improved from ~14 sec to ~10.7 sec.
>
> Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
Reviewed-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
> ---
> drivers/char/tpm/tpm-interface.c | 2 +-
> drivers/char/tpm/tpm.h | 3 ++-
> drivers/char/tpm/tpm_tis_core.c | 10 ++--------
> 3 files changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> index 9e80a953d693..a676d8ad5992 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -470,7 +470,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
> goto out;
> }
>
> - tpm_msleep(TPM_TIMEOUT);
> + tpm_msleep(TPM_TIMEOUT_POLL);
> rmb();
> } while (time_before(jiffies, stop));
>
> diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
> index f895fba4e20d..7e797377e1eb 100644
> --- a/drivers/char/tpm/tpm.h
> +++ b/drivers/char/tpm/tpm.h
> @@ -53,7 +53,8 @@ enum tpm_const {
> enum tpm_timeout {
> TPM_TIMEOUT = 5, /* msecs */
> TPM_TIMEOUT_RETRY = 100, /* msecs */
> - TPM_TIMEOUT_RANGE_US = 300 /* usecs */
> + TPM_TIMEOUT_RANGE_US = 300, /* usecs */
> + TPM_TIMEOUT_POLL = 1 /* msecs */
> };
>
> /* TPM addresses */
> diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
> index da074e3db19b..021e6b68f2db 100644
> --- a/drivers/char/tpm/tpm_tis_core.c
> +++ b/drivers/char/tpm/tpm_tis_core.c
> @@ -31,12 +31,6 @@
> #include "tpm.h"
> #include "tpm_tis_core.h"
>
> -/* This is a polling delay to check for status and burstcount.
> - * As per ddwg input, expectation is that status check and burstcount
> - * check should return within few usecs.
> - */
> -#define TPM_POLL_SLEEP 1 /* msec */
> -
> static void tpm_tis_clkrun_enable(struct tpm_chip *chip, bool value);
>
> static bool wait_for_tpm_stat_cond(struct tpm_chip *chip, u8 mask,
> @@ -90,7 +84,7 @@ static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,
> }
> } else {
> do {
> - tpm_msleep(TPM_POLL_SLEEP);
> + tpm_msleep(TPM_TIMEOUT_POLL);
> status = chip->ops->status(chip);
> if ((status & mask) == mask)
> return 0;
> @@ -232,7 +226,7 @@ static int get_burstcount(struct tpm_chip *chip)
> burstcnt = (value >> 8) & 0xFFFF;
> if (burstcnt)
> return burstcnt;
> - tpm_msleep(TPM_POLL_SLEEP);
> + tpm_msleep(TPM_TIMEOUT_POLL);
> } while (time_before(jiffies, stop));
> return -EBUSY;
> }
--
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
next prev parent reply other threads:[~2018-04-18 15:02 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-17 13:12 [PATCH v2 0/2] tpm: improving granularity in poll sleep times Nayna Jain
2018-04-17 13:12 ` Nayna Jain
2018-04-17 13:12 ` [PATCH v2 1/2] tpm: reduce poll sleep time in tpm_transmit() Nayna Jain
2018-04-17 13:12 ` Nayna Jain
2018-04-18 15:01 ` Mimi Zohar [this message]
2018-04-18 15:01 ` Mimi Zohar
2018-04-24 16:27 ` Jarkko Sakkinen
2018-04-24 16:27 ` Jarkko Sakkinen
2018-04-17 13:12 ` [PATCH v2 2/2] tpm: reduce polling time to usecs for even finer granularity Nayna Jain
2018-04-17 13:12 ` Nayna Jain
2018-04-18 15:02 ` Mimi Zohar
2018-04-18 15:02 ` Mimi Zohar
2018-04-24 16:30 ` Jarkko Sakkinen
2018-04-24 16:30 ` 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=1524063708.3272.301.camel@linux.vnet.ibm.com \
--to=zohar@linux.vnet.ibm.com \
--cc=jarkko.sakkinen@linux.intel.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 \
/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.