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=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 DB85FC10DCE for ; Wed, 18 Mar 2020 20:10:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A850920754 for ; Wed, 18 Mar 2020 20:10:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726821AbgCRUK4 (ORCPT ); Wed, 18 Mar 2020 16:10:56 -0400 Received: from mga11.intel.com ([192.55.52.93]:59014 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726647AbgCRUKz (ORCPT ); Wed, 18 Mar 2020 16:10:55 -0400 IronPort-SDR: ZrVcfyu7Ct884SXhuf7cYIDG3OUjLERyYXTSOfj/95Cs3n8Pi+qOJRIc0Ws9ft3H9iqS3peXah 7JoC+yvdeTow== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2020 13:10:54 -0700 IronPort-SDR: aaxSHI3KsNa3PQirL1ksisyQtk5p1sBMthFx31DA0C911Ca3MY3D2G3w7Hb0Rergxmxgo0wU6T qmeLrM+i/uHg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,568,1574150400"; d="scan'208";a="238287899" Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by fmsmga008.fm.intel.com with ESMTP; 18 Mar 2020 13:10:54 -0700 Received: from orsmsx159.amr.corp.intel.com (10.22.240.24) by ORSMSX108.amr.corp.intel.com (10.22.240.6) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 18 Mar 2020 13:10:53 -0700 Received: from orsmsx109.amr.corp.intel.com ([169.254.11.100]) by ORSMSX159.amr.corp.intel.com ([169.254.11.47]) with mapi id 14.03.0439.000; Wed, 18 Mar 2020 13:10:53 -0700 From: "Pandruvada, Srinivas" To: "linux-pm@vger.kernel.org" , "currojerez@riseup.net" , "intel-gfx@lists.freedesktop.org" CC: "Vivi, Rodrigo" , "peterz@infradead.org" , "rjw@rjwysocki.net" Subject: Re: [PATCH 07/10] cpufreq: intel_pstate: Implement VLP controller for HWP parts. Thread-Topic: [PATCH 07/10] cpufreq: intel_pstate: Implement VLP controller for HWP parts. Thread-Index: AQHV9yVZzfN0ydxLQk2N+RiJ1IPVFahN90kAgAFM9wCAAAV0gA== Date: Wed, 18 Mar 2020 20:10:53 +0000 Message-ID: <8819f9b64ef4bd9ae3621b1073740de1febe3967.camel@intel.com> References: <20200310214203.26459-1-currojerez@riseup.net> <20200310214203.26459-8-currojerez@riseup.net> <40db3c86c68abfab406618e2424787c18c119c87.camel@intel.com> <87fte57879.fsf@riseup.net> In-Reply-To: <87fte57879.fsf@riseup.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.34.2 (3.34.2-1.fc31) x-originating-ip: [10.212.192.29] Content-Type: text/plain; charset="utf-8" Content-ID: <183AF26DAB16374E8D69BC8B8D56CFC5@intel.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org T24gV2VkLCAyMDIwLTAzLTE4IGF0IDEyOjUxIC0wNzAwLCBGcmFuY2lzY28gSmVyZXogd3JvdGU6 DQo+ICJQYW5kcnV2YWRhLCBTcmluaXZhcyIgPHNyaW5pdmFzLnBhbmRydXZhZGFAaW50ZWwuY29t PiB3cml0ZXM6DQo+IA0KPiA+IE9uIFR1ZSwgMjAyMC0wMy0xMCBhdCAxNDo0MiAtMDcwMCwgRnJh bmNpc2NvIEplcmV6IHdyb3RlOg0KPiA+ID4gVGhpcyBpbXBsZW1lbnRzIGEgc2ltcGxlIHZhcmlh Ymx5IGxvdy1wYXNzLWZpbHRlcmluZyBnb3Zlcm5vciBpbg0KPiA+ID4gY29udHJvbCBvZiB0aGUg SFdQIE1JTi9NQVggUEVSRiByYW5nZSBiYXNlZCBvbiB0aGUgcHJldmlvdXNseQ0KPiA+ID4gaW50 cm9kdWNlZCBnZXRfdmxwX3RhcmdldF9yYW5nZSgpLiAgU2VlICJjcHVmcmVxOiBpbnRlbF9wc3Rh dGU6DQo+ID4gPiBJbXBsZW1lbnQgVkxQIGNvbnRyb2xsZXIgdGFyZ2V0IFAtc3RhdGUgcmFuZ2Ug ZXN0aW1hdGlvbi4iIGZvcg0KPiA+ID4gdGhlDQo+ID4gPiByYXRpb25hbGUuDQo+ID4gDQo+ID4g SSBqdXN0IGdhdmUgYSB0cnkgb24gYSBwcmV0dHkgaWRsZSBzeXN0ZW0gd2l0aCBqdXN0IHN5c3Rl bWQNCj4gPiBwcm9jZXNzZXMNCj4gPiBhbmQgdXN1YWwgYmFja2dyb3VuZCB0YXNrcyB3aXRoIG5v bW9kc2V0LiANCj4gPiANCj4gPiBJIHNlZSB0aGF0IHRoZXJlIEhXUCBtaW4gaXMgZ2V0dGluZyBj aGFuZ2VkIGJldHdlZW4gNC04LiBXaHkgYXJlDQo+ID4gY2hhbmdpbmcgSFdQIGR5bmFtaWMgcmFu Z2UgZXZlbiBvbiBhbiBpZGxlIHN5c3RlbSBydW5uaW5nIG5vIHdoZXJlDQo+ID4gY2xvc2UgdG8g VERQPw0KPiA+IA0KPiANCj4gVGhlIEhXUCByZXF1ZXN0IHJhbmdlIGlzIGNsYW1wZWQgdG8gdGhl IGZyZXF1ZW5jeSByYW5nZSBzcGVjaWZpZWQgYnkNCj4gdGhlDQo+IENQVUZSRVEgcG9saWN5IGFu ZCB0byB0aGUgY3B1LT5wc3RhdGUubWluX3BzdGF0ZSBib3VuZC4NCj4gDQo+IElmIHlvdSBzZWUg dGhlIEhXUCBtaW5pbXVtIGZsdWN0dWF0aW5nIGFib3ZlIHRoYXQgaXQncyBsaWtlbHkgYSBzaWdu DQo+IG9mDQo+IHlvdXIgc3lzdGVtIG5vdCBiZWluZyBjb21wbGV0ZWx5IGlkbGUgLS0gSWYgdGhh dCdzIHRoZSBjYXNlIGl0J3MNCj4gbGlrZWx5DQo+IHRvIGdvIGF3YXkgYWZ0ZXIgeW91IGRvOg0K PiANCj4gIGVjaG8gMCA+IC9zeXMva2VybmVsL2RlYnVnL3BzdGF0ZV9zbmIvdmxwX3JlYWx0aW1l X2dhaW5fcG1sDQo+IA0KVGhlIG9iamVjdGl2ZSB3aGljaCBJIHRob3VnaCB3YXMgdG8gaW1wcm92 ZSBwZXJmb3JtYW5jZSBvZiBHUFUNCndvcmtsb2FkcyBsaW1pdGVkIGJ5IFREUCBiZWNhdXNlIG9m IFAtc3RhdGVzIHJhbXBpbmcgdXAgYW5kIHJlc3VsdGluZw0KaW4gbGVzcyBwb3dlciB0byBHUFUg dG8gY29tcGxldGUgYSB0YXNrLg0KIA0KSFdQIHRha2VzIGRlY2lzaW9uIG5vdCBvbiBqdXN0IGxv YWQgb24gYSBDUFUgYnV0IHNldmVyYWwgb3RoZXIgZmFjdG9ycw0KbGlrZSB0b3RhbCBTb0MgcG93 ZXIgYW5kIHNjYWxhYmlsaXR5LiBXZSBkb24ndCB3YW50IHRvIGRpc3R1cmIgSFdQDQphbGdvcml0 aG1zIHdoZW4gdGhlcmUgaXMgbm8gVERQIGxpbWl0YXRpb25zLiBJZiB3cml0aW5nIDAsIGNhdXNl cyB0aGlzDQpiZWhhdmlvciB0aGVuIHRoYXQgc2hvdWxkIGJlIHRoZSBkZWZhdWx0Lg0KDQpUaGFu a3MsDQpTcmluaXZhcw0KDQoNCg0KDQoNCj4gPiBUaGFua3MsDQo+ID4gU3Jpbml2YXMNCj4gPiAN Cj4gPiANCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEZyYW5jaXNjbyBKZXJleiA8Y3Vycm9qZXJlekBy aXNldXAubmV0Pg0KPiA+ID4gLS0tDQo+ID4gPiAgZHJpdmVycy9jcHVmcmVxL2ludGVsX3BzdGF0 ZS5jIHwgNzkNCj4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiA+ ICAxIGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiA+ IA0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvY3B1ZnJlcS9pbnRlbF9wc3RhdGUuYw0KPiA+ ID4gYi9kcml2ZXJzL2NwdWZyZXEvaW50ZWxfcHN0YXRlLmMNCj4gPiA+IGluZGV4IGNlY2FkZmVj OGJjMS4uYTAxZWVkNDBkODk3IDEwMDY0NA0KPiA+ID4gLS0tIGEvZHJpdmVycy9jcHVmcmVxL2lu dGVsX3BzdGF0ZS5jDQo+ID4gPiArKysgYi9kcml2ZXJzL2NwdWZyZXEvaW50ZWxfcHN0YXRlLmMN Cj4gPiA+IEBAIC0xOTA1LDYgKzE5MDUsMjAgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHN0YXRlX3Jl c2V0X3ZscChzdHJ1Y3QNCj4gPiA+IGNwdWRhdGEgKmNwdSkNCj4gPiA+ICAJdmxwLT5nYWluID0g bWF4KDEsIGRpdl9mcCgxMDAwLCB2bHBfcGFyYW1zLnNldHBvaW50XzBfcG1sKSk7DQo+ID4gPiAg CXZscC0+dGFyZ2V0LnBfYmFzZSA9IDA7DQo+ID4gPiAgCXZscC0+c3RhdHMubGFzdF9yZXNwb25z ZV9mcmVxdWVuY3lfaHogPSB2bHBfcGFyYW1zLmF2Z19oejsNCj4gPiA+ICsNCj4gPiA+ICsJaWYg KGh3cF9hY3RpdmUpIHsNCj4gPiA+ICsJCWNvbnN0IHVpbnQzMl90IHAwID0gbWF4KGNwdS0+cHN0 YXRlLm1pbl9wc3RhdGUsDQo+ID4gPiArCQkJCQljcHUtPm1pbl9wZXJmX3JhdGlvKTsNCj4gPiA+ ICsJCWNvbnN0IHVpbnQzMl90IHAxID0gbWF4X3QodWludDMyX3QsIHAwLCBjcHUtDQo+ID4gPiA+ IG1heF9wZXJmX3JhdGlvKTsNCj4gPiA+ICsJCWNvbnN0IHVpbnQ2NF90IGh3cF9yZXEgPSAoUkVB RF9PTkNFKGNwdS0NCj4gPiA+ID4gaHdwX3JlcV9jYWNoZWQpICYNCj4gPiA+ICsJCQkJCSAgfihI V1BfTUFYX1BFUkYofjBMKSB8DQo+ID4gPiArCQkJCQkgICAgSFdQX01JTl9QRVJGKH4wTCkgfA0K PiA+ID4gKwkJCQkJICAgIEhXUF9ERVNJUkVEX1BFUkYofjBMKSkpIHwNCj4gPiA+ICsJCQkJCSBI V1BfTUlOX1BFUkYocDApIHwNCj4gPiA+IEhXUF9NQVhfUEVSRihwMSk7DQo+ID4gPiArDQo+ID4g PiArCQl3cm1zcmxfb25fY3B1KGNwdS0+Y3B1LCBNU1JfSFdQX1JFUVVFU1QsIGh3cF9yZXEpOw0K PiA+ID4gKwkJY3B1LT5od3BfcmVxX2NhY2hlZCA9IGh3cF9yZXE7DQo+ID4gPiArCX0NCj4gPiA+ ICB9DQo+ID4gPiAgDQo+ID4gPiAgLyoqDQo+ID4gPiBAQCAtMjIyMiw2ICsyMjM2LDQ2IEBAIHN0 YXRpYyB2b2lkDQo+ID4gPiBpbnRlbF9wc3RhdGVfYWRqdXN0X3BzdGF0ZShzdHJ1Y3QNCj4gPiA+ IGNwdWRhdGEgKmNwdSkNCj4gPiA+ICAJCWZwX3RvaW50KGNwdS0+aW93YWl0X2Jvb3N0ICogMTAw KSk7DQo+ID4gPiAgfQ0KPiA+ID4gIA0KPiA+ID4gK3N0YXRpYyB2b2lkIGludGVsX3BzdGF0ZV9h ZGp1c3RfcHN0YXRlX3JhbmdlKHN0cnVjdCBjcHVkYXRhDQo+ID4gPiAqY3B1LA0KPiA+ID4gKwkJ CQkJICAgICBjb25zdCB1bnNpZ25lZCBpbnQNCj4gPiA+IHJhbmdlW10pDQo+ID4gPiArew0KPiA+ ID4gKwljb25zdCBpbnQgZnJvbSA9IGNwdS0+aHdwX3JlcV9jYWNoZWQ7DQo+ID4gPiArCXVuc2ln bmVkIGludCBwMCwgcDEsIHBfbWluLCBwX21heDsNCj4gPiA+ICsJc3RydWN0IHNhbXBsZSAqc2Ft cGxlOw0KPiA+ID4gKwl1aW50NjRfdCBod3BfcmVxOw0KPiA+ID4gKw0KPiA+ID4gKwl1cGRhdGVf dHVyYm9fc3RhdGUoKTsNCj4gPiA+ICsNCj4gPiA+ICsJcDAgPSBtYXgoY3B1LT5wc3RhdGUubWlu X3BzdGF0ZSwgY3B1LT5taW5fcGVyZl9yYXRpbyk7DQo+ID4gPiArCXAxID0gbWF4X3QodW5zaWdu ZWQgaW50LCBwMCwgY3B1LT5tYXhfcGVyZl9yYXRpbyk7DQo+ID4gPiArCXBfbWluID0gY2xhbXBf dCh1bnNpZ25lZCBpbnQsIHJhbmdlWzBdLCBwMCwgcDEpOw0KPiA+ID4gKwlwX21heCA9IGNsYW1w X3QodW5zaWduZWQgaW50LCByYW5nZVsxXSwgcDAsIHAxKTsNCj4gPiA+ICsNCj4gPiA+ICsJdHJh Y2VfY3B1X2ZyZXF1ZW5jeShwX21heCAqIGNwdS0+cHN0YXRlLnNjYWxpbmcsIGNwdS0+Y3B1KTsN Cj4gPiA+ICsNCj4gPiA+ICsJaHdwX3JlcSA9IChSRUFEX09OQ0UoY3B1LT5od3BfcmVxX2NhY2hl ZCkgJg0KPiA+ID4gKwkJICAgfihIV1BfTUFYX1BFUkYofjBMKSB8IEhXUF9NSU5fUEVSRih+MEwp IHwNCj4gPiA+ICsJCSAgICAgSFdQX0RFU0lSRURfUEVSRih+MEwpKSkgfA0KPiA+ID4gKwkJICBI V1BfTUlOX1BFUkYodmxwX3BhcmFtcy5kZWJ1ZyAmIDIgPyBwMCA6IHBfbWluKSB8DQo+ID4gPiAr CQkgIEhXUF9NQVhfUEVSRih2bHBfcGFyYW1zLmRlYnVnICYgNCA/IHAxIDogcF9tYXgpOw0KPiA+ ID4gKw0KPiA+ID4gKwlpZiAoaHdwX3JlcSAhPSBjcHUtPmh3cF9yZXFfY2FjaGVkKSB7DQo+ID4g PiArCQl3cm1zcmwoTVNSX0hXUF9SRVFVRVNULCBod3BfcmVxKTsNCj4gPiA+ICsJCWNwdS0+aHdw X3JlcV9jYWNoZWQgPSBod3BfcmVxOw0KPiA+ID4gKwl9DQo+ID4gPiArDQo+ID4gPiArCXNhbXBs ZSA9ICZjcHUtPnNhbXBsZTsNCj4gPiA+ICsJdHJhY2VfcHN0YXRlX3NhbXBsZShtdWxfZXh0X2Zw KDEwMCwgc2FtcGxlLT5jb3JlX2F2Z19wZXJmKSwNCj4gPiA+ICsJCQkgICAgZnBfdG9pbnQoc2Ft cGxlLT5idXN5X3NjYWxlZCksDQo+ID4gPiArCQkJICAgIGZyb20sDQo+ID4gPiArCQkJICAgIGh3 cF9yZXEsDQo+ID4gPiArCQkJICAgIHNhbXBsZS0+bXBlcmYsDQo+ID4gPiArCQkJICAgIHNhbXBs ZS0+YXBlcmYsDQo+ID4gPiArCQkJICAgIHNhbXBsZS0+dHNjLA0KPiA+ID4gKwkJCSAgICBnZXRf YXZnX2ZyZXF1ZW5jeShjcHUpLA0KPiA+ID4gKwkJCSAgICBmcF90b2ludChjcHUtPmlvd2FpdF9i b29zdCAqIDEwMCkpOw0KPiA+ID4gK30NCj4gPiA+ICsNCj4gPiA+ICBzdGF0aWMgdm9pZCBpbnRl bF9wc3RhdGVfdXBkYXRlX3V0aWwoc3RydWN0IHVwZGF0ZV91dGlsX2RhdGENCj4gPiA+ICpkYXRh LA0KPiA+ID4gdTY0IHRpbWUsDQo+ID4gPiAgCQkJCSAgICAgdW5zaWduZWQgaW50IGZsYWdzKQ0K PiA+ID4gIHsNCj4gPiA+IEBAIC0yMjYwLDYgKzIzMTQsMjIgQEAgc3RhdGljIHZvaWQNCj4gPiA+ IGludGVsX3BzdGF0ZV91cGRhdGVfdXRpbChzdHJ1Y3QNCj4gPiA+IHVwZGF0ZV91dGlsX2RhdGEg KmRhdGEsIHU2NCB0aW1lLA0KPiA+ID4gIAkJaW50ZWxfcHN0YXRlX2FkanVzdF9wc3RhdGUoY3B1 KTsNCj4gPiA+ICB9DQo+ID4gPiAgDQo+ID4gPiArLyoqDQo+ID4gPiArICogSW1wbGVtZW50YXRp b24gb2YgdGhlIGNwdWZyZXEgdXBkYXRlX3V0aWwgaG9vayBiYXNlZCBvbiB0aGUNCj4gPiA+IFZM UA0KPiA+ID4gKyAqIGNvbnRyb2xsZXIgKHNlZSBnZXRfdmxwX3RhcmdldF9yYW5nZSgpKS4NCj4g PiA+ICsgKi8NCj4gPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9wc3RhdGVfdXBkYXRlX3V0aWxfaHdw X3ZscChzdHJ1Y3QNCj4gPiA+IHVwZGF0ZV91dGlsX2RhdGENCj4gPiA+ICpkYXRhLA0KPiA+ID4g KwkJCQkJICAgICB1NjQgdGltZSwgdW5zaWduZWQgaW50DQo+ID4gPiBmbGFncykNCj4gPiA+ICt7 DQo+ID4gPiArCXN0cnVjdCBjcHVkYXRhICpjcHUgPSBjb250YWluZXJfb2YoZGF0YSwgc3RydWN0 IGNwdWRhdGEsDQo+ID4gPiB1cGRhdGVfdXRpbCk7DQo+ID4gPiArDQo+ID4gPiArCWlmICh1cGRh dGVfdmxwX3NhbXBsZShjcHUsIHRpbWUsIGZsYWdzKSkgew0KPiA+ID4gKwkJY29uc3Qgc3RydWN0 IHZscF90YXJnZXRfcmFuZ2UgKnRhcmdldCA9DQo+ID4gPiArCQkJZ2V0X3ZscF90YXJnZXRfcmFu Z2UoY3B1KTsNCj4gPiA+ICsJCWludGVsX3BzdGF0ZV9hZGp1c3RfcHN0YXRlX3JhbmdlKGNwdSwg dGFyZ2V0LT52YWx1ZSk7DQo+ID4gPiArCX0NCj4gPiA+ICt9DQo+ID4gPiArDQo+ID4gPiAgc3Rh dGljIHN0cnVjdCBwc3RhdGVfZnVuY3MgY29yZV9mdW5jcyA9IHsNCj4gPiA+ICAJLmdldF9tYXgg PSBjb3JlX2dldF9tYXhfcHN0YXRlLA0KPiA+ID4gIAkuZ2V0X21heF9waHlzaWNhbCA9IGNvcmVf Z2V0X21heF9wc3RhdGVfcGh5c2ljYWwsDQo+ID4gPiBAQCAtMjM4OSw2ICsyNDU5LDkgQEAgc3Rh dGljIGludCBpbnRlbF9wc3RhdGVfaW5pdF9jcHUodW5zaWduZWQNCj4gPiA+IGludA0KPiA+ID4g Y3B1bnVtKQ0KPiA+ID4gIA0KPiA+ID4gIAlpbnRlbF9wc3RhdGVfZ2V0X2NwdV9wc3RhdGVzKGNw dSk7DQo+ID4gPiAgDQo+ID4gPiArCWlmIChwc3RhdGVfZnVuY3MudXBkYXRlX3V0aWwgPT0NCj4g PiA+IGludGVsX3BzdGF0ZV91cGRhdGVfdXRpbF9od3BfdmxwKQ0KPiA+ID4gKwkJaW50ZWxfcHN0 YXRlX3Jlc2V0X3ZscChjcHUpOw0KPiA+ID4gKw0KPiA+ID4gIAlwcl9kZWJ1ZygiY29udHJvbGxp bmc6IGNwdSAlZFxuIiwgY3B1bnVtKTsNCj4gPiA+ICANCj4gPiA+ICAJcmV0dXJuIDA7DQo+ID4g PiBAQCAtMjM5OCw3ICsyNDcxLDggQEAgc3RhdGljIHZvaWQNCj4gPiA+IGludGVsX3BzdGF0ZV9z ZXRfdXBkYXRlX3V0aWxfaG9vayh1bnNpZ25lZCBpbnQgY3B1X251bSkNCj4gPiA+ICB7DQo+ID4g PiAgCXN0cnVjdCBjcHVkYXRhICpjcHUgPSBhbGxfY3B1X2RhdGFbY3B1X251bV07DQo+ID4gPiAg DQo+ID4gPiAtCWlmIChod3BfYWN0aXZlICYmICFod3BfYm9vc3QpDQo+ID4gPiArCWlmIChod3Bf YWN0aXZlICYmICFod3BfYm9vc3QgJiYNCj4gPiA+ICsJICAgIHBzdGF0ZV9mdW5jcy51cGRhdGVf dXRpbCAhPQ0KPiA+ID4gaW50ZWxfcHN0YXRlX3VwZGF0ZV91dGlsX2h3cF92bHApDQo+ID4gPiAg CQlyZXR1cm47DQo+ID4gPiAgDQo+ID4gPiAgCWlmIChjcHUtPnVwZGF0ZV91dGlsX3NldCkNCj4g PiA+IEBAIC0yNTI2LDcgKzI2MDAsOCBAQCBzdGF0aWMgaW50IGludGVsX3BzdGF0ZV9zZXRfcG9s aWN5KHN0cnVjdA0KPiA+ID4gY3B1ZnJlcV9wb2xpY3kgKnBvbGljeSkNCj4gPiA+ICAJCSAqIHdh cyB0dXJuZWQgb2ZmLCBpbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjbGVhciB0aGUNCj4gPiA+ICAJ CSAqIHVwZGF0ZSB1dGlsIGhvb2suDQo+ID4gPiAgCQkgKi8NCj4gPiA+IC0JCWlmICghaHdwX2Jv b3N0KQ0KPiA+ID4gKwkJaWYgKCFod3BfYm9vc3QgJiYgcHN0YXRlX2Z1bmNzLnVwZGF0ZV91dGls ICE9DQo+ID4gPiArCQkJCSAgaW50ZWxfcHN0YXRlX3VwZGF0ZV91dGlsX2h3cF92bHApDQo+ID4g PiAgCQkJaW50ZWxfcHN0YXRlX2NsZWFyX3VwZGF0ZV91dGlsX2hvb2socG9saWN5LQ0KPiA+ID4g PiBjcHUpOw0KPiA+ID4gIAkJaW50ZWxfcHN0YXRlX2h3cF9zZXQocG9saWN5LT5jcHUpOw0KPiA+ ID4gIAl9DQo=