From patchwork Mon Oct 17 23:57:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Lino Sanfilippo X-Patchwork-Id: 3844 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4ac7:0:0:0:0:0 with SMTP id y7csp1696118wrs; Mon, 17 Oct 2022 16:59:17 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7TTe45Pfue3apQ2mUCxrwROQqBhsSIRihFoI33LKnEfjkxqglgOafFfxCp2RKVy4/mzN8e X-Received: by 2002:a05:6402:34c7:b0:45c:c02c:e256 with SMTP id w7-20020a05640234c700b0045cc02ce256mr198413edc.198.1666051157559; Mon, 17 Oct 2022 16:59:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666051157; cv=none; d=google.com; s=arc-20160816; b=qQngveqlHsFQxEm0U5beglx3Tv8ZM8RJYOYiIRxqNZbo4Khl+cD9G3V2gqGl2y1oNJ lwKNvlWh8gWtPZWaNYmsAVCt284dToIx8ZTq8kPjiWl7HwxLFTlmDR0QMpRE2Xf1LH2e kOINX3OhcRh24h/7Z2YjLX0Fn7HZ9/nQ3WA+pkaiZLzW+Xoar9cNkQl90MgBIGtweIYx YuYN5x1HSN6Jpxck2S+piZSgB/2Jo0rD3lJZYcew4bWnKi34F18+s1fLQ4uLK3+xQu6o yN884XxmQnK/oNuj9qu0hqFmOoqLOAJ5+N+NVrX01nfVakumJcfJvQMf8Vab14SuFzXO dZOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=A5gzN4mXM9p6SpYjvt1lyWJmsiJr8fpb+zizXUo+H9o=; b=vmOHEv0YNtQQU/KvAzGrrnGHJKuWjK5jMJx4jgdfS3YqZkbDaeSIv+pIgZlz4vlnSA /LnLnI4Wjv/ZGZcTYoDvFaGPip49XKMhMYc8yhwSzsWq+rYZDRbDGX3171QecJk2GvAO T6g3rjEBQb9D6IlMhB+EyyrPr2Ze3RZEftLE2MxM88WZv9dx4FTmka2PDNtPjJUoSHRC fgqVKwmF8j3NJPeIMpjOeouVBR5GQlDZJ96GFiWuRuOJcfVNuz5L48MMJaPfQkFIRTPG +biurQ8eb+v+RzBQDfcW+DXkdohUm/72AzwDMkfRKLUMnlDTR7RaCKhkk3uy2btxfvT6 WoWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmx.net header.s=badeba3b8450 header.b=OfZrc2Ox; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmx.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ds1-20020a170907724100b00757bd7f53dcsi9422946ejc.14.2022.10.17.16.58.52; Mon, 17 Oct 2022 16:59:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmx.net header.s=badeba3b8450 header.b=OfZrc2Ox; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmx.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231159AbiJQX6W (ORCPT + 99 others); Mon, 17 Oct 2022 19:58:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229944AbiJQX6N (ORCPT ); Mon, 17 Oct 2022 19:58:13 -0400 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A7C27E03A; Mon, 17 Oct 2022 16:58:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1666051071; bh=A5gzN4mXM9p6SpYjvt1lyWJmsiJr8fpb+zizXUo+H9o=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=OfZrc2OxiuEIW1kDYkBDMHzkpB3HTAQ+mPmYb2XP4xPLjOwrYP/A2hkKsHC0fgqZV Hp4LzQ8YZnADNg+p2hF1R52tC1+h5KuhN3uwdu89G+IeUcXv4bEzdFVJjTe7EUxOiz 1JllyscdKZTXFzqezk8a/SVTJFYjjwkD3qMMJsW4= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from Venus.speedport.ip ([84.162.5.241]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N5G9t-1p9MfC2mTl-011Bad; Tue, 18 Oct 2022 01:57:51 +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, jandryuk@gmail.com, pmenzel@molgen.mpg.de, l.sanfilippo@kunbus.com, LinoSanfilippo@gmx.de, lukas@wunner.de, p.rosenberger@kunbus.com Subject: [PATCH v8 04/11] tpm, tmp_tis: Claim locality before writing interrupt registers Date: Tue, 18 Oct 2022 01:57:25 +0200 Message-Id: <20221017235732.10145-5-LinoSanfilippo@gmx.de> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20221017235732.10145-1-LinoSanfilippo@gmx.de> References: <20221017235732.10145-1-LinoSanfilippo@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:RLlc1AfZ1NIbHfi1JEu1isUf4ptuCNEd04D0B5dUC/z/3eXyz30 Or/zGIJ+DYVhZskfDa6VWbUU5MpzAZaFb9iBen8AqKsqP7KO91laDvNHg09GuJWmj0ioK1/ fgHEflm+WOIPDsSXcEkOBcferdR23EL6tq0I6HMxniGTy5q+Dbpr1aEtUfuIZDphpnc+GhH VYnitsF3deV467lOHNGfA== X-UI-Out-Filterresults: notjunk:1;V03:K0:V3UvChKgQuU=:g/DpbxX08A2gQ2Wu4Qhkkv Rkqh0Lvachxbd/ZSY5hArZ5Wfe8JmuSShzwVKY215UKHaZFlL+5HmPZosvWa44bnNWGvJn9VL f78VhrXXzvRHt4fTy2F1qf2m3vUJfJ/dGs2vcB1af1kcfUyoKHUkej4mxIe+11wuco6vfEUNR XDdesq+ct+TZXHuUbDdlsSnREnY2U9GfKrfvDPrYGCJDYjfGvqNeUsiuTVMtWmJA2adJk28AW X7o1WUg15OImaJ7W4pmqDoZMMIP3DKQYW4ujrpNh2yEFnadAlAY+PRwubzReIlpaTtNaF6oYo sM3IpTfU40x+X9MAYATZJBlSQQhGYDQZPQUVGpsfixkuvlRBsMyW2Z6mtZFHa+yWBvR2iZWLG QqqMpUULa9xPv+FZrPLOsY/glWbg9zVZmGKbZwwONfQqbGLE1R3c+73QvuJsm3yxG0Yw4ow+4 p2EsiIICvx9LHSwNCVGWapJGF4fnelsLulCQcaRYPOaZvDhzdvWywKCA/v+WMjhodlZAFpz53 OPuuFH9PKVFrX5xnyRV8IgLNedYHwfLKHNMSCjfPPL0pJ1bn5JXwI76zBmW3F2iE1DoMlqLgu Cgl8e5paHriNRcM3HOM8r5ePQ5iyOoZdrVtJWbIzzPOvhvr5l6BXj6bxvou6XjxpMz6dlZN3f 0C5hxrxrt3h9jAuuWj2Ugzb2KSxMpkenccqZMwSEYUFK2VhsnfbbJ0DxZxlCh5uzUKDicQKZq YkFmDe/tWHCN9gTbbaDjNrD45wVaxEFJRRSMHIct1QXRgDivpU0zbov8Xoz4qBgskLoB/gtVO pPtEtbWrSwaT63Axrhhpw14MZRXtqbfhcx7k5VYkFX1bArR/y1vwb/RVVqzOUP/KyIVhbicPp oJoa4uVPUEMBrjWbDWQyHODu6xBr1+WCe2kNi28nDKaAY2yqXxjPMU3+WHgQOOmD+nMnLXiVK ZGKHbb2axGpagNzq+qoY3zjVPd46Ngxx5oo64FmSUrWk80iS+W9b+ZoUr4eC5EHhvwt+zXX40 MFswVuQ+afn0zDGqXCaO1K4Mo8lyecBALoMZvjhcM/+gKGD0+h3OpbwmI7CPpXM8GRAmvyloE zckWHc1h5WN3QklIYJStk6bTC4Q4Lky4w0mnaiplgtEqBIRldIDmJS95Hy0/3mOnw+GSgxE0M 2Ml4QLdIQE26348axkS3cI5zPX/VfNKTyeRPIYC9jS/rCuu3pGVn2AVE6YTLxRpxBqE8ROTes fx4g5IyRmRObvKsaXUy8tG/6L6C96bdSdyc053p0b+BIzQA6S1ZtsdwsPuJ/GYROABzwkeNDh zuLgEE/exOebOGR3FOO7xt9Cp4/B7NrzHPLVfBbZjJiMY9nku11o2jHnCGMjP4lS8alMq69H2 JGrosVQbgUzXTSdnD+u+atXRRzVigXuuIErIpPI3RhDq88ZdrYAPzf+7ZGqVt1TzVX1o0s241 3ePsTQGtcjYJJqoPDspmG7x2BmBEfN4Zv3hbJVlcTwxiiwco/lzMwz0kTmvaC2EJfSvpDhU/b sMJJuUl1pW04lkSs5I/EGGWCnX/ZRiAQb/LXr4aMbk09Z X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1746981258567855509?= X-GMAIL-MSGID: =?utf-8?q?1746981258567855509?= From: Lino Sanfilippo In tpm_tis_probe_single_irq() interrupt registers TPM_INT_VECTOR, TPM_INT_STATUS and TPM_INT_ENABLE are modified to setup the interrupts. Currently these modifications are done without holding a locality thus they have no effect. Fix this by claiming the (default) locality before the registers are written. Signed-off-by: Lino Sanfilippo Reviewed-by: Jarkko Sakkinen Tested-by: Michael Niewöhner --- drivers/char/tpm/tpm_tis_core.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index 603b82ca56da..52205a1fee9e 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -770,30 +770,45 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask, } priv->irq = irq; + rc = request_locality(chip, 0); + if (rc < 0) + return rc; + rc = tpm_tis_read8(priv, TPM_INT_VECTOR(priv->locality), &original_int_vec); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } rc = tpm_tis_write8(priv, TPM_INT_VECTOR(priv->locality), irq); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } rc = tpm_tis_read32(priv, TPM_INT_STATUS(priv->locality), &int_status); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } /* Clear all existing */ rc = tpm_tis_write32(priv, TPM_INT_STATUS(priv->locality), int_status); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } /* Turn on */ rc = tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask | TPM_GLOBAL_INT_ENABLE); - if (rc < 0) + if (rc < 0) { + release_locality(chip, priv->locality); return rc; + } + release_locality(chip, priv->locality); clear_bit(TPM_TIS_IRQ_TESTED, &priv->flags); /* Generate an interrupt by having the core call through to