From: Nish Aravamudan <nish.aravamudan@gmail.com>
To: Greg K-H <greg@kroah.com>
Cc: linux-kernel@vger.kernel.org, kjhall@us.ibm.com
Subject: Re: [PATCH] Add TPM hardware enablement driver
Date: Thu, 10 Mar 2005 09:35:36 -0800 [thread overview]
Message-ID: <29495f1d05031009357408420e@mail.gmail.com> (raw)
In-Reply-To: <1110415321526@kroah.com>
On Wed, 9 Mar 2005 16:42:01 -0800, Greg KH <greg@kroah.com> wrote:
> ChangeSet 1.2035, 2005/03/09 10:12:19-08:00, kjhall@us.ibm.com
>
> [PATCH] Add TPM hardware enablement driver
<snip>
> +void tpm_time_expired(unsigned long ptr)
> +{
> + int *exp = (int *) ptr;
> + *exp = 1;
> +}
> +
> +EXPORT_SYMBOL_GPL(tpm_time_expired);
<snip>
> + down(&chip->timer_manipulation_mutex);
> + chip->time_expired = 0;
> + init_timer(&chip->device_timer);
> + chip->device_timer.function = tpm_time_expired;
> + chip->device_timer.expires = jiffies + 2 * 60 * HZ;
> + chip->device_timer.data = (unsigned long) &chip->time_expired;
> + add_timer(&chip->device_timer);
> + up(&chip->timer_manipulation_mutex);
> +
> + do {
> + u8 status = inb(chip->vendor->base + 1);
> + if ((status & chip->vendor->req_complete_mask) ==
> + chip->vendor->req_complete_val) {
> + down(&chip->timer_manipulation_mutex);
> + del_singleshot_timer_sync(&chip->device_timer);
> + up(&chip->timer_manipulation_mutex);
> + goto out_recv;
> + }
> + set_current_state(TASK_UNINTERRUPTIBLE);
> + schedule_timeout(TPM_TIMEOUT);
> + rmb();
> + } while (!chip->time_expired);
<snip>
It seems like this use of schedule_timeout() and the others are a bit
excessive. In this case, a timer is set to go off in 2 hours or so,
with tpm_time_expired() as the callback. tpm_time_expired(), it seems
just takes data and sets it to 1, which in this case is
chip->time_expired (and is similar in the other cases). We then loop
while (!chip->time_expired), which to me means until
chip->device_timer goes off, checking if the request is complete every
5 milliseconds. The chip->device_timer doesn't really do anything,
does it? It just guarantees a maximum time (of 2 hours). Couldn't the
same be achieved with (please excuse the lack of tabs, any real
patches I submit will have them):
unsigned long stop = jiffies + 2 * 60 * HZ;
do {
u8 status = inb(chip->vendor->base + 1);
if ((status & chip->vendor->req_complete_mask ==
chip->vendor->req_complete_val)
goto out_recv;
msleep(TPM_TIMEOUT); // TPM_TIMEOUT could now be 5 ms
rmb();
} while (time_before(jiffies, stop);
I think similar replacements would work in the other locations.
If people agree, I will send patches.
Thanks,
Nish
next prev parent reply other threads:[~2005-03-10 17:41 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-10 0:41 [BK PATCH] Add TPM driver support for 2.6.11 Greg KH
2005-03-10 0:42 ` [PATCH] Add TPM hardware enablement driver Greg KH
2005-03-10 0:42 ` [PATCH] tpm: fix cause of SMP stack traces Greg KH
2005-03-10 0:42 ` [PATCH] tpm_msc-build-fix Greg KH
2005-03-10 0:42 ` [PATCH] tpm_atmel build fix Greg KH
2005-03-10 0:42 ` [PATCH] tpm-build-fix Greg KH
2005-03-10 3:51 ` [PATCH] Add TPM hardware enablement driver Jeff Garzik
2005-03-15 23:59 ` Kylene Jo Hall
2005-03-17 0:32 ` Kylene Hall
2005-03-23 2:02 ` Jeff Garzik
2005-03-24 6:39 ` Greg KH
2005-03-24 21:04 ` Jeff Garzik
2005-03-24 21:33 ` Greg KH
2005-04-05 16:14 ` Kylene Jo Hall
2005-04-08 20:07 ` Kylene Jo Hall
2005-04-09 8:31 ` Ian Campbell
2005-04-27 22:15 ` [PATCH: 1 of 12] Fix concerns with TPM driver -- use enums Kylene Hall
2005-04-27 22:23 ` Greg KH
2005-04-27 22:15 ` [PATCH: 2 of 12 ] Fix TPM driver -- address missing const defs Kylene Hall
2005-04-27 22:16 ` [PATCH: 3 of 12] Fix TPM driver --remove unnecessary module stuff Kylene Hall
2005-04-27 22:16 ` [PATCH 4 of 12] Fix TPM driver -- read return code issue Kylene Hall
2005-04-27 22:16 ` [PATCH 5 of 12] Fix TPM driver -- large stack objects Kylene Hall
2005-04-27 22:18 ` [PATCH 6 of 12] Fix TPM driver -- how timer is initialized Kylene Hall
2005-04-27 22:18 ` [PATCH 7 of 12] Fix TPM driver -- use to_pci_dev Kylene Hall
2005-03-10 17:35 ` Nish Aravamudan [this message]
2005-03-10 18:19 ` [PATCH] Add TPM hardware enablement driver Nish Aravamudan
2005-03-10 19:09 ` [PATCH] char/tpm: use msleep(), clean-up timers, fix typo Nishanth Aravamudan
2005-03-10 21:04 ` [PATCH] Add TPM hardware enablement driver Alexey Dobriyan
2005-04-27 22:18 ` [PATCH 9 of 12] Fix TPM driver -- remove unnecessary __force Kylene Hall
2005-03-11 18:18 ` [PATCH] char/tpm: use msleep(), clean-up timers, fix typo Nishanth Aravamudan
2005-04-15 20:23 ` Kylene Hall
2005-04-15 20:44 ` Nish Aravamudan
2005-04-15 21:04 ` Greg KH
2005-04-15 21:47 ` Nish Aravamudan
2005-04-15 21:47 ` Nish Aravamudan
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=29495f1d05031009357408420e@mail.gmail.com \
--to=nish.aravamudan@gmail.com \
--cc=greg@kroah.com \
--cc=kjhall@us.ibm.com \
--cc=linux-kernel@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 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.