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.3 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=unavailable 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 74E0EC2BA13 for ; Thu, 2 Apr 2020 02:48:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 36C9620842 for ; Thu, 2 Apr 2020 02:48:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="J61Fw/AV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387431AbgDBCsQ (ORCPT ); Wed, 1 Apr 2020 22:48:16 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:46459 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727135AbgDBCsQ (ORCPT ); Wed, 1 Apr 2020 22:48:16 -0400 X-UUID: 45ca09f1aaf14e25843f1fd7bb8bff83-20200402 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=q5OcvTavleQ4cdKM7PmbLnQcICB4TAgz/7dlDG7XNLo=; b=J61Fw/AV3xHB+rHftvgHnAyoQPbGW1HHBKWhsZ1C+kdF3IaIEOVtX/aPmVtycSxGE3YVD5Zubpx2QyQmtxmfHrzohR+LxgbU1KkhSS7itHwo3ifQYdRqVN53ZI89qOKlD8qt4D92fNfKR4AVZsOQyxgG2YWy2Vsdyu2WHhk2RxU=; X-UUID: 45ca09f1aaf14e25843f1fd7bb8bff83-20200402 Received: from mtkcas07.mediatek.inc [(172.21.101.84)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1585347623; Thu, 02 Apr 2020 10:48:08 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 2 Apr 2020 10:48:06 +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.1497.2 via Frontend Transport; Thu, 2 Apr 2020 10:48:06 +0800 Message-ID: <1585795687.27527.13.camel@mtksdaap41> Subject: Re: [PATCH V4 09/13] interconnect: mediatek: Add mt8183 interconnect provider driver From: Henry Chen To: Georgi Djakov CC: Rob Herring , Matthias Brugger , Viresh Kumar , Stephen Boyd , Ryan Case , Mark Brown , Mark Rutland , Nicolas Boichat , Fan Chen , James Liao , Arvin Wang , "Mike Turquette" , , , , , , Date: Thu, 2 Apr 2020 10:48:07 +0800 In-Reply-To: <2007da85-6ab8-225b-0ac7-b38bc9a590d2@linaro.org> References: <1584092066-24425-1-git-send-email-henryc.chen@mediatek.com> <1584092066-24425-10-git-send-email-henryc.chen@mediatek.com> <2007da85-6ab8-225b-0ac7-b38bc9a590d2@linaro.org> 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-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org SGkgR2VvcmdpLA0KDQpPbiBXZWQsIDIwMjAtMDQtMDEgYXQgMTc6NTUgKzAzMDAsIEdlb3JnaSBE amFrb3Ygd3JvdGU6DQo+IEhpIEhlbnJ5LA0KPiANCj4gVGhhbmtzIGZvciB0aGUgcGF0Y2ghDQo+ IA0KPiBPbiAzLzEzLzIwIDExOjM0LCBIZW5yeSBDaGVuIHdyb3RlOg0KPiA+IEludHJvZHVjZSBN ZWRpYXRlayBNVDgxODMgc3BlY2lmaWMgcHJvdmlkZXIgZHJpdmVyIHVzaW5nIHRoZQ0KPiA+IGlu dGVyY29ubmVjdCBmcmFtZXdvcmsuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1ieTogSGVucnkgQ2hl biA8aGVucnljLmNoZW5AbWVkaWF0ZWsuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2ludGVy Y29ubmVjdC9LY29uZmlnICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBkcml2ZXJzL2ludGVyY29u bmVjdC9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKw0KPiA+ICBkcml2ZXJzL2ludGVyY29ubmVj dC9tZWRpYXRlay9LY29uZmlnICAgfCAgMTMgKysNCj4gPiAgZHJpdmVycy9pbnRlcmNvbm5lY3Qv bWVkaWF0ZWsvTWFrZWZpbGUgIHwgICAzICsNCj4gPiAgZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVk aWF0ZWsvbXRrLWVtaS5jIHwgMjQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ID4gIDUgZmlsZXMgY2hhbmdlZCwgMjYwIGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlhdGVrL0tjb25maWcNCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlhdGVrL01ha2VmaWxlDQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2ludGVyY29ubmVjdC9tZWRpYXRlay9tdGstZW1p LmMNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnRlcmNvbm5lY3QvS2NvbmZpZyBi L2RyaXZlcnMvaW50ZXJjb25uZWN0L0tjb25maWcNCj4gPiBpbmRleCBiZmE0Y2EzLi5kZDllY2I2 IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvaW50ZXJjb25uZWN0L0tjb25maWcNCj4gPiArKysg Yi9kcml2ZXJzL2ludGVyY29ubmVjdC9LY29uZmlnDQo+ID4gQEAgLTEyLDUgKzEyLDYgQEAgbWVu dWNvbmZpZyBJTlRFUkNPTk5FQ1QNCj4gPiAgaWYgSU5URVJDT05ORUNUDQo+ID4gIA0KPiA+ICBz b3VyY2UgImRyaXZlcnMvaW50ZXJjb25uZWN0L3Fjb20vS2NvbmZpZyINCj4gPiArc291cmNlICJk cml2ZXJzL2ludGVyY29ubmVjdC9tZWRpYXRlay9LY29uZmlnIg0KPiA+ICANCj4gPiAgZW5kaWYN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnRlcmNvbm5lY3QvTWFrZWZpbGUgYi9kcml2ZXJz L2ludGVyY29ubmVjdC9NYWtlZmlsZQ0KPiA+IGluZGV4IDcyNTAyOWEuLjMzMGExMDggMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9pbnRlcmNvbm5lY3QvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2 ZXJzL2ludGVyY29ubmVjdC9NYWtlZmlsZQ0KPiA+IEBAIC01LDMgKzUsNCBAQCBpY2MtY29yZS1v YmpzCQkJCTo9IGNvcmUubw0KPiA+ICANCj4gPiAgb2JqLSQoQ09ORklHX0lOVEVSQ09OTkVDVCkJ CSs9IGljYy1jb3JlLm8NCj4gPiAgb2JqLSQoQ09ORklHX0lOVEVSQ09OTkVDVF9RQ09NKQkJKz0g cWNvbS8NCj4gPiArb2JqLSQoQ09ORklHX0lOVEVSQ09OTkVDVF9NVEspCQkrPSBtZWRpYXRlay8N Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVkaWF0ZWsvS2NvbmZpZyBi L2RyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlhdGVrL0tjb25maWcNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjk3MmQzYmINCj4gPiAtLS0gL2Rldi9udWxsDQo+ ID4gKysrIGIvZHJpdmVycy9pbnRlcmNvbm5lY3QvbWVkaWF0ZWsvS2NvbmZpZw0KPiA+IEBAIC0w LDAgKzEsMTMgQEANCj4gPiArY29uZmlnIElOVEVSQ09OTkVDVF9NVEsNCj4gPiArCWJvb2wgIk1l ZGlhdGVrIE5ldHdvcmstb24tQ2hpcCBpbnRlcmNvbm5lY3QgZHJpdmVycyINCj4gPiArCWRlcGVu ZHMgb24gQVJDSF9NRURJQVRFSw0KPiA+ICsJaGVscA0KPiA+ICsJICBTdXBwb3J0IGZvciBNZWRp YXRlaydzIE5ldHdvcmstb24tQ2hpcCBpbnRlcmNvbm5lY3QgaGFyZHdhcmUuDQo+ID4gKw0KPiA+ ICtjb25maWcgSU5URVJDT05ORUNUX01US19FTUkNCj4gPiArCXRyaXN0YXRlICJNZWRpYXRlayBF TUkgaW50ZXJjb25uZWN0IGRyaXZlciINCj4gPiArCWRlcGVuZHMgb24gSU5URVJDT05ORUNUX01U Sw0KPiA+ICsJZGVwZW5kcyBvbiAoTVRLX0RWRlNSQyAmJiBPRikNCj4gPiArCWhlbHANCj4gPiAr CSAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIE1lZGlhdGVrIE5ldHdvcmstb24tQ2hpcCBvbiBE VkZTUkMtYmFzZWQNCj4gPiArCSAgcGxhdGZvcm1zLg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2ludGVyY29ubmVjdC9tZWRpYXRlay9NYWtlZmlsZSBiL2RyaXZlcnMvaW50ZXJjb25uZWN0L21l ZGlhdGVrL01ha2VmaWxlDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAw MDAwLi4zNTM4NDJiDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvaW50ZXJj b25uZWN0L21lZGlhdGVrL01ha2VmaWxlDQo+ID4gQEAgLTAsMCArMSwzIEBADQo+ID4gKyMgU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArDQo+ID4gK29iai0kKENPTkZJR19J TlRFUkNPTk5FQ1RfTVRLX0VNSSkgKz0gbXRrLWVtaS5vDQo+ID4gXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlhdGVr L210ay1lbWkuYyBiL2RyaXZlcnMvaW50ZXJjb25uZWN0L21lZGlhdGVrL210ay1lbWkuYw0KPiA+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMC4uMGExNjk5Mg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL2ludGVyY29ubmVjdC9tZWRpYXRlay9tdGst ZW1pLmMNCj4gPiBAQCAtMCwwICsxLDI0MiBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMA0KPiA+ICsvKg0KPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTksIFRoZSBM aW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiANCj4gTml0OiBNYXliZSAy MDIwPw0KWWVzLCB3aWxsIGNoYW5nZSB0byAyMDIwDQo+IA0KPiA+ICsgKg0KPiA+ICsgKi8NCj4g PiArDQo+ID4gKyNpbmNsdWRlIDxkdC1iaW5kaW5ncy9pbnRlcmNvbm5lY3QvbXRrLG10ODE4My1l bWkuaD4NCj4gDQo+IFBsZWFzZSBtb3ZlIHRoaXMgYmVsb3cgdGhlIGFsbCBvdGhlciBsaW51eC8g aGVhZGVycw0KT0sNCj4gDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L2ludGVyY29ubmVjdC1wcm92aWRlci5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+DQo+IA0KPiBJcyB0aGlzIG5lZWRlZD8NCllvdSdy ZSByaWdodCwgaXQgbm90IG5lY2Vzc2FyeSBhbmQgSSB3aWxsIHJlbW92ZSB0aGlzLg0KPiANCj4g PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+ICsjaW5jbHVkZSA8c29j L21lZGlhdGVrL210a19kdmZzcmMuaD4NCj4gPiArDQo+ID4gK2VudW0gbXRrX2ljY19uYW1lIHsN Cj4gPiArCVNMQVZFX0REUl9FTUksDQo+ID4gKwlNQVNURVJfTUNVU1lTLA0KPiA+ICsJTUFTVEVS X0dQVVNZUywNCj4gPiArCU1BU1RFUl9NTVNZUywNCj4gPiArCU1BU1RFUl9NTV9WUFUsDQo+ID4g KwlNQVNURVJfTU1fRElTUCwNCj4gPiArCU1BU1RFUl9NTV9WREVDLA0KPiA+ICsJTUFTVEVSX01N X1ZFTkMsDQo+ID4gKwlNQVNURVJfTU1fQ0FNLA0KPiA+ICsJTUFTVEVSX01NX0lNRywNCj4gPiAr CU1BU1RFUl9NTV9NRFAsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1UODE4M19NQVhf TElOS1MJMQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCBtdGtfaWNjX25vZGUgLSBN ZWRpYXRlayBzcGVjaWZpYyBpbnRlcmNvbm5lY3Qgbm9kZXMNCj4gPiArICogQG5hbWU6IHRoZSBu b2RlIG5hbWUgdXNlZCBpbiBkZWJ1Z2ZzDQo+ID4gKyAqIEBlcDogdHJ1ZSBpZiB0aGUgbm9kZSBp cyBhbiBlbmQgcG9pbnQuDQo+ID4gKyAqIEBpZDogYSB1bmlxdWUgbm9kZSBpZGVudGlmaWVyDQo+ ID4gKyAqIEBsaW5rczogYW4gYXJyYXkgb2Ygbm9kZXMgd2hlcmUgd2UgY2FuIGdvIG5leHQgd2hp bGUgdHJhdmVyc2luZw0KPiA+ICsgKiBAbnVtX2xpbmtzOiB0aGUgdG90YWwgbnVtYmVyIG9mIEBs aW5rcw0KPiA+ICsgKiBAYnVzd2lkdGg6IHdpZHRoIG9mIHRoZSBpbnRlcmNvbm5lY3QgYmV0d2Vl biBhIG5vZGUgYW5kIHRoZSBidXMNCj4gPiArICogQHN1bV9hdmc6IGN1cnJlbnQgc3VtIGFnZ3Jl Z2F0ZSB2YWx1ZSBvZiBhbGwgYXZnIGJ3IGtCcHMgcmVxdWVzdHMNCj4gPiArICogQG1heF9wZWFr OiBjdXJyZW50IG1heCBhZ2dyZWdhdGUgdmFsdWUgb2YgYWxsIHBlYWsgYncga0JwcyByZXF1ZXN0 cw0KPiA+ICsgKi8NCj4gPiArc3RydWN0IG10a19pY2Nfbm9kZSB7DQo+ID4gKwl1bnNpZ25lZCBj aGFyICpuYW1lOw0KPiA+ICsJYm9vbCBlcDsNCj4gPiArCXUxNiBpZDsNCj4gPiArCXUxNiBsaW5r c1tNVDgxODNfTUFYX0xJTktTXTsNCj4gPiArCXUxNiBudW1fbGlua3M7DQo+ID4gKwl1MTYgYnVz d2lkdGg7DQo+ID4gKwl1NjQgc3VtX2F2ZzsNCj4gPiArCXU2NCBtYXhfcGVhazsNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0cnVjdCBtdGtfaWNjX2Rlc2Mgew0KPiA+ICsJc3RydWN0IG10a19pY2Nf bm9kZSAqKm5vZGVzOw0KPiA+ICsJc2l6ZV90IG51bV9ub2RlczsNCj4gPiArfTsNCj4gPiArDQo+ ID4gKyNkZWZpbmUgREVGSU5FX01OT0RFKF9uYW1lLCBfaWQsIF9idXN3aWR0aCwgX2VwLCAuLi4p CVwNCj4gPiArCQlzdGF0aWMgc3RydWN0IG10a19pY2Nfbm9kZSBfbmFtZSA9IHsJCQlcDQo+ID4g KwkJLm5hbWUgPSAjX25hbWUsCQkJCQkJXA0KPiA+ICsJCS5pZCA9IF9pZCwJCQkJCQlcDQo+ID4g KwkJLmJ1c3dpZHRoID0gX2J1c3dpZHRoLAkJCQkJXA0KPiA+ICsJCS5lcCA9IF9lcCwJCQkJCQlc DQo+ID4gKwkJLm51bV9saW5rcyA9IEFSUkFZX1NJWkUoKChpbnRbXSl7IF9fVkFfQVJHU19fIH0p KSwJXA0KPiA+ICt9DQo+ID4gKw0KPiA+ICtERUZJTkVfTU5PREUoZGRyX2VtaSwgU0xBVkVfRERS X0VNSSwgMTAyNCwgMSwgMCk7DQo+ID4gK0RFRklORV9NTk9ERShtY3VzeXMsIE1BU1RFUl9NQ1VT WVMsIDI1NiwgMCwgU0xBVkVfRERSX0VNSSk7DQo+ID4gK0RFRklORV9NTk9ERShncHUsIE1BU1RF Ul9HUFVTWVMsIDI1NiwgMCwgU0xBVkVfRERSX0VNSSk7DQo+ID4gK0RFRklORV9NTk9ERShtbXN5 cywgTUFTVEVSX01NU1lTLCAyNTYsIDAsIFNMQVZFX0REUl9FTUkpOw0KPiA+ICtERUZJTkVfTU5P REUobW1fdnB1LCBNQVNURVJfTU1fVlBVLCAxMjgsIDAsIE1BU1RFUl9NTVNZUyk7DQo+ID4gK0RF RklORV9NTk9ERShtbV9kaXNwLCBNQVNURVJfTU1fRElTUCwgMTI4LCAwLCBNQVNURVJfTU1TWVMp Ow0KPiA+ICtERUZJTkVfTU5PREUobW1fdmRlYywgTUFTVEVSX01NX1ZERUMsIDEyOCwgMCwgTUFT VEVSX01NU1lTKTsNCj4gPiArREVGSU5FX01OT0RFKG1tX3ZlbmMsIE1BU1RFUl9NTV9WRU5DLCAx MjgsIDAsIE1BU1RFUl9NTVNZUyk7DQo+ID4gK0RFRklORV9NTk9ERShtbV9jYW0sIE1BU1RFUl9N TV9DQU0sIDEyOCwgMCwgTUFTVEVSX01NU1lTKTsNCj4gPiArREVGSU5FX01OT0RFKG1tX2ltZywg TUFTVEVSX01NX0lNRywgMTI4LCAwLCBNQVNURVJfTU1TWVMpOw0KPiA+ICtERUZJTkVfTU5PREUo bW1fbWRwLCBNQVNURVJfTU1fTURQLCAxMjgsIDAsIE1BU1RFUl9NTVNZUyk7DQo+ID4gKw0KPiA+ ICtzdGF0aWMgc3RydWN0IG10a19pY2Nfbm9kZSAqbXQ4MTgzX2ljY19ub2Rlc1tdID0gew0KPiA+ ICsJW01UODE4M19TTEFWRV9ERFJfRU1JXSA9ICZkZHJfZW1pLA0KPiA+ICsJW01UODE4M19NQVNU RVJfTUNVU1lTXSA9ICZtY3VzeXMsDQo+ID4gKwlbTVQ4MTgzX01BU1RFUl9HUFVdID0gJmdwdSwN Cj4gPiArCVtNVDgxODNfTUFTVEVSX01NU1lTXSA9ICZtbXN5cywNCj4gPiArCVtNVDgxODNfTUFT VEVSX01NX1ZQVV0gPSAmbW1fdnB1LA0KPiA+ICsJW01UODE4M19NQVNURVJfTU1fRElTUF0gPSAm bW1fZGlzcCwNCj4gPiArCVtNVDgxODNfTUFTVEVSX01NX1ZERUNdID0gJm1tX3ZkZWMsDQo+ID4g KwlbTVQ4MTgzX01BU1RFUl9NTV9WRU5DXSA9ICZtbV92ZW5jLA0KPiA+ICsJW01UODE4M19NQVNU RVJfTU1fQ0FNXSA9ICZtbV9jYW0sDQo+ID4gKwlbTVQ4MTgzX01BU1RFUl9NTV9JTUddID0gJm1t X2ltZywNCj4gPiArCVtNVDgxODNfTUFTVEVSX01NX01EUF0gPSAmbW1fbWRwLA0KPiA+ICt9Ow0K PiA+ICsNCj4gPiArc3RhdGljIHN0cnVjdCBtdGtfaWNjX2Rlc2MgbXQ4MTgzX2ljYyA9IHsNCj4g DQo+IGNvbnN0Pw0Kb2sNCj4gDQo+ID4gKwkubm9kZXMgPSBtdDgxODNfaWNjX25vZGVzLA0KPiA+ ICsJLm51bV9ub2RlcyA9IEFSUkFZX1NJWkUobXQ4MTgzX2ljY19ub2RlcyksDQo+ID4gK307DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW50IGVtaV9pY2NfYWdncmVnYXRlKHN0cnVjdCBpY2Nfbm9kZSAq bm9kZSwgdTMyIHRhZywgdTMyIGF2Z19idywNCj4gPiArCQkJICAgICB1MzIgcGVha19idywgdTMy ICphZ2dfYXZnLCB1MzIgKmFnZ19wZWFrKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgbXRrX2ljY19u b2RlICppbjsNCj4gPiArDQo+ID4gKwlpbiA9IG5vZGUtPmRhdGE7DQo+ID4gKw0KPiA+ICsJKmFn Z19hdmcgKz0gYXZnX2J3Ow0KPiA+ICsJKmFnZ19wZWFrICs9IHBlYWtfYnc7DQo+ID4gKw0KPiA+ ICsJaW4tPnN1bV9hdmcgPSAqYWdnX2F2ZzsNCj4gPiArCWluLT5tYXhfcGVhayA9ICphZ2dfcGVh azsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlu dCBlbWlfaWNjX3NldChzdHJ1Y3QgaWNjX25vZGUgKnNyYywgc3RydWN0IGljY19ub2RlICpkc3Qp DQo+ID4gK3sNCj4gPiArCWludCByZXQgPSAwOw0KPiA+ICsJc3RydWN0IG10a19pY2Nfbm9kZSAq bm9kZTsNCj4gPiArDQo+ID4gKwlub2RlID0gZHN0LT5kYXRhOw0KPiA+ICsJaWYgKG5vZGUtPmVw KSB7DQo+ID4gKwkJcHJfZGVidWcoInN1bV9hdmcgKCVsbHUpLCBtYXhfcGVhayAoJWxsdSlcbiIs DQo+ID4gKwkJCSBub2RlLT5zdW1fYXZnLCBub2RlLT5tYXhfcGVhayk7DQo+ID4gKwkJbXRrX2R2 ZnNyY19zZW5kX3JlcXVlc3Qoc3JjLT5wcm92aWRlci0+ZGV2LT5wYXJlbnQsDQo+ID4gKwkJCQkJ TVRLX0RWRlNSQ19DTURfQldfUkVRVUVTVCwNCj4gPiArCQkJCQlub2RlLT5tYXhfcGVhayk7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBlbWlfaWNjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTsNCj4g PiArc3RhdGljIGludCBlbWlfaWNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYp DQo+ID4gK3sNCj4gPiArCWludCByZXQ7DQo+ID4gKwljb25zdCBzdHJ1Y3QgbXRrX2ljY19kZXNj ICpkZXNjOw0KPiA+ICsJc3RydWN0IGljY19ub2RlICpub2RlOw0KPiA+ICsJc3RydWN0IGljY19v bmVjZWxsX2RhdGEgKmRhdGE7DQo+ID4gKwlzdHJ1Y3QgaWNjX3Byb3ZpZGVyICpwcm92aWRlcjsN Cj4gPiArCXN0cnVjdCBtdGtfaWNjX25vZGUgKiptbm9kZXM7DQo+ID4gKwlzaXplX3QgbnVtX25v ZGVzLCBpLCBqOw0KPiA+ICsNCj4gPiArCWRlc2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEo JnBkZXYtPmRldik7DQo+ID4gKwlpZiAoIWRlc2MpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4gKw0KPiA+ICsJbW5vZGVzID0gZGVzYy0+bm9kZXM7DQo+ID4gKwludW1fbm9kZXMgPSBkZXNj LT5udW1fbm9kZXM7DQo+ID4gKw0KPiA+ICsJcHJvdmlkZXIgPSBkZXZtX2t6YWxsb2MoJnBkZXYt PmRldiwgc2l6ZW9mKCpwcm92aWRlciksIEdGUF9LRVJORUwpOw0KPiA+ICsJaWYgKCFwcm92aWRl cikNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwlkYXRhID0gZGV2bV9rY2Fs bG9jKCZwZGV2LT5kZXYsIG51bV9ub2Rlcywgc2l6ZW9mKCpub2RlKSwgR0ZQX0tFUk5FTCk7DQo+ IA0KPiBUaGlzIHNob3VsZCBiZToNCj4gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHN0cnVjdF9z aXplKGRhdGEsIG5vZGVzLCBudW1fbm9kZXMpLCBHRlBfS0VSTkVMKTsNCnRoYW5rcywgd2lsbCBm aXggdGhpcy4NCj4gDQo+ID4gKwlpZiAoIWRhdGEpDQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ ID4gKw0KPiA+ICsJcHJvdmlkZXItPmRldiA9ICZwZGV2LT5kZXY7DQo+ID4gKwlwcm92aWRlci0+ c2V0ID0gZW1pX2ljY19zZXQ7DQo+ID4gKwlwcm92aWRlci0+YWdncmVnYXRlID0gZW1pX2ljY19h Z2dyZWdhdGU7DQo+ID4gKwlwcm92aWRlci0+eGxhdGUgPSBvZl9pY2NfeGxhdGVfb25lY2VsbDsN Cj4gPiArCUlOSVRfTElTVF9IRUFEKCZwcm92aWRlci0+bm9kZXMpOw0KPiA+ICsJcHJvdmlkZXIt PmRhdGEgPSBkYXRhOw0KPiA+ICsNCj4gPiArCXJldCA9IGljY19wcm92aWRlcl9hZGQocHJvdmlk ZXIpOw0KPiA+ICsJaWYgKHJldCkgew0KPiA+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImVycm9y IGFkZGluZyBpbnRlcmNvbm5lY3QgcHJvdmlkZXJcbiIpOw0KPiA+ICsJCXJldHVybiByZXQ7DQo+ ID4gKwl9DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IG51bV9ub2RlczsgaSsrKSB7DQo+ ID4gKwkJbm9kZSA9IGljY19ub2RlX2NyZWF0ZShtbm9kZXNbaV0tPmlkKTsNCj4gPiArCQlpZiAo SVNfRVJSKG5vZGUpKSB7DQo+ID4gKwkJCXJldCA9IFBUUl9FUlIobm9kZSk7DQo+ID4gKwkJCWdv dG8gZXJyOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJbm9kZS0+bmFtZSA9IG1ub2Rlc1tpXS0+ bmFtZTsNCj4gPiArCQlub2RlLT5kYXRhID0gbW5vZGVzW2ldOw0KPiA+ICsJCWljY19ub2RlX2Fk ZChub2RlLCBwcm92aWRlcik7DQo+ID4gKw0KPiA+ICsJCWRldl9kYmcoJnBkZXYtPmRldiwgInJl Z2lzdGVyZWQgbm9kZSAlcywgbnVtIGxpbms6ICVkXG4iLA0KPiA+ICsJCQltbm9kZXNbaV0tPm5h bWUsIG1ub2Rlc1tpXS0+bnVtX2xpbmtzKTsNCj4gDQo+IFBsZWFzZSByZW1vdmUgdGhpcy4NCm9r DQo+IA0KPiA+ICsNCj4gPiArCQkvKiBwb3B1bGF0ZSBsaW5rcyAqLw0KPiANCj4gUGxlYXNlIHJl bW92ZSB0aGUgY29tbWVudCB0b28uDQpvaw0KPiANCj4gPiArCQlmb3IgKGogPSAwOyBqIDwgbW5v ZGVzW2ldLT5udW1fbGlua3M7IGorKykNCj4gPiArCQkJaWNjX2xpbmtfY3JlYXRlKG5vZGUsIG1u b2Rlc1tpXS0+bGlua3Nbal0pOw0KPiA+ICsNCj4gPiArCQlkYXRhLT5ub2Rlc1tpXSA9IG5vZGU7 DQo+ID4gKwl9DQo+ID4gKwlkYXRhLT5udW1fbm9kZXMgPSBudW1fbm9kZXM7DQo+ID4gKw0KPiA+ ICsJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJvdmlkZXIpOw0KPiA+ICsNCj4gPiArCXJl dHVybiAwOw0KPiA+ICtlcnI6DQo+ID4gKwllbWlfaWNjX3JlbW92ZShwZGV2KTsNCj4gDQo+IFRo aXMgd2lsbCBub3Qgd29yayBiZWNhdXNlIHBsYXRmb3JtX3NldF9kcnZkYXRhKCkgaXMgY2FsbGVk IG9ubHkgd2hlbiB0aGUNCj4gcHJvYmUgZnVuY3Rpb24gY29tcGxldGVzIHN1Y2Nlc3NmdWxseS4g U28gcGxhdGZvcm1fZ2V0X2RydmRhdGEoKSBpbg0KPiBlbWlfaWNjX3JlbW92ZSgpIHdpbGwgcmV0 dXJuIE5VTEwuDQo+IA0KPiA+ICsJcmV0dXJuIHJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBlbWlfaWNjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ ICt7DQo+ID4gKwlzdHJ1Y3QgaWNjX3Byb3ZpZGVyICpwcm92aWRlciA9IHBsYXRmb3JtX2dldF9k cnZkYXRhKHBkZXYpOw0KPiA+ICsJc3RydWN0IGljY19ub2RlICpuOw0KPiA+ICsNCj4gPiArCWxp c3RfZm9yX2VhY2hfZW50cnkobiwgJnByb3ZpZGVyLT5ub2Rlcywgbm9kZV9saXN0KSB7DQo+ID4g KwkJaWNjX25vZGVfZGVsKG4pOw0KPiA+ICsJCWljY19ub2RlX2Rlc3Ryb3kobi0+aWQpOw0KPiA+ ICsJfQ0KPiANCj4gWW91IGNhbiB1c2UgaWNjX25vZGVzX3JlbW92ZSgpIGluc3RlYWQgb2YgdGhl IGFib3ZlLg0KR290IGl0LCB0aGFua3MgZm9yIGFkdmlzZS4NCj4gDQo+IFRoYW5rcywNCj4gR2Vv cmdpDQoNClRoYW5rcyBmb3IgdGhlIHJldmlldy4NCg0KSGVucnkNCg==