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:23:35 +0000 Message-ID: <8ef78169-1893-0aee-9cb1-cce4054ebbcc@amd.com> References: <20190318171952.24302-1-mario.kleiner.de@gmail.com> <20190318171952.24302-4-mario.kleiner.de@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190318171952.24302-4-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US Content-ID: 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: "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org T24gMy8xOC8xOSAxOjE5IFBNLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPiBJbiBWUlIgbW9kZSwg cHJvcGVyIHZibGFuay9wYWdlZmxpcCB0aW1lc3RhbXBzIGNhbiBvbmx5IGJlIGNvbXB1dGVkDQo+ IGFmdGVyIHRoZSBkaXNwbGF5IHNjYW5vdXQgcG9zaXRpb24gaGFzIGxlZnQgZnJvbnQtcG9yY2gu IFRoZXJlZm9yZQ0KPiBkZWxheSBjYWxscyB0byBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCksIGFu ZCB0aGVyZWJ5IGNhbGxzIHRvDQo+IGRybV91cGRhdGVfdmJsYW5rX2NvdW50KCkgYW5kIHBhZ2Vm bGlwIGV2ZW50IGRlbGl2ZXJ5LCB0byBhZnRlciB0aGUNCj4gZW5kIG9mIGZyb250LXBvcmNoIHdo ZW4gaW4gVlJSIG1vZGUuDQo+IA0KPiBXZSBhZGQgYSBuZXcgdnVwZGF0ZSBpcnEsIHdoaWNoIHRy aWdnZXJzIGF0IHRoZSBlbmQgb2YgdGhlIHZ1cGRhdGUNCj4gaW50ZXJ2YWwsIGllLiBhdCB0aGUg ZW5kIG9mIHZibGFuaywgYW5kIGNhbGxzIHRoZSBjb3JlIHZibGFuayBoYW5kbGVyDQo+IGZ1bmN0 aW9uLiBUaGUgbmV3IGlycSBoYW5kbGVyIGlzIG5vdCBleGVjdXRlZCBpbiBzdGFuZGFyZCBub24t VlJSDQo+IG1vZGUsIHNvIHZibGFuayBoYW5kbGluZyBmb3IgZml4ZWQgcmVmcmVzaCByYXRlIG1v ZGUgaXMgaWRlbnRpY2FsDQo+IHRvIHRoZSBwYXN0IGltcGxlbWVudGF0aW9uLg0KPiANCj4gU2ln bmVkLW9mZi1ieTogTWFyaW8gS2xlaW5lciA8bWFyaW8ua2xlaW5lci5kZUBnbWFpbC5jb20+DQo+ IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICAg ICAgIHwgICAxICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5jICB8IDEyOSArKysrKysrKysrKysrKysrKysrKy0NCj4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oICB8ICAgOSArKw0KPiAgIC4uLi9n cHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgIHwgIDIyICsrKysN Cj4gICAuLi4vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYyB8 ICAgNyArLQ0KPiAgIC4uLi9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2Rj ZTEyMC5jIHwgICA3ICstDQo+ICAgLi4uL2FtZC9kaXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2Vy dmljZV9kY2U4MC5jICAgfCAgIDYgKy0NCj4gICAuLi4vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEw L2lycV9zZXJ2aWNlX2RjbjEwLmMgICB8ICA0MCArKysrKy0tDQo+ICAgOCBmaWxlcyBjaGFuZ2Vk LCAyMDUgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaA0KPiBpbmRleCBmODg3NjFhLi42NDE2N2RkIDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaA0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaA0KPiBAQCAtODI3LDYgKzgyNyw3IEBAIHN0cnVjdCBh bWRncHVfZGV2aWNlIHsNCj4gICAJLyogRm9yIHByZS1EQ0UxMS4gRENFMTEgYW5kIGxhdGVyIGFy ZSBpbiAic3RydWN0IGFtZGdwdV9kZXZpY2UtPmRtIiAqLw0KPiAgIAlzdHJ1Y3Qgd29ya19zdHJ1 Y3QJCWhvdHBsdWdfd29yazsNCj4gICAJc3RydWN0IGFtZGdwdV9pcnFfc3JjCQljcnRjX2lycTsN Cj4gKwlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJCXZ1cGRhdGVfaXJxOw0KPiAgIAlzdHJ1Y3QgYW1k Z3B1X2lycV9zcmMJCXBhZ2VmbGlwX2lycTsNCj4gICAJc3RydWN0IGFtZGdwdV9pcnFfc3JjCQlo cGRfaXJxOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRn cHVfZG0vYW1kZ3B1X2RtLmMNCj4gaW5kZXggODVlNGY4Ny4uNTU1ZDllOWYgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMNCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYw0K PiBAQCAtMzE1LDYgKzMxNSwzMiBAQCBzdGF0aWMgdm9pZCBkbV9wZmxpcF9oaWdoX2lycSh2b2lk ICppbnRlcnJ1cHRfcGFyYW1zKQ0KPiAgIAlkcm1fY3J0Y192YmxhbmtfcHV0KCZhbWRncHVfY3J0 Yy0+YmFzZSk7DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGljIHZvaWQgZG1fdnVwZGF0ZV9oaWdoX2ly cSh2b2lkICppbnRlcnJ1cHRfcGFyYW1zKQ0KPiArew0KPiArCXN0cnVjdCBjb21tb25faXJxX3Bh cmFtcyAqaXJxX3BhcmFtcyA9IGludGVycnVwdF9wYXJhbXM7DQo+ICsJc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBpcnFfcGFyYW1zLT5hZGV2Ow0KPiArCXN0cnVjdCBhbWRncHVfY3J0YyAq YWNydGM7DQo+ICsJc3RydWN0IGRtX2NydGNfc3RhdGUgKmFjcnRjX3N0YXRlOw0KPiArDQo+ICsJ YWNydGMgPSBnZXRfY3J0Y19ieV9vdGdfaW5zdChhZGV2LCBpcnFfcGFyYW1zLT5pcnFfc3JjIC0g SVJRX1RZUEVfVlVQREFURSk7DQo+ICsNCj4gKwlpZiAoYWNydGMpIHsNCj4gKwkJYWNydGNfc3Rh dGUgPSB0b19kbV9jcnRjX3N0YXRlKGFjcnRjLT5iYXNlLnN0YXRlKTsNCj4gKw0KPiArCQlEUk1f REVCVUdfRFJJVkVSKCJjcnRjOiVkLCB2dXBkYXRlLXZycjolZFxuIiwgYWNydGMtPmNydGNfaWQs DQo+ICsJCQkJIGFtZGdwdV9kbV92cnJfYWN0aXZlKGFjcnRjX3N0YXRlKSk7DQo+ICsNCj4gKwkJ LyogQ29yZSB2YmxhbmsgaGFuZGxpbmcgaXMgZG9uZSBoZXJlIGFmdGVyIGVuZCBvZiBmcm9udC1w b3JjaCBpbg0KPiArCQkgKiB2cnIgbW9kZSwgYXMgdmJsYW5rIHRpbWVzdGFtcGluZyB3aWxsIGdp dmUgdmFsaWQgcmVzdWx0cw0KPiArCQkgKiB3aGlsZSBub3cgZG9uZSBhZnRlciBmcm9udC1wb3Jj aC4gVGhpcyB3aWxsIGFsc28gZGVsaXZlcg0KPiArCQkgKiBwYWdlLWZsaXAgY29tcGxldGlvbiBl dmVudHMgdGhhdCBoYXZlIGJlZW4gcXVldWVkIHRvIHVzDQo+ICsJCSAqIGlmIGEgcGFnZWZsaXAg aGFwcGVuZWQgaW5zaWRlIGZyb250LXBvcmNoLg0KPiArCQkgKi8NCj4gKwkJaWYgKGFtZGdwdV9k bV92cnJfYWN0aXZlKGFjcnRjX3N0YXRlKSkNCj4gKwkJCWRybV9jcnRjX2hhbmRsZV92Ymxhbmso JmFjcnRjLT5iYXNlKQ0KSSB3YXMgdGhpbmtpbmcgdGhhdCAzIGFuZCA0IG1pZ2h0IGhhdmUgdG8g YmUgbWVyZ2VkLCBidXQgVlJSIHBmbGlwIA0KdGltZXN0YW1waW5nIHNlZW1zIHRvIGJlIHRoZSBz YW1lIGFzIGl0IHdhcyBiZWZvcmUgKG9mZiBieSBhIGxpbmUgb3IgDQp0d28pIHNpbmNlIGl0J3Mg bm90IGhhbmRsZWQgaGVyZSB5ZXQuIFRoaXMgc2VlbXMgdG8gZml4IHZibGFuayBldmVudHMgDQph bmQgdGltZXN0YW1waW5nIGF0IGxlYXN0Lg0KDQo+ICsJfQ0KPiArfQ0KPiArDQo+ICAgc3RhdGlj IHZvaWQgZG1fY3J0Y19oaWdoX2lycSh2b2lkICppbnRlcnJ1cHRfcGFyYW1zKQ0KPiAgIHsNCj4g ICAJc3RydWN0IGNvbW1vbl9pcnFfcGFyYW1zICppcnFfcGFyYW1zID0gaW50ZXJydXB0X3BhcmFt czsNCj4gQEAgLTMyNSwxMSArMzUxLDI0IEBAIHN0YXRpYyB2b2lkIGRtX2NydGNfaGlnaF9pcnEo dm9pZCAqaW50ZXJydXB0X3BhcmFtcykNCj4gICAJYWNydGMgPSBnZXRfY3J0Y19ieV9vdGdfaW5z dChhZGV2LCBpcnFfcGFyYW1zLT5pcnFfc3JjIC0gSVJRX1RZUEVfVkJMQU5LKTsNCj4gICANCj4g ICAJaWYgKGFjcnRjKSB7DQo+IC0JCWRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5iYXNl KTsNCj4gLQkJYW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFjcnRjLT5iYXNlKTsNCj4g LQ0KPiAgIAkJYWNydGNfc3RhdGUgPSB0b19kbV9jcnRjX3N0YXRlKGFjcnRjLT5iYXNlLnN0YXRl KTsNCj4gICANCj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRc biIsIGFjcnRjLT5jcnRjX2lkLA0KPiArCQkJCSBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19z dGF0ZSkpOw0KPiArDQo+ICsJCS8qIENvcmUgdmJsYW5rIGhhbmRsaW5nIGF0IHN0YXJ0IG9mIGZy b250LXBvcmNoIGlzIG9ubHkgcG9zc2libGUNCj4gKwkJICogaW4gbm9uLXZyciBtb2RlLCBhcyBv bmx5IHRoZXJlIHZibGFuayB0aW1lc3RhbXBpbmcgd2lsbCBnaXZlDQo+ICsJCSAqIHZhbGlkIHJl c3VsdHMgd2hpbGUgZG9uZSBpbiBmcm9udC1wb3JjaC4gT3RoZXJ3aXNlIGRlZmVyIGl0DQo+ICsJ CSAqIHRvIGRtX3Z1cGRhdGVfaGlnaF9pcnEgYWZ0ZXIgZW5kIG9mIGZyb250LXBvcmNoLg0KPiAr CQkgKi8NCj4gKwkJaWYgKCFhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+ICsJ CQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCZhY3J0Yy0+YmFzZSk7DQo+ICsNCj4gKwkJLyogRm9s bG93aW5nIHN0dWZmIG11c3QgaGFwcGVuIGF0IHN0YXJ0IG9mIHZibGFuaywgZm9yIGNyYw0KPiAr CQkgKiBjb21wdXRhdGlvbiBhbmQgYmVsb3ctdGhlLXJhbmdlIGJ0ciBzdXBwb3J0IGluIHZyciBt b2RlLg0KPiArCQkgKi8NCj4gKwkJYW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFjcnRj LT5iYXNlKTsNCj4gKw0KPiAgIAkJaWYgKGFjcnRjX3N0YXRlLT5zdHJlYW0gJiYNCj4gICAJCSAg ICBhY3J0Y19zdGF0ZS0+dnJyX3BhcmFtcy5zdXBwb3J0ZWQgJiYNCj4gICAJCSAgICBhY3J0Y19z dGF0ZS0+ZnJlZXN5bmNfY29uZmlnLnN0YXRlID09IFZSUl9TVEFURV9BQ1RJVkVfVkFSSUFCTEUp IHsNCj4gQEAgLTE0NDcsNiArMTQ4NiwyNyBAQCBzdGF0aWMgaW50IGRjZTExMF9yZWdpc3Rlcl9p cnFfaGFuZGxlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgCQkJCWRtX2NydGNf aGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7DQo+ICAgCX0NCj4gICANCj4gKwkvKiBVc2UgVlVQREFU RSBpbnRlcnJ1cHQgKi8NCj4gKwlmb3IgKGkgPSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0QxX1ZfVVBE QVRFX0lOVDsgaSA8PSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0Q2X1ZfVVBEQVRFX0lOVDsgaSs9Mikg ew0KPiArCQlyID0gYW1kZ3B1X2lycV9hZGRfaWQoYWRldiwgY2xpZW50X2lkLCBpLCAmYWRldi0+ dnVwZGF0ZV9pcnEpOw0KPiArCQlpZiAocikgew0KPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g YWRkIHZ1cGRhdGUgaXJxIGlkIVxuIik7DQo+ICsJCQlyZXR1cm4gcjsNCj4gKwkJfQ0KPiArDQo+ ICsJCWludF9wYXJhbXMuaW50X2NvbnRleHQgPSBJTlRFUlJVUFRfSElHSF9JUlFfQ09OVEVYVDsN Cj4gKwkJaW50X3BhcmFtcy5pcnFfc291cmNlID0NCj4gKwkJCWRjX2ludGVycnVwdF90b19pcnFf c291cmNlKGRjLCBpLCAwKTsNCj4gKw0KPiArCQljX2lycV9wYXJhbXMgPSAmYWRldi0+ZG0udnVw ZGF0ZV9wYXJhbXNbaW50X3BhcmFtcy5pcnFfc291cmNlIC0gRENfSVJRX1NPVVJDRV9WVVBEQVRF MV07DQo+ICsNCj4gKwkJY19pcnFfcGFyYW1zLT5hZGV2ID0gYWRldjsNCj4gKwkJY19pcnFfcGFy YW1zLT5pcnFfc3JjID0gaW50X3BhcmFtcy5pcnFfc291cmNlOw0KPiArDQo+ICsJCWFtZGdwdV9k bV9pcnFfcmVnaXN0ZXJfaW50ZXJydXB0KGFkZXYsICZpbnRfcGFyYW1zLA0KPiArCQkJCWRtX3Z1 cGRhdGVfaGlnaF9pcnEsIGNfaXJxX3BhcmFtcyk7DQo+ICsJfQ0KPiArDQo+ICAgCS8qIFVzZSBH UlBIX1BGTElQIGludGVycnVwdCAqLw0KPiAgIAlmb3IgKGkgPSBWSVNMQU5EUzMwX0lWX1NSQ0lE X0QxX0dSUEhfUEZMSVA7DQo+ICAgCQkJaSA8PSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0Q2X0dSUEhf UEZMSVA7IGkgKz0gMikgew0KPiBAQCAtMTUzMiw2ICsxNTkyLDM0IEBAIHN0YXRpYyBpbnQgZGNu MTBfcmVnaXN0ZXJfaXJxX2hhbmRsZXJzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPiAg IAkJCQlkbV9jcnRjX2hpZ2hfaXJxLCBjX2lycV9wYXJhbXMpOw0KPiAgIAl9DQo+ICAgDQo+ICsJ LyogVXNlIFZVUERBVEVfTk9fTE9DSyBpbnRlcnJ1cHQgb24gRENOLCB3aGljaCBzZWVtcyB0byBj b3JyZXNwb25kIHRvDQo+ICsJICogdGhlIHJlZ3VsYXIgVlVQREFURSBpbnRlcnJ1cHQgb24gRENF LiBXZSB3YW50IERDX0lSUV9TT1VSQ0VfVlVQREFURXgNCj4gKwkgKiB0byB0cmlnZ2VyIGF0IGVu ZCBvZiBlYWNoIHZibGFuaywgcmVnYXJkbGVzcyBvZiBzdGF0ZSBvZiB0aGUgbG9jaywNCj4gKwkg KiBtYXRjaGluZyBEQ0UgYmVoYXZpb3VyLg0KPiArCSAqLw0KPiArCWZvciAoaSA9IERDTl8xXzBf X1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDsNCj4gKwkgICAgIGkg PD0gRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUICsg YWRldi0+bW9kZV9pbmZvLm51bV9jcnRjIC0gMTsNCj4gKwkgICAgIGkrKykgew0KPiArCQlyID0g YW1kZ3B1X2lycV9hZGRfaWQoYWRldiwgU09DMTVfSUhfQ0xJRU5USURfRENFLCBpLCAmYWRldi0+ dnVwZGF0ZV9pcnEpOw0KPiArDQo+ICsJCWlmIChyKSB7DQo+ICsJCQlEUk1fRVJST1IoIkZhaWxl ZCB0byBhZGQgdnVwZGF0ZSBpcnEgaWQhXG4iKTsNCj4gKwkJCXJldHVybiByOw0KPiArCQl9DQo+ ICsNCj4gKwkJaW50X3BhcmFtcy5pbnRfY29udGV4dCA9IElOVEVSUlVQVF9ISUdIX0lSUV9DT05U RVhUOw0KPiArCQlpbnRfcGFyYW1zLmlycV9zb3VyY2UgPQ0KPiArCQkJZGNfaW50ZXJydXB0X3Rv X2lycV9zb3VyY2UoZGMsIGksIDApOw0KPiArDQo+ICsJCWNfaXJxX3BhcmFtcyA9ICZhZGV2LT5k bS52dXBkYXRlX3BhcmFtc1tpbnRfcGFyYW1zLmlycV9zb3VyY2UgLSBEQ19JUlFfU09VUkNFX1ZV UERBVEUxXTsNCj4gKw0KPiArCQljX2lycV9wYXJhbXMtPmFkZXYgPSBhZGV2Ow0KPiArCQljX2ly cV9wYXJhbXMtPmlycV9zcmMgPSBpbnRfcGFyYW1zLmlycV9zb3VyY2U7DQo+ICsNCj4gKwkJYW1k Z3B1X2RtX2lycV9yZWdpc3Rlcl9pbnRlcnJ1cHQoYWRldiwgJmludF9wYXJhbXMsDQo+ICsJCQkJ ZG1fdnVwZGF0ZV9oaWdoX2lycSwgY19pcnFfcGFyYW1zKTsNCj4gKwl9DQo+ICsNCj4gICAJLyog VXNlIEdSUEhfUEZMSVAgaW50ZXJydXB0ICovDQo+ICAgCWZvciAoaSA9IERDTl8xXzBfX1NSQ0lE X19IVUJQMF9GTElQX0lOVEVSUlVQVDsNCj4gICAJCQlpIDw9IERDTl8xXzBfX1NSQ0lEX19IVUJQ MF9GTElQX0lOVEVSUlVQVCArIGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YyAtIDE7DQo+IEBAIC0z MjI2LDEyICszMzE0LDQyIEBAIGRtX2NydGNfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykNCj4gICAJcmV0dXJuICZzdGF0ZS0+YmFzZTsNCj4gICB9DQo+ICAgDQo+ICtzdGF0 aWMgaW5saW5lIGludCBkbV9zZXRfdnVwZGF0ZV9pcnEoc3RydWN0IGRybV9jcnRjICpjcnRjLCBi b29sIGVuYWJsZSkNCj4gK3sNCj4gKwllbnVtIGRjX2lycV9zb3VyY2UgaXJxX3NvdXJjZTsNCj4g KwlzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFjcnRjID0gdG9fYW1kZ3B1X2NydGMoY3J0Yyk7DQo+ICsJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPiAr CWludCByYzsNCj4gKw0KPiArCWlycV9zb3VyY2UgPSBJUlFfVFlQRV9WVVBEQVRFICsgYWNydGMt Pm90Z19pbnN0Ow0KPiArDQo+ICsJcmMgPSBkY19pbnRlcnJ1cHRfc2V0KGFkZXYtPmRtLmRjLCBp cnFfc291cmNlLCBlbmFibGUpID8gMCA6IC1FQlVTWTsNCj4gKw0KPiArCURSTV9ERUJVR19EUklW RVIoIiVzOiBjcnRjICVkIC0gdnVwZGF0ZSBpcnEgJXNhYmxpbmc6IHI9JWRcbiIsDQo+ICsJCQkg X19mdW5jX18sIGFjcnRjLT5jcnRjX2lkLCBlbmFibGUgPyAiZW4iIDogImRpcyIsIHJjKTsNCj4g KwlyZXR1cm4gcmM7DQo+ICt9DQo+ICAgDQo+ICAgc3RhdGljIGlubGluZSBpbnQgZG1fc2V0X3Zi bGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQ0KPiAgIHsNCj4gICAJZW51 bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7DQo+ICAgCXN0cnVjdCBhbWRncHVfY3J0YyAqYWNy dGMgPSB0b19hbWRncHVfY3J0YyhjcnRjKTsNCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPiArCXN0cnVjdCBkbV9jcnRjX3N0YXRlICph Y3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOw0KPiArCWludCByYyA9 IDA7DQo+ICsNCj4gKwlpZiAoZW5hYmxlKSB7DQo+ICsJCS8qIHZibGFuayBpcnEgb24gLT4gT25s eSBuZWVkIHZ1cGRhdGUgaXJxIGluIHZyciBtb2RlICovDQo+ICsJCWlmIChhbWRncHVfZG1fdnJy X2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+ICsJCQlyYyA9IGRtX3NldF92dXBkYXRlX2lycShjcnRj LCB0cnVlKTsNCj4gKwl9DQo+ICsJZWxzZSB7DQoNCnNob3VsZCBiZSB9IGVsc2Ugew0KDQo+ICsJ CS8qIHZibGFuayBpcnEgb2ZmIC0+IHZ1cGRhdGUgaXJxIG9mZiAqLw0KPiArCQlyYyA9IGRtX3Nl dF92dXBkYXRlX2lycShjcnRjLCBmYWxzZSk7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKHJjKQ0KPiAr CQlyZXR1cm4gcmM7DQo+ICAgDQo+ICAgCWlycV9zb3VyY2UgPSBJUlFfVFlQRV9WQkxBTksgKyBh Y3J0Yy0+b3RnX2luc3Q7DQo+ICAgCXJldHVybiBkY19pbnRlcnJ1cHRfc2V0KGFkZXYtPmRtLmRj LCBpcnFfc291cmNlLCBlbmFibGUpID8gMCA6IC1FQlVTWTsNCj4gQEAgLTQ3NDEsNyArNDg1OSwx MSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZG1faGFuZGxlX3Zycl90cmFuc2l0aW9uKHN0cnVjdCBk bV9jcnRjX3N0YXRlICpvbGRfc3RhdGUsDQo+ICAgCQkgKiBXaGlsZSBWUlIgaXMgYWN0aXZlLCB3 ZSBtdXN0IG5vdCBkaXNhYmxlIHZibGFuayBpcnEsIGFzIGENCj4gICAJCSAqIHJlZW5hYmxlIGFm dGVyIGRpc2FibGUgd291bGQgY29tcHV0ZSBib2d1cyB2YmxhbmsvcGZsaXANCj4gICAJCSAqIHRp bWVzdGFtcHMgaWYgaXQgbGlrZWx5IGhhcHBlbmVkIGluc2lkZSBkaXNwbGF5IGZyb250LXBvcmNo Lg0KPiArCQkgKg0KPiArCQkgKiBXZSBhbHNvIG5lZWQgdnVwZGF0ZSBpcnEgZm9yIHRoZSBhY3R1 YWwgY29yZSB2YmxhbmsgaGFuZGxpbmcNCj4gKwkJICogYXQgZW5kIG9mIHZibGFuay4NCj4gICAJ CSAqLw0KPiArCQlkbV9zZXRfdnVwZGF0ZV9pcnEobmV3X3N0YXRlLT5iYXNlLmNydGMsIHRydWUp Ow0KPiAgIAkJZHJtX2NydGNfdmJsYW5rX2dldChuZXdfc3RhdGUtPmJhc2UuY3J0Yyk7DQo+ICAg CQlEUk1fREVCVUdfRFJJVkVSKCIlczogY3J0Yz0ldSBWUlIgb2ZmLT5vbjogR2V0IHZibGFuayBy ZWZcbiIsDQo+ICAgCQkJCSBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQp Ow0KPiBAQCAtNDc1MCw2ICs0ODcyLDcgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X2RtX2hhbmRsZV92 cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlLA0KPiAgIAkJLyog VHJhbnNpdGlvbiBWUlIgYWN0aXZlIC0+IGluYWN0aXZlOg0KPiAgIAkJICogQWxsb3cgdmJsYW5r IGlycSBkaXNhYmxlIGFnYWluIGZvciBmaXhlZCByZWZyZXNoIHJhdGUuDQo+ICAgCQkgKi8NCj4g KwkJZG1fc2V0X3Z1cGRhdGVfaXJxKG5ld19zdGF0ZS0+YmFzZS5jcnRjLCBmYWxzZSk7DQo+ICAg CQlkcm1fY3J0Y192YmxhbmtfcHV0KG5ld19zdGF0ZS0+YmFzZS5jcnRjKTsNCj4gICAJCURSTV9E RUJVR19EUklWRVIoIiVzOiBjcnRjPSV1IFZSUiBvbi0+b2ZmOiBEcm9wIHZibGFuayByZWZcbiIs DQo+ICAgCQkJCSBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNydGMtPmJhc2UuaWQpOw0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVf ZG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgN Cj4gaW5kZXggZjc0MWVhMy4uMGIzNWY4NCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaA0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oDQo+IEBAIC0xODIsNiArMTgyLDE1 IEBAIHN0cnVjdCBhbWRncHVfZGlzcGxheV9tYW5hZ2VyIHsNCj4gICAJc3RydWN0IGNvbW1vbl9p cnFfcGFyYW1zDQo+ICAgCXZibGFua19wYXJhbXNbRENfSVJRX1NPVVJDRV9WQkxBTks2IC0gRENf SVJRX1NPVVJDRV9WQkxBTksxICsgMV07DQo+ICAgDQo+ICsJLyoqDQo+ICsJICogQHZ1cGRhdGVf cGFyYW1zOg0KPiArCSAqDQo+ICsJICogVmVydGljYWwgdXBkYXRlIElSUSBwYXJhbWV0ZXJzLCBw YXNzZWQgdG8gcmVnaXN0ZXJlZCBoYW5kbGVycyB3aGVuDQo+ICsJICogdHJpZ2dlcmVkLg0KPiAr CSAqLw0KPiArCXN0cnVjdCBjb21tb25faXJxX3BhcmFtcw0KPiArCXZ1cGRhdGVfcGFyYW1zW0RD X0lSUV9TT1VSQ0VfVlVQREFURTYgLSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxICsgMV07DQo+ICsN Cj4gICAJc3BpbmxvY2tfdCBpcnFfaGFuZGxlcl9saXN0X3RhYmxlX2xvY2s7DQo+ICAgDQo+ICAg CXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiYWNrbGlnaHRfZGV2Ow0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPiBp bmRleCBjZDEwZjc3Li5mZWU3ODM3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPiBAQCAtNjc0LDExICs2 NzQsMzAgQEAgc3RhdGljIGludCBhbWRncHVfZG1fc2V0X2NydGNfaXJxX3N0YXRlKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAkJX19mdW5jX18pOw0KPiAgIH0NCj4gICANCj4gK3N0 YXRpYyBpbnQgYW1kZ3B1X2RtX3NldF92dXBkYXRlX2lycV9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwNCj4gKwkJCQkJICAgc3RydWN0IGFtZGdwdV9pcnFfc3JjICpzb3VyY2UsDQo+ ICsJCQkJCSAgIHVuc2lnbmVkIGNydGNfaWQsDQoNCnNob3VsZCBiZSB1bnNpZ25lZCBpbnQgY3J0 Y19pZA0KDQo+ICsJCQkJCSAgIGVudW0gYW1kZ3B1X2ludGVycnVwdF9zdGF0ZSBzdGF0ZSkNCj4g K3sNCj4gKwlyZXR1cm4gZG1faXJxX3N0YXRlKA0KPiArCQlhZGV2LA0KPiArCQlzb3VyY2UsDQo+ ICsJCWNydGNfaWQsDQo+ICsJCXN0YXRlLA0KPiArCQlJUlFfVFlQRV9WVVBEQVRFLA0KPiArCQlf X2Z1bmNfXyk7DQo+ICt9DQo+ICsNCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFf c3JjX2Z1bmNzIGRtX2NydGNfaXJxX2Z1bmNzID0gew0KPiAgIAkuc2V0ID0gYW1kZ3B1X2RtX3Nl dF9jcnRjX2lycV9zdGF0ZSwNCj4gICAJLnByb2Nlc3MgPSBhbWRncHVfZG1faXJxX2hhbmRsZXIs DQo+ICAgfTsNCj4gICANCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVu Y3MgZG1fdnVwZGF0ZV9pcnFfZnVuY3MgPSB7DQo+ICsJLnNldCA9IGFtZGdwdV9kbV9zZXRfdnVw ZGF0ZV9pcnFfc3RhdGUsDQo+ICsJLnByb2Nlc3MgPSBhbWRncHVfZG1faXJxX2hhbmRsZXIsDQo+ ICt9Ow0KPiArDQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfaXJxX3NyY19mdW5jcyBk bV9wYWdlZmxpcF9pcnFfZnVuY3MgPSB7DQo+ICAgCS5zZXQgPSBhbWRncHVfZG1fc2V0X3BmbGlw X2lycV9zdGF0ZSwNCj4gICAJLnByb2Nlc3MgPSBhbWRncHVfZG1faXJxX2hhbmRsZXIsDQo+IEBA IC02OTUsNiArNzE0LDkgQEAgdm9pZCBhbWRncHVfZG1fc2V0X2lycV9mdW5jcyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldikNCj4gICAJYWRldi0+Y3J0Y19pcnEubnVtX3R5cGVzID0gYWRldi0+ bW9kZV9pbmZvLm51bV9jcnRjOw0KPiAgIAlhZGV2LT5jcnRjX2lycS5mdW5jcyA9ICZkbV9jcnRj X2lycV9mdW5jczsNCj4gICANCj4gKwlhZGV2LT52dXBkYXRlX2lycS5udW1fdHlwZXMgPSBhZGV2 LT5tb2RlX2luZm8ubnVtX2NydGM7DQo+ICsJYWRldi0+dnVwZGF0ZV9pcnEuZnVuY3MgPSAmZG1f dnVwZGF0ZV9pcnFfZnVuY3M7DQo+ICsNCj4gICAJYWRldi0+cGFnZWZsaXBfaXJxLm51bV90eXBl cyA9IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YzsNCj4gICAJYWRldi0+cGFnZWZsaXBfaXJxLmZ1 bmNzID0gJmRtX3BhZ2VmbGlwX2lycV9mdW5jczsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMTAvaXJxX3NlcnZpY2Vf ZGNlMTEwLmMNCj4gaW5kZXggYWZlMDg3Ni4uODY5ODdmNSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMTAvaXJxX3NlcnZpY2VfZGNlMTEwLmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMTAvaXJxX3Nl cnZpY2VfZGNlMTEwLmMNCj4gQEAgLTgxLDYgKzgxLDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4gICAJLmFj ayA9IE5VTEwNCj4gICB9Ow0KPiAgIA0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNl X2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5mb19mdW5jcyA9IHsNCj4gKwkuc2V0ID0gTlVMTCwN Cj4gKwkuYWNrID0gTlVMTA0KPiArfTsNCj4gKw0KPiAgICNkZWZpbmUgaHBkX2ludF9lbnRyeShy ZWdfbnVtKVwNCj4gICAJW0RDX0lSUV9TT1VSQ0VfSFBEMSArIHJlZ19udW1dID0ge1wNCj4gICAJ CS5lbmFibGVfcmVnID0gbW1IUEQgIyMgcmVnX251bSAjIyBfRENfSFBEX0lOVF9DT05UUk9MLFwN Cj4gQEAgLTEzNyw3ICsxNDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5m b19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+ICAgCQlDUlRDX1ZfVVBEQVRFX0lO VF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NMRUFSX01BU0ssXA0KPiAgIAkJLmFja192YWx1 ZSA9XA0KPiAgIAkJQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTX19DUlRDX1ZfVVBEQVRFX0lOVF9D TEVBUl9NQVNLLFwNCj4gLQkJLmZ1bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wNCj4gKwkJ LmZ1bmNzID0gJnZ1cGRhdGVfaXJxX2luZm9fZnVuY3NcDQo+ICAgCX0NCj4gICANCj4gICAjZGVm aW5lIHZibGFua19pbnRfZW50cnkocmVnX251bSlcDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEy MC5jDQo+IGluZGV4IDFlYTcyNTYuLjc1MGJhMGEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNl X2RjZTEyMC5jDQo+IEBAIC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9z b3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+ICAgCS5hY2sgPSBO VUxMDQo+ICAgfTsNCj4gICANCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZv X2Z1bmNzIHZ1cGRhdGVfaXJxX2luZm9fZnVuY3MgPSB7DQo+ICsJLnNldCA9IE5VTEwsDQo+ICsJ LmFjayA9IE5VTEwNCj4gK307DQo+ICsNCj4gICAjZGVmaW5lIEJBU0VfSU5ORVIoc2VnKSBcDQo+ ICAgCURDRV9CQVNFX19JTlNUMF9TRUcgIyMgc2VnDQo+ICAgDQo+IEBAIC0xNDAsNyArMTQ1LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9p bmZvX2Z1bmNzID0gew0KPiAgIAkJSVJRX1JFR19FTlRSWShDUlRDLCByZWdfbnVtLFwNCj4gICAJ CQlDUlRDX0lOVEVSUlVQVF9DT05UUk9MLCBDUlRDX1ZfVVBEQVRFX0lOVF9NU0ssXA0KPiAgIAkJ CUNSVENfVl9VUERBVEVfSU5UX1NUQVRVUywgQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVIpLFwNCj4g LQkJLmZ1bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wNCj4gKwkJLmZ1bmNzID0gJnZ1cGRh dGVfaXJxX2luZm9fZnVuY3NcDQo+ICAgCX0NCj4gICANCj4gICAjZGVmaW5lIHZibGFua19pbnRf ZW50cnkocmVnX251bSlcDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMNCj4gaW5kZXggOGEyMDY2 Yy4uZGUyMThmZSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9pcnEvZGNlODAvaXJxX3NlcnZpY2VfZGNlODAuYw0KPiBAQCAtODQsNiAr ODQsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5r X2lycV9pbmZvX2Z1bmNzID0gew0KPiAgIAkuYWNrID0gTlVMTA0KPiAgIH07DQo+ICAgDQo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2dXBkYXRlX2lycV9pbmZv X2Z1bmNzID0gew0KPiArCS5zZXQgPSBOVUxMLA0KPiArCS5hY2sgPSBOVUxMDQo+ICt9Ow0KPiAg IA0KPiAgICNkZWZpbmUgaHBkX2ludF9lbnRyeShyZWdfbnVtKVwNCj4gICAJW0RDX0lSUV9TT1VS Q0VfSU5WQUxJRCArIHJlZ19udW1dID0ge1wNCj4gQEAgLTE0Miw3ICsxNDYsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3Mg PSB7DQo+ICAgCQlDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NM RUFSX01BU0ssXA0KPiAgIAkJLmFja192YWx1ZSA9XA0KPiAgIAkJQ1JUQ19WX1VQREFURV9JTlRf U1RBVFVTX19DUlRDX1ZfVVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwNCj4gLQkJLmZ1bmNzID0gJnZi bGFua19pcnFfaW5mb19mdW5jc1wNCj4gKwkJLmZ1bmNzID0gJnZ1cGRhdGVfaXJxX2luZm9fZnVu Y3NcDQo+ICAgCX0NCj4gICANCj4gICAjZGVmaW5lIHZibGFua19pbnRfZW50cnkocmVnX251bSlc DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEw L2lycV9zZXJ2aWNlX2RjbjEwLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJx L2RjbjEwL2lycV9zZXJ2aWNlX2RjbjEwLmMNCj4gaW5kZXggZTA0YWU0OS4uMTBhYzZkZSAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFf c2VydmljZV9kY24xMC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9p cnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYw0KPiBAQCAtNTYsNiArNTYsMTggQEAgZW51bSBk Y19pcnFfc291cmNlIHRvX2RhbF9pcnFfc291cmNlX2RjbjEwKA0KPiAgIAkJcmV0dXJuIERDX0lS UV9TT1VSQ0VfVkJMQU5LNTsNCj4gICAJY2FzZSBEQ05fMV8wX19TUkNJRF9fRENfRDZfT1RHX1ZT VEFSVFVQOg0KPiAgIAkJcmV0dXJuIERDX0lSUV9TT1VSQ0VfVkJMQU5LNjsNCj4gKwljYXNlIERD Tl8xXzBfX1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4gKwkJ cmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTE7DQo+ICsJY2FzZSBEQ05fMV8wX19TUkNJRF9f T1RHMV9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+ICsJCXJldHVybiBEQ19JUlFf U09VUkNFX1ZVUERBVEUyOw0KPiArCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzJfSUhDX1ZfVVBE QVRFX05PX0xPQ0tfSU5URVJSVVBUOg0KPiArCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBEQVRF MzsNCj4gKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEczX0lIQ19WX1VQREFURV9OT19MT0NLX0lO VEVSUlVQVDoNCj4gKwkJcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTQ7DQo+ICsJY2FzZSBE Q05fMV8wX19TUkNJRF9fT1RHNF9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+ICsJ CXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEU1Ow0KPiArCWNhc2UgRENOXzFfMF9fU1JDSURf X09URzVfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOg0KPiArCQlyZXR1cm4gRENfSVJR X1NPVVJDRV9WVVBEQVRFNjsNCj4gICAJY2FzZSBEQ05fMV8wX19TUkNJRF9fSFVCUDBfRkxJUF9J TlRFUlJVUFQ6DQo+ICAgCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9QRkxJUDE7DQo+ICAgCWNhc2Ug RENOXzFfMF9fU1JDSURfX0hVQlAxX0ZMSVBfSU5URVJSVVBUOg0KPiBAQCAtMTUzLDYgKzE2NSwx MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJx X2luZm9fZnVuY3MgPSB7DQo+ICAgCS5hY2sgPSBOVUxMDQo+ICAgfTsNCj4gICANCj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZ1cGRhdGVfbm9fbG9ja19pcnFf aW5mb19mdW5jcyA9IHsNCj4gKwkuc2V0ID0gTlVMTCwNCj4gKwkuYWNrID0gTlVMTA0KPiArfTsN Cj4gKw0KPiAgICNkZWZpbmUgQkFTRV9JTk5FUihzZWcpIFwNCj4gICAJRENFX0JBU0VfX0lOU1Qw X1NFRyAjIyBzZWcNCj4gICANCj4gQEAgLTIwMywxMiArMjIwLDE1IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4g ICAJCS5mdW5jcyA9ICZwZmxpcF9pcnFfaW5mb19mdW5jc1wNCj4gICAJfQ0KPiAgIA0KPiAtI2Rl ZmluZSB2dXBkYXRlX2ludF9lbnRyeShyZWdfbnVtKVwNCj4gKy8qIHZ1cGRhdGVfbm9fbG9ja19p bnRfZW50cnkgbWFwcyB0byBEQ19JUlFfU09VUkNFX1ZVUERBVEV4LCB0byBtYXRjaCBzZW1hbnRp Yw0KPiArICogb2YgRENFJ3MgRENfSVJRX1NPVVJDRV9WVVBEQVRFeC4NCj4gKyAqLw0KPiArI2Rl ZmluZSB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KHJlZ19udW0pXA0KPiAgIAlbRENfSVJRX1NP VVJDRV9WVVBEQVRFMSArIHJlZ19udW1dID0ge1wNCj4gICAJCUlSUV9SRUdfRU5UUlkoT1RHLCBy ZWdfbnVtLFwNCj4gLQkJCU9UR19HTE9CQUxfU1lOQ19TVEFUVVMsIFZVUERBVEVfSU5UX0VOLFwN Cj4gLQkJCU9UR19HTE9CQUxfU1lOQ19TVEFUVVMsIFZVUERBVEVfRVZFTlRfQ0xFQVIpLFwNCj4g LQkJLmZ1bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wNCj4gKwkJCU9UR19HTE9CQUxfU1lO Q19TVEFUVVMsIFZVUERBVEVfTk9fTE9DS19JTlRfRU4sXA0KPiArCQkJT1RHX0dMT0JBTF9TWU5D X1NUQVRVUywgVlVQREFURV9OT19MT0NLX0VWRU5UX0NMRUFSKSxcDQo+ICsJCS5mdW5jcyA9ICZ2 dXBkYXRlX25vX2xvY2tfaXJxX2luZm9fZnVuY3NcDQo+ICAgCX0NCj4gICANCj4gICAjZGVmaW5l IHZibGFua19pbnRfZW50cnkocmVnX251bSlcDQo+IEBAIC0zMTUsMTIgKzMzNSwxMiBAQCBpcnFf c291cmNlX2luZm9fZGNuMTBbREFMX0lSUV9TT1VSQ0VTX05VTUJFUl0gPSB7DQo+ICAgCWRjX3Vu ZGVyZmxvd19pbnRfZW50cnkoNiksDQo+ICAgCVtEQ19JUlFfU09VUkNFX0RNQ1VfU0NQXSA9IGR1 bW15X2lycV9lbnRyeSgpLA0KPiAgIAlbRENfSVJRX1NPVVJDRV9WQklPU19TV10gPSBkdW1teV9p cnFfZW50cnkoKSwNCj4gLQl2dXBkYXRlX2ludF9lbnRyeSgwKSwNCj4gLQl2dXBkYXRlX2ludF9l bnRyeSgxKSwNCj4gLQl2dXBkYXRlX2ludF9lbnRyeSgyKSwNCj4gLQl2dXBkYXRlX2ludF9lbnRy eSgzKSwNCj4gLQl2dXBkYXRlX2ludF9lbnRyeSg0KSwNCj4gLQl2dXBkYXRlX2ludF9lbnRyeSg1 KSwNCj4gKwl2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDApLA0KPiArCXZ1cGRhdGVfbm9fbG9j a19pbnRfZW50cnkoMSksDQo+ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgyKSwNCj4gKwl2 dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDMpLA0KPiArCXZ1cGRhdGVfbm9fbG9ja19pbnRfZW50 cnkoNCksDQo+ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSg1KSwNCj4gICAJdmJsYW5rX2lu dF9lbnRyeSgwKSwNCj4gICAJdmJsYW5rX2ludF9lbnRyeSgxKSwNCj4gICAJdmJsYW5rX2ludF9l bnRyeSgyKSwNCj4gDQoNCk5pY2hvbGFzIEthemxhdXNrYXMNCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeA==