From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pandiyan, Dhinakaran" Subject: Re: [PATCH 4/5] drm/i915: Introduce a non-blocking power domain for vblank interrupts Date: Thu, 7 Dec 2017 19:01:16 +0000 Message-ID: <1512674554.23630.9.camel@dk-H97M-D3H> References: <20171206224741.8600-1-dhinakaran.pandiyan@intel.com> <20171206224741.8600-4-dhinakaran.pandiyan@intel.com> <20171206235414.b6eqeuuo5pos3fnb@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171206235414.b6eqeuuo5pos3fnb@intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Vivi, Rodrigo" Cc: "daniel.vetter@ffwll.ch" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org DQoNCg0KT24gV2VkLCAyMDE3LTEyLTA2IGF0IDE1OjU0IC0wODAwLCBSb2RyaWdvIFZpdmkgd3Jv dGU6DQo+IE9uIFdlZCwgRGVjIDA2LCAyMDE3IGF0IDEwOjQ3OjQwUE0gKzAwMDAsIERoaW5ha2Fy YW4gUGFuZGl5YW4gd3JvdGU6DQo+ID4gV2hlbiBEQyBzdGF0ZXMgYXJlIGVuYWJsZWQgYW5kIFBT UiBpcyBhY3RpdmUsIHRoZSBoYXJkd2FyZSBlbnRlcnMgREM1L0RDNg0KPiA+IHN0YXRlcyByZXN1 bHRpbmcgaW4gZnJhbWUgY291bnRlciByZXNldHMuIFRoZSBmcmFtZSBjb3VudGVyIHJlc2V0cyBt ZXNzDQo+ID4gdXAgdGhlIHZibGFuayBjb3VudGluZyBsb2dpYy4gU28gaW4gb3JkZXIgdG8gZGlz YWJsZSBEQyBzdGF0ZXMgd2hlbg0KPiA+IHZibGFuayBpbnRlcnJ1cHRzIGFyZSByZXF1aXJlZCBh bmQgdG8gZGlzYWxsb3cgREMgc3RhdGVzIHdoZW4gdmJsYW5rcw0KPiA+IGludGVycnVwdHMgYXJl IGFscmVhZHkgZW5hYmxlZCwgaW50cm9kdWNlIGEgbmV3IHBvd2VyIGRvbWFpbi4gU2luY2UgdGhp cw0KPiA+IHBvd2VyIGRvbWFpbiByZWZlcmVuY2UgbmVlZHMgdG8gYmUgYWNxdWlyZWQgYW5kIHJl bGVhc2VkIGluIGF0b21pYyBjb250ZXh0LA0KPiA+IHRoZSBjb3JyZXNwb25kaW5nIF9nZXQoKSBh bmQgX3B1dCgpIG1ldGhvZHMgc2tpcCB0aGUgcG93ZXJfZG9tYWluIG11dGV4Lg0KPiANCj4gXG8v DQo+IA0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5h a2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDUgKysNCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgICAgIHwgICAzICstDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYyB8IDEyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQ0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt KQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+IGluZGV4IDE4ZDQyODg1MjA1 Yi4uYmE5MTA3ZWMxZWQxIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4g QEAgLTM5Nyw2ICszOTcsNyBAQCBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHsNCj4g PiAgCVBPV0VSX0RPTUFJTl9BVVhfQywNCj4gPiAgCVBPV0VSX0RPTUFJTl9BVVhfRCwNCj4gPiAg CVBPV0VSX0RPTUFJTl9HTUJVUywNCj4gPiArCVBPV0VSX0RPTUFJTl9WQkxBTkssDQo+ID4gIAlQ T1dFUl9ET01BSU5fTU9ERVNFVCwNCj4gPiAgCVBPV0VSX0RPTUFJTl9JTklULA0KPiA+ICANCj4g PiBAQCAtMTQ3NSw2ICsxNDc2LDEwIEBAIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgew0KPiA+ICAJ CQlib29sIGhhc192Z2E6MTsNCj4gPiAgCQkJYm9vbCBoYXNfZnVzZXM6MTsNCj4gPiAgCQl9IGhz dzsNCj4gPiArCQlzdHJ1Y3Qgew0KPiA+ICsJCQlzcGlubG9ja190IGxvY2s7DQo+ID4gKwkJCWJv b2wgd2FzX2Rpc2FibGVkOw0KPiA+ICsJCX0gZGNfb2ZmOw0KPiANCj4gd2hhdCBhYm91dCBhIG1v cmUgZ2VuZXJpYyBuYW1lIGhlcmU/DQo+IHNvbWV0aGluZyBsaWtlDQo+IA0KPiArCQlzdHJ1Y3Qg ew0KPiArCQkJc3BpbmxvY2tfdCBsb2NrOw0KPiArCQkJYm9vbCB3YXNfZGlzYWJsZWQ7DQo+ICsJ CX0gYXRvbWljOw0KPiArCQlpc19hdG9taWM7IC8vb3IgbmVlZHNfYXRvbWljDQo+IA0KPiBzby4u Lg0KPiANCj4gPiAgCX07DQo+ID4gIAljb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyAq b3BzOw0KPiA+ICB9Ow0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gaW5kZXggMzBm NzkxZjg5ZDY0Li45M2NhNTAzZjE4YmIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaA0KPiA+IEBAIC0xODY1LDcgKzE4NjUsOCBAQCB2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xh bmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiA+ICAJCQkgICAgIGJvb2wgb3Zl cnJpZGUsIHVuc2lnbmVkIGludCBtYXNrKTsNCj4gPiAgYm9vbCBjaHZfcGh5X3Bvd2VyZ2F0ZV9j aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gZHBpb19waHkgcGh5LA0K PiA+ICAJCQkgIGVudW0gZHBpb19jaGFubmVsIGNoLCBib29sIG92ZXJyaWRlKTsNCj4gPiAtDQo+ ID4gK2Jvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl92YmxhbmtfZ2V0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7DQo+ID4gK3ZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl92Ymxhbmtf cHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7DQo+ID4gIA0KPiA+ICAvKiBp bnRlbF9wbS5jICovDQo+ID4gIHZvaWQgaW50ZWxfaW5pdF9jbG9ja19nYXRpbmcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jDQo+ID4gaW5kZXggZjg4ZjJjMDcwYzVmLi5mMTgwN2JkNzQyNDIgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jDQo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jDQo+ID4gQEAgLTEy Niw2ICsxMjYsOCBAQCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZW51bSBpbnRlbF9k aXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pDQo+ID4gIAkJcmV0dXJuICJBVVhfRCI7DQo+ID4g IAljYXNlIFBPV0VSX0RPTUFJTl9HTUJVUzoNCj4gPiAgCQlyZXR1cm4gIkdNQlVTIjsNCj4gPiAr CWNhc2UgUE9XRVJfRE9NQUlOX1ZCTEFOSzoNCj4gPiArCQlyZXR1cm4gIlZCTEFOSyI7DQo+ID4g IAljYXNlIFBPV0VSX0RPTUFJTl9JTklUOg0KPiA+ICAJCXJldHVybiAiSU5JVCI7DQo+ID4gIAlj YXNlIFBPV0VSX0RPTUFJTl9NT0RFU0VUOg0KPiA+IEBAIC0xOTYsMTAgKzE5OCwxNyBAQCBib29s IF9faW50ZWxfZGlzcGxheV9wb3dlcl9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwNCj4gPiAgCQlpZiAocG93ZXJfd2VsbC0+YWx3YXlzX29uKQ0KPiA+ICAJCQlj b250aW51ZTsNCj4gPiAgDQo+ID4gLQkJaWYgKCFwb3dlcl93ZWxsLT5od19lbmFibGVkKSB7DQo+ ID4gKwkJaWYgKHBvd2VyX3dlbGwtPmlkID09IFNLTF9ESVNQX1BXX0RDX09GRikNCj4gPiArCQkJ c3Bpbl9sb2NrKCZwb3dlcl93ZWxsLT5kY19vZmYubG9jayk7DQo+IA0KPiAuLi4gaW5zdGVhZCBv ZiBhIHNwZWNpZiBwdyBjaGVjayBoZXJlIHlvdSB3b3VsZCBoYXZlDQo+IA0KPiArCWlmIChwb3dl cl93ZWxsLT5pc19hdG9taWMpDQo+ICsJCXNwaW5fbG9jaygmcG93ZXJfd2VsbC0+YXRvbWljLmxv Y2spDQo+IA0KPiA+ICsNCj4gPiArCQlpZiAoIXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQpDQo+ID4g IAkJCWlzX2VuYWJsZWQgPSBmYWxzZTsNCj4gPiArDQo+ID4gKwkJaWYgKHBvd2VyX3dlbGwtPmlk ID09IFNLTF9ESVNQX1BXX0RDX09GRikNCj4gPiArCQkJc3Bpbl91bmxvY2soJnBvd2VyX3dlbGwt PmRjX29mZi5sb2NrKTsNCj4gPiArDQo+ID4gKwkJaWYgKCFpc19lbmFibGVkKQ0KPiA+ICAJCQli cmVhazsNCj4gPiAtCQl9DQo+ID4gIAl9DQo+ID4gIA0KPiA+ICAJcmV0dXJuIGlzX2VuYWJsZWQ7 DQo+ID4gQEAgLTcyNCw2ICs3MzMsNyBAQCBzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93 ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ICAJCXNr bF9lbmFibGVfZGM2KGRldl9wcml2KTsNCj4gPiAgCWVsc2UgaWYgKGRldl9wcml2LT5jc3IuYWxs b3dlZF9kY19tYXNrICYgRENfU1RBVEVfRU5fVVBUT19EQzUpDQo+ID4gIAkJZ2VuOV9lbmFibGVf ZGM1KGRldl9wcml2KTsNCj4gPiArCXBvd2VyX3dlbGwtPmRjX29mZi53YXNfZGlzYWJsZWQgPSB0 cnVlOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICBzdGF0aWMgdm9pZCBpOXh4X3Bvd2VyX3dlbGxfc3lu Y19od19ub29wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiBAQCAtMTQ0 MSw2ICsxNDUxLDc3IEBAIHN0YXRpYyB2b2lkIGNodl9waXBlX3Bvd2VyX3dlbGxfZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ID4gIAljaHZfc2V0X3BpcGVfcG93 ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCwgZmFsc2UpOw0KPiA+ICB9DQo+ID4gIA0KPiA+ ICsvKioNCj4gPiArICogaW50ZWxfZGlzcGxheV9wb3dlcl92YmxhbmtfZ2V0IC0gYWNxdWlyZSBh IFZCTEFOSyBwb3dlciBkb21haW4gcmVmZXJlbmNlIGF0b21pY2FsbHkNCj4gPiArICogQGRldl9w cml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQ0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGZ1bmN0aW9u IGdldHMgYSBQT1dFUl9ET01BSU5fVkJMQU5LIHJlZmVyZW5jZSB3aXRob3V0IGJsb2NraW5nIGFu ZA0KPiA+ICsgKiByZXR1cm5zIHRydWUgaWYgdGhlIERDX09GRiBwb3dlciB3ZWxsIHdhcyBkaXNh YmxlZCBzaW5jZSB0aGlzIGZ1bmN0aW9uIHdhcw0KPiA+ICsgKiBjYWxsZWQgdGhlIGxhc3QgdGlt ZS4NCj4gPiArICovDQo+ID4gK2Jvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl92YmxhbmtfZ2V0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gPiArew0KPiA+ICsJc3RydWN0IGk5 MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWlu czsNCj4gPiArCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7DQo+ID4gKwlib29s IG5lZWRzX3Jlc3RvcmUgPSBmYWxzZTsNCj4gPiArDQo+ID4gKwlpZiAoIUhBU19DU1IoZGV2X3By aXYpIHx8ICFkZXZfcHJpdi0+cHNyLnNvdXJjZV9vaykNCj4gPiArCQlyZXR1cm4gZmFsc2U7DQo+ ID4gKw0KPiA+ICsJLyogVGhlIGNvcnJlc3BvbmRpbmcgQ1JUQyBzaG91bGQgYmUgYWN0aXZlIGJ5 IHRoZSB0aW1lIGRyaXZlciB0dXJucyBvbg0KPiA+ICsJICogdmJsYW5rIGludGVycnVwdHMsIHdo aWNoIGluIHR1cm4gbWVhbnMgdGhlIGVuYWJsZWQgcGlwZSBwb3dlciBkb21haW4NCj4gPiArCSAq IHdvdWxkIGhhdmUgYWNxdWlyZWQgdGhlIGRldmljZSBydW50aW1lIHBtIHJlZmVyZW5jZS4NCj4g PiArCSAqLw0KPiA+ICsJaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKGRldl9wcml2KTsN Cj4gPiArDQo+ID4gKwlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbChkZXZfcHJpdiwgIHBvd2Vy X3dlbGwsIEJJVF9VTEwoUE9XRVJfRE9NQUlOX1ZCTEFOSykpIHsNCj4gPiArCQlpZiAocG93ZXJf d2VsbC0+aWQgPT0gU0tMX0RJU1BfUFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGluX2xvY2soJnBvd2Vy X3dlbGwtPmRjX29mZi5sb2NrKTsNCj4gPiArDQo+ID4gKwkJaW50ZWxfcG93ZXJfd2VsbF9nZXQo ZGV2X3ByaXYsIHBvd2VyX3dlbGwpOw0KPiA+ICsNCj4gPiArCQlpZiAocG93ZXJfd2VsbC0+aWQg PT0gU0tMX0RJU1BfUFdfRENfT0ZGKSB7DQo+ID4gKwkJCW5lZWRzX3Jlc3RvcmUgPSBwb3dlcl93 ZWxsLT5kY19vZmYud2FzX2Rpc2FibGVkOw0KPiA+ICsJCQlwb3dlcl93ZWxsLT5kY19vZmYud2Fz X2Rpc2FibGVkID0gZmFsc2U7DQo+ID4gKwkJCXNwaW5fdW5sb2NrKCZwb3dlcl93ZWxsLT5kY19v ZmYubG9jayk7DQo+IA0KPiBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHlvdSBuZWVkIHRoZSB3YXNf ZGlzYWJsZWQgaGVyZSBhbmQgbm90IHRoZSBjb3VudGVyIGxpa2UNCj4gdGhlIHJlZ3VsYXIgcHc/ DQo+IA0KVGhlIHJldHVybiBmcm9tIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUg d2hldGhlciB3ZSBuZWVkIHRvDQpjYWxjdWxhdGUgdGhlIG1pc3NlZCB2YmxhbmtzLg0KDQpMZXQn cyBzYXkgd2UgcmV0dXJuZWQgdHJ1ZSBvbmx5IHdoZW4gdGhlIHBvd2VyIHdlbGwgd2FzIGVuYWJs ZWQgKGJhc2VkDQpvbiByZWZjb3VudCksIHdlJ2xsIGVuZCB1cCBub3QgZml4aW5nIHVwIHRoZSB2 YmxhbmtzIGluIHRoaXMgc2NlbmFyaW8gLQ0KDQpfdmJsYW5rX3B1dCgpIAkJLT4gREMgb2ZmIGRp c2FibGVkKHJlZiBjb3VudD0wKQ0KPGZyYW1lIGNvdW50ZXIgcmVzZXQ+DQpfcG93ZXJfZ2V0KEFV WF9BKSAJLT4gREMgb2ZmIGVuYWJsZWQgKHJlZiBjb3VudD0xKQ0KX3ZibGFua19nZXQoKQkJLT4g CQkgIChyZWYgY291bnQ9MikNCg0KDQoNCj4gQnV0IGFsc28gb3ZlcmFsbCBJIGNhbid0IHNlZSBo b3cgdGhpcyBpcyBhdm9pZGluZyB0aGUgbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7 DQo+IGluIGdlbmVyYWwuIElzIHRoZXJlIGEgd2F5IHRvIG1ha2UgaXQgbW9yZSBnZW5lcmljIGlu IGEgd2F5IHRoYXQgd2UgY291bGQgZGVmaW5lIGF0b21pYyBwdyBhbmQgcmVndWxhciBwdw0KPiBh bmQgd2UgY291bGQgc2VlIHdoaWNoIG9uZSB3b3VsZCBiZSB0YWtpbmcgdGhlIGF0b21pYyBwYXRo IGVhc2lseT8NCj4gDQoNCkkgZGlkIHRyeSB0byBjcmVhdGUgYSBnZW5lcmljIGludGVyZmFjZSB3 aXRoIF9wb3dlcl9uYl9nZXQoZG9tYWluKSBhbmQNCl9wb3dlcl9uYl9wdXQoZG9tYWluKSwgYnV0 IHRoZSBhYm92ZSBwcm9ibGVtIG1lYW50IHRoYXQgSSBoYWQgdG8gd3JpdGUNCmNvZGUgc3BlY2lm aWMgdG8gdGhlIFZCTEFOSyBwb3dlciBkb21haW4gaW5zaWRlIHRoZSBnZW5lcmljDQpfcG93ZXJf bmJfZ2V0KGRvbWFpbikgbWV0aG9kLg0KDQoNCj4gVGhhbmtzLA0KPiBSb2RyaWdvLg0KPiANCj4g PiArCQl9DQo+ID4gKwl9DQo+ID4gKwlhdG9taWNfaW5jKCZwb3dlcl9kb21haW5zLT5kb21haW5f dXNlX2NvdW50W1BPV0VSX0RPTUFJTl9WQkxBTktdKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gbmVl ZHNfcmVzdG9yZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIGludGVsX2Rpc3Bs YXlfcG93ZXJfdmJsYW5rX3B1dCAtIGRyb3AgYSBWQkxBTksgcG93ZXIgZG9tYWluIHJlZmVyZW5j ZSBhdG9taWNhbGx5DQo+ID4gKyAqDQo+ID4gKyAqIEEgbm9uLWJsb2NraW5nIHZlcnNpb24gaW50 ZWxfZGlzcGxheV9wb3dlcl9wdXQoKSBzcGVjaWZpY2FsbHkgdG8gY29udHJvbCB0aGUNCj4gPiAr ICogRENfT0ZGIHBvd2VyIHdlbGwgaW4gYXRvbWljIGNvbnRleHRzLg0KPiA+ICsgKi8NCj4gPiAr dm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3ZibGFua19wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpw b3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOw0KPiA+ICsJc3RydWN0IGk5 MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsNCj4gPiArDQo+ID4gKwlpZiAoIUhBU19DU1IoZGV2 X3ByaXYpIHx8ICFkZXZfcHJpdi0+cHNyLnNvdXJjZV9vaykNCj4gPiArCQlyZXR1cm47DQo+ID4g Kw0KPiA+ICsJV0FSTihhdG9taWNfZGVjX3JldHVybigmcG93ZXJfZG9tYWlucy0+ZG9tYWluX3Vz ZV9jb3VudFtQT1dFUl9ET01BSU5fVkJMQU5LXSkgPCAwLA0KPiA+ICsJICAgICAiVXNlIGNvdW50 IG9uIGRvbWFpbiAlcyB3YXMgYWxyZWFkeSB6ZXJvXG4iLA0KPiA+ICsJICAgICBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbl9zdHIoUE9XRVJfRE9NQUlOX1ZCTEFOSykpOw0KPiA+ICsNCj4gPiAr CWZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsX3JldihkZXZfcHJpdiwgIHBvd2VyX3dlbGwsIEJJ VF9VTEwoUE9XRVJfRE9NQUlOX1ZCTEFOSykpIHsNCj4gPiArCQlpZiAocG93ZXJfd2VsbC0+aWQg PT0gU0tMX0RJU1BfUFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGluX2xvY2soJnBvd2VyX3dlbGwtPmRj X29mZi5sb2NrKTsNCj4gPiArDQo+ID4gKwkJaW50ZWxfcG93ZXJfd2VsbF9wdXQoZGV2X3ByaXYs IHBvd2VyX3dlbGwpOw0KPiA+ICsNCj4gPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJ U1BfUFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGluX3VubG9jaygmcG93ZXJfd2VsbC0+ZGNfb2ZmLmxv Y2spOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2 KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHZvaWQNCj4gPiAgX19pbnRlbF9kaXNwbGF5 X3Bvd2VyX2dldF9kb21haW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ ICAJCQkJIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKQ0KPiA+IEBAIC0x NDQ4LDkgKzE1MjksMTYgQEAgX19pbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9kb21haW4oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9t YWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93ZXJfZG9tYWluczsNCj4gPiAgCXN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7DQo+ID4gIA0KPiA+IC0JZm9yX2VhY2hf cG93ZXJfZG9tYWluX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGwsIEJJVF9VTEwoZG9tYWluKSkN Cj4gPiArCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsLCBC SVRfVUxMKGRvbWFpbikpIHsNCj4gPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1Bf UFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGluX2xvY2soJnBvd2VyX3dlbGwtPmRjX29mZi5sb2NrKTsN Cj4gPiArDQo+ID4gIAkJaW50ZWxfcG93ZXJfd2VsbF9nZXQoZGV2X3ByaXYsIHBvd2VyX3dlbGwp Ow0KPiA+ICANCj4gPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1BfUFdfRENfT0ZG KQ0KPiA+ICsJCQlzcGluX3VubG9jaygmcG93ZXJfd2VsbC0+ZGNfb2ZmLmxvY2spOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiAgCWF0b21pY19pbmMoJnBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291 bnRbZG9tYWluXSk7DQo+ID4gIH0NCj4gPiAgDQo+ID4gQEAgLTE1NDEsOSArMTYyOSwxNiBAQCB2 b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwNCj4gPiAgCSAgICAgIlVzZSBjb3VudCBvbiBkb21haW4gJXMgd2FzIGFscmVhZHkgemVy b1xuIiwNCj4gPiAgCSAgICAgaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKGRvbWFpbikp Ow0KPiA+ICANCj4gPiAtCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbl93ZWxsX3JldihkZXZfcHJpdiwg cG93ZXJfd2VsbCwgQklUX1VMTChkb21haW4pKQ0KPiA+ICsJZm9yX2VhY2hfcG93ZXJfZG9tYWlu X3dlbGxfcmV2KGRldl9wcml2LCBwb3dlcl93ZWxsLCBCSVRfVUxMKGRvbWFpbikpIHsNCj4gPiAr CQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1BfUFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGlu X2xvY2soJnBvd2VyX3dlbGwtPmRjX29mZi5sb2NrKTsNCj4gPiArDQo+ID4gIAkJaW50ZWxfcG93 ZXJfd2VsbF9wdXQoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOw0KPiA+ICANCj4gPiArCQlpZiAocG93 ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1BfUFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGluX3VubG9jaygm cG93ZXJfd2VsbC0+ZGNfb2ZmLmxvY2spOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAgCW11dGV4X3Vu bG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7DQo+ID4gIA0KPiA+ICAJaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYpOw0KPiA+IEBAIC0xNzA2LDYgKzE4MDEsNyBAQCB2b2lkIGludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiAg CVNLTF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMgfAkJXA0KPiA+ICAJQklUX1VM TChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJCVwNCj4gPiAgCUJJVF9VTEwoUE9XRVJfRE9NQUlO X0FVWF9BKSB8CQkJXA0KPiA+ICsJQklUX1VMTChQT1dFUl9ET01BSU5fVkJMQU5LKSB8CQkJXA0K PiA+ICAJQklUX1VMTChQT1dFUl9ET01BSU5fSU5JVCkpDQo+ID4gIA0KPiA+ICAjZGVmaW5lIEJY VF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMgKAkJXA0KPiA+IEBAIC0yMzQyLDYg KzI0MzgsOSBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBjbmxfcG93ZXJfd2VsbHNb XSA9IHsNCj4gPiAgCQkuZG9tYWlucyA9IENOTF9ESVNQTEFZX0RDX09GRl9QT1dFUl9ET01BSU5T LA0KPiA+ICAJCS5vcHMgPSAmZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9vcHMsDQo+ID4gIAkJLmlk ID0gU0tMX0RJU1BfUFdfRENfT0ZGLA0KPiA+ICsJCXsNCj4gPiArCQkJLmRjX29mZi53YXNfZGlz YWJsZWQgPSBmYWxzZSwNCj4gPiArCQl9LA0KPiA+ICAJfSwNCj4gPiAgCXsNCj4gPiAgCQkubmFt ZSA9ICJwb3dlciB3ZWxsIDIiLA0KPiA+IEBAIC0yNDcwLDYgKzI1NjksNyBAQCBzdGF0aWMgdm9p ZCBhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikNCj4gPiAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2Rv bWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7DQo+ID4gKwlz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpkY19vZmZfcHc7DQo+ID4gIA0KPiA+ICAJaTkxNV9tb2Rw YXJhbXMuZGlzYWJsZV9wb3dlcl93ZWxsID0NCj4gPiAgCQlzYW5pdGl6ZV9kaXNhYmxlX3Bvd2Vy X3dlbGxfb3B0aW9uKGRldl9wcml2LA0KPiA+IEBAIC0yNTA3LDYgKzI2MDcsMTAgQEAgaW50IGlu dGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp DQo+ID4gIAkJc2V0X3Bvd2VyX3dlbGxzKHBvd2VyX2RvbWFpbnMsIGk5eHhfYWx3YXlzX29uX3Bv d2VyX3dlbGwpOw0KPiA+ICAJfQ0KPiA+ICANCj4gPiArCWRjX29mZl9wdyA9IGxvb2t1cF9wb3dl cl93ZWxsKGRldl9wcml2LCBTS0xfRElTUF9QV19EQ19PRkYpOw0KPiA+ICsJaWYgKGRjX29mZl9w dykNCj4gPiArCQlzcGluX2xvY2tfaW5pdCgmZGNfb2ZmX3B3LT5kY19vZmYubG9jayk7DQo+ID4g Kw0KPiA+ICAJYXNzZXJ0X3Bvd2VyX3dlbGxfaWRzX3VuaXF1ZShkZXZfcHJpdik7DQo+ID4gIA0K PiA+ICAJcmV0dXJuIDA7DQo+ID4gQEAgLTI1NTUsOCArMjY1OSwxNCBAQCBzdGF0aWMgdm9pZCBp bnRlbF9wb3dlcl9kb21haW5zX3N5bmNfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQ0KPiA+ICAJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7DQo+ID4gIAlmb3Jf ZWFjaF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93ZWxsKSB7DQo+ID4gIAkJcG93ZXJfd2Vs bC0+b3BzLT5zeW5jX2h3KGRldl9wcml2LCBwb3dlcl93ZWxsKTsNCj4gPiArDQo+ID4gKwkJaWYg KHBvd2VyX3dlbGwtPmlkID09IFNLTF9ESVNQX1BXX0RDX09GRikNCj4gPiArCQkJc3Bpbl9sb2Nr KCZwb3dlcl93ZWxsLT5kY19vZmYubG9jayk7DQo+ID4gKw0KPiA+ICAJCXBvd2VyX3dlbGwtPmh3 X2VuYWJsZWQgPSBwb3dlcl93ZWxsLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsDQo+ID4gIAkJ CQkJCQkJICAgICBwb3dlcl93ZWxsKTsNCj4gPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tM X0RJU1BfUFdfRENfT0ZGKQ0KPiA+ICsJCQlzcGluX3VubG9jaygmcG93ZXJfd2VsbC0+ZGNfb2Zm LmxvY2spOw0KPiA+ICAJfQ0KPiA+ICAJbXV0ZXhfdW5sb2NrKCZwb3dlcl9kb21haW5zLT5sb2Nr KTsNCj4gPiAgfQ0KPiA+IEBAIC0zMDc5LDYgKzMxODksMTMgQEAgdm9pZCBpbnRlbF9wb3dlcl9k b21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ ID4gIAkJaWYgKCFwb3dlcl93ZWxsLT5kb21haW5zKQ0KPiA+ICAJCQljb250aW51ZTsNCj4gPiAg DQo+ID4gKwkJLyoNCj4gPiArCQkgKiBSZWFkaW5nIFNLTF9ESVNQX1BXX0RDX09GRiBwb3dlcl93 ZWxsLT5jb3VudCB3aXRob3V0IGl0cw0KPiA+ICsJCSAqIHByaXZhdGUgc3BpbmxvY2sgc2hvdWxk IGJlIHNhZmUgaGVyZSBhcyBwb3dlcl93ZWxsLT5jb3VudA0KPiA+ICsJCSAqIGdldHMgbW9kaWZp ZWQgb25seSBpbiBwb3dlcl93ZWxsX2dldCgpIGFuZCBwb3dlcl93ZWxsX3B1dCgpDQo+ID4gKwkJ ICogYW5kIHRoZXkgYXJlIG5vdCBjYWxsZWQgdW50aWwgZHJtX2NydGNfdmJsYW5rX29uKCkuDQo+ ID4gKwkJICovDQo+ID4gKw0KPiA+ICAJCWVuYWJsZWQgPSBwb3dlcl93ZWxsLT5vcHMtPmlzX2Vu YWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOw0KPiA+ICAJCWlmICgocG93ZXJfd2VsbC0+Y291 bnQgfHwgcG93ZXJfd2VsbC0+YWx3YXlzX29uKSAhPSBlbmFibGVkKQ0KPiA+ICAJCQlEUk1fRVJS T1IoInBvd2VyIHdlbGwgJXMgc3RhdGUgbWlzbWF0Y2ggKHJlZmNvdW50ICVkL2VuYWJsZWQgJWQp IiwNCj4gPiAtLSANCj4gPiAyLjExLjANCj4gPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdA0KPiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK