From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH 3/4] drm/amd/display: In VRR mode, do DRM core vblank handling at end of vblank. Date: Tue, 19 Mar 2019 13:32:00 +0000 Message-ID: <82efca66-1100-633f-2285-a9849d1bfc9e@amd.com> References: <20190318171952.24302-1-mario.kleiner.de@gmail.com> <20190318171952.24302-4-mario.kleiner.de@gmail.com> <8ef78169-1893-0aee-9cb1-cce4054ebbcc@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <8ef78169-1893-0aee-9cb1-cce4054ebbcc-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <586D8A8464A62A478225288EDD96891D-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Mario Kleiner , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Wentland, Harry" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org T24gMy8xOS8xOSA5OjIzIEFNLCBLYXpsYXVza2FzLCBOaWNob2xhcyB3cm90ZToNCj4gT24gMy8x OC8xOSAxOjE5IFBNLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPj4gSW4gVlJSIG1vZGUsIHByb3Bl ciB2YmxhbmsvcGFnZWZsaXAgdGltZXN0YW1wcyBjYW4gb25seSBiZSBjb21wdXRlZA0KPj4gYWZ0 ZXIgdGhlIGRpc3BsYXkgc2Nhbm91dCBwb3NpdGlvbiBoYXMgbGVmdCBmcm9udC1wb3JjaC4gVGhl cmVmb3JlDQo+PiBkZWxheSBjYWxscyB0byBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCksIGFuZCB0 aGVyZWJ5IGNhbGxzIHRvDQo+PiBkcm1fdXBkYXRlX3ZibGFua19jb3VudCgpIGFuZCBwYWdlZmxp cCBldmVudCBkZWxpdmVyeSwgdG8gYWZ0ZXIgdGhlDQo+PiBlbmQgb2YgZnJvbnQtcG9yY2ggd2hl biBpbiBWUlIgbW9kZS4NCj4+DQo+PiBXZSBhZGQgYSBuZXcgdnVwZGF0ZSBpcnEsIHdoaWNoIHRy aWdnZXJzIGF0IHRoZSBlbmQgb2YgdGhlIHZ1cGRhdGUNCj4+IGludGVydmFsLCBpZS4gYXQgdGhl IGVuZCBvZiB2YmxhbmssIGFuZCBjYWxscyB0aGUgY29yZSB2YmxhbmsgaGFuZGxlcg0KPj4gZnVu Y3Rpb24uIFRoZSBuZXcgaXJxIGhhbmRsZXIgaXMgbm90IGV4ZWN1dGVkIGluIHN0YW5kYXJkIG5v bi1WUlINCj4+IG1vZGUsIHNvIHZibGFuayBoYW5kbGluZyBmb3IgZml4ZWQgcmVmcmVzaCByYXRl IG1vZGUgaXMgaWRlbnRpY2FsDQo+PiB0byB0aGUgcGFzdCBpbXBsZW1lbnRhdGlvbi4NCj4+DQo+ PiBTaWduZWQtb2ZmLWJ5OiBNYXJpbyBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNv bT4NCg0KTG9va3MgSSBsb3N0IHNvbWUgb2YgbXkgY29tbWVudHMgSSB3YW50ZWQgdG8gc2VuZCBp biBteSBsYXN0IGVtYWlsLiBKdXN0IA0KYSBmZXcgbml0cGlja3MgKGluY2x1ZGluZyBzb21lIHRo aW5ncyBQYXVsIG1lbnRpb25lZCkuDQoNCkFsc28gbWVhbnQgdG8gQ0MgSGFycnkgb24gdGhpcyBh cyB3ZWxsLg0KDQo+PiAtLS0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oICAgICAgICAgICAgICAgIHwgICAxICsNCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgIHwgMTI5ICsrKysrKysrKysrKysrKysrKysrLQ0K Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCAg fCAgIDkgKysNCj4+ICAgIC4uLi9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVf ZG1faXJxLmMgIHwgIDIyICsrKysNCj4+ICAgIC4uLi9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEw L2lycV9zZXJ2aWNlX2RjZTExMC5jIHwgICA3ICstDQo+PiAgICAuLi4vYW1kL2Rpc3BsYXkvZGMv aXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYyB8ICAgNyArLQ0KPj4gICAgLi4uL2FtZC9k aXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jICAgfCAgIDYgKy0NCj4+ICAg IC4uLi9hbWQvZGlzcGxheS9kYy9pcnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYyAgIHwgIDQw ICsrKysrLS0NCj4+ICAgIDggZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oDQo+PiBpbmRl eCBmODg3NjFhLi42NDE2N2RkIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dS5oDQo+PiBAQCAtODI3LDYgKzgyNyw3IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNlIHsNCj4+ICAg IAkvKiBGb3IgcHJlLURDRTExLiBEQ0UxMSBhbmQgbGF0ZXIgYXJlIGluICJzdHJ1Y3QgYW1kZ3B1 X2RldmljZS0+ZG0iICovDQo+PiAgICAJc3RydWN0IHdvcmtfc3RydWN0CQlob3RwbHVnX3dvcms7 DQo+PiAgICAJc3RydWN0IGFtZGdwdV9pcnFfc3JjCQljcnRjX2lycTsNCj4+ICsJc3RydWN0IGFt ZGdwdV9pcnFfc3JjCQl2dXBkYXRlX2lycTsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJ CXBhZ2VmbGlwX2lycTsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJCWhwZF9pcnE7DQo+ PiAgICANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG0uYw0KPj4gaW5kZXggODVlNGY4Ny4uNTU1ZDllOWYgMTAwNjQ0DQo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jDQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jDQo+PiBA QCAtMzE1LDYgKzMxNSwzMiBAQCBzdGF0aWMgdm9pZCBkbV9wZmxpcF9oaWdoX2lycSh2b2lkICpp bnRlcnJ1cHRfcGFyYW1zKQ0KPj4gICAgCWRybV9jcnRjX3ZibGFua19wdXQoJmFtZGdwdV9jcnRj LT5iYXNlKTsNCj4+ICAgIH0NCj4+ICAgIA0KPj4gK3N0YXRpYyB2b2lkIGRtX3Z1cGRhdGVfaGln aF9pcnEodm9pZCAqaW50ZXJydXB0X3BhcmFtcykNCj4+ICt7DQo+PiArCXN0cnVjdCBjb21tb25f aXJxX3BhcmFtcyAqaXJxX3BhcmFtcyA9IGludGVycnVwdF9wYXJhbXM7DQo+PiArCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gaXJxX3BhcmFtcy0+YWRldjsNCj4+ICsJc3RydWN0IGFtZGdw dV9jcnRjICphY3J0YzsNCj4+ICsJc3RydWN0IGRtX2NydGNfc3RhdGUgKmFjcnRjX3N0YXRlOw0K Pj4gKw0KPj4gKwlhY3J0YyA9IGdldF9jcnRjX2J5X290Z19pbnN0KGFkZXYsIGlycV9wYXJhbXMt PmlycV9zcmMgLSBJUlFfVFlQRV9WVVBEQVRFKTsNCj4+ICsNCj4+ICsJaWYgKGFjcnRjKSB7DQo+ PiArCQlhY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoYWNydGMtPmJhc2Uuc3RhdGUpOw0K Pj4gKw0KPj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIs IGFjcnRjLT5jcnRjX2lkLA0KPj4gKwkJCQkgYW1kZ3B1X2RtX3Zycl9hY3RpdmUoYWNydGNfc3Rh dGUpKTsNCj4+ICsNCj4+ICsJCS8qIENvcmUgdmJsYW5rIGhhbmRsaW5nIGlzIGRvbmUgaGVyZSBh ZnRlciBlbmQgb2YgZnJvbnQtcG9yY2ggaW4NCj4+ICsJCSAqIHZyciBtb2RlLCBhcyB2Ymxhbmsg dGltZXN0YW1waW5nIHdpbGwgZ2l2ZSB2YWxpZCByZXN1bHRzDQo+PiArCQkgKiB3aGlsZSBub3cg ZG9uZSBhZnRlciBmcm9udC1wb3JjaC4gVGhpcyB3aWxsIGFsc28gZGVsaXZlcg0KPj4gKwkJICog cGFnZS1mbGlwIGNvbXBsZXRpb24gZXZlbnRzIHRoYXQgaGF2ZSBiZWVuIHF1ZXVlZCB0byB1cw0K Pj4gKwkJICogaWYgYSBwYWdlZmxpcCBoYXBwZW5lZCBpbnNpZGUgZnJvbnQtcG9yY2guDQo+PiAr CQkgKi8NCj4+ICsJCWlmIChhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+PiAr CQkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmYWNydGMtPmJhc2UpDQo+IEkgd2FzIHRoaW5raW5n IHRoYXQgMyBhbmQgNCBtaWdodCBoYXZlIHRvIGJlIG1lcmdlZCwgYnV0IFZSUiBwZmxpcA0KPiB0 aW1lc3RhbXBpbmcgc2VlbXMgdG8gYmUgdGhlIHNhbWUgYXMgaXQgd2FzIGJlZm9yZSAob2ZmIGJ5 IGEgbGluZSBvcg0KPiB0d28pIHNpbmNlIGl0J3Mgbm90IGhhbmRsZWQgaGVyZSB5ZXQuIFRoaXMg c2VlbXMgdG8gZml4IHZibGFuayBldmVudHMNCj4gYW5kIHRpbWVzdGFtcGluZyBhdCBsZWFzdC4N Cj4gDQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiAgICBzdGF0aWMgdm9pZCBkbV9jcnRjX2hpZ2hf aXJxKHZvaWQgKmludGVycnVwdF9wYXJhbXMpDQo+PiAgICB7DQo+PiAgICAJc3RydWN0IGNvbW1v bl9pcnFfcGFyYW1zICppcnFfcGFyYW1zID0gaW50ZXJydXB0X3BhcmFtczsNCj4+IEBAIC0zMjUs MTEgKzM1MSwyNCBAQCBzdGF0aWMgdm9pZCBkbV9jcnRjX2hpZ2hfaXJxKHZvaWQgKmludGVycnVw dF9wYXJhbXMpDQo+PiAgICAJYWNydGMgPSBnZXRfY3J0Y19ieV9vdGdfaW5zdChhZGV2LCBpcnFf cGFyYW1zLT5pcnFfc3JjIC0gSVJRX1RZUEVfVkJMQU5LKTsNCj4+ICAgIA0KPj4gICAgCWlmIChh Y3J0Yykgew0KPj4gLQkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmYWNydGMtPmJhc2UpOw0KPj4g LQkJYW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFjcnRjLT5iYXNlKTsNCj4+IC0NCj4+ ICAgIAkJYWNydGNfc3RhdGUgPSB0b19kbV9jcnRjX3N0YXRlKGFjcnRjLT5iYXNlLnN0YXRlKTsN Cj4+ICAgIA0KPj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRc biIsIGFjcnRjLT5jcnRjX2lkLA0KPj4gKwkJCQkgYW1kZ3B1X2RtX3Zycl9hY3RpdmUoYWNydGNf c3RhdGUpKTsNCj4+ICsNCj4+ICsJCS8qIENvcmUgdmJsYW5rIGhhbmRsaW5nIGF0IHN0YXJ0IG9m IGZyb250LXBvcmNoIGlzIG9ubHkgcG9zc2libGUNCj4+ICsJCSAqIGluIG5vbi12cnIgbW9kZSwg YXMgb25seSB0aGVyZSB2YmxhbmsgdGltZXN0YW1waW5nIHdpbGwgZ2l2ZQ0KPj4gKwkJICogdmFs aWQgcmVzdWx0cyB3aGlsZSBkb25lIGluIGZyb250LXBvcmNoLiBPdGhlcndpc2UgZGVmZXIgaXQN Cj4+ICsJCSAqIHRvIGRtX3Z1cGRhdGVfaGlnaF9pcnEgYWZ0ZXIgZW5kIG9mIGZyb250LXBvcmNo Lg0KPj4gKwkJICovDQo+PiArCQlpZiAoIWFtZGdwdV9kbV92cnJfYWN0aXZlKGFjcnRjX3N0YXRl KSkNCj4+ICsJCQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCZhY3J0Yy0+YmFzZSk7DQo+PiArDQo+ PiArCQkvKiBGb2xsb3dpbmcgc3R1ZmYgbXVzdCBoYXBwZW4gYXQgc3RhcnQgb2YgdmJsYW5rLCBm b3IgY3JjDQo+PiArCQkgKiBjb21wdXRhdGlvbiBhbmQgYmVsb3ctdGhlLXJhbmdlIGJ0ciBzdXBw b3J0IGluIHZyciBtb2RlLg0KPj4gKwkJICovDQo+PiArCQlhbWRncHVfZG1fY3J0Y19oYW5kbGVf Y3JjX2lycSgmYWNydGMtPmJhc2UpOw0KPj4gKw0KPj4gICAgCQlpZiAoYWNydGNfc3RhdGUtPnN0 cmVhbSAmJg0KPj4gICAgCQkgICAgYWNydGNfc3RhdGUtPnZycl9wYXJhbXMuc3VwcG9ydGVkICYm DQo+PiAgICAJCSAgICBhY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfY29uZmlnLnN0YXRlID09IFZSUl9T VEFURV9BQ1RJVkVfVkFSSUFCTEUpIHsNCj4+IEBAIC0xNDQ3LDYgKzE0ODYsMjcgQEAgc3RhdGlj IGludCBkY2UxMTBfcmVnaXN0ZXJfaXJxX2hhbmRsZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQ0KPj4gICAgCQkJCWRtX2NydGNfaGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7DQo+PiAgICAJ fQ0KPj4gICAgDQo+PiArCS8qIFVzZSBWVVBEQVRFIGludGVycnVwdCAqLw0KPj4gKwlmb3IgKGkg PSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0QxX1ZfVVBEQVRFX0lOVDsgaSA8PSBWSVNMQU5EUzMwX0lW X1NSQ0lEX0Q2X1ZfVVBEQVRFX0lOVDsgaSs9Mikgew0KPj4gKwkJciA9IGFtZGdwdV9pcnFfYWRk X2lkKGFkZXYsIGNsaWVudF9pZCwgaSwgJmFkZXYtPnZ1cGRhdGVfaXJxKTsNCj4+ICsJCWlmIChy KSB7DQo+PiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWRkIHZ1cGRhdGUgaXJxIGlkIVxuIik7 DQo+PiArCQkJcmV0dXJuIHI7DQo+PiArCQl9DQo+PiArDQo+PiArCQlpbnRfcGFyYW1zLmludF9j b250ZXh0ID0gSU5URVJSVVBUX0hJR0hfSVJRX0NPTlRFWFQ7DQo+PiArCQlpbnRfcGFyYW1zLmly cV9zb3VyY2UgPQ0KPj4gKwkJCWRjX2ludGVycnVwdF90b19pcnFfc291cmNlKGRjLCBpLCAwKTsN Cj4+ICsNCj4+ICsJCWNfaXJxX3BhcmFtcyA9ICZhZGV2LT5kbS52dXBkYXRlX3BhcmFtc1tpbnRf cGFyYW1zLmlycV9zb3VyY2UgLSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxXTsNCj4+ICsNCj4+ICsJ CWNfaXJxX3BhcmFtcy0+YWRldiA9IGFkZXY7DQo+PiArCQljX2lycV9wYXJhbXMtPmlycV9zcmMg PSBpbnRfcGFyYW1zLmlycV9zb3VyY2U7DQo+PiArDQo+PiArCQlhbWRncHVfZG1faXJxX3JlZ2lz dGVyX2ludGVycnVwdChhZGV2LCAmaW50X3BhcmFtcywNCj4+ICsJCQkJZG1fdnVwZGF0ZV9oaWdo X2lycSwgY19pcnFfcGFyYW1zKTsNCj4+ICsJfQ0KPj4gKw0KPj4gICAgCS8qIFVzZSBHUlBIX1BG TElQIGludGVycnVwdCAqLw0KPj4gICAgCWZvciAoaSA9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDFf R1JQSF9QRkxJUDsNCj4+ICAgIAkJCWkgPD0gVklTTEFORFMzMF9JVl9TUkNJRF9ENl9HUlBIX1BG TElQOyBpICs9IDIpIHsNCj4+IEBAIC0xNTMyLDYgKzE1OTIsMzQgQEAgc3RhdGljIGludCBkY24x MF9yZWdpc3Rlcl9pcnFfaGFuZGxlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAg ICAJCQkJZG1fY3J0Y19oaWdoX2lycSwgY19pcnFfcGFyYW1zKTsNCj4+ICAgIAl9DQo+PiAgICAN Cj4+ICsJLyogVXNlIFZVUERBVEVfTk9fTE9DSyBpbnRlcnJ1cHQgb24gRENOLCB3aGljaCBzZWVt cyB0byBjb3JyZXNwb25kIHRvDQo+PiArCSAqIHRoZSByZWd1bGFyIFZVUERBVEUgaW50ZXJydXB0 IG9uIERDRS4gV2Ugd2FudCBEQ19JUlFfU09VUkNFX1ZVUERBVEV4DQo+PiArCSAqIHRvIHRyaWdn ZXIgYXQgZW5kIG9mIGVhY2ggdmJsYW5rLCByZWdhcmRsZXNzIG9mIHN0YXRlIG9mIHRoZSBsb2Nr LA0KPj4gKwkgKiBtYXRjaGluZyBEQ0UgYmVoYXZpb3VyLg0KPj4gKwkgKi8NCj4+ICsJZm9yIChp ID0gRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOw0K Pj4gKwkgICAgIGkgPD0gRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xPQ0tf SU5URVJSVVBUICsgYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjIC0gMTsNCj4+ICsJICAgICBpKysp IHsNCj4+ICsJCXIgPSBhbWRncHVfaXJxX2FkZF9pZChhZGV2LCBTT0MxNV9JSF9DTElFTlRJRF9E Q0UsIGksICZhZGV2LT52dXBkYXRlX2lycSk7DQo+PiArDQo+PiArCQlpZiAocikgew0KPj4gKwkJ CURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCB2dXBkYXRlIGlycSBpZCFcbiIpOw0KPj4gKwkJCXJl dHVybiByOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJaW50X3BhcmFtcy5pbnRfY29udGV4dCA9IElO VEVSUlVQVF9ISUdIX0lSUV9DT05URVhUOw0KPj4gKwkJaW50X3BhcmFtcy5pcnFfc291cmNlID0N Cj4+ICsJCQlkY19pbnRlcnJ1cHRfdG9faXJxX3NvdXJjZShkYywgaSwgMCk7DQo+PiArDQo+PiAr CQljX2lycV9wYXJhbXMgPSAmYWRldi0+ZG0udnVwZGF0ZV9wYXJhbXNbaW50X3BhcmFtcy5pcnFf c291cmNlIC0gRENfSVJRX1NPVVJDRV9WVVBEQVRFMV07DQo+PiArDQo+PiArCQljX2lycV9wYXJh bXMtPmFkZXYgPSBhZGV2Ow0KPj4gKwkJY19pcnFfcGFyYW1zLT5pcnFfc3JjID0gaW50X3BhcmFt cy5pcnFfc291cmNlOw0KPj4gKw0KPj4gKwkJYW1kZ3B1X2RtX2lycV9yZWdpc3Rlcl9pbnRlcnJ1 cHQoYWRldiwgJmludF9wYXJhbXMsDQo+PiArCQkJCWRtX3Z1cGRhdGVfaGlnaF9pcnEsIGNfaXJx X3BhcmFtcyk7DQo+PiArCX0NCj4+ICsNCj4+ICAgIAkvKiBVc2UgR1JQSF9QRkxJUCBpbnRlcnJ1 cHQgKi8NCj4+ICAgIAlmb3IgKGkgPSBEQ05fMV8wX19TUkNJRF9fSFVCUDBfRkxJUF9JTlRFUlJV UFQ7DQo+PiAgICAJCQlpIDw9IERDTl8xXzBfX1NSQ0lEX19IVUJQMF9GTElQX0lOVEVSUlVQVCAr IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YyAtIDE7DQo+PiBAQCAtMzIyNiwxMiArMzMxNCw0MiBA QCBkbV9jcnRjX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+PiAgICAJ cmV0dXJuICZzdGF0ZS0+YmFzZTsNCj4+ICAgIH0NCj4+ICAgIA0KPj4gK3N0YXRpYyBpbmxpbmUg aW50IGRtX3NldF92dXBkYXRlX2lycShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxl KQ0KPj4gK3sNCj4+ICsJZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7DQo+PiArCXN0cnVj dCBhbWRncHVfY3J0YyAqYWNydGMgPSB0b19hbWRncHVfY3J0YyhjcnRjKTsNCj4+ICsJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPj4gKwlpbnQg cmM7DQo+PiArDQo+PiArCWlycV9zb3VyY2UgPSBJUlFfVFlQRV9WVVBEQVRFICsgYWNydGMtPm90 Z19pbnN0Ow0KPj4gKw0KPj4gKwlyYyA9IGRjX2ludGVycnVwdF9zZXQoYWRldi0+ZG0uZGMsIGly cV9zb3VyY2UsIGVuYWJsZSkgPyAwIDogLUVCVVNZOw0KPj4gKw0KPj4gKwlEUk1fREVCVUdfRFJJ VkVSKCIlczogY3J0YyAlZCAtIHZ1cGRhdGUgaXJxICVzYWJsaW5nOiByPSVkXG4iLA0KPj4gKwkJ CSBfX2Z1bmNfXywgYWNydGMtPmNydGNfaWQsIGVuYWJsZSA/ICJlbiIgOiAiZGlzIiwgcmMpOw0K DQpUaGlzIGV4dHJhIF9fZnVuY19fIGlzIHJlZHVuZGFudCBoZXJlLg0KDQo+PiArCXJldHVybiBy YzsNCj4+ICt9DQo+PiAgICANCj4+ICAgIHN0YXRpYyBpbmxpbmUgaW50IGRtX3NldF92Ymxhbmso c3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIGVuYWJsZSkNCj4+ICAgIHsNCj4+ICAgIAllbnVt IGRjX2lycV9zb3VyY2UgaXJxX3NvdXJjZTsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFj cnRjID0gdG9fYW1kZ3B1X2NydGMoY3J0Yyk7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPj4gKwlzdHJ1Y3QgZG1fY3J0Y19zdGF0 ZSAqYWNydGNfc3RhdGUgPSB0b19kbV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsNCj4+ICsJaW50 IHJjID0gMDsNCj4+ICsNCj4+ICsJaWYgKGVuYWJsZSkgew0KPj4gKwkJLyogdmJsYW5rIGlycSBv biAtPiBPbmx5IG5lZWQgdnVwZGF0ZSBpcnEgaW4gdnJyIG1vZGUgKi8NCj4+ICsJCWlmIChhbWRn cHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+PiArCQkJcmMgPSBkbV9zZXRfdnVwZGF0 ZV9pcnEoY3J0YywgdHJ1ZSk7DQo+PiArCX0NCj4+ICsJZWxzZSB7DQo+IA0KPiBzaG91bGQgYmUg fSBlbHNlIHsNCj4gDQo+PiArCQkvKiB2YmxhbmsgaXJxIG9mZiAtPiB2dXBkYXRlIGlycSBvZmYg Ki8NCj4+ICsJCXJjID0gZG1fc2V0X3Z1cGRhdGVfaXJxKGNydGMsIGZhbHNlKTsNCj4+ICsJfQ0K Pj4gKw0KPj4gKwlpZiAocmMpDQo+PiArCQlyZXR1cm4gcmM7DQo+PiAgICANCj4+ICAgIAlpcnFf c291cmNlID0gSVJRX1RZUEVfVkJMQU5LICsgYWNydGMtPm90Z19pbnN0Ow0KPj4gICAgCXJldHVy biBkY19pbnRlcnJ1cHRfc2V0KGFkZXYtPmRtLmRjLCBpcnFfc291cmNlLCBlbmFibGUpID8gMCA6 IC1FQlVTWTsNCj4+IEBAIC00NzQxLDcgKzQ4NTksMTEgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2Rt X2hhbmRsZV92cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLA0K Pj4gICAgCQkgKiBXaGlsZSBWUlIgaXMgYWN0aXZlLCB3ZSBtdXN0IG5vdCBkaXNhYmxlIHZibGFu ayBpcnEsIGFzIGENCj4+ICAgIAkJICogcmVlbmFibGUgYWZ0ZXIgZGlzYWJsZSB3b3VsZCBjb21w dXRlIGJvZ3VzIHZibGFuay9wZmxpcA0KPj4gICAgCQkgKiB0aW1lc3RhbXBzIGlmIGl0IGxpa2Vs eSBoYXBwZW5lZCBpbnNpZGUgZGlzcGxheSBmcm9udC1wb3JjaC4NCj4+ICsJCSAqDQo+PiArCQkg KiBXZSBhbHNvIG5lZWQgdnVwZGF0ZSBpcnEgZm9yIHRoZSBhY3R1YWwgY29yZSB2YmxhbmsgaGFu ZGxpbmcNCj4+ICsJCSAqIGF0IGVuZCBvZiB2YmxhbmsuDQo+PiAgICAJCSAqLw0KPj4gKwkJZG1f c2V0X3Z1cGRhdGVfaXJxKG5ld19zdGF0ZS0+YmFzZS5jcnRjLCB0cnVlKTsNCj4+ICAgIAkJZHJt X2NydGNfdmJsYW5rX2dldChuZXdfc3RhdGUtPmJhc2UuY3J0Yyk7DQo+PiAgICAJCURSTV9ERUJV R19EUklWRVIoIiVzOiBjcnRjPSV1IFZSUiBvZmYtPm9uOiBHZXQgdmJsYW5rIHJlZlxuIiwNCj4+ ICAgIAkJCQkgX19mdW5jX18sIG5ld19zdGF0ZS0+YmFzZS5jcnRjLT5iYXNlLmlkKTsNCj4+IEBA IC00NzUwLDYgKzQ4NzIsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZG1faGFuZGxlX3Zycl90cmFu c2l0aW9uKHN0cnVjdCBkbV9jcnRjX3N0YXRlICpvbGRfc3RhdGUsDQo+PiAgICAJCS8qIFRyYW5z aXRpb24gVlJSIGFjdGl2ZSAtPiBpbmFjdGl2ZToNCj4+ICAgIAkJICogQWxsb3cgdmJsYW5rIGly cSBkaXNhYmxlIGFnYWluIGZvciBmaXhlZCByZWZyZXNoIHJhdGUuDQo+PiAgICAJCSAqLw0KPj4g KwkJZG1fc2V0X3Z1cGRhdGVfaXJxKG5ld19zdGF0ZS0+YmFzZS5jcnRjLCBmYWxzZSk7DQo+PiAg ICAJCWRybV9jcnRjX3ZibGFua19wdXQobmV3X3N0YXRlLT5iYXNlLmNydGMpOw0KPj4gICAgCQlE Uk1fREVCVUdfRFJJVkVSKCIlczogY3J0Yz0ldSBWUlIgb24tPm9mZjogRHJvcCB2YmxhbmsgcmVm XG4iLA0KPj4gICAgCQkJCSBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQp Ow0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0v YW1kZ3B1X2RtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5oDQo+PiBpbmRleCBmNzQxZWEzLi4wYjM1Zjg0IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaA0KPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaA0KPj4gQEAgLTE4 Miw2ICsxODIsMTUgQEAgc3RydWN0IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgew0KPj4gICAgCXN0 cnVjdCBjb21tb25faXJxX3BhcmFtcw0KPj4gICAgCXZibGFua19wYXJhbXNbRENfSVJRX1NPVVJD RV9WQkxBTks2IC0gRENfSVJRX1NPVVJDRV9WQkxBTksxICsgMV07DQo+PiAgICANCj4+ICsJLyoq DQo+PiArCSAqIEB2dXBkYXRlX3BhcmFtczoNCj4+ICsJICoNCj4+ICsJICogVmVydGljYWwgdXBk YXRlIElSUSBwYXJhbWV0ZXJzLCBwYXNzZWQgdG8gcmVnaXN0ZXJlZCBoYW5kbGVycyB3aGVuDQo+ PiArCSAqIHRyaWdnZXJlZC4NCj4+ICsJICovDQo+PiArCXN0cnVjdCBjb21tb25faXJxX3BhcmFt cw0KPj4gKwl2dXBkYXRlX3BhcmFtc1tEQ19JUlFfU09VUkNFX1ZVUERBVEU2IC0gRENfSVJRX1NP VVJDRV9WVVBEQVRFMSArIDFdOw0KPj4gKw0KPj4gICAgCXNwaW5sb2NrX3QgaXJxX2hhbmRsZXJf bGlzdF90YWJsZV9sb2NrOw0KPj4gICAgDQo+PiAgICAJc3RydWN0IGJhY2tsaWdodF9kZXZpY2Ug KmJhY2tsaWdodF9kZXY7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPj4gaW5kZXggY2QxMGY3Ny4uZmVlNzgzNyAx MDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1k Z3B1X2RtX2lycS5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1 X2RtL2FtZGdwdV9kbV9pcnEuYw0KPj4gQEAgLTY3NCwxMSArNjc0LDMwIEBAIHN0YXRpYyBpbnQg YW1kZ3B1X2RtX3NldF9jcnRjX2lycV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwN Cj4+ICAgIAkJX19mdW5jX18pOw0KPj4gICAgfQ0KPj4gICAgDQo+PiArc3RhdGljIGludCBhbWRn cHVfZG1fc2V0X3Z1cGRhdGVfaXJxX3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0K Pj4gKwkJCQkJICAgc3RydWN0IGFtZGdwdV9pcnFfc3JjICpzb3VyY2UsDQo+PiArCQkJCQkgICB1 bnNpZ25lZCBjcnRjX2lkLA0KPiANCj4gc2hvdWxkIGJlIHVuc2lnbmVkIGludCBjcnRjX2lkDQo+ IA0KPj4gKwkJCQkJICAgZW51bSBhbWRncHVfaW50ZXJydXB0X3N0YXRlIHN0YXRlKQ0KPj4gK3sN Cj4+ICsJcmV0dXJuIGRtX2lycV9zdGF0ZSgNCj4+ICsJCWFkZXYsDQo+PiArCQlzb3VyY2UsDQo+ PiArCQljcnRjX2lkLA0KPj4gKwkJc3RhdGUsDQo+PiArCQlJUlFfVFlQRV9WVVBEQVRFLA0KPj4g KwkJX19mdW5jX18pOw0KPj4gK30NCj4+ICsNCj4+ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1k Z3B1X2lycV9zcmNfZnVuY3MgZG1fY3J0Y19pcnFfZnVuY3MgPSB7DQo+PiAgICAJLnNldCA9IGFt ZGdwdV9kbV9zZXRfY3J0Y19pcnFfc3RhdGUsDQo+PiAgICAJLnByb2Nlc3MgPSBhbWRncHVfZG1f aXJxX2hhbmRsZXIsDQo+PiAgICB9Ow0KPj4gICAgDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBh bWRncHVfaXJxX3NyY19mdW5jcyBkbV92dXBkYXRlX2lycV9mdW5jcyA9IHsNCj4+ICsJLnNldCA9 IGFtZGdwdV9kbV9zZXRfdnVwZGF0ZV9pcnFfc3RhdGUsDQo+PiArCS5wcm9jZXNzID0gYW1kZ3B1 X2RtX2lycV9oYW5kbGVyLA0KPj4gK307DQo+PiArDQo+PiAgICBzdGF0aWMgY29uc3Qgc3RydWN0 IGFtZGdwdV9pcnFfc3JjX2Z1bmNzIGRtX3BhZ2VmbGlwX2lycV9mdW5jcyA9IHsNCj4+ICAgIAku c2V0ID0gYW1kZ3B1X2RtX3NldF9wZmxpcF9pcnFfc3RhdGUsDQo+PiAgICAJLnByb2Nlc3MgPSBh bWRncHVfZG1faXJxX2hhbmRsZXIsDQo+PiBAQCAtNjk1LDYgKzcxNCw5IEBAIHZvaWQgYW1kZ3B1 X2RtX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAgICAJYWRl di0+Y3J0Y19pcnEubnVtX3R5cGVzID0gYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjOw0KPj4gICAg CWFkZXYtPmNydGNfaXJxLmZ1bmNzID0gJmRtX2NydGNfaXJxX2Z1bmNzOw0KPj4gICAgDQo+PiAr CWFkZXYtPnZ1cGRhdGVfaXJxLm51bV90eXBlcyA9IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YzsN Cj4+ICsJYWRldi0+dnVwZGF0ZV9pcnEuZnVuY3MgPSAmZG1fdnVwZGF0ZV9pcnFfZnVuY3M7DQo+ PiArDQo+PiAgICAJYWRldi0+cGFnZWZsaXBfaXJxLm51bV90eXBlcyA9IGFkZXYtPm1vZGVfaW5m by5udW1fY3J0YzsNCj4+ICAgIAlhZGV2LT5wYWdlZmxpcF9pcnEuZnVuY3MgPSAmZG1fcGFnZWZs aXBfaXJxX2Z1bmNzOw0KPj4gICAgDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2lycS9kY2UxMTAvaXJxX3NlcnZpY2VfZGNlMTEwLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYw0KPj4g aW5kZXggYWZlMDg3Ni4uODY5ODdmNSAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5jDQo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2Ux MTAuYw0KPj4gQEAgLTgxLDYgKzgxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJj ZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4+ICAgIAkuYWNrID0gTlVM TA0KPj4gICAgfTsNCj4+ICAgIA0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9p bmZvX2Z1bmNzIHZ1cGRhdGVfaXJxX2luZm9fZnVuY3MgPSB7DQo+PiArCS5zZXQgPSBOVUxMLA0K Pj4gKwkuYWNrID0gTlVMTA0KPj4gK307DQo+PiArDQo+PiAgICAjZGVmaW5lIGhwZF9pbnRfZW50 cnkocmVnX251bSlcDQo+PiAgICAJW0RDX0lSUV9TT1VSQ0VfSFBEMSArIHJlZ19udW1dID0ge1wN Cj4+ICAgIAkJLmVuYWJsZV9yZWcgPSBtbUhQRCAjIyByZWdfbnVtICMjIF9EQ19IUERfSU5UX0NP TlRST0wsXA0KPj4gQEAgLTEzNyw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9z b3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+PiAgICAJCUNSVENf Vl9VUERBVEVfSU5UX1NUQVRVU19fQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFTSyxcDQo+PiAg ICAJCS5hY2tfdmFsdWUgPVwNCj4+ICAgIAkJQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTX19DUlRD X1ZfVVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwNCj4+IC0JCS5mdW5jcyA9ICZ2YmxhbmtfaXJxX2lu Zm9fZnVuY3NcDQo+PiArCQkuZnVuY3MgPSAmdnVwZGF0ZV9pcnFfaW5mb19mdW5jc1wNCj4+ICAg IAl9DQo+PiAgICANCj4+ICAgICNkZWZpbmUgdmJsYW5rX2ludF9lbnRyeShyZWdfbnVtKVwNCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9p cnFfc2VydmljZV9kY2UxMjAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEv ZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jDQo+PiBpbmRleCAxZWE3MjU2Li43NTBiYTBhIDEw MDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMjAv aXJxX3NlcnZpY2VfZGNlMTIwLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jDQo+PiBAQCAtODQsNiArODQsMTEg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9p bmZvX2Z1bmNzID0gew0KPj4gICAgCS5hY2sgPSBOVUxMDQo+PiAgICB9Ow0KPj4gICAgDQo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5m b19mdW5jcyA9IHsNCj4+ICsJLnNldCA9IE5VTEwsDQo+PiArCS5hY2sgPSBOVUxMDQo+PiArfTsN Cj4+ICsNCj4+ICAgICNkZWZpbmUgQkFTRV9JTk5FUihzZWcpIFwNCj4+ICAgIAlEQ0VfQkFTRV9f SU5TVDBfU0VHICMjIHNlZw0KPj4gICAgDQo+PiBAQCAtMTQwLDcgKzE0NSw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9 IHsNCj4+ICAgIAkJSVJRX1JFR19FTlRSWShDUlRDLCByZWdfbnVtLFwNCj4+ICAgIAkJCUNSVENf SU5URVJSVVBUX0NPTlRST0wsIENSVENfVl9VUERBVEVfSU5UX01TSyxcDQo+PiAgICAJCQlDUlRD X1ZfVVBEQVRFX0lOVF9TVEFUVVMsIENSVENfVl9VUERBVEVfSU5UX0NMRUFSKSxcDQo+PiAtCQku ZnVuY3MgPSAmdmJsYW5rX2lycV9pbmZvX2Z1bmNzXA0KPj4gKwkJLmZ1bmNzID0gJnZ1cGRhdGVf aXJxX2luZm9fZnVuY3NcDQo+PiAgICAJfQ0KPj4gICAgDQo+PiAgICAjZGVmaW5lIHZibGFua19p bnRfZW50cnkocmVnX251bSlcDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jDQo+PiBpbmRleCA4 YTIwNjZjLi5kZTIxOGZlIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jDQo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMNCj4+IEBA IC04NCw2ICs4NCwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5j cyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+PiAgICAJLmFjayA9IE5VTEwNCj4+ICAgIH07 DQo+PiAgICANCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2 dXBkYXRlX2lycV9pbmZvX2Z1bmNzID0gew0KPj4gKwkuc2V0ID0gTlVMTCwNCj4+ICsJLmFjayA9 IE5VTEwNCj4+ICt9Ow0KPj4gICAgDQo+PiAgICAjZGVmaW5lIGhwZF9pbnRfZW50cnkocmVnX251 bSlcDQo+PiAgICAJW0RDX0lSUV9TT1VSQ0VfSU5WQUxJRCArIHJlZ19udW1dID0ge1wNCj4+IEBA IC0xNDIsNyArMTQ2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVu Y3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gew0KPj4gICAgCQlDUlRDX1ZfVVBEQVRFX0lOVF9T VEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NMRUFSX01BU0ssXA0KPj4gICAgCQkuYWNrX3ZhbHVl ID1cDQo+PiAgICAJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRVU19fQ1JUQ19WX1VQREFURV9JTlRf Q0xFQVJfTUFTSyxcDQo+PiAtCQkuZnVuY3MgPSAmdmJsYW5rX2lycV9pbmZvX2Z1bmNzXA0KPj4g KwkJLmZ1bmNzID0gJnZ1cGRhdGVfaXJxX2luZm9fZnVuY3NcDQo+PiAgICAJfQ0KPj4gICAgDQo+ PiAgICAjZGVmaW5lIHZibGFua19pbnRfZW50cnkocmVnX251bSlcDQo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24x MC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2Vydmlj ZV9kY24xMC5jDQo+PiBpbmRleCBlMDRhZTQ5Li4xMGFjNmRlIDEwMDY0NA0KPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5j DQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2lycV9z ZXJ2aWNlX2RjbjEwLmMNCj4+IEBAIC01Niw2ICs1NiwxOCBAQCBlbnVtIGRjX2lycV9zb3VyY2Ug dG9fZGFsX2lycV9zb3VyY2VfZGNuMTAoDQo+PiAgICAJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZC TEFOSzU7DQo+PiAgICAJY2FzZSBEQ05fMV8wX19TUkNJRF9fRENfRDZfT1RHX1ZTVEFSVFVQOg0K Pj4gICAgCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WQkxBTks2Ow0KPj4gKwljYXNlIERDTl8xXzBf X1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+ICsJCXJldHVy biBEQ19JUlFfU09VUkNFX1ZVUERBVEUxOw0KPj4gKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcx X0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+ICsJCXJldHVybiBEQ19JUlFfU09V UkNFX1ZVUERBVEUyOw0KPj4gKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcyX0lIQ19WX1VQREFU RV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+ICsJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEUz Ow0KPj4gKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEczX0lIQ19WX1VQREFURV9OT19MT0NLX0lO VEVSUlVQVDoNCj4+ICsJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEU0Ow0KPj4gKwljYXNl IERDTl8xXzBfX1NSQ0lEX19PVEc0X0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+ ICsJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEU1Ow0KPj4gKwljYXNlIERDTl8xXzBfX1NS Q0lEX19PVEc1X0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+ICsJCXJldHVybiBE Q19JUlFfU09VUkNFX1ZVUERBVEU2Ow0KDQpJJ20gbm90IHN1cmUgd2UgbmVjZXNzYXJpbHkgd2Fu dCB0byByZXVzZSB0aGUgc2FtZSANCkRDX0lSUV9TT1VSQ0VfVlVQREFURTEuLi42IGRlZmluaXRp b25zIGhlcmUgYWdhaW4gd2hlbiBpdCdzIHJlYWxseSANClZfVVBEQVRFX05PX0xPQ0suDQoNCj4+ ICAgIAljYXNlIERDTl8xXzBfX1NSQ0lEX19IVUJQMF9GTElQX0lOVEVSUlVQVDoNCj4+ICAgIAkJ cmV0dXJuIERDX0lSUV9TT1VSQ0VfUEZMSVAxOw0KPj4gICAgCWNhc2UgRENOXzFfMF9fU1JDSURf X0hVQlAxX0ZMSVBfSU5URVJSVVBUOg0KPj4gQEAgLTE1Myw2ICsxNjUsMTEgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0g ew0KPj4gICAgCS5hY2sgPSBOVUxMDQo+PiAgICB9Ow0KPj4gICAgDQo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZvX2Z1 bmNzID0gew0KPj4gKwkuc2V0ID0gTlVMTCwNCj4+ICsJLmFjayA9IE5VTEwNCj4+ICt9Ow0KPj4g Kw0KPj4gICAgI2RlZmluZSBCQVNFX0lOTkVSKHNlZykgXA0KPj4gICAgCURDRV9CQVNFX19JTlNU MF9TRUcgIyMgc2VnDQo+PiAgICANCj4+IEBAIC0yMDMsMTIgKzIyMCwxNSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7 DQo+PiAgICAJCS5mdW5jcyA9ICZwZmxpcF9pcnFfaW5mb19mdW5jc1wNCj4+ICAgIAl9DQo+PiAg ICANCj4+IC0jZGVmaW5lIHZ1cGRhdGVfaW50X2VudHJ5KHJlZ19udW0pXA0KPj4gKy8qIHZ1cGRh dGVfbm9fbG9ja19pbnRfZW50cnkgbWFwcyB0byBEQ19JUlFfU09VUkNFX1ZVUERBVEV4LCB0byBt YXRjaCBzZW1hbnRpYw0KPj4gKyAqIG9mIERDRSdzIERDX0lSUV9TT1VSQ0VfVlVQREFURXguDQo+ PiArICovDQo+PiArI2RlZmluZSB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KHJlZ19udW0pXA0K Pj4gICAgCVtEQ19JUlFfU09VUkNFX1ZVUERBVEUxICsgcmVnX251bV0gPSB7XA0KPj4gICAgCQlJ UlFfUkVHX0VOVFJZKE9URywgcmVnX251bSxcDQo+PiAtCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRV UywgVlVQREFURV9JTlRfRU4sXA0KPj4gLQkJCU9UR19HTE9CQUxfU1lOQ19TVEFUVVMsIFZVUERB VEVfRVZFTlRfQ0xFQVIpLFwNCj4+IC0JCS5mdW5jcyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3Nc DQo+PiArCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9OT19MT0NLX0lOVF9FTixc DQo+PiArCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9OT19MT0NLX0VWRU5UX0NM RUFSKSxcDQo+PiArCQkuZnVuY3MgPSAmdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZvX2Z1bmNzXA0K Pj4gICAgCX0NCj4+ICAgIA0KPj4gICAgI2RlZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19udW0p XA0KPj4gQEAgLTMxNSwxMiArMzM1LDEyIEBAIGlycV9zb3VyY2VfaW5mb19kY24xMFtEQUxfSVJR X1NPVVJDRVNfTlVNQkVSXSA9IHsNCj4+ICAgIAlkY191bmRlcmZsb3dfaW50X2VudHJ5KDYpLA0K Pj4gICAgCVtEQ19JUlFfU09VUkNFX0RNQ1VfU0NQXSA9IGR1bW15X2lycV9lbnRyeSgpLA0KPj4g ICAgCVtEQ19JUlFfU09VUkNFX1ZCSU9TX1NXXSA9IGR1bW15X2lycV9lbnRyeSgpLA0KPj4gLQl2 dXBkYXRlX2ludF9lbnRyeSgwKSwNCj4+IC0JdnVwZGF0ZV9pbnRfZW50cnkoMSksDQo+PiAtCXZ1 cGRhdGVfaW50X2VudHJ5KDIpLA0KPj4gLQl2dXBkYXRlX2ludF9lbnRyeSgzKSwNCj4+IC0JdnVw ZGF0ZV9pbnRfZW50cnkoNCksDQo+PiAtCXZ1cGRhdGVfaW50X2VudHJ5KDUpLA0KDQpJIGRvbid0 IHRoaW5rIHdlIHNob3VsZCBiZSBuZWNlc3NhcmlseSBkcm9wcGluZyB0aGVzZSwgYnV0IEkgZ3Vl c3MgaXQgDQpjb3VsZCBnbyBlaXRoZXIgd2F5IHNpbmNlIHRoZXNlIElSUXMgdGVjaG5pY2FsbHkg YXJlbid0IGRlZmluZWQuDQoNCj4+ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgwKSwNCj4+ ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgxKSwNCj4+ICsJdnVwZGF0ZV9ub19sb2NrX2lu dF9lbnRyeSgyKSwNCj4+ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgzKSwNCj4+ICsJdnVw ZGF0ZV9ub19sb2NrX2ludF9lbnRyeSg0KSwNCj4+ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRy eSg1KSwNCj4+ICAgIAl2YmxhbmtfaW50X2VudHJ5KDApLA0KPj4gICAgCXZibGFua19pbnRfZW50 cnkoMSksDQo+PiAgICAJdmJsYW5rX2ludF9lbnRyeSgyKSwNCj4+DQo+IA0KPiBOaWNob2xhcyBL YXpsYXVza2FzDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fDQo+IGFtZC1nZnggbWFpbGluZyBsaXN0DQo+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnDQo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeA0KPiANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4