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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B8A0C433EF for ; Sun, 20 Feb 2022 19:34:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244639AbiBTTe3 (ORCPT ); Sun, 20 Feb 2022 14:34:29 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:43278 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244637AbiBTTe2 (ORCPT ); Sun, 20 Feb 2022 14:34:28 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91FDD4506A for ; Sun, 20 Feb 2022 11:34:06 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2D07B60EF2 for ; Sun, 20 Feb 2022 19:34:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AA7D3C340F7; Sun, 20 Feb 2022 19:34:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1645385645; bh=+DIDG7ZqJRenehV9m8WH6MaZnxN7NQnEWQVZ2bUhJ/A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YHQWjFAvD2/2yYKJR1FAlCDln77yr07SSWw2KZ9jHFb5spba0d3bzb92nCpaSm3ck 4DigKxy6dH+DbX6RATKL63EDZLce9OToFt/ngOY0YdAq+B6m+L+7LO+GmYrIVRDte6 w7an8ar3rhJAXkdXCA8UPmvAL/KrIHxPZREpOEeI6blczQO/12Zvjt53xWshXp8SDN nPx6fmx+WnBUblJJMaSUz8ZoN9B3zZe2uIvs6kpl29gXCbfoFfIH3lSr5zk3ByFTC+ m7yTyYSEI94WupbSEL/d+tBdssd+sejref88b4Gu8+3lxLWxqC+tIYT7y2HGNJHpEg 0Ntamb9n1HM7w== From: =?UTF-8?q?Marek=20Beh=C3=BAn?= To: Lorenzo Pieralisi , Bjorn Helgaas Cc: =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Marc Zyngier , pali@kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Gregory CLEMENT , =?UTF-8?q?Marek=20Beh=C3=BAn?= Subject: [PATCH 06/18] PCI: pciehp: Enable DLLSC interrupt only if supported Date: Sun, 20 Feb 2022 20:33:34 +0100 Message-Id: <20220220193346.23789-7-kabel@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220220193346.23789-1-kabel@kernel.org> References: <20220220193346.23789-1-kabel@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 From: Pali Rohár Don't enable Data Link Layer State Changed interrupt if it isn't supported. Data Link Layer Link Active Reporting Capable bit in Link Capabilities register indicates if Data Link Layer State Changed Enable is supported. Signed-off-by: Pali Rohár Signed-off-by: Marek Behún --- drivers/pci/hotplug/pciehp_hpc.c | 30 +++++++++++++++++++++++------- drivers/pci/hotplug/pnv_php.c | 13 +++++++++---- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 040ae076ec0e..373bb396fe22 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c @@ -788,6 +788,7 @@ static int pciehp_poll(void *data) static void pcie_enable_notification(struct controller *ctrl) { u16 cmd, mask; + u32 link_cap; /* * TBD: Power fault detected software notification support. @@ -800,12 +801,17 @@ static void pcie_enable_notification(struct controller *ctrl) * next power fault detected interrupt was notified again. */ + pcie_capability_read_dword(ctrl_dev(ctrl), PCI_EXP_LNKCAP, &link_cap); + /* - * Always enable link events: thus link-up and link-down shall - * always be treated as hotplug and unplug respectively. Enable - * presence detect only if Attention Button is not present. + * Enable link events if their support is indicated in Link Capability + * register: thus link-up and link-down shall always be treated as + * hotplug and unplug respectively. Enable presence detect only if + * Attention Button is not present. */ - cmd = PCI_EXP_SLTCTL_DLLSCE; + cmd = 0; + if (link_cap & PCI_EXP_LNKCAP_DLLLARC) + cmd |= PCI_EXP_SLTCTL_DLLSCE; if (ATTN_BUTTN(ctrl)) cmd |= PCI_EXP_SLTCTL_ABPE; else @@ -844,9 +850,14 @@ void pcie_clear_hotplug_events(struct controller *ctrl) void pcie_enable_interrupt(struct controller *ctrl) { + u32 link_cap; u16 mask; - mask = PCI_EXP_SLTCTL_HPIE | PCI_EXP_SLTCTL_DLLSCE; + pcie_capability_read_dword(ctrl_dev(ctrl), PCI_EXP_LNKCAP, &link_cap); + + mask = PCI_EXP_SLTCTL_HPIE; + if (link_cap & PCI_EXP_LNKCAP_DLLLARC) + mask |= PCI_EXP_SLTCTL_DLLSCE; pcie_write_cmd(ctrl, mask, mask); } @@ -904,19 +915,24 @@ int pciehp_reset_slot(struct hotplug_slot *hotplug_slot, bool probe) struct controller *ctrl = to_ctrl(hotplug_slot); struct pci_dev *pdev = ctrl_dev(ctrl); u16 stat_mask = 0, ctrl_mask = 0; + u32 link_cap; int rc; if (probe) return 0; + pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &link_cap); + down_write_nested(&ctrl->reset_lock, ctrl->depth); if (!ATTN_BUTTN(ctrl)) { ctrl_mask |= PCI_EXP_SLTCTL_PDCE; stat_mask |= PCI_EXP_SLTSTA_PDC; } - ctrl_mask |= PCI_EXP_SLTCTL_DLLSCE; - stat_mask |= PCI_EXP_SLTSTA_DLLSC; + if (link_cap & PCI_EXP_LNKCAP_DLLLARC) { + ctrl_mask |= PCI_EXP_SLTCTL_DLLSCE; + stat_mask |= PCI_EXP_SLTSTA_DLLSC; + } pcie_write_cmd(ctrl, 0, ctrl_mask); ctrl_dbg(ctrl, "%s: SLOTCTRL %x write cmd %x\n", __func__, diff --git a/drivers/pci/hotplug/pnv_php.c b/drivers/pci/hotplug/pnv_php.c index f4c2e6e01be0..e05e8460eb2c 100644 --- a/drivers/pci/hotplug/pnv_php.c +++ b/drivers/pci/hotplug/pnv_php.c @@ -840,6 +840,7 @@ static void pnv_php_init_irq(struct pnv_php_slot *php_slot, int irq) struct pci_dev *pdev = php_slot->pdev; u32 broken_pdc = 0; u16 sts, ctrl; + u32 link_cap; int ret; /* Allocate workqueue */ @@ -873,17 +874,21 @@ static void pnv_php_init_irq(struct pnv_php_slot *php_slot, int irq) return; } + pcie_capability_read_dword(pdev, PCI_EXP_LNKCAP, &link_cap); + /* Enable the interrupts */ pcie_capability_read_word(pdev, PCI_EXP_SLTCTL, &ctrl); if (php_slot->flags & PNV_PHP_FLAG_BROKEN_PDC) { ctrl &= ~PCI_EXP_SLTCTL_PDCE; - ctrl |= (PCI_EXP_SLTCTL_HPIE | - PCI_EXP_SLTCTL_DLLSCE); + ctrl |= PCI_EXP_SLTCTL_HPIE; } else { ctrl |= (PCI_EXP_SLTCTL_HPIE | - PCI_EXP_SLTCTL_PDCE | - PCI_EXP_SLTCTL_DLLSCE); + PCI_EXP_SLTCTL_PDCE); } + if (link_cap & PCI_EXP_LNKCAP_DLLLARC) + ctrl |= PCI_EXP_SLTCTL_DLLSCE; + else + ctrl &= ~PCI_EXP_SLTCTL_DLLSCE; pcie_capability_write_word(pdev, PCI_EXP_SLTCTL, ctrl); /* The interrupt is initialized successfully when @irq is valid */ -- 2.34.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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 85500C433F5 for ; Sun, 20 Feb 2022 19:36:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; 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=0UDs21pz7wk3hJWlKhRxc7stNTOEHDEj/hMaHaNyn1g=; b=bWUYkFUJSBzy+8 y5TwDIHKmlixUWyUaQh05RgcVaN/Ms7zUXZ4QoARW+dYevulN9qd4vKfuKNvoO+1F9AURvBg9Fa+N qXnnmVLfEOpgZGQ5h8x8DK/Si3I2R45vR4I09mQ7ZYfrWpWyZtfwFeCyg7nRZdvE+fOiBqXkgY1Qm 2UjLnr+QICxQ0kiBgEPJ8l8YxLXHDsl27nVTDWu53vQt4NG8Eb7H1/TgwWRbL1aSnfXdX4xqtnJMH UzF3TdmcAEcwfwIy1UsfCi3kxieb1xmnr5yMjNo5i/5IANSPJui6FYtNWkQSGCnLPWH7Wq9QN6LFz +MQdeKacfCp2IF2M0E6Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nLrzT-002Bkz-3Z; Sun, 20 Feb 2022 19:35:27 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nLryC-002BBR-6D for linux-arm-kernel@lists.infradead.org; Sun, 20 Feb 2022 19:34:09 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C1073B80DC0; Sun, 20 Feb 2022 19:34:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AA7D3C340F7; Sun, 20 Feb 2022 19:34:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1645385645; bh=+DIDG7ZqJRenehV9m8WH6MaZnxN7NQnEWQVZ2bUhJ/A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YHQWjFAvD2/2yYKJR1FAlCDln77yr07SSWw2KZ9jHFb5spba0d3bzb92nCpaSm3ck 4DigKxy6dH+DbX6RATKL63EDZLce9OToFt/ngOY0YdAq+B6m+L+7LO+GmYrIVRDte6 w7an8ar3rhJAXkdXCA8UPmvAL/KrIHxPZREpOEeI6blczQO/12Zvjt53xWshXp8SDN nPx6fmx+WnBUblJJMaSUz8ZoN9B3zZe2uIvs6kpl29gXCbfoFfIH3lSr5zk3ByFTC+ m7yTyYSEI94WupbSEL/d+tBdssd+sejref88b4Gu8+3lxLWxqC+tIYT7y2HGNJHpEg 0Ntamb9n1HM7w== From: =?UTF-8?q?Marek=20Beh=C3=BAn?= To: Lorenzo Pieralisi , Bjorn Helgaas Cc: =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Marc Zyngier , pali@kernel.org, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Gregory CLEMENT , =?UTF-8?q?Marek=20Beh=C3=BAn?= Subject: [PATCH 06/18] PCI: pciehp: Enable DLLSC interrupt only if supported Date: Sun, 20 Feb 2022 20:33:34 +0100 Message-Id: <20220220193346.23789-7-kabel@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220220193346.23789-1-kabel@kernel.org> References: <20220220193346.23789-1-kabel@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220220_113408_549180_D429ED4D X-CRM114-Status: GOOD ( 15.85 ) 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 RnJvbTogUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KCkRvbid0IGVuYWJsZSBEYXRhIExp bmsgTGF5ZXIgU3RhdGUgQ2hhbmdlZCBpbnRlcnJ1cHQgaWYgaXQgaXNuJ3QKc3VwcG9ydGVkLgoK RGF0YSBMaW5rIExheWVyIExpbmsgQWN0aXZlIFJlcG9ydGluZyBDYXBhYmxlIGJpdCBpbiBMaW5r IENhcGFiaWxpdGllcwpyZWdpc3RlciBpbmRpY2F0ZXMgaWYgRGF0YSBMaW5rIExheWVyIFN0YXRl IENoYW5nZWQgRW5hYmxlIGlzIHN1cHBvcnRlZC4KClNpZ25lZC1vZmYtYnk6IFBhbGkgUm9ow6Fy IDxwYWxpQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IE1hcmVrIEJlaMO6biA8a2FiZWxAa2Vy bmVsLm9yZz4KLS0tCiBkcml2ZXJzL3BjaS9ob3RwbHVnL3BjaWVocF9ocGMuYyB8IDMwICsrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLQogZHJpdmVycy9wY2kvaG90cGx1Zy9wbnZfcGhwLmMg ICAgfCAxMyArKysrKysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyks IDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhw X2hwYy5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wY2llaHBfaHBjLmMKaW5kZXggMDQwYWUwNzZl YzBlLi4zNzNiYjM5NmZlMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhw X2hwYy5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcGNpZWhwX2hwYy5jCkBAIC03ODgsNiAr Nzg4LDcgQEAgc3RhdGljIGludCBwY2llaHBfcG9sbCh2b2lkICpkYXRhKQogc3RhdGljIHZvaWQg cGNpZV9lbmFibGVfbm90aWZpY2F0aW9uKHN0cnVjdCBjb250cm9sbGVyICpjdHJsKQogewogCXUx NiBjbWQsIG1hc2s7CisJdTMyIGxpbmtfY2FwOwogCiAJLyoKIAkgKiBUQkQ6IFBvd2VyIGZhdWx0 IGRldGVjdGVkIHNvZnR3YXJlIG5vdGlmaWNhdGlvbiBzdXBwb3J0LgpAQCAtODAwLDEyICs4MDEs MTcgQEAgc3RhdGljIHZvaWQgcGNpZV9lbmFibGVfbm90aWZpY2F0aW9uKHN0cnVjdCBjb250cm9s bGVyICpjdHJsKQogCSAqIG5leHQgcG93ZXIgZmF1bHQgZGV0ZWN0ZWQgaW50ZXJydXB0IHdhcyBu b3RpZmllZCBhZ2Fpbi4KIAkgKi8KIAorCXBjaWVfY2FwYWJpbGl0eV9yZWFkX2R3b3JkKGN0cmxf ZGV2KGN0cmwpLCBQQ0lfRVhQX0xOS0NBUCwgJmxpbmtfY2FwKTsKKwogCS8qCi0JICogQWx3YXlz IGVuYWJsZSBsaW5rIGV2ZW50czogdGh1cyBsaW5rLXVwIGFuZCBsaW5rLWRvd24gc2hhbGwKLQkg KiBhbHdheXMgYmUgdHJlYXRlZCBhcyBob3RwbHVnIGFuZCB1bnBsdWcgcmVzcGVjdGl2ZWx5LiBF bmFibGUKLQkgKiBwcmVzZW5jZSBkZXRlY3Qgb25seSBpZiBBdHRlbnRpb24gQnV0dG9uIGlzIG5v dCBwcmVzZW50LgorCSAqIEVuYWJsZSBsaW5rIGV2ZW50cyBpZiB0aGVpciBzdXBwb3J0IGlzIGlu ZGljYXRlZCBpbiBMaW5rIENhcGFiaWxpdHkKKwkgKiByZWdpc3RlcjogdGh1cyBsaW5rLXVwIGFu ZCBsaW5rLWRvd24gc2hhbGwgYWx3YXlzIGJlIHRyZWF0ZWQgYXMKKwkgKiBob3RwbHVnIGFuZCB1 bnBsdWcgcmVzcGVjdGl2ZWx5LiBFbmFibGUgcHJlc2VuY2UgZGV0ZWN0IG9ubHkgaWYKKwkgKiBB dHRlbnRpb24gQnV0dG9uIGlzIG5vdCBwcmVzZW50LgogCSAqLwotCWNtZCA9IFBDSV9FWFBfU0xU Q1RMX0RMTFNDRTsKKwljbWQgPSAwOworCWlmIChsaW5rX2NhcCAmIFBDSV9FWFBfTE5LQ0FQX0RM TExBUkMpCisJCWNtZCB8PSBQQ0lfRVhQX1NMVENUTF9ETExTQ0U7CiAJaWYgKEFUVE5fQlVUVE4o Y3RybCkpCiAJCWNtZCB8PSBQQ0lfRVhQX1NMVENUTF9BQlBFOwogCWVsc2UKQEAgLTg0NCw5ICs4 NTAsMTQgQEAgdm9pZCBwY2llX2NsZWFyX2hvdHBsdWdfZXZlbnRzKHN0cnVjdCBjb250cm9sbGVy ICpjdHJsKQogCiB2b2lkIHBjaWVfZW5hYmxlX2ludGVycnVwdChzdHJ1Y3QgY29udHJvbGxlciAq Y3RybCkKIHsKKwl1MzIgbGlua19jYXA7CiAJdTE2IG1hc2s7CiAKLQltYXNrID0gUENJX0VYUF9T TFRDVExfSFBJRSB8IFBDSV9FWFBfU0xUQ1RMX0RMTFNDRTsKKwlwY2llX2NhcGFiaWxpdHlfcmVh ZF9kd29yZChjdHJsX2RldihjdHJsKSwgUENJX0VYUF9MTktDQVAsICZsaW5rX2NhcCk7CisKKwlt YXNrID0gUENJX0VYUF9TTFRDVExfSFBJRTsKKwlpZiAobGlua19jYXAgJiBQQ0lfRVhQX0xOS0NB UF9ETExMQVJDKQorCQltYXNrIHw9IFBDSV9FWFBfU0xUQ1RMX0RMTFNDRTsKIAlwY2llX3dyaXRl X2NtZChjdHJsLCBtYXNrLCBtYXNrKTsKIH0KIApAQCAtOTA0LDE5ICs5MTUsMjQgQEAgaW50IHBj aWVocF9yZXNldF9zbG90KHN0cnVjdCBob3RwbHVnX3Nsb3QgKmhvdHBsdWdfc2xvdCwgYm9vbCBw cm9iZSkKIAlzdHJ1Y3QgY29udHJvbGxlciAqY3RybCA9IHRvX2N0cmwoaG90cGx1Z19zbG90KTsK IAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGN0cmxfZGV2KGN0cmwpOwogCXUxNiBzdGF0X21hc2sg PSAwLCBjdHJsX21hc2sgPSAwOworCXUzMiBsaW5rX2NhcDsKIAlpbnQgcmM7CiAKIAlpZiAocHJv YmUpCiAJCXJldHVybiAwOwogCisJcGNpZV9jYXBhYmlsaXR5X3JlYWRfZHdvcmQocGRldiwgUENJ X0VYUF9MTktDQVAsICZsaW5rX2NhcCk7CisKIAlkb3duX3dyaXRlX25lc3RlZCgmY3RybC0+cmVz ZXRfbG9jaywgY3RybC0+ZGVwdGgpOwogCiAJaWYgKCFBVFROX0JVVFROKGN0cmwpKSB7CiAJCWN0 cmxfbWFzayB8PSBQQ0lfRVhQX1NMVENUTF9QRENFOwogCQlzdGF0X21hc2sgfD0gUENJX0VYUF9T TFRTVEFfUERDOwogCX0KLQljdHJsX21hc2sgfD0gUENJX0VYUF9TTFRDVExfRExMU0NFOwotCXN0 YXRfbWFzayB8PSBQQ0lfRVhQX1NMVFNUQV9ETExTQzsKKwlpZiAobGlua19jYXAgJiBQQ0lfRVhQ X0xOS0NBUF9ETExMQVJDKSB7CisJCWN0cmxfbWFzayB8PSBQQ0lfRVhQX1NMVENUTF9ETExTQ0U7 CisJCXN0YXRfbWFzayB8PSBQQ0lfRVhQX1NMVFNUQV9ETExTQzsKKwl9CiAKIAlwY2llX3dyaXRl X2NtZChjdHJsLCAwLCBjdHJsX21hc2spOwogCWN0cmxfZGJnKGN0cmwsICIlczogU0xPVENUUkwg JXggd3JpdGUgY21kICV4XG4iLCBfX2Z1bmNfXywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hv dHBsdWcvcG52X3BocC5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9wbnZfcGhwLmMKaW5kZXggZjRj MmU2ZTAxYmUwLi5lMDVlODQ2MGViMmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcv cG52X3BocC5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvcG52X3BocC5jCkBAIC04NDAsNiAr ODQwLDcgQEAgc3RhdGljIHZvaWQgcG52X3BocF9pbml0X2lycShzdHJ1Y3QgcG52X3BocF9zbG90 ICpwaHBfc2xvdCwgaW50IGlycSkKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHBocF9zbG90LT5w ZGV2OwogCXUzMiBicm9rZW5fcGRjID0gMDsKIAl1MTYgc3RzLCBjdHJsOworCXUzMiBsaW5rX2Nh cDsKIAlpbnQgcmV0OwogCiAJLyogQWxsb2NhdGUgd29ya3F1ZXVlICovCkBAIC04NzMsMTcgKzg3 NCwyMSBAQCBzdGF0aWMgdm9pZCBwbnZfcGhwX2luaXRfaXJxKHN0cnVjdCBwbnZfcGhwX3Nsb3Qg KnBocF9zbG90LCBpbnQgaXJxKQogCQlyZXR1cm47CiAJfQogCisJcGNpZV9jYXBhYmlsaXR5X3Jl YWRfZHdvcmQocGRldiwgUENJX0VYUF9MTktDQVAsICZsaW5rX2NhcCk7CisKIAkvKiBFbmFibGUg dGhlIGludGVycnVwdHMgKi8KIAlwY2llX2NhcGFiaWxpdHlfcmVhZF93b3JkKHBkZXYsIFBDSV9F WFBfU0xUQ1RMLCAmY3RybCk7CiAJaWYgKHBocF9zbG90LT5mbGFncyAmIFBOVl9QSFBfRkxBR19C Uk9LRU5fUERDKSB7CiAJCWN0cmwgJj0gflBDSV9FWFBfU0xUQ1RMX1BEQ0U7Ci0JCWN0cmwgfD0g KFBDSV9FWFBfU0xUQ1RMX0hQSUUgfAotCQkJIFBDSV9FWFBfU0xUQ1RMX0RMTFNDRSk7CisJCWN0 cmwgfD0gUENJX0VYUF9TTFRDVExfSFBJRTsKIAl9IGVsc2UgewogCQljdHJsIHw9IChQQ0lfRVhQ X1NMVENUTF9IUElFIHwKLQkJCSBQQ0lfRVhQX1NMVENUTF9QRENFIHwKLQkJCSBQQ0lfRVhQX1NM VENUTF9ETExTQ0UpOworCQkJIFBDSV9FWFBfU0xUQ1RMX1BEQ0UpOwogCX0KKwlpZiAobGlua19j YXAgJiBQQ0lfRVhQX0xOS0NBUF9ETExMQVJDKQorCQljdHJsIHw9IFBDSV9FWFBfU0xUQ1RMX0RM TFNDRTsKKwllbHNlCisJCWN0cmwgJj0gflBDSV9FWFBfU0xUQ1RMX0RMTFNDRTsKIAlwY2llX2Nh cGFiaWxpdHlfd3JpdGVfd29yZChwZGV2LCBQQ0lfRVhQX1NMVENUTCwgY3RybCk7CiAKIAkvKiBU aGUgaW50ZXJydXB0IGlzIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSB3aGVuIEBpcnEgaXMgdmFs aWQgKi8KLS0gCjIuMzQuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK