From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Vivi, Rodrigo" Subject: Re: [PATCH 4/4] drm/i915: Kill intel_dp_dpcd_read_wake Date: Wed, 21 Oct 2015 14:31:33 +0000 Message-ID: <1445438015.24860.102.camel@intel.com> References: <1445448534-2376-1-git-send-email-rodrigo.vivi@intel.com> <1445448534-2376-5-git-send-email-rodrigo.vivi@intel.com> <20151021092316.GY26517@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 481C06EDB0 for ; Wed, 21 Oct 2015 07:31:35 -0700 (PDT) In-Reply-To: <20151021092316.GY26517@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: "ville.syrjala@linux.intel.com" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE1LTEwLTIxIGF0IDEyOjIzICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 DQo+IE9uIFdlZCwgT2N0IDIxLCAyMDE1IGF0IDEwOjI4OjU0QU0gLTA3MDAsIFJvZHJpZ28gVml2 aSB3cm90ZToNCj4gPiBXZSBoYXZlIGFuIGluY29uc2lzdGVuY3kgb24gb3VyIGNvZGUgb24gdXNp bmcgDQo+ID4gaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Ugd2l0aA0KPiA+IHJldHJpZXMgYW5kIHdo ZW4gdXNpbmcgZHJtX2RwX2RwY2RfcmVhZCBoZWxwZXIgd2l0aG91dCByZXRyeS4NCj4gPiANCj4g PiBNdXN0IHByb2JhYmx5IHdpdGggdGhlIGNhc2Ugd2VyZSBhdXggbWVzc2FnZSBzaXplIDAgd2Fz bid0IGJlaW5nDQo+ID4gcHJvcGVybHkgaGFuZGxlZC4NCj4gPiANCj4gPiBXaXRoIHRoaXMgaW4g cGxhY2UgYW5kIHdpdGggZHJtIGxldmVsIG5vdyB0YWtpbmcgY2FyZSBvZiBhbGwgDQo+ID4gcmV0 cmllcw0KPiA+IGxldCdzIGtpbGwgdGhpcyBsYXN0IHJhbmRvbSByZXRyeS4NCj4gPiANCj4gPiBT byBpbiBjYXNlIHdlIGZpbmQgbW9yZSBjb3JuZXIgY2FzZXMgb24gYXV4IHRyYW5zYWN0aW9ucyB3 ZSBmYWNlIA0KPiA+IHRoYXQNCj4gPiBvbiBhdXhfY2ggdHJhbnNhY3Rpb24gZGlyZWN0bHkgcmV0 dXJuaW5nIEVCVVNZIHNvIGRybSBsZXZlbCB0YWtlcyANCj4gPiBjYXJlDQo+ID4gb2YgYW55IHJl dHJ5Lg0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZp QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyB8IDk1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tDQo+ID4gLS0tLS0tLS0tLS0tDQo+ ID4gIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkNCj4g PiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyANCj4g PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4gPiBpbmRleCA4MDg1MGQ2Li5m ZjVlMmExIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMN Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+ID4gQEAgLTk5Miw3 ICs5OTIsOCBAQCBpbnRlbF9kcF9hdXhfdHJhbnNmZXIoc3RydWN0IGRybV9kcF9hdXggKmF1eCwg DQo+ID4gc3RydWN0IGRybV9kcF9hdXhfbXNnICptc2cpDQo+ID4gIAkJaWYgKFdBUk5fT04ocnhz aXplID4gMjApKQ0KPiA+ICAJCQlyZXR1cm4gLUUyQklHOw0KPiA+ICANCj4gPiAtCQlyZXQgPSBp bnRlbF9kcF9hdXhfY2goaW50ZWxfZHAsIHR4YnVmLCB0eHNpemUsIA0KPiA+IHJ4YnVmLCByeHNp emUpOw0KPiA+ICsJCXJldCA9IGludGVsX2RwX2F1eF9jaChpbnRlbF9kcCwgdHhidWYsIHR4c2l6 ZSwNCj4gPiArCQkJCSAgICAgIHJ4YnVmLCByeHNpemUpOw0KPiA+ICAJCWlmIChyZXQgPiAwKSB7 DQo+ID4gIAkJCW1zZy0+cmVwbHkgPSByeGJ1ZlswXSA+PiA0Ow0KPiA+ICAJCQkvKg0KPiA+IEBA IC0zMDE4LDQ3ICszMDE5LDE2IEBAIHN0YXRpYyB2b2lkIGNodl9kcF9wb3N0X3BsbF9kaXNhYmxl KHN0cnVjdCANCj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQ0KPiA+ICB9DQo+ID4gIA0KPiA+ ICAvKg0KPiA+IC0gKiBOYXRpdmUgcmVhZCB3aXRoIHJldHJ5IGZvciBsaW5rIHN0YXR1cyBhbmQg cmVjZWl2ZXIgY2FwYWJpbGl0eSANCj4gPiByZWFkcyBmb3INCj4gPiAtICogY2FzZXMgd2hlcmUg dGhlIHNpbmsgbWF5IHN0aWxsIGJlIGFzbGVlcC4NCj4gPiAtICoNCj4gPiAtICogU2lua3MgYXJl ICpzdXBwb3NlZCogdG8gY29tZSB1cCB3aXRoaW4gMW1zIGZyb20gYW4gb2ZmIHN0YXRlLCANCj4g PiBidXQgd2UncmUgYWxzbw0KPiA+IC0gKiBzdXBwb3NlZCB0byByZXRyeSAzIHRpbWVzIHBlciB0 aGUgc3BlYy4NCj4gPiAtICovDQo+ID4gLXN0YXRpYyBzc2l6ZV90DQo+ID4gLWludGVsX2RwX2Rw Y2RfcmVhZF93YWtlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHVuc2lnbmVkIGludCANCj4gPiBv ZmZzZXQsDQo+ID4gLQkJCXZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpDQo+ID4gLXsNCj4gPiAt CXNzaXplX3QgcmV0Ow0KPiA+IC0JaW50IGk7DQo+ID4gLQ0KPiA+IC0JLyoNCj4gPiAtCSAqIFNv bWV0aW1lIHdlIGp1c3QgZ2V0IHRoZSBzYW1lIGluY29ycmVjdCBieXRlIHJlcGVhdGVkDQo+ID4g LQkgKiBvdmVyIHRoZSBlbnRpcmUgYnVmZmVyLiBEb2luZyBqdXN0IG9uZSB0aHJvdyBhd2F5IHJl YWQNCj4gPiAtCSAqIGluaXRpYWxseSBzZWVtcyB0byAic29sdmUiIGl0Lg0KPiA+IC0JICovDQo+ ID4gLQlkcm1fZHBfZHBjZF9yZWFkKGF1eCwgRFBfRFBDRF9SRVYsIGJ1ZmZlciwgMSk7DQo+IA0K PiBKYW5pIGFscmVhZHkgbm90ZWQgdGhhdCB0aGlzIGNhbid0IGJlIGtpbGxlZCB1bmxlc3Mgc29t ZW9uZSBjYW4gDQo+IGV4cGxhaW4NCj4gd2h5IHdlIG5lZWQgaXQsIGFuZCBob3cgd2UgY2FuIG1h a2UgZG8gd2l0aG91dCBpdC4NCg0KTXkgcmVzZWFyY2ggZ29lcyB1cCB0byBKYW5pJ3MgcGF0Y2hl cy4uLiBzb3JyeSBJIGNvdWxuZCd0IGdvIGZ1cnRoZXINCnRoYW4gdGhhdC4gSSBkb24ndCBrbm93 IHdoeSB0aGF0IHJldHJ5IHdhcyB0aGVyZSBiZWZvcmUgdGhhdCBidXQgSQ0KYXNzdW1lIG9yIGl0 IHdhcyBmb3Jnb3R0ZW4gdGhlcmUgd2hlbiByZXRyeSB3YXMgYWRkZWQgdG8gZHJtIGxldmVsIG9y DQppdCB3YXMgYmVpbmcgdXNlZCB0byBzb2x2ZSB0aGF0IGNhc2VzIHdoZXJlIGF1eCBjaCBjdGwg bWVzc2FnZSBzaXplIHdhcw0KemVybyBhbmQgd2UgbmV2ZXIgaGFuZGxlZC4NCg0KQnV0IHllcywg aXQgaXMgYSBmYWN0IHRoYXQgd2UgbmVlZCBzb21lIFFBIGludm9sdmVkIHRvIHNlZSBpZiB0aGlz DQpyZW1vdmFsIGRvZXNuJ3QgYnJlYWsgb3RoZXIgY2FzZXMuDQoNCkxvY2FsbHkgaGVyZSBvbiBC RFcgYW5kIFNLTCAtdCBiYXNpYyBsb29rcyBmaW5lIHdpdGhvdXQgdGhpcw0KZnVuY3Rpb24uLi4N Cg0KPiANCj4gPiAtDQo+ID4gLQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7DQo+ID4gLQkJcmV0 ID0gZHJtX2RwX2RwY2RfcmVhZChhdXgsIG9mZnNldCwgYnVmZmVyLCBzaXplKTsNCj4gPiAtCQlp ZiAocmV0ID09IHNpemUpDQo+ID4gLQkJCXJldHVybiByZXQ7DQo+ID4gLQkJbXNsZWVwKDEpOw0K PiA+IC0JfQ0KPiA+IC0NCj4gPiAtCXJldHVybiByZXQ7DQo+ID4gLX0NCj4gPiAtDQo+ID4gLS8q DQo+ID4gICAqIEZldGNoIEFVWCBDSCByZWdpc3RlcnMgMHgyMDIgLSAweDIwNyB3aGljaCBjb250 YWluDQo+ID4gICAqIGxpbmsgc3RhdHVzIGluZm9ybWF0aW9uDQo+ID4gICAqLw0KPiA+ICBzdGF0 aWMgYm9vbA0KPiA+ICBpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgdWludDhfdCANCj4gPiBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSkN Cj4gPiAgew0KPiA+IC0JcmV0dXJuIGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+ YXV4LA0KPiA+IC0JCQkJICAgICAgIERQX0xBTkUwXzFfU1RBVFVTLA0KPiA+IC0JCQkJICAgICAg IGxpbmtfc3RhdHVzLA0KPiA+IC0JCQkJICAgICAgIERQX0xJTktfU1RBVFVTX1NJWkUpID09IA0K PiA+IERQX0xJTktfU1RBVFVTX1NJWkU7DQo+ID4gKwlyZXR1cm4gZHJtX2RwX2RwY2RfcmVhZCgm aW50ZWxfZHAtPmF1eCwNCj4gPiArCQkJCURQX0xBTkUwXzFfU1RBVFVTLA0KPiA+ICsJCQkJbGlu a19zdGF0dXMsDQo+ID4gKwkJCQlEUF9MSU5LX1NUQVRVU19TSVpFKSA9PSANCj4gPiBEUF9MSU5L X1NUQVRVU19TSVpFOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICAvKiBUaGVzZSBhcmUgc291cmNlLXNw ZWNpZmljIHZhbHVlcy4gKi8NCj4gPiBAQCAtMzk4NSw4ICszOTU1LDggQEAgaW50ZWxfZHBfZ2V0 X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ID4gIAl1aW50OF90IHJldjsN Cj4gPiAgDQo+ID4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgs IDB4MDAwLCANCj4gPiBpbnRlbF9kcC0+ZHBjZCwNCj4gPiAtCQkJCSAgICBzaXplb2YoaW50ZWxf ZHAtPmRwY2QpKSA8IDApDQo+ID4gKwlpZiAoZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1 eCwgMHgwMDAsIGludGVsX2RwDQo+ID4gLT5kcGNkLA0KPiA+ICsJCQkgICAgIHNpemVvZihpbnRl bF9kcC0+ZHBjZCkpIDwgMCkNCj4gPiAgCQlyZXR1cm4gZmFsc2U7IC8qIGF1eCB0cmFuc2ZlciBm YWlsZWQgKi8NCj4gPiAgDQo+ID4gIAlEUk1fREVCVUdfS01TKCJEUENEOiAlKnBoXG4iLCAoaW50 KSBzaXplb2YoaW50ZWxfZHANCj4gPiAtPmRwY2QpLCBpbnRlbF9kcC0+ZHBjZCk7DQo+ID4gQEAg LTM5OTcsOSArMzk2Nyw5IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApDQo+ID4gIAkvKiBDaGVjayBpZiB0aGUgcGFuZWwgc3VwcG9ydHMgUFNSICovDQo+ID4g IAltZW1zZXQoaW50ZWxfZHAtPnBzcl9kcGNkLCAwLCBzaXplb2YoaW50ZWxfZHAtPnBzcl9kcGNk KSk7DQo+ID4gIAlpZiAoaXNfZWRwKGludGVsX2RwKSkgew0KPiA+IC0JCWludGVsX2RwX2RwY2Rf cmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCANCj4gPiBEUF9QU1JfU1VQUE9SVCwNCj4gPiAtCQkJ CQlpbnRlbF9kcC0+cHNyX2RwY2QsDQo+ID4gLQkJCQkJc2l6ZW9mKGludGVsX2RwDQo+ID4gLT5w c3JfZHBjZCkpOw0KPiA+ICsJCWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsIERQX1BT Ul9TVVBQT1JULA0KPiA+ICsJCQkJIGludGVsX2RwLT5wc3JfZHBjZCwNCj4gPiArCQkJCSBzaXpl b2YoaW50ZWxfZHAtPnBzcl9kcGNkKSk7DQo+ID4gIAkJaWYgKGludGVsX2RwLT5wc3JfZHBjZFsw XSAmIERQX1BTUl9JU19TVVBQT1JURUQpIHsNCj4gPiAgCQkJZGV2X3ByaXYtPnBzci5zaW5rX3N1 cHBvcnQgPSB0cnVlOw0KPiA+ICAJCQlEUk1fREVCVUdfS01TKCJEZXRlY3RlZCBFRFAgUFNSIA0K PiA+IFBhbmVsLlxuIik7DQo+ID4gQEAgLTQwMTAsOSArMzk4MCw5IEBAIGludGVsX2RwX2dldF9k cGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gIAkJCXVpbnQ4X3QgZnJhbWVfc3lu Y19jYXA7DQo+ID4gIA0KPiA+ICAJCQlkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7 DQo+ID4gLQkJCWludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LA0KPiA+IC0J CQkJCURQX1NJTktfREVWSUNFX0FVWF9GUkFNRV9TDQo+ID4gWU5DX0NBUCwNCj4gPiAtCQkJCQkm ZnJhbWVfc3luY19jYXAsIDEpOw0KPiA+ICsJCQlkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAt PmF1eCwNCj4gPiArCQkJCQkgDQo+ID4gIERQX1NJTktfREVWSUNFX0FVWF9GUkFNRV9TWU5DX0NB UCwNCj4gPiArCQkJCQkgICZmcmFtZV9zeW5jX2NhcCk7DQo+ID4gIAkJCWRldl9wcml2LT5wc3Iu YXV4X2ZyYW1lX3N5bmMgPSANCj4gPiBmcmFtZV9zeW5jX2NhcCA/IHRydWUgOiBmYWxzZTsNCj4g PiAgCQkJLyogUFNSMiBuZWVkcyBmcmFtZSBzeW5jIGFzIHdlbGwgKi8NCj4gPiAgCQkJZGV2X3By aXYtPnBzci5wc3IyX3N1cHBvcnQgPSBkZXZfcHJpdg0KPiA+IC0+cHNyLmF1eF9mcmFtZV9zeW5j Ow0KPiA+IEBAIC00MDI4LDE1ICszOTk4LDE1IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBp bnRlbF9kcCANCj4gPiAqaW50ZWxfZHApDQo+ID4gIAkvKiBJbnRlcm1lZGlhdGUgZnJlcXVlbmN5 IHN1cHBvcnQgKi8NCj4gPiAgCWlmIChpc19lZHAoaW50ZWxfZHApICYmDQo+ID4gIAkgICAgKGlu dGVsX2RwLT5kcGNkW0RQX0VEUF9DT05GSUdVUkFUSU9OX0NBUF0gJglEUF8NCj4gPiBEUENEX0RJ U1BMQVlfQ09OVFJPTF9DQVBBQkxFKSAmJg0KPiA+IC0JICAgIChpbnRlbF9kcF9kcGNkX3JlYWRf d2FrZSgmaW50ZWxfZHAtPmF1eCwgDQo+ID4gRFBfRURQX0RQQ0RfUkVWLCAmcmV2LCAxKSA9PSAx KSAmJg0KPiA+ICsJICAgIChkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBfRURQ X0RQQ0RfUkVWLCANCj4gPiAmcmV2KSA9PSAxKSAmJg0KPiA+ICAJICAgIChyZXYgPj0gMHgwMykp IHsgLyogZURwIHYxLjQgb3IgaGlnaGVyICovDQo+ID4gIAkJX19sZTE2IHNpbmtfcmF0ZXNbRFBf TUFYX1NVUFBPUlRFRF9SQVRFU107DQo+ID4gIAkJaW50IGk7DQo+ID4gIA0KPiA+IC0JCWludGVs X2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LA0KPiA+IC0JCQkJRFBfU1VQUE9SVEVE X0xJTktfUkFURVMsDQo+ID4gLQkJCQlzaW5rX3JhdGVzLA0KPiA+IC0JCQkJc2l6ZW9mKHNpbmtf cmF0ZXMpKTsNCj4gPiArCQlkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LA0KPiA+ICsJ CQkJIERQX1NVUFBPUlRFRF9MSU5LX1JBVEVTLA0KPiA+ICsJCQkJIHNpbmtfcmF0ZXMsDQo+ID4g KwkJCQkgc2l6ZW9mKHNpbmtfcmF0ZXMpKTsNCj4gPiAgDQo+ID4gIAkJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoc2lua19yYXRlcyk7IGkrKykgew0KPiA+ICAJCQlpbnQgdmFsID0gbGUxNl90 b19jcHUoc2lua19yYXRlc1tpXSk7DQo+ID4gQEAgLTQwNTksOSArNDAyOSw5IEBAIGludGVsX2Rw X2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+ID4gIAlpZiAoaW50ZWxfZHAt PmRwY2RbRFBfRFBDRF9SRVZdID09IDB4MTApDQo+ID4gIAkJcmV0dXJuIHRydWU7IC8qIG5vIHBl ci1wb3J0IGRvd25zdHJlYW0gaW5mbyAqLw0KPiA+ICANCj4gPiAtCWlmIChpbnRlbF9kcF9kcGNk X3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgDQo+ID4gRFBfRE9XTlNUUkVBTV9QT1JUXzAsDQo+ ID4gLQkJCQkgICAgaW50ZWxfZHAtPmRvd25zdHJlYW1fcG9ydHMsDQo+ID4gLQkJCQkgICAgRFBf TUFYX0RPV05TVFJFQU1fUE9SVFMpIDwgMCkNCj4gPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZp bnRlbF9kcC0+YXV4LCBEUF9ET1dOU1RSRUFNX1BPUlRfMCwNCj4gPiArCQkJICAgICBpbnRlbF9k cC0+ZG93bnN0cmVhbV9wb3J0cywNCj4gPiArCQkJICAgICBEUF9NQVhfRE9XTlNUUkVBTV9QT1JU UykgPCAwKQ0KPiA+ICAJCXJldHVybiBmYWxzZTsgLyogZG93bnN0cmVhbSBwb3J0IHN0YXR1cyBm ZXRjaCANCj4gPiBmYWlsZWQgKi8NCj4gPiAgDQo+ID4gIAlyZXR1cm4gdHJ1ZTsNCj4gPiBAQCAt NDA3NSwxMSArNDA0NSwxMSBAQCBpbnRlbF9kcF9wcm9iZV9vdWkoc3RydWN0IGludGVsX2RwIA0K PiA+ICppbnRlbF9kcCkNCj4gPiAgCWlmICghKGludGVsX2RwLT5kcGNkW0RQX0RPV05fU1RSRUFN X1BPUlRfQ09VTlRdICYgDQo+ID4gRFBfT1VJX1NVUFBPUlQpKQ0KPiA+ICAJCXJldHVybjsNCj4g PiAgDQo+ID4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQ X1NJTktfT1VJLCANCj4gPiBidWYsIDMpID09IDMpDQo+ID4gKwlpZiAoZHJtX2RwX2RwY2RfcmVh ZCgmaW50ZWxfZHAtPmF1eCwgRFBfU0lOS19PVUksIGJ1ZiwgMykgDQo+ID4gPT0gMykNCj4gPiAg CQlEUk1fREVCVUdfS01TKCJTaW5rIE9VSTogJTAyaHglMDJoeCUwMmh4XG4iLA0KPiA+ICAJCQkg ICAgICBidWZbMF0sIGJ1ZlsxXSwgYnVmWzJdKTsNCj4gPiAgDQo+ID4gLQlpZiAoaW50ZWxfZHBf ZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX0JSQU5DSF9PVUksIA0KPiA+IGJ1Ziwg MykgPT0gMykNCj4gPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9C UkFOQ0hfT1VJLCBidWYsIA0KPiA+IDMpID09IDMpDQo+ID4gIAkJRFJNX0RFQlVHX0tNUygiQnJh bmNoIE9VSTogJTAyaHglMDJoeCUwMmh4XG4iLA0KPiA+ICAJCQkgICAgICBidWZbMF0sIGJ1Zlsx XSwgYnVmWzJdKTsNCj4gPiAgfQ0KPiA+IEBAIC00MDk1LDcgKzQwNjUsNyBAQCBpbnRlbF9kcF9w cm9iZV9tc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkNCj4gPiAgCWlmIChpbnRlbF9kcC0+ ZHBjZFtEUF9EUENEX1JFVl0gPCAweDEyKQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4gPiAgDQo+ ID4gLQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX01TVE1f Q0FQLCANCj4gPiBidWYsIDEpKSB7DQo+ID4gKwlpZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmludGVs X2RwLT5hdXgsIERQX01TVE1fQ0FQLCBidWYpKSB7DQo+ID4gIAkJaWYgKGJ1ZlswXSAmIERQX01T VF9DQVApIHsNCj4gPiAgCQkJRFJNX0RFQlVHX0tNUygiU2luayBpcyBNU1QgY2FwYWJsZVxuIik7 DQo+ID4gIAkJCWludGVsX2RwLT5pc19tc3QgPSB0cnVlOw0KPiA+IEBAIC00MjM0LDkgKzQyMDQs OSBAQCBzdG9wOg0KPiA+ICBzdGF0aWMgYm9vbA0KPiA+ICBpbnRlbF9kcF9nZXRfc2lua19pcnEo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTggDQo+ID4gKnNpbmtfaXJxX3ZlY3RvcikNCj4g PiAgew0KPiA+IC0JcmV0dXJuIGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4 LA0KPiA+IC0JCQkJICAgICAgDQo+ID4gIERQX0RFVklDRV9TRVJWSUNFX0lSUV9WRUNUT1IsDQo+ ID4gLQkJCQkgICAgICAgc2lua19pcnFfdmVjdG9yLCAxKSA9PSAxOw0KPiA+ICsJcmV0dXJuIGRy bV9kcF9kcGNkX3JlYWRiKCZpbnRlbF9kcC0+YXV4LA0KPiA+ICsJCQkJIERQX0RFVklDRV9TRVJW SUNFX0lSUV9WRUNUT1IsDQo+ID4gKwkJCQkgc2lua19pcnFfdmVjdG9yKSA9PSAxOw0KPiA+ICB9 DQo+ID4gIA0KPiA+ICBzdGF0aWMgYm9vbA0KPiA+IEBAIC00MjQ0LDkgKzQyMTQsOSBAQCBpbnRl bF9kcF9nZXRfc2lua19pcnFfZXNpKHN0cnVjdCBpbnRlbF9kcCANCj4gPiAqaW50ZWxfZHAsIHU4 ICpzaW5rX2lycV92ZWN0b3IpDQo+ID4gIHsNCj4gPiAgCWludCByZXQ7DQo+ID4gIA0KPiA+IC0J cmV0ID0gaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsDQo+ID4gLQkJCQkJ ICAgICBEUF9TSU5LX0NPVU5UX0VTSSwNCj4gPiAtCQkJCQkgICAgIHNpbmtfaXJxX3ZlY3Rvciwg MTQpOw0KPiA+ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZHAtPmF1eCwNCj4gPiAr CQkJICAgICAgIERQX1NJTktfQ09VTlRfRVNJLA0KPiA+ICsJCQkgICAgICAgc2lua19pcnFfdmVj dG9yLCAxNCk7DQo+ID4gIAlpZiAocmV0ICE9IDE0KQ0KPiA+ICAJCXJldHVybiBmYWxzZTsNCj4g PiAgDQo+ID4gQEAgLTQ1MDIsOCArNDQ3Miw3IEBAIGludGVsX2RwX2RldGVjdF9kcGNkKHN0cnVj dCBpbnRlbF9kcCANCj4gPiAqaW50ZWxfZHApDQo+ID4gIAkgICAgaW50ZWxfZHAtPmRvd25zdHJl YW1fcG9ydHNbMF0gJiBEUF9EU19QT1JUX0hQRCkgew0KPiA+ICAJCXVpbnQ4X3QgcmVnOw0KPiA+ ICANCj4gPiAtCQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIA0K PiA+IERQX1NJTktfQ09VTlQsDQo+ID4gLQkJCQkJICAgICZyZWcsIDEpIDwgMCkNCj4gPiArCQlp ZiAoZHJtX2RwX2RwY2RfcmVhZGIoJmludGVsX2RwLT5hdXgsIA0KPiA+IERQX1NJTktfQ09VTlQs ICZyZWcpIDwgMCkNCj4gPiAgCQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfdW5rbm93bjsNCj4g PiAgDQo+ID4gIAkJcmV0dXJuIERQX0dFVF9TSU5LX0NPVU5UKHJlZykgPyANCj4gPiBjb25uZWN0 b3Jfc3RhdHVzX2Nvbm5lY3RlZA0KPiA+IC0tIA0KPiA+IDIuNC4zDQo+ID4gDQo+ID4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0DQo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngNCj4g Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==