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. (v2) Date: Tue, 26 Mar 2019 17:49:30 +0000 Message-ID: References: <20190322200428.4008-1-mario.kleiner.de@gmail.com> <20190322200428.4008-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: <20190322200428.4008-4-mario.kleiner.de-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US Content-ID: <149D8F6601F4E34DBB1A84F5604C827A-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: "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org T24gMy8yMi8xOSA0OjA0IFBNLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPiBJbiBWUlIgbW9kZSwg cHJvcGVyIHZibGFuay9wYWdlZmxpcCB0aW1lc3RhbXBzIGNhbiBvbmx5IGJlIGNvbXB1dGVkDQo+ IGFmdGVyIHRoZSBkaXNwbGF5IHNjYW5vdXQgcG9zaXRpb24gaGFzIGxlZnQgZnJvbnQtcG9yY2gu IFRoZXJlZm9yZQ0KPiBkZWxheSBjYWxscyB0byBkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCksIGFu ZCB0aGVyZWJ5IGNhbGxzIHRvDQo+IGRybV91cGRhdGVfdmJsYW5rX2NvdW50KCkgYW5kIHBhZ2Vm bGlwIGV2ZW50IGRlbGl2ZXJ5LCB0byBhZnRlciB0aGUNCj4gZW5kIG9mIGZyb250LXBvcmNoIHdo ZW4gaW4gVlJSIG1vZGUuDQo+IA0KPiBXZSBhZGQgYSBuZXcgdnVwZGF0ZSBpcnEsIHdoaWNoIHRy aWdnZXJzIGF0IHRoZSBlbmQgb2YgdGhlIHZ1cGRhdGUNCj4gaW50ZXJ2YWwsIGllLiBhdCB0aGUg ZW5kIG9mIHZibGFuaywgYW5kIGNhbGxzIHRoZSBjb3JlIHZibGFuayBoYW5kbGVyDQo+IGZ1bmN0 aW9uLiBUaGUgbmV3IGlycSBoYW5kbGVyIGlzIG5vdCBleGVjdXRlZCBpbiBzdGFuZGFyZCBub24t VlJSDQo+IG1vZGUsIHNvIHZibGFuayBoYW5kbGluZyBmb3IgZml4ZWQgcmVmcmVzaCByYXRlIG1v ZGUgaXMgaWRlbnRpY2FsDQo+IHRvIHRoZSBwYXN0IGltcGxlbWVudGF0aW9uLg0KPiANCj4gdjI6 IEltcGxlbWVudCBmZWVkYmFjayBieSBOaWNob2xhcyBhbmQgUGF1bCBNZW56ZWwuDQo+IA0KPiBT aWduZWQtb2ZmLWJ5OiBNYXJpbyBLbGVpbmVyIDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNvbT4N Cj4gQWNrZWQtYnk6IEhhcnJ5IFdlbnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29tPg0KDQpS ZXZpZXdlZC1ieTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQu Y29tPg0KDQpUaGlzIHBhdGNoIHNlZW1zIHJlYXNvbmFibGUgdG8gbWUgZm9yIHRoZSBtb3N0IHBh cnQuIEkgZGlkIHRlc3Rpbmcgb24gDQp0aGUgcHJldmlvdXMgdmVyc2lvbiBhbmQgc2VlbXMgdG8g ZG8gd2hhdCBpdCBpbnRlbmRzIHRvLg0KDQpIYXJyeSBtYWRlIGdvb2QgcG9pbnRzIGFib3V0IHRo ZSBwb3RlbnRpYWwgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoIA0KVlVQREFURSAtIGl0J3MgZGVw ZW5kZW50IG9uIHRoZSB0aW1pbmcgZm9yIHRoZSBtb2RlIGFuZCBjb3VsZCANCnBvdGVudGlhbGx5 IGV2ZW4gYmUgYmVmb3JlIGxpbmUgMCwgYnV0IEkgdGhpbmsgdGhhdCdzIHVubGlrZWx5IHRvIGhh cHBlbiANCmZvciBhbnkgbW9uaXRvciB0aGF0IHN1cHBvcnRzIGFkYXB0aXZlIHN5bmMuDQoNCkkn ZCBsaWtlIHRvIGxvb2sgaW50byBtb3ZpbmcgYWxsIG9mIHRoaXMgb3ZlciB0byBWTElORSBpbnN0 ZWFkIGF0IHNvbWUgDQpwb2ludCBmb3IgYSBndWFyYW50ZWUgb24gd2hlbiB0aGVzZSBldmVudHMg Z2V0IHNlbnQgdG8gdXNlcnNwYWNlIGJ1dCBmb3IgDQpub3cgdGhpcyBpcyBwcm9iYWJseSBnb29k IGVub3VnaCBmb3IgcmVzb2x2aW5nIHRoZXNlIHRpbWVzdGFtcCBpc3N1ZXMuDQoNClRoZXJlIHN0 aWxsIG5lZWRzIHRvIGJlIHRoYXQgb3RoZXIgcGF0Y2ggcHJlY2VkaW5nIHlvdXIgZmlyc3Qgb25l IHRoYXQgDQphZGRyZXNzZXMgdGhlIGZyZWVzeW5jIGNvbmZpZyBiZWluZyB1cGRhdGVkIGFmdGVy IGl0J3MgY2hlY2tlZCBmb3IgDQprZWVwaW5nIHRoZSB2YmxhbmsgcmVmZXJlbmNlLg0KDQpJIHNo b3VsZCBiZSBhYmxlIHRvIGZpbmQgc29tZSB0aW1lIHRoaXMgd2VlayB0byB3cml0ZSB1cCBhIHBh dGNoIHRoYXQgDQpmaXhlcyB0aGF0IHByb2JsZW0gYW5kIHNlbmQgaXQgdG8gYW1kLWdmeCBpZiB5 b3UgaGF2ZW4ndCBhbHJlYWR5IHRha2VuIGEgDQpsb29rIGF0IHRoZSBpc3N1ZS4NCg0KTmljaG9s YXMgS2F6bGF1c2thcw0KDQo+IC0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oICAgICAgICAgICB8ICAgMSArDQo+ICAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbS5jIHwgMTI4ICsrKysrKysrKysrKysrKysrLQ0KPiAgIC4uLi9ncHUv ZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCB8ICAgOSArKw0KPiAgIC4uLi9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYyB8ICAyMiArKysNCj4gICAu Li4vZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYyAgICAgICAgfCAgIDcgKy0NCj4g ICAuLi4vZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYyAgICAgICAgfCAgIDcgKy0N Cj4gICAuLi4vZGlzcGxheS9kYy9pcnEvZGNlODAvaXJxX3NlcnZpY2VfZGNlODAuYyAgfCAgIDYg Ky0NCj4gICAuLi4vZGlzcGxheS9kYy9pcnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYyAgfCAg NDAgKysrKy0tDQo+ICAgOCBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKSwgMTYgZGVs ZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaA0KPiBpbmRleCA2 ZTcxNzQ5Y2IzYmIuLjYyOTQzMTZmMjRjNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1LmgNCj4gQEAgLTgyNyw2ICs4MjcsNyBAQCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSB7DQo+ ICAgCS8qIEZvciBwcmUtRENFMTEuIERDRTExIGFuZCBsYXRlciBhcmUgaW4gInN0cnVjdCBhbWRn cHVfZGV2aWNlLT5kbSIgKi8NCj4gICAJc3RydWN0IHdvcmtfc3RydWN0CQlob3RwbHVnX3dvcms7 DQo+ICAgCXN0cnVjdCBhbWRncHVfaXJxX3NyYwkJY3J0Y19pcnE7DQo+ICsJc3RydWN0IGFtZGdw dV9pcnFfc3JjCQl2dXBkYXRlX2lycTsNCj4gICAJc3RydWN0IGFtZGdwdV9pcnFfc3JjCQlwYWdl ZmxpcF9pcnE7DQo+ICAgCXN0cnVjdCBhbWRncHVfaXJxX3NyYwkJaHBkX2lycTsNCj4gICANCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5j DQo+IGluZGV4IGFhYmQyM2ZhMDc2Ni4uZmUyMDc5ODhkMGIyIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMNCj4gQEAgLTMx NSw2ICszMTUsMzIgQEAgc3RhdGljIHZvaWQgZG1fcGZsaXBfaGlnaF9pcnEodm9pZCAqaW50ZXJy dXB0X3BhcmFtcykNCj4gICAJZHJtX2NydGNfdmJsYW5rX3B1dCgmYW1kZ3B1X2NydGMtPmJhc2Up Ow0KPiAgIH0NCj4gICANCj4gK3N0YXRpYyB2b2lkIGRtX3Z1cGRhdGVfaGlnaF9pcnEodm9pZCAq aW50ZXJydXB0X3BhcmFtcykNCj4gK3sNCj4gKwlzdHJ1Y3QgY29tbW9uX2lycV9wYXJhbXMgKmly cV9wYXJhbXMgPSBpbnRlcnJ1cHRfcGFyYW1zOw0KPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gaXJxX3BhcmFtcy0+YWRldjsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2NydGMgKmFjcnRjOw0K PiArCXN0cnVjdCBkbV9jcnRjX3N0YXRlICphY3J0Y19zdGF0ZTsNCj4gKw0KPiArCWFjcnRjID0g Z2V0X2NydGNfYnlfb3RnX2luc3QoYWRldiwgaXJxX3BhcmFtcy0+aXJxX3NyYyAtIElSUV9UWVBF X1ZVUERBVEUpOw0KPiArDQo+ICsJaWYgKGFjcnRjKSB7DQo+ICsJCWFjcnRjX3N0YXRlID0gdG9f ZG1fY3J0Y19zdGF0ZShhY3J0Yy0+YmFzZS5zdGF0ZSk7DQo+ICsNCj4gKwkJRFJNX0RFQlVHX0RS SVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRjLT5jcnRjX2lkLA0KPiArCQkJ CSBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpOw0KPiArDQo+ICsJCS8qIENvcmUg dmJsYW5rIGhhbmRsaW5nIGlzIGRvbmUgaGVyZSBhZnRlciBlbmQgb2YgZnJvbnQtcG9yY2ggaW4N Cj4gKwkJICogdnJyIG1vZGUsIGFzIHZibGFuayB0aW1lc3RhbXBpbmcgd2lsbCBnaXZlIHZhbGlk IHJlc3VsdHMNCj4gKwkJICogd2hpbGUgbm93IGRvbmUgYWZ0ZXIgZnJvbnQtcG9yY2guIFRoaXMg d2lsbCBhbHNvIGRlbGl2ZXINCj4gKwkJICogcGFnZS1mbGlwIGNvbXBsZXRpb24gZXZlbnRzIHRo YXQgaGF2ZSBiZWVuIHF1ZXVlZCB0byB1cw0KPiArCQkgKiBpZiBhIHBhZ2VmbGlwIGhhcHBlbmVk IGluc2lkZSBmcm9udC1wb3JjaC4NCj4gKwkJICovDQo+ICsJCWlmIChhbWRncHVfZG1fdnJyX2Fj dGl2ZShhY3J0Y19zdGF0ZSkpDQo+ICsJCQlkcm1fY3J0Y19oYW5kbGVfdmJsYW5rKCZhY3J0Yy0+ YmFzZSk7DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICAgc3RhdGljIHZvaWQgZG1fY3J0Y19oaWdoX2ly cSh2b2lkICppbnRlcnJ1cHRfcGFyYW1zKQ0KPiAgIHsNCj4gICAJc3RydWN0IGNvbW1vbl9pcnFf cGFyYW1zICppcnFfcGFyYW1zID0gaW50ZXJydXB0X3BhcmFtczsNCj4gQEAgLTMyNSwxMSArMzUx LDI0IEBAIHN0YXRpYyB2b2lkIGRtX2NydGNfaGlnaF9pcnEodm9pZCAqaW50ZXJydXB0X3BhcmFt cykNCj4gICAJYWNydGMgPSBnZXRfY3J0Y19ieV9vdGdfaW5zdChhZGV2LCBpcnFfcGFyYW1zLT5p cnFfc3JjIC0gSVJRX1RZUEVfVkJMQU5LKTsNCj4gICANCj4gICAJaWYgKGFjcnRjKSB7DQo+IC0J CWRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5iYXNlKTsNCj4gLQkJYW1kZ3B1X2RtX2Ny dGNfaGFuZGxlX2NyY19pcnEoJmFjcnRjLT5iYXNlKTsNCj4gLQ0KPiAgIAkJYWNydGNfc3RhdGUg PSB0b19kbV9jcnRjX3N0YXRlKGFjcnRjLT5iYXNlLnN0YXRlKTsNCj4gICANCj4gKwkJRFJNX0RF QlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRjLT5jcnRjX2lkLA0K PiArCQkJCSBhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpOw0KPiArDQo+ICsJCS8q IENvcmUgdmJsYW5rIGhhbmRsaW5nIGF0IHN0YXJ0IG9mIGZyb250LXBvcmNoIGlzIG9ubHkgcG9z c2libGUNCj4gKwkJICogaW4gbm9uLXZyciBtb2RlLCBhcyBvbmx5IHRoZXJlIHZibGFuayB0aW1l c3RhbXBpbmcgd2lsbCBnaXZlDQo+ICsJCSAqIHZhbGlkIHJlc3VsdHMgd2hpbGUgZG9uZSBpbiBm cm9udC1wb3JjaC4gT3RoZXJ3aXNlIGRlZmVyIGl0DQo+ICsJCSAqIHRvIGRtX3Z1cGRhdGVfaGln aF9pcnEgYWZ0ZXIgZW5kIG9mIGZyb250LXBvcmNoLg0KPiArCQkgKi8NCj4gKwkJaWYgKCFhbWRn cHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+ICsJCQlkcm1fY3J0Y19oYW5kbGVfdmJs YW5rKCZhY3J0Yy0+YmFzZSk7DQo+ICsNCj4gKwkJLyogRm9sbG93aW5nIHN0dWZmIG11c3QgaGFw cGVuIGF0IHN0YXJ0IG9mIHZibGFuaywgZm9yIGNyYw0KPiArCQkgKiBjb21wdXRhdGlvbiBhbmQg YmVsb3ctdGhlLXJhbmdlIGJ0ciBzdXBwb3J0IGluIHZyciBtb2RlLg0KPiArCQkgKi8NCj4gKwkJ YW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFjcnRjLT5iYXNlKTsNCj4gKw0KPiAgIAkJ aWYgKGFjcnRjX3N0YXRlLT5zdHJlYW0gJiYNCj4gICAJCSAgICBhY3J0Y19zdGF0ZS0+dnJyX3Bh cmFtcy5zdXBwb3J0ZWQgJiYNCj4gICAJCSAgICBhY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfY29uZmln LnN0YXRlID09IFZSUl9TVEFURV9BQ1RJVkVfVkFSSUFCTEUpIHsNCj4gQEAgLTE0NDcsNiArMTQ4 NiwyNyBAQCBzdGF0aWMgaW50IGRjZTExMF9yZWdpc3Rlcl9pcnFfaGFuZGxlcnMoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgCQkJCWRtX2NydGNfaGlnaF9pcnEsIGNfaXJxX3BhcmFt cyk7DQo+ICAgCX0NCj4gICANCj4gKwkvKiBVc2UgVlVQREFURSBpbnRlcnJ1cHQgKi8NCj4gKwlm b3IgKGkgPSBWSVNMQU5EUzMwX0lWX1NSQ0lEX0QxX1ZfVVBEQVRFX0lOVDsgaSA8PSBWSVNMQU5E UzMwX0lWX1NSQ0lEX0Q2X1ZfVVBEQVRFX0lOVDsgaSArPSAyKSB7DQo+ICsJCXIgPSBhbWRncHVf aXJxX2FkZF9pZChhZGV2LCBjbGllbnRfaWQsIGksICZhZGV2LT52dXBkYXRlX2lycSk7DQo+ICsJ CWlmIChyKSB7DQo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgdnVwZGF0ZSBpcnEgaWQh XG4iKTsNCj4gKwkJCXJldHVybiByOw0KPiArCQl9DQo+ICsNCj4gKwkJaW50X3BhcmFtcy5pbnRf Y29udGV4dCA9IElOVEVSUlVQVF9ISUdIX0lSUV9DT05URVhUOw0KPiArCQlpbnRfcGFyYW1zLmly cV9zb3VyY2UgPQ0KPiArCQkJZGNfaW50ZXJydXB0X3RvX2lycV9zb3VyY2UoZGMsIGksIDApOw0K PiArDQo+ICsJCWNfaXJxX3BhcmFtcyA9ICZhZGV2LT5kbS52dXBkYXRlX3BhcmFtc1tpbnRfcGFy YW1zLmlycV9zb3VyY2UgLSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxXTsNCj4gKw0KPiArCQljX2ly cV9wYXJhbXMtPmFkZXYgPSBhZGV2Ow0KPiArCQljX2lycV9wYXJhbXMtPmlycV9zcmMgPSBpbnRf cGFyYW1zLmlycV9zb3VyY2U7DQo+ICsNCj4gKwkJYW1kZ3B1X2RtX2lycV9yZWdpc3Rlcl9pbnRl cnJ1cHQoYWRldiwgJmludF9wYXJhbXMsDQo+ICsJCQkJZG1fdnVwZGF0ZV9oaWdoX2lycSwgY19p cnFfcGFyYW1zKTsNCj4gKwl9DQo+ICsNCj4gICAJLyogVXNlIEdSUEhfUEZMSVAgaW50ZXJydXB0 ICovDQo+ICAgCWZvciAoaSA9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDFfR1JQSF9QRkxJUDsNCj4g ICAJCQlpIDw9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDZfR1JQSF9QRkxJUDsgaSArPSAyKSB7DQo+ IEBAIC0xNTMyLDYgKzE1OTIsMzQgQEAgc3RhdGljIGludCBkY24xMF9yZWdpc3Rlcl9pcnFfaGFu ZGxlcnMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAgCQkJCWRtX2NydGNfaGlnaF9p cnEsIGNfaXJxX3BhcmFtcyk7DQo+ICAgCX0NCj4gICANCj4gKwkvKiBVc2UgVlVQREFURV9OT19M T0NLIGludGVycnVwdCBvbiBEQ04sIHdoaWNoIHNlZW1zIHRvIGNvcnJlc3BvbmQgdG8NCj4gKwkg KiB0aGUgcmVndWxhciBWVVBEQVRFIGludGVycnVwdCBvbiBEQ0UuIFdlIHdhbnQgRENfSVJRX1NP VVJDRV9WVVBEQVRFeA0KPiArCSAqIHRvIHRyaWdnZXIgYXQgZW5kIG9mIGVhY2ggdmJsYW5rLCBy ZWdhcmRsZXNzIG9mIHN0YXRlIG9mIHRoZSBsb2NrLA0KPiArCSAqIG1hdGNoaW5nIERDRSBiZWhh dmlvdXIuDQo+ICsJICovDQo+ICsJZm9yIChpID0gRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1Zf VVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOw0KPiArCSAgICAgaSA8PSBEQ05fMV8wX19TUkNJRF9f T1RHMF9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQgKyBhZGV2LT5tb2RlX2luZm8ubnVt X2NydGMgLSAxOw0KPiArCSAgICAgaSsrKSB7DQo+ICsJCXIgPSBhbWRncHVfaXJxX2FkZF9pZChh ZGV2LCBTT0MxNV9JSF9DTElFTlRJRF9EQ0UsIGksICZhZGV2LT52dXBkYXRlX2lycSk7DQo+ICsN Cj4gKwkJaWYgKHIpIHsNCj4gKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCB2dXBkYXRlIGly cSBpZCFcbiIpOw0KPiArCQkJcmV0dXJuIHI7DQo+ICsJCX0NCj4gKw0KPiArCQlpbnRfcGFyYW1z LmludF9jb250ZXh0ID0gSU5URVJSVVBUX0hJR0hfSVJRX0NPTlRFWFQ7DQo+ICsJCWludF9wYXJh bXMuaXJxX3NvdXJjZSA9DQo+ICsJCQlkY19pbnRlcnJ1cHRfdG9faXJxX3NvdXJjZShkYywgaSwg MCk7DQo+ICsNCj4gKwkJY19pcnFfcGFyYW1zID0gJmFkZXYtPmRtLnZ1cGRhdGVfcGFyYW1zW2lu dF9wYXJhbXMuaXJxX3NvdXJjZSAtIERDX0lSUV9TT1VSQ0VfVlVQREFURTFdOw0KPiArDQo+ICsJ CWNfaXJxX3BhcmFtcy0+YWRldiA9IGFkZXY7DQo+ICsJCWNfaXJxX3BhcmFtcy0+aXJxX3NyYyA9 IGludF9wYXJhbXMuaXJxX3NvdXJjZTsNCj4gKw0KPiArCQlhbWRncHVfZG1faXJxX3JlZ2lzdGVy X2ludGVycnVwdChhZGV2LCAmaW50X3BhcmFtcywNCj4gKwkJCQlkbV92dXBkYXRlX2hpZ2hfaXJx LCBjX2lycV9wYXJhbXMpOw0KPiArCX0NCj4gKw0KPiAgIAkvKiBVc2UgR1JQSF9QRkxJUCBpbnRl cnJ1cHQgKi8NCj4gICAJZm9yIChpID0gRENOXzFfMF9fU1JDSURfX0hVQlAwX0ZMSVBfSU5URVJS VVBUOw0KPiAgIAkJCWkgPD0gRENOXzFfMF9fU1JDSURfX0hVQlAwX0ZMSVBfSU5URVJSVVBUICsg YWRldi0+bW9kZV9pbmZvLm51bV9jcnRjIC0gMTsNCj4gQEAgLTMyMjMsMTIgKzMzMTEsNDEgQEAg ZG1fY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPiAgIAlyZXR1 cm4gJnN0YXRlLT5iYXNlOw0KPiAgIH0NCj4gICANCj4gK3N0YXRpYyBpbmxpbmUgaW50IGRtX3Nl dF92dXBkYXRlX2lycShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQ0KPiArew0K PiArCWVudW0gZGNfaXJxX3NvdXJjZSBpcnFfc291cmNlOw0KPiArCXN0cnVjdCBhbWRncHVfY3J0 YyAqYWNydGMgPSB0b19hbWRncHVfY3J0YyhjcnRjKTsNCj4gKwlzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiA9IGNydGMtPmRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJaW50IHJjOw0KPiArDQo+ICsJ aXJxX3NvdXJjZSA9IElSUV9UWVBFX1ZVUERBVEUgKyBhY3J0Yy0+b3RnX2luc3Q7DQo+ICsNCj4g KwlyYyA9IGRjX2ludGVycnVwdF9zZXQoYWRldi0+ZG0uZGMsIGlycV9zb3VyY2UsIGVuYWJsZSkg PyAwIDogLUVCVVNZOw0KPiArDQo+ICsJRFJNX0RFQlVHX0RSSVZFUigiY3J0YyAlZCAtIHZ1cGRh dGUgaXJxICVzYWJsaW5nOiByPSVkXG4iLA0KPiArCQkJIGFjcnRjLT5jcnRjX2lkLCBlbmFibGUg PyAiZW4iIDogImRpcyIsIHJjKTsNCj4gKwlyZXR1cm4gcmM7DQo+ICt9DQo+ICAgDQo+ICAgc3Rh dGljIGlubGluZSBpbnQgZG1fc2V0X3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wg ZW5hYmxlKQ0KPiAgIHsNCj4gICAJZW51bSBkY19pcnFfc291cmNlIGlycV9zb3VyY2U7DQo+ICAg CXN0cnVjdCBhbWRncHVfY3J0YyAqYWNydGMgPSB0b19hbWRncHVfY3J0YyhjcnRjKTsNCj4gICAJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOw0KPiAr CXN0cnVjdCBkbV9jcnRjX3N0YXRlICphY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpOw0KPiArCWludCByYyA9IDA7DQo+ICsNCj4gKwlpZiAoZW5hYmxlKSB7DQo+ICsJ CS8qIHZibGFuayBpcnEgb24gLT4gT25seSBuZWVkIHZ1cGRhdGUgaXJxIGluIHZyciBtb2RlICov DQo+ICsJCWlmIChhbWRncHVfZG1fdnJyX2FjdGl2ZShhY3J0Y19zdGF0ZSkpDQo+ICsJCQlyYyA9 IGRtX3NldF92dXBkYXRlX2lycShjcnRjLCB0cnVlKTsNCj4gKwl9IGVsc2Ugew0KPiArCQkvKiB2 YmxhbmsgaXJxIG9mZiAtPiB2dXBkYXRlIGlycSBvZmYgKi8NCj4gKwkJcmMgPSBkbV9zZXRfdnVw ZGF0ZV9pcnEoY3J0YywgZmFsc2UpOw0KPiArCX0NCj4gKw0KPiArCWlmIChyYykNCj4gKwkJcmV0 dXJuIHJjOw0KPiAgIA0KPiAgIAlpcnFfc291cmNlID0gSVJRX1RZUEVfVkJMQU5LICsgYWNydGMt Pm90Z19pbnN0Ow0KPiAgIAlyZXR1cm4gZGNfaW50ZXJydXB0X3NldChhZGV2LT5kbS5kYywgaXJx X3NvdXJjZSwgZW5hYmxlKSA/IDAgOiAtRUJVU1k7DQo+IEBAIC00NzM3LDcgKzQ4NTQsMTEgQEAg c3RhdGljIHZvaWQgYW1kZ3B1X2RtX2hhbmRsZV92cnJfdHJhbnNpdGlvbihzdHJ1Y3QgZG1fY3J0 Y19zdGF0ZSAqb2xkX3N0YXRlLA0KPiAgIAkJICogV2hpbGUgVlJSIGlzIGFjdGl2ZSwgd2UgbXVz dCBub3QgZGlzYWJsZSB2YmxhbmsgaXJxLCBhcyBhDQo+ICAgCQkgKiByZWVuYWJsZSBhZnRlciBk aXNhYmxlIHdvdWxkIGNvbXB1dGUgYm9ndXMgdmJsYW5rL3BmbGlwDQo+ICAgCQkgKiB0aW1lc3Rh bXBzIGlmIGl0IGxpa2VseSBoYXBwZW5lZCBpbnNpZGUgZGlzcGxheSBmcm9udC1wb3JjaC4NCj4g KwkJICoNCj4gKwkJICogV2UgYWxzbyBuZWVkIHZ1cGRhdGUgaXJxIGZvciB0aGUgYWN0dWFsIGNv cmUgdmJsYW5rIGhhbmRsaW5nDQo+ICsJCSAqIGF0IGVuZCBvZiB2YmxhbmsuDQo+ICAgCQkgKi8N Cj4gKwkJZG1fc2V0X3Z1cGRhdGVfaXJxKG5ld19zdGF0ZS0+YmFzZS5jcnRjLCB0cnVlKTsNCj4g ICAJCWRybV9jcnRjX3ZibGFua19nZXQobmV3X3N0YXRlLT5iYXNlLmNydGMpOw0KPiAgIAkJRFJN X0RFQlVHX0RSSVZFUigiJXM6IGNydGM9JXUgVlJSIG9mZi0+b246IEdldCB2YmxhbmsgcmVmXG4i LA0KPiAgIAkJCQkgX19mdW5jX18sIG5ld19zdGF0ZS0+YmFzZS5jcnRjLT5iYXNlLmlkKTsNCj4g QEAgLTQ3NDUsNiArNDg2Niw3IEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9oYW5kbGVfdnJyX3Ry YW5zaXRpb24oc3RydWN0IGRtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSwNCj4gICAJCS8qIFRyYW5z aXRpb24gVlJSIGFjdGl2ZSAtPiBpbmFjdGl2ZToNCj4gICAJCSAqIEFsbG93IHZibGFuayBpcnEg ZGlzYWJsZSBhZ2FpbiBmb3IgZml4ZWQgcmVmcmVzaCByYXRlLg0KPiAgIAkJICovDQo+ICsJCWRt X3NldF92dXBkYXRlX2lycShuZXdfc3RhdGUtPmJhc2UuY3J0YywgZmFsc2UpOw0KPiAgIAkJZHJt X2NydGNfdmJsYW5rX3B1dChuZXdfc3RhdGUtPmJhc2UuY3J0Yyk7DQo+ICAgCQlEUk1fREVCVUdf RFJJVkVSKCIlczogY3J0Yz0ldSBWUlIgb24tPm9mZjogRHJvcCB2YmxhbmsgcmVmXG4iLA0KPiAg IAkJCQkgX19mdW5jX18sIG5ld19zdGF0ZS0+YmFzZS5jcnRjLT5iYXNlLmlkKTsNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oDQo+IGlu ZGV4IDc3M2VmNWNhODQ0MS4uM2EwYjYxNjRjNzU1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oDQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgNCj4gQEAgLTE4Miw2ICsx ODIsMTUgQEAgc3RydWN0IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgew0KPiAgIAlzdHJ1Y3QgY29t bW9uX2lycV9wYXJhbXMNCj4gICAJdmJsYW5rX3BhcmFtc1tEQ19JUlFfU09VUkNFX1ZCTEFOSzYg LSBEQ19JUlFfU09VUkNFX1ZCTEFOSzEgKyAxXTsNCj4gICANCj4gKwkvKioNCj4gKwkgKiBAdnVw ZGF0ZV9wYXJhbXM6DQo+ICsJICoNCj4gKwkgKiBWZXJ0aWNhbCB1cGRhdGUgSVJRIHBhcmFtZXRl cnMsIHBhc3NlZCB0byByZWdpc3RlcmVkIGhhbmRsZXJzIHdoZW4NCj4gKwkgKiB0cmlnZ2VyZWQu DQo+ICsJICovDQo+ICsJc3RydWN0IGNvbW1vbl9pcnFfcGFyYW1zDQo+ICsJdnVwZGF0ZV9wYXJh bXNbRENfSVJRX1NPVVJDRV9WVVBEQVRFNiAtIERDX0lSUV9TT1VSQ0VfVlVQREFURTEgKyAxXTsN Cj4gKw0KPiAgIAlzcGlubG9ja190IGlycV9oYW5kbGVyX2xpc3RfdGFibGVfbG9jazsNCj4gICAN Cj4gICAJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodF9kZXY7DQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2lycS5j DQo+IGluZGV4IGNkMTBmNzdjZGViMC4uZmQyMmI0NDc0ZGJmIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYw0K PiBAQCAtNjc0LDExICs2NzQsMzAgQEAgc3RhdGljIGludCBhbWRncHVfZG1fc2V0X2NydGNfaXJx X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIAkJX19mdW5jX18pOw0KPiAg IH0NCj4gICANCj4gK3N0YXRpYyBpbnQgYW1kZ3B1X2RtX3NldF92dXBkYXRlX2lycV9zdGF0ZShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4gKwkJCQkJICAgc3RydWN0IGFtZGdwdV9pcnFf c3JjICpzb3VyY2UsDQo+ICsJCQkJCSAgIHVuc2lnbmVkIGludCBjcnRjX2lkLA0KPiArCQkJCQkg ICBlbnVtIGFtZGdwdV9pbnRlcnJ1cHRfc3RhdGUgc3RhdGUpDQo+ICt7DQo+ICsJcmV0dXJuIGRt X2lycV9zdGF0ZSgNCj4gKwkJYWRldiwNCj4gKwkJc291cmNlLA0KPiArCQljcnRjX2lkLA0KPiAr CQlzdGF0ZSwNCj4gKwkJSVJRX1RZUEVfVlVQREFURSwNCj4gKwkJX19mdW5jX18pOw0KPiArfQ0K PiArDQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfaXJxX3NyY19mdW5jcyBkbV9jcnRj X2lycV9mdW5jcyA9IHsNCj4gICAJLnNldCA9IGFtZGdwdV9kbV9zZXRfY3J0Y19pcnFfc3RhdGUs DQo+ICAgCS5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLA0KPiAgIH07DQo+ICAgDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcnFfc3JjX2Z1bmNzIGRtX3Z1cGRhdGVfaXJx X2Z1bmNzID0gew0KPiArCS5zZXQgPSBhbWRncHVfZG1fc2V0X3Z1cGRhdGVfaXJxX3N0YXRlLA0K PiArCS5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLA0KPiArfTsNCj4gKw0KPiAgIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVuY3MgZG1fcGFnZWZsaXBfaXJxX2Z1 bmNzID0gew0KPiAgIAkuc2V0ID0gYW1kZ3B1X2RtX3NldF9wZmxpcF9pcnFfc3RhdGUsDQo+ICAg CS5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLA0KPiBAQCAtNjk1LDYgKzcxNCw5IEBA IHZvaWQgYW1kZ3B1X2RtX3NldF9pcnFfZnVuY3Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYp DQo+ICAgCWFkZXYtPmNydGNfaXJxLm51bV90eXBlcyA9IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0 YzsNCj4gICAJYWRldi0+Y3J0Y19pcnEuZnVuY3MgPSAmZG1fY3J0Y19pcnFfZnVuY3M7DQo+ICAg DQo+ICsJYWRldi0+dnVwZGF0ZV9pcnEubnVtX3R5cGVzID0gYWRldi0+bW9kZV9pbmZvLm51bV9j cnRjOw0KPiArCWFkZXYtPnZ1cGRhdGVfaXJxLmZ1bmNzID0gJmRtX3Z1cGRhdGVfaXJxX2Z1bmNz Ow0KPiArDQo+ICAgCWFkZXYtPnBhZ2VmbGlwX2lycS5udW1fdHlwZXMgPSBhZGV2LT5tb2RlX2lu Zm8ubnVtX2NydGM7DQo+ICAgCWFkZXYtPnBhZ2VmbGlwX2lycS5mdW5jcyA9ICZkbV9wYWdlZmxp cF9pcnFfZnVuY3M7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5jDQo+IGluZGV4 IGFmZTA4NzZmZTZmOC4uODY5ODdmNWU4YmQ1IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYw0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9k Y2UxMTAuYw0KPiBAQCAtODEsNiArODEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291 cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gew0KPiAgIAkuYWNrID0gTlVM TA0KPiAgIH07DQo+ICAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9zb3VyY2VfaW5mb19m dW5jcyB2dXBkYXRlX2lycV9pbmZvX2Z1bmNzID0gew0KPiArCS5zZXQgPSBOVUxMLA0KPiArCS5h Y2sgPSBOVUxMDQo+ICt9Ow0KPiArDQo+ICAgI2RlZmluZSBocGRfaW50X2VudHJ5KHJlZ19udW0p XA0KPiAgIAlbRENfSVJRX1NPVVJDRV9IUEQxICsgcmVnX251bV0gPSB7XA0KPiAgIAkJLmVuYWJs ZV9yZWcgPSBtbUhQRCAjIyByZWdfbnVtICMjIF9EQ19IUERfSU5UX0NPTlRST0wsXA0KPiBAQCAt MTM3LDcgKzE0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNz IHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4gICAJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRV U19fQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFTSyxcDQo+ICAgCQkuYWNrX3ZhbHVlID1cDQo+ ICAgCQlDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NMRUFSX01B U0ssXA0KPiAtCQkuZnVuY3MgPSAmdmJsYW5rX2lycV9pbmZvX2Z1bmNzXA0KPiArCQkuZnVuY3Mg PSAmdnVwZGF0ZV9pcnFfaW5mb19mdW5jc1wNCj4gICAJfQ0KPiAgIA0KPiAgICNkZWZpbmUgdmJs YW5rX2ludF9lbnRyeShyZWdfbnVtKVwNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMjAvaXJxX3NlcnZpY2VfZGNlMTIwLmMNCj4g aW5kZXggMWVhNzI1NmVjODliLi43NTBiYTBhYjQxMDYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jDQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2 aWNlX2RjZTEyMC5jDQo+IEBAIC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGly cV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7DQo+ICAgCS5hY2sg PSBOVUxMDQo+ICAgfTsNCj4gICANCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9p bmZvX2Z1bmNzIHZ1cGRhdGVfaXJxX2luZm9fZnVuY3MgPSB7DQo+ICsJLnNldCA9IE5VTEwsDQo+ ICsJLmFjayA9IE5VTEwNCj4gK307DQo+ICsNCj4gICAjZGVmaW5lIEJBU0VfSU5ORVIoc2VnKSBc DQo+ICAgCURDRV9CQVNFX19JTlNUMF9TRUcgIyMgc2VnDQo+ICAgDQo+IEBAIC0xNDAsNyArMTQ1 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2ly cV9pbmZvX2Z1bmNzID0gew0KPiAgIAkJSVJRX1JFR19FTlRSWShDUlRDLCByZWdfbnVtLFwNCj4g ICAJCQlDUlRDX0lOVEVSUlVQVF9DT05UUk9MLCBDUlRDX1ZfVVBEQVRFX0lOVF9NU0ssXA0KPiAg IAkJCUNSVENfVl9VUERBVEVfSU5UX1NUQVRVUywgQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVIpLFwN Cj4gLQkJLmZ1bmNzID0gJnZibGFua19pcnFfaW5mb19mdW5jc1wNCj4gKwkJLmZ1bmNzID0gJnZ1 cGRhdGVfaXJxX2luZm9fZnVuY3NcDQo+ICAgCX0NCj4gICANCj4gICAjZGVmaW5lIHZibGFua19p bnRfZW50cnkocmVnX251bSlcDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMNCj4gaW5kZXggOGEy MDY2YzMxM2ZlLi5kZTIxOGZlODRhNDMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9kYy9pcnEvZGNlODAvaXJxX3NlcnZpY2VfZGNlODAuYw0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMN Cj4gQEAgLTg0LDYgKzg0LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZv X2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4gICAJLmFjayA9IE5VTEwNCj4gICB9 Ow0KPiAgIA0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVw ZGF0ZV9pcnFfaW5mb19mdW5jcyA9IHsNCj4gKwkuc2V0ID0gTlVMTCwNCj4gKwkuYWNrID0gTlVM TA0KPiArfTsNCj4gICANCj4gICAjZGVmaW5lIGhwZF9pbnRfZW50cnkocmVnX251bSlcDQo+ICAg CVtEQ19JUlFfU09VUkNFX0lOVkFMSUQgKyByZWdfbnVtXSA9IHtcDQo+IEBAIC0xNDIsNyArMTQ2 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2ly cV9pbmZvX2Z1bmNzID0gew0KPiAgIAkJQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTX19DUlRDX1Zf VVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwNCj4gICAJCS5hY2tfdmFsdWUgPVwNCj4gICAJCUNSVENf Vl9VUERBVEVfSU5UX1NUQVRVU19fQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFTSyxcDQo+IC0J CS5mdW5jcyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3NcDQo+ICsJCS5mdW5jcyA9ICZ2dXBkYXRl X2lycV9pbmZvX2Z1bmNzXA0KPiAgIAl9DQo+ICAgDQo+ICAgI2RlZmluZSB2YmxhbmtfaW50X2Vu dHJ5KHJlZ19udW0pXA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jDQo+IGluZGV4IGUwNGFlNDky NDNmNi4uMTBhYzZkZWZmNWZmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvZGMvaXJxL2RjbjEwL2lycV9zZXJ2aWNlX2RjbjEwLmMNCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jDQo+IEBA IC01Niw2ICs1NiwxOCBAQCBlbnVtIGRjX2lycV9zb3VyY2UgdG9fZGFsX2lycV9zb3VyY2VfZGNu MTAoDQo+ICAgCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WQkxBTks1Ow0KPiAgIAljYXNlIERDTl8x XzBfX1NSQ0lEX19EQ19ENl9PVEdfVlNUQVJUVVA6DQo+ICAgCQlyZXR1cm4gRENfSVJRX1NPVVJD RV9WQkxBTks2Ow0KPiArCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05P X0xPQ0tfSU5URVJSVVBUOg0KPiArCQlyZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBEQVRFMTsNCj4g KwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcxX0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQ VDoNCj4gKwkJcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTI7DQo+ICsJY2FzZSBEQ05fMV8w X19TUkNJRF9fT1RHMl9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+ICsJCXJldHVy biBEQ19JUlFfU09VUkNFX1ZVUERBVEUzOw0KPiArCWNhc2UgRENOXzFfMF9fU1JDSURfX09URzNf SUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOg0KPiArCQlyZXR1cm4gRENfSVJRX1NPVVJD RV9WVVBEQVRFNDsNCj4gKwljYXNlIERDTl8xXzBfX1NSQ0lEX19PVEc0X0lIQ19WX1VQREFURV9O T19MT0NLX0lOVEVSUlVQVDoNCj4gKwkJcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTU7DQo+ ICsJY2FzZSBEQ05fMV8wX19TUkNJRF9fT1RHNV9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJV UFQ6DQo+ICsJCXJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEU2Ow0KPiAgIAljYXNlIERDTl8x XzBfX1NSQ0lEX19IVUJQMF9GTElQX0lOVEVSUlVQVDoNCj4gICAJCXJldHVybiBEQ19JUlFfU09V UkNFX1BGTElQMTsNCj4gICAJY2FzZSBEQ05fMV8wX19TUkNJRF9fSFVCUDFfRkxJUF9JTlRFUlJV UFQ6DQo+IEBAIC0xNTMsNiArMTY1LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJj ZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4gICAJLmFjayA9IE5VTEwN Cj4gICB9Ow0KPiAgIA0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVu Y3MgdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZvX2Z1bmNzID0gew0KPiArCS5zZXQgPSBOVUxMLA0K PiArCS5hY2sgPSBOVUxMDQo+ICt9Ow0KPiArDQo+ICAgI2RlZmluZSBCQVNFX0lOTkVSKHNlZykg XA0KPiAgIAlEQ0VfQkFTRV9fSU5TVDBfU0VHICMjIHNlZw0KPiAgIA0KPiBAQCAtMjAzLDEyICsy MjAsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5r X2lycV9pbmZvX2Z1bmNzID0gew0KPiAgIAkJLmZ1bmNzID0gJnBmbGlwX2lycV9pbmZvX2Z1bmNz XA0KPiAgIAl9DQo+ICAgDQo+IC0jZGVmaW5lIHZ1cGRhdGVfaW50X2VudHJ5KHJlZ19udW0pXA0K PiArLyogdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSBtYXBzIHRvIERDX0lSUV9TT1VSQ0VfVlVQ REFURXgsIHRvIG1hdGNoIHNlbWFudGljDQo+ICsgKiBvZiBEQ0UncyBEQ19JUlFfU09VUkNFX1ZV UERBVEV4Lg0KPiArICovDQo+ICsjZGVmaW5lIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkocmVn X251bSlcDQo+ICAgCVtEQ19JUlFfU09VUkNFX1ZVUERBVEUxICsgcmVnX251bV0gPSB7XA0KPiAg IAkJSVJRX1JFR19FTlRSWShPVEcsIHJlZ19udW0sXA0KPiAtCQkJT1RHX0dMT0JBTF9TWU5DX1NU QVRVUywgVlVQREFURV9JTlRfRU4sXA0KPiAtCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQ REFURV9FVkVOVF9DTEVBUiksXA0KPiAtCQkuZnVuY3MgPSAmdmJsYW5rX2lycV9pbmZvX2Z1bmNz XA0KPiArCQkJT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9OT19MT0NLX0lOVF9FTixc DQo+ICsJCQlPVEdfR0xPQkFMX1NZTkNfU1RBVFVTLCBWVVBEQVRFX05PX0xPQ0tfRVZFTlRfQ0xF QVIpLFwNCj4gKwkJLmZ1bmNzID0gJnZ1cGRhdGVfbm9fbG9ja19pcnFfaW5mb19mdW5jc1wNCj4g ICAJfQ0KPiAgIA0KPiAgICNkZWZpbmUgdmJsYW5rX2ludF9lbnRyeShyZWdfbnVtKVwNCj4gQEAg LTMxNSwxMiArMzM1LDEyIEBAIGlycV9zb3VyY2VfaW5mb19kY24xMFtEQUxfSVJRX1NPVVJDRVNf TlVNQkVSXSA9IHsNCj4gICAJZGNfdW5kZXJmbG93X2ludF9lbnRyeSg2KSwNCj4gICAJW0RDX0lS UV9TT1VSQ0VfRE1DVV9TQ1BdID0gZHVtbXlfaXJxX2VudHJ5KCksDQo+ICAgCVtEQ19JUlFfU09V UkNFX1ZCSU9TX1NXXSA9IGR1bW15X2lycV9lbnRyeSgpLA0KPiAtCXZ1cGRhdGVfaW50X2VudHJ5 KDApLA0KPiAtCXZ1cGRhdGVfaW50X2VudHJ5KDEpLA0KPiAtCXZ1cGRhdGVfaW50X2VudHJ5KDIp LA0KPiAtCXZ1cGRhdGVfaW50X2VudHJ5KDMpLA0KPiAtCXZ1cGRhdGVfaW50X2VudHJ5KDQpLA0K PiAtCXZ1cGRhdGVfaW50X2VudHJ5KDUpLA0KPiArCXZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnko MCksDQo+ICsJdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgxKSwNCj4gKwl2dXBkYXRlX25vX2xv Y2tfaW50X2VudHJ5KDIpLA0KPiArCXZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkoMyksDQo+ICsJ dnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSg0KSwNCj4gKwl2dXBkYXRlX25vX2xvY2tfaW50X2Vu dHJ5KDUpLA0KPiAgIAl2YmxhbmtfaW50X2VudHJ5KDApLA0KPiAgIAl2YmxhbmtfaW50X2VudHJ5 KDEpLA0KPiAgIAl2YmxhbmtfaW50X2VudHJ5KDIpLA0KPiANCg0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4