From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, 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 D96BBC48BE5 for ; Wed, 23 Jun 2021 11:50:47 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 78DB861076 for ; Wed, 23 Jun 2021 11:50:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 78DB861076 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org 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=DKn8tR9xS/j1t+nKpmVtAUbLQNO63orbc6EWDoG8o+E=; b=PcTHWPP0/PFSDe luPfTt1VK0OEJxMkzSaePaNdTlLujve+Ijxwkl2F+Lmlawks0cbYGwFF3JDkHIa2c4557H5pNqeal VjauW71Bfm2KznuR5VQI6FD5/L6v0Hbd8IDuVP9YONL7AAFPyxzkwY0xosv4zC/BBiwrPsA9PUAWd HGDYqPdvo9rKdXv1FCGiF2DJyj79RjEo69zoWd+7EzPuN5xPVZagYbZNFQxuSFAGfbalDvUbBhlHw 4uqBqLPjbvQLF4Pi4pY2/kWnHIbBwdVgwWd5AR2N8w2HnS14zjNh0rJBtPXk53Y9bTTbPjpStHnKo pdePmea7GuNbuoAGYA3Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1lw1Oo-00AVFI-N9; Wed, 23 Jun 2021 11:50:30 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lw1ON-00AV7u-Lg; Wed, 23 Jun 2021 11:50:09 +0000 X-UUID: 76489459f4f64ed7bd4186bb7d5eb3d5-20210623 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=Gqb2dYJoVjOBHlHqIAj+FCPnvs/ObsRHMFfb6dWKtT4=; b=O/1xxm2WpDfY5K/Ig/JkUNhvtD0rgEj0NIPjXwknSgQ5F7k6csjv7zPPQBenk3H67ykiEjD/0ENWeVBLArZeISiAChDbmgzXamrFv8pEzik19o0SVJWIuxM9hfUjEQA21xaYfJkUw6p4nF7GGcPluMEKWX8cr4CVWNu1HN3Uq2c=; X-UUID: 76489459f4f64ed7bd4186bb7d5eb3d5-20210623 Received: from mtkcas66.mediatek.inc [(172.29.193.44)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 306308030; Wed, 23 Jun 2021 04:50:00 -0700 Received: from MTKMBS01N2.mediatek.inc (172.21.101.79) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 23 Jun 2021 04:49:58 -0700 Received: from mtkcas11.mediatek.inc (172.21.101.40) by mtkmbs01n2.mediatek.inc (172.21.101.79) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 23 Jun 2021 19:49:57 +0800 Received: from localhost.localdomain (10.15.20.246) by mtkcas11.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Wed, 23 Jun 2021 19:49:56 +0800 From: Rocco Yue To: "David S . Miller" , Jakub Kicinski , Jonathan Corbet , Hideaki YOSHIFUJI , David Ahern , Matthias Brugger , Felix Fietkau , John Crispin , Sean Wang , Mark Lee CC: , , , , , , , , , , Rocco Yue Subject: [PATCH 4/4] drivers: net: mediatek: initial implementation of ccmni Date: Wed, 23 Jun 2021 19:34:52 +0800 Message-ID: <20210623113452.5671-4-rocco.yue@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20210623113452.5671-1-rocco.yue@mediatek.com> References: <20210623113452.5671-1-rocco.yue@mediatek.com> MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210623_045005_140499_0DF1EA16 X-CRM114-Status: GOOD ( 28.04 ) X-BeenThere: linux-mediatek@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-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Y2NtbmkgZHJpdmVyIGlzIHVzZWQgYnkgYWxsIHJlY2VudCBjaGlwc2V0cyB1c2luZyBNZWRpYVRl ayBJbmMuDQptb2RlbXMuIEl0IHByb3ZpZGVzIGEgYnJpZGdlIHRvIHNoaWVsZCBoYXJkd2FyZSBk aWZmZXJlbmNlcyBhbmQNCmNvbm5lY3Qga2VybmVsIG5ldGRldmljZS4gTW9kdWxlIHByb3ZpZGVz IHZpcnR1YWwgbmV0d29yayBkZXZpY2VzDQp3aGljaCBjYW4gYmUgdXNlZCB0byBzdXBwb3J0IGRp ZmZlcmVudCBtb2JpbGUgbmV0d29ya3MsIHN1Y2ggYXMNCmEgZGVmYXVsdCBjZWxsdWxhciBpbnRl cm5ldCxvciBJTVMgbmV0d29yay4NCg0KU2lnbmVkLW9mZi1ieTogUm9jY28gWXVlIDxyb2Njby55 dWVAbWVkaWF0ZWsuY29tPg0KLS0tDQogLi4uL2RldmljZV9kcml2ZXJzL2NlbGx1bGFyL2NjbW5p L2NjbW5pLnJzdCAgIHwgMTUxICsrKysrKysrKw0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgOSArDQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0 ZWsvS2NvbmZpZyAgICAgICAgIHwgICA1ICsNCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRl ay9NYWtlZmlsZSAgICAgICAgfCAgIDQgKy0NCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRl ay9jY21uaS9LY29uZmlnICAgfCAgMTUgKw0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVr L2NjbW5pL01ha2VmaWxlICB8ICAgNyArDQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsv Y2NtbmkvY2NtbmkuYyAgIHwgMjkxICsrKysrKysrKysrKysrKysrKw0KIGRyaXZlcnMvbmV0L2V0 aGVybmV0L21lZGlhdGVrL2NjbW5pL2NjbW5pLmggICB8ICA1MyArKysrDQogOCBmaWxlcyBjaGFu Z2VkLCA1MzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0 NCBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2VsbHVsYXIvY2Ntbmkv Y2NtbmkucnN0DQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlh dGVrL2NjbW5pL0tjb25maWcNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVkaWF0ZWsvY2NtbmkvTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVkaWF0ZWsvY2NtbmkvY2NtbmkuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9jY21uaS9jY21uaS5oDQoNCmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2VsbHVsYXIvY2Ntbmkv Y2NtbmkucnN0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2NlbGx1 bGFyL2NjbW5pL2NjbW5pLnJzdA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMC4uMTZkNTQ3Nzg2Y2JkDQotLS0gL2Rldi9udWxsDQorKysgYi9Eb2N1bWVudGF0aW9uL25l dHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2VsbHVsYXIvY2NtbmkvY2NtbmkucnN0DQpAQCAtMCww ICsxLDE1MSBAQA0KKy4uIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKw0KKw0KKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCitMaW51eCBrZXJuZWwgZHJpdmVyIGZvciBDcm9zcyBDb3JlIE11bHRpIE5ldHdv cmsgSW50ZXJmYWNlIChjY21uaSk6DQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKw0KKzEuIEludHJvZHVjdGlv bg0KKz09PT09PT09PT09PT09PQ0KKw0KK2NjbW5pIGRyaXZlciBpcyBidWlsdCBvbiB0aGUgdG9w IG9mIEFQLUNDQ0kgKEFwcGxpY2F0aW9uIFByb2Nlc3NvciBDcm9zcw0KK0NvcmUgQ29tbXVuaXRl IEludGVyZmFjZSkgdG8gZW11bGF0ZSB0aGUgbW9kZW3igJlzIGRhdGEgbmV0d29ya2luZyBzZXJ2 aWNlDQorYXMgYSBuZXR3b3JrIGludGVyZmFjZSBjYXJkLiBUaGlzIGRyaXZlciBpcyB1c2VkIGJ5 IGFsbCByZWNlbnQgY2hpcHNldHMNCit1c2luZyBNZWRpYVRlayBJbmMuIG1vZGVtcy4NCisNCitU aGlzIGRyaXZlciBjYW4gc3VwcG9ydCBtdWx0aXBsZSB0eC9yeCBjaGFubmVscywgZWFjaCBjaGFu bmVsIGhhcyBpdHMNCitvd24gSVAgYWRkcmVzcywgYW5kIGlwdjQgYW5kIGlwdjYgbGluay1sb2Nh bCBhZGRyZXNzZXMgb24gdGhlIGludGVyZmFjZQ0KK2lzIHNldCB0aHJvdWdoIGlvY3RsLCB3aGlj aCBtZWFucyB0aGF0IGNjbW5pIGRyaXZlciBpcyBhIHB1cmUgaXAgZGV2aWNlDQorYW5kIGl0IGRv ZXMgbm90IG5lZWQgdGhlIGtlcm5lbCB0byBnZW5lcmF0ZSB0aGVzZSBpcCBhZGRyZXNzZXMNCith dXRvbWF0aWNhbGx5Lg0KKw0KK0NyZWF0aW5nIGxvZ2ljYWwgbmV0d29yayBkZXZpY2VzIChjY21u aSBkZXZpY2VzKSBjYW4gYmUgdXNlZCB0byBoYW5kbGUNCittdWx0aXBsZSBwcml2YXRlIGRhdGEg bmV0d29ya3MgKFBETnMpLCBzdWNoIGFzIGEgZGVmYXVsZSBjZWxsdWxhcg0KK2ludGVybmV0LCBJ UCBNdWx0aW1lZGlhIFN1YnN5c3RlbSAoSU1TKSBuZXR3b3JrIChWb1dpRmkvVm9MVEUpLCBJTVMN CitFbWVyZ2VuY3ksIFRldGhlcmluZywgTXVsdGltZWRpYSBNZXNzYWdpbmcgU2VydmljZSAoTU1T KSwgYW5kIHNvIG9uLg0KK0luIGdlbmVyYWwsIG9uZSBjY21uaSBkZXZpY2UgY29ycmVzcG9uZHMg dG8gb25lIFBETi4NCisNCitjY21uaSBkZXNpZ24NCistLS0tLS0tLS0tLS0NCisNCistIEFUIGNv bW1hbmRzIGFuZCByZXNwb25zZXMgYmV0d2VlbiB0aGUgQXBwbGljYXRpb24gUHJvY2Vzc29yIGFu ZCBNb2RlbQ0KKyAgUHJvY2Vzc29yIHRha2UgcGxhY2Ugb3ZlciB0aGUgY2NjaSB0dHkgc2VyaWFs IHBvcnQgZW11bGF0aW9uLg0KKy0gSVAgcGFja2V0cyBjb21pbmcgaW50byB0aGUgY2NtbmkgZHJp dmVyIChmcm9tIHRoZSBNb2RlbSkgbmVlZHMgdG8gYmUNCisgIHVuLWZyYW1lZCAodmlhIHRoZSBQ YWNrZXQgRnJhbWluZyBQcm90b2NvbCkgYmVmb3JlIGl0IGNhbiBiZSBzdHVmZmVkDQorICBpbnRv IHRoZSBTb2NrZXQgQnVmZmVyLg0KKy0gSVAgUGFja2V0cyBnb2luZyBvdXQgb2YgdGhlIGNjbW5p IGRyaXZlciAodG8gdGhlIE1vZGVtKSBuZWVkcyB0byBiZQ0KKyAgZnJhbWVkICh2aWEgdGhlIFBh Y2tldCBGcmFtaW5nIFByb3RvY29sKSBiZWZvcmUgaXQgY2FuIGJlIHB1c2hlZCBpbnRvDQorICB0 aGUgcmVzcGVjdGl2ZSBjY2NpIHR4IGJ1ZmZlci4NCistIFRoZSBQYWNrZXQgRnJhbWluZyBQcm90 b2NvbCBtb2R1bGUgY29udGFpbnMgYWxnb3JpdGhtcyB0byBjb3JyZWN0bHkNCisgIGFkZCBvciBy ZW1vdmUgZnJhbWVzLCBnb2luZyBvdXQgdG8gYW5kIGNvbWluZyBpbnRvLCB0aGUgY2NtbmkgZHJp dmVyDQorICByZXNwZWN0aXZlbHkuDQorLSBQYWNrZXRzIGFyZSBwYXNzZWQgdG8sIGFuZCByZWNl aXZlZCBmcm9tIHRoZSBMaW51eCBuZXR3b3JraW5nIHN5c3RlbSwNCisgIHZpYSBTb2NrZXQgQnVm ZmVycy4NCistIFRoZSBBbmRyb2lkIEFwcGxpY2F0aW9uIEZyYW1ld29yayBjb250YWlucyBjb2Rl cyB0byBzZXR1cCB0aGUgY2NtbmnigJlzDQorICBwYXJhbWV0ZXJzIChzdWNoIGFzIG5ldG1hc2sp LCBhbmQgdGhlIHJvdXRpbmcgdGFibGUuDQorDQorDQorMi4gQXJjaGl0ZWN0dXJlDQorPT09PT09 PT09PT09PT09DQorDQorICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tKw0KK3VzZXIgICAgIHwgICAgICAgIE1USyBSaWxEICAgICAgICB8 ICAgfCAgIG5ldHdvcmsgcHJvY2VzcyAgIHwNCitzcGFjZSAgICB8IChjb25maWcvdXAvZG93biBj Y21uaSkgfCAgIHwgKHNlbmQvcmVjdiBwYWNrZXRzKSB8DQorICAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KKystLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN CisgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rDQorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQgICAgICAgICAg ICAgICAgICAgICAgfA0KKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgICBUQ1AvSVAgc3RhY2sgICAgfA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCisgICAgICAgICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorCSB8ICAg ICAgICAgICAgICAgIG5ldCBkZXZpY2UgbGF5ZXIgICAgICAgICAgICAgICAgICB8DQorICAgICAg ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0K KyAgICAgICAgICAgICAgICArLS0tLS0tLS0rICArLS0tLS0tLS0rICAgICArLS0tLS0tLS0rDQor a2VybmVsICAgICAgICAgIHwgY2NtbmkwIHwgIHwgY2NtbmkxIHwgLi4uIHwgY2Ntbml4IHwNCitz cGFjZSAgICAgICAgICAgKy0tLS0tLS0tKyAgKy0tLS0tLS0tKyAgICAgKy0tLS0tLS0tKw0KKyAg ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kw0KKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgY2NtbmkgZHJpdmVyICAgICAgICAgICAg ICAgICAgfA0KKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKw0KKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKw0KKyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIEFQLUND Q0kgICAgICAgICAgICAgICAgICAgICAgfA0KKyAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorICAgICAg ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQor ICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0r ICB8DQorICAgICAgICAgfCAgfCAgRFBNQUlGIGhhcmR3YXJlICB8ICAgfCAgICAgIE1ELUNDQ0kg ICAgICB8ICB8DQorICAgICAgICAgfCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgKy0tLS0tLS0t LS0tLS0tLS0tLS0rICB8DQorICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIC4uLiAuLi4g ICAgICAgICAgICAgICAgICAgICB8DQorICAgICAgICAgfCBNb2RlbSBQcm9jZXNzb3IgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQorDQorDQorMy4gRHJpdmVyIGluZm9y bWF0aW9uIGFuZCBub3Rlcw0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCitE YXRhIENvbm5lY3Rpb24gU2V0IFVwDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK1RoZSBk YXRhIGZyYW1ld29yayB3aWxsIGZpcnN0IFNldHVwRGF0YUNhbGwgd2l0aCBwYXNzaW5nIGNjbW5p IGluZGV4LA0KK2FuZCB0aGVuIFJpbEQgd2lsbCBhY3RpdmF0ZSBQRE4gY29ubmVjdGlvbiBhbmQg Z2V0IENJRCAoQ29ubmVjdGlvbiBJRCkuDQorDQorTmV4dCwgUmlsRCB3aWxsIGNyZWF0IGNjbW5p IHNvY2tldCB0byB1c2UgaW9jdGwgdG8gY29uZmlndXJlIGNjbW5pIHVwLA0KK2FuZCB0aGVuIGNj bW5pX29wZW4oKSB3aWxsIGJlIGNhbGxlZC4NCisNCitJbiBhZGRpdGlvbiwgc2luY2UgY2Ntbmkg aXMgYSBwdXJlaXAgZGV2aWNlLCBSaWxEIG5lZWRzIHRvIHVzZSBpb2N0bCB0bw0KK2NvbmZpZ3Vy ZSB0aGUgaXB2NC9pcHY2LWxpbmstbG9jYWwgYWRkcmVzcyBmb3IgY2NtbmkgYWZ0ZXIgaXQgaXMg dXAuDQorDQorQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGlwIGNvbW1hbmQgYXMgZm9s bG93czo6DQorICAgIGlwIGxpbmsgc2V0IHVwIGRldiBjY21uaTx4Pg0KKyAgICBpcCBhZGRyIGFk ZCBhLmIuYy5kIGRldiBjY21uaTx4Pg0KKyAgICBpcCAtNiBhZGRyIGFkZCBmZTgwOjoxLzY0IGRl diBjY21uaTx4Pg0KKw0KK0RhdGEgQ29ubmVjdGlvbiBTZXQgRG93bg0KKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KKw0KK1RoZSBkYXRhIHNlcnZpY2UgaW1wbGVtZW50cyBhIG1ldGhvZCB0byB0 ZWFyIGRvd24gdGhlIGRhdGEgY29ubmVjdGlvbiwNCithZnRlciBSaWxEIGRlYWN0aXZhdGUgdGhl IFBETiBjb25uZWN0aW9uLCBSaWxEIHdpbGwgZG93biB0aGUgc3BlY2lmaWMNCitpbnRlcmZhY2Ug b2YgY2Ntbml4IHRocm91Z2ggaW9jdGwgU0lPQ1NJRkZMQUdTLCBhbmQgdGhlbiBjY21uaV9jbG9z ZSgpDQord2lsbCBiZSBjYWxsZWQuIEFmdGVyIHRoYXQsIGlmIGFueSBuZXR3b3JrIHByb2Nlc3Mg KHN1Y2ggYXMgYnJvd3Nlcikgd2FudHMNCit0byB3cml0ZSBkYXRhIHRvIGNjbW5pIHNvY2tldCwg VENQL0lQIHN0YWNrIHdpbGwgcmV0dXJuIGFuIGVycm9yIHRvDQordGhpcyBzb2NrZXQuDQorDQor RGF0YSBUcmFuc21pdA0KKy0tLS0tLS0tLS0tLS0NCisNCitJbiB0aGUgdXBsaW5rIGRpcmVjdGlv biwgd2hlbiB0aGVyZSBpcyBkYXRhIHRvIGJlIHRyYW5zbWl0dGVkIHRvIHRoZSBjZWxsdWxhcg0K K25ldHdvcmssIGNjbW5pX3N0YXJ0X3htaXQoKSB3aWxsIGJlIGNhbGxlZCBieSB0aGUgTGludXgg bmV0d29ya2luZyBzeXN0ZW0uDQorDQorbWFpbiBvcGVyYXRpb25zIGluIGNjbW5pX3N0YXJ0X3ht aXQoKToNCistIHRoZSBkYXRhZ3JhbSB0byBiZSB0cmFuc21pdHRlZCBpcyBob3VzZWQgaW4gdGhl IFNvY2tldCBCdWZmZXIuDQorLSBjaGVjayBpZiB0aGUgZGF0YWdyYW0gaXMgd2l0aGluIGxpbWl0 cyAoaS5lLiAxNTAwIGJ5dGVzKSBhY2NlcHRhYmxlIGJ5IHRoZQ0KKyAgTW9kZW0uIElmIHRoZSBk YXRhZ3JhbSBleGNlZWRzIGxpbWl0LCB0aGUgZGF0YWdyYW0gd2lsbCBiZSBkcm9wcGVkLCBhbmQg ZnJlZQ0KKyAgdGhlIFNvY2tldCBCdWZmZXIuDQorLSBjaGVjayBpZiB0aGUgQVAtQ0NDSSBUWCBi dWZmZXIgaXMgYnVzeSwgb3IgZG8gbm90IGhhdmUgZW5vdWdoIHNwYWNlIGZvciB0aGlzDQorICBk YXRhZ3JhbS4gSWYgaXQgaXMgYnVzeSwgb3IgdGhlIGZyZWUgc3BhY2UgaXMgdG9vIHNtYWxsLCBj Y21uaV9zdGFydF94bWl0KCkNCisgIHJldHVybiBORVRERVZfVFhfQlVTWSBhbmQgYXNrIHRoZSBM aW51eCBuZXRkZXZpY2UgdG8gc3RvcCB0aGUgdHggcXVldWUuDQorDQorVG8gaGFuZGxlIG91dGNv bWluZyBkYXRhZ3JhbXMgdG8gdGhlIE1vZGVtLCBjY21uaSByZWdpc3RlciBhIGNhbGxiYWNrIGZ1 bmN0aW9uDQorZm9yIEFQLUNDQ0kgZHJpdmVyLiBjY21uaV9oaWZfaG9vaygpIG1lYW5zIGNjY2kg Y2FuIGltcGxlbWVudCBzcGVjaWZpYyBlZ3Jlc3MNCitmdW5jdGlvbiB0byBzZW5kIHRoZXNlIHBh Y2tldHMgdG8gdGhlIHNwZWNpZmljIGhhcmR3YXJlLg0KKw0KK0RhdGEgUmVjZWl2ZQ0KKy0tLS0t LS0tLS0tLQ0KKw0KK0luIHRoZSBkb3dubGluayBkaXJlY3Rpb24sIERQTUFJRiAoRGF0YSBQYXRo IE1EIEFQIEludGVyZmFjZSkgaGFyZHdhcmUgc2VuZHMNCitwYWNrZXRzIGFuZCBtZXNzYWdlcyB3 aXRoIGNoYW5uZWwgaWQgbWF0Y2hpbmcgdGhlc2UgcGFja2V0cyB0byBBUC1DQ0NJIGRyaXZlci4N CisNCitUbyBoYW5kbGUgaW5jb21pbmcgZGF0YWdyYW1zIGZyb20gdGhlIE1vZGVtLCBjY21uaSBy ZWdpc3RlciBhIGNhbGxiYWNrDQorZnVuY3Rpb24gZm9yIHRoZSBBUC1DQ0NJIGRyaXZlci4gY2Nt bmlfcnhfcHVzaCgpIHJlc3BvbnNpYmxlIGZvciBleHRyYWN0aW5nDQordGhlIGluY29taW5nIHBh Y2tldHMgZnJvbSB0aGUgY2NjaSByeCBidWZmZXIsIGFuZCB1cGRhdGluZyBza2IuIE9uY2UgcmVh ZHksDQorY2Ntbmkgc2lnbmFsIHRvIHRoZSBMaW51eCBuZXR3b3JraW5nIHN5c3RlbSB0byB0YWtl IG91dCBTb2NrZXQgQnVmZmVyDQorKHZpYSBuZXRpZl9yeCgpIC8gbmV0aWZfcnhfbmkoKSkuDQor DQorDQorU3VwcG9ydA0KKz09PT09PT0NCisNCitJZiBhbiBpc3N1ZSBpcyBpZGVudGlmaWVkIGJ5 IHB1Ymxpc2hlZCBzb3VyY2UgY29kZSBhbmQgc3VwcG9ydGVkIGFkYXB0ZXIgb24NCit0aGUgc3Vw cG9ydGVkIGtlcm5lbCwgcGxlYXNlIGVtYWlsIHRoZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgaXNzdWUNCit0byByb2Njby55dWVAbWVkaWF0ZWsuY29tIGFuZCBjaGFvLnNvbmdAbWVk aWF0ZWsuY29tDQpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUw0KaW5kZXgg OGM1ZWUwMDgzMDFhLi4xZTUzYTc1NGM3MjcgMTAwNjQ0DQotLS0gYS9NQUlOVEFJTkVSUw0KKysr IGIvTUFJTlRBSU5FUlMNCkBAIC0xMTYxMiw2ICsxMTYxMiwxNSBAQCBGOglEb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvdXNiL21lZGlhdGVrLCoNCiBGOglkcml2ZXJzL3VzYi9ob3N0 L3hoY2ktbXRrKg0KIEY6CWRyaXZlcnMvdXNiL210dTMvDQogDQorTUVESUFURUsgQ0NNTkkgRFJJ VkVSDQorTToJUm9jY28gWXVlIDxyb2Njby55dWVAbWVkaWF0ZWsuY29tPg0KK006CUNoYW8gU29u ZyA8Y2hhby5zb25nQG1lZGlhdGVrLmNvbT4NCitNOglaaHVvbGlhbmcgWmhhbmcgPHpodW9saWFu Zy56aGFuZ0BtZWRpYXRlay5jb20+DQorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZw0KK1M6CU1h aW50YWluZWQNCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2Vs bHVsYXIvbWVkaWF0ZWsvY2NtbmkucnN0DQorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0 ZWsvY2NtbmkvDQorDQogTUVHQUNISVBTIFNURFBYWFhYLUdFLUI4NTBWMy1GVyBMVkRTL0RQKysg QlJJREdFUw0KIE06CVBldGVyIFNlbm5hIFRzY2h1ZGluIDxwZXRlci5zZW5uYUBnbWFpbC5jb20+ DQogTToJTWFydGluIERvbm5lbGx5IDxtYXJ0aW4uZG9ubmVsbHlAZ2UuY29tPg0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL25ldC9l dGhlcm5ldC9tZWRpYXRlay9LY29uZmlnDQppbmRleCBjMzU3YzE5MzM3OGUuLjJmNDk5ZjNiYzcy MCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWcNCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWcNCkBAIC0xLDQgKzEsNyBA QA0KICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KKyMNCisjIE1lZGlh VGVrIG5ldHdvcmsgZGV2aWNlIGNvbmZpZ3VyYXRpb24NCisjDQogY29uZmlnIE5FVF9WRU5ET1Jf TUVESUFURUsNCiAJYm9vbCAiTWVkaWFUZWsgZGV2aWNlcyINCiAJZGVwZW5kcyBvbiBBUkNIX01F RElBVEVLIHx8IFNPQ19NVDc2MjEgfHwgU09DX01UNzYyMA0KQEAgLTI0LDQgKzI3LDYgQEAgY29u ZmlnIE5FVF9NRURJQVRFS19TVEFSX0VNQUMNCiAJICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUg ZXRoZXJuZXQgTUFDIElQIGZpcnN0IHVzZWQgb24NCiAJICBNZWRpYVRlayBNVDg1KiogU29Dcy4N CiANCitzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL2NjbW5pL0tjb25maWci DQorDQogZW5kaWYgI05FVF9WRU5ET1JfTUVESUFURUsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlh dGVrL01ha2VmaWxlDQppbmRleCA3OWQ0Y2RiYmNiZjUuLjg1YmQzZWJmMjM4OCAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL01ha2VmaWxlDQorKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9tZWRpYXRlay9NYWtlZmlsZQ0KQEAgLTEsOCArMSwxMCBAQA0KICMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KICMNCi0jIE1ha2VmaWxlIGZvciB0 aGUgTWVkaWF0ZWsgU29DcyBidWlsdC1pbiBldGhlcm5ldCBtYWNzDQorIyBNYWtlZmlsZSBmb3Ig dGhlIE1lZGlhdGVrIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuDQogIw0KIA0KIG9iai0kKENPTkZJ R19ORVRfTUVESUFURUtfU09DKSArPSBtdGtfZXRoLm8NCiBtdGtfZXRoLXkgOj0gbXRrX2V0aF9z b2MubyBtdGtfc2dtaWkubyBtdGtfZXRoX3BhdGgubyBtdGtfcHBlLm8gbXRrX3BwZV9kZWJ1Z2Zz Lm8gbXRrX3BwZV9vZmZsb2FkLm8NCiBvYmotJChDT05GSUdfTkVUX01FRElBVEVLX1NUQVJfRU1B QykgKz0gbXRrX3N0YXJfZW1hYy5vDQorDQorb2JqLSQoQ09ORklHX01US19ORVRfQ0NNTkkpICs9 IGNjbW5pLw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL2NjbW5p L0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9jY21uaS9LY29uZmlnDQpu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5kOTdjMGU0OGI1OGUNCi0t LSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL2NjbW5pL0tj b25maWcNCkBAIC0wLDAgKzEsMTUgQEANCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQorIw0KKyMgTWVkaWFUZWsgQ0NNTkkgZHJpdmVyDQorIw0KKw0KK21lbnVjb25maWcgTVRL X05FVF9DQ01OSQ0KKwl0cmlzdGF0ZSAiTWVkaWFUZWsgQ0NNTkkgZHJpdmVyIg0KKwlkZWZhdWx0 IG4NCisJaGVscA0KKwkgIENyb3NzIENvcmUgTXVsdGkgTmV0d29yayBJbnRlcmZhY2U6DQorCSAg SWYgeW91IHNlbGVjdCB0aGlzLCB5b3Ugd2lsbCBlbmFibGUgdGhlIENDTU5JIG1vZHVsZSB3aGlj aCBpcyB1c2VkDQorCSAgdG8gc2hpZWxkIGhhcmR3YXJlIGRpZmZlcmVuY2VzIGFuZCBjb21tdW5p Y2F0ZSB3aXRoIGtlcm5lbCBuZXRkZXZpY2UNCisJICBhbmQgYmUgdXNlZCBmb3IgaGFuZGxpbmcg b3V0Z29pbmcvaW5jb2ltZyBtb2JpbGUgZGF0YS4gTW9kdWxlIHByb3ZpZGVzDQorCSAgdmlydHVh bCBuZXR3b3JrIGRldmljZXMgd2hpY2ggY2FuIGJlIHVzZWQgdG8gc3VwcG9ydCBkaWZmZXJlbnQg bW9iaWxlDQorCSAgbmV0d29ya3MuDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVkaWF0ZWsvY2NtbmkvTWFrZWZpbGUgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9j Y21uaS9NYWtlZmlsZQ0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4u ZTc5YzIzZDFiNzlkDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9t ZWRpYXRlay9jY21uaS9NYWtlZmlsZQ0KQEAgLTAsMCArMSw3IEBADQorIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMA0KKyMNCisjIE1ha2VmaWxlIGZvciB0aGUgY2NtbmkgbW9kdWxl DQorIw0KK2NjZmxhZ3MteSArPSAtSSQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVk aWF0ZWsvY2NtbmkvDQorb2JqLSQoQ09ORklHX01US19ORVRfQ0NNTkkpICs9IGNjbW5pLm8NCisN CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9jY21uaS9jY21uaS5j IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvY2NtbmkvY2NtbmkuYw0KbmV3IGZpbGUg bW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uNzAwYTBkMDkyNTk2DQotLS0gL2Rldi9u dWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9jY21uaS9jY21uaS5jDQpA QCAtMCwwICsxLDI5MSBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQor LyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgTWVkaWFUZWsgSW5jLg0KKyAqDQorICogQ0NNTkkg RGF0YSB2aXJ0dWFsIG5ldHdvdHJrIGRyaXZlcg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9p Zl9hcnAuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L3By ZWVtcHQuaD4NCisjaW5jbHVkZSA8bmV0L3NjaF9nZW5lcmljLmg+DQorDQorI2luY2x1ZGUgImNj bW5pLmgiDQorDQorc3RhdGljIHN0cnVjdCBjY21uaV9jdGxfYmxvY2sgKnNfY2NtbmlfY3RsYjsN CitzdGF0aWMgaW50IGNjbW5pX2hvb2tfcmVhZHk7DQorDQorLyogTmV0d29yayBEZXZpY2UgT3Bl cmF0aW9ucyAqLw0KKw0KK3N0YXRpYyBpbnQgY2Ntbmlfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAq Y2NtbmlfZGV2KQ0KK3sNCisJc3RydWN0IGNjbW5pX2luc3QgKmNjbW5pID0gbmV0ZGV2X3ByaXYo Y2NtbmlfZGV2KTsNCisNCisJbmV0aWZfdHhfc3RhcnRfYWxsX3F1ZXVlcyhjY21uaV9kZXYpOw0K KwluZXRpZl9jYXJyaWVyX29uKGNjbW5pX2Rldik7DQorDQorCWlmIChhdG9taWNfaW5jX3JldHVy bigmY2NtbmktPnVzYWdlKSA+IDEpIHsNCisJCWF0b21pY19kZWMoJmNjbW5pLT51c2FnZSk7DQor CQluZXRkZXZfZXJyKGNjbW5pX2RldiwgImRldiBhbHJlYWR5IG9wZW5cbiIpOw0KKwkJcmV0dXJu IC1FSU5WQUw7DQorCX0NCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgY2Ntbmlf Y2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmNjbW5pX2RldikNCit7DQorCXN0cnVjdCBjY21uaV9p bnN0ICpjY21uaSA9IG5ldGRldl9wcml2KGNjbW5pX2Rldik7DQorDQorCWF0b21pY19kZWMoJmNj bW5pLT51c2FnZSk7DQorCW5ldGlmX3R4X2Rpc2FibGUoY2NtbmlfZGV2KTsNCisNCisJcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyBuZXRkZXZfdHhfdA0KK2NjbW5pX3N0YXJ0X3htaXQoc3RydWN0 IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmNjbW5pX2RldikNCit7DQorCXN0cnVj dCBjY21uaV9pbnN0ICpjY21uaSA9IE5VTEw7DQorDQorCWlmICh1bmxpa2VseSghY2NtbmlfaG9v a19yZWFkeSkpDQorCQlnb3RvIHR4X29rOw0KKw0KKwlpZiAoIXNrYiB8fCAhY2NtbmlfZGV2KQ0K KwkJZ290byB0eF9vazsNCisNCisJY2NtbmkgPSBuZXRkZXZfcHJpdihjY21uaV9kZXYpOw0KKw0K KwkvKiBzb21lIHByb2Nlc3MgY2FuIG1vZGlmeSBjY21uaV9kZXYtPm10dSAqLw0KKwlpZiAoc2ti LT5sZW4gPiBjY21uaV9kZXYtPm10dSkgew0KKwkJbmV0ZGV2X2VycihjY21uaV9kZXYsICJ4bWl0 IGZhaWw6IGxlbigweCV4KSA+IE1UVSgweCV4LCAweCV4KSIsDQorCQkJICAgc2tiLT5sZW4sIEND TU5JX01UVSwgY2NtbmlfZGV2LT5tdHUpOw0KKwkJZ290byB0eF9vazsNCisJfQ0KKw0KKwkvKiBo YXJkd2FyZSBkcml2ZXIgc2VuZCBwYWNrZXQgd2lsbCByZXR1cm4gYSBuZWdhdGl2ZSB2YWx1ZQ0K KwkgKiBhc2sgdGhlIExpbnV4IG5ldGRldmljZSB0byBzdG9wIHRoZSB0eCBxdWV1ZQ0KKwkgKi8N CisJaWYgKChzX2NjbW5pX2N0bGItPnhtaXRfcGt0KGNjbW5pLT5pbmRleCwgc2tiLCAwKSkgPCAw KQ0KKwkJcmV0dXJuIE5FVERFVl9UWF9CVVNZOw0KKw0KKwlyZXR1cm4gTkVUREVWX1RYX09LOw0K K3R4X29rOg0KKwlkZXZfa2ZyZWVfc2tiKHNrYik7DQorCWNjbW5pX2Rldi0+c3RhdHMudHhfZHJv cHBlZCsrOw0KKwlyZXR1cm4gTkVUREVWX1RYX09LOw0KK30NCisNCitzdGF0aWMgaW50IGNjbW5p X2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmNjbW5pX2RldiwgaW50IG5ld19tdHUpDQor ew0KKwlpZiAobmV3X210dSA8IDAgfHwgbmV3X210dSA+IENDTU5JX01UVSkNCisJCXJldHVybiAt RUlOVkFMOw0KKw0KKwlpZiAodW5saWtlbHkoIWNjbW5pX2RldikpDQorCQlyZXR1cm4gLUVJTlZB TDsNCisNCisJY2NtbmlfZGV2LT5tdHUgPSBuZXdfbXR1Ow0KKwlyZXR1cm4gMDsNCit9DQorDQor c3RhdGljIHZvaWQgY2NtbmlfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqY2NtbmlfZGV2 LCB1bnNpZ25lZCBpbnQgdHhxdWV1ZSkNCit7DQorCXN0cnVjdCBjY21uaV9pbnN0ICpjY21uaSA9 IG5ldGRldl9wcml2KGNjbW5pX2Rldik7DQorDQorCWNjbW5pX2Rldi0+c3RhdHMudHhfZXJyb3Jz Kys7DQorCWlmIChhdG9taWNfcmVhZCgmY2NtbmktPnVzYWdlKSA+IDApDQorCQluZXRpZl90eF93 YWtlX2FsbF9xdWV1ZXMoY2NtbmlfZGV2KTsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBu ZXRfZGV2aWNlX29wcyBjY21uaV9uZXRkZXZfb3BzID0gew0KKwkubmRvX29wZW4JCT0gY2Ntbmlf b3BlbiwNCisJLm5kb19zdG9wCQk9IGNjbW5pX2Nsb3NlLA0KKwkubmRvX3N0YXJ0X3htaXQJCT0g Y2Ntbmlfc3RhcnRfeG1pdCwNCisJLm5kb190eF90aW1lb3V0CQk9IGNjbW5pX3R4X3RpbWVvdXQs DQorCS5uZG9fY2hhbmdlX210dQkJPSBjY21uaV9jaGFuZ2VfbXR1LA0KK307DQorDQorLyogaW5p dCBjY21uaSBuZXR3b3JrIGRldmljZSAqLw0KK3N0YXRpYyBpbmxpbmUgdm9pZCBjY21uaV9kZXZf aW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqY2NtbmlfZGV2LCB1bnNpZ25lZCBpbnQgaWR4KQ0KK3sN CisJY2NtbmlfZGV2LT5tdHUgPSBDQ01OSV9NVFU7DQorCWNjbW5pX2Rldi0+dHhfcXVldWVfbGVu ID0gQ0NNTklfVFhfUVVFVUU7DQorCWNjbW5pX2Rldi0+d2F0Y2hkb2dfdGltZW8gPSBDQ01OSV9O RVRERVZfV0RUX1RPOw0KKwljY21uaV9kZXYtPmZsYWdzID0gSUZGX05PQVJQICYNCisJCQkofklG Rl9CUk9BRENBU1QgJiB+SUZGX01VTFRJQ0FTVCk7DQorDQorCS8qIG5vdCBzdXBwb3J0IFZMQU4g Ki8NCisJY2NtbmlfZGV2LT5mZWF0dXJlcyA9IE5FVElGX0ZfVkxBTl9DSEFMTEVOR0VEOw0KKwlj Y21uaV9kZXYtPmZlYXR1cmVzIHw9IE5FVElGX0ZfU0c7DQorCWNjbW5pX2Rldi0+aHdfZmVhdHVy ZXMgfD0gTkVUSUZfRl9TRzsNCisNCisJLyogcHVyZSBpcCBtb2RlICovDQorCWNjbW5pX2Rldi0+ dHlwZSA9IEFSUEhSRF9QVVJFSVA7DQorCWNjbW5pX2Rldi0+aGVhZGVyX29wcyA9IE5VTEw7DQor CWNjbW5pX2Rldi0+aGFyZF9oZWFkZXJfbGVuID0gMDsNCisJY2NtbmlfZGV2LT5hZGRyX2xlbiA9 IDA7DQorCWNjbW5pX2Rldi0+cHJpdl9kZXN0cnVjdG9yID0gZnJlZV9uZXRkZXY7DQorCWNjbW5p X2Rldi0+bmV0ZGV2X29wcyA9ICZjY21uaV9uZXRkZXZfb3BzOw0KKwlyYW5kb21fZXRoZXJfYWRk cigodTggKiljY21uaV9kZXYtPmRldl9hZGRyKTsNCisJc3ByaW50ZihjY21uaV9kZXYtPm5hbWUs ICJjY21uaSVkIiwgaWR4KTsNCit9DQorDQorLyogaW5pdCBjY21uaSBpbnN0YW5jZSAqLw0KK3N0 YXRpYyBpbmxpbmUgdm9pZCBjY21uaV9pbnN0X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRl diwgdW5zaWduZWQgaW50IGlkeCkNCit7DQorCXN0cnVjdCBjY21uaV9pbnN0ICpjY21uaSA9IG5l dGRldl9wcml2KG5ldGRldik7DQorDQorCWNjbW5pLT5pbmRleCA9IGlkeDsNCisJY2NtbmktPmRl diA9IG5ldGRldjsNCisJYXRvbWljX3NldCgmY2NtbmktPnVzYWdlLCAwKTsNCisNCisJc19jY21u aV9jdGxiLT5jY21uaV9pbnN0W2lkeF0gPSBjY21uaTsNCit9DQorDQorLyogY2NtbmkgZHJpdmVy IG1vZHVsZSBzdGFydHVwL3NodXRkb3duICovDQorDQorc3RhdGljIGludCBfX2luaXQgY2Ntbmlf aW5pdCh2b2lkKQ0KK3sNCisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7DQorCXVuc2ln bmVkIGludCBpLCBqOw0KKwlpbnQgcmV0ID0gMDsNCisNCisJc19jY21uaV9jdGxiID0ga3phbGxv YyhzaXplb2YoKnNfY2NtbmlfY3RsYiksIEdGUF9LRVJORUwpOw0KKwlpZiAoIXNfY2NtbmlfY3Rs YikNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlzX2NjbW5pX2N0bGItPm1heF9udW0gPSBNQVhf Q0NNTklfTlVNOw0KKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0NDTU5JX05VTTsgaSsrKSB7DQorCQkv KiBhbGxvYyBtdWx0aXBsZSB0eCBxdWV1ZSwgMiB0eHEgYW5kIDEgcnhxICovDQorCQlkZXYgPSBh bGxvY19ldGhlcmRldl9tcXMoc2l6ZW9mKHN0cnVjdCBjY21uaV9pbnN0KSwgMiwgMSk7DQorCQlp ZiAodW5saWtlbHkoIWRldikpIHsNCisJCQlyZXQgPSAtRU5PTUVNOw0KKwkJCWdvdG8gYWxsb2Nf bmV0ZGV2X2ZhaWw7DQorCQl9DQorCQljY21uaV9kZXZfaW5pdChkZXYsIGkpOw0KKwkJY2Ntbmlf aW5zdF9pbml0KGRldiwgaSk7DQorCQlyZXQgPSByZWdpc3Rlcl9uZXRkZXYoZGV2KTsNCisJCWlm IChyZXQpDQorCQkJZ290byBhbGxvY19uZXRkZXZfZmFpbDsNCisJfQ0KKwlyZXR1cm4gcmV0Ow0K Kw0KK2FsbG9jX25ldGRldl9mYWlsOg0KKwlpZiAoZGV2KSB7DQorCQlmcmVlX25ldGRldihkZXYp Ow0KKwkJc19jY21uaV9jdGxiLT5jY21uaV9pbnN0W2ldID0gTlVMTDsNCisJfQ0KKwlmb3IgKGog PSBpIC0gMTsgaiA+PSAwOyBqLS0pIHsNCisJCXVucmVnaXN0ZXJfbmV0ZGV2KHNfY2NtbmlfY3Rs Yi0+Y2NtbmlfaW5zdFtqXS0+ZGV2KTsNCisJCXNfY2NtbmlfY3RsYi0+Y2NtbmlfaW5zdFtqXSA9 IE5VTEw7DQorCX0NCisJa2ZyZWUoc19jY21uaV9jdGxiKTsNCisJc19jY21uaV9jdGxiID0gTlVM TDsNCisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIHZvaWQgX19leGl0IGNjbW5pX2V4 aXQodm9pZCkNCit7DQorCXN0cnVjdCBjY21uaV9jdGxfYmxvY2sgKmN0bGIgPSBOVUxMOw0KKwlz dHJ1Y3QgY2NtbmlfaW5zdCAqY2NtbmkgPSBOVUxMOw0KKwlpbnQgaTsNCisNCisJY3RsYiA9IHNf Y2NtbmlfY3RsYjsNCisJaWYgKCFzX2NjbW5pX2N0bGIpDQorCQlyZXR1cm47DQorCWZvciAoaSA9 IDA7IGkgPCBzX2NjbW5pX2N0bGItPm1heF9udW07IGkrKykgew0KKwkJY2NtbmkgPSBzX2NjbW5p X2N0bGItPmNjbW5pX2luc3RbaV07DQorCQlpZiAoY2NtbmkpIHsNCisJCQl1bnJlZ2lzdGVyX25l dGRldihjY21uaS0+ZGV2KTsNCisJCQlzX2NjbW5pX2N0bGItPmNjbW5pX2luc3RbaV0gPSBOVUxM Ow0KKwkJfQ0KKwl9DQorCWtmcmVlKHNfY2NtbmlfY3RsYik7DQorCXNfY2NtbmlfY3RsYiA9IE5V TEw7DQorfQ0KKw0KKy8qIGV4cG9zZWQgQVBJDQorICogcmVjZWl2ZSBpbmNvbWluZyBkYXRhZ3Jh bXMgZnJvbSB0aGUgTW9kZW0gYW5kIHB1c2ggdGhlbSB0byB0aGUNCisgKiBrZXJuZWwgbmV0d29y a2luZyBzeXN0ZW0NCisgKi8NCitpbnQgY2NtbmlfcnhfcHVzaCh1bnNpZ25lZCBpbnQgY2Ntbmlf aWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KK3sNCisJc3RydWN0IGNjbW5pX2luc3QgKmNjbW5p ID0gTlVMTDsNCisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7DQorCWludCBwa3RfdHlw ZSwgc2tiX2xlbjsNCisNCisJaWYgKHVubGlrZWx5KCFjY21uaV9ob29rX3JlYWR5KSkNCisJCXJl dHVybiAtRUlOVkFMOw0KKw0KKwkvKiBTb21lIGhhcmR3YXJlIGNhbiBzZW5kIHVzIGVycm9yIGlu ZGV4LiBDYXRjaCB0aGVtICovDQorCWlmICh1bmxpa2VseShjY21uaV9pZHggPj0gc19jY21uaV9j dGxiLT5tYXhfbnVtKSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwljY21uaSA9IHNfY2Ntbmlf Y3RsYi0+Y2NtbmlfaW5zdFtjY21uaV9pZHhdOw0KKwlkZXYgPSBjY21uaS0+ZGV2Ow0KKw0KKwlw a3RfdHlwZSA9IHNrYi0+ZGF0YVswXSAmIDB4RjA7DQorCXNrYl9yZXNldF90cmFuc3BvcnRfaGVh ZGVyKHNrYik7DQorCXNrYl9yZXNldF9uZXR3b3JrX2hlYWRlcihza2IpOw0KKwlza2Jfc2V0X21h Y19oZWFkZXIoc2tiLCAwKTsNCisJc2tiX3Jlc2V0X21hY19sZW4oc2tiKTsNCisJc2tiLT5kZXYg PSBkZXY7DQorDQorCWlmIChwa3RfdHlwZSA9PSBJUFY2X1ZFUlNJT04pDQorCQlza2ItPnByb3Rv Y29sID0gaHRvbnMoRVRIX1BfSVBWNik7DQorCWVsc2UgaWYgKHBrdF90eXBlID09IElQVjRfVkVS U0lPTikNCisJCXNrYi0+cHJvdG9jb2wgPSBodG9ucyhFVEhfUF9JUCk7DQorDQorCXNrYl9sZW4g PSBza2ItPmxlbjsNCisNCisJaWYgKCFpbl9pbnRlcnJ1cHQoKSkNCisJCW5ldGlmX3J4X25pKHNr Yik7DQorCWVsc2UNCisJCW5ldGlmX3J4KHNrYik7DQorDQorCWRldi0+c3RhdHMucnhfcGFja2V0 cysrOw0KKwlkZXYtPnN0YXRzLnJ4X2J5dGVzICs9IHNrYl9sZW47DQorDQorCXJldHVybiAwOw0K K30NCitFWFBPUlRfU1lNQk9MKGNjbW5pX3J4X3B1c2gpOw0KKw0KKy8qIGV4cG9zZWQgQVBJDQor ICogaGFyZHdhcmUgZHJpdmVyIGNhbiBpbml0IHRoZSBzdHJ1Y3QgY2NtbmlfaGlmX29wcyBhbmQg aW1wbGVtZW50IHNwZWNpZmljDQorICogeG1uaXQgZnVuY3Rpb24gdG8gc2VuZCBVTCBwYWNrZXRz IHRvIHRoZSBzcGVjaWZpYyBoYXJkd2FyZQ0KKyAqLw0KK2ludCBjY21uaV9oaWZfaG9vayhzdHJ1 Y3QgY2NtbmlfaGlmX29wcyAqaGlmX29wcykNCit7DQorCWlmICh1bmxpa2VseSghaGlmX29wcykp IHsNCisJCXByX2VycigiY2Ntbmk6ICVzIGZhaWw6IGFyZ3VtZW50IGlzIE5VTExcbiIsIF9fZnVu Y19fKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorCWlmICh1bmxpa2VseSghc19jY21uaV9j dGxiKSkgew0KKwkJcHJfZXJyKCJjY21uaTogJXMgZmFpbDogc19jY21uaV9jdGxiIGlzIE5VTExc biIsIF9fZnVuY19fKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorCWlmICh1bmxpa2VseShz X2NjbW5pX2N0bGItPmhpZl9vcHMpKSB7DQorCQlwcl9lcnIoImNjbW5pOiAlcyBmYWlsOiBoaWZf b3BzIGFscmVhZHkgaG9va2VkXG4iLCBfX2Z1bmNfXyk7DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJ fQ0KKw0KKwlzX2NjbW5pX2N0bGItPmhpZl9vcHMgPSBoaWZfb3BzOw0KKwlpZiAoIWhpZl9vcHMt PnhtaXRfcGt0KSB7DQorCQlwcl9lcnIoImNjbW5pOiAlcyBmYWlsOiBrZXkgaG9vayBmdW5jOiB4 bWl0IGlzIE5VTExcbiIsDQorCQkgICAgICAgX19mdW5jX18pOw0KKwkJcmV0dXJuIC1FSU5WQUw7 DQorCX0NCisNCisJc19jY21uaV9jdGxiLT54bWl0X3BrdCA9IGhpZl9vcHMtPnhtaXRfcGt0Ow0K KwljY21uaV9ob29rX3JlYWR5ID0gMTsNCisNCisJcmV0dXJuIDA7DQorfQ0KK0VYUE9SVF9TWU1C T0woY2NtbmlfaGlmX2hvb2spOw0KKw0KK21vZHVsZV9pbml0KGNjbW5pX2luaXQpOw0KK21vZHVs ZV9leGl0KGNjbW5pX2V4aXQpOw0KK01PRFVMRV9BVVRIT1IoIk1lZGlhVGVrLCBJbmMuIik7DQor TU9EVUxFX0RFU0NSSVBUSU9OKCJjY21uaSBkcml2ZXIgdjEuMCIpOw0KK01PRFVMRV9MSUNFTlNF KCJHUEwiKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9jY21u aS9jY21uaS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvY2NtbmkvY2NtbmkuaA0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZTI3OTlhYTJjOWQ0DQot LS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9jY21uaS9j Y21uaS5oDQpAQCAtMCwwICsxLDUzIEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAgKi8NCisvKg0KKyAqIENvcHlyaWdodCAoQykgMjAyMSBNZWRpYVRlayBJbmMuDQorICoN CisgKiBDQ01OSSBEYXRhIHZpcnR1YWwgbmV0d290cmsgZHJpdmVyDQorICovDQorDQorI2lmbmRl ZiBfX0NDTU5JX05FVF9IX18NCisjZGVmaW5lIF9fQ0NNTklfTkVUX0hfXw0KKw0KKyNpbmNsdWRl IDxsaW51eC9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvZXRoZXJkZXZpY2UuaD4NCisjaW5j bHVkZSA8bGludXgvaWZfZXRoZXIuaD4NCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2lu Y2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9za2J1ZmYuaD4NCisN CisjZGVmaW5lIENDTU5JX01UVQkJMTUwMA0KKyNkZWZpbmUgQ0NNTklfVFhfUVVFVUUJCTEwMDAN CisjZGVmaW5lIENDTU5JX05FVERFVl9XRFRfVE8JKDEgKiBIWikNCisNCisjZGVmaW5lIElQVjRf VkVSU0lPTgkJMHg0MA0KKyNkZWZpbmUgSVBWNl9WRVJTSU9OCQkweDYwDQorDQorI2RlZmluZSBN QVhfQ0NNTklfTlVNCQkyMg0KKw0KKy8qIE9uZSBpbnN0YW5jZSBvZiB0aGlzIHN0cnVjdHVyZSBp cyBpbnN0YW50aWF0ZWQgZm9yIGVhY2gNCisgKiByZWFsX2RldiBhc3NvY2lhdGVkIHdpdGggY2Nt bmkNCisgKi8NCitzdHJ1Y3QgY2NtbmlfaW5zdCB7DQorCWludAkJCWluZGV4Ow0KKwlhdG9taWNf dAkJdXNhZ2U7DQorCXN0cnVjdCBuZXRfZGV2aWNlCSpkZXY7DQorCXVuc2lnbmVkIGNoYXIJCW5h bWVbMTZdOw0KK307DQorDQorLyogYW4gZXhwb3J0IHN0cnVjdCBvZiBjY21uaSBoYXJkd2FyZSBp bnRlcmZhY2Ugb3BlcmF0aW9ucw0KKyAqLw0KK3N0cnVjdCBjY21uaV9oaWZfb3BzIHsNCisJaW50 ICgqeG1pdF9wa3QpKGludCBpbmRleCwgdm9pZCAqZGF0YSwgaW50IHJlZl9mbGFnKTsNCit9Ow0K Kw0KK3N0cnVjdCBjY21uaV9jdGxfYmxvY2sgew0KKwlpbnQgKCp4bWl0X3BrdCkoaW50IGluZGV4 LCB2b2lkICpkYXRhLCBpbnQgcmVmX2ZsYWcpOw0KKwlzdHJ1Y3QgY2NtbmlfaGlmX29wcwkqaGlm X29wczsNCisJc3RydWN0IGNjbW5pX2luc3QJKmNjbW5pX2luc3RbTUFYX0NDTU5JX05VTV07DQor CWludCBtYXhfbnVtOw0KK307DQorDQoraW50IGNjbW5pX2hpZl9ob29rKHN0cnVjdCBjY21uaV9o aWZfb3BzICpoaWZfb3BzKTsNCitpbnQgY2NtbmlfcnhfcHVzaCh1bnNpZ25lZCBpbnQgY2Ntbmlf aWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsNCisNCisjZW5kaWYgLyogX19DQ01OSV9ORVRfSF9f ICovDQotLSANCjIuMTguMA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KTGludXgtbWVkaWF0ZWsgbWFpbGluZyBsaXN0CkxpbnV4LW1lZGlhdGVrQGxpc3Rz LmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5m by9saW51eC1tZWRpYXRlawo=