]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blame - src/patches/suse-2.6.27.31/patches.drivers/tpm-correct-timeouts.patch
Move xen patchset to new version's subdir.
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.drivers / tpm-correct-timeouts.patch
CommitLineData
00e5a55c
BS
1From 9e5b1b12226d5a501fbc6706ca090e00d18a01ad Mon Sep 17 00:00:00 2001
2From: Marcin Obara <marcin_obara@users.sourceforge.net>
3Date: Wed, 15 Oct 2008 22:04:34 -0700
4Subject: [PATCH] tpm: correct tpm timeouts to jiffies conversion
5Patch-mainline: 2.6.28
6References: bnc#425747 FATE304221
7
8This patch fixes timeouts conversion to jiffies, by replacing
9msecs_to_jiffies() calls with usecs_to_jiffies(). According to TCG TPM
10Specification Version 1.2 Revision 103 (pages 166, 167) TPM timeouts and
11durations are returned in microseconds (usec) not in miliseconds (msec).
12
13This fixes a long hang while loading TPM driver, if TPM chip starts in
14"Idle" state instead of "Ready" state. Without this patch - 'modprobe'
15may hang for 30 seconds or more.
16
17Signed-off-by: Marcin Obara <marcin_obara@users.sourceforge.net>
18Cc: Marcel Selhorst <tpm@selhorst.net>
19Cc: Kylene Jo Hall <kjhall@us.ibm.com>
20Cc: Jiri Slaby <jirislaby@gmail.com>
21Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
22Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
23Signed-off-by: Jiri Slaby <jslaby@suse.cz>
24---
25 drivers/char/tpm/tpm.c | 14 +++++++-------
26 1 files changed, 7 insertions(+), 7 deletions(-)
27
28diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
29index 1fee703..6b5a0e0 100644
30--- a/drivers/char/tpm/tpm.c
31+++ b/drivers/char/tpm/tpm.c
32@@ -525,19 +525,19 @@ void tpm_get_timeouts(struct tpm_chip *chip)
33 timeout =
34 be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_1_IDX)));
35 if (timeout)
36- chip->vendor.timeout_a = msecs_to_jiffies(timeout);
37+ chip->vendor.timeout_a = usecs_to_jiffies(timeout);
38 timeout =
39 be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_2_IDX)));
40 if (timeout)
41- chip->vendor.timeout_b = msecs_to_jiffies(timeout);
42+ chip->vendor.timeout_b = usecs_to_jiffies(timeout);
43 timeout =
44 be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_3_IDX)));
45 if (timeout)
46- chip->vendor.timeout_c = msecs_to_jiffies(timeout);
47+ chip->vendor.timeout_c = usecs_to_jiffies(timeout);
48 timeout =
49 be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_4_IDX)));
50 if (timeout)
51- chip->vendor.timeout_d = msecs_to_jiffies(timeout);
52+ chip->vendor.timeout_d = usecs_to_jiffies(timeout);
53
54 duration:
55 memcpy(data, tpm_cap, sizeof(tpm_cap));
56@@ -554,15 +554,15 @@ duration:
57 return;
58
59 chip->vendor.duration[TPM_SHORT] =
60- msecs_to_jiffies(be32_to_cpu
61+ usecs_to_jiffies(be32_to_cpu
62 (*((__be32 *) (data +
63 TPM_GET_CAP_RET_UINT32_1_IDX))));
64 chip->vendor.duration[TPM_MEDIUM] =
65- msecs_to_jiffies(be32_to_cpu
66+ usecs_to_jiffies(be32_to_cpu
67 (*((__be32 *) (data +
68 TPM_GET_CAP_RET_UINT32_2_IDX))));
69 chip->vendor.duration[TPM_LONG] =
70- msecs_to_jiffies(be32_to_cpu
71+ usecs_to_jiffies(be32_to_cpu
72 (*((__be32 *) (data +
73 TPM_GET_CAP_RET_UINT32_3_IDX))));
74 }
75--
761.6.0.2
77