lkml.org 
[lkml]   [2009]   [Sep]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 11/45] TPM: Fixup boot probe timeout for tpm_tis driver
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>

    commit ec57935837a78f9661125b08a5d08b697568e040 upstream.

    When probing the device in tpm_tis_init the call request_locality
    uses timeout_a, which wasn't being initalized until after
    request_locality. This results in request_locality falsely timing
    out if the chip is still starting. Move the initialization to before
    request_locality.

    This probably only matters for embedded cases (ie mine), a BIOS likely
    gets the TPM into a state where this code path isn't necessary.

    Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Acked-by: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
    Signed-off-by: James Morris <jmorris@namei.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/char/tpm/tpm_tis.c | 12 ++++++------
    1 file changed, 6 insertions(+), 6 deletions(-)

    --- a/drivers/char/tpm/tpm_tis.c
    +++ b/drivers/char/tpm/tpm_tis.c
    @@ -450,6 +450,12 @@ static int tpm_tis_init(struct device *d
    goto out_err;
    }

    + /* Default timeouts */
    + chip->vendor.timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
    + chip->vendor.timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
    + chip->vendor.timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
    + chip->vendor.timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
    +
    if (request_locality(chip, 0) != 0) {
    rc = -ENODEV;
    goto out_err;
    @@ -457,12 +463,6 @@ static int tpm_tis_init(struct device *d

    vendor = ioread32(chip->vendor.iobase + TPM_DID_VID(0));

    - /* Default timeouts */
    - chip->vendor.timeout_a = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
    - chip->vendor.timeout_b = msecs_to_jiffies(TIS_LONG_TIMEOUT);
    - chip->vendor.timeout_c = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
    - chip->vendor.timeout_d = msecs_to_jiffies(TIS_SHORT_TIMEOUT);
    -
    dev_info(dev,
    "1.2 TPM (device-id 0x%X, rev-id %d)\n",
    vendor >> 16, ioread8(chip->vendor.iobase + TPM_RID(0)));



    \
     
     \ /
      Last update: 2009-09-17 01:15    [W:0.037 / U:0.064 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site