From patchwork Wed Jun 29 23:26:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Lino Sanfilippo X-Patchwork-Id: 12900798 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7956C3F2D4 for ; Wed, 29 Jun 2022 23:27:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231416AbiF2X1m (ORCPT ); Wed, 29 Jun 2022 19:27:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231216AbiF2X1i (ORCPT ); Wed, 29 Jun 2022 19:27:38 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9900225597; Wed, 29 Jun 2022 16:27:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1656545246; bh=iNwUdaKb68n0qxpDMrgDE5swA3FwnfSS8OFF1YKICm0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=MYURaPEE07eP0U6aG73dPHNWtgGNzNW5U0k8L39BjGFDdBOkvcoUMBu6MNKiQ21EL 1phQhH0rvCFz+ihcSw4ICOmig3dA3GMpCt9/Ip/flZCHbd44iRFOGtMxXnMj+R/ZR2 9j7xM5c0PsL1OGYytIgTXEOw2ZsxshsT795FU+ao= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([46.223.3.23]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7b6l-1nzEpf0yk9-007yws; Thu, 30 Jun 2022 01:27:26 +0200 From: Lino Sanfilippo To: peterhuewe@gmx.de, jarkko@kernel.org, jgg@ziepe.ca Cc: stefanb@linux.vnet.ibm.com, linux@mniewoehner.de, linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org, l.sanfilippo@kunbus.com, LinoSanfilippo@gmx.de, lukas@wunner.de, p.rosenberger@kunbus.com Subject: [PATCH v7 08/10] tpm, tpm_tis: Request threaded interrupt handler Date: Thu, 30 Jun 2022 01:26:51 +0200 Message-Id: <20220629232653.1306735-9-LinoSanfilippo@gmx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220629232653.1306735-1-LinoSanfilippo@gmx.de> References: <20220629232653.1306735-1-LinoSanfilippo@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:+4tCCSaPV7LTvCzpch7DT6xJYWP7yrxgAb8FnoGQ3n6/FjHKRhB Ub9aP6Bm8GCGDTzGt9q+wg7OtoUJdXfIGGAkDj62pPblbV4S8lCHWC45tBzTi1F76nXNVZM OUnCbABk1CSPnovmF0gLfM9yuO82eqPvvz+t9llCBV4+76xStwsZFtLHwpq+XUMDGCPB919 wet9FfJeImK8fQEgBSx6A== X-UI-Out-Filterresults: notjunk:1;V03:K0:BoTu01VJatw=:olh2Myk9n4aF5al80hc26h 1ugJ+5HO8oMiRmwKhkUqK8A+xeE+AfWlh5GL7aq4s9UF5ZLZy2DHTjSUpCKmUDSjREdwklqvj xrASFdQPHQc+6iUXnaLaqcB8IwS4kw0IdWwBUU8LXn4f+ypcce3bgRK1vr/HUejg8+TQy77vd iXpLOG/QW4S3TvJ03IiXyoAorYugCftuPbslRfDOrX3Ywconf5rm+E3q/oS1Ky1ZfHhiL/IL4 I08csF7thlEeCIAbt05vx7jbNvcO/AcQGHIhqoI3+xOszcgTpqZIVmUYBFTnrT17z9X5bjjoT USWozb56Jl/uzyx3DioytHcCAxrQtrZC553ycqNr12k8Oj1A7vw6qpypIUzooSzqu+9t8CB0u XDxtHwwAVy/VAn+ZTbUbEPRIIf/sTq16i9DWJQvY7wgcah/9T/EYX5BxR+TesJCf6J+lU0gpL zMZFeXSjbhRtpy+t5hma/3iJQrTPcfp+ljbkS9iTbr9fNQLP10zCttZfURfSa53GYnWZOf31C 76djt+bWm8p6v62jOwFjuIcObYXupYzH+g4HaI2LxJb9VY/RGMyjg/W4RGe3HzIFW6j7GVnxZ FPbcowyTh8hDqbDGo3YX24fPvAhYakinC5F4eyGv4nsA9y46YxZiKkulcPi3iUEReYHWzyvBU YaTHTZhfI9NKa3T1TNKosskPOgcVfe9NHtA7bglYpVkVeliRuvh93UwZEATfMZB0IyfnxEDGn joVlK6/NzNWR4eIPaqOmuCJiq9MRXfG7Roj2W5R/uDYRyGxPfkiFPdtNGoBefksdNblYz2MSI 8+tdS4u/M6x3USHfvmVFk2xLY/A5Ledd4abU14IIGvlGXfTBFYj6Do/eiyD5mYD/7fb2AhMnQ N5EK19E3DKUFbEg6NkAP4HRzUP2WeB9tmL+2OWSZnq/uwiOfudWSRGOBu3OXd/s7XPpRICu2K m30PbXik8QP/n/oCDOULUDRrdrInr5MT8fo77LTiyAqgAqHzzMbf7IyjSQrOJd/NBn5nYdXG1 w8SDMZefzB/43C0OOUYHphUFY0KBGmGoSv2JtkJ49HigvkVo5g4h6zX3WEUAI4onxpnOmC6ut ushdtOawGjmmM6BUoGnvrals7aBZVcW1m8ebdU3R27xe7CEOW+D4Ziciw== Precedence: bulk List-ID: X-Mailing-List: linux-integrity@vger.kernel.org From: Lino Sanfilippo The TIS interrupt handler at least has to read and write the interrupt status register. In case of SPI both operations result in a call to tpm_tis_spi_transfer() which uses the bus_lock_mutex of the spi device and thus must only be called from a sleepable context. To ensure this request a threaded interrupt handler. Signed-off-by: Lino Sanfilippo Tested-by: Michael Niewöhner Reviewed-by: Jarkko Sakkinen --- drivers/char/tpm/tpm_tis_core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index e50a2c78de9f..83b31c25e55c 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -802,8 +802,11 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask, int rc; u32 int_status; - if (devm_request_irq(chip->dev.parent, irq, tis_int_handler, flags, - dev_name(&chip->dev), chip) != 0) { + + rc = devm_request_threaded_irq(chip->dev.parent, irq, NULL, + tis_int_handler, IRQF_ONESHOT | flags, + dev_name(&chip->dev), chip); + if (rc) { dev_info(&chip->dev, "Unable to request irq: %d for probe\n", irq); return -1;