From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-19.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1C77C43460 for ; Thu, 6 May 2021 15:34:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 99DC0613DA for ; Thu, 6 May 2021 15:34:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235302AbhEFPf0 (ORCPT ); Thu, 6 May 2021 11:35:26 -0400 Received: from mail.kernel.org ([198.145.29.99]:46336 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235645AbhEFPdw (ORCPT ); Thu, 6 May 2021 11:33:52 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6416261468; Thu, 6 May 2021 15:32:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620315173; bh=OEaFaYCn4Fs+blLV4e+MvHGsjsrcVg0+nuuN5Mw4ZwM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ng9dDMo+LuMGAj/2YXtZTh6SPrG+ul3sPkewAKWkEgoOK55x6JPqyE0Vd8rPRrO5R ht7cgzBqxZQ5jZonBDQ5N0ZS8T9BYgN7V4KXM9ZrP7JMpOooHqSgg8Ny9ErH7JNa3E sDpFUF8d1zcSHwp12X8SfAA4s2IuTlu72U/KekZ3gQnATCr+zC+JqpPfjMTucepPhU F1r7b70iPbttT9N5TtGleguUlZLFlU/WVdtPgN12r6dA4H3kg7IH4Fh17evA20PLQ3 GNR5xgAqSzZyw2U+3Xg7HJ4UPcuIVslBgh7FpBPof/9kWFTa+Q6rt607ni5Nxflczt 54XN5UpBn3aVw== Received: by pali.im (Postfix) id 1B9FC732; Thu, 6 May 2021 17:32:53 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Lorenzo Pieralisi , Thomas Petazzoni , Rob Herring , Bjorn Helgaas Cc: Russell King , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Remi Pommarel , Xogium , Tomasz Maciej Nowak , Marc Zyngier , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 30/42] PCI: aardvark: Rewrite irq code to chained irq handler Date: Thu, 6 May 2021 17:31:41 +0200 Message-Id: <20210506153153.30454-31-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210506153153.30454-1-pali@kernel.org> References: <20210506153153.30454-1-pali@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org advk_pcie_irq_handler() reads irq status bits and calls other functions based on which bits are set. These function then reads its own irq status bits and calls other aardvark functions based on these bits. Finally generic_handle_irq() with translated linux irq numbers are called. Rewrite the code to use irq_set_chained_handler_and_data() handler with chained_irq_enter() and chained_irq_exit() processing instead of using devm_request_irq(). Signed-off-by: Pali Rohár Reviewed-by: Marek Behún --- drivers/pci/controller/pci-aardvark.c | 45 ++++++++++++++------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index b1e6a8a839e0..f2ed276b7e18 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -193,6 +193,7 @@ struct advk_msi_range { struct advk_pcie { struct platform_device *pdev; void __iomem *base; + int irq; struct irq_domain *irq_domain; struct irq_chip irq_chip; struct irq_domain *msi_domain; @@ -1283,21 +1284,24 @@ static void advk_pcie_handle_int(struct advk_pcie *pcie) } } -static irqreturn_t advk_pcie_irq_handler(int irq, void *arg) +static void advk_pcie_irq_handler(struct irq_desc *desc) { - struct advk_pcie *pcie = arg; - u32 status; + struct advk_pcie *pcie = irq_desc_get_handler_data(desc); + struct irq_chip *chip = irq_desc_get_chip(desc); + u32 val, mask, status; - status = advk_readl(pcie, HOST_CTRL_INT_STATUS_REG); - if (!(status & PCIE_IRQ_CORE_INT)) - return IRQ_NONE; + chained_irq_enter(chip, desc); - advk_pcie_handle_int(pcie); + val = advk_readl(pcie, HOST_CTRL_INT_STATUS_REG); + mask = advk_readl(pcie, HOST_CTRL_INT_MASK_REG); + status = val & ((~mask) & PCIE_IRQ_ALL_MASK); - /* Clear interrupt */ - advk_writel(pcie, PCIE_IRQ_CORE_INT, HOST_CTRL_INT_STATUS_REG); + if (status & PCIE_IRQ_CORE_INT) { + advk_pcie_handle_int(pcie); + advk_writel(pcie, PCIE_IRQ_CORE_INT, HOST_CTRL_INT_STATUS_REG); + } - return IRQ_HANDLED; + chained_irq_exit(chip, desc); } static void __maybe_unused advk_pcie_disable_phy(struct advk_pcie *pcie) @@ -1363,7 +1367,7 @@ static int advk_pcie_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct advk_pcie *pcie; struct pci_host_bridge *bridge; - int ret, irq; + int ret; bridge = devm_pci_alloc_host_bridge(dev, sizeof(struct advk_pcie)); if (!bridge) @@ -1377,17 +1381,9 @@ static int advk_pcie_probe(struct platform_device *pdev) if (IS_ERR(pcie->base)) return PTR_ERR(pcie->base); - irq = platform_get_irq(pdev, 0); - if (irq < 0) - return irq; - - ret = devm_request_irq(dev, irq, advk_pcie_irq_handler, - IRQF_SHARED | IRQF_NO_THREAD, "advk-pcie", - pcie); - if (ret) { - dev_err(dev, "Failed to register interrupt\n"); - return ret; - } + pcie->irq = platform_get_irq(pdev, 0); + if (pcie->irq < 0) + return pcie->irq; pcie->reset_gpio = devm_gpiod_get_from_of_node(dev, dev->of_node, "reset-gpios", 0, @@ -1436,6 +1432,8 @@ static int advk_pcie_probe(struct platform_device *pdev) return ret; } + irq_set_chained_handler_and_data(pcie->irq, advk_pcie_irq_handler, pcie); + bridge->sysdata = pcie; bridge->ops = &advk_pcie_ops; @@ -1443,6 +1441,7 @@ static int advk_pcie_probe(struct platform_device *pdev) if (ret < 0) { advk_pcie_remove_msi_irq_domain(pcie); advk_pcie_remove_irq_domain(pcie); + irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); return ret; } @@ -1491,6 +1490,8 @@ static int advk_pcie_remove(struct platform_device *pdev) advk_pcie_remove_msi_irq_domain(pcie); advk_pcie_remove_irq_domain(pcie); + irq_set_chained_handler_and_data(pcie->irq, NULL, NULL); + /* Free config space for emulated root bridge */ pci_bridge_emul_cleanup(&pcie->bridge); -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.7 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F9DFC433ED for ; Thu, 6 May 2021 16:03:43 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 89C2A610C8 for ; Thu, 6 May 2021 16:03:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 89C2A610C8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=m8UIbJBzQGCj4L4nDtwsubKgM967t8ZE9D2FAQgg2hQ=; b=A+rMZFfdW6zo43/8HLLXeiegb MLVFTUQ9jahHGdbj3liCTPuEew3TW25xMT3xEVm9el12kx+lEQseseSAsZ/sKJcP5OivqsssmETfZ mREtQEYmueb7deswQFO1uwDxxArYGMFvlt0/kSGUKsr6s735bM/AGUmcs+8foS6SJQTpm2pMhIrb2 2Dqgo2mNhpl0q305isbsjecbfsp1BoNDtbL1iimNA4gy0MZ+3jaQwIy25YPxl8tdrDD2ntUWYckTj e2eDnzIo+OKDIqfTb/eLdC4u7de2lMpchv+UBgQXPUMmb8YJMzbIQvHk0IBmaBE9cY65KKUNM0oqg AGGDUWL0g==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1legFv-004fbY-KV; Thu, 06 May 2021 15:49:39 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lefzq-004a7k-Jw for linux-arm-kernel@desiato.infradead.org; Thu, 06 May 2021 15:33:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc: To:From:Sender:Reply-To:Content-ID:Content-Description; bh=XN5P0Jr5SMPqOA1GByin624XEdhPexT8QyIAZSBXijM=; b=dmL9326GtPsV/HbsdDv+3+JBQG vue46B1gJD92xIQWVNQbF4qM1Z82FKwIAA2k3jUK5U7Z9nAyFcqIVUKZUvBxDxoyUPIz87RCtpM5N jIygF52huuB6LMZZuEiQlnvvW7j2ds8L4xUc+h3lUjUCn1sweoZG+CEiUqnfTGpfhKohxLLYKcLAn ZwVjqNQTrSruoPB660j3LJWwtlkiowASH3k8HhFm7R/68UBDjPQ6I2n8mRBTftjauMfNQalte6uAr MS6tP5WmSfo+z3q7g3qgI2IJ0IibXWlg/UgQs4inAGRjuVWxUFHGejJq/gxci87jJkj/vmciUpH8b zdIwkdDQ==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lefzk-0069nK-RG for linux-arm-kernel@lists.infradead.org; Thu, 06 May 2021 15:33:01 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6416261468; Thu, 6 May 2021 15:32:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620315173; bh=OEaFaYCn4Fs+blLV4e+MvHGsjsrcVg0+nuuN5Mw4ZwM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ng9dDMo+LuMGAj/2YXtZTh6SPrG+ul3sPkewAKWkEgoOK55x6JPqyE0Vd8rPRrO5R ht7cgzBqxZQ5jZonBDQ5N0ZS8T9BYgN7V4KXM9ZrP7JMpOooHqSgg8Ny9ErH7JNa3E sDpFUF8d1zcSHwp12X8SfAA4s2IuTlu72U/KekZ3gQnATCr+zC+JqpPfjMTucepPhU F1r7b70iPbttT9N5TtGleguUlZLFlU/WVdtPgN12r6dA4H3kg7IH4Fh17evA20PLQ3 GNR5xgAqSzZyw2U+3Xg7HJ4UPcuIVslBgh7FpBPof/9kWFTa+Q6rt607ni5Nxflczt 54XN5UpBn3aVw== Received: by pali.im (Postfix) id 1B9FC732; Thu, 6 May 2021 17:32:53 +0200 (CEST) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Lorenzo Pieralisi , Thomas Petazzoni , Rob Herring , Bjorn Helgaas Cc: Russell King , =?UTF-8?q?Marek=20Beh=C3=BAn?= , Remi Pommarel , Xogium , Tomasz Maciej Nowak , Marc Zyngier , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 30/42] PCI: aardvark: Rewrite irq code to chained irq handler Date: Thu, 6 May 2021 17:31:41 +0200 Message-Id: <20210506153153.30454-31-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210506153153.30454-1-pali@kernel.org> References: <20210506153153.30454-1-pali@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210506_083256_965306_60375D9A X-CRM114-Status: GOOD ( 16.38 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org YWR2a19wY2llX2lycV9oYW5kbGVyKCkgcmVhZHMgaXJxIHN0YXR1cyBiaXRzIGFuZCBjYWxscyBv dGhlciBmdW5jdGlvbnMKYmFzZWQgb24gd2hpY2ggYml0cyBhcmUgc2V0LiBUaGVzZSBmdW5jdGlv biB0aGVuIHJlYWRzIGl0cyBvd24gaXJxIHN0YXR1cwpiaXRzIGFuZCBjYWxscyBvdGhlciBhYXJk dmFyayBmdW5jdGlvbnMgYmFzZWQgb24gdGhlc2UgYml0cy4gRmluYWxseQpnZW5lcmljX2hhbmRs ZV9pcnEoKSB3aXRoIHRyYW5zbGF0ZWQgbGludXggaXJxIG51bWJlcnMgYXJlIGNhbGxlZC4KClJl d3JpdGUgdGhlIGNvZGUgdG8gdXNlIGlycV9zZXRfY2hhaW5lZF9oYW5kbGVyX2FuZF9kYXRhKCkg aGFuZGxlciB3aXRoCmNoYWluZWRfaXJxX2VudGVyKCkgYW5kIGNoYWluZWRfaXJxX2V4aXQoKSBw cm9jZXNzaW5nIGluc3RlYWQgb2YgdXNpbmcKZGV2bV9yZXF1ZXN0X2lycSgpLgoKU2lnbmVkLW9m Zi1ieTogUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KUmV2aWV3ZWQtYnk6IE1hcmVrIEJl aMO6biA8a2FiZWxAa2VybmVsLm9yZz4KLS0tCiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1h YXJkdmFyay5jIHwgNDUgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2ktYWFyZHZhcmsuYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpLWFhcmR2YXJrLmMKaW5kZXggYjFlNmE4YTgzOWUwLi5mMmVkMjc2YjdlMTggMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLWFhcmR2YXJrLmMKKysrIGIvZHJpdmVycy9w Y2kvY29udHJvbGxlci9wY2ktYWFyZHZhcmsuYwpAQCAtMTkzLDYgKzE5Myw3IEBAIHN0cnVjdCBh ZHZrX21zaV9yYW5nZSB7CiBzdHJ1Y3QgYWR2a19wY2llIHsKIAlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2OwogCXZvaWQgX19pb21lbSAqYmFzZTsKKwlpbnQgaXJxOwogCXN0cnVjdCBpcnFf ZG9tYWluICppcnFfZG9tYWluOwogCXN0cnVjdCBpcnFfY2hpcCBpcnFfY2hpcDsKIAlzdHJ1Y3Qg aXJxX2RvbWFpbiAqbXNpX2RvbWFpbjsKQEAgLTEyODMsMjEgKzEyODQsMjQgQEAgc3RhdGljIHZv aWQgYWR2a19wY2llX2hhbmRsZV9pbnQoc3RydWN0IGFkdmtfcGNpZSAqcGNpZSkKIAl9CiB9CiAK LXN0YXRpYyBpcnFyZXR1cm5fdCBhZHZrX3BjaWVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq YXJnKQorc3RhdGljIHZvaWQgYWR2a19wY2llX2lycV9oYW5kbGVyKHN0cnVjdCBpcnFfZGVzYyAq ZGVzYykKIHsKLQlzdHJ1Y3QgYWR2a19wY2llICpwY2llID0gYXJnOwotCXUzMiBzdGF0dXM7CisJ c3RydWN0IGFkdmtfcGNpZSAqcGNpZSA9IGlycV9kZXNjX2dldF9oYW5kbGVyX2RhdGEoZGVzYyk7 CisJc3RydWN0IGlycV9jaGlwICpjaGlwID0gaXJxX2Rlc2NfZ2V0X2NoaXAoZGVzYyk7CisJdTMy IHZhbCwgbWFzaywgc3RhdHVzOwogCi0Jc3RhdHVzID0gYWR2a19yZWFkbChwY2llLCBIT1NUX0NU UkxfSU5UX1NUQVRVU19SRUcpOwotCWlmICghKHN0YXR1cyAmIFBDSUVfSVJRX0NPUkVfSU5UKSkK LQkJcmV0dXJuIElSUV9OT05FOworCWNoYWluZWRfaXJxX2VudGVyKGNoaXAsIGRlc2MpOwogCi0J YWR2a19wY2llX2hhbmRsZV9pbnQocGNpZSk7CisJdmFsID0gYWR2a19yZWFkbChwY2llLCBIT1NU X0NUUkxfSU5UX1NUQVRVU19SRUcpOworCW1hc2sgPSBhZHZrX3JlYWRsKHBjaWUsIEhPU1RfQ1RS TF9JTlRfTUFTS19SRUcpOworCXN0YXR1cyA9IHZhbCAmICgofm1hc2spICYgUENJRV9JUlFfQUxM X01BU0spOwogCi0JLyogQ2xlYXIgaW50ZXJydXB0ICovCi0JYWR2a193cml0ZWwocGNpZSwgUENJ RV9JUlFfQ09SRV9JTlQsIEhPU1RfQ1RSTF9JTlRfU1RBVFVTX1JFRyk7CisJaWYgKHN0YXR1cyAm IFBDSUVfSVJRX0NPUkVfSU5UKSB7CisJCWFkdmtfcGNpZV9oYW5kbGVfaW50KHBjaWUpOworCQlh ZHZrX3dyaXRlbChwY2llLCBQQ0lFX0lSUV9DT1JFX0lOVCwgSE9TVF9DVFJMX0lOVF9TVEFUVVNf UkVHKTsKKwl9CiAKLQlyZXR1cm4gSVJRX0hBTkRMRUQ7CisJY2hhaW5lZF9pcnFfZXhpdChjaGlw LCBkZXNjKTsKIH0KIAogc3RhdGljIHZvaWQgX19tYXliZV91bnVzZWQgYWR2a19wY2llX2Rpc2Fi bGVfcGh5KHN0cnVjdCBhZHZrX3BjaWUgKnBjaWUpCkBAIC0xMzYzLDcgKzEzNjcsNyBAQCBzdGF0 aWMgaW50IGFkdmtfcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0 cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CiAJc3RydWN0IGFkdmtfcGNpZSAqcGNpZTsK IAlzdHJ1Y3QgcGNpX2hvc3RfYnJpZGdlICpicmlkZ2U7Ci0JaW50IHJldCwgaXJxOworCWludCBy ZXQ7CiAKIAlicmlkZ2UgPSBkZXZtX3BjaV9hbGxvY19ob3N0X2JyaWRnZShkZXYsIHNpemVvZihz dHJ1Y3QgYWR2a19wY2llKSk7CiAJaWYgKCFicmlkZ2UpCkBAIC0xMzc3LDE3ICsxMzgxLDkgQEAg c3RhdGljIGludCBhZHZrX3BjaWVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IAlpZiAoSVNfRVJSKHBjaWUtPmJhc2UpKQogCQlyZXR1cm4gUFRSX0VSUihwY2llLT5iYXNlKTsK IAotCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7Ci0JaWYgKGlycSA8IDApCi0JCXJl dHVybiBpcnE7Ci0KLQlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgaXJxLCBhZHZrX3BjaWVf aXJxX2hhbmRsZXIsCi0JCQkgICAgICAgSVJRRl9TSEFSRUQgfCBJUlFGX05PX1RIUkVBRCwgImFk dmstcGNpZSIsCi0JCQkgICAgICAgcGNpZSk7Ci0JaWYgKHJldCkgewotCQlkZXZfZXJyKGRldiwg IkZhaWxlZCB0byByZWdpc3RlciBpbnRlcnJ1cHRcbiIpOwotCQlyZXR1cm4gcmV0OwotCX0KKwlw Y2llLT5pcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChwY2llLT5pcnEgPCAw KQorCQlyZXR1cm4gcGNpZS0+aXJxOwogCiAJcGNpZS0+cmVzZXRfZ3BpbyA9IGRldm1fZ3Bpb2Rf Z2V0X2Zyb21fb2Zfbm9kZShkZXYsIGRldi0+b2Zfbm9kZSwKIAkJCQkJCSAgICAgICAicmVzZXQt Z3Bpb3MiLCAwLApAQCAtMTQzNiw2ICsxNDMyLDggQEAgc3RhdGljIGludCBhZHZrX3BjaWVfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJcmV0dXJuIHJldDsKIAl9CiAKKwlp cnFfc2V0X2NoYWluZWRfaGFuZGxlcl9hbmRfZGF0YShwY2llLT5pcnEsIGFkdmtfcGNpZV9pcnFf aGFuZGxlciwgcGNpZSk7CisKIAlicmlkZ2UtPnN5c2RhdGEgPSBwY2llOwogCWJyaWRnZS0+b3Bz ID0gJmFkdmtfcGNpZV9vcHM7CiAKQEAgLTE0NDMsNiArMTQ0MSw3IEBAIHN0YXRpYyBpbnQgYWR2 a19wY2llX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJaWYgKHJldCA8IDAp IHsKIAkJYWR2a19wY2llX3JlbW92ZV9tc2lfaXJxX2RvbWFpbihwY2llKTsKIAkJYWR2a19wY2ll X3JlbW92ZV9pcnFfZG9tYWluKHBjaWUpOworCQlpcnFfc2V0X2NoYWluZWRfaGFuZGxlcl9hbmRf ZGF0YShwY2llLT5pcnEsIE5VTEwsIE5VTEwpOwogCQlyZXR1cm4gcmV0OwogCX0KIApAQCAtMTQ5 MSw2ICsxNDkwLDggQEAgc3RhdGljIGludCBhZHZrX3BjaWVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCiAJYWR2a19wY2llX3JlbW92ZV9tc2lfaXJxX2RvbWFpbihwY2llKTsK IAlhZHZrX3BjaWVfcmVtb3ZlX2lycV9kb21haW4ocGNpZSk7CiAKKwlpcnFfc2V0X2NoYWluZWRf aGFuZGxlcl9hbmRfZGF0YShwY2llLT5pcnEsIE5VTEwsIE5VTEwpOworCiAJLyogRnJlZSBjb25m aWcgc3BhY2UgZm9yIGVtdWxhdGVkIHJvb3QgYnJpZGdlICovCiAJcGNpX2JyaWRnZV9lbXVsX2Ns ZWFudXAoJnBjaWUtPmJyaWRnZSk7CiAKLS0gCjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0 CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK