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=-8.4 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 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 C966EC352A3 for ; Wed, 12 Feb 2020 02:56:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7C461206DB for ; Wed, 12 Feb 2020 02:56:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="gqfQeijm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727721AbgBLC4E (ORCPT ); Tue, 11 Feb 2020 21:56:04 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:12653 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727565AbgBLC4E (ORCPT ); Tue, 11 Feb 2020 21:56:04 -0500 X-UUID: 5cf8ca20074e4b709e375d0ec9e60c32-20200212 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:From:Subject:Message-ID; bh=NDX3laalc+Z0eaBdDEGSSHydvLxMHFWBywEbFN0gfWc=; b=gqfQeijmZfdugF4hU9qw5c4XLCjvaAHMuAVPaAf1C8rvKNySSIsLK4HMASPCf4mdsQmvyu/c3/U654PMQq6OYI8CPl44h5reVsu1d8fLnH349c+GONXEMRv/FFEQFpkonSlptuLsuFHm3ogkLTBUzL2vBjdNFY7WfNCRckEwRB0=; X-UUID: 5cf8ca20074e4b709e375d0ec9e60c32-20200212 Received: from mtkexhb01.mediatek.inc [(172.21.101.102)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 720298069; Wed, 12 Feb 2020 10:55:51 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 12 Feb 2020 10:54:13 +0800 Received: from [172.21.77.4] (172.21.77.4) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Wed, 12 Feb 2020 10:54:51 +0800 Message-ID: <1581476150.22901.35.camel@mtksdaap41> Subject: Re: [PATCH v11 04/10] soc: mediatek: Add multiple step bus protection control From: Weiyi Lu To: Matthias Brugger CC: Nicolas Boichat , Rob Herring , Sascha Hauer , James Liao , Fan Chen , , , , Date: Wed, 12 Feb 2020 10:55:50 +0800 In-Reply-To: <9cafe21c-2bd2-7ee6-9e7f-ce238b935069@gmail.com> References: <1576813564-23927-1-git-send-email-weiyi.lu@mediatek.com> <1576813564-23927-5-git-send-email-weiyi.lu@mediatek.com> <9cafe21c-2bd2-7ee6-9e7f-ce238b935069@gmail.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gVHVlLCAyMDIwLTAyLTExIGF0IDE4OjQ5ICswMTAwLCBNYXR0aGlhcyBCcnVnZ2VyIHdyb3Rl Og0KPiANCj4gT24gMjAvMTIvMjAxOSAwNDo0NSwgV2VpeWkgTHUgd3JvdGU6DQo+ID4gQm90aCBN VDgxODMgJiBNVDY3NjUgaGF2ZSBtb3JlIGNvbnRyb2wgc3RlcHMgb2YgYnVzIHByb3RlY3Rpb24N Cj4gPiB0aGFuIHByZXZpb3VzIHByb2plY3QuIEFuZCB0aGVyZSBhZGQgbW9yZSBidXMgcHJvdGVj dGlvbiByZWdpc3RlcnMNCj4gPiByZXNpZGUgYXQgaW5mcmFjZmcgJiBzbWktY29tbW9uLiBBbHNv IGFkZCBuZXcgQVBJcyBmb3IgbXVsdGlwbGUNCj4gPiBzdGVwIGJ1cyBwcm90ZWN0aW9uIGNvbnRy b2wgd2l0aCBtb3JlIGN1c3RvbWl6ZWQgYXJndW1lbnRzLg0KPiA+IEFuZCB0aGVuIHVzZSBicF90 YWJsZSBmb3IgYnVzIHByb3RlY3Rpb24gb2YgYWxsIGNvbXBhdGlibGVzLA0KPiA+IGluc3RlYWQg b2YgbWl4aW5nIGJ1c19wcm90X21hc2sgYW5kIGJ1c19wcm90X3JlZ191cGRhdGUuDQo+ID4gDQo+ ID4gU2lnbmVkLW9mZi1ieTogV2VpeWkgTHUgPHdlaXlpLmx1QG1lZGlhdGVrLmNvbT4NCj4gPiAt LS0NCj4gPiAgZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFrZWZpbGUgICAgICAgICB8ICAgMiArLQ0K PiA+ICBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstc2Nwc3lzLWV4dC5jIHwgMTAxICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGRyaXZlcnMvc29jL21lZGlhdGVrL210ay1zY3Bz eXMuYyAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQ0KPiA+ICBk cml2ZXJzL3NvYy9tZWRpYXRlay9zY3BzeXMtZXh0LmggICAgIHwgIDY3ICsrKysrKysrKysrKysr KysrKysNCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAyNDAgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRp b25zKC0pDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9tZWRpYXRlay9tdGst c2Nwc3lzLWV4dC5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9tZWRpYXRl ay9zY3BzeXMtZXh0LmgNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0 ZWsvTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQ0KPiA+IGluZGV4IGIw MTczMzAuLmI0NDJiZTkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvTWFr ZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZQ0KPiA+IEBAIC0x LDUgKzEsNSBAQA0KPiA+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkN Cj4gPiAgb2JqLSQoQ09ORklHX01US19DTURRKSArPSBtdGstY21kcS1oZWxwZXIubw0KPiA+IC1v YmotJChDT05GSUdfTVRLX0lORlJBQ0ZHKSArPSBtdGstaW5mcmFjZmcubw0KPiA+ICtvYmotJChD T05GSUdfTVRLX0lORlJBQ0ZHKSArPSBtdGstaW5mcmFjZmcubyBtdGstc2Nwc3lzLWV4dC5vDQo+ IA0KPiBJdCBzZWVtcyB0aGF0IHdlIHdvdWxkIG5lZWQgYW5vdGhlciBwYXRjaCB3aGljaCBnZXQn cyByaWQgb2YgdGhlIG10ay1pbmZyYWNmZw0KPiBmaXJzdCBhbmQgdGhlbiBhZGQgc3R1ZmYgbGlr ZSB0aGUgcG9zc2liaWxpdHkgdG8gaGF2ZSBkaWZmZXJlbnQgc3RlcHMuDQo+IA0KDQpBY3R1YWxs eSBJIGhhdmUgYSBQQVRDSCAwNS8xMSB0byByZW1vdmUgdGhlIG10ay1pbmZyYWNmZy4NCkluIHRo aXMgcGF0Y2gsIEkgaGF2ZSBzb21lIGNoYW5nZXMsIGxpa2UgY2FsbGluZw0KbXRrX3NjcHN5c19l eHRfc2V0X2J1c19wcm90ZWN0aW9uKC4uLikgaW5zdGVhZCBvZg0KbXRrX2luZnJhY2ZnX3NldF9i dXNfcHJvdGVjdGlvbiguLi4pIGluIHNjcHN5c19idXNfcHJvdGVjdF9lbmFibGUoLi4uKQ0KYW5k IHJlcGxhY2luZyBidXNfcHJvdF9tYXNrIGJ5IGJwX3RhYmxlLg0KSSB0aG91Z2h0IEkgc2hvdWxk IGludHJvZHVjZSB0aGUgbmV3IG1ldGhvZCBmaXJzdCBhbmQgcmVtb3ZlIHVzZWxlc3Mgb25lDQps YXRlci4gV2hhdCBkbyB5b3UgdGhpbms/DQoNCj4gPiAgb2JqLSQoQ09ORklHX01US19QTUlDX1dS QVApICs9IG10ay1wbWljLXdyYXAubw0KPiA+ICBvYmotJChDT05GSUdfTVRLX1NDUFNZUykgKz0g bXRrLXNjcHN5cy5vDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1z Y3BzeXMtZXh0LmMgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstc2Nwc3lzLWV4dC5jDQo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5kZjQwMmFjDQo+ID4gLS0t IC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvc29jL21lZGlhdGVrL210ay1zY3BzeXMtZXh0 LmMNCj4gDQo+IEknbSBub3QgcXVpdGUgc3VyZSB3aHkgd2Ugc2hvdWxkIHB1dCB0aGlzIGludG8g YSBuZXcgZmlsZS4gSSBzdXBwb3NlIHRoZQ0KPiByYXRpb25hbCBiZWhpbmQgaXQgaXMgdGhlIGZh Y3QgdGhhdCB3ZSBhY2Nlc3Mgb3RoZXIgYmxvY2tzIHRocm91Z2ggcmVnbWFwLg0KPiANCg0KWWVz LCB0aG9zZSBvcGVyYXRpb24gYXJlIGFjY3Jvc3MgaW5mcmFjZmcgYW5kIHNtaS1jb21tb24gc28g d2UgcHV0IHRoZXNlDQppbnRvIG5ldyBmaWxlcy4NCg0KPiA+IEBAIC0wLDAgKzEsMTAxIEBADQo+ ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gKy8qDQo+ID4gKyAq IENvcHlyaWdodCAoYykgMjAxOCBNZWRpYVRlayBJbmMuDQo+ID4gKyAqIEF1dGhvcjogT3dlbiBD aGVuIDxPd2VuLkNoZW5AbWVkaWF0ZWsuY29tPg0KPiA+ICsgKi8NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2t0aW1lLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+DQo+ID4gKyNp bmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5o Pg0KPiA+ICsjaW5jbHVkZSAic2Nwc3lzLWV4dC5oIg0KPiA+ICsNCj4gPiArI2RlZmluZSBNVEtf UE9MTF9ERUxBWV9VUyAgIDEwDQo+ID4gKyNkZWZpbmUgTVRLX1BPTExfVElNRU9VVCAgICBVU0VD X1BFUl9TRUMNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc2V0X2J1c19wcm90ZWN0aW9uKHN0cnVj dCByZWdtYXAgKm1hcCwgdTMyIG1hc2ssDQo+ID4gKwkJdTMyIHJlZ19zZXQsIHUzMiByZWdfc3Rh LCB1MzIgcmVnX2VuKQ0KPiA+ICt7DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCWlmIChy ZWdfc2V0KQ0KPiA+ICsJCXJlZ21hcF93cml0ZShtYXAsIHJlZ19zZXQsIG1hc2spOw0KPiA+ICsJ ZWxzZQ0KPiA+ICsJCXJlZ21hcF91cGRhdGVfYml0cyhtYXAsIHJlZ19lbiwgbWFzaywgbWFzayk7 DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChtYXAsIHJlZ19z dGEsDQo+ID4gKwkJCXZhbCwgKHZhbCAmIG1hc2spID09IG1hc2ssDQo+ID4gKwkJCU1US19QT0xM X0RFTEFZX1VTLCBNVEtfUE9MTF9USU1FT1VUKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IGludCBjbGVhcl9idXNfcHJvdGVjdGlvbihzdHJ1Y3QgcmVnbWFwICptYXAsIHUzMiBtYXNrLA0K PiA+ICsJCXUzMiByZWdfY2xyLCB1MzIgcmVnX3N0YSwgdTMyIHJlZ19lbiwgYm9vbCBpZ25vcmVf YWNrKQ0KPiA+ICt7DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCWlmIChyZWdfY2xyKQ0K PiA+ICsJCXJlZ21hcF93cml0ZShtYXAsIHJlZ19jbHIsIG1hc2spOw0KPiA+ICsJZWxzZQ0KPiA+ ICsJCXJlZ21hcF91cGRhdGVfYml0cyhtYXAsIHJlZ19lbiwgbWFzaywgMCk7DQo+ID4gKw0KPiA+ ICsJaWYgKGlnbm9yZV9hY2spDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJcmV0dXJu IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChtYXAsIHJlZ19zdGEsDQo+ID4gKwkJCXZhbCwgISh2 YWwgJiBtYXNrKSwNCj4gPiArCQkJTVRLX1BPTExfREVMQVlfVVMsIE1US19QT0xMX1RJTUVPVVQp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgbXRrX3NjcHN5c19leHRfc2V0X2J1c19wcm90ZWN0 aW9uKGNvbnN0IHN0cnVjdCBidXNfcHJvdCAqYnBfdGFibGUsDQo+ID4gKwlzdHJ1Y3QgcmVnbWFw ICppbmZyYWNmZywgc3RydWN0IHJlZ21hcCAqc21pX2NvbW1vbikNCj4gPiArew0KPiA+ICsJaW50 IGk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9TVEVQUzsgaSsrKSB7DQo+IA0K PiBzdHJ1Y3QgYnVzX3Byb3QgYnBfdGFibGUgPSBicF90YWJsZVtpXTsNCj4gDQoNCk9LLCBnb3Qg aXQuDQoNCj4gPiArCQlzdHJ1Y3QgcmVnbWFwICptYXAgPSBOVUxMOw0KPiA+ICsJCWludCByZXQ7 DQo+ID4gKw0KPiA+ICsJCWlmIChicF90YWJsZVtpXS50eXBlID09IElOVkFMSURfVFlQRSkNCj4g PiArCQkJYnJlYWs7DQo+ID4gKwkJZWxzZSBpZiAoYnBfdGFibGVbaV0udHlwZSA9PSBJRlJfVFlQ RSkNCj4gPiArCQkJbWFwID0gaW5mcmFjZmc7DQo+ID4gKwkJZWxzZSBpZiAoYnBfdGFibGVbaV0u dHlwZSA9PSBTTUlfVFlQRSkNCj4gPiArCQkJbWFwID0gc21pX2NvbW1vbjsNCj4gDQo+IGlmIChi cF90YWJsZS50eXBlID09IElGUl9UWVBFKQ0KPiAJbWFwID0gaW5mcmFjZmc7DQo+IGVsc2UgaWYg KGJwX3RhYmxlLnR5cGUgPT0gU01JX1RZUEUpDQo+IAltYXAgPSBzbWlfY29tbW9uOw0KPiBlbHNl DQo+IAlicmVhazsNCj4gDQoNCk9LLCBnb3QgaXQuDQoNCj4gPiArDQo+ID4gKwkJcmV0ID0gc2V0 X2J1c19wcm90ZWN0aW9uKG1hcCwNCj4gPiArCQkJCWJwX3RhYmxlW2ldLm1hc2ssIGJwX3RhYmxl W2ldLnNldF9vZnMsDQo+ID4gKwkJCQlicF90YWJsZVtpXS5zdGFfb2ZzLCBicF90YWJsZVtpXS5l bl9vZnMpOw0KPiANCj4gcGFzc2luZyBtYXAgYW5kIGJwX3RhYmxlIGhlcmUgbWFrZXMgY29kZSBt dWNoIG1vcmUgcmVhZGFibGUuIEkgYWx3YXlzIGVuZC11cA0KPiBjb3VudGluZyB0aGUgdmFyaWFi bGVzIHdoZW4gdGhlIG5hbWVzIGluIHRoZSBjYWxsZWUgY2hhbmdlcy4NCj4gDQoNCk9LLCBJJ2xs IGZpeCBpdC4NCg0KPiA+ICsNCj4gPiArCQlpZiAocmV0KQ0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQg bXRrX3NjcHN5c19leHRfY2xlYXJfYnVzX3Byb3RlY3Rpb24oY29uc3Qgc3RydWN0IGJ1c19wcm90 ICpicF90YWJsZSwNCj4gPiArCXN0cnVjdCByZWdtYXAgKmluZnJhY2ZnLCBzdHJ1Y3QgcmVnbWFw ICpzbWlfY29tbW9uKQ0KPiA+ICt7DQo+ID4gKwlpbnQgaTsNCj4gPiArDQo+ID4gKwlmb3IgKGkg PSBNQVhfU1RFUFMgLSAxOyBpID49IDA7IGktLSkgew0KPiA+ICsJCXN0cnVjdCByZWdtYXAgKm1h cCA9IE5VTEw7DQo+ID4gKwkJaW50IHJldDsNCj4gPiArDQo+ID4gKwkJaWYgKGJwX3RhYmxlW2ld LnR5cGUgPT0gSU5WQUxJRF9UWVBFKQ0KPiA+ICsJCQljb250aW51ZTsNCj4gPiArCQllbHNlIGlm IChicF90YWJsZVtpXS50eXBlID09IElGUl9UWVBFKQ0KPiA+ICsJCQltYXAgPSBpbmZyYWNmZzsN Cj4gPiArCQllbHNlIGlmIChicF90YWJsZVtpXS50eXBlID09IFNNSV9UWVBFKQ0KPiA+ICsJCQlt YXAgPSBzbWlfY29tbW9uOw0KPiA+ICsNCj4gPiArCQlyZXQgPSBjbGVhcl9idXNfcHJvdGVjdGlv bihtYXAsDQo+ID4gKwkJCQlicF90YWJsZVtpXS5tYXNrLCBicF90YWJsZVtpXS5jbHJfb2ZzLA0K PiA+ICsJCQkJYnBfdGFibGVbaV0uc3RhX29mcywgYnBfdGFibGVbaV0uZW5fb2ZzLA0KPiA+ICsJ CQkJYnBfdGFibGVbaV0uaWdub3JlX2Nscl9hY2spOw0KPiA+ICsNCj4gDQo+IHNhbWUgaGVyZS4N Cj4gDQoNCkdvdCBpdC4NCg0KPiA+ICsJCWlmIChyZXQpDQo+ID4gKwkJCXJldHVybiByZXQ7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zb2MvbWVkaWF0ZWsvbXRrLXNjcHN5cy5jIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsv bXRrLXNjcHN5cy5jDQo+ID4gaW5kZXggZGIzNWEyOC4uNzYzY2E1OCAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL3NvYy9tZWRpYXRlay9tdGstc2Nwc3lzLmMNCj4gPiArKysgYi9kcml2ZXJzL3Nv Yy9tZWRpYXRlay9tdGstc2Nwc3lzLmMNCj4gPiBAQCAtMTEsNyArMTEsNyBAQA0KPiA+ICAjaW5j bHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9wbV9k b21haW4uaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPg0KPiA+ IC0jaW5jbHVkZSA8bGludXgvc29jL21lZGlhdGVrL2luZnJhY2ZnLmg+DQo+ID4gKyNpbmNsdWRl ICJzY3BzeXMtZXh0LmgiDQo+ID4gIA0KPiA+ICAjaW5jbHVkZSA8ZHQtYmluZGluZ3MvcG93ZXIv bXQyNzAxLXBvd2VyLmg+DQo+ID4gICNpbmNsdWRlIDxkdC1iaW5kaW5ncy9wb3dlci9tdDI3MTIt cG93ZXIuaD4NCj4gPiBAQCAtODcsOSArODcsOSBAQA0KPiA+ICAgKiBAY3RsX29mZnM6IFRoZSBv ZmZzZXQgZm9yIG1haW4gcG93ZXIgY29udHJvbCByZWdpc3Rlci4NCj4gPiAgICogQHNyYW1fcGRu X2JpdHM6IFRoZSBtYXNrIGZvciBzcmFtIHBvd2VyIGNvbnRyb2wgYml0cy4NCj4gPiAgICogQHNy YW1fcGRuX2Fja19iaXRzOiBUaGUgbWFzayBmb3Igc3JhbSBwb3dlciBjb250cm9sIGFja2VkIGJp dHMuDQo+ID4gLSAqIEBidXNfcHJvdF9tYXNrOiBUaGUgbWFzayBmb3Igc2luZ2xlIHN0ZXAgYnVz IHByb3RlY3Rpb24uDQo+ID4gICAqIEBiYXNpY19jbGtfbmFtZTogVGhlIGJhc2ljIGNsb2NrcyBy ZXF1aXJlZCBieSB0aGlzIHBvd2VyIGRvbWFpbi4NCj4gPiAgICogQGNhcHM6IFRoZSBmbGFnIGZv ciBhY3RpdmUgd2FrZS11cCBhY3Rpb24uDQo+ID4gKyAqIEBicF90YWJsZTogVGhlIG1hc2sgdGFi bGUgZm9yIG11bHRpcGxlIHN0ZXAgYnVzIHByb3RlY3Rpb24uDQo+ID4gICAqLw0KPiA+ICBzdHJ1 Y3Qgc2NwX2RvbWFpbl9kYXRhIHsNCj4gPiAgCWNvbnN0IGNoYXIgKm5hbWU7DQo+ID4gQEAgLTk3 LDkgKzk3LDkgQEAgc3RydWN0IHNjcF9kb21haW5fZGF0YSB7DQo+ID4gIAlpbnQgY3RsX29mZnM7 DQo+ID4gIAl1MzIgc3JhbV9wZG5fYml0czsNCj4gPiAgCXUzMiBzcmFtX3Bkbl9hY2tfYml0czsN Cj4gPiAtCXUzMiBidXNfcHJvdF9tYXNrOw0KPiA+ICAJY29uc3QgY2hhciAqYmFzaWNfY2xrX25h bWVbTUFYX0NMS1NdOw0KPiA+ICAJdTggY2FwczsNCj4gPiArCXN0cnVjdCBidXNfcHJvdCBicF90 YWJsZVtNQVhfU1RFUFNdOw0KPiA+ICB9Ow0KPiA+ICANCj4gPiAgc3RydWN0IHNjcDsNCj4gPiBA QCAtMTIzLDggKzEyMyw4IEBAIHN0cnVjdCBzY3Agew0KPiA+ICAJc3RydWN0IGRldmljZSAqZGV2 Ow0KPiA+ICAJdm9pZCBfX2lvbWVtICpiYXNlOw0KPiA+ICAJc3RydWN0IHJlZ21hcCAqaW5mcmFj Zmc7DQo+ID4gKwlzdHJ1Y3QgcmVnbWFwICpzbWlfY29tbW9uOw0KPiA+ICAJc3RydWN0IHNjcF9j dHJsX3JlZyBjdHJsX3JlZzsNCj4gPiAtCWJvb2wgYnVzX3Byb3RfcmVnX3VwZGF0ZTsNCj4gPiAg fTsNCj4gPiAgDQo+ID4gIHN0cnVjdCBzY3Bfc3ViZG9tYWluIHsNCj4gPiBAQCAtMTM4LDcgKzEz OCw2IEBAIHN0cnVjdCBzY3Bfc29jX2RhdGEgew0KPiA+ICAJY29uc3Qgc3RydWN0IHNjcF9zdWJk b21haW4gKnN1YmRvbWFpbnM7DQo+ID4gIAlpbnQgbnVtX3N1YmRvbWFpbnM7DQo+ID4gIAljb25z dCBzdHJ1Y3Qgc2NwX2N0cmxfcmVnIHJlZ3M7DQo+ID4gLQlib29sIGJ1c19wcm90X3JlZ191cGRh dGU7DQo+ID4gIH07DQo+ID4gIA0KPiA+ICBzdGF0aWMgaW50IHNjcHN5c19kb21haW5faXNfb24o c3RydWN0IHNjcF9kb21haW4gKnNjcGQpDQo+ID4gQEAgLTI1MiwyNCArMjUxLDE2IEBAIHN0YXRp YyBpbnQgc2Nwc3lzX2J1c19wcm90ZWN0X2VuYWJsZShzdHJ1Y3Qgc2NwX2RvbWFpbiAqc2NwZCkN Cj4gPiAgew0KPiA+ICAJc3RydWN0IHNjcCAqc2NwID0gc2NwZC0+c2NwOw0KPiA+ICANCj4gPiAt CWlmICghc2NwZC0+ZGF0YS0+YnVzX3Byb3RfbWFzaykNCj4gPiAtCQlyZXR1cm4gMDsNCj4gPiAt DQo+ID4gLQlyZXR1cm4gbXRrX2luZnJhY2ZnX3NldF9idXNfcHJvdGVjdGlvbihzY3AtPmluZnJh Y2ZnLA0KPiA+IC0JCQlzY3BkLT5kYXRhLT5idXNfcHJvdF9tYXNrLA0KPiA+IC0JCQlzY3AtPmJ1 c19wcm90X3JlZ191cGRhdGUpOw0KPiA+ICsJcmV0dXJuIG10a19zY3BzeXNfZXh0X3NldF9idXNf cHJvdGVjdGlvbihzY3BkLT5kYXRhLT5icF90YWJsZSwNCj4gPiArCQkJc2NwLT5pbmZyYWNmZywg c2NwLT5zbWlfY29tbW9uKTsNCj4gDQo+IE5vdyB0aGF0J3MganVzdCBhIHdyYXBwZXIgd2hpY2gg ZG9lcyBhZGQgbm90aGluZyBidXQgYW5vdGhlciBpbmRpcmVjdGlvbi4gV2UgY2FuDQo+IGNhbGwg bXRrX3NjcHN5c19leHRfc2V0X2J1c19wcm90ZWN0aW9uKCkgZGlyZWN0bHkgKGFsc28gSSBkb24n dCBsaWtlIHRoZSBuYW1lLA0KPiBhY3R1YWxseSB3aHkgZG9uJ3QgbXRrX3NjcHN5c19zZXRfYnVz X3Byb3RlY3Rpb24oKT8pDQo+IA0KDQpZb3UncmUgcmlnaHQuIEknbGwgY2FsbGVkIG10a19zY3Bz eXNfZXh0X3NldF9idXNfcHJvdGVjdGlvbigpIGRpcmVjdGx5Lg0KDQo+ID4gIH0NCj4gPiAgDQo+ ID4gIHN0YXRpYyBpbnQgc2Nwc3lzX2J1c19wcm90ZWN0X2Rpc2FibGUoc3RydWN0IHNjcF9kb21h aW4gKnNjcGQpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBzY3AgKnNjcCA9IHNjcGQtPnNjcDsNCj4g PiAgDQo+ID4gLQlpZiAoIXNjcGQtPmRhdGEtPmJ1c19wcm90X21hc2spDQo+ID4gLQkJcmV0dXJu IDA7DQo+ID4gLQ0KPiA+IC0JcmV0dXJuIG10a19pbmZyYWNmZ19jbGVhcl9idXNfcHJvdGVjdGlv bihzY3AtPmluZnJhY2ZnLA0KPiA+IC0JCQlzY3BkLT5kYXRhLT5idXNfcHJvdF9tYXNrLA0KPiA+ IC0JCQlzY3AtPmJ1c19wcm90X3JlZ191cGRhdGUpOw0KPiA+ICsJcmV0dXJuIG10a19zY3BzeXNf ZXh0X2NsZWFyX2J1c19wcm90ZWN0aW9uKHNjcGQtPmRhdGEtPmJwX3RhYmxlLA0KPiA+ICsJCQlz Y3AtPmluZnJhY2ZnLCBzY3AtPnNtaV9jb21tb24pOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0 aWMgaW50IHNjcHN5c19wb3dlcl9vbihzdHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gKmdlbnBkKQ0K PiA+IEBAIC00MDQsOCArMzk1LDcgQEAgc3RhdGljIGludCBpbml0X2Jhc2ljX2Nsa3Moc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGNsayAqKmNsaywNCj4gPiAgDQo+ID4gIHN0 YXRpYyBzdHJ1Y3Qgc2NwICppbml0X3NjcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0K PiA+ICAJCQljb25zdCBzdHJ1Y3Qgc2NwX2RvbWFpbl9kYXRhICpzY3BfZG9tYWluX2RhdGEsIGlu dCBudW0sDQo+ID4gLQkJCWNvbnN0IHN0cnVjdCBzY3BfY3RybF9yZWcgKnNjcF9jdHJsX3JlZywN Cj4gPiAtCQkJYm9vbCBidXNfcHJvdF9yZWdfdXBkYXRlKQ0KPiA+ICsJCQljb25zdCBzdHJ1Y3Qg c2NwX2N0cmxfcmVnICpzY3BfY3RybF9yZWcpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBnZW5wZF9v bmVjZWxsX2RhdGEgKnBkX2RhdGE7DQo+ID4gIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsNCj4gPiBA QCAtNDE5LDggKzQwOSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NwICppbml0X3NjcChzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+ICAJc2NwLT5jdHJsX3JlZy5wd3Jfc3RhX29mZnMgPSBz Y3BfY3RybF9yZWctPnB3cl9zdGFfb2ZmczsNCj4gPiAgCXNjcC0+Y3RybF9yZWcucHdyX3N0YTJu ZF9vZmZzID0gc2NwX2N0cmxfcmVnLT5wd3Jfc3RhMm5kX29mZnM7DQo+ID4gIA0KPiA+IC0Jc2Nw LT5idXNfcHJvdF9yZWdfdXBkYXRlID0gYnVzX3Byb3RfcmVnX3VwZGF0ZTsNCj4gPiAtDQo+ID4g IAlzY3AtPmRldiA9ICZwZGV2LT5kZXY7DQo+ID4gIA0KPiA+ICAJcmVzID0gcGxhdGZvcm1fZ2V0 X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4gPiBAQCAtNDQ4LDYgKzQzNiwx NyBAQCBzdGF0aWMgc3RydWN0IHNjcCAqaW5pdF9zY3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiwNCj4gPiAgCQlyZXR1cm4gRVJSX0NBU1Qoc2NwLT5pbmZyYWNmZyk7DQo+ID4gIAl9DQo+ ID4gIA0KPiA+ICsJc2NwLT5zbWlfY29tbW9uID0gc3lzY29uX3JlZ21hcF9sb29rdXBfYnlfcGhh bmRsZShwZGV2LT5kZXYub2Zfbm9kZSwNCj4gPiArCQkJInNtaV9jb21tIik7DQo+ID4gKw0KPiA+ ICsJaWYgKHNjcC0+c21pX2NvbW1vbiA9PSBFUlJfUFRSKC1FTk9ERVYpKSB7DQo+ID4gKwkJc2Nw LT5zbWlfY29tbW9uID0gTlVMTDsNCj4gPiArCX0gZWxzZSBpZiAoSVNfRVJSKHNjcC0+c21pX2Nv bW1vbikpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDYW5ub3QgZmluZCBzbWlfY29t bW9uIGNvbnRyb2xsZXI6ICVsZFxuIiwNCj4gPiArCQkJCVBUUl9FUlIoc2NwLT5zbWlfY29tbW9u KSk7DQo+ID4gKwkJcmV0dXJuIEVSUl9DQVNUKHNjcC0+c21pX2NvbW1vbik7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICAJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7DQo+ID4gIAkJc3RydWN0IHNj cF9kb21haW4gKnNjcGQgPSAmc2NwLT5kb21haW5zW2ldOw0KPiA+ICAJCWNvbnN0IHN0cnVjdCBz Y3BfZG9tYWluX2RhdGEgKmRhdGEgPSAmc2NwX2RvbWFpbl9kYXRhW2ldOw0KPiA+IEBAIC01MzAs OCArNTI5LDExIEBAIHN0YXRpYyB2b2lkIG10a19yZWdpc3Rlcl9wb3dlcl9kb21haW5zKHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gIAkJLm5hbWUgPSAiY29ubiIsDQo+ID4gIAkJ LnN0YV9tYXNrID0gUFdSX1NUQVRVU19DT05OLA0KPiA+ICAJCS5jdGxfb2ZmcyA9IFNQTV9DT05O X1BXUl9DT04sDQo+ID4gLQkJLmJ1c19wcm90X21hc2sgPSBNVDI3MDFfVE9QX0FYSV9QUk9UX0VO X0NPTk5fTSB8DQo+ID4gLQkJCQkgTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9DT05OX1MsDQo+ID4g KwkJLmJwX3RhYmxlID0gew0KPiA+ICsJCQlCVVNfUFJPVChJRlJfVFlQRSwgMCwgMCwgMHgyMjAs IDB4MjI4LA0KPiA+ICsJCQkJTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9DT05OX00gfA0KPiA+ICsJ CQkJTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9DT05OX1MpLA0KPiA+ICsJCX0sDQo+ID4gIAkJLmNh cHMgPSBNVEtfU0NQRF9BQ1RJVkVfV0FLRVVQLA0KPiA+ICAJfSwNCj4gPiAgCVtNVDI3MDFfUE9X RVJfRE9NQUlOX0RJU1BdID0gew0KPiA+IEBAIC01NDAsNyArNTQyLDEwIEBAIHN0YXRpYyB2b2lk IG10a19yZWdpc3Rlcl9wb3dlcl9kb21haW5zKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYs DQo+ID4gIAkJLmN0bF9vZmZzID0gU1BNX0RJU19QV1JfQ09OLA0KPiA+ICAJCS5zcmFtX3Bkbl9i aXRzID0gR0VOTUFTSygxMSwgOCksDQo+ID4gIAkJLmJhc2ljX2Nsa19uYW1lID0geyJtbSJ9LA0K PiA+IC0JCS5idXNfcHJvdF9tYXNrID0gTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9NTV9NMCwNCj4g PiArCQkuYnBfdGFibGUgPSB7DQo+ID4gKwkJCUJVU19QUk9UKElGUl9UWVBFLCAwLCAwLCAweDIy MCwgMHgyMjgsDQo+ID4gKwkJCQlNVDI3MDFfVE9QX0FYSV9QUk9UX0VOX01NX00wKSwNCj4gPiAr CQl9LA0KPiA+ICAJCS5jYXBzID0gTVRLX1NDUERfQUNUSVZFX1dBS0VVUCwNCj4gPiAgCX0sDQo+ ID4gIAlbTVQyNzAxX1BPV0VSX0RPTUFJTl9NRkddID0gew0KPiA+IEBAIC02NzUsNyArNjgwLDEw IEBAIHN0YXRpYyB2b2lkIG10a19yZWdpc3Rlcl9wb3dlcl9kb21haW5zKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsDQo+ID4gIAkJLnNyYW1fcGRuX2JpdHMgPSBHRU5NQVNLKDgsIDgpLA0K PiA+ICAJCS5zcmFtX3Bkbl9hY2tfYml0cyA9IEdFTk1BU0soMTYsIDE2KSwNCj4gPiAgCQkuYmFz aWNfY2xrX25hbWUgPSB7Im1mZyJ9LA0KPiA+IC0JCS5idXNfcHJvdF9tYXNrID0gQklUKDE0KSB8 IEJJVCgyMSkgfCBCSVQoMjMpLA0KPiA+ICsJCS5icF90YWJsZSA9IHsNCj4gPiArCQkJQlVTX1BS T1QoSUZSX1RZUEUsIDB4MjYwLCAweDI2NCwgMHgyMjAsIDB4MjI4LA0KPiA+ICsJCQkJQklUKDE0 KSB8IEJJVCgyMSkgfCBCSVQoMjMpKSwNCj4gPiArCQl9LA0KPiA+ICAJCS5jYXBzID0gTVRLX1ND UERfQUNUSVZFX1dBS0VVUCwNCj4gPiAgCX0sDQo+ID4gIAlbTVQyNzEyX1BPV0VSX0RPTUFJTl9N RkdfU0MxXSA9IHsNCj4gPiBAQCAtNzQ3LDcgKzc1NSwxMCBAQCBzdGF0aWMgdm9pZCBtdGtfcmVn aXN0ZXJfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+ICAJ CS5zcmFtX3Bkbl9iaXRzID0gR0VOTUFTSyg4LCA4KSwNCj4gPiAgCQkuc3JhbV9wZG5fYWNrX2Jp dHMgPSBHRU5NQVNLKDEyLCAxMiksDQo+ID4gIAkJLmJhc2ljX2Nsa19uYW1lID0geyJtbSJ9LA0K PiA+IC0JCS5idXNfcHJvdF9tYXNrID0gKEJJVCgxKSB8IEJJVCgyKSksDQo+ID4gKwkJLmJwX3Rh YmxlID0gew0KPiA+ICsJCQlCVVNfUFJPVChJRlJfVFlQRSwgMCwgMCwgMHgyMjAsIDB4MjI4LA0K PiA+ICsJCQkJQklUKDEpIHwgQklUKDIpKSwNCj4gPiArCQl9LA0KPiA+ICAJfSwNCj4gPiAgCVtN VDY3OTdfUE9XRVJfRE9NQUlOX0FVRElPXSA9IHsNCj4gPiAgCQkubmFtZSA9ICJhdWRpbyIsDQo+ ID4gQEAgLTc5NCw3ICs4MDUsMTAgQEAgc3RhdGljIHZvaWQgbXRrX3JlZ2lzdGVyX3Bvd2VyX2Rv bWFpbnMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwNCj4gPiAgCQkuY3RsX29mZnMgPSBT UE1fRVRIU1lTX1BXUl9DT04sDQo+ID4gIAkJLnNyYW1fcGRuX2JpdHMgPSBHRU5NQVNLKDExLCA4 KSwNCj4gPiAgCQkuc3JhbV9wZG5fYWNrX2JpdHMgPSBHRU5NQVNLKDE1LCAxMiksDQo+ID4gLQkJ LmJ1c19wcm90X21hc2sgPSBNVDc2MjJfVE9QX0FYSV9QUk9UX0VOX0VUSFNZUywNCj4gPiArCQku YnBfdGFibGUgPSB7DQo+ID4gKwkJCUJVU19QUk9UKElGUl9UWVBFLCAwLCAwLCAweDIyMCwgMHgy MjgsDQo+ID4gKwkJCQlNVDc2MjJfVE9QX0FYSV9QUk9UX0VOX0VUSFNZUyksDQo+ID4gKwkJfSwN Cj4gPiAgCQkuY2FwcyA9IE1US19TQ1BEX0FDVElWRV9XQUtFVVAsDQo+ID4gIAl9LA0KPiA+ICAJ W01UNzYyMl9QT1dFUl9ET01BSU5fSElGMF0gPSB7DQo+ID4gQEAgLTgwNCw3ICs4MTgsMTAgQEAg c3RhdGljIHZvaWQgbXRrX3JlZ2lzdGVyX3Bvd2VyX2RvbWFpbnMoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwNCj4gPiAgCQkuc3JhbV9wZG5fYml0cyA9IEdFTk1BU0soMTEsIDgpLA0KPiA+ ICAJCS5zcmFtX3Bkbl9hY2tfYml0cyA9IEdFTk1BU0soMTUsIDEyKSwNCj4gPiAgCQkuYmFzaWNf Y2xrX25hbWUgPSB7ImhpZl9zZWwifSwNCj4gPiAtCQkuYnVzX3Byb3RfbWFzayA9IE1UNzYyMl9U T1BfQVhJX1BST1RfRU5fSElGMCwNCj4gPiArCQkuYnBfdGFibGUgPSB7DQo+ID4gKwkJCUJVU19Q Uk9UKElGUl9UWVBFLCAwLCAwLCAweDIyMCwgMHgyMjgsDQo+ID4gKwkJCQlNVDc2MjJfVE9QX0FY SV9QUk9UX0VOX0hJRjApLA0KPiA+ICsJCX0sDQo+ID4gIAkJLmNhcHMgPSBNVEtfU0NQRF9BQ1RJ VkVfV0FLRVVQLA0KPiA+ICAJfSwNCj4gPiAgCVtNVDc2MjJfUE9XRVJfRE9NQUlOX0hJRjFdID0g ew0KPiA+IEBAIC04MTQsNyArODMxLDEwIEBAIHN0YXRpYyB2b2lkIG10a19yZWdpc3Rlcl9wb3dl cl9kb21haW5zKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gIAkJLnNyYW1fcGRu X2JpdHMgPSBHRU5NQVNLKDExLCA4KSwNCj4gPiAgCQkuc3JhbV9wZG5fYWNrX2JpdHMgPSBHRU5N QVNLKDE1LCAxMiksDQo+ID4gIAkJLmJhc2ljX2Nsa19uYW1lID0geyJoaWZfc2VsIn0sDQo+ID4g LQkJLmJ1c19wcm90X21hc2sgPSBNVDc2MjJfVE9QX0FYSV9QUk9UX0VOX0hJRjEsDQo+ID4gKwkJ LmJwX3RhYmxlID0gew0KPiA+ICsJCQlCVVNfUFJPVChJRlJfVFlQRSwgMCwgMCwgMHgyMjAsIDB4 MjI4LA0KPiA+ICsJCQkJTVQ3NjIyX1RPUF9BWElfUFJPVF9FTl9ISUYxKSwNCj4gPiArCQl9LA0K PiA+ICAJCS5jYXBzID0gTVRLX1NDUERfQUNUSVZFX1dBS0VVUCwNCj4gPiAgCX0sDQo+ID4gIAlb TVQ3NjIyX1BPV0VSX0RPTUFJTl9XQl0gPSB7DQo+ID4gQEAgLTgyMyw3ICs4NDMsMTAgQEAgc3Rh dGljIHZvaWQgbXRrX3JlZ2lzdGVyX3Bvd2VyX2RvbWFpbnMoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiwNCj4gPiAgCQkuY3RsX29mZnMgPSBTUE1fV0JfUFdSX0NPTiwNCj4gPiAgCQkuc3Jh bV9wZG5fYml0cyA9IDAsDQo+ID4gIAkJLnNyYW1fcGRuX2Fja19iaXRzID0gMCwNCj4gPiAtCQku YnVzX3Byb3RfbWFzayA9IE1UNzYyMl9UT1BfQVhJX1BST1RfRU5fV0IsDQo+ID4gKwkJLmJwX3Rh YmxlID0gew0KPiA+ICsJCQlCVVNfUFJPVChJRlJfVFlQRSwgMCwgMCwgMHgyMjAsIDB4MjI4LA0K PiA+ICsJCQkJTVQ3NjIyX1RPUF9BWElfUFJPVF9FTl9XQiksDQo+ID4gKwkJfSwNCj4gPiAgCQku Y2FwcyA9IE1US19TQ1BEX0FDVElWRV9XQUtFVVAgfCBNVEtfU0NQRF9GV0FJVF9TUkFNLA0KPiA+ ICAJfSwNCj4gPiAgfTsNCj4gPiBAQCAtODM3LDggKzg2MCwxMSBAQCBzdGF0aWMgdm9pZCBtdGtf cmVnaXN0ZXJfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+ ICAJCS5uYW1lID0gImNvbm4iLA0KPiA+ICAJCS5zdGFfbWFzayA9IFBXUl9TVEFUVVNfQ09OTiwN Cj4gPiAgCQkuY3RsX29mZnMgPSBTUE1fQ09OTl9QV1JfQ09OLA0KPiA+IC0JCS5idXNfcHJvdF9t YXNrID0gTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9DT05OX00gfA0KPiA+IC0JCQkJIE1UMjcwMV9U T1BfQVhJX1BST1RfRU5fQ09OTl9TLA0KPiA+ICsJCS5icF90YWJsZSA9IHsNCj4gPiArCQkJQlVT X1BST1QoSUZSX1RZUEUsIDAsIDAsIDB4MjIwLCAweDIyOCwNCj4gPiArCQkJCU1UMjcwMV9UT1Bf QVhJX1BST1RfRU5fQ09OTl9NIHwNCj4gPiArCQkJCU1UMjcwMV9UT1BfQVhJX1BST1RfRU5fQ09O Tl9TKSwNCj4gPiArCQl9LA0KPiA+ICAJCS5jYXBzID0gTVRLX1NDUERfQUNUSVZFX1dBS0VVUCwN Cj4gPiAgCX0sDQo+ID4gIAlbTVQ3NjIzQV9QT1dFUl9ET01BSU5fRVRIXSA9IHsNCj4gPiBAQCAt OTAzLDggKzkyOSwxMSBAQCBzdGF0aWMgdm9pZCBtdGtfcmVnaXN0ZXJfcG93ZXJfZG9tYWlucyhz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+ICAJCS5zcmFtX3Bkbl9iaXRzID0gR0VO TUFTSygxMSwgOCksDQo+ID4gIAkJLnNyYW1fcGRuX2Fja19iaXRzID0gR0VOTUFTSygxMiwgMTIp LA0KPiA+ICAJCS5iYXNpY19jbGtfbmFtZSA9IHsibW0ifSwNCj4gPiAtCQkuYnVzX3Byb3RfbWFz ayA9IE1UODE3M19UT1BfQVhJX1BST1RfRU5fTU1fTTAgfA0KPiA+IC0JCQlNVDgxNzNfVE9QX0FY SV9QUk9UX0VOX01NX00xLA0KPiA+ICsJCS5icF90YWJsZSA9IHsNCj4gPiArCQkJQlVTX1BST1Qo SUZSX1RZUEUsIDAsIDAsIDB4MjIwLCAweDIyOCwNCj4gPiArCQkJCU1UODE3M19UT1BfQVhJX1BS T1RfRU5fTU1fTTAgfA0KPiA+ICsJCQkJTVQ4MTczX1RPUF9BWElfUFJPVF9FTl9NTV9NMSksDQo+ ID4gKwkJfSwNCj4gPiAgCX0sDQo+ID4gIAlbTVQ4MTczX1BPV0VSX0RPTUFJTl9WRU5DX0xUXSA9 IHsNCj4gPiAgCQkubmFtZSA9ICJ2ZW5jX2x0IiwNCj4gPiBAQCAtOTUwLDEwICs5NzksMTMgQEAg c3RhdGljIHZvaWQgbXRrX3JlZ2lzdGVyX3Bvd2VyX2RvbWFpbnMoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwNCj4gPiAgCQkuY3RsX29mZnMgPSBTUE1fTUZHX1BXUl9DT04sDQo+ID4gIAkJ LnNyYW1fcGRuX2JpdHMgPSBHRU5NQVNLKDEzLCA4KSwNCj4gPiAgCQkuc3JhbV9wZG5fYWNrX2Jp dHMgPSBHRU5NQVNLKDIxLCAxNiksDQo+ID4gLQkJLmJ1c19wcm90X21hc2sgPSBNVDgxNzNfVE9Q X0FYSV9QUk9UX0VOX01GR19TIHwNCj4gPiAtCQkJTVQ4MTczX1RPUF9BWElfUFJPVF9FTl9NRkdf TTAgfA0KPiA+IC0JCQlNVDgxNzNfVE9QX0FYSV9QUk9UX0VOX01GR19NMSB8DQo+ID4gLQkJCU1U ODE3M19UT1BfQVhJX1BST1RfRU5fTUZHX1NOT09QX09VVCwNCj4gPiArCQkuYnBfdGFibGUgPSB7 DQo+ID4gKwkJCUJVU19QUk9UKElGUl9UWVBFLCAwLCAwLCAweDIyMCwgMHgyMjgsDQo+ID4gKwkJ CQlNVDgxNzNfVE9QX0FYSV9QUk9UX0VOX01GR19TIHwNCj4gPiArCQkJCU1UODE3M19UT1BfQVhJ X1BST1RfRU5fTUZHX00wIHwNCj4gPiArCQkJCU1UODE3M19UT1BfQVhJX1BST1RfRU5fTUZHX00x IHwNCj4gPiArCQkJCU1UODE3M19UT1BfQVhJX1BST1RfRU5fTUZHX1NOT09QX09VVCksDQo+ID4g KwkJfSwNCj4gPiAgCX0sDQo+ID4gIH07DQo+ID4gIA0KPiA+IEBAIC05NjksNyArMTAwMSw2IEBA IHN0YXRpYyB2b2lkIG10a19yZWdpc3Rlcl9wb3dlcl9kb21haW5zKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYsDQo+ID4gIAkJLnB3cl9zdGFfb2ZmcyA9IFNQTV9QV1JfU1RBVFVTLA0KPiA+ ICAJCS5wd3Jfc3RhMm5kX29mZnMgPSBTUE1fUFdSX1NUQVRVU18yTkQNCj4gPiAgCX0sDQo+ID4g LQkuYnVzX3Byb3RfcmVnX3VwZGF0ZSA9IHRydWUsDQo+ID4gIH07DQo+ID4gIA0KPiA+ICBzdGF0 aWMgY29uc3Qgc3RydWN0IHNjcF9zb2NfZGF0YSBtdDI3MTJfZGF0YSA9IHsNCj4gPiBAQCAtOTgx LDcgKzEwMTIsNiBAQCBzdGF0aWMgdm9pZCBtdGtfcmVnaXN0ZXJfcG93ZXJfZG9tYWlucyhzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+ICAJCS5wd3Jfc3RhX29mZnMgPSBTUE1fUFdS X1NUQVRVUywNCj4gPiAgCQkucHdyX3N0YTJuZF9vZmZzID0gU1BNX1BXUl9TVEFUVVNfMk5EDQo+ ID4gIAl9LA0KPiA+IC0JLmJ1c19wcm90X3JlZ191cGRhdGUgPSBmYWxzZSwNCj4gPiAgfTsNCj4g PiAgDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NwX3NvY19kYXRhIG10Njc5N19kYXRhID0g ew0KPiA+IEBAIC05OTMsNyArMTAyMyw2IEBAIHN0YXRpYyB2b2lkIG10a19yZWdpc3Rlcl9wb3dl cl9kb21haW5zKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gIAkJLnB3cl9zdGFf b2ZmcyA9IFNQTV9QV1JfU1RBVFVTX01UNjc5NywNCj4gPiAgCQkucHdyX3N0YTJuZF9vZmZzID0g U1BNX1BXUl9TVEFUVVNfMk5EX01UNjc5Nw0KPiA+ICAJfSwNCj4gPiAtCS5idXNfcHJvdF9yZWdf dXBkYXRlID0gdHJ1ZSwNCj4gPiAgfTsNCj4gPiAgDQo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c2NwX3NvY19kYXRhIG10NzYyMl9kYXRhID0gew0KPiA+IEBAIC0xMDAzLDcgKzEwMzIsNiBAQCBz dGF0aWMgdm9pZCBtdGtfcmVnaXN0ZXJfcG93ZXJfZG9tYWlucyhzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2LA0KPiA+ICAJCS5wd3Jfc3RhX29mZnMgPSBTUE1fUFdSX1NUQVRVUywNCj4gPiAg CQkucHdyX3N0YTJuZF9vZmZzID0gU1BNX1BXUl9TVEFUVVNfMk5EDQo+ID4gIAl9LA0KPiA+IC0J LmJ1c19wcm90X3JlZ191cGRhdGUgPSB0cnVlLA0KPiA+ICB9Ow0KPiA+ICANCj4gPiAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzY3Bfc29jX2RhdGEgbXQ3NjIzYV9kYXRhID0gew0KPiA+IEBAIC0xMDEz LDcgKzEwNDEsNiBAQCBzdGF0aWMgdm9pZCBtdGtfcmVnaXN0ZXJfcG93ZXJfZG9tYWlucyhzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LA0KPiA+ICAJCS5wd3Jfc3RhX29mZnMgPSBTUE1fUFdS X1NUQVRVUywNCj4gPiAgCQkucHdyX3N0YTJuZF9vZmZzID0gU1BNX1BXUl9TVEFUVVNfMk5EDQo+ ID4gIAl9LA0KPiA+IC0JLmJ1c19wcm90X3JlZ191cGRhdGUgPSB0cnVlLA0KPiA+ICB9Ow0KPiA+ ICANCj4gPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBzY3Bfc29jX2RhdGEgbXQ4MTczX2RhdGEgPSB7 DQo+ID4gQEAgLTEwMjUsNyArMTA1Miw2IEBAIHN0YXRpYyB2b2lkIG10a19yZWdpc3Rlcl9wb3dl cl9kb21haW5zKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsDQo+ID4gIAkJLnB3cl9zdGFf b2ZmcyA9IFNQTV9QV1JfU1RBVFVTLA0KPiA+ICAJCS5wd3Jfc3RhMm5kX29mZnMgPSBTUE1fUFdS X1NUQVRVU18yTkQNCj4gPiAgCX0sDQo+ID4gLQkuYnVzX3Byb3RfcmVnX3VwZGF0ZSA9IHRydWUs DQo+ID4gIH07DQo+ID4gIA0KPiA+ICAvKg0KPiA+IEBAIC0xMDY2LDggKzEwOTIsNyBAQCBzdGF0 aWMgaW50IHNjcHN5c19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAN Cj4gPiAgCXNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YSgmcGRldi0+ZGV2KTsNCj4gPiAg DQo+ID4gLQlzY3AgPSBpbml0X3NjcChwZGV2LCBzb2MtPmRvbWFpbnMsIHNvYy0+bnVtX2RvbWFp bnMsICZzb2MtPnJlZ3MsDQo+ID4gLQkJCXNvYy0+YnVzX3Byb3RfcmVnX3VwZGF0ZSk7DQo+ID4g KwlzY3AgPSBpbml0X3NjcChwZGV2LCBzb2MtPmRvbWFpbnMsIHNvYy0+bnVtX2RvbWFpbnMsICZz b2MtPnJlZ3MpOw0KPiA+ICAJaWYgKElTX0VSUihzY3ApKQ0KPiA+ICAJCXJldHVybiBQVFJfRVJS KHNjcCk7DQo+ID4gIA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9zY3Bz eXMtZXh0LmggYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9zY3BzeXMtZXh0LmgNCj4gPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjQ1OGIyYzUNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvc2Nwc3lzLWV4dC5oDQo+ID4gQEAg LTAsMCArMSw2NyBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAq Lw0KPiA+ICsjaWZuZGVmIF9fU09DX01FRElBVEVLX1NDUFNZU19FWFRfSA0KPiA+ICsjZGVmaW5l IF9fU09DX01FRElBVEVLX1NDUFNZU19FWFRfSA0KPiA+ICsNCj4gPiArI2RlZmluZSBNQVhfU1RF UFMJNA0KPiA+ICsNCj4gPiArI2RlZmluZSBfQlVTX1BST1QoX3R5cGUsIF9zZXRfb2ZzLCBfY2xy X29mcywJCQlcDQo+ID4gKwkJX2VuX29mcywgX3N0YV9vZnMsIF9tYXNrLCBfaWdub3JlX2Nscl9h Y2spIHsJXA0KPiA+ICsJCS50eXBlID0gX3R5cGUsCQkJCQlcDQo+ID4gKwkJLnNldF9vZnMgPSBf c2V0X29mcywJCQkJXA0KPiA+ICsJCS5jbHJfb2ZzID0gX2Nscl9vZnMsCQkJCVwNCj4gPiArCQku ZW5fb2ZzID0gX2VuX29mcywJCQkJXA0KPiA+ICsJCS5zdGFfb2ZzID0gX3N0YV9vZnMsCQkJCVwN Cj4gPiArCQkubWFzayA9IF9tYXNrLAkJCQkJXA0KPiA+ICsJCS5pZ25vcmVfY2xyX2FjayA9IF9p Z25vcmVfY2xyX2FjaywJCVwNCj4gPiArCX0NCj4gPiArDQo+ID4gKyNkZWZpbmUgQlVTX1BST1Qo X3R5cGUsIF9zZXRfb2ZzLCBfY2xyX29mcywJCVwNCj4gPiArCQlfZW5fb2ZzLCBfc3RhX29mcywg X21hc2spCQlcDQo+ID4gKwkJX0JVU19QUk9UKF90eXBlLCBfc2V0X29mcywgX2Nscl9vZnMsCVwN Cj4gPiArCQlfZW5fb2ZzLCBfc3RhX29mcywgX21hc2ssIGZhbHNlKQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBCVVNfUFJPVF9JR04oX3R5cGUsIF9zZXRfb2ZzLCBfY2xyX29mcywJXA0KPiA+ICsJCV9l bl9vZnMsIF9zdGFfb2ZzLCBfbWFzaykJCVwNCj4gPiArCQlfQlVTX1BST1QoX3R5cGUsIF9zZXRf b2ZzLCBfY2xyX29mcywJXA0KPiA+ICsJCV9lbl9vZnMsIF9zdGFfb2ZzLCBfbWFzaywgdHJ1ZSkN Cj4gPiArDQo+ID4gKyNkZWZpbmUgTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9NTV9NMAkJQklUKDEp DQo+ID4gKyNkZWZpbmUgTVQyNzAxX1RPUF9BWElfUFJPVF9FTl9DT05OX00JCUJJVCgyKQ0KPiA+ ICsjZGVmaW5lIE1UMjcwMV9UT1BfQVhJX1BST1RfRU5fQ09OTl9TCQlCSVQoOCkNCj4gPiArDQo+ ID4gKyNkZWZpbmUgTVQ3NjIyX1RPUF9BWElfUFJPVF9FTl9FVEhTWVMJCShCSVQoMykgfCBCSVQo MTcpKQ0KPiA+ICsjZGVmaW5lIE1UNzYyMl9UT1BfQVhJX1BST1RfRU5fSElGMAkJKEJJVCgyNCkg fCBCSVQoMjUpKQ0KPiA+ICsjZGVmaW5lIE1UNzYyMl9UT1BfQVhJX1BST1RfRU5fSElGMQkJKEJJ VCgyNikgfCBCSVQoMjcpIHwgXA0KPiA+ICsJCQkJCQkgQklUKDI4KSkNCj4gPiArI2RlZmluZSBN VDc2MjJfVE9QX0FYSV9QUk9UX0VOX1dCCQkoQklUKDIpIHwgQklUKDYpIHwgXA0KPiA+ICsJCQkJ CQkgQklUKDcpIHwgQklUKDgpKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBNVDgxNzNfVE9QX0FYSV9Q Uk9UX0VOX01NX00wCQlCSVQoMSkNCj4gPiArI2RlZmluZSBNVDgxNzNfVE9QX0FYSV9QUk9UX0VO X01NX00xCQlCSVQoMikNCj4gPiArI2RlZmluZSBNVDgxNzNfVE9QX0FYSV9QUk9UX0VOX01GR19T CQlCSVQoMTQpDQo+ID4gKyNkZWZpbmUgTVQ4MTczX1RPUF9BWElfUFJPVF9FTl9NRkdfTTAJCUJJ VCgyMSkNCj4gPiArI2RlZmluZSBNVDgxNzNfVE9QX0FYSV9QUk9UX0VOX01GR19NMQkJQklUKDIy KQ0KPiA+ICsjZGVmaW5lIE1UODE3M19UT1BfQVhJX1BST1RfRU5fTUZHX1NOT09QX09VVAlCSVQo MjMpDQo+ID4gKw0KPiA+ICtlbnVtIHJlZ21hcF90eXBlIHsNCj4gPiArCUlOVkFMSURfVFlQRSA9 IDAsDQo+ID4gKwlJRlJfVFlQRSwNCj4gPiArCVNNSV9UWVBFLA0KPiA+ICt9Ow0KPiA+ICsNCj4g PiArc3RydWN0IGJ1c19wcm90IHsNCj4gPiArCWVudW0gcmVnbWFwX3R5cGUgdHlwZTsNCj4gPiAr CXUzMiBzZXRfb2ZzOw0KPiA+ICsJdTMyIGNscl9vZnM7DQo+IA0KPiBQbGVhc2UgdHJ5IHRvIGtl ZXAgdmFyaWFibGUgbmFtZXMgY29uc2lzdGVudC4gWW91IGNoYW5nZSBmb3IgZXhhbXBsZSBzZXRf b2ZzIHRvDQo+IHJlZ19zZXQuIFRoYXQgbWFrZXMgdGhlIGNvZGUgbW9yZSBkaWZmaWN1bHQgdG8g cmVhZCBhbmQgdW5kZXJzdGFuZC4NCj4gDQoNCk9LLCBJJ2xsIGtlZXAgdGhvc2UgbmFtZXMgY29u c2lzdGVudC4NCg0KPiA+ICsJdTMyIGVuX29mczsNCj4gPiArCXUzMiBzdGFfb2ZzOw0KPiA+ICsJ dTMyIG1hc2s7DQo+ID4gKwlib29sIGlnbm9yZV9jbHJfYWNrOw0KPiA+ICt9Ow0KPiA+ICsNCj4g PiAraW50IG10a19zY3BzeXNfZXh0X3NldF9idXNfcHJvdGVjdGlvbihjb25zdCBzdHJ1Y3QgYnVz X3Byb3QgKmJwX3RhYmxlLA0KPiA+ICsJc3RydWN0IHJlZ21hcCAqaW5mcmFjZmcsIHN0cnVjdCBy ZWdtYXAgKnNtaV9jb21tb24pOw0KPiA+ICtpbnQgbXRrX3NjcHN5c19leHRfY2xlYXJfYnVzX3By b3RlY3Rpb24oY29uc3Qgc3RydWN0IGJ1c19wcm90ICpicF90YWJsZSwNCj4gPiArCXN0cnVjdCBy ZWdtYXAgKmluZnJhY2ZnLCBzdHJ1Y3QgcmVnbWFwICpzbWlfY29tbW9uKTsNCj4gPiArDQo+ID4g KyNlbmRpZiAvKiBfX1NPQ19NRURJQVRFS19TQ1BTWVNfRVhUX0ggKi8NCj4gPiANCg0K