From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Conselvan De Oliveira, Ander" Subject: Re: [PATCH 02/15] drm/i915: Don't pass *DP around to link training functions Date: Mon, 19 Oct 2015 07:36:18 +0000 Message-ID: <1445240180.3042.46.camel@intel.com> References: <1444028487-6501-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1444028487-6501-3-git-send-email-ander.conselvan.de.oliveira@intel.com> <56247569.7000203@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 24E656E430 for ; Mon, 19 Oct 2015 00:36:31 -0700 (PDT) In-Reply-To: <56247569.7000203@intel.com> Content-Language: en-US Content-ID: <04FAD9E261144640823705F6909FC2DF@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Thulasimani, Sivakumar" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE1LTEwLTE5IGF0IDEwOjE1ICswNTMwLCBUaHVsYXNpbWFuaSwgU2l2YWt1bWFy IHdyb3RlOg0KPiANCj4gT24gMTAvNS8yMDE1IDEyOjMxIFBNLCBBbmRlciBDb25zZWx2YW4gZGUg T2xpdmVpcmEgd3JvdGU6DQo+ID4gSXQganVzdCBtYWtlcyB0aGUgY29kZSBtb3JlIGNvbmZ1c2lu Zywgc28ganVzdCByZWZlcmVuY2UgaW50ZWxfZHBfPkRQDQo+ID4gZGlyZWN0bHkuIFRoZSBvbGQg YmVoYXZpb3Igb2Ygbm90IHVwZGF0aW5nIHRoZSB2YWx1ZSBpbiBpbnRlbF9kcCBpZiBsaW5rDQo+ ID4gdHJhaW5pbmcgZmFpbCBpcyBwcmVzZXJ2ZWQgYnkgc2F2aW5nIHRoZSBwcmV2aW91cyB2YWx1 ZSBvZiBEUCBpbiB0aGUNCj4gPiBzdGFjayBhbmQgcmVzdG9yaW5nIHRoZSBvbGQgdmFsdWUgaW4g Y2FzZSBvZiBmYWlsdXJlLg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IEFuZGVyIENvbnNlbHZh biBkZSBPbGl2ZWlyYSA8DQo+ID4gYW5kZXIuY29uc2VsdmFuLmRlLm9saXZlaXJhQGludGVsLmNv bT4NCj4gPiAtLQ0KPiA+IA0KPiA+IEknbSBub3Qgc3VyZSB0aGUgb2xkIGJlaGF2aW9yIGlzIGNv cnJlY3QsIGJ1dCB0byBlcnIgaW4gdGhlIHNpZGUgb2YNCj4gPiBjYXV0aW9uIEkgdHJpZWQgbm90 IHRvIGNoYW5nZSBpdC4NCj4gPiANCj4gPiAtLS0NCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgfCA2NiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gLS0tLQ0KPiA+ICAgMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDMzIGRlbGV0 aW9ucygtKQ0KPiA+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jDQo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+ID4gaW5kZXgg YzQyMGVkZi4uMzkxYTM2NyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0KPiA+ IEBAIC0zNjAxLDcgKzM2MDEsNiBAQCBpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLA0KPiA+IHVpbnQzMl90ICpEUCkNCj4gPiAgIA0KPiA+ICAgc3Rh dGljIGJvb2wNCj4gPiAgIGludGVsX2RwX3NldF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsDQo+ID4gLQkJCXVpbnQzMl90ICpEUCwNCj4gPiAgIAkJCXVpbnQ4X3QgZHBfdHJh aW5fcGF0KQ0KPiA+ICAgew0KPiA+ICAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0ID0NCj4gPiBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7DQo+ID4gQEAgLTM2MTAs OSArMzYwOSw5IEBAIGludGVsX2RwX3NldF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsDQo+ID4gICAJdWludDhfdCBidWZbc2l6ZW9mKGludGVsX2RwLT50cmFpbl9zZXQpICsg MV07DQo+ID4gICAJaW50IHJldCwgbGVuOw0KPiA+ICAgDQo+ID4gLQlfaW50ZWxfZHBfc2V0X2xp bmtfdHJhaW4oaW50ZWxfZHAsIERQLCBkcF90cmFpbl9wYXQpOw0KPiA+ICsJX2ludGVsX2RwX3Nl dF9saW5rX3RyYWluKGludGVsX2RwLCAmaW50ZWxfZHAtPkRQLCBkcF90cmFpbl9wYXQpOw0KPiA+ ICAgDQo+ID4gLQlJOTE1X1dSSVRFKGludGVsX2RwLT5vdXRwdXRfcmVnLCAqRFApOw0KPiA+ICsJ STkxNV9XUklURShpbnRlbF9kcC0+b3V0cHV0X3JlZywgaW50ZWxfZHAtPkRQKTsNCj4gPiAgIAlQ T1NUSU5HX1JFQUQoaW50ZWxfZHAtPm91dHB1dF9yZWcpOw0KPiA+ICAgDQo+ID4gICAJYnVmWzBd ID0gZHBfdHJhaW5fcGF0Ow0KPiA+IEBAIC0zNjMzLDE3ICszNjMyLDE3IEBAIGludGVsX2RwX3Nl dF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gICB9DQo+ID4gICAN Cj4gPiAgIHN0YXRpYyBib29sDQo+ID4gLWludGVsX2RwX3Jlc2V0X2xpbmtfdHJhaW4oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwgdWludDMyX3QgKkRQLA0KPiA+ICtpbnRlbF9kcF9yZXNldF9s aW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ID4gICAJCQl1aW50OF90IGRw X3RyYWluX3BhdCkNCj4gPiAgIHsNCj4gPiAgIAlpZiAoIWludGVsX2RwLT50cmFpbl9zZXRfdmFs aWQpDQo+ID4gICAJCW1lbXNldChpbnRlbF9kcC0+dHJhaW5fc2V0LCAwLCBzaXplb2YoaW50ZWxf ZHANCj4gPiAtPnRyYWluX3NldCkpOw0KPiA+IC0JaW50ZWxfZHBfc2V0X3NpZ25hbF9sZXZlbHMo aW50ZWxfZHAsIERQKTsNCj4gPiAtCXJldHVybiBpbnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRl bF9kcCwgRFAsIGRwX3RyYWluX3BhdCk7DQo+ID4gKwlpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVs cyhpbnRlbF9kcCwgJmludGVsX2RwLT5EUCk7DQo+ID4gKwlyZXR1cm4gaW50ZWxfZHBfc2V0X2xp bmtfdHJhaW4oaW50ZWxfZHAsIGRwX3RyYWluX3BhdCk7DQo+ID4gICB9DQo+ID4gICANCj4gPiAg IHN0YXRpYyBib29sDQo+ID4gLWludGVsX2RwX3VwZGF0ZV9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIHVpbnQzMl90ICpEUCwNCj4gPiAraW50ZWxfZHBfdXBkYXRlX2xpbmtf dHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiAgIAkJCSAgIGNvbnN0IHVpbnQ4 X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pDQo+ID4gICB7DQo+ID4gICAJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQ0KPiA+IGRwX3RvX2RpZ19w b3J0KGludGVsX2RwKTsNCj4gPiBAQCAtMzY1Miw5ICszNjUxLDkgQEAgaW50ZWxfZHBfdXBkYXRl X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwNCj4gPiB1aW50MzJfdCAqRFAs DQo+ID4gICAJaW50IHJldDsNCj4gPiAgIA0KPiA+ICAgCWludGVsX2dldF9hZGp1c3RfdHJhaW4o aW50ZWxfZHAsIGxpbmtfc3RhdHVzKTsNCj4gPiAtCWludGVsX2RwX3NldF9zaWduYWxfbGV2ZWxz KGludGVsX2RwLCBEUCk7DQo+ID4gKwlpbnRlbF9kcF9zZXRfc2lnbmFsX2xldmVscyhpbnRlbF9k cCwgJmludGVsX2RwLT5EUCk7DQo+ID4gICANCj4gPiAtCUk5MTVfV1JJVEUoaW50ZWxfZHAtPm91 dHB1dF9yZWcsICpEUCk7DQo+ID4gKwlJOTE1X1dSSVRFKGludGVsX2RwLT5vdXRwdXRfcmVnLCBp bnRlbF9kcC0+RFApOw0KPiA+ICAgCVBPU1RJTkdfUkVBRChpbnRlbF9kcC0+b3V0cHV0X3JlZyk7 DQo+ID4gICANCj4gPiAgIAlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwg RFBfVFJBSU5JTkdfTEFORTBfU0VULA0KPiA+IEBAIC0zNjk1LDcgKzM2OTQsNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKHN0cnVjdA0KPiA+IGludGVsX2RwICpp bnRlbF9kcCkNCj4gPiAgIH0NCj4gPiAgIA0KPiA+ICAgLyogRW5hYmxlIGNvcnJlc3BvbmRpbmcg cG9ydCBhbmQgc3RhcnQgdHJhaW5pbmcgcGF0dGVybiAxICovDQo+ID4gLXN0YXRpYyB2b2lkDQo+ ID4gK3N0YXRpYyBib29sDQo+ID4gICBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292 ZXJ5KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gICB7DQo+ID4gICAJc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKQ0KPiA+IC0+YmFz ZS5iYXNlOw0KPiA+IEBAIC0zNzAzLDkgKzM3MDIsOSBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5n X2Nsb2NrX3JlY292ZXJ5KHN0cnVjdCBpbnRlbF9kcA0KPiA+ICppbnRlbF9kcCkNCj4gPiAgIAlp bnQgaTsNCj4gPiAgIAl1aW50OF90IHZvbHRhZ2U7DQo+ID4gICAJaW50IHZvbHRhZ2VfdHJpZXMs IGxvb3BfdHJpZXM7DQo+ID4gLQl1aW50MzJfdCBEUCA9IGludGVsX2RwLT5EUDsNCj4gPiAgIAl1 aW50OF90IGxpbmtfY29uZmlnWzJdOw0KPiA+ICAgCXVpbnQ4X3QgbGlua19idywgcmF0ZV9zZWxl Y3Q7DQo+ID4gKwl1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdOw0KPiA+ ICAgDQo+ID4gICAJaWYgKEhBU19EREkoZGV2KSkNCj4gPiAgIAkJaW50ZWxfZGRpX3ByZXBhcmVf bGlua19yZXRyYWluKGVuY29kZXIpOw0KPiA+IEBAIC0zNzI3LDIyICszNzI2LDIwIEBAIGludGVs X2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0DQo+ID4gaW50ZWxfZHAgKmlu dGVsX2RwKQ0KPiA+ICAgCWxpbmtfY29uZmlnWzFdID0gRFBfU0VUX0FOU0lfOEIxMEI7DQo+ID4g ICAJZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RwLT5hdXgsIERQX0RPV05TUFJFQURfQ1RSTCwg bGlua19jb25maWcsDQo+ID4gMik7DQo+ID4gICANCj4gPiAtCURQIHw9IERQX1BPUlRfRU47DQo+ ID4gKwlpbnRlbF9kcC0+RFAgfD0gRFBfUE9SVF9FTjsNCj4gPiAgIA0KPiA+ICAgCS8qIGNsb2Nr IHJlY292ZXJ5ICovDQo+ID4gLQlpZiAoIWludGVsX2RwX3Jlc2V0X2xpbmtfdHJhaW4oaW50ZWxf ZHAsICZEUCwNCj4gPiArCWlmICghaW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihpbnRlbF9kcCwN Cj4gPiAgIAkJCQkgICAgICAgRFBfVFJBSU5JTkdfUEFUVEVSTl8xIHwNCj4gPiAgIAkJCQkgICAg ICAgRFBfTElOS19TQ1JBTUJMSU5HX0RJU0FCTEUpKSB7DQo+ID4gICAJCURSTV9FUlJPUigiZmFp bGVkIHRvIGVuYWJsZSBsaW5rIHRyYWluaW5nXG4iKTsNCj4gPiAtCQlyZXR1cm47DQo+ID4gKwkJ cmV0dXJuIGZhbHNlOw0KPiA+ICAgCX0NCj4gPiAgIA0KPiA+ICAgCXZvbHRhZ2UgPSAweGZmOw0K PiA+ICAgCXZvbHRhZ2VfdHJpZXMgPSAwOw0KPiA+ICAgCWxvb3BfdHJpZXMgPSAwOw0KPiA+ICAg CWZvciAoOzspIHsNCj4gPiAtCQl1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJ WkVdOw0KPiA+IC0NCj4gPiAgIAkJZHJtX2RwX2xpbmtfdHJhaW5fY2xvY2tfcmVjb3ZlcnlfZGVs YXkoaW50ZWxfZHAtPmRwY2QpOw0KPiA+ICAgCQlpZiAoIWludGVsX2RwX2dldF9saW5rX3N0YXR1 cyhpbnRlbF9kcCwgbGlua19zdGF0dXMpKSB7DQo+ID4gICAJCQlEUk1fRVJST1IoImZhaWxlZCB0 byBnZXQgbGluayBzdGF0dXNcbiIpOw0KPiA+IEBAIC0zNzYyLDExICszNzU5LDExIEBAIGludGVs X2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0DQo+ID4gaW50ZWxfZHAgKmlu dGVsX2RwKQ0KPiA+ICAgCQkJRFJNX0RFQlVHX0tNUygiY2xvY2sgcmVjb3Zlcnkgbm90IG9rLCBy ZXNldCIpOw0KPiA+ICAgCQkJLyogY2xlYXIgdGhlIGZsYWcgYXMgd2UgYXJlIG5vdCByZXVzaW5n IHRyYWluIHNldA0KPiA+ICovDQo+ID4gICAJCQlpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkID0g ZmFsc2U7DQo+ID4gLQkJCWlmICghaW50ZWxfZHBfcmVzZXRfbGlua190cmFpbihpbnRlbF9kcCwg JkRQLA0KPiA+ICsJCQlpZiAoIWludGVsX2RwX3Jlc2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsDQo+ ID4gICAJCQkJCQkgICAgICANCj4gPiAgRFBfVFJBSU5JTkdfUEFUVEVSTl8xIHwNCj4gPiAgIAkJ CQkJCSAgICAgIA0KPiA+ICBEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRSkpIHsNCj4gPiAgIAkJ CQlEUk1fRVJST1IoImZhaWxlZCB0byBlbmFibGUgbGluaw0KPiA+IHRyYWluaW5nXG4iKTsNCj4g PiAtCQkJCXJldHVybjsNCj4gPiArCQkJCXJldHVybiBmYWxzZTsNCj4gPiAgIAkJCX0NCj4gPiAg IAkJCWNvbnRpbnVlOw0KPiA+ICAgCQl9DQo+ID4gQEAgLTM3ODEsNyArMzc3OCw3IEBAIGludGVs X2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0IGludGVsX2RwDQo+ID4gKmlu dGVsX2RwKQ0KPiA+ICAgCQkJCURSTV9FUlJPUigidG9vIG1hbnkgZnVsbCByZXRyaWVzLCBnaXZl DQo+ID4gdXBcbiIpOw0KPiA+ICAgCQkJCWJyZWFrOw0KPiA+ICAgCQkJfQ0KPiA+IC0JCQlpbnRl bF9kcF9yZXNldF9saW5rX3RyYWluKGludGVsX2RwLCAmRFAsDQo+ID4gKwkJCWludGVsX2RwX3Jl c2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsDQo+ID4gICAJCQkJCQkgIERQX1RSQUlOSU5HX1BBVFRF Uk5fMSB8DQo+ID4gICAJCQkJCQkgDQo+ID4gIERQX0xJTktfU0NSQU1CTElOR19ESVNBQkxFKTsN Cj4gPiAgIAkJCXZvbHRhZ2VfdHJpZXMgPSAwOw0KPiA+IEBAIC0zODAwLDIzICszNzk3LDIyIEBA IGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3Zlcnkoc3RydWN0DQo+ID4gaW50ZWxf ZHAgKmludGVsX2RwKQ0KPiA+ICAgCQl2b2x0YWdlID0gaW50ZWxfZHAtPnRyYWluX3NldFswXSAm DQo+ID4gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNLOw0KPiA+ICAgDQo+ID4gICAJCS8qIFVw ZGF0ZSB0cmFpbmluZyBzZXQgYXMgcmVxdWVzdGVkIGJ5IHRhcmdldCAqLw0KPiA+IC0JCWlmICgh aW50ZWxfZHBfdXBkYXRlX2xpbmtfdHJhaW4oaW50ZWxfZHAsICZEUCwNCj4gPiBsaW5rX3N0YXR1 cykpIHsNCj4gPiArCQlpZiAoIWludGVsX2RwX3VwZGF0ZV9saW5rX3RyYWluKGludGVsX2RwLCBs aW5rX3N0YXR1cykpIHsNCj4gPiAgIAkJCURSTV9FUlJPUigiZmFpbGVkIHRvIHVwZGF0ZSBsaW5r IHRyYWluaW5nXG4iKTsNCj4gPiAgIAkJCWJyZWFrOw0KPiA+ICAgCQl9DQo+ID4gICAJfQ0KPiA+ ICAgDQo+ID4gLQlpbnRlbF9kcC0+RFAgPSBEUDsNCj4gPiArCXJldHVybiBkcm1fZHBfY2xvY2tf cmVjb3Zlcnlfb2sobGlua19zdGF0dXMsIGludGVsX2RwLT5sYW5lX2NvdW50KTsNCj4gd2h5IGFy ZSB3ZSBjYWxsaW5nIHRoZSBzYW1lIGZ1bmN0aW9uIGFnYWluPyBpbiBiZXN0IGNhc2UgdGhpcyBm dW5jdGlvbiANCj4gaXMgY2FsbGVkIGFuZCByZXR1cm5lZCB0cnVlLA0KPiAgIG9yIHdvcnN0IGNh c2UgaXQgd2FzIG5ldmVyIGNhbGxlZC4gc28gaXQgd2lsbCBiZSBzaW1wbGVyIGlmIHdlIHN0b3Jl IA0KPiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24NCj4gaW5zaWRlIHRoZSBsb29w IGFuZCByZXR1cm4gdGhhdCBoZXJlID8NCj4gPiAgIH0NCj4gPiAgIA0KPiA+IC1zdGF0aWMgdm9p ZA0KPiA+ICtzdGF0aWMgYm9vbA0KPiA+ICAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVs X2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ICAgew0KPiA+ICAg CXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOw0KPiA+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkaWdfcG9ydC0+YmFzZS5i YXNlLmRldjsNCj4gPiAgIAlib29sIGNoYW5uZWxfZXEgPSBmYWxzZTsNCj4gPiAgIAlpbnQgdHJp ZXMsIGNyX3RyaWVzOw0KPiA+IC0JdWludDMyX3QgRFAgPSBpbnRlbF9kcC0+RFA7DQo+ID4gICAJ dWludDMyX3QgdHJhaW5pbmdfcGF0dGVybiA9IERQX1RSQUlOSU5HX1BBVFRFUk5fMjsNCj4gPiAg IA0KPiA+ICAgCS8qDQo+ID4gQEAgLTM4MzUsMTEgKzM4MzEsMTEgQEAgaW50ZWxfZHBfbGlua190 cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QNCj4gPiBpbnRlbF9kcCAqaW50ZWxf ZHApDQo+ID4gICAJCURSTV9FUlJPUigiNS40IEdicHMgbGluayByYXRlIHdpdGhvdXQgSEJSMi9U UFMzDQo+ID4gc3VwcG9ydFxuIik7DQo+ID4gICANCj4gPiAgIAkvKiBjaGFubmVsIGVxdWFsaXph dGlvbiAqLw0KPiA+IC0JaWYgKCFpbnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRlbF9kcCwgJkRQ LA0KPiA+ICsJaWYgKCFpbnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRlbF9kcCwNCj4gPiAgIAkJ CQkgICAgIHRyYWluaW5nX3BhdHRlcm4gfA0KPiA+ICAgCQkJCSAgICAgRFBfTElOS19TQ1JBTUJM SU5HX0RJU0FCTEUpKSB7DQo+ID4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHN0YXJ0IGNoYW5u ZWwgZXF1YWxpemF0aW9uXG4iKTsNCj4gPiAtCQlyZXR1cm47DQo+ID4gKwkJcmV0dXJuIGZhbHNl Ow0KPiA+ICAgCX0NCj4gPiAgIA0KPiA+ICAgCXRyaWVzID0gMDsNCj4gPiBAQCAtMzg2NCw3ICsz ODYwLDcgQEAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1 Y3QNCj4gPiBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gICAJCQkJCSAgICAgIGludGVsX2RwLT5s YW5lX2NvdW50KSkgew0KPiA+ICAgCQkJaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCA9IGZhbHNl Ow0KPiA+ICAgCQkJaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9k cCk7DQo+ID4gLQkJCWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLCAmRFAsDQo+ID4g KwkJCWludGVsX2RwX3NldF9saW5rX3RyYWluKGludGVsX2RwLA0KPiA+ICAgCQkJCQkJdHJhaW5p bmdfcGF0dGVybiB8DQo+ID4gICAJCQkJCQlEUF9MSU5LX1NDUkFNQkxJTkdfRElTQUJMRQ0KPiA+ ICk7DQo+ID4gICAJCQljcl90cmllcysrOw0KPiA+IEBAIC0zODgxLDcgKzM4NzcsNyBAQCBpbnRl bF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdA0KPiA+IGludGVs X2RwICppbnRlbF9kcCkNCj4gPiAgIAkJaWYgKHRyaWVzID4gNSkgew0KPiA+ICAgCQkJaW50ZWxf ZHAtPnRyYWluX3NldF92YWxpZCA9IGZhbHNlOw0KPiA+ICAgCQkJaW50ZWxfZHBfbGlua190cmFp bmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCk7DQo+ID4gLQkJCWludGVsX2RwX3NldF9saW5r X3RyYWluKGludGVsX2RwLCAmRFAsDQo+ID4gKwkJCWludGVsX2RwX3NldF9saW5rX3RyYWluKGlu dGVsX2RwLA0KPiA+ICAgCQkJCQkJdHJhaW5pbmdfcGF0dGVybiB8DQo+ID4gICAJCQkJCQlEUF9M SU5LX1NDUkFNQkxJTkdfRElTQUJMRQ0KPiA+ICk7DQo+ID4gICAJCQl0cmllcyA9IDA7DQo+ID4g QEAgLTM4OTAsNyArMzg4Niw3IEBAIGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVh bGl6YXRpb24oc3RydWN0DQo+ID4gaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ICAgCQl9DQo+ID4g ICANCj4gPiAgIAkJLyogVXBkYXRlIHRyYWluaW5nIHNldCBhcyByZXF1ZXN0ZWQgYnkgdGFyZ2V0 ICovDQo+ID4gLQkJaWYgKCFpbnRlbF9kcF91cGRhdGVfbGlua190cmFpbihpbnRlbF9kcCwgJkRQ LA0KPiA+IGxpbmtfc3RhdHVzKSkgew0KPiA+ICsJCWlmICghaW50ZWxfZHBfdXBkYXRlX2xpbmtf dHJhaW4oaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgew0KPiA+ICAgCQkJRFJNX0VSUk9SKCJmYWls ZWQgdG8gdXBkYXRlIGxpbmsgdHJhaW5pbmdcbiIpOw0KPiA+ICAgCQkJYnJlYWs7DQo+ID4gICAJ CX0NCj4gPiBAQCAtMzg5OSwyNSArMzg5NSwyOSBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2No YW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdA0KPiA+IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiAg IA0KPiA+ICAgCWludGVsX2RwX3NldF9pZGxlX2xpbmtfdHJhaW4oaW50ZWxfZHApOw0KPiA+ICAg DQo+ID4gLQlpbnRlbF9kcC0+RFAgPSBEUDsNCj4gPiAtDQo+ID4gICAJaWYgKGNoYW5uZWxfZXEp IHsNCj4gPiAgIAkJaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCA9IHRydWU7DQo+ID4gICAJCURS TV9ERUJVR19LTVMoIkNoYW5uZWwgRVEgZG9uZS4gRFAgVHJhaW5pbmcNCj4gPiBzdWNjZXNzZnVs XG4iKQ0KPiA+ICsJCXJldHVybiB0cnVlOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiArCQlyZXR1cm4g ZmFsc2U7DQo+ID4gICAJfQ0KPiA+ICAgfQ0KPiA+ICAgDQo+ID4gICB2b2lkIGludGVsX2RwX3N0 b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiA+ICAgew0KPiA+IC0J aW50ZWxfZHBfc2V0X2xpbmtfdHJhaW4oaW50ZWxfZHAsICZpbnRlbF9kcC0+RFAsDQo+ID4gKwlp bnRlbF9kcF9zZXRfbGlua190cmFpbihpbnRlbF9kcCwNCj4gPiAgIAkJCQlEUF9UUkFJTklOR19Q QVRURVJOX0RJU0FCTEUpOw0KPiA+ICAgfQ0KPiA+ICAgDQo+ID4gICB2b2lkDQo+ID4gICBpbnRl bF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gICB7 DQo+ID4gLQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsN Cj4gPiAtCWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxf ZHApOw0KPiA+ICsJdWludDMyX3QgRFAgPSBpbnRlbF9kcC0+RFA7DQo+ID4gKw0KPiA+ICsJaWYg KCFpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKSB8fA0KPiA+ ICsJICAgICFpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVs X2RwKSkNCj4gPiArCQlpbnRlbF9kcC0+RFAgPSBEUDsNCj4gaXQgaXMgd3JvbmcgdG8gcmVzdG9y ZSB0aGUgdmFsdWUgb2YgRFAgaGVyZSwgd2UgaGF2ZSBtb2RpZmllZCB0aGUgdmFsdWUgDQo+IG9m IHBvcnQvZGRpIGFscmVhZHkgaW5zaWRlIHRoZSB0d28gZnVuY3Rpb25zLg0KPiBpZiBlaXRoZXIg b2YgdGhlc2UgdHdvIHN0ZXBzIGZhaWwgd2Ugc2hvdWxkIGNhbGwgc3RvcCBsaW5rIHRyYWluaW5n IGFuZCANCj4gZm9sbG93IGl0IHdpdGggYnNwZWMgZGlzYWJsZSBzZXF1ZW5jZS4NCj4gc28gc2F2 aW5nIGFuZCByZXN0b3Jpbmcgd2lsbCBub3QgaGVscCB1cyBpbiBhbnl3YXkgYnV0IG1vcmUgaGlk ZSB0aGUgDQo+IHJlYWwgc3RhdHVzIG9mIEhXLg0KDQpUaGF0IG1ha2VzIHNlbnNlLiBJIGR1ZyBh IGJpdCBkZWVwZXIgaW4gdGhlIGhpc3RvcnksIGFuZCB0aGUgd2hvbGUgc3Rvcnkgb2YNCnByZXNl cnZpbmcgb3Igbm90IHRoZSB2YWx1ZSBvZiBEUCBpcyBwcmV0dHkgY29uZnVzaW5nLg0KDQpJbiB0 aGUgYmVnaW5uaW5nIFsxXSwgdGhlIHZhbHVlIHNldCBkdXJpbmcgbGluayB0cmFpbmluZyB3YXNu J3QgcHJlc2VydmVkIGF0DQphbGwuIEluIHRoYXQgY2FzZSwgc2luY2UgdGhlIHNhbWUgZnVuY3Rp b24gZW5hYmxlZCBhbmQgZGlzYWJsZWQgbGluayB0cmFpbmluZywNCnRoZSBvbmx5IHRoaW5nIHRo YXQgd2FzIGxvc3Qgd2FzIHRoZSBiaXQgRFBfUE9SVF9FTiBiZWluZyBzZXQuDQoNCldoZW4gdGhl IGNoYW5uZWwgZXF1YWxpemF0aW9uIHBhcnQgd2FzIHNwbGl0IHRvIGludGVsX2RwX2NvbXBsZXRl X2xpbmtfdHJhaW4oKQ0KWzJdLCBhICdpbnRlbF9kcC0+RFAgPSBEUDsnIHdhcyBhZGRlZCB0byB0 aGUgZW5kIG9mIHN0YXJ0IHRyYWluLiBTbyBvbmx5IHRoZQ0KY2hhbmdlcyBkb25lIHRvIERQIGR1 cmluZyBjaGFubmVsIGVxIHdlcmVuJ3QgcHJlc2VydmVkLiBUaGUgc2FtZSBhc3NpZ25tZW50IHdh cw0KYWRkZWQgdG8gdGhlIGVuZCBvZiBjaGFubmVsIGVxIHdoZW4gZml4aW5nIGxpbmsgdHJhaW5p bmcgZm9yIEhTVyB3aXRoIGVEUCBvbg0KcG9ydC1BIFszXS4NCg0KTGF0ZXIsIHJldHVybiBzdGF0 ZW1lbnRzIHdlcmUgYWRkZWQgWzQsIDVdIHRvIHN0YXJ0IGFuZCBjb21wbGV0ZSBsaW5rIHRyYWlu LA0Kb3BlbmluZyB0aGUgcG9zc2liaWxpdHkgb2YgYSBtaXNtYXRjaCBiZXR3ZWVuIHRoZSByZWFs IHZhbHVlIGFuZCB0aGUgcHJlc2VydmVkDQpvbmUuDQoNCkkgdGhpbmsgdGhlIHJpZ2h0IHRoaW5n IHRvIGRvIGhlcmUgaXMgdG8gbWFrZSBzdXJlIGludGVsX2RwLT5EUCBhbHdheXMgbWF0Y2gNCndo YXQgd2FzIHdyaXR0ZW4gdG8gdGhlIGhhcmR3YXJlLiBBdCBsZWFzdCBJIGNvdWxkbid0IHNlZSBh bnkgbG9naWMgdGhhdCByZWxpZXMNCm9uIHRoZSB3cm9uZyB2YWx1ZSBpbiBjYXNlIG9mIGZhaWx1 cmUuDQoNCg0KCVsxXSBjb21taXQgYTRmYzVlZDY5ODE3YzczZTMyNTcxYWQ3ODM3YmI3MDdmOTg5 MDAwOQ0KCVsyXSBjb21taXQgMzNhMzRlNGU1OTY5YzUyNzJjZDZjYjg4ZjJlMDFjOTcyMThkZDgw Yg0KCVszXSBjb21taXQgM2FiOWM2MzcwNWNiN2IxYjlmODNkZGNlNzI1ZDhiZDllZjdjNjZhOQ0K CVs0XSBjb21taXQgNzBhZmY2NmM5NTMwNTQzMzRiZjA1Njk2OTY5MDFjMTNlMjA2YWRlNg0KCVs1 XSBjb21taXQgNGU5NmM5Nzc0MmY0MjAxZWRmMWIwZjhlMWIxYjZiMmFjNmZmMzNlNw0KDQoNCkFu ZGVyDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpJbnRlbCBGaW5sYW5kIE95ClJlZ2lzdGVyZWQgQWRkcmVzczog UEwgMjgxLCAwMDE4MSBIZWxzaW5raSAKQnVzaW5lc3MgSWRlbnRpdHkgQ29kZTogMDM1NzYwNiAt IDQgCkRvbWljaWxlZCBpbiBIZWxzaW5raSAKClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNobWVu dHMgbWF5IGNvbnRhaW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcgp0aGUgc29sZSB1c2Ugb2Yg dGhlIGludGVuZGVkIHJlY2lwaWVudChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24KYnkg b3RoZXJzIGlzIHN0cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRl ZApyZWNpcGllbnQsIHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwgY29w aWVzLgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=