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 8B362C43458 for ; Fri, 3 Jul 2026 02:11:07 +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=pmfOhpPMtl2Q2JjEtJxnYmXHV11kUJzUE5ednkFVWTQ=; b=OuPlc0OPu3wQL5 vD9TzMqmv5FslXAuoTb5xi2lgvKvyLEi0zEe296Is7i0vg4M/h8QRWIKVKMfdP7axL0BBrcwcCyiH ilKi0KGkc6g0vp/ZLLMxQ/jvLBvKaey2Yo8Fesl5r3tgiKwisC9Oexg79m+KWA5KdavyH9Inao+nw BO6dTXwNfnPtgNNjEskJZxJ1TP6kHlA7N6UenzsAk/kadalIhfmqNFNhIQ8g55lMzpzzM11IO0/lR zMlVJklRX1jqv+ngc9QhTshTRZ0Gv1xYJJxd8q5ZPSdUIA4kWnxdXZBUa0RRS6jW3e9hujeeK43pD 8zscwxY+1aNYHW7Bm36g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wfTMx-00000005s8b-1Jw2; Fri, 03 Jul 2026 02:11:07 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wfTMt-00000005s6Q-284G for linux-phy@lists.infradead.org; Fri, 03 Jul 2026 02:11:05 +0000 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c9bd2f8bf7so13373605ad.1 for ; Thu, 02 Jul 2026 19:11:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783044662; x=1783649462; 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=oZGXVG+lHt0HZzVnsnA3zj+o14WiOx8zz6BUjKDXoZ0=; b=C/kzwzbVO0nHOfncpxZm0jEyOJRbpX0kvTNR8FFupaYvb7MDTcl+TYsrZF7tOoje0T cun7JzPL2cnY7P6y3QPFKjYFxX2G+nUbi2jPd4hLjNckaLuJbu0LhtKSy6COOYf6fzcl BChT55HHLHFzOvbzOH5tz364TlPdXN+5DmpAPQnmfEGlV3Yyx7980yOre2DAwQCxDGX6 nWzVAGYWbxDvCe52RMI9Cv0DVrqBykbxyJ07liX6aiVFbr9YGCL3sZ6aQkM9oBhFn22p 5mSnL1VY1kBJrvi2nE4APxmE57LPBQ0IS1CYh6HCxBtHl3V9VKjlWhPZUHsmNczuvpnv 1bcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783044662; x=1783649462; 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=oZGXVG+lHt0HZzVnsnA3zj+o14WiOx8zz6BUjKDXoZ0=; b=XKhmxC7wvuIf0oqPoGFB2P2VTNXy+F9Ia7Z4NtjTsVvxmAlLoGhSgN6cCyhgD1qIhF L8+xhLW4ocJka7q8ayZnf/I9vuRBvWARaqWuYkXWtUXKZ+oUewFpDjYpGkKPQqBvzjba 9XpUfLrWI+zjt2EJ482UVIQn2w+GyabsbGy6pxcQ9vGxCAybxIao7SI1XXfET6Q7Agl6 u6xPyzTmkjAjmYXobEY9FvyH90O+BI7ODK8xmd42yXlyVqCGO6n8b1ovFsCuTAKjnJix fnQhQk5tjR0/aA/iaT7Un65k7xmvWgLDhhaQLpTBMT2bnf5rqdBHFrgt2jMBTMUuMrr0 cfSg== X-Gm-Message-State: AOJu0Yzo7oyh1HL+ycZAT1+oXG0appUxLOXFJ5md0grnM1yZR3ryxaCo /Y9X4zPup3b9UHklZGG0a5wpAopaRg96H3QmzPdloR6dZw4xIxPPEYPs X-Gm-Gg: AfdE7cn2DbPCdsMFnZHSEXqbmB4zCzLW6BY5PMQ63ENGcHH2ontuOJmzTsrBQIhLJOf en7CkuCjEa0IFE5eldQMbDEZ8V86K9PbRFArQKZoSWIXbAm9kFzm3Pw/K4ozhpjqdUfXAqAT3x+ bYhgBLJVaqswS1Q9bxiowYWFSeeocF2aHow+mVe7OIUi7tyLA4ZCH4mLbeKKR4SNzuPTlfBcx56 Br2pgehGX+CHVJ8kWnedG/6/at0ZloALtN6+FLfrWjrVYxy8aVctEPMAU7/ZUqx+WY3GsKnGwQC 8Ydnvm95AS3lS1gGQWuJfgNeyQwHT/ruYI4h2Ck7kFRAbtxnGIVoW8fbV0TOL0PRZ891Y+lpneM yjZ6G9eoVCUmklWYO5AA5AwdCOu8iiI49e4CN8dhxPMhyz34TPiX0aPg0K97U5eNIBKA+uPsQlj Pb07wLi4LucxQ= X-Received: by 2002:a17:903:2450:b0:2c9:b911:bdc2 with SMTP id d9443c01a7336-2cacacd3fbfmr21471585ad.6.1783044662378; Thu, 02 Jul 2026 19:11:02 -0700 (PDT) Received: from localhost ([2001:19f0:8000:3e6e:5400:6ff:fe38:3d01]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cad7765810sm1476895ad.53.2026.07.02.19.11.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Jul 2026 19:11: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 , Alex Elder , Ze Huang 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 v2 2/2] phy: spacemit: Add USB3/PCIe comb PHY driver for Spacemit K3 Date: Fri, 3 Jul 2026 10:10:23 +0800 Message-ID: <20260703021024.495433-3-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260703021024.495433-1-inochiama@gmail.com> References: <20260703021024.495433-1-inochiama@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260702_191103_596603_51B97C85 X-CRM114-Status: GOOD ( 25.30 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org VGhlIGNvbWIgUEhZIG9uIEszIHJlcXVpcmVzIHRvIGNvbmZpZ3VyZSBhIHN5c2NvbiBkZXZpY2Ug Zm9yIHRoZQpyaWdodCBtdXggY29uZmlndXJhdGlvbi4gQW5kIGl0IHJlcXVpcmVzIGNhbGlicmF0 aW9uIGJlZm9yZSBhbnkKdXNhZ2UuCgpBZGQgVVNCMy9QQ0llIGNvbWIgUEhZIGRyaXZlciBmb3Ig U3BhY2VtaXQgSzMuCgpTaWduZWQtb2ZmLWJ5OiBJbm9jaGkgQW1hb3RvIDxpbm9jaGlhbWFAZ21h aWwuY29tPgotLS0KIGRyaXZlcnMvcGh5L3NwYWNlbWl0L0tjb25maWcgICAgICAgICB8ICAxNiAr KwogZHJpdmVycy9waHkvc3BhY2VtaXQvTWFrZWZpbGUgICAgICAgIHwgICAyICsKIGRyaXZlcnMv cGh5L3NwYWNlbWl0L3BoeS1rMy1jb21iby5jICB8IDI1MiArKysrKysrKysrKysrKysrKwogZHJp dmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5jIHwgMzkxICsrKysrKysrKysrKysrKysr KysrKysrKysrKwogZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oIHwgIDI3ICsr CiA1IGZpbGVzIGNoYW5nZWQsIDY4OCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbWJvLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tbW9uLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tbW9uLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJz L3BoeS9zcGFjZW1pdC9LY29uZmlnIGIvZHJpdmVycy9waHkvc3BhY2VtaXQvS2NvbmZpZwppbmRl eCA1MGIwMDA1YWNmNjYuLjVmZGYxOGZjZTQ5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkvc3Bh Y2VtaXQvS2NvbmZpZworKysgYi9kcml2ZXJzL3BoeS9zcGFjZW1pdC9LY29uZmlnCkBAIC0yMywz ICsyMywxOSBAQCBjb25maWcgUEhZX1NQQUNFTUlUX0sxX1VTQjIKIAloZWxwCiAJICBFbmFibGUg dGhpcyB0byBzdXBwb3J0IEsxIFVTQiAyLjAgUEhZIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFrZXMg Y2FyZSBvZgogCSAgZW5hYmxpbmcgYW5kIGNsb2NrIHNldHVwIGFuZCB3aWxsIGJlIHVzZWQgYnkg SzEgdWRjL2VoY2kvb3RnL3hoY2kgZHJpdmVyLgorCitjb25maWcgUEhZX1NQQUNFTUlUX0szX0NP TU1PTl9PUFMKKwl0cmlzdGF0ZQorCXNlbGVjdCBNRkRfU1lTQ09OCisJc2VsZWN0IEdFTkVSSUNf UEhZCisKK2NvbmZpZyBQSFlfU1BBQ0VNSVRfSzNfQ09NQk9fUEhZCisJdHJpc3RhdGUgIlNwYWNl bWlUIEszIFVTQjMvUENJZSBQSFkgc3VwcG9ydCIKKwlkZXBlbmRzIG9uIChBUkNIX1NQQUNFTUlU IHx8IENPTVBJTEVfVEVTVCkgJiYgT0YKKwlkZXBlbmRzIG9uIENPTU1PTl9DTEsKKwlzZWxlY3Qg UEhZX1NQQUNFTUlUX0szX0NPTU1PTl9PUFMKKwloZWxwCisJICBFbmFibGUgdGhpcyB0byBzdXBw b3J0IEszIFVTQjMvUENJZSBjb21ibyBQSFkgZHJpdmVyLiBUaGlzCisJICBkcml2ZXIgdGFrZXMg Y2FyZSBvZiBlbmFibGluZyBhbmQgY2xvY2sgc2V0dXAgYW5kIHdpbGwgYmUgdXNlZAorCSAgYnkg SzMgZHdjMyBkcml2ZXIuCisJICBJZiB1bnN1cmUsIHNheSBOLgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9waHkvc3BhY2VtaXQvTWFrZWZpbGUgYi9kcml2ZXJzL3BoeS9zcGFjZW1pdC9NYWtlZmlsZQpp bmRleCBhODIxYTIxZDYxNDIuLmY2NzljMTg1MWI0ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9waHkv c3BhY2VtaXQvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9waHkvc3BhY2VtaXQvTWFrZWZpbGUKQEAg LTEsMyArMSw1IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKIG9i ai0kKENPTkZJR19QSFlfU1BBQ0VNSVRfSzFfUENJRSkJCSs9IHBoeS1rMS1wY2llLm8KIG9iai0k KENPTkZJR19QSFlfU1BBQ0VNSVRfSzFfVVNCMikJCSs9IHBoeS1rMS11c2IyLm8KK29iai0kKENP TkZJR19QSFlfU1BBQ0VNSVRfSzNfQ09NQk9fUEhZKQkJKz0gcGh5LWszLWNvbWJvLm8KK29iai0k KENPTkZJR19QSFlfU1BBQ0VNSVRfSzNfQ09NTU9OX09QUykJKz0gcGh5LWszLWNvbW1vbi5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tYm8uYyBiL2RyaXZlcnMv cGh5L3NwYWNlbWl0L3BoeS1rMy1jb21iby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMGJjMDhiYjYyNDdhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9waHkv c3BhY2VtaXQvcGh5LWszLWNvbWJvLmMKQEAgLTAsMCArMSwyNTIgQEAKKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBwaHktazMtY29tYm8uYyAtIFNwYWNl bWlUIEszIFBDSWUvVVNCMyBDb21ibyBQSFkgRHJpdmVyCisgKgorICogQ29weXJpZ2h0IChjKSAy MDI1IFNwYWNlbWlUIFRlY2hub2xvZ3kgQ28uIEx0ZAorICovCisKKyNpbmNsdWRlIDxsaW51eC9i aXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgorI2luY2x1ZGUgPGxpbnV4L2lvcG9s bC5oPgorI2luY2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvcGh5L3Bo eS5oPgorCisjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcGh5L3BoeS5oPgorCisjaW5jbHVkZSAicGh5 LWszLWNvbW1vbi5oIgorCisvKgorICogVGhlIFBDSUUvVVNCIFN1YnN5c3RlbSBvbiBTcGFjZW1p VCBLMyBoYXZlIDMgc2luZ2xlIGxhbmUgUElQRTMgUEhZcworICogKFBIWTIvMy80KSBzaGFyZWQg YnkgUENJRSBQb3J0Qy9EIGFuZCBVU0IzIFBvcnRCL0MvRC4KKyAqCisgKiBQTVVBX1BDSUVfU1VC U1lTX01HTVRbNDowXQorICoKKyAqICAgYml0NCA9IDAgOiBQQ0llIEEgWDggbW9kZSwgYWxsIDgg bGFuZXMgZGVkaWNhdGVkIHRvIFBDSWUgUG9ydCBBCisgKiAgICAgICAgICAxIDogUEhZIGxhbmVz IHNoYXJlZCBiZXR3ZWVuIFBDSWUgb3IgVVNCIGFjY29yZGluZyB0byBbMzowXQorICoKKyAqIEFs bCBQSFkgbWF0cml4IGNvbWJpbmF0aW9ucyBhY2NvcmRpbmcgdG8gWzQ6MF06CisgKgorICogICAw eDBYIDogUENJZS1BIFg4CisgKiAgIDB4MTAgOiBQQ0llLUMgeDIgKFBIWTIrUEhZMykgKyBQQ0ll LUQgeDEgKFBIWTQpCisgKiAgIDB4MTEgOiBQQ0llLUMgeDIgKFBIWTIrUEhZMykgKyBVU0ItRCAo UEhZNCkKKyAqICAgMHgxMiA6IFBDSWUtQyB4MSAoUEhZMikgICAgICArIFVTQi1DIChQSFkzKQor ICogICAweDEzIDogUENJZS1DIHgxIChQSFkyKSAgICAgICsgVVNCLUMgKFBIWTMpICsgVVNCLUQg KFBIWTQpCisgKiAgIDB4MTQgOiBQQ0llLUMgeDEgKFBIWTMpICAgICAgKyBVU0ItQiAoUEhZMikK KyAqICAgMHgxNSA6IFBDSWUtQyB4MSAoUEhZMykgICAgICArIFVTQi1CIChQSFkyKSArIFVTQi1E IChQSFk0KQorICogICAweDE2IDogVVNCLUIgKFBIWTIpICsgVVNCLUMgKFBIWTMpICsgUENJZSBE IHgxIChQSFk0KQorICogICAweDE3IDogVVNCLUIgKFBIWTIpICsgVVNCLUMgKFBIWTMpICsgVVNC LUQgKFBIWTQpCisgKgorICogU28gYW55IFVTQiBQb3J0IEIvQy9EIG9wZXJhdGlvbiByZXF1aXJl cyBQQ0llIEEgWDggbW9kZSB0byBiZSBkaXNhYmxlZC4KKyAqLworI2RlZmluZSBQTVVBX1BDSUVf U1VCU1lTX01HTVQJCTB4MWQ4CisjZGVmaW5lIFBVX01BVFJJWF9DT05GX01BU0sJCUdFTk1BU0so NCwgMCkKKworI2RlZmluZSBDT01CUEhZX01BWF9TVUJQSFlTCQk2CisKK3N0cnVjdCBrM19jb21i b19waHkgeworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgazNfbGFuZV9ncm91cCBncm91 cHNbQ09NQlBIWV9NQVhfU1VCUEhZU107CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXN0cnVjdCBy ZWdtYXAgKmFwYl9zcGFyZTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgazNfcGh5X2xhbmVf Z3JvdXBfZGF0YSBrM19jb21icGh5X2xhbmVfZ3JvdXAwID0geworCS5sYW5lcwkJPSAyLAorCS5j b25maWcJCT0gMHhmZiwKKwkubWFzawkJPSAweDAwLAorCS5vZmZzZXRzCT0geworCQkweDAsIDB4 NDAwCisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgazNfcGh5X2xhbmVfZ3JvdXBfZGF0 YSBrM19jb21icGh5X2xhbmVfZ3JvdXAxID0geworCS5sYW5lcwkJPSAyLAorCS5jb25maWcJCT0g MHhmZiwKKwkubWFzawkJPSAweDAwLAorCS5vZmZzZXRzCT0geworCQkweDEwMDAwMCwgMHgxMDA0 MDAKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBrM19waHlfbGFuZV9ncm91cF9kYXRh IGszX2NvbWJwaHlfbGFuZV9ncm91cDIgPSB7CisJLmxhbmVzCQk9IDEsCisJLmNvbmZpZwkJPSAw eDE0LAorCS5tYXNrCQk9IDB4MTQsCisJLm9mZnNldHMJPSB7CisJCTB4MjAwMDAwCisJfSwKK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgazNfcGh5X2xhbmVfZ3JvdXBfZGF0YSBrM19jb21icGh5 X2xhbmVfZ3JvdXAzID0geworCS5sYW5lcwkJPSAxLAorCS5jb25maWcJCT0gMHgxMiwKKwkubWFz awkJPSAweDEyLAorCS5vZmZzZXRzCT0geworCQkweDMwMDAwMAorCX0sCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGszX3BoeV9sYW5lX2dyb3VwX2RhdGEgazNfY29tYnBoeV9sYW5lX2dyb3Vw NCA9IHsKKwkubGFuZXMJCT0gMSwKKwkuY29uZmlnCQk9IDB4MTEsCisJLm1hc2sJCT0gMHgxMSwK Kwkub2Zmc2V0cwk9IHsKKwkJMHg0MDAwMDAKKwl9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBrM19waHlfbGFuZV9ncm91cF9kYXRhIGszX2NvbWJwaHlfbGFuZV9ncm91cDUgPSB7CisJLmxh bmVzCQk9IDEsCisJLmNvbmZpZwkJPSAweGZmLAorCS5tYXNrCQk9IDB4MDAsCisJLm9mZnNldHMJ PSB7CisJCTB4NTAwMDAwCisJfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgazNfcGh5X2xh bmVfZ3JvdXBfZGF0YSAqazNfY29tYnBoeV9sYW5lX2RhdGFzW10gPSB7CisJJmszX2NvbWJwaHlf bGFuZV9ncm91cDAsCisJJmszX2NvbWJwaHlfbGFuZV9ncm91cDEsCisJJmszX2NvbWJwaHlfbGFu ZV9ncm91cDIsCisJJmszX2NvbWJwaHlfbGFuZV9ncm91cDMsCisJJmszX2NvbWJwaHlfbGFuZV9n cm91cDQsCisJJmszX2NvbWJwaHlfbGFuZV9ncm91cDUsCit9OworCitzdGF0aWMgaW50IGszX2Nv bWJvX3BoeV9pbml0X2xhbmVzKHN0cnVjdCBrM19jb21ib19waHkgKnBoeSwgdW5zaWduZWQgaW50 IGNvbmZpZykKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGszX2Nv bWJwaHlfbGFuZV9kYXRhcyk7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgazNfcGh5X2xhbmVfZ3Jv dXBfZGF0YSAqZGF0YSA9IGszX2NvbWJwaHlfbGFuZV9kYXRhc1tpXTsKKwkJc3RydWN0IGszX2xh bmVfZ3JvdXAgKmxnID0gJnBoeS0+Z3JvdXBzW2ldOworCQljb25zdCBzdHJ1Y3QgcGh5X29wcyAq b3BzOworCQlib29sIGlzX3VzYjsKKworCQlpc191c2IgPSAoZGF0YS0+bWFzayAmIGNvbmZpZykg PT0gZGF0YS0+Y29uZmlnOworCQlpZiAoaXNfdXNiKQorCQkJb3BzID0gJmszX3VzYjNfcGh5X29w czsKKwkJZWxzZQorCQkJb3BzID0gJmszX3BjaWVfcGh5X29wczsKKworCQlkZXZfZGJnKHBoeS0+ ZGV2LCAicGh5ICVkIGlzICVzXG4iLCBpLCBpc191c2IgPyAidXNiIiA6ICJwY2llIik7CisKKwkJ bGctPnBoeSA9IGRldm1fcGh5X2NyZWF0ZShwaHktPmRldiwgTlVMTCwgb3BzKTsKKwkJaWYgKElT X0VSUihsZy0+cGh5KSkKKwkJCXJldHVybiBQVFJfRVJSKGxnLT5waHkpOworCisJCWxnLT5pc19w Y2llID0gIWlzX3VzYjsKKwkJbGctPmRhdGEgPSBkYXRhOworCQlsZy0+YmFzZSA9IHBoeS0+YmFz ZTsKKwkJcGh5X3NldF9kcnZkYXRhKGxnLT5waHksIGxnKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBrM19jb21ib19waHlfdXBkYXRlX2NvbmZpZyhzdHJ1Y3QgcmVnbWFwICph cG11LCB1bnNpZ25lZCBpbnQgY29uZmlnKQoreworCWlmIChjb25maWcgJiB+UFVfTUFUUklYX0NP TkZfTUFTSykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gcmVnbWFwX3VwZGF0ZV9iaXRz KGFwbXUsIFBNVUFfUENJRV9TVUJTWVNfTUdNVCwgUFVfTUFUUklYX0NPTkZfTUFTSywgY29uZmln KTsKK30KKworc3RhdGljIHN0cnVjdCBwaHkgKmszX2NvbWJvX3BoeV94bGF0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBvZl9waGFuZGxlX2FyZ3MgKmFyZ3MpCit7CisJc3RydWN0 IGszX2NvbWJvX3BoeSAqcGh5ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGszX2xh bmVfZ3JvdXAgKmxnOworCisJaWYgKGFyZ3MtPmFyZ3NfY291bnQgIT0gMikgeworCQlkZXZfZXJy KGRldiwgIkludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50c1xuIik7CisJCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOworCX0KKworCWlmIChhcmdzLT5hcmdzWzBdID49IEFSUkFZX1NJWkUoazNfY29t YnBoeV9sYW5lX2RhdGFzKSkgeworCQlkZXZfZXJyKGRldiwgIkludmFsaWQgUEhZIGlkXG4iKTsK KwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJfQorCisJbGcgPSAmcGh5LT5ncm91cHNbYXJn cy0+YXJnc1swXV07CisKKwlpZiAoKGxnLT5pc19wY2llICYmIGFyZ3MtPmFyZ3NbMV0gIT0gUEhZ X1RZUEVfUENJRSkgfHwKKwkgICAgKCFsZy0+aXNfcGNpZSAmJiBhcmdzLT5hcmdzWzFdICE9IFBI WV9UWVBFX1VTQjMpKSB7CisJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBQSFkgbW9kZVxuIik7CisJ CXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOworCX0KKworCXJldHVybiBsZy0+cGh5OworfQorCitz dGF0aWMgaW50IGszX2NvbWJvX3BoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0IGRldmljZV9u b2RlICpub2RlID0gZGV2LT5vZl9ub2RlOworCXN0cnVjdCBwaHlfcHJvdmlkZXIgKnByb3ZpZGVy OworCXN0cnVjdCBrM19jb21ib19waHkgKnBoeTsKKwlzdHJ1Y3QgcmVnbWFwICphcG11OworCXUz MiBjb25maWcgPSAwOworCWludCByZXQ7CisKKwlwaHkgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXpl b2YoKnBoeSksIEdGUF9LRVJORUwpOworCWlmICghcGh5KQorCQlyZXR1cm4gLUVOT01FTTsKKwor CXBoeS0+YmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKKwlp ZiAoSVNfRVJSKHBoeS0+YmFzZSkpCisJCXJldHVybiBQVFJfRVJSKHBoeS0+YmFzZSk7CisKKwlw aHktPmFwYl9zcGFyZSA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X3BoYW5kbGUobm9kZSwgInNw YWNlbWl0LGFwYi1zcGFyZSIpOworCWlmIChJU19FUlIocGh5LT5hcGJfc3BhcmUpKQorCQlyZXR1 cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIocGh5LT5hcGJfc3BhcmUpLAorCQkJCSAgICAg IkZhaWxlZCB0byBmaW5kIEFQQiBTUEFSRSBzeXNjb24iKTsKKworCWFwbXUgPSBzeXNjb25fcmVn bWFwX2xvb2t1cF9ieV9waGFuZGxlX2FyZ3Mobm9kZSwgInNwYWNlbWl0LGFwbXUiLCAxLCAmY29u ZmlnKTsKKwlpZiAoSVNfRVJSKGFwbXUpKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBU Ul9FUlIoYXBtdSksCisJCQkJICAgICAiRmFpbGVkIHRvIGZpbmQgQVBNVSBzeXNjb24iKTsKKwor CXJldCA9IGszX2NvbWJvX3BoeV91cGRhdGVfY29uZmlnKGFwbXUsIGNvbmZpZyk7CisJaWYgKHJl dCA8IDApCisJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRvIHNldCBs YW5lIGNvbmZpZ3VyYXRpb24iKTsKKworCXBoeS0+ZGV2ID0gZGV2OworCXBsYXRmb3JtX3NldF9k cnZkYXRhKHBkZXYsIHBoeSk7CisKKwlyZXQgPSBrM19waHlfY2FsaWJyYXRlKHBoeS0+YXBiX3Nw YXJlKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsICJG YWlsZWQgdG8gY2FsaWJyYXRlIHBoeSIpOworCisJcmV0ID0gazNfY29tYm9fcGh5X2luaXRfbGFu ZXMocGh5LCBjb25maWcpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShk ZXYsIHJldCwgIkZhaWxlZCB0byBpbml0IGxhbmVzIik7CisKKwlwcm92aWRlciA9IGRldm1fb2Zf cGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwgazNfY29tYm9fcGh5X3hsYXRlKTsKKwlpZiAoSVNf RVJSKHByb3ZpZGVyKSkKKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByb3Zp ZGVyKSwKKwkJCQkgICAgICJGYWlsZWQgdG8gcmVnaXN0ZXIgcHJvdmlkZXJcbiIpOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGszX2NvbWJvX3Bo eV9vZl9tYXRjaFtdID0geworCXsgLmNvbXBhdGlibGUgPSAic3BhY2VtaXQsazMtY29tYm8tcGh5 IiB9LAorCXsgfSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBrM19jb21ib19waHlfb2Zf bWF0Y2gpOworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBrM19jb21ib19waHlfZHJp dmVyID0geworCS5wcm9iZSA9IGszX2NvbWJvX3BoeV9wcm9iZSwKKwkuZHJpdmVyID0geworCQku bmFtZSA9ICJzcGFjZW1pdCxrMy1jb21iby1waHkiLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBrM19j b21ib19waHlfb2ZfbWF0Y2gsCisJfSwKK307Cittb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGszX2Nv bWJvX3BoeV9kcml2ZXIpOworCitNT0RVTEVfREVTQ1JJUFRJT04oIlNwYWNlbWlUIEszIFVTQjMv UENJZSBjb21ibyBQSFkgZHJpdmVyIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL3BoeS9zcGFjZW1pdC9waHktazMtY29tbW9uLmMgYi9kcml2ZXJzL3BoeS9z cGFjZW1pdC9waHktazMtY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4wYjI4OWU2M2RiOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3BoeS9zcGFj ZW1pdC9waHktazMtY29tbW9uLmMKQEAgLTAsMCArMSwzOTEgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKworI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cisj aW5jbHVkZSA8bGludXgvY2xlYW51cC5oPgorI2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVk ZSA8bGludXgvaW9wb2xsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8 bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8bGludXgvdXNiLmg+CisKKyNpbmNsdWRlIDxkdC1i aW5kaW5ncy9waHkvcGh5Lmg+CisKKyNpbmNsdWRlICJwaHktazMtY29tbW9uLmgiCisKKy8qIFBI WSBSZWdpc3RlcnMgKi8KKyNkZWZpbmUgUEhZX1ZFUlNJT04JCQkweDAKKworI2RlZmluZSBQSFlf UkVTRVRfQ0ZHCQkJMHgwNAorCisjZGVmaW5lIFBIWV9SRVNFVF9SWEJVRl9SU1QJCUJJVCgwKQor I2RlZmluZSBQSFlfUkVTRVRfU09GVF9SU1RfUENTCQlCSVQoMSkKKyNkZWZpbmUgUEhZX1JFU0VU X1NPRlRfUlNUX0FIQgkJQklUKDIpCisjZGVmaW5lIFBIWV9SRVNFVF9FTl9TRF9BRlRFUl9MT0NL CUJJVCg2KQorCisjZGVmaW5lIFBIWV9DTEtfQ0ZHCQkJMHgwOAorCisjZGVmaW5lIFBIWV9DTEtf UExMX1JFQURZCQlCSVQoMCkKKyNkZWZpbmUgUEhZX0NMS19UWENMS19JTlYJCUJJVCgyKQorI2Rl ZmluZSBQSFlfQ0xLX1JYQ0xLX0VOCQlCSVQoMykKKyNkZWZpbmUgUEhZX0NMS19UWENMS19FTgkJ QklUKDQpCisjZGVmaW5lIFBIWV9DTEtfUENMS19FTgkJCUJJVCg1KQorI2RlZmluZSBQSFlfQ0xL X1BJUEVfUENMS19FTgkJQklUKDYpCisjZGVmaW5lIFBIWV9DTEtfUkVGQ0xLX0ZSRVEJCUdFTk1B U0soMTAsIDcpCisjZGVmaW5lIFBIWV9DTEtfUkVGQ0xLXzI0TQkJMgorI2RlZmluZSBQSFlfQ0xL X1NXX0lOSVRfRE9ORQkJQklUKDExKQorI2RlZmluZSBQSFlfQ0xLX1BVX1NTQ19PVVQJCUJJVCgy MykKKworI2RlZmluZSBQSFlfTU9ERV9DRkcJCQkweDBDCisKKyNkZWZpbmUgUEhZX01PREVfUENJ RV9JTlRfRU4JCUJJVCgwKQorI2RlZmluZSBQSFlfTU9ERV9MRlBTX1RQRVJJT0QJCUdFTk1BU0so OSwgOCkKKyNkZWZpbmUgUEhZX01PREVfTEZQU19UUEVSSU9EX1VTQgkzCisKKyNkZWZpbmUgUEhZ X1BVX1NFTAkJCTB4NDAKKworI2RlZmluZSBQSFlfUFVfQ0ZHX1NUQVRVUwkJQklUKDkpCisjZGVm aW5lIFBIWV9QVV9PVlJEX1NUQVRVUwkJQklUKDEwKQorCisjZGVmaW5lIFBIWV9QVV9DS19SRUcJ CQkweDU0CisKKyNkZWZpbmUgUEhZX1BVX1JFRkNMS18xMDAJCUJJVCgyNSkKKworI2RlZmluZSBQ SFlfUExMX1JFRzEJCQkweDU4CisKKyNkZWZpbmUgUEhZX1BMTF9GUkVGX1NFTAkJR0VOTUFTSygx NSwgMTMpCisjZGVmaW5lIFBIWV9QTExfRlJFRl8yNE0JCTB4MQorI2RlZmluZSBQSFlfUExMX1NT Q19ERVBfU0VMCQlHRU5NQVNLKDI3LCAyNCkKKyNkZWZpbmUgUEhZX1BMTF9TU0NfNTAwMFBQTQkJ MHhhCisjZGVmaW5lIFBIWV9QTExfU1NDX01PREUJCUdFTk1BU0soMjksIDI4KQorI2RlZmluZSBQ SFlfUExMX1NTQ19NT0RFX0NFTlRFUl9TUFJFQUQJMAorI2RlZmluZSBQSFlfUExMX1NTQ19NT0RF X1VQX1NQUkVBRAkxCisjZGVmaW5lIFBIWV9QTExfU1NDX01PREVfRE9XTl9TUFJFQUQJMgorI2Rl ZmluZSBQSFlfUExMX1NTQ19NT0RFX0RPV05fU1BSRUFEMQkzCisKKyNkZWZpbmUgUEhZX1BMTF9S RUcyCQkJMHg1YworCisjZGVmaW5lIFBIWV9QTExfU0VMX1JFRjEwMAkJQklUKDIxKQorCisvKiBQ SFkgUlggUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgUEhZX1JYX1JFR19BCQkJMHg2 MAorCisjZGVmaW5lIFBIWV9SWF9SRUcwX01BU0sJCUdFTk1BU0soNywgMCkKKyNkZWZpbmUgUEhZ X1JYX1JFRzFfTUFTSwkJR0VOTUFTSygxNSwgOCkKKyNkZWZpbmUgUEhZX1JYX1JFRzJfTUFTSwkJ R0VOTUFTSygyMywgMTYpCisjZGVmaW5lIFBIWV9SWF9SRUczX01BU0sJCUdFTk1BU0soMzEsIDI0 KQorCisjZGVmaW5lIFBIWV9SWF9SRUcwX1JMT0FECQlCSVQoNCkKKyNkZWZpbmUgUEhZX1JYX1JF RzFfUlRFUk0JCUdFTk1BU0soMTEsIDgpCisjZGVmaW5lIFBIWV9SWF9SRUcxX1JDX0NBTEkJCUdF Tk1BU0soMTUsIDEyKQorI2RlZmluZSBQSFlfUlhfUkVHMl9DU0VMCQlHRU5NQVNLKDE5LCAxNikK KyNkZWZpbmUgUEhZX1JYX1JFRzJfRk9SQ0VfQ1NFTAkJQklUKDIwKQorI2RlZmluZSBQSFlfUlhf UkVHMl9QU0VMCQlHRU5NQVNLKDIzLCAyMSkKKyNkZWZpbmUgUEhZX1JYX1JFRzNfSV9MT0FECQlH RU5NQVNLKDI2LCAyNCkKKyNkZWZpbmUgUEhZX1JYX1JFRzNfU0VMX0NCT09TVF9DT0RFCUJJVCgy NykKKyNkZWZpbmUgUEhZX1JYX1JFRzNfQURKX0JJQVMJCUdFTk1BU0soMjksIDI4KQorI2RlZmlu ZSBQSFlfUlhfUkVHM19SREVHMQkJR0VOTUFTSygzMSwgMzApCisKKyNkZWZpbmUgUEhZX1JYX1JF R19CCQkJMHg2NAorCisjZGVmaW5lIFBIWV9SWF9SRUc0X01BU0sJCUdFTk1BU0soNywgMCkKKyNk ZWZpbmUgUEhZX1JYX1JFRzVfTUFTSwkJR0VOTUFTSygxNSwgOCkKKyNkZWZpbmUgUEhZX1JYX1JF RzZfTUFTSwkJR0VOTUFTSygyMywgMTYpCisKKyNkZWZpbmUgUEhZX1JYX1JFR0JfTUFTSwkJR0VO TUFTSygyMywgMCkKKworI2RlZmluZSBQSFlfUlhfUkVHNF9SREVHMgkJR0VOTUFTSygyLCAxKQor I2RlZmluZSBQSFlfUlhfUkVHNF9FTlZPUwkJQklUKDQpCisjZGVmaW5lIFBIWV9SWF9SRUc0X1JU RVJNX1NFTAkJQklUKDUpCisjZGVmaW5lIFBIWV9SWF9SRUc0X01BTlVBTF9DRkcJCUJJVCg3KQor I2RlZmluZSBQSFlfUlhfUkVHNV9SQ0VMTF9WQ00JCUdFTk1BU0soMTEsIDgpCisjZGVmaW5lIFBI WV9SWF9SRUc1X1JDRUxMX0JJQVMJCUdFTk1BU0soMTUsIDEyKQorI2RlZmluZSBQSFlfUlhfUkVH Nl9IMV9SRUcJCUdFTk1BU0soMTksIDE2KQorI2RlZmluZSBQSFlfUlhfUkVHNl9BREFQVF9HQUlO CQlHRU5NQVNLKDIxLCAyMCkKKyNkZWZpbmUgUEhZX1JYX1JFRzZfQllQQVNTX0FEUFQJCUJJVCgy MikKKworI2RlZmluZSBQSFlfQURQVF9DRkcwCQkJMHgxNDAKKyNkZWZpbmUgUEhZX0FEUFRfQUZF X1JTVF9PVlJEX0VOCUJJVCgxKQorI2RlZmluZSBQSFlfQURQVF9BRkVfUlNUX09WUkRfVkFMCUJJ VCg0KQorCisjZGVmaW5lIFBIWV9SWEVRX1RJTUUJCQkweGI0CisjZGVmaW5lIFBIWV9SWEVRX1RJ TUVfT1ZSRF9QT1NUX0NfU09DCUJJVCgyMSkKKyNkZWZpbmUgUEhZX1JYRVFfVElNRV9DRkdfQU1Q X1NPQwlHRU5NQVNLKDIzLCAyMikKKyNkZWZpbmUgUEhZX1JYRVFfVElNRV9BTVBfU09DXzY1ME0J MAorI2RlZmluZSBQSFlfUlhFUV9USU1FX0FNUF9TT0NfODAwTQkxCisjZGVmaW5lIFBIWV9SWEVR X1RJTUVfQU1QX1NPQ184NzBNCTIKKyNkZWZpbmUgUEhZX1JYRVFfVElNRV9BTVBfU09DXzkwME0J MworI2RlZmluZSBQSFlfUlhFUV9USU1FX09WUkRfQU1QX1NPQwlCSVQoMjQpCisKKyNkZWZpbmUg UENJRV9QVV9BRERSX0NMS19DRkcJCTB4MDAwOAorI2RlZmluZSBQSFlfQ0xLX1BMTF9SRUFEWQkJ QklUKDApCisjZGVmaW5lIFBDSUVfSU5JVEFMX1RJTUVSCQlHRU5NQVNLKDYsIDMpCisjZGVmaW5l IENGR19JTlRFUk5BTF9USU1FUl9BREoJCUdFTk1BU0soMTAsIDcpCisjZGVmaW5lIENGR19TV19Q SFlfSU5JVF9ET05FCQlCSVQoMTEpCisKKy8qIExhbmUgUlgvVFggY29uZmlndXJhdGlvbiAocGVy 4oCRbGFuZSwgYXQgbGFuZV9iYXNlKSAqLworI2RlZmluZSBQQ0lFX1JYX1JFRzEJCQkweDA1MAor I2RlZmluZSBQQ0lFX1JYX1JFRkNMS19NT0RFCQlHRU5NQVNLKDEsIDApCisjZGVmaW5lIFBDSUVf UlhfUkVGQ0xLX01PREVfRFJJVkVSCTEKKyNkZWZpbmUgUENJRV9SWF9TRUxfVFJJX0NPREUJCUJJ VCgyKQorI2RlZmluZSBQQ0lFX1JYX0xFR0FDWQkJCUdFTk1BU0soMTUsIDgpCisjZGVmaW5lIFBD SUVfUlhfTEVHQUNZX0RFRkFVTFQJCTB4NjUKKworI2RlZmluZSBQQ0lFX1RYX1JFRzEJCQkweDA2 NAorCisjZGVmaW5lIFBDSUVfUExMX1RJTUVPVVQJCTUwMDAwMAorI2RlZmluZSBQQ0lFX1BPTExf REVMQVkJCQk1MDAKKworc3RhdGljIGludCBrM191c2IzcGh5X2luaXRfc2luZ2xlKHN0cnVjdCBr M19sYW5lX2dyb3VwICpsZywgdm9pZCBfX2lvbWVtICpiYXNlKQoreworCXN0cnVjdCBwaHkgKnBo eSA9IGxnLT5waHk7CisJdTMyIHZhbCwgdG1wOworCWludCByZXQ7CisKKwkvKiBEbyBub3Qgd2Fp dCBDRFIgbG9jayBiZWZvcmUgc2FtcGxpbmcgZGF0YSAqLworCXZhbCA9IHJlYWRsKGJhc2UgKyBQ SFlfUkVTRVRfQ0ZHKTsKKwl2YWwgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbCwgMCwgUEhZX1JFU0VU X0VOX1NEX0FGVEVSX0xPQ0spOworCXdyaXRlbCh2YWwsIGJhc2UgKyBQSFlfUkVTRVRfQ0ZHKTsK KworCS8qIFBvd2VyIGRvd24gMTAwTUh6IHJlZmNsayBidWZmZXIgKi8KKwl2YWwgPSByZWFkbChi YXNlICsgUEhZX1BVX0NLX1JFRyk7CisJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDAsIFBI WV9QVV9SRUZDTEtfMTAwKTsKKwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX1BVX0NLX1JFRyk7CisK KwkvKiBQcm9ncmFtIFBMTCBSRUcxIGNvbmZpZ3VyZSB0aGUgU1NDICovCisJdmFsID0gRklFTERf UFJFUChQSFlfUExMX1NTQ19NT0RFLCBQSFlfUExMX1NTQ19NT0RFX0RPV05fU1BSRUFEMSkgfAor CSAgICAgIEZJRUxEX1BSRVAoUEhZX1BMTF9TU0NfREVQX1NFTCwgUEhZX1BMTF9TU0NfNTAwMFBQ TSkgfAorCSAgICAgIEZJRUxEX1BSRVAoUEhZX1BMTF9GUkVGX1NFTCwgUEhZX1BMTF9GUkVGXzI0 TSk7CisJd3JpdGVsKHZhbCwgYmFzZSArIFBIWV9QTExfUkVHMSk7CisKKwkvKiBVbi1zZWxlY3Qg MTAwTUh6IFBMTCByZWZlcmVuY2UgKi8KKwl2YWwgPSByZWFkbChiYXNlICsgUEhZX1BMTF9SRUcy KTsKKwl2YWwgPSB1MzJfcmVwbGFjZV9iaXRzKHZhbCwgMCwgUEhZX1BMTF9TRUxfUkVGMTAwKTsK Kwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX1BMTF9SRUcyKTsKKworCS8qIFVTQiBMRlBTIHBlcmlv ZCBjb25maWd1cmF0aW9uICovCisJdmFsID0gcmVhZGwoYmFzZSArIFBIWV9NT0RFX0NGRyk7CisJ dmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIFBIWV9NT0RFX0xGUFNfVFBFUklPRF9VU0IsIFBI WV9NT0RFX0xGUFNfVFBFUklPRCk7CisJd3JpdGVsKHZhbCwgYmFzZSArIFBIWV9NT0RFX0NGRyk7 CisKKwkvKiBGb3JjZSBBRkUgYWRhcHRhdGlvbiByZXNldCAqLworCXZhbCA9IHJlYWRsKGJhc2Ug KyBQSFlfQURQVF9DRkcwKTsKKwl2YWwgfD0gUEhZX0FEUFRfQUZFX1JTVF9PVlJEX0VOIHwgUEhZ X0FEUFRfQUZFX1JTVF9PVlJEX1ZBTDsKKwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX0FEUFRfQ0ZH MCk7CisKKwkvKiBPdmVycmlkZSBkcml2ZXIgYW1wbGl0dWRlIHZhbHVlIHRvIDkwMG0gKi8KKwl2 YWwgPSByZWFkbChiYXNlICsgUEhZX1JYRVFfVElNRSk7CisJdmFsIHw9IFBIWV9SWEVRX1RJTUVf T1ZSRF9BTVBfU09DOworCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCBQSFlfUlhFUV9USU1F X0FNUF9TT0NfOTAwTSwgUEhZX1JYRVFfVElNRV9DRkdfQU1QX1NPQyk7CisJd3JpdGVsKHZhbCwg YmFzZSArIFBIWV9SWEVRX1RJTUUpOworCisJLyogQ29uZmlndXJlIFJYIHBhcmFtZXRlcnMgKi8K Kwl2YWwgPSBQSFlfUlhfUkVHMF9STE9BRCB8CisJCUZJRUxEX1BSRVAoUEhZX1JYX1JFRzFfUlRF Uk0sIDB4OCkgfAorCQlGSUVMRF9QUkVQKFBIWV9SWF9SRUcxX1JDX0NBTEksIDB4NykgfAorCQlG SUVMRF9QUkVQKFBIWV9SWF9SRUcyX0NTRUwsIDB4OCkgfAorCQlQSFlfUlhfUkVHMl9GT1JDRV9D U0VMIHwKKwkJRklFTERfUFJFUChQSFlfUlhfUkVHMl9QU0VMLCAweDQpIHwKKwkJRklFTERfUFJF UChQSFlfUlhfUkVHM19JX0xPQUQsIDB4NykgfAorCQlQSFlfUlhfUkVHM19TRUxfQ0JPT1NUX0NP REUgfAorCQlGSUVMRF9QUkVQKFBIWV9SWF9SRUczX0FESl9CSUFTLCAweDEpIHwKKwkJRklFTERf UFJFUChQSFlfUlhfUkVHM19SREVHMSwgMHgzKTsKKwl3cml0ZWwodmFsLCBiYXNlICsgUEhZX1JY X1JFR19BKTsKKworCXZhbCA9IHJlYWRsKGJhc2UgKyBQSFlfUlhfUkVHX0IpOworCXRtcCA9IEZJ RUxEX1BSRVAoUEhZX1JYX1JFRzRfUkRFRzIsIDB4MikgfAorCQlQSFlfUlhfUkVHNF9FTlZPUyB8 IFBIWV9SWF9SRUc0X1JURVJNX1NFTCB8IFBIWV9SWF9SRUc0X01BTlVBTF9DRkcgfAorCQlGSUVM RF9QUkVQKFBIWV9SWF9SRUc1X1JDRUxMX1ZDTSwgMHg4KSB8CisJCUZJRUxEX1BSRVAoUEhZX1JY X1JFRzVfUkNFTExfQklBUywgMHg4KSB8CisJCUZJRUxEX1BSRVAoUEhZX1JYX1JFRzZfSDFfUkVH LCAweDgpIHwKKwkJRklFTERfUFJFUChQSFlfUlhfUkVHNl9BREFQVF9HQUlOLCAweDIpOworCXZh bCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCB0bXAsIFBIWV9SWF9SRUdCX01BU0spOworCXdyaXRl bCh2YWwsIGJhc2UgKyBQSFlfUlhfUkVHX0IpOworCisJLyoKKwkgKiBJbmZvcm0gUEhZIHRoYXQg YWxsIFBMTC1yZWxhdGVkIGNvbmZpZ3VyYXRpb24gaXMgZG9uZS4KKwkgKiBQTEwgd2lsbCBub3Qg c3RhcnQgbG9ja2luZyB1bnRpbCBQSFlfQ0xLX1NXX0lOSVRfRE9ORSBpcyBzZXQuCisJICovCisJ dmFsID0gUEhZX0NMS19TV19JTklUX0RPTkUgfCBQSFlfQ0xLX1BVX1NTQ19PVVQgfAorCSAgICAg IEZJRUxEX1BSRVAoUEhZX0NMS19SRUZDTEtfRlJFUSwgUEhZX0NMS19SRUZDTEtfMjRNKSB8CisJ ICAgICAgUEhZX0NMS19SWENMS19FTiB8IFBIWV9DTEtfVFhDTEtfRU4gfAorCSAgICAgIFBIWV9D TEtfUENMS19FTiB8IFBIWV9DTEtfUElQRV9QQ0xLX0VOOworCXdyaXRlbCh2YWwsIGJhc2UgKyBQ SFlfQ0xLX0NGRyk7CisKKwlyZXQgPSByZWFkbF9wb2xsX3RpbWVvdXQoYmFzZSArIFBIWV9DTEtf Q0ZHLCB2YWwsCisJCQkJICh2YWwgJiBQSFlfQ0xLX1BMTF9SRUFEWSksCisJCQkJIFBDSUVfUE9M TF9ERUxBWSwgUENJRV9QTExfVElNRU9VVCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZwaHkt PmRldiwgIlBIWSBQTEwgcG9sbGluZyB0aW1lb3V0XG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBrM191c2IzcGh5X2luaXQoc3RydWN0IHBoeSAq cGh5KQoreworCXN0cnVjdCBrM19sYW5lX2dyb3VwICpsZyA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkp OworCWludCByZXQsIGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGctPmRhdGEtPmxhbmVzOyBpKysp IHsKKwkJcmV0ID0gazNfdXNiM3BoeV9pbml0X3NpbmdsZShsZywgbGctPmJhc2UgKyBsZy0+ZGF0 YS0+b2Zmc2V0c1tpXSk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworY29uc3Qgc3RydWN0IHBoeV9vcHMgazNfdXNiM19waHlfb3BzID0gewor CS5pbml0ID0gazNfdXNiM3BoeV9pbml0LAorCS5vd25lciA9IFRISVNfTU9EVUxFLAorfTsKK0VY UE9SVF9TWU1CT0xfR1BMKGszX3VzYjNfcGh5X29wcyk7CisKK3N0YXRpYyBpbnQgazNfcGNpZV9w aHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpCit7CisJc3RydWN0IGszX2xhbmVfZ3JvdXAgKmxnID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7CisJdm9pZCBfX2lvbWVtICpwaHlfYmFzZSA9IGxnLT5iYXNl ICsgbGctPmRhdGEtPm9mZnNldHNbMF07CisJdTMyIHZhbDsKKwlpbnQgcmV0OworCWludCBpOwor CisJdmFsID0gcmVhZGwocGh5X2Jhc2UgKyBQSFlfUExMX1JFRzEpOworCXZhbCA9IHUzMl9yZXBs YWNlX2JpdHModmFsLCAweDIsIEdFTk1BU0soMTUsIDEyKSk7CisJd3JpdGVsKHZhbCwgcGh5X2Jh c2UgKyBQSFlfUExMX1JFRzEpOworCisJdmFsID0gcmVhZGwocGh5X2Jhc2UgKyBQSFlfUExMX1JF RzIpOworCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCAwLCBCSVQoMjEpKTsKKwl3cml0ZWwo dmFsLCBwaHlfYmFzZSArIFBIWV9QTExfUkVHMik7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGctPmRh dGEtPmxhbmVzOyBpKyspIHsKKwkJdm9pZCBfX2lvbWVtICpsYW5lX2Jhc2UgPSBsZy0+YmFzZSAr IGxnLT5kYXRhLT5vZmZzZXRzW2ldOworCisJCXZhbCA9IHJlYWRsKGxhbmVfYmFzZSArIFBDSUVf UlhfUkVHMSk7CisJCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCAwLCAweDMpOworCQl3cml0 ZWwodmFsLCBsYW5lX2Jhc2UgKyBQQ0lFX1JYX1JFRzEpOworCX0KKworCXZhbCA9IHJlYWRsKHBo eV9iYXNlICsgUEhZX1BMTF9SRUcyKTsKKwl2YWwgfD0gQklUKDIwKTsKKwl3cml0ZWwodmFsLCBw aHlfYmFzZSArIFBIWV9QTExfUkVHMik7CisKKwkvKiBUaGUgd3JpdGUgaXMgbmVlZGVkIGFzIGNs b2NrIHJlcXVpcmVzIHJlbmVnb3RpYXRpb24gKi8KKwl2YWwgPSBGSUVMRF9QUkVQKFBDSUVfUlhf UkVGQ0xLX01PREUsIFBDSUVfUlhfUkVGQ0xLX01PREVfRFJJVkVSKSB8CisJICAgICAgUENJRV9S WF9TRUxfVFJJX0NPREUgfAorCSAgICAgIEZJRUxEX1BSRVAoUENJRV9SWF9MRUdBQ1ksIFBDSUVf UlhfTEVHQUNZX0RFRkFVTFQpOworCXdyaXRlbCh2YWwsIHBoeV9iYXNlICsgUENJRV9SWF9SRUcx KTsKKworCS8qIHBsbF9yZWcxIG9mIGxhbmUwLCBkaXNhYmxlIFNTQzogcGxsWzI3OjI0XSA9IDAg Ki8KKwl2YWwgPSByZWFkbChwaHlfYmFzZSArIFBIWV9QTExfUkVHMSk7CisJdmFsID0gdTMyX3Jl cGxhY2VfYml0cyh2YWwsIDAsIEdFTk1BU0soMjcsIDI0KSk7CisJd3JpdGVsKHZhbCwgcGh5X2Jh c2UgKyBQSFlfUExMX1JFRzEpOworCisJZm9yIChpID0gMDsgaSA8IGxnLT5kYXRhLT5sYW5lczsg aSsrKSB7CisJCXZvaWQgX19pb21lbSAqbGFuZV9iYXNlID0gbGctPmJhc2UgKyBsZy0+ZGF0YS0+ b2Zmc2V0c1tpXTsKKworCQkvKiBzZXQgY2ZnX3R4X3NlbmRfZHVtbXlfZGF0YSB0byBiZSAxJ2Ix IGZvciBkaXNhYmxlIGRhc2ggZGF0YSAqLworCQl2YWwgPSByZWFkbChsYW5lX2Jhc2UgKyBQSFlf UFVfU0VMKTsKKwkJdmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDEsIEJJVCgxMykpOworCQl3 cml0ZWwodmFsLCBsYW5lX2Jhc2UgKyBQSFlfUFVfU0VMKTsKKworCQkvKiBkaXNhYmxlIGVuX3Nh bXBsZV9kYXRhX2FmdGVyX2Nkcl9sb2NrZWQgKi8KKwkJdmFsID0gcmVhZGwobGFuZV9iYXNlICsg UEhZX1JFU0VUX0NGRyk7CisJCXZhbCA9IHUzMl9yZXBsYWNlX2JpdHModmFsLCAwLCBCSVQoNikp OworCQl3cml0ZWwodmFsLCBsYW5lX2Jhc2UgKyBQSFlfUkVTRVRfQ0ZHKTsKKworCQkvKiBEeW5h bWljIExvY2sgKi8KKwkJdmFsID0gcmVhZGwobGFuZV9iYXNlICsgUEhZX01PREVfQ0ZHKTsKKwkJ dmFsID0gdTMyX3JlcGxhY2VfYml0cyh2YWwsIDEsIEJJVCgyKSk7CisJCXdyaXRlbCh2YWwsIGxh bmVfYmFzZSArIFBIWV9NT0RFX0NGRyk7CisKKwkJdmFsID0gRklFTERfUFJFUChQSFlfUlhfUkVH MF9NQVNLLCAweDEwKSB8CisJCQlGSUVMRF9QUkVQKFBIWV9SWF9SRUcxX01BU0ssIDB4NzgpIHwK KwkJCUZJRUxEX1BSRVAoUEhZX1JYX1JFRzJfTUFTSywgMHg5OCkgfAorCQkJRklFTERfUFJFUChQ SFlfUlhfUkVHM19NQVNLLCAweGRmKTsKKwkJd3JpdGVsKHZhbCwgbGFuZV9iYXNlICsgUEhZX1JY X1JFR19BKTsKKworCQl2YWwgPSByZWFkbChsYW5lX2Jhc2UgKyBQSFlfUlhfUkVHX0IpOworCQl2 YWwgJj0gflBIWV9SWF9SRUdCX01BU0s7CisJCXZhbCB8PSBGSUVMRF9QUkVQKFBIWV9SWF9SRUc0 X01BU0ssIDB4YjQpIHwKKwkJCUZJRUxEX1BSRVAoUEhZX1JYX1JFRzVfTUFTSywgMHg4OCkgfAor CQkJRklFTERfUFJFUChQSFlfUlhfUkVHNl9NQVNLLCAweDI4KTsKKwkJd3JpdGVsKHZhbCwgbGFu ZV9iYXNlICsgUEhZX1JYX1JFR19CKTsKKworCQkvKiBTZXQgaW5pdCBkb25lICovCisJCXZhbCA9 IHJlYWRsKGxhbmVfYmFzZSArIFBDSUVfUFVfQUREUl9DTEtfQ0ZHKTsKKwkJdmFsID0gdTMyX3Jl cGxhY2VfYml0cyh2YWwsIDEsIENGR19TV19QSFlfSU5JVF9ET05FKTsKKwkJd3JpdGVsKHZhbCwg bGFuZV9iYXNlICsgUENJRV9QVV9BRERSX0NMS19DRkcpOworCX0KKworCXJldCA9IHJlYWRsX3Bv bGxfdGltZW91dChwaHlfYmFzZSArIFBDSUVfUFVfQUREUl9DTEtfQ0ZHLCB2YWwsCisJCQkJICh2 YWwgJiBQSFlfQ0xLX1BMTF9SRUFEWSksIFBDSUVfUE9MTF9ERUxBWSwKKwkJCQkgUENJRV9QTExf VElNRU9VVCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKCZsZy0+cGh5LT5kZXYsICJQSFkgUExM IGxvY2sgdGltZW91dFxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K2NvbnN0IHN0cnVjdCBwaHlfb3BzIGszX3BjaWVfcGh5X29wcyA9IHsKKwkuaW5pdAkJPSBrM19w Y2llX3BoeV9pbml0LAorCS5vd25lcgkJPSBUSElTX01PRFVMRSwKK307CitFWFBPUlRfU1lNQk9M X0dQTChrM19wY2llX3BoeV9vcHMpOworCisvKiBQSFkgcmNhbCBpbml0IHJlcXVpcmVzIEFQQl9T UEFSRSByZWdtYXAgYWNjZXNzICovCisKKyNkZWZpbmUgQVBCX1NQQVJFX1BVX0NBTAkJMHgxNzgK KyNkZWZpbmUgUFVfQ0FMCQkJCUJJVCgxNykKKworI2RlZmluZSBBUEJfU1BBUkVfUkNBTF9IU0lP CQkweDE3YworI2RlZmluZSBBUEJfU1BBUkVfUFVfQ0FMX0RPTkUJCUJJVCg4KQorI2RlZmluZSBS Q0FMX09WUkRfUFRSSU0JCQlHRU5NQVNLKDIzLCAyMCkKKyNkZWZpbmUgUkNBTF9PVlJEX05UUklN CQkJR0VOTUFTSygyNywgMjQpCisjZGVmaW5lIFJDQUxfT1ZSRF9QVFJJTV9FTgkJQklUKDI4KQor I2RlZmluZSBSQ0FMX09WUkRfTlRSSU1fRU4JCUJJVCgyOSkKKyNkZWZpbmUgUkNBTF9PVlJEX1NU QUJMRV9WQUwJCUJJVCgzMCkKKyNkZWZpbmUgUkNBTF9PVlJEX1NUQUJMRV9FTgkJQklUKDMxKQor CisjZGVmaW5lIFJDQUxfT1ZSRF9UUklNX0VOCQkoUkNBTF9PVlJEX05UUklNX0VOIHwgUkNBTF9P VlJEX1BUUklNX0VOKQorI2RlZmluZSBSQ0FMX09WUkRfVFJJTV9NQVNLCQkoUkNBTF9PVlJEX05U UklNIHwgUkNBTF9PVlJEX1BUUklNKQorCisjZGVmaW5lIFBVX0NBTF9USU1FT1VUIDIwMDAwMDAK Kworc3RhdGljIERFRklORV9NVVRFWChjYWxpYnJhdGVfbG9jayk7CisKK2ludCBrM19waHlfY2Fs aWJyYXRlKHN0cnVjdCByZWdtYXAgKmFwYl9zcGFyZSkKK3sKKwl1bnNpZ25lZCBpbnQgdmFsID0g MDsKKwlpbnQgcmV0OworCisJZ3VhcmQobXV0ZXgpKCZjYWxpYnJhdGVfbG9jayk7CisKKwlyZWdt YXBfcmVhZChhcGJfc3BhcmUsIEFQQl9TUEFSRV9SQ0FMX0hTSU8sICZ2YWwpOworCWlmICh2YWwg JiBBUEJfU1BBUkVfUFVfQ0FMX0RPTkUpCisJCXJldHVybiAwOworCisJcmVnbWFwX3VwZGF0ZV9i aXRzKGFwYl9zcGFyZSwgQVBCX1NQQVJFX1BVX0NBTCwgUFVfQ0FMLAorCQkJICAgUFVfQ0FMKTsK KworCXJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChhcGJfc3BhcmUsIEFQQl9TUEFSRV9S Q0FMX0hTSU8sCisJCQkJICAgICAgIHZhbCwgKHZhbCAmIEFQQl9TUEFSRV9QVV9DQUxfRE9ORSks IFBDSUVfUE9MTF9ERUxBWSwKKwkJCQkgICAgICAgUFVfQ0FMX1RJTUVPVVQpOworCisJaWYgKHJl dCkKKwkJcmVnbWFwX3VwZGF0ZV9iaXRzKGFwYl9zcGFyZSwgQVBCX1NQQVJFX1JDQUxfSFNJTywK KwkJCQkgICBSQ0FMX09WUkRfVFJJTV9FTiB8IFJDQUxfT1ZSRF9TVEFCTEVfVkFMIHwKKwkJCQkg ICBSQ0FMX09WUkRfVFJJTV9NQVNLIHwgUkNBTF9PVlJEX1NUQUJMRV9FTiwKKwkJCQkgICBSQ0FM X09WUkRfVFJJTV9FTiB8IFJDQUxfT1ZSRF9TVEFCTEVfVkFMIHwKKwkJCQkgICBGSUVMRF9QUkVQ KFJDQUxfT1ZSRF9OVFJJTSwgMHg2KSB8CisJCQkJICAgRklFTERfUFJFUChSQ0FMX09WUkRfUFRS SU0sIDB4YSkgfAorCQkJCSAgIFJDQUxfT1ZSRF9TVEFCTEVfRU4pOworCisJcmV0dXJuIDA7Cit9 CitFWFBPUlRfU1lNQk9MX0dQTChrM19waHlfY2FsaWJyYXRlKTsKKworTU9EVUxFX0RFU0NSSVBU SU9OKCJTcGFjZW1pVCBLMyBQSFkgY29tbW9uIG9wcyIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oIGIvZHJp dmVycy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uNDkwMDljM2MzMTNhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9waHkvc3BhY2VtaXQvcGh5LWszLWNvbW1vbi5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKworI2lmbmRlZiBfUEhZX0szX0NP TU1PTl9ICisjZGVmaW5lIF9QSFlfSzNfQ09NTU9OX0gKKworI2luY2x1ZGUgPGxpbnV4L3BoeS9w aHkuaD4KKworc3RydWN0IGszX3BoeV9sYW5lX2dyb3VwX2RhdGEgeworCXUzMiBsYW5lczsKKwl1 OCBjb25maWc7CisJdTggbWFzazsKKwl1MzIgb2Zmc2V0c1tdIF9fY291bnRlZF9ieShsYW5lcyk7 Cit9OworCitzdHJ1Y3QgazNfbGFuZV9ncm91cCB7CisJY29uc3Qgc3RydWN0IGszX3BoeV9sYW5l X2dyb3VwX2RhdGEgKmRhdGE7CisJdm9pZCBfX2lvbWVtICpiYXNlOworCXN0cnVjdCBwaHkgKnBo eTsKKwlib29sIGlzX3BjaWU7Cit9OworCitleHRlcm4gY29uc3Qgc3RydWN0IHBoeV9vcHMgazNf cGNpZV9waHlfb3BzOworZXh0ZXJuIGNvbnN0IHN0cnVjdCBwaHlfb3BzIGszX3VzYjNfcGh5X29w czsKKworaW50IGszX3BoeV9jYWxpYnJhdGUoc3RydWN0IHJlZ21hcCAqYXBiX3NwYXJlKTsKKwor I2VuZGlmCi0tIAoyLjU1LjAKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1waHkK