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 A8D9CFF8875 for ; Thu, 30 Apr 2026 02:29:13 +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=dHwSP6WPoN7pl3nvD2bxp5kkXip2+YDmCq4jrVg04hM=; b=JgTj0phalRE7lv sIg85qRTybCvSM43Hw9bVkE+/0L1C9pukXw7KzfEg1glVmp6PE0WqhhWwPBeX6EIOprrY4fYFoKOJ QmYZOgW5Vbjh1oa2jKTKWIt63bpvHb9/aYaueXq1lAy5hEsZPpCr62RbO0M0pF3YQynbL5MYIA7FK c3Mwb3CqYN0daTF2QksxAP4Ggr9zpxqIOfMLptIK4YZDtdwPWL5n0/UAM12j7WrIExTPvZGaF1kFL Nri0JxdqTOWMtuj8PuUAEEpTMpLM672Rgv5OM4CMvx1tGRGTalZU3o0R3i6k+Q0DuXGuOAztOfH/y Q9cIaU0gQT7mEJtIrkyg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1wIH9H-00000004SFt-1Guu; Thu, 30 Apr 2026 02:29:07 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1wIH9D-00000004SEI-2WL7 for linux-riscv@lists.infradead.org; Thu, 30 Apr 2026 02:29:05 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2b2589c26e3so3234075ad.1 for ; Wed, 29 Apr 2026 19:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777516142; x=1778120942; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=De//G9K6upZ2sX81StxY7zO4fKEAXMOFhjgiUDQyzhg=; b=Z9jcYLjKq+kTqwt0H7c+jEOY6nSyBdJ414kenK2zCaADgpJZyjomJX8MtUvw6DyKWS P7A3gJO28WQYmH5Igv4hTakGZxuEqBbZ3PBWWh5qpruhT4SCIbG7RMrfHknrjfgzOns7 MXOWdGQc0WzAjsMP4kaMiV/93MEIYTlXQvLKY9SJZM9yi4aJr0sFYjR1l3fwwo7mSfVv t8ed12qNPwXu1H7mCnjQ7RD/3voG7wS/Fqw7vs0Ocyz2NBg4hqOJ7wQFTQaHeFGyLA7K KCegYjtHY7ehqRR0IETbA+MosqWS47/epu+e3Tmt2XyJC6RhTxR19xE0I2NWgAC9snrX aeHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777516142; x=1778120942; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=De//G9K6upZ2sX81StxY7zO4fKEAXMOFhjgiUDQyzhg=; b=C5bXZP2xg4b5N7JuFs+Rzr9tEu9+W6xUv3cJ3Rj0skYVVU4T0a8jJ8k+KFYy6tJgrf mJIeXjhiZEc8G0QWqIYAsDAnv65nvo07A6e8Y9dDIEmG1Uienk1Q+vgvUs1NWHrih4a7 K5K/3ZF74lDNGlcpMQujS5qWmM1WTTXWjzCA2frPskDXjNp3UMqDmcb4nHNgNpAL4vez JUuL+W5qhn6rPKQm3HDnIkwyYNvPMTXd0hZTYuyUWFji4SHo9RuhLi09pJpUCFnNNrLB xY5PVhRfL6Mbuzg+tTBMVTKa7tvWyFHrRRxhsJ5vuu12LltJ1N4B70YZKOzR/lnv/IDd NJPg== X-Forwarded-Encrypted: i=1; AFNElJ/EMqkhPNdLyWS0KyXqwGF3SPiD8qYlJZxdieJD0ISWKlTQc411BwX9EiBFYwS2yiAFp4v9Pxxz/Np0Sg==@lists.infradead.org X-Gm-Message-State: AOJu0Yxp110QWZcliPkunrNtTdzNa7S3yAdaU5uJzlvbc4C2m8plaGeO K3uSqoaiMW6UGEV64pT4TOQDZPVD244R1J8Q9VWAHrv5p4uR6mUbOouV X-Gm-Gg: AeBDiesLkkFv5HQdzFc1fLhBmaVoLAlt09pwapswpxHFN6FsN2DY8JN6Ftx4TCSBJy5 GK+a9ZEY+aEkD9vHIAMNIkRH/1I28mHDkvsmDtdiUL9u+0XjE6rDwO5Ox9GQxRgiPmfjoJEBHMM OD99ZPHxpiB3L42ODGyGsiYShyvXV6TzNd8edOeLznAGvgV9bXChPnvDMfZUqzr6C9Q8bMkoax7 +IbOWZx/v6ZgwCZTrZwx98k0wi/xGMmO8iZZp0hJTD+5seW6G+URIpq83Pyvb5fhLCj8PNQhujf Bk+d+X1wCOtIIH6mbOXc6Pq35Uvz5rsxaktmfPWNfcXg1AEH4AH5SCMExhNvxbskT0IFzjUhL/p uz/gWL/IcTJeIJRRasLttP6+iCxfbQFQCwT8a9l9WyaK8tifOxrnZiJxfXqOn5Kr4F3GpnfZtrd 6CIOwN/V4ShGuB1G/8xbU4+y6UKs9tdAZfsQ== X-Received: by 2002:a17:902:ca09:b0:2b0:a980:3687 with SMTP id d9443c01a7336-2b9a230545cmr7474495ad.3.1777516142472; Wed, 29 Apr 2026 19:29:02 -0700 (PDT) Received: from localhost ([2001:19f0:8001:1b2d:5400:5ff:fefa:a95d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b98895c27csm35959615ad.58.2026.04.29.19.29.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 19:29:02 -0700 (PDT) From: Inochi Amaoto To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Kees Cook , "Gustavo A. R. Silva" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Inochi Amaoto , Ze Huang , Alex Elder Cc: linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH 2/2] phy: spacemit: Add USB3/PCIe comb PHY driver for Spacemit K3 Date: Thu, 30 Apr 2026 10:28:41 +0800 Message-ID: <20260430022843.1090138-3-inochiama@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260430022843.1090138-1-inochiama@gmail.com> References: <20260430022843.1090138-1-inochiama@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260429_192903_667758_FC2FCDC1 X-CRM114-Status: GOOD ( 25.45 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org VGhlIGNvbWIgUEhZIG9uIEszIHJlcXVpcmVzIHRvIGNvbmZpZ3VyZSBhIHN5c2NvbiBkZXZpY2Ug Zm9yIHRoZQpyaWdodCBtdXggY29uZmlndXJhdGlvbi4gQW5kIGl0IHJlcXVpcmVzIGNhbGlicmF0 aW9uIGJlZm9yZSBhbnkKdXNhZ2UuCgpBZGQgVVNCMy9QQ0llIGNvbWIgUEhZIGRyaXZlciBmb3Ig U3BhY2VtaXQgSzMuCgpTaWduZWQtb2ZmLWJ5OiBJbm9jaGkgQW1hb3RvIDxpbm9jaGlhbWFAZ21h aWwuY29tPgotLS0KIGRyaXZlcnMvcGh5L3NwYWNlbWl0L0tjb25maWcgICAgICAgICAgfCAgMTYg KysKIGRyaXZlcnMvcGh5L3NwYWNlbWl0L01ha2VmaWxlICAgICAgICAgfCAgIDIgKwogZHJpdmVy cy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbWJwaHkuYyB8IDI1MCArKysrKysrKysrKysrKysrCiBk cml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tbW9uLmMgIHwgMzk4ICsrKysrKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tbW9uLmggIHwgIDI3 ICsrCiA1IGZpbGVzIGNoYW5nZWQsIDY5MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbWJwaHkuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvcGh5L3NwYWNlbWl0L3BoeS1rMy1jb21tb24uYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvcGh5L3NwYWNlbWl0L3BoeS1rMy1jb21tb24uaAoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvcGh5L3NwYWNlbWl0L0tjb25maWcgYi9kcml2ZXJzL3BoeS9zcGFjZW1pdC9LY29uZmln CmluZGV4IDUwYjAwMDVhY2Y2Ni4uNWZkZjE4ZmNlNDk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bo eS9zcGFjZW1pdC9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGh5L3NwYWNlbWl0L0tjb25maWcKQEAg LTIzLDMgKzIzLDE5IEBAIGNvbmZpZyBQSFlfU1BBQ0VNSVRfSzFfVVNCMgogCWhlbHAKIAkgIEVu YWJsZSB0aGlzIHRvIHN1cHBvcnQgSzEgVVNCIDIuMCBQSFkgZHJpdmVyLiBUaGlzIGRyaXZlciB0 YWtlcyBjYXJlIG9mCiAJICBlbmFibGluZyBhbmQgY2xvY2sgc2V0dXAgYW5kIHdpbGwgYmUgdXNl ZCBieSBLMSB1ZGMvZWhjaS9vdGcveGhjaSBkcml2ZXIuCisKK2NvbmZpZyBQSFlfU1BBQ0VNSVRf SzNfQ09NTU9OX09QUworCXRyaXN0YXRlCisJc2VsZWN0IE1GRF9TWVNDT04KKwlzZWxlY3QgR0VO RVJJQ19QSFkKKworY29uZmlnIFBIWV9TUEFDRU1JVF9LM19DT01CT19QSFkKKwl0cmlzdGF0ZSAi U3BhY2VtaVQgSzMgVVNCMy9QQ0llIFBIWSBzdXBwb3J0IgorCWRlcGVuZHMgb24gKEFSQ0hfU1BB Q0VNSVQgfHwgQ09NUElMRV9URVNUKSAmJiBPRgorCWRlcGVuZHMgb24gQ09NTU9OX0NMSworCXNl bGVjdCBQSFlfU1BBQ0VNSVRfSzNfQ09NTU9OX09QUworCWhlbHAKKwkgIEVuYWJsZSB0aGlzIHRv IHN1cHBvcnQgSzMgVVNCMy9QQ0llIGNvbWJvIFBIWSBkcml2ZXIuIFRoaXMKKwkgIGRyaXZlciB0 YWtlcyBjYXJlIG9mIGVuYWJsaW5nIGFuZCBjbG9jayBzZXR1cCBhbmQgd2lsbCBiZSB1c2VkCisJ ICBieSBLMyBkd2MzIGRyaXZlci4KKwkgIElmIHVuc3VyZSwgc2F5IE4uCmRpZmYgLS1naXQgYS9k cml2ZXJzL3BoeS9zcGFjZW1pdC9NYWtlZmlsZSBiL2RyaXZlcnMvcGh5L3NwYWNlbWl0L01ha2Vm aWxlCmluZGV4IGE4MjFhMjFkNjE0Mi4uNDFiZTdiMDM4OGRhIDEwMDY0NAotLS0gYS9kcml2ZXJz L3BoeS9zcGFjZW1pdC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3BoeS9zcGFjZW1pdC9NYWtlZmls ZQpAQCAtMSwzICsxLDUgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eQogb2JqLSQoQ09ORklHX1BIWV9TUEFDRU1JVF9LMV9QQ0lFKQkJKz0gcGh5LWsxLXBjaWUubwog b2JqLSQoQ09ORklHX1BIWV9TUEFDRU1JVF9LMV9VU0IyKQkJKz0gcGh5LWsxLXVzYjIubworb2Jq LSQoQ09ORklHX1BIWV9TUEFDRU1JVF9LM19DT01CT19QSFkpCQkrPSBwaHktazMtY29tYnBoeS5v CitvYmotJChDT05GSUdfUEhZX1NQQUNFTUlUX0szX0NPTU1PTl9PUFMpCSs9IHBoeS1rMy1jb21t b24ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbWJwaHkuYyBi L2RyaXZlcnMvcGh5L3NwYWNlbWl0L3BoeS1rMy1jb21icGh5LmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NmZhNjMzMGFkNmUKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tYnBoeS5jCkBAIC0wLDAgKzEsMjUwIEBACisv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogcGh5LWszLXVz YjMuYyAtIFNwYWNlbWlUIEszIFR5cGUtQyBPcmllbnRhdGlvbiBTd2l0Y2ggRHJpdmVyCisgKgor ICogQ29weXJpZ2h0IChjKSAyMDI1IFNwYWNlbWlUIFRlY2hub2xvZ3kgQ28uIEx0ZAorICovCisK KyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2lu Y2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5j bHVkZSA8bGludXgvcGh5L3BoeS5oPgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3BoeS5o PgorCisjaW5jbHVkZSAicGh5LWszLWNvbW1vbi5oIgorCisvKgorICogVGhlIFBDSUUvVVNCIFN1 YnN5c3RlbSBvbiBTcGFjZW1pVCBLMyBoYXZlIDMgc2luZ2xlIGxhbmUgUElQRTMgUEhZcworICog KFBIWTIvMy80KSBzaGFyZWQgYnkgUENJRSBQb3J0Qy9EIGFuZCBVU0IzIFBvcnRCL0MvRC4KKyAq CisgKiBQTVVBX1BDSUVfU1VCU1lTX01HTVRbNDowXQorICoKKyAqICAgYml0NCA9IDAgOiBQQ0ll IEEgWDggbW9kZSwgYWxsIDggbGFuZXMgZGVkaWNhdGVkIHRvIFBDSWUgUG9ydCBBCisgKiAgICAg ICAgICAxIDogUEhZIGxhbmVzIHNoYXJlZCBiZXR3ZWVuIFBDSWUgb3IgVVNCIGFjY29yZGluZyB0 byBbMzowXQorICoKKyAqIEFsbCBQSFkgbWF0cml4IGNvbWJpbmF0aW9ucyBhY2NvcmRpbmcgdG8g WzQ6MF06CisgKgorICogICAweDBYIDogUENJZS1BIFg4CisgKiAgIDB4MTAgOiBQQ0llLUMgeDIg KFBIWTIrUEhZMykgKyBQQ0llLUQgeDEgKFBIWTQpCisgKiAgIDB4MTEgOiBQQ0llLUMgeDIgKFBI WTIrUEhZMykgKyBVU0ItRCAoUEhZNCkKKyAqICAgMHgxMiA6IFBDSWUtQyB4MSAoUEhZMikgICAg ICArIFVTQi1DIChQSFkzKQorICogICAweDEzIDogUENJZS1DIHgxIChQSFkyKSAgICAgICsgVVNC LUMgKFBIWTMpICsgVVNCLUQgKFBIWTQpCisgKiAgIDB4MTQgOiBQQ0llLUMgeDEgKFBIWTMpICAg ICAgKyBVU0ItQiAoUEhZMikKKyAqICAgMHgxNSA6IFBDSWUtQyB4MSAoUEhZMykgICAgICArIFVT Qi1CIChQSFkyKSArIFVTQi1EIChQSFk0KQorICogICAweDE2IDogVVNCLUIgKFBIWTIpICsgVVNC LUMgKFBIWTMpICsgUENJZSBEIHgxIChQSFk0KQorICogICAweDE3IDogVVNCLUIgKFBIWTIpICsg VVNCLUMgKFBIWTMpICsgVVNCLUQgKFBIWTQpCisgKgorICogU28gYW55IFVTQiBQb3J0IEIvQy9E IG9wZXJhdGlvbiByZXF1aXJlcyBQQ0llIEEgWDggbW9kZSB0byBiZSBkaXNhYmxlZC4KKyAqLwor I2RlZmluZSBQTVVBX1BDSUVfU1VCU1lTX01HTVQJCTB4MWQ4CisjZGVmaW5lIFBVX01BVFJJWF9D T05GX01BU0sJCUdFTk1BU0soNCwgMCkKKworI2RlZmluZSBDT01CUEhZX01BWF9TVUJQSFlTCQk2 CisKK3N0cnVjdCBrM19jb21iX3BoeSB7CisJc3RydWN0IGRldmljZSAqZGV2OworCXN0cnVjdCBr M19sYW5lX2dyb3VwIGdyb3Vwc1tDT01CUEhZX01BWF9TVUJQSFlTXTsKKwl2b2lkIF9faW9tZW0g KmJhc2U7CisJc3RydWN0IHJlZ21hcCAqYXBiX3NwYXJlOworfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBrM19waHlfbGFuZV9ncm91cF9kYXRhIGszX2NvbWJwaHlfbGFuZV9ncm91cDAgPSB7CisJ LmxhbmVzCQk9IDIsCisJLmNvbmZpZwkJPSAweDAwLAorCS5tYXNrCQk9IDB4ZmYsCisJLm9mZnNl dHMJPSB7CisJCTB4MCwgMHg0MDAKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBrM19w aHlfbGFuZV9ncm91cF9kYXRhIGszX2NvbWJwaHlfbGFuZV9ncm91cDEgPSB7CisJLmxhbmVzCQk9 IDIsCisJLmNvbmZpZwkJPSAweDAwLAorCS5tYXNrCQk9IDB4ZmYsCisJLm9mZnNldHMJPSB7CisJ CTB4MTAwMDAwLCAweDEwMDQwMAorCX0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGszX3Bo eV9sYW5lX2dyb3VwX2RhdGEgazNfY29tYnBoeV9sYW5lX2dyb3VwMiA9IHsKKwkubGFuZXMJCT0g MSwKKwkuY29uZmlnCQk9IDB4MTQsCisJLm1hc2sJCT0gMHgxNCwKKwkub2Zmc2V0cwk9IHsKKwkJ MHgyMDAwMDAKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBrM19waHlfbGFuZV9ncm91 cF9kYXRhIGszX2NvbWJwaHlfbGFuZV9ncm91cDMgPSB7CisJLmxhbmVzCQk9IDEsCisJLmNvbmZp ZwkJPSAweDEyLAorCS5tYXNrCQk9IDB4MTIsCisJLm9mZnNldHMJPSB7CisJCTB4MzAwMDAwCisJ fSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgazNfcGh5X2xhbmVfZ3JvdXBfZGF0YSBrM19j b21icGh5X2xhbmVfZ3JvdXA0ID0geworCS5sYW5lcwkJPSAxLAorCS5jb25maWcJCT0gMHgxMSwK KwkubWFzawkJPSAweDExLAorCS5vZmZzZXRzCT0geworCQkweDQwMDAwMAorCX0sCit9OworCitz dGF0aWMgY29uc3Qgc3RydWN0IGszX3BoeV9sYW5lX2dyb3VwX2RhdGEgazNfY29tYnBoeV9sYW5l X2dyb3VwNSA9IHsKKwkubGFuZXMJCT0gMSwKKwkuY29uZmlnCQk9IDB4MDAsCisJLm1hc2sJCT0g MHhmZiwKKwkub2Zmc2V0cwk9IHsKKwkJMHg1MDAwMDAKKwl9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBrM19waHlfbGFuZV9ncm91cF9kYXRhICprM19jb21icGh5X2xhbmVfZGF0YXNbXSA9 IHsKKwkmazNfY29tYnBoeV9sYW5lX2dyb3VwMCwKKwkmazNfY29tYnBoeV9sYW5lX2dyb3VwMSwK KwkmazNfY29tYnBoeV9sYW5lX2dyb3VwMiwKKwkmazNfY29tYnBoeV9sYW5lX2dyb3VwMywKKwkm azNfY29tYnBoeV9sYW5lX2dyb3VwNCwKKwkmazNfY29tYnBoeV9sYW5lX2dyb3VwNSwKK307CisK K3N0YXRpYyBpbnQgazNfY29tYl9waHlfaW5pdF9sYW5lcyhzdHJ1Y3QgazNfY29tYl9waHkgKnBo eSwgdW5zaWduZWQgaW50IGNvbmZpZykKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBB UlJBWV9TSVpFKGszX2NvbWJwaHlfbGFuZV9kYXRhcyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3Qg azNfcGh5X2xhbmVfZ3JvdXBfZGF0YSAqZGF0YSA9IGszX2NvbWJwaHlfbGFuZV9kYXRhc1tpXTsK KwkJc3RydWN0IGszX2xhbmVfZ3JvdXAgKmxnID0gJnBoeS0+Z3JvdXBzW2ldOworCQljb25zdCBz dHJ1Y3QgcGh5X29wcyAqb3BzOworCQlib29sIGlzX3VzYjsKKworCQlpc191c2IgPSAoZGF0YS0+ bWFzayAmIGNvbmZpZykgPT0gZGF0YS0+Y29uZmlnOworCQlpZiAoaXNfdXNiKQorCQkJb3BzID0g JmszX3VzYjNfcGh5X29wczsKKwkJZWxzZQorCQkJb3BzID0gJmszX3BjaWVfcGh5X29wczsKKwor CQlsZy0+cGh5ID0gZGV2bV9waHlfY3JlYXRlKHBoeS0+ZGV2LCBOVUxMLCBvcHMpOworCQlpZiAo SVNfRVJSKGxnLT5waHkpKQorCQkJcmV0dXJuIFBUUl9FUlIobGctPnBoeSk7CisKKwkJbGctPmlz X3BjaWUgPSAhaXNfdXNiOworCQlsZy0+ZGF0YSA9IGRhdGE7CisJCWxnLT5iYXNlID0gcGh5LT5i YXNlOworCQlwaHlfc2V0X2RydmRhdGEobGctPnBoeSwgbGcpOworCX0KKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW50IGszX2NvbWJfcGh5X3VwZGF0ZV9jb25maWcoc3RydWN0IHJlZ21hcCAq YXBtdSwgdW5zaWduZWQgaW50IGNvbmZpZykKK3sKKwlpZiAoY29uZmlnICYgflBVX01BVFJJWF9D T05GX01BU0spCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIHJlZ21hcF91cGRhdGVfYml0 cyhhcG11LCBQTVVBX1BDSUVfU1VCU1lTX01HTVQsIFBVX01BVFJJWF9DT05GX01BU0ssIGNvbmZp Zyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcGh5ICprM19jb21iX3BoeV94bGF0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgKmFyZ3MpCit7CisJc3RydWN0 IGszX2NvbWJfcGh5ICpwaHkgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgazNfbGFu ZV9ncm91cCAqbGc7CisKKwlpZiAoYXJncy0+YXJnc19jb3VudCAhPSAyKSB7CisJCWRldl9lcnIo ZGV2LCAiSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzXG4iKTsKKwkJcmV0dXJuIEVSUl9QVFIo LUVJTlZBTCk7CisJfQorCisJaWYgKGFyZ3MtPmFyZ3NbMF0gPj0gQVJSQVlfU0laRShrM19jb21i cGh5X2xhbmVfZGF0YXMpKSB7CisJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBQSFkgaWRcbiIpOwor CQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwl9CisKKwlsZyA9ICZwaHktPmdyb3Vwc1thcmdz LT5hcmdzWzBdXTsKKworCWlmICgobGctPmlzX3BjaWUgJiYgYXJncy0+YXJnc1sxXSAhPSBQSFlf VFlQRV9QQ0lFKSB8fAorCSAgICAoIWxnLT5pc19wY2llICYmIGFyZ3MtPmFyZ3NbMV0gIT0gUEhZ X1RZUEVfVVNCMykpIHsKKwkJZGV2X2VycihkZXYsICJJbnZhbGlkIFBIWSBtb2RlXG4iKTsKKwkJ cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJfQorCisJcmV0dXJuIGxnLT5waHk7Cit9CisKK3N0 YXRpYyBpbnQgazNfY29tYl9waHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK K3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkZXZpY2Vfbm9k ZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwcm92aWRlcjsK KwlzdHJ1Y3QgazNfY29tYl9waHkgKnBoeTsKKwlzdHJ1Y3QgcmVnbWFwICphcG11OworCXUzMiBj b25maWcgPSAwOworCWludCByZXQ7CisKKwlwaHkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo KnBoeSksIEdGUF9LRVJORUwpOworCWlmICghcGh5KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXBo eS0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKKwlpZiAo SVNfRVJSKHBoeS0+YmFzZSkpCisJCXJldHVybiBQVFJfRVJSKHBoeS0+YmFzZSk7CisKKwlwaHkt PmFwYl9zcGFyZSA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUobm9kZSwgInNwYWNl bWl0LGFwYi1zcGFyZSIpOworCWlmIChJU19FUlIocGh5LT5hcGJfc3BhcmUpKQorCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5LT5hcGJfc3BhcmUpLAorCQkJCSAgICAgIkZh aWxlZCB0byBmaW5lIEFQQiBTUEFSRSBzeXNjb24iKTsKKworCWFwbXUgPSBzeXNjb25fcmVnbWFw X2xvb2t1cF9ieV9waGFuZGxlX2FyZ3Mobm9kZSwgInNwYWNlbWl0LGFwbXUiLCAxLCAmY29uZmln KTsKKwlpZiAoSVNfRVJSKGFwbXUpKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9F UlIocGh5LT5hcGJfc3BhcmUpLAorCQkJCSAgICAgIkZhaWxlZCB0byBmaW5lIEFQTVUgc3lzY29u Iik7CisKKwlyZXQgPSBrM19jb21iX3BoeV91cGRhdGVfY29uZmlnKGFwbXUsIGNvbmZpZyk7CisJ aWYgKHJldCA8IDApCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRv IHNldCBsYW5lIGNvbmZpZ3VyYXRpb24iKTsKKworCXBoeS0+ZGV2ID0gZGV2OworCXBsYXRmb3Jt X3NldF9kcnZkYXRhKHBkZXYsIHBoeSk7CisKKwlyZXQgPSBrM19waHlfY2FsaWJyYXRlKHBoeS0+ YXBiX3NwYXJlKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBy ZXQsICJGYWlsZWQgdG8gY2FsaWJyYXRlIHBoeSIpOworCisJcmV0ID0gazNfY29tYl9waHlfaW5p dF9sYW5lcyhwaHksIGNvbmZpZyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBkZXZfZXJyX3By b2JlKGRldiwgcmV0LCAiRmFpbGVkIHRvIGluaXQgbGFuZXMiKTsKKworCXByb3ZpZGVyID0gZGV2 bV9vZl9waHlfcHJvdmlkZXJfcmVnaXN0ZXIoZGV2LCBrM19jb21iX3BoeV94bGF0ZSk7CisJaWYg KElTX0VSUihwcm92aWRlcikpCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihw cm92aWRlciksCisJCQkJICAgICAiRmFpbGVkIHRvIHJlZ2lzdGVyIHByb3ZpZGVyXG4iKTsKKwor CXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBrM19jb21i X3BoeV9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAic3BhY2VtaXQsazMtY29tYi1w aHkiIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGszX2NvbWJfcGh5X29m X21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgazNfY29tYl9waHlfZHJp dmVyID0geworCS5wcm9iZSA9IGszX2NvbWJfcGh5X3Byb2JlLAorCS5kcml2ZXIgPSB7CisJCS5u YW1lID0gInNwYWNlbWl0LGszLWNvbWItcGh5IiwKKwkJLm9mX21hdGNoX3RhYmxlID0gazNfY29t Yl9waHlfb2ZfbWF0Y2gsCisJfSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGszX2NvbWJf cGh5X2RyaXZlcik7CisKK01PRFVMRV9ERVNDUklQVElPTigiU3BhY2VtaVQgSzMgVVNCMy9QQ0ll IGNvbWIgUEhZIGRyaXZlciIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5jIGIvZHJpdmVycy9waHkvc3BhY2Vt aXQvcGh5LWszLWNvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNzdjNGI0MDczYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkvc3BhY2VtaXQv cGh5LWszLWNvbW1vbi5jCkBAIC0wLDAgKzEsMzk4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5CisKKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1 ZGUgPGxpbnV4L2NsZWFudXAuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxp bnV4L2lvcG9sbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4 L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi5oPgorCisjaW5jbHVkZSA8ZHQtYmluZGlu Z3MvcGh5L3BoeS5oPgorCisjaW5jbHVkZSAicGh5LWszLWNvbW1vbi5oIgorCisvKiBQSFkgUmVn aXN0ZXJzICovCisjZGVmaW5lIFBIWV9WRVJTSU9OCQkJMHgwCisKKyNkZWZpbmUgUEhZX1JFU0VU X0NGRwkJCTB4MDQKKworI2RlZmluZSBQSFlfUkVTRVRfUlhCVUZfUlNUCQlCSVQoMCkKKyNkZWZp bmUgUEhZX1JFU0VUX1NPRlRfUlNUX1BDUwkJQklUKDEpCisjZGVmaW5lIFBIWV9SRVNFVF9TT0ZU X1JTVF9BSEIJCUJJVCgyKQorI2RlZmluZSBQSFlfUkVTRVRfRU5fU0RfQUZURVJfTE9DSwlCSVQo NikKKworI2RlZmluZSBQSFlfQ0xLX0NGRwkJCTB4MDgKKworI2RlZmluZSBQSFlfQ0xLX1BMTF9S RUFEWQkJQklUKDApCisjZGVmaW5lIFBIWV9DTEtfVFhDTEtfSU5WCQlCSVQoMikKKyNkZWZpbmUg UEhZX0NMS19SWENMS19FTgkJQklUKDMpCisjZGVmaW5lIFBIWV9DTEtfVFhDTEtfRU4JCUJJVCg0 KQorI2RlZmluZSBQSFlfQ0xLX1BDTEtfRU4JCQlCSVQoNSkKKyNkZWZpbmUgUEhZX0NMS19QSVBF X1BDTEtfRU4JCUJJVCg2KQorI2RlZmluZSBQSFlfQ0xLX1JFRkNMS19GUkVRCQlHRU5NQVNLKDEw LCA3KQorI2RlZmluZSBQSFlfQ0xLX1JFRkNMS18yNE0JCTIKKyNkZWZpbmUgUEhZX0NMS19TV19J TklUX0RPTkUJCUJJVCgxMSkKKyNkZWZpbmUgUEhZX0NMS19QVV9TU0NfT1VUCQlCSVQoMjMpCisK KyNkZWZpbmUgUEhZX01PREVfQ0ZHCQkJMHgwQworCisjZGVmaW5lIFBIWV9NT0RFX1BDSUVfSU5U X0VOCQlCSVQoMCkKKyNkZWZpbmUgUEhZX01PREVfTEZQU19UUEVSSU9ECQlHRU5NQVNLKDksIDgp CisjZGVmaW5lIFBIWV9NT0RFX0xGUFNfVFBFUklPRF9VU0IJMworCisjZGVmaW5lIFBIWV9QVV9T RUwJCQkweDQwCisKKyNkZWZpbmUgUEhZX1BVX0NGR19TVEFUVVMJCUJJVCg5KQorI2RlZmluZSBQ SFlfUFVfT1ZSRF9TVEFUVVMJCUJJVCgxMCkKKworI2RlZmluZSBQSFlfUFVfQ0tfUkVHCQkJMHg1 NAorCisjZGVmaW5lIFBIWV9QVV9SRUZDTEtfMTAwCQlCSVQoMjUpCisKKyNkZWZpbmUgUEhZX1BM TF9SRUcxCQkJMHg1OAorCisjZGVmaW5lIFBIWV9QTExfRlJFRl9TRUwJCUdFTk1BU0soMTUsIDEz KQorI2RlZmluZSBQSFlfUExMX0ZSRUZfMjRNCQkweDEKKyNkZWZpbmUgUEhZX1BMTF9TU0NfREVQ X1NFTAkJR0VOTUFTSygyNywgMjQpCisjZGVmaW5lIFBIWV9QTExfU1NDXzUwMDBQUE0JCTB4YQor I2RlZmluZSBQSFlfUExMX1NTQ19NT0RFCQlHRU5NQVNLKDI5LCAyOCkKKyNkZWZpbmUgUEhZX1BM TF9TU0NfTU9ERV9DRU5URVJfU1BSRUFECTAKKyNkZWZpbmUgUEhZX1BMTF9TU0NfTU9ERV9VUF9T UFJFQUQJMQorI2RlZmluZSBQSFlfUExMX1NTQ19NT0RFX0RPV05fU1BSRUFECTIKKyNkZWZpbmUg UEhZX1BMTF9TU0NfTU9ERV9ET1dOX1NQUkVBRDEJMworCisjZGVmaW5lIFBIWV9QTExfUkVHMgkJ CTB4NWMKKworI2RlZmluZSBQSFlfUExMX1NFTF9SRUYxMDAJCUJJVCgyMSkKKworLyogUEhZIFJY IFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIFBIWV9SWF9SRUdfQQkJCTB4NjAKKwor I2RlZmluZSBQSFlfUlhfUkVHMF9STE9BRAkJQklUKDQpCisjZGVmaW5lIFBIWV9SWF9SRUcxX1JU RVJNCQlHRU5NQVNLKDExLCA4KQorI2RlZmluZSBQSFlfUlhfUkVHMV9SQ19DQUxJCQlHRU5NQVNL KDE1LCAxMikKKyNkZWZpbmUgUEhZX1JYX1JFRzJfQ1NFTAkJR0VOTUFTSygxOSwgMTYpCisjZGVm aW5lIFBIWV9SWF9SRUcyX0ZPUkNFX0NTRUwJCUJJVCgyMCkKKyNkZWZpbmUgUEhZX1JYX1JFRzJf UFNFTAkJR0VOTUFTSygyMywgMjEpCisjZGVmaW5lIFBIWV9SWF9SRUczX0lfTE9BRAkJR0VOTUFT SygyNiwgMjQpCisjZGVmaW5lIFBIWV9SWF9SRUczX1NFTF9DQk9PU1RfQ09ERQlCSVQoMjcpCisj ZGVmaW5lIFBIWV9SWF9SRUczX0FESl9CSUFTCQlHRU5NQVNLKDI5LCAyOCkKKyNkZWZpbmUgUEhZ X1JYX1JFRzNfUkRFRzEJCUdFTk1BU0soMzEsIDMwKQorCisjZGVmaW5lIFBIWV9SWF9SRUdfQgkJ CTB4NjQKKworI2RlZmluZSBQSFlfUlhfUkVHQl9NQVNLCQlHRU5NQVNLKDIzLCAwKQorCisjZGVm aW5lIFBIWV9SWF9SRUc0X1JERUcyCQlHRU5NQVNLKDIsIDEpCisjZGVmaW5lIFBIWV9SWF9SRUc0 X0VOVk9TCQlCSVQoNCkKKyNkZWZpbmUgUEhZX1JYX1JFRzRfUlRFUk1fU0VMCQlCSVQoNSkKKyNk ZWZpbmUgUEhZX1JYX1JFRzRfTUFOVUFMX0NGRwkJQklUKDcpCisjZGVmaW5lIFBIWV9SWF9SRUc1 X1JDRUxMX1ZDTQkJR0VOTUFTSygxMSwgOCkKKyNkZWZpbmUgUEhZX1JYX1JFRzVfUkNFTExfQklB UwkJR0VOTUFTSygxNSwgMTIpCisjZGVmaW5lIFBIWV9SWF9SRUc2X0gxX1JFRwkJR0VOTUFTSygx OSwgMTYpCisjZGVmaW5lIFBIWV9SWF9SRUc2X0FEQVBUX0dBSU4JCUdFTk1BU0soMjEsIDIwKQor I2RlZmluZSBQSFlfUlhfUkVHNl9CWVBBU1NfQURQVAkJQklUKDIyKQorCisjZGVmaW5lIFBIWV9B RFBUX0NGRzAJCQkweDE0MAorI2RlZmluZSBQSFlfQURQVF9BRkVfUlNUX09WUkRfRU4JQklUKDEp CisjZGVmaW5lIFBIWV9BRFBUX0FGRV9SU1RfT1ZSRF9WQUwJQklUKDQpCisKKyNkZWZpbmUgUEhZ X1JYRVFfVElNRQkJCTB4YjQKKyNkZWZpbmUgUEhZX1JYRVFfVElNRV9PVlJEX1BPU1RfQ19TT0MJ QklUKDIxKQorI2RlZmluZSBQSFlfUlhFUV9USU1FX0NGR19BTVBfU09DCUdFTk1BU0soMjMsIDIy KQorI2RlZmluZSBQSFlfUlhFUV9USU1FX0FNUF9TT0NfNjUwTQkwCisjZGVmaW5lIFBIWV9SWEVR X1RJTUVfQU1QX1NPQ184MDBNCTEKKyNkZWZpbmUgUEhZX1JYRVFfVElNRV9BTVBfU09DXzg3ME0J MgorI2RlZmluZSBQSFlfUlhFUV9USU1FX0FNUF9TT0NfOTAwTQkzCisjZGVmaW5lIFBIWV9SWEVR X1RJTUVfT1ZSRF9BTVBfU09DCUJJVCgyNCkKKworI2RlZmluZSBQQ0lFX1BVX0FERFJfQ0xLX0NG RwkJMHgwMDA4CisjZGVmaW5lIFBIWV9DTEtfUExMX1JFQURZCQlCSVQoMCkKKyNkZWZpbmUgUENJ RV9JTklUQUxfVElNRVIJCUdFTk1BU0soNiwgMykKKyNkZWZpbmUgQ0ZHX0lOVEVSTkFMX1RJTUVS X0FESgkJR0VOTUFTSygxMCwgNykKKyNkZWZpbmUgQ0ZHX1NXX1BIWV9JTklUX0RPTkUJCUJJVCgx MSkKKworLyogTGFuZSBSWC9UWCBjb25maWd1cmF0aW9uIChwZXLigJFsYW5lLCBhdCBsYW5lX2Jh c2UpICovCisjZGVmaW5lIFBDSUVfUlhfUkVHMQkJCTB4MDUwCisjZGVmaW5lIFBDSUVfVFhfUkVH MQkJCTB4MDY0CisKKyNkZWZpbmUgUENJRV9QTExfVElNRU9VVAkJNTAwMDAwCisjZGVmaW5lIFBD SUVfUE9MTF9ERUxBWQkJCTUwMAorCitzdGF0aWMgaW50IGszX3VzYjNwaHlfaW5pdF9zaW5nbGUo c3RydWN0IGszX2xhbmVfZ3JvdXAgKmxnLCB2b2lkIF9faW9tZW0gKmJhc2UpCit7CisJc3RydWN0 IHBoeSAqcGh5ID0gbGctPnBoeTsKKwl1MzIgdmFsLCB0bXA7CisJaW50IHJldDsKKworCXZhbCA9 IHJlYWRsKGJhc2UgKyBQSFlfUFVfU0VMKTsKKwl2YWwgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbCwg MCwgUEhZX1BVX0NGR19TVEFUVVMpOworCXZhbCB8PSBQSFlfUFVfT1ZSRF9TVEFUVVM7CisJd3Jp dGVsKHZhbCwgYmFzZSArIFBIWV9QVV9TRUwpOworCisJdWRlbGF5KDIwMCk7CisKKwkvKiBEbyBu b3Qgd2FpdCBDRFIgbG9jayBiZWZvcmUgc2FtcGxpbmcgZGF0YSAqLworCXZhbCA9IHJlYWRsKGJh c2UgKyBQSFlfUkVTRVRfQ0ZHKTsKKwl2YWwgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbCwgMCwgUEhZ X1JFU0VUX0VOX1NEX0FGVEVSX0xPQ0spOworCXdyaXRlbCh2YWwsIGJhc2UgKyBQSFlfUkVTRVRf Q0ZHKTsKKworCS8qIFBvd2VyIGRvd24gMTAwTUh6IHJlZmNsayBidWZmZXIgKi8KKwl2YWwgPSBy ZWFkbChiYXNlICsgUEhZX1BVX0NLX1JFRyk7CisJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWws IDAsIFBIWV9QVV9SRUZDTEtfMTAwKTsKKwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX1BVX0NLX1JF Ryk7CisKKwkvKiBQcm9ncmFtIFBMTCBSRUcxIGNvbmZpZ3VyZSB0aGUgU1NDICovCisJdmFsID0g RklFTERfUFJFUChQSFlfUExMX1NTQ19NT0RFLCBQSFlfUExMX1NTQ19NT0RFX0RPV05fU1BSRUFE MSkgfAorCSAgICAgIEZJRUxEX1BSRVAoUEhZX1BMTF9TU0NfREVQX1NFTCwgUEhZX1BMTF9TU0Nf NTAwMFBQTSkgfAorCSAgICAgIEZJRUxEX1BSRVAoUEhZX1BMTF9GUkVGX1NFTCwgUEhZX1BMTF9G UkVGXzI0TSk7CisJd3JpdGVsKHZhbCwgYmFzZSArIFBIWV9QTExfUkVHMSk7CisKKwkvKiBVbi1z ZWxlY3QgMTAwTUh6IFBMTCByZWZlcmVuY2UgKi8KKwl2YWwgPSByZWFkbChiYXNlICsgUEhZX1BM TF9SRUcyKTsKKwl2YWwgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbCwgMCwgUEhZX1BMTF9TRUxfUkVG MTAwKTsKKwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX1BMTF9SRUcyKTsKKworCS8qIFVTQiBMRlBT IHBlcmlvZCBjb25maWd1cmF0aW9uICovCisJdmFsID0gcmVhZGwoYmFzZSArIFBIWV9NT0RFX0NG Ryk7CisJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIFBIWV9NT0RFX0xGUFNfVFBFUklPRF9V U0IsIFBIWV9NT0RFX0xGUFNfVFBFUklPRCk7CisJd3JpdGVsKHZhbCwgYmFzZSArIFBIWV9NT0RF X0NGRyk7CisKKwkvKiBGb3JjZSBBRkUgYWRhcHRhdGlvbiByZXNldCAqLworCXZhbCA9IHJlYWRs KGJhc2UgKyBQSFlfQURQVF9DRkcwKTsKKwl2YWwgfD0gUEhZX0FEUFRfQUZFX1JTVF9PVlJEX0VO IHwgUEhZX0FEUFRfQUZFX1JTVF9PVlJEX1ZBTDsKKwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX0FE UFRfQ0ZHMCk7CisKKwkvKiBPdmVycmlkZSBkcml2ZXIgYW1wbGl0dWRlIHZhbHVlIHRvIDkwMG0g Ki8KKwl2YWwgPSByZWFkbChiYXNlICsgUEhZX1JYRVFfVElNRSk7CisJdmFsIHw9IFBIWV9SWEVR X1RJTUVfT1ZSRF9BTVBfU09DOworCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCBQSFlfUlhF UV9USU1FX0FNUF9TT0NfOTAwTSwgUEhZX1JYRVFfVElNRV9DRkdfQU1QX1NPQyk7CisJd3JpdGVs KHZhbCwgYmFzZSArIFBIWV9SWEVRX1RJTUUpOworCisJLyogQ29uZmlndXJlIFJYIHBhcmFtZXRl cnMgKi8KKwl2YWwgPSBQSFlfUlhfUkVHMF9STE9BRCB8CisJCUZJRUxEX1BSRVAoUEhZX1JYX1JF RzFfUlRFUk0sIDB4OCkgfAorCQlGSUVMRF9QUkVQKFBIWV9SWF9SRUcxX1JDX0NBTEksIDB4Nykg fAorCQlGSUVMRF9QUkVQKFBIWV9SWF9SRUcyX0NTRUwsIDB4OCkgfAorCQlQSFlfUlhfUkVHMl9G T1JDRV9DU0VMIHwKKwkJRklFTERfUFJFUChQSFlfUlhfUkVHMl9QU0VMLCAweDQpIHwKKwkJRklF TERfUFJFUChQSFlfUlhfUkVHM19JX0xPQUQsIDB4NykgfAorCQlQSFlfUlhfUkVHM19TRUxfQ0JP T1NUX0NPREUgfAorCQlGSUVMRF9QUkVQKFBIWV9SWF9SRUczX0FESl9CSUFTLCAweDEpIHwKKwkJ RklFTERfUFJFUChQSFlfUlhfUkVHM19SREVHMSwgMHgzKTsKKwl3cml0ZWwodmFsLCBiYXNlICsg UEhZX1JYX1JFR19BKTsKKworCXZhbCA9IHJlYWRsKGJhc2UgKyBQSFlfUlhfUkVHX0IpOworCXRt cCA9IEZJRUxEX1BSRVAoUEhZX1JYX1JFRzRfUkRFRzIsIDB4MikgfAorCQlQSFlfUlhfUkVHNF9F TlZPUyB8IFBIWV9SWF9SRUc0X1JURVJNX1NFTCB8IFBIWV9SWF9SRUc0X01BTlVBTF9DRkcgfAor CQlGSUVMRF9QUkVQKFBIWV9SWF9SRUc1X1JDRUxMX1ZDTSwgMHg4KSB8CisJCUZJRUxEX1BSRVAo UEhZX1JYX1JFRzVfUkNFTExfQklBUywgMHg4KSB8CisJCUZJRUxEX1BSRVAoUEhZX1JYX1JFRzZf SDFfUkVHLCAweDgpIHwKKwkJRklFTERfUFJFUChQSFlfUlhfUkVHNl9BREFQVF9HQUlOLCAweDIp OworCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCB0bXAsIFBIWV9SWF9SRUdCX01BU0spOwor CXdyaXRlbCh2YWwsIGJhc2UgKyBQSFlfUlhfUkVHX0IpOworCisJLyoKKwkgKiBJbmZvcm0gUEhZ IHRoYXQgYWxsIFBMTC1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgZG9uZS4KKwkgKiBQTEwgd2ls bCBub3Qgc3RhcnQgbG9ja2luZyB1bnRpbCBQSFlfQ0xLX1NXX0lOSVRfRE9ORSBpcyBzZXQuCisJ ICovCisJdmFsID0gUEhZX0NMS19TV19JTklUX0RPTkUgfCBQSFlfQ0xLX1BVX1NTQ19PVVQgfAor CSAgICAgIEZJRUxEX1BSRVAoUEhZX0NMS19SRUZDTEtfRlJFUSwgUEhZX0NMS19SRUZDTEtfMjRN KSB8CisJICAgICAgUEhZX0NMS19SWENMS19FTiB8IFBIWV9DTEtfVFhDTEtfRU4gfAorCSAgICAg IFBIWV9DTEtfUENMS19FTiB8IFBIWV9DTEtfUElQRV9QQ0xLX0VOOworCXdyaXRlbCh2YWwsIGJh c2UgKyBQSFlfQ0xLX0NGRyk7CisKKwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoYmFzZSArIFBI WV9DTEtfQ0ZHLCB2YWwsCisJCQkJICh2YWwgJiBQSFlfQ0xLX1BMTF9SRUFEWSksCisJCQkJIFBD SUVfUE9MTF9ERUxBWSwgUENJRV9QTExfVElNRU9VVCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJy KCZwaHktPmRldiwgIlBIWSBQTEwgcG9sbGluZyB0aW1lb3V0XG4iKTsKKwkJcmV0dXJuIHJldDsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBrM191c2IzcGh5X2luaXQoc3RydWN0 IHBoeSAqcGh5KQoreworCXN0cnVjdCBrM19sYW5lX2dyb3VwICpsZyA9IHBoeV9nZXRfZHJ2ZGF0 YShwaHkpOworCWludCByZXQsIGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGctPmRhdGEtPmxhbmVz OyBpKyspIHsKKwkJcmV0ID0gazNfdXNiM3BoeV9pbml0X3NpbmdsZShsZywgbGctPmJhc2UgKyBs Zy0+ZGF0YS0+b2Zmc2V0c1tpXSk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBrM191c2IzcGh5X3NldF9zcGVlZChzdHJ1 Y3QgcGh5ICpwaHksIGludCBzcGVlZCkKK3sKKwlzdHJ1Y3QgazNfbGFuZV9ncm91cCAqbGcgPSBw aHlfZ2V0X2RydmRhdGEocGh5KTsKKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBsZy0+YmFzZSArIGxn LT5kYXRhLT5vZmZzZXRzWzBdOworCXUzMiB2YWw7CisKKwlpZiAoc3BlZWQgPT0gVVNCX1NQRUVE X0hJR0gpIHsKKwkJdmFsID0gcmVhZGwoYmFzZSArIFBIWV9QVV9TRUwpOworCQl2YWwgPSB1MzJf cmVwbGFjZV9iaXRzKHZhbCwgMCwgUEhZX1BVX0NGR19TVEFUVVMpOworCQl2YWwgfD0gUEhZX1BV X09WUkRfU1RBVFVTOworCQl3cml0ZWwodmFsLCBiYXNlICsgUEhZX1BVX1NFTCk7CisKKwkJdWRl bGF5KDIwMCk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IHN0cnVjdCBwaHlfb3BzIGsz X3VzYjNfcGh5X29wcyA9IHsKKwkuaW5pdCA9IGszX3VzYjNwaHlfaW5pdCwKKwkuc2V0X3NwZWVk ID0gazNfdXNiM3BoeV9zZXRfc3BlZWQsCisJLm93bmVyID0gVEhJU19NT0RVTEUsCit9OworRVhQ T1JUX1NZTUJPTF9HUEwoazNfdXNiM19waHlfb3BzKTsKKworc3RhdGljIGludCBrM19wY2llX3Bo eV9pbml0KHN0cnVjdCBwaHkgKnBoeSkKK3sKKwlzdHJ1Y3QgazNfbGFuZV9ncm91cCAqbGcgPSBw aHlfZ2V0X2RydmRhdGEocGh5KTsKKwl2b2lkIF9faW9tZW0gKnBoeV9iYXNlID0gbGctPmJhc2Ug KyBsZy0+ZGF0YS0+b2Zmc2V0c1swXTsKKwl1MzIgdmFsOworCWludCByZXQ7CisJaW50IGk7CisK Kwl2YWwgPSByZWFkbChwaHlfYmFzZSArIFBIWV9QTExfUkVHMSk7CisJdmFsID0gdTMyX3JlcGxh Y2VfYml0cyh2YWwsIDB4MiwgR0VOTUFTSygxNSwgMTIpKTsKKwl3cml0ZWwodmFsLCBwaHlfYmFz ZSArIFBIWV9QTExfUkVHMSk7CisKKwl2YWwgPSByZWFkbChwaHlfYmFzZSArIFBIWV9QTExfUkVH Mik7CisJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDAsIEJJVCgyMSkpOworCXdyaXRlbCh2 YWwsIHBoeV9iYXNlICsgUEhZX1BMTF9SRUcyKTsKKworCWZvciAoaSA9IDA7IGkgPCBsZy0+ZGF0 YS0+bGFuZXM7IGkrKykgeworCQl2b2lkIF9faW9tZW0gKmxhbmVfYmFzZSA9IGxnLT5iYXNlICsg bGctPmRhdGEtPm9mZnNldHNbaV07CisKKwkJdmFsID0gcmVhZGwobGFuZV9iYXNlICsgUENJRV9S WF9SRUcxKTsKKwkJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDAsIDB4Myk7CisJCXdyaXRl bCh2YWwsIHBoeV9iYXNlICsgUENJRV9SWF9SRUcxKTsKKwl9CisKKwl2YWwgPSByZWFkbChwaHlf YmFzZSArIFBIWV9QTExfUkVHMik7CisJdmFsIHw9IEJJVCgyMCk7CisJd3JpdGVsKHZhbCwgcGh5 X2Jhc2UgKyBQSFlfUExMX1JFRzIpOworCisJd3JpdGVsKDB4MDAwMDY1MDUsIHBoeV9iYXNlICsg UENJRV9SWF9SRUcxKTsKKworCS8qIHBsbF9yZWcxIG9mIGxhbmUwLCBkaXNhYmxlIFNTQzogcGxs X3JlZzRbMzowXSA9IDAgKi8KKwl2YWwgPSByZWFkbChwaHlfYmFzZSArIFBIWV9QTExfUkVHMSk7 CisJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDAsIEdFTk1BU0soMjcsIDI0KSk7CisJd3Jp dGVsKHZhbCwgcGh5X2Jhc2UgKyBQSFlfUExMX1JFRzEpOworCisJZm9yIChpID0gMDsgaSA8IGxn LT5kYXRhLT5sYW5lczsgaSsrKSB7CisJCXZvaWQgX19pb21lbSAqbGFuZV9iYXNlID0gbGctPmJh c2UgKyBsZy0+ZGF0YS0+b2Zmc2V0c1tpXTsKKworCQkvKiBzZXQgY2ZnX3R4X3NlbmRfZHVtbXlf ZGF0YSB0byBiZSAxJ2IxIGZvciBkaXNhYmxlIGRhc2ggZGF0YSAqLworCQl2YWwgPSByZWFkbChs YW5lX2Jhc2UgKyBQSFlfUFVfU0VMKTsKKwkJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDEs IEJJVCgxMykpOworCQl3cml0ZWwodmFsLCBsYW5lX2Jhc2UgKyBQSFlfUFVfU0VMKTsKKworCQkv KiBkaXNhYmxlIGVuX3NhbXBsZV9kYXRhX2FmdGVyX2Nkcl9sb2NrZWQgKi8KKwkJdmFsID0gcmVh ZGwobGFuZV9iYXNlICsgUEhZX1JFU0VUX0NGRyk7CisJCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHMo dmFsLCAwLCBCSVQoNikpOworCQl3cml0ZWwodmFsLCBsYW5lX2Jhc2UgKyBQSFlfUkVTRVRfQ0ZH KTsKKworCQkvKiBEeW5hbWljIExvY2sgKi8KKwkJdmFsID0gcmVhZGwobGFuZV9iYXNlICsgUEhZ X01PREVfQ0ZHKTsKKwkJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDEsIEJJVCgyKSk7CisJ CXdyaXRlbCh2YWwsIGxhbmVfYmFzZSArIFBIWV9NT0RFX0NGRyk7CisKKwkJdmFsID0gRklFTERf UFJFUChHRU5NQVNLKDcsIDApLCAweDEwKSB8CisJCQlGSUVMRF9QUkVQKEdFTk1BU0soMTUsIDgp LCAweDc4KSB8CisJCQlGSUVMRF9QUkVQKEdFTk1BU0soMjMsIDE2KSwgMHg5OCkgfAorCQkJRklF TERfUFJFUChHRU5NQVNLKDMxLCAyNCksIDB4ZGYpOworCQl3cml0ZWwodmFsLCBsYW5lX2Jhc2Ug KyBQSFlfUlhfUkVHX0EpOworCisJCXZhbCA9IHJlYWRsKGxhbmVfYmFzZSArIFBIWV9SWF9SRUdf Qik7CisJCXZhbCAmPSB+UEhZX1JYX1JFR0JfTUFTSzsKKwkJdmFsIHw9IEZJRUxEX1BSRVAoR0VO TUFTSyg3LCAwKSwgMHhiNCkgfAorCQkJRklFTERfUFJFUChHRU5NQVNLKDE1LCA4KSwgMHg4OCkg fAorCQkJRklFTERfUFJFUChHRU5NQVNLKDIzLCAxNiksIDB4MjgpOworCQl3cml0ZWwodmFsLCBs YW5lX2Jhc2UgKyBQSFlfUlhfUkVHX0IpOworCisJCS8qIFNldCBpbml0IGRvbmUgKi8KKwkJdmFs ID0gcmVhZGwobGFuZV9iYXNlICsgUENJRV9QVV9BRERSX0NMS19DRkcpOworCQl2YWwgPSB1MzJf cmVwbGFjZV9iaXRzKHZhbCwgMSwgQ0ZHX1NXX1BIWV9JTklUX0RPTkUpOworCQl3cml0ZWwodmFs LCBsYW5lX2Jhc2UgKyBQQ0lFX1BVX0FERFJfQ0xLX0NGRyk7CisJfQorCisJcmV0ID0gcmVhZGxf cG9sbF90aW1lb3V0KHBoeV9iYXNlICsgUENJRV9QVV9BRERSX0NMS19DRkcsIHZhbCwKKwkJCQkg KHZhbCAmIFBIWV9DTEtfUExMX1JFQURZKSwgUENJRV9QT0xMX0RFTEFZLAorCQkJCSBQQ0lFX1BM TF9USU1FT1VUKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJmxnLT5waHktPmRldiwgIlBIWSBQ TEwgbG9jayB0aW1lb3V0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30K KworY29uc3Qgc3RydWN0IHBoeV9vcHMgazNfcGNpZV9waHlfb3BzID0geworCS5pbml0CQk9IGsz X3BjaWVfcGh5X2luaXQsCisJLm93bmVyCQk9IFRISVNfTU9EVUxFLAorfTsKK0VYUE9SVF9TWU1C T0xfR1BMKGszX3BjaWVfcGh5X29wcyk7CisKKy8qIFBIWSByY2FsIGluaXQgcmVxdWlyZXMgQVBC X1NQQVJFIHJlZ21hcCBhY2Nlc3MgKi8KKworI2RlZmluZSBBUEJfU1BBUkVfUFVfQ0FMCQkweDE3 OAorI2RlZmluZSBQVV9DQUwJCQkJQklUKDE3KQorCisjZGVmaW5lIEFQQl9TUEFSRV9SQ0FMX0hT SU8JCTB4MTdjCisjZGVmaW5lIEFQQl9TUEFSRV9QVV9DQUxfRE9ORQkJQklUKDgpCisjZGVmaW5l IFJDQUxfT1ZSRF9QVFJJTQkJCUdFTk1BU0soMjMsIDIwKQorI2RlZmluZSBSQ0FMX09WUkRfTlRS SU0JCQlHRU5NQVNLKDI3LCAyNCkKKyNkZWZpbmUgUkNBTF9PVlJEX1BUUklNX0VOCQlCSVQoMjgp CisjZGVmaW5lIFJDQUxfT1ZSRF9OVFJJTV9FTgkJQklUKDI5KQorI2RlZmluZSBSQ0FMX09WUkRf U1RBQkxFX1ZBTAkJQklUKDMwKQorI2RlZmluZSBSQ0FMX09WUkRfU1RBQkxFX0VOCQlCSVQoMzEp CisKKyNkZWZpbmUgUkNBTF9PVlJEX1RSSU1fRU4JCShSQ0FMX09WUkRfTlRSSU1fRU4gfCBSQ0FM X09WUkRfUFRSSU1fRU4pCisjZGVmaW5lIFJDQUxfT1ZSRF9UUklNX01BU0sJCShSQ0FMX09WUkRf TlRSSU0gfCBSQ0FMX09WUkRfUFRSSU0pCisKKyNkZWZpbmUgUFVfQ0FMX1RJTUVPVVQgMjAwMDAw MAorCitzdGF0aWMgREVGSU5FX01VVEVYKGNhbGlicmF0ZV9sb2NrKTsKKworaW50IGszX3BoeV9j YWxpYnJhdGUoc3RydWN0IHJlZ21hcCAqYXBiX3NwYXJlKQoreworCXVuc2lnbmVkIGludCB2YWw7 CisJaW50IHJldDsKKworCWd1YXJkKG11dGV4KSgmY2FsaWJyYXRlX2xvY2spOworCisJcmVnbWFw X3JlYWQoYXBiX3NwYXJlLCBBUEJfU1BBUkVfUkNBTF9IU0lPLCAmdmFsKTsKKwlpZiAodmFsICYg QVBCX1NQQVJFX1BVX0NBTF9ET05FKQorCQlyZXR1cm4gMDsKKworCXJlZ21hcF91cGRhdGVfYml0 cyhhcGJfc3BhcmUsIEFQQl9TUEFSRV9QVV9DQUwsIFBVX0NBTCwKKwkJCSAgIFBVX0NBTCk7CisK KwlyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoYXBiX3NwYXJlLCBBUEJfU1BBUkVfUkNB TF9IU0lPLAorCQkJCSAgICAgICB2YWwsICh2YWwgJiBBUEJfU1BBUkVfUFVfQ0FMX0RPTkUpLCBQ Q0lFX1BPTExfREVMQVksCisJCQkJICAgICAgIFBVX0NBTF9USU1FT1VUKTsKKworCWlmIChyZXQp CisJCXJlZ21hcF91cGRhdGVfYml0cyhhcGJfc3BhcmUsIEFQQl9TUEFSRV9SQ0FMX0hTSU8sCisJ CQkJICAgUkNBTF9PVlJEX1RSSU1fRU4gfCBSQ0FMX09WUkRfU1RBQkxFX1ZBTCB8CisJCQkJICAg UkNBTF9PVlJEX1RSSU1fTUFTSyB8IFJDQUxfT1ZSRF9TVEFCTEVfRU4sCisJCQkJICAgUkNBTF9P VlJEX1RSSU1fRU4gfCBSQ0FMX09WUkRfU1RBQkxFX1ZBTCB8CisJCQkJICAgRklFTERfUFJFUChS Q0FMX09WUkRfTlRSSU0sIDB4NikgfAorCQkJCSAgIEZJRUxEX1BSRVAoUkNBTF9PVlJEX1BUUklN LCAweGEpIHwKKwkJCQkgICBSQ0FMX09WUkRfU1RBQkxFX0VOKTsKKworCXJldHVybiByZXQ7Cit9 CitFWFBPUlRfU1lNQk9MX0dQTChrM19waHlfY2FsaWJyYXRlKTsKKworTU9EVUxFX0RFU0NSSVBU SU9OKCJTcGFjZW1pVCBLMyBQSFkgY29tbW9uIG9wcyIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oIGIvZHJp dmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNDkwMDljM2MzMTNhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKworI2lmbmRlZiBfUEhZX0szX0NP TU1PTl9ICisjZGVmaW5lIF9QSFlfSzNfQ09NTU9OX0gKKworI2luY2x1ZGUgPGxpbnV4L3BoeS9w aHkuaD4KKworc3RydWN0IGszX3BoeV9sYW5lX2dyb3VwX2RhdGEgeworCXUzMiBsYW5lczsKKwl1 OCBjb25maWc7CisJdTggbWFzazsKKwl1MzIgb2Zmc2V0c1tdIF9fY291bnRlZF9ieShsYW5lcyk7 Cit9OworCitzdHJ1Y3QgazNfbGFuZV9ncm91cCB7CisJY29uc3Qgc3RydWN0IGszX3BoeV9sYW5l X2dyb3VwX2RhdGEgKmRhdGE7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXN0cnVjdCBwaHkgKnBo eTsKKwlib29sIGlzX3BjaWU7Cit9OworCitleHRlcm4gY29uc3Qgc3RydWN0IHBoeV9vcHMgazNf cGNpZV9waHlfb3BzOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBwaHlfb3BzIGszX3VzYjNfcGh5X29w czsKKworaW50IGszX3BoeV9jYWxpYnJhdGUoc3RydWN0IHJlZ21hcCAqYXBiX3NwYXJlKTsKKwor I2VuZGlmCi0tIAoyLjU0LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LXJpc2N2Cg==