From patchwork Thu Nov 10 15:25: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: 18174 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp212204wru; Thu, 10 Nov 2022 07:29:15 -0800 (PST) X-Google-Smtp-Source: AMsMyM4zju96jY/eNMtQ2X3CEO9hPzkxPydO/nHOe4s5tGVXpZdK8my4vxQlgvXPofq/DTsqAV1H X-Received: by 2002:aa7:c68b:0:b0:461:c6e8:452e with SMTP id n11-20020aa7c68b000000b00461c6e8452emr2443517edq.298.1668094155765; Thu, 10 Nov 2022 07:29:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668094155; cv=none; d=google.com; s=arc-20160816; b=ZB/oiLiCpzLlHkPr7GRL1cHeOx1N3WythbmOCDf0QSbVXFdGX7fLL2tJpjRyO435wU KtjsiyHShWW0JENLYBdSw/XCqu1v7AclrELfJGOkJuR7DwWt2gMlsMMSjbFo9IZbOyaA c1TJ4U0VljmZDmT/SW9jI46ee5y3fqi5+cF+TBPHnIOMzzC5bg/ttkUBPSuDxfYl2nSa nMJSd6mVtVge5PDBG5LDgrdb3KWUn52aWywziWcbsqeMbX+OyGzrMgSJezbfduGmS8tb p7k6Gn0CHCJ6zbmVA3F+1QMjR2Hh6bb+E9hK24Y6MwFpPEB4H555PtQ5V3gjnzXpXGKu s9pQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:ui-outboundreport:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=A5gzN4mXM9p6SpYjvt1lyWJmsiJr8fpb+zizXUo+H9o=; b=WHGjW3nm6+YGn9F4SpbixZLcSSOBflCJIAedaYBKmb6WnldzMkKy66VkNYe6X1mzX0 k1spDwmEiu6bfNzkqISixPzKrTz38GhjfJClgdeEGPSr7RPpYh6hBQ5CnVjLRGI/TmXX 3KORWAFTCdQ/ovqFJxk7MlkFjpUYslW10hEMz+6QjyP08lULFm1ACB63LGTVf4/rBdFw Dk0nwLWef6v5FqVcYiK2EtR+bZiJLVMjcdwnVfrVk/okQV8S1CsL6y78MuPIybQDwVkD LcPx/1TK/9ChBxHhq3O2KnWoc0anMLvFk4FMenIUpQK+mVlmRqabVAlw1u4Kr08apghm LFkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmx.de header.s=s31663417 header.b=aQYQBr00; 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=pass (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 dm20-20020a170907949400b007adc3b6dcfdsi21383034ejc.392.2022.11.10.07.28.51; Thu, 10 Nov 2022 07:29:15 -0800 (PST) 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.de header.s=s31663417 header.b=aQYQBr00; 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=pass (p=NONE sp=NONE dis=NONE) header.from=gmx.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230405AbiKJP1T (ORCPT + 99 others); Thu, 10 Nov 2022 10:27:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231571AbiKJP01 (ORCPT ); Thu, 10 Nov 2022 10:26:27 -0500 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D23613FB99; Thu, 10 Nov 2022 07:26:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1668093944; bh=A5gzN4mXM9p6SpYjvt1lyWJmsiJr8fpb+zizXUo+H9o=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=aQYQBr00g43DpNg8GIwA7D2/ec+yjFMyRLzCm+1dyHU3YM9oMFDvnMJbcyYmVaaTe NKd82ePb0x8TE5kqri7H9vT5gHl2dwIayrPSBORsh9rlVJZ+dOuMq+95p4NR8BOuli j2IT7XWLWVLRmDDeR+wk248ITd1SXnVIqV9fICua/UX797eQV8ff3nGs1WY3aMqMSk Zj7mySuI85pKWf6KQgccM7oGv4jGiMzDZsC291lfZ5Nzkow8vDvvm9/qRrd+rEuTXc J1bL1DbRZzmEpWxMChFjbst3RkiPRkHUBAoKnmwAjUM4IVXB61DSpqxCza+TMXSEax ZA3RjYvCViOOw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from Venus.speedport.ip ([84.162.7.17]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1OXT-1p0Gqh0Zch-012mEg; Thu, 10 Nov 2022 16:25:44 +0100 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 v9 04/12] tpm, tmp_tis: Claim locality before writing interrupt registers Date: Thu, 10 Nov 2022 16:25:25 +0100 Message-Id: <20221110152533.24243-5-LinoSanfilippo@gmx.de> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20221110152533.24243-1-LinoSanfilippo@gmx.de> References: <20221110152533.24243-1-LinoSanfilippo@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:9JTDDUP+gYrcmMFZPrNVpj07srKJyJojblE902lVdz7CnXEmkn+ nwSSGUKFfFNIGWWHdG/A+jG73iZcg2QVhPYDse+9pAYnS5dzKw3RJ0n5Daa9UhOy5qQNWiy dRkUa41KJkfekRHGHGxb2nJS8pyEfuclc6/s9FVfjQ80KMDyoBkMcQMhGDWtEVEJEkAEmDY 4bOJh2FDixzjOoNULIYtA== UI-OutboundReport: notjunk:1;M01:P0:99nGA77ETq8=;zqPhrmF94xabbY0BG0vFtOY/9zR EaSOZO7cx8OzDNHXr0yxk97BnfJ/qYdiTyrSZw49oNEAVtXtyKjnJAiSr7zw/3FX6Neq0ZVXt fcOnE+J1+xfAmZwRz8sD8BEsD+EKZr1QttLMqari3wEb2lDHFV3FThxBkvXNbNl0AArvbMsn2 e1B7XRgqgSF4GA+B/wM2f31zgVGiMUK+vhK/K8fYXy5mZOaEEEELeESxzCHIJIMXE0pGjxJ4T aTwC+4urnSbU0Ddoj5wpCSJccg2UOR/04yBkUPm3ViNiGR0scVQFzecmqUh7iKg4jgoNnlHj9 8ZypagiW2DxybRrsP4DLedUZEBY58A0jfBRxBOx5Wwgo6x7rORZmzj6POgD/JxpYHxdQV5pMi 8jClLjzZCIIA3HJaWvQKv8KSZWh7luuv60hyNa3LxVqRXbd5WHMdfgCqcrftTz+HIaBWyq9qN Pmi13NeT92C6b3Lm99IFfIetD3Efsv7fl4dHkpPleQQ8EnEbpQA77ri7jf3InnnQ1FMZRB1lf jqGhok366TmFHjX61vI+xkrYvClk5E8XCJ60Eur19udFw22QygiDCd0AJycNd0WjsYH5RML5c ZVRmApi2+ukLnb1WVB9LyjzC/e+nf5Epdhp/fKjX2bdscJyEr0yrQgZfqeP66Y5bH6bd90uL3 dTkQxj8qdxwlyJJhAUyCNIl2p9eR1XcKHZ0rW8vnlaa9bLui5KbRA2BaROBmOtWyjWdE6mruB Upkj6Nz9VHv9YPlfQhYJcR5UaOLGCyaLpKPPlQyr7RS/iCDbP5VCCc//3XC1uji5L6Tq6TO1S S0XU1VzqXWREUIOTuq0kl8DhKFbJDn5KF5GcpECHeXqXKJxba/xINY2CnAG873tRVC5cQe8xU hlfH2PfcdiL8HraYnruGxbiKBM6NBcluYt1OuClTvzzSa5CyF/SUxV3tYU4Mk9zHGM4+9XbgU eJDBSYKRQyEOzADh8RyPU08Z2Fc= X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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?1749123497071959974?= X-GMAIL-MSGID: =?utf-8?q?1749123497071959974?= 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