lkml.org 
[lkml]   [2022]   [Nov]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v10 14/14] tpm, tpm_tis: Enable interrupt test
    Date
    From: Lino Sanfilippo <l.sanfilippo@kunbus.com>

    The test for interrupts in tpm_tis_send() is skipped if the flag
    TPM_CHIP_FLAG_IRQ is not set. Since the current code never sets the flag
    initially the test is never executed.

    Fix this by setting the flag in tpm_tis_gen_interrupt() right after
    interrupts have been enabled and before the test is executed.

    Signed-off-by: Lino Sanfilippo <l.sanfilippo@kunbus.com>
    Tested-by: Michael Niewöhner <linux@mniewoehner.de>
    Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
    ---
    drivers/char/tpm/tpm_tis_core.c | 10 ++++++++--
    1 file changed, 8 insertions(+), 2 deletions(-)

    diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
    index b97cb325ccb7..602ca4bb8e2f 100644
    --- a/drivers/char/tpm/tpm_tis_core.c
    +++ b/drivers/char/tpm/tpm_tis_core.c
    @@ -787,11 +787,17 @@ static void tpm_tis_gen_interrupt(struct tpm_chip *chip)
    const char *desc = "attempting to generate an interrupt";
    u32 cap2;
    cap_t cap;
    + int ret;
    +
    + chip->flags |= TPM_CHIP_FLAG_IRQ;

    if (chip->flags & TPM_CHIP_FLAG_TPM2)
    - tpm2_get_tpm_pt(chip, 0x100, &cap2, desc);
    + ret = tpm2_get_tpm_pt(chip, 0x100, &cap2, desc);
    else
    - tpm1_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, desc, 0);
    + ret = tpm1_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, desc, 0);
    +
    + if (ret)
    + chip->flags &= ~TPM_CHIP_FLAG_IRQ;
    }

    /* Register the IRQ and issue a command that will cause an interrupt. If an
    --
    2.36.1
    \
     
     \ /
      Last update: 2022-11-20 14:33    [W:2.271 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site