From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bjorn Helgaas Subject: [PATCH 1/2] drm: replace incorrect Compliance/Margin magic numbers with PCI_EXP_LNKCTL2 definitions Date: Mon, 11 Nov 2019 13:29:31 -0600 Message-ID: <20191111192932.36048-2-helgaas@kernel.org> References: <20191111192932.36048-1-helgaas@kernel.org> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20191111192932.36048-1-helgaas@kernel.org> Sender: linux-kernel-owner@vger.kernel.org To: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Zhou , David Airlie , Daniel Vetter Cc: Frederick Lawler , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ilia Mirkin , linux-pci@vger.kernel.org, Bjorn Helgaas List-Id: amd-gfx.lists.freedesktop.org From: Bjorn Helgaas Add definitions for these PCIe Link Control 2 register fields: Enter Compliance Transmit Margin and use them in amdgpu and radeon. NOTE: This is a functional change because "7 << 9" was apparently a typo. That mask included the high order bit of Transmit Margin, the Enter Modified Compliance bit, and the Compliance SOS bit, but I think what was intended was the 3-bit Transmit Margin field at bits 9:7. Signed-off-by: Bjorn Helgaas Reviewed-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/cik.c | 14 ++++++++++---- drivers/gpu/drm/amd/amdgpu/si.c | 10 +++++++--- drivers/gpu/drm/radeon/cik.c | 14 ++++++++++---- drivers/gpu/drm/radeon/si.c | 14 ++++++++++---- include/uapi/linux/pci_regs.h | 2 ++ 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c index b81bb414fcb3..e4a595cdd4c1 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik.c +++ b/drivers/gpu/drm/amd/amdgpu/cik.c @@ -1498,13 +1498,19 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev) /* linkctl2 */ pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (bridge_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (bridge_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, tmp16); pci_read_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (gpu_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (gpu_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL2, tmp16); tmp = RREG32_PCIE(ixPCIE_LC_CNTL4); diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c index 493af42152f2..cf543410a424 100644 --- a/drivers/gpu/drm/amd/amdgpu/si.c +++ b/drivers/gpu/drm/amd/amdgpu/si.c @@ -1737,12 +1737,16 @@ static void si_pcie_gen3_enable(struct amdgpu_device *adev) pci_write_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL, tmp16); pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (bridge_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (bridge_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, tmp16); pci_read_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); tmp16 |= (gpu_cfg2 & ((1 << 4) | (7 << 9))); pci_write_config_word(adev->pdev, gpu_pos + PCI_EXP_LNKCTL2, tmp16); diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index 62eab82a64f9..95ffa0bff2d8 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -9619,13 +9619,19 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev) /* linkctl2 */ pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (bridge_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (bridge_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, tmp16); pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (gpu_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (gpu_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, tmp16); tmp = RREG32_PCIE_PORT(PCIE_LC_CNTL4); diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index 05894d198a79..69993d34d1e9 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c @@ -7202,13 +7202,19 @@ static void si_pcie_gen3_enable(struct radeon_device *rdev) /* linkctl2 */ pci_read_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (bridge_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (bridge_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(root, bridge_pos + PCI_EXP_LNKCTL2, tmp16); pci_read_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, &tmp16); - tmp16 &= ~((1 << 4) | (7 << 9)); - tmp16 |= (gpu_cfg2 & ((1 << 4) | (7 << 9))); + tmp16 &= ~(PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN); + tmp16 |= (gpu_cfg2 & + (PCI_EXP_LNKCTL2_ENTER_COMP | + PCI_EXP_LNKCTL2_TX_MARGIN)); pci_write_config_word(rdev->pdev, gpu_pos + PCI_EXP_LNKCTL2, tmp16); tmp = RREG32_PCIE_PORT(PCIE_LC_CNTL4); diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 29d6e93fd15e..5869e5778a05 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -673,6 +673,8 @@ #define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003 /* Supported Speed 8GT/s */ #define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004 /* Supported Speed 16GT/s */ #define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005 /* Supported Speed 32GT/s */ +#define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010 /* Enter Compliance */ +#define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380 /* Transmit Margin */ #define PCI_EXP_LNKSTA2 50 /* Link Status 2 */ #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52 /* v2 endpoints with link end here */ #define PCI_EXP_SLTCAP2 52 /* Slot Capabilities 2 */ -- 2.24.0.rc1.363.gb1bccd3e3d-goog 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=-10.0 required=3.0 tests=INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,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 DC7DDC17441 for ; Mon, 11 Nov 2019 19:30:09 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 BE93D222BD for ; Mon, 11 Nov 2019 19:30:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BE93D222BD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8BF246E29D; Mon, 11 Nov 2019 19:30:05 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7774C6E291; Mon, 11 Nov 2019 19:30:04 +0000 (UTC) Received: from localhost (unknown [69.71.4.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EF8C3222BD; Mon, 11 Nov 2019 19:30:03 +0000 (UTC) From: Bjorn Helgaas To: Alex Deucher , =?UTF-8?q?Christian=20K=C3=B6nig?= , David Zhou , David Airlie , Daniel Vetter Subject: [PATCH 1/2] drm: replace incorrect Compliance/Margin magic numbers with PCI_EXP_LNKCTL2 definitions Date: Mon, 11 Nov 2019 13:29:31 -0600 Message-Id: <20191111192932.36048-2-helgaas@kernel.org> X-Mailer: git-send-email 2.24.0.rc1.363.gb1bccd3e3d-goog In-Reply-To: <20191111192932.36048-1-helgaas@kernel.org> References: <20191111192932.36048-1-helgaas@kernel.org> MIME-Version: 1.0 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1573500604; bh=VB2dZmEcot9Bc/BpnX+kw3w08T8tWmeDEc/Hjc5NrPU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IqOfj6OvEQKd4+pt4YY/02DLS4DFYierZT0JbCLGjC0CHlAtZ+F8WbFby1iXDZcVf cnVyQ4CsKrP23xbkQKBIXRhzCwk+yzVzqKdnaILAAVJZWeUOpAC/YIsS+f/sjQXo3t BNX3rsWGUBeCilkVpCsVXTtksuwGeC9YDfO8xIJs= X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Frederick Lawler , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, Bjorn Helgaas , Ilia Mirkin Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Message-ID: <20191111192931.Y-odgfGAZRu1jFSBIqTMwbprZNZjCSKBiKxNjYdQ5H4@z> RnJvbTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KCkFkZCBkZWZpbml0aW9u cyBmb3IgdGhlc2UgUENJZSBMaW5rIENvbnRyb2wgMiByZWdpc3RlciBmaWVsZHM6CgogIEVudGVy IENvbXBsaWFuY2UKICBUcmFuc21pdCBNYXJnaW4KCmFuZCB1c2UgdGhlbSBpbiBhbWRncHUgYW5k IHJhZGVvbi4KCk5PVEU6IFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlICI3IDw8 IDkiIHdhcyBhcHBhcmVudGx5IGEgdHlwby4KVGhhdCBtYXNrIGluY2x1ZGVkIHRoZSBoaWdoIG9y ZGVyIGJpdCBvZiBUcmFuc21pdCBNYXJnaW4sIHRoZSBFbnRlcgpNb2RpZmllZCBDb21wbGlhbmNl IGJpdCwgYW5kIHRoZSBDb21wbGlhbmNlIFNPUyBiaXQsIGJ1dCBJIHRoaW5rIHdoYXQKd2FzIGlu dGVuZGVkIHdhcyB0aGUgMy1iaXQgVHJhbnNtaXQgTWFyZ2luIGZpZWxkIGF0IGJpdHMgOTo3LgoK U2lnbmVkLW9mZi1ieTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KUmV2aWV3 ZWQtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYyB8IDE0ICsrKysrKysrKystLS0tCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9zaS5jICB8IDEwICsrKysrKystLS0KIGRyaXZlcnMvZ3B1L2Ry bS9yYWRlb24vY2lrLmMgICAgIHwgMTQgKysrKysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9y YWRlb24vc2kuYyAgICAgIHwgMTQgKysrKysrKysrKy0tLS0KIGluY2x1ZGUvdWFwaS9saW51eC9w Y2lfcmVncy5oICAgIHwgIDIgKysKIDUgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwg MTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Y2lrLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYwppbmRleCBiODFiYjQxNGZj YjMuLmU0YTU5NWNkZDRjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Y2lrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMKQEAgLTE0OTgsMTMg KzE0OTgsMTkgQEAgc3RhdGljIHZvaWQgY2lrX3BjaWVfZ2VuM19lbmFibGUoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYpCiAKIAkJCQkvKiBsaW5rY3RsMiAqLwogCQkJCXBjaV9yZWFkX2NvbmZp Z193b3JkKHJvb3QsIGJyaWRnZV9wb3MgKyBQQ0lfRVhQX0xOS0NUTDIsICZ0bXAxNik7Ci0JCQkJ dG1wMTYgJj0gfigoMSA8PCA0KSB8ICg3IDw8IDkpKTsKLQkJCQl0bXAxNiB8PSAoYnJpZGdlX2Nm ZzIgJiAoKDEgPDwgNCkgfCAoNyA8PCA5KSkpOworCQkJCXRtcDE2ICY9IH4oUENJX0VYUF9MTktD VEwyX0VOVEVSX0NPTVAgfAorCQkJCQkgICBQQ0lfRVhQX0xOS0NUTDJfVFhfTUFSR0lOKTsKKwkJ CQl0bXAxNiB8PSAoYnJpZGdlX2NmZzIgJgorCQkJCQkgIChQQ0lfRVhQX0xOS0NUTDJfRU5URVJf Q09NUCB8CisJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMMl9UWF9NQVJHSU4pKTsKIAkJCQlwY2lfd3Jp dGVfY29uZmlnX3dvcmQocm9vdCwgYnJpZGdlX3BvcyArIFBDSV9FWFBfTE5LQ1RMMiwgdG1wMTYp OwogCiAJCQkJcGNpX3JlYWRfY29uZmlnX3dvcmQoYWRldi0+cGRldiwgZ3B1X3BvcyArIFBDSV9F WFBfTE5LQ1RMMiwgJnRtcDE2KTsKLQkJCQl0bXAxNiAmPSB+KCgxIDw8IDQpIHwgKDcgPDwgOSkp OwotCQkJCXRtcDE2IHw9IChncHVfY2ZnMiAmICgoMSA8PCA0KSB8ICg3IDw8IDkpKSk7CisJCQkJ dG1wMTYgJj0gfihQQ0lfRVhQX0xOS0NUTDJfRU5URVJfQ09NUCB8CisJCQkJCSAgIFBDSV9FWFBf TE5LQ1RMMl9UWF9NQVJHSU4pOworCQkJCXRtcDE2IHw9IChncHVfY2ZnMiAmCisJCQkJCSAgKFBD SV9FWFBfTE5LQ1RMMl9FTlRFUl9DT01QIHwKKwkJCQkJICAgUENJX0VYUF9MTktDVEwyX1RYX01B UkdJTikpOwogCQkJCXBjaV93cml0ZV9jb25maWdfd29yZChhZGV2LT5wZGV2LCBncHVfcG9zICsg UENJX0VYUF9MTktDVEwyLCB0bXAxNik7CiAKIAkJCQl0bXAgPSBSUkVHMzJfUENJRShpeFBDSUVf TENfQ05UTDQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMKaW5kZXggNDkzYWY0MjE1MmYyLi5jZjU0 MzQxMGE0MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NpLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2kuYwpAQCAtMTczNywxMiArMTczNywxNiBA QCBzdGF0aWMgdm9pZCBzaV9wY2llX2dlbjNfZW5hYmxlKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCQkJCXBjaV93cml0ZV9jb25maWdfd29yZChhZGV2LT5wZGV2LCBncHVfcG9zICsgUENJ X0VYUF9MTktDVEwsIHRtcDE2KTsKIAogCQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKHJvb3QsIGJy aWRnZV9wb3MgKyBQQ0lfRVhQX0xOS0NUTDIsICZ0bXAxNik7Ci0JCQkJdG1wMTYgJj0gfigoMSA8 PCA0KSB8ICg3IDw8IDkpKTsKLQkJCQl0bXAxNiB8PSAoYnJpZGdlX2NmZzIgJiAoKDEgPDwgNCkg fCAoNyA8PCA5KSkpOworCQkJCXRtcDE2ICY9IH4oUENJX0VYUF9MTktDVEwyX0VOVEVSX0NPTVAg fAorCQkJCQkgICBQQ0lfRVhQX0xOS0NUTDJfVFhfTUFSR0lOKTsKKwkJCQl0bXAxNiB8PSAoYnJp ZGdlX2NmZzIgJgorCQkJCQkgIChQQ0lfRVhQX0xOS0NUTDJfRU5URVJfQ09NUCB8CisJCQkJCSAg IFBDSV9FWFBfTE5LQ1RMMl9UWF9NQVJHSU4pKTsKIAkJCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQo cm9vdCwgYnJpZGdlX3BvcyArIFBDSV9FWFBfTE5LQ1RMMiwgdG1wMTYpOwogCiAJCQkJcGNpX3Jl YWRfY29uZmlnX3dvcmQoYWRldi0+cGRldiwgZ3B1X3BvcyArIFBDSV9FWFBfTE5LQ1RMMiwgJnRt cDE2KTsKLQkJCQl0bXAxNiAmPSB+KCgxIDw8IDQpIHwgKDcgPDwgOSkpOworCQkJCXRtcDE2ICY9 IH4oUENJX0VYUF9MTktDVEwyX0VOVEVSX0NPTVAgfAorCQkJCQkgICBQQ0lfRVhQX0xOS0NUTDJf VFhfTUFSR0lOKTsKIAkJCQl0bXAxNiB8PSAoZ3B1X2NmZzIgJiAoKDEgPDwgNCkgfCAoNyA8PCA5 KSkpOwogCQkJCXBjaV93cml0ZV9jb25maWdfd29yZChhZGV2LT5wZGV2LCBncHVfcG9zICsgUENJ X0VYUF9MTktDVEwyLCB0bXAxNik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRl b24vY2lrLmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2Npay5jCmluZGV4IDYyZWFiODJhNjRm OS4uOTVmZmEwYmZmMmQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL2Npay5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vY2lrLmMKQEAgLTk2MTksMTMgKzk2MTksMTkg QEAgc3RhdGljIHZvaWQgY2lrX3BjaWVfZ2VuM19lbmFibGUoc3RydWN0IHJhZGVvbl9kZXZpY2Ug KnJkZXYpCiAKIAkJCQkvKiBsaW5rY3RsMiAqLwogCQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKHJv b3QsIGJyaWRnZV9wb3MgKyBQQ0lfRVhQX0xOS0NUTDIsICZ0bXAxNik7Ci0JCQkJdG1wMTYgJj0g figoMSA8PCA0KSB8ICg3IDw8IDkpKTsKLQkJCQl0bXAxNiB8PSAoYnJpZGdlX2NmZzIgJiAoKDEg PDwgNCkgfCAoNyA8PCA5KSkpOworCQkJCXRtcDE2ICY9IH4oUENJX0VYUF9MTktDVEwyX0VOVEVS X0NPTVAgfAorCQkJCQkgICBQQ0lfRVhQX0xOS0NUTDJfVFhfTUFSR0lOKTsKKwkJCQl0bXAxNiB8 PSAoYnJpZGdlX2NmZzIgJgorCQkJCQkgIChQQ0lfRVhQX0xOS0NUTDJfRU5URVJfQ09NUCB8CisJ CQkJCSAgIFBDSV9FWFBfTE5LQ1RMMl9UWF9NQVJHSU4pKTsKIAkJCQlwY2lfd3JpdGVfY29uZmln X3dvcmQocm9vdCwgYnJpZGdlX3BvcyArIFBDSV9FWFBfTE5LQ1RMMiwgdG1wMTYpOwogCiAJCQkJ cGNpX3JlYWRfY29uZmlnX3dvcmQocmRldi0+cGRldiwgZ3B1X3BvcyArIFBDSV9FWFBfTE5LQ1RM MiwgJnRtcDE2KTsKLQkJCQl0bXAxNiAmPSB+KCgxIDw8IDQpIHwgKDcgPDwgOSkpOwotCQkJCXRt cDE2IHw9IChncHVfY2ZnMiAmICgoMSA8PCA0KSB8ICg3IDw8IDkpKSk7CisJCQkJdG1wMTYgJj0g fihQQ0lfRVhQX0xOS0NUTDJfRU5URVJfQ09NUCB8CisJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMMl9U WF9NQVJHSU4pOworCQkJCXRtcDE2IHw9IChncHVfY2ZnMiAmCisJCQkJCSAgKFBDSV9FWFBfTE5L Q1RMMl9FTlRFUl9DT01QIHwKKwkJCQkJICAgUENJX0VYUF9MTktDVEwyX1RYX01BUkdJTikpOwog CQkJCXBjaV93cml0ZV9jb25maWdfd29yZChyZGV2LT5wZGV2LCBncHVfcG9zICsgUENJX0VYUF9M TktDVEwyLCB0bXAxNik7CiAKIAkJCQl0bXAgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05U TDQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9zaS5jIGIvZHJpdmVycy9n cHUvZHJtL3JhZGVvbi9zaS5jCmluZGV4IDA1ODk0ZDE5OGE3OS4uNjk5OTNkMzRkMWU5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3NpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3JhZGVvbi9zaS5jCkBAIC03MjAyLDEzICs3MjAyLDE5IEBAIHN0YXRpYyB2b2lkIHNpX3BjaWVf Z2VuM19lbmFibGUoc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYpCiAKIAkJCQkvKiBsaW5rY3Rs MiAqLwogCQkJCXBjaV9yZWFkX2NvbmZpZ193b3JkKHJvb3QsIGJyaWRnZV9wb3MgKyBQQ0lfRVhQ X0xOS0NUTDIsICZ0bXAxNik7Ci0JCQkJdG1wMTYgJj0gfigoMSA8PCA0KSB8ICg3IDw8IDkpKTsK LQkJCQl0bXAxNiB8PSAoYnJpZGdlX2NmZzIgJiAoKDEgPDwgNCkgfCAoNyA8PCA5KSkpOworCQkJ CXRtcDE2ICY9IH4oUENJX0VYUF9MTktDVEwyX0VOVEVSX0NPTVAgfAorCQkJCQkgICBQQ0lfRVhQ X0xOS0NUTDJfVFhfTUFSR0lOKTsKKwkJCQl0bXAxNiB8PSAoYnJpZGdlX2NmZzIgJgorCQkJCQkg IChQQ0lfRVhQX0xOS0NUTDJfRU5URVJfQ09NUCB8CisJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMMl9U WF9NQVJHSU4pKTsKIAkJCQlwY2lfd3JpdGVfY29uZmlnX3dvcmQocm9vdCwgYnJpZGdlX3BvcyAr IFBDSV9FWFBfTE5LQ1RMMiwgdG1wMTYpOwogCiAJCQkJcGNpX3JlYWRfY29uZmlnX3dvcmQocmRl di0+cGRldiwgZ3B1X3BvcyArIFBDSV9FWFBfTE5LQ1RMMiwgJnRtcDE2KTsKLQkJCQl0bXAxNiAm PSB+KCgxIDw8IDQpIHwgKDcgPDwgOSkpOwotCQkJCXRtcDE2IHw9IChncHVfY2ZnMiAmICgoMSA8 PCA0KSB8ICg3IDw8IDkpKSk7CisJCQkJdG1wMTYgJj0gfihQQ0lfRVhQX0xOS0NUTDJfRU5URVJf Q09NUCB8CisJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMMl9UWF9NQVJHSU4pOworCQkJCXRtcDE2IHw9 IChncHVfY2ZnMiAmCisJCQkJCSAgKFBDSV9FWFBfTE5LQ1RMMl9FTlRFUl9DT01QIHwKKwkJCQkJ ICAgUENJX0VYUF9MTktDVEwyX1RYX01BUkdJTikpOwogCQkJCXBjaV93cml0ZV9jb25maWdfd29y ZChyZGV2LT5wZGV2LCBncHVfcG9zICsgUENJX0VYUF9MTktDVEwyLCB0bXAxNik7CiAKIAkJCQl0 bXAgPSBSUkVHMzJfUENJRV9QT1JUKFBDSUVfTENfQ05UTDQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS91YXBpL2xpbnV4L3BjaV9yZWdzLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcGNpX3JlZ3MuaApp bmRleCAyOWQ2ZTkzZmQxNWUuLjU4NjllNTc3OGEwNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBp L2xpbnV4L3BjaV9yZWdzLmgKKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3BjaV9yZWdzLmgKQEAg LTY3Myw2ICs2NzMsOCBAQAogI2RlZmluZSAgUENJX0VYUF9MTktDVEwyX1RMU184XzBHVAkweDAw MDMgLyogU3VwcG9ydGVkIFNwZWVkIDhHVC9zICovCiAjZGVmaW5lICBQQ0lfRVhQX0xOS0NUTDJf VExTXzE2XzBHVAkweDAwMDQgLyogU3VwcG9ydGVkIFNwZWVkIDE2R1QvcyAqLwogI2RlZmluZSAg UENJX0VYUF9MTktDVEwyX1RMU18zMl8wR1QJMHgwMDA1IC8qIFN1cHBvcnRlZCBTcGVlZCAzMkdU L3MgKi8KKyNkZWZpbmUgIFBDSV9FWFBfTE5LQ1RMMl9FTlRFUl9DT01QCTB4MDAxMCAvKiBFbnRl ciBDb21wbGlhbmNlICovCisjZGVmaW5lICBQQ0lfRVhQX0xOS0NUTDJfVFhfTUFSR0lOCTB4MDM4 MCAvKiBUcmFuc21pdCBNYXJnaW4gKi8KICNkZWZpbmUgUENJX0VYUF9MTktTVEEyCQk1MAkvKiBM aW5rIFN0YXR1cyAyICovCiAjZGVmaW5lIFBDSV9DQVBfRVhQX0VORFBPSU5UX1NJWkVPRl9WMgk1 MgkvKiB2MiBlbmRwb2ludHMgd2l0aCBsaW5rIGVuZCBoZXJlICovCiAjZGVmaW5lIFBDSV9FWFBf U0xUQ0FQMgkJNTIJLyogU2xvdCBDYXBhYmlsaXRpZXMgMiAqLwotLSAKMi4yNC4wLnJjMS4zNjMu Z2IxYmNjZDNlM2QtZ29vZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4