From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 4/4] drm/i915: Kill intel_dp_dpcd_read_wake Date: Wed, 21 Oct 2015 12:23:16 +0300 Message-ID: <20151021092316.GY26517@intel.com> References: <1445448534-2376-1-git-send-email-rodrigo.vivi@intel.com> <1445448534-2376-5-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id D28306ED8C for ; Wed, 21 Oct 2015 02:23:19 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445448534-2376-5-git-send-email-rodrigo.vivi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMTA6Mjg6NTRBTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IFdlIGhhdmUgYW4gaW5jb25zaXN0ZW5jeSBvbiBvdXIgY29kZSBvbiB1c2luZyBpbnRl bF9kcF9kcGNkX3JlYWRfd2FrZSB3aXRoCj4gcmV0cmllcyBhbmQgd2hlbiB1c2luZyBkcm1fZHBf ZHBjZF9yZWFkIGhlbHBlciB3aXRob3V0IHJldHJ5Lgo+IAo+IE11c3QgcHJvYmFibHkgd2l0aCB0 aGUgY2FzZSB3ZXJlIGF1eCBtZXNzYWdlIHNpemUgMCB3YXNuJ3QgYmVpbmcKPiBwcm9wZXJseSBo YW5kbGVkLgo+IAo+IFdpdGggdGhpcyBpbiBwbGFjZSBhbmQgd2l0aCBkcm0gbGV2ZWwgbm93IHRh a2luZyBjYXJlIG9mIGFsbCByZXRyaWVzCj4gbGV0J3Mga2lsbCB0aGlzIGxhc3QgcmFuZG9tIHJl dHJ5Lgo+IAo+IFNvIGluIGNhc2Ugd2UgZmluZCBtb3JlIGNvcm5lciBjYXNlcyBvbiBhdXggdHJh bnNhY3Rpb25zIHdlIGZhY2UgdGhhdAo+IG9uIGF1eF9jaCB0cmFuc2FjdGlvbiBkaXJlY3RseSBy ZXR1cm5pbmcgRUJVU1kgc28gZHJtIGxldmVsIHRha2VzIGNhcmUKPiBvZiBhbnkgcmV0cnkuCj4g Cj4gU2lnbmVkLW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIHwgOTUgKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2Vy dGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGlu ZGV4IDgwODUwZDYuLmZmNWUyYTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAt OTkyLDcgKzk5Miw4IEBAIGludGVsX2RwX2F1eF90cmFuc2ZlcihzdHJ1Y3QgZHJtX2RwX2F1eCAq YXV4LCBzdHJ1Y3QgZHJtX2RwX2F1eF9tc2cgKm1zZykKPiAgCQlpZiAoV0FSTl9PTihyeHNpemUg PiAyMCkpCj4gIAkJCXJldHVybiAtRTJCSUc7Cj4gIAo+IC0JCXJldCA9IGludGVsX2RwX2F1eF9j aChpbnRlbF9kcCwgdHhidWYsIHR4c2l6ZSwgcnhidWYsIHJ4c2l6ZSk7Cj4gKwkJcmV0ID0gaW50 ZWxfZHBfYXV4X2NoKGludGVsX2RwLCB0eGJ1ZiwgdHhzaXplLAo+ICsJCQkJICAgICAgcnhidWYs IHJ4c2l6ZSk7Cj4gIAkJaWYgKHJldCA+IDApIHsKPiAgCQkJbXNnLT5yZXBseSA9IHJ4YnVmWzBd ID4+IDQ7Cj4gIAkJCS8qCj4gQEAgLTMwMTgsNDcgKzMwMTksMTYgQEAgc3RhdGljIHZvaWQgY2h2 X2RwX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIH0K PiAgCj4gIC8qCj4gLSAqIE5hdGl2ZSByZWFkIHdpdGggcmV0cnkgZm9yIGxpbmsgc3RhdHVzIGFu ZCByZWNlaXZlciBjYXBhYmlsaXR5IHJlYWRzIGZvcgo+IC0gKiBjYXNlcyB3aGVyZSB0aGUgc2lu ayBtYXkgc3RpbGwgYmUgYXNsZWVwLgo+IC0gKgo+IC0gKiBTaW5rcyBhcmUgKnN1cHBvc2VkKiB0 byBjb21lIHVwIHdpdGhpbiAxbXMgZnJvbSBhbiBvZmYgc3RhdGUsIGJ1dCB3ZSdyZSBhbHNvCj4g LSAqIHN1cHBvc2VkIHRvIHJldHJ5IDMgdGltZXMgcGVyIHRoZSBzcGVjLgo+IC0gKi8KPiAtc3Rh dGljIHNzaXplX3QKPiAtaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uoc3RydWN0IGRybV9kcF9hdXgg KmF1eCwgdW5zaWduZWQgaW50IG9mZnNldCwKPiAtCQkJdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6 ZSkKPiAtewo+IC0Jc3NpemVfdCByZXQ7Cj4gLQlpbnQgaTsKPiAtCj4gLQkvKgo+IC0JICogU29t ZXRpbWUgd2UganVzdCBnZXQgdGhlIHNhbWUgaW5jb3JyZWN0IGJ5dGUgcmVwZWF0ZWQKPiAtCSAq IG92ZXIgdGhlIGVudGlyZSBidWZmZXIuIERvaW5nIGp1c3Qgb25lIHRocm93IGF3YXkgcmVhZAo+ IC0JICogaW5pdGlhbGx5IHNlZW1zIHRvICJzb2x2ZSIgaXQuCj4gLQkgKi8KPiAtCWRybV9kcF9k cGNkX3JlYWQoYXV4LCBEUF9EUENEX1JFViwgYnVmZmVyLCAxKTsKCkphbmkgYWxyZWFkeSBub3Rl ZCB0aGF0IHRoaXMgY2FuJ3QgYmUga2lsbGVkIHVubGVzcyBzb21lb25lIGNhbiBleHBsYWluCndo eSB3ZSBuZWVkIGl0LCBhbmQgaG93IHdlIGNhbiBtYWtlIGRvIHdpdGhvdXQgaXQuCgo+IC0KPiAt CWZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKPiAtCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1 eCwgb2Zmc2V0LCBidWZmZXIsIHNpemUpOwo+IC0JCWlmIChyZXQgPT0gc2l6ZSkKPiAtCQkJcmV0 dXJuIHJldDsKPiAtCQltc2xlZXAoMSk7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIHJldDsKPiAtfQo+ IC0KPiAtLyoKPiAgICogRmV0Y2ggQVVYIENIIHJlZ2lzdGVycyAweDIwMiAtIDB4MjA3IHdoaWNo IGNvbnRhaW4KPiAgICogbGluayBzdGF0dXMgaW5mb3JtYXRpb24KPiAgICovCj4gIHN0YXRpYyBi b29sCj4gIGludGVsX2RwX2dldF9saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCB1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKQo+ICB7Cj4gLQlyZXR1 cm4gaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gLQkJCQkgICAgICAg RFBfTEFORTBfMV9TVEFUVVMsCj4gLQkJCQkgICAgICAgbGlua19zdGF0dXMsCj4gLQkJCQkgICAg ICAgRFBfTElOS19TVEFUVVNfU0laRSkgPT0gRFBfTElOS19TVEFUVVNfU0laRTsKPiArCXJldHVy biBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LAo+ICsJCQkJRFBfTEFORTBfMV9TVEFU VVMsCj4gKwkJCQlsaW5rX3N0YXR1cywKPiArCQkJCURQX0xJTktfU1RBVFVTX1NJWkUpID09IERQ X0xJTktfU1RBVFVTX1NJWkU7Cj4gIH0KPiAgCj4gIC8qIFRoZXNlIGFyZSBzb3VyY2Utc3BlY2lm aWMgdmFsdWVzLiAqLwo+IEBAIC0zOTg1LDggKzM5NTUsOCBAQCBpbnRlbF9kcF9nZXRfZHBjZChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXVpbnQ4X3QgcmV2Owo+ICAKPiAtCWlmIChp bnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgMHgwMDAsIGludGVsX2RwLT5k cGNkLAo+IC0JCQkJICAgIHNpemVvZihpbnRlbF9kcC0+ZHBjZCkpIDwgMCkKPiArCWlmIChkcm1f ZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCAweDAwMCwgaW50ZWxfZHAtPmRwY2QsCj4gKwkJ CSAgICAgc2l6ZW9mKGludGVsX2RwLT5kcGNkKSkgPCAwKQo+ICAJCXJldHVybiBmYWxzZTsgLyog YXV4IHRyYW5zZmVyIGZhaWxlZCAqLwo+ICAKPiAgCURSTV9ERUJVR19LTVMoIkRQQ0Q6ICUqcGhc biIsIChpbnQpIHNpemVvZihpbnRlbF9kcC0+ZHBjZCksIGludGVsX2RwLT5kcGNkKTsKPiBAQCAt Mzk5Nyw5ICszOTY3LDkgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiAgCS8qIENoZWNrIGlmIHRoZSBwYW5lbCBzdXBwb3J0cyBQU1IgKi8KPiAgCW1lbXNl dChpbnRlbF9kcC0+cHNyX2RwY2QsIDAsIHNpemVvZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsKPiAg CWlmIChpc19lZHAoaW50ZWxfZHApKSB7Cj4gLQkJaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmlu dGVsX2RwLT5hdXgsIERQX1BTUl9TVVBQT1JULAo+IC0JCQkJCWludGVsX2RwLT5wc3JfZHBjZCwK PiAtCQkJCQlzaXplb2YoaW50ZWxfZHAtPnBzcl9kcGNkKSk7Cj4gKwkJZHJtX2RwX2RwY2RfcmVh ZCgmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NVUFBPUlQsCj4gKwkJCQkgaW50ZWxfZHAtPnBzcl9k cGNkLAo+ICsJCQkJIHNpemVvZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsKPiAgCQlpZiAoaW50ZWxf ZHAtPnBzcl9kcGNkWzBdICYgRFBfUFNSX0lTX1NVUFBPUlRFRCkgewo+ICAJCQlkZXZfcHJpdi0+ cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkRldGVjdGVkIEVE UCBQU1IgUGFuZWwuXG4iKTsKPiBAQCAtNDAxMCw5ICszOTgwLDkgQEAgaW50ZWxfZHBfZ2V0X2Rw Y2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQkJdWludDhfdCBmcmFtZV9zeW5jX2Nh cDsKPiAgCj4gIAkJCWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1ZTsKPiAtCQkJaW50 ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gLQkJCQkJRFBfU0lOS19ERVZJ Q0VfQVVYX0ZSQU1FX1NZTkNfQ0FQLAo+IC0JCQkJCSZmcmFtZV9zeW5jX2NhcCwgMSk7Cj4gKwkJ CWRybV9kcF9kcGNkX3JlYWRiKCZpbnRlbF9kcC0+YXV4LAo+ICsJCQkJCSAgRFBfU0lOS19ERVZJ Q0VfQVVYX0ZSQU1FX1NZTkNfQ0FQLAo+ICsJCQkJCSAgJmZyYW1lX3N5bmNfY2FwKTsKPiAgCQkJ ZGV2X3ByaXYtPnBzci5hdXhfZnJhbWVfc3luYyA9IGZyYW1lX3N5bmNfY2FwID8gdHJ1ZSA6IGZh bHNlOwo+ICAJCQkvKiBQU1IyIG5lZWRzIGZyYW1lIHN5bmMgYXMgd2VsbCAqLwo+ICAJCQlkZXZf cHJpdi0+cHNyLnBzcjJfc3VwcG9ydCA9IGRldl9wcml2LT5wc3IuYXV4X2ZyYW1lX3N5bmM7Cj4g QEAgLTQwMjgsMTUgKzM5OTgsMTUgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgCS8qIEludGVybWVkaWF0ZSBmcmVxdWVuY3kgc3VwcG9ydCAqLwo+ICAJ aWYgKGlzX2VkcChpbnRlbF9kcCkgJiYKPiAgCSAgICAoaW50ZWxfZHAtPmRwY2RbRFBfRURQX0NP TkZJR1VSQVRJT05fQ0FQXSAmCURQX0RQQ0RfRElTUExBWV9DT05UUk9MX0NBUEFCTEUpICYmCj4g LQkgICAgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfRFBD RF9SRVYsICZyZXYsIDEpID09IDEpICYmCj4gKwkgICAgKGRybV9kcF9kcGNkX3JlYWRiKCZpbnRl bF9kcC0+YXV4LCBEUF9FRFBfRFBDRF9SRVYsICZyZXYpID09IDEpICYmCj4gIAkgICAgKHJldiA+ PSAweDAzKSkgeyAvKiBlRHAgdjEuNCBvciBoaWdoZXIgKi8KPiAgCQlfX2xlMTYgc2lua19yYXRl c1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXTsKPiAgCQlpbnQgaTsKPiAgCj4gLQkJaW50ZWxfZHBf ZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gLQkJCQlEUF9TVVBQT1JURURfTElOS19S QVRFUywKPiAtCQkJCXNpbmtfcmF0ZXMsCj4gLQkJCQlzaXplb2Yoc2lua19yYXRlcykpOwo+ICsJ CWRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RwLT5hdXgsCj4gKwkJCQkgRFBfU1VQUE9SVEVEX0xJ TktfUkFURVMsCj4gKwkJCQkgc2lua19yYXRlcywKPiArCQkJCSBzaXplb2Yoc2lua19yYXRlcykp Owo+ICAKPiAgCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzaW5rX3JhdGVzKTsgaSsrKSB7 Cj4gIAkJCWludCB2YWwgPSBsZTE2X3RvX2NwdShzaW5rX3JhdGVzW2ldKTsKPiBAQCAtNDA1OSw5 ICs0MDI5LDkgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCWlmIChpbnRlbF9kcC0+ZHBjZFtEUF9EUENEX1JFVl0gPT0gMHgxMCkKPiAgCQlyZXR1cm4g dHJ1ZTsgLyogbm8gcGVyLXBvcnQgZG93bnN0cmVhbSBpbmZvICovCj4gIAo+IC0JaWYgKGludGVs X2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9ET1dOU1RSRUFNX1BPUlRfMCwK PiAtCQkJCSAgICBpbnRlbF9kcC0+ZG93bnN0cmVhbV9wb3J0cywKPiAtCQkJCSAgICBEUF9NQVhf RE9XTlNUUkVBTV9QT1JUUykgPCAwKQo+ICsJaWYgKGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2Rw LT5hdXgsIERQX0RPV05TVFJFQU1fUE9SVF8wLAo+ICsJCQkgICAgIGludGVsX2RwLT5kb3duc3Ry ZWFtX3BvcnRzLAo+ICsJCQkgICAgIERQX01BWF9ET1dOU1RSRUFNX1BPUlRTKSA8IDApCj4gIAkJ cmV0dXJuIGZhbHNlOyAvKiBkb3duc3RyZWFtIHBvcnQgc3RhdHVzIGZldGNoIGZhaWxlZCAqLwo+ ICAKPiAgCXJldHVybiB0cnVlOwo+IEBAIC00MDc1LDExICs0MDQ1LDExIEBAIGludGVsX2RwX3By b2JlX291aShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKCEoaW50ZWxfZHAtPmRw Y2RbRFBfRE9XTl9TVFJFQU1fUE9SVF9DT1VOVF0gJiBEUF9PVUlfU1VQUE9SVCkpCj4gIAkJcmV0 dXJuOwo+ICAKPiAtCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwg RFBfU0lOS19PVUksIGJ1ZiwgMykgPT0gMykKPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkKCZpbnRl bF9kcC0+YXV4LCBEUF9TSU5LX09VSSwgYnVmLCAzKSA9PSAzKQo+ICAJCURSTV9ERUJVR19LTVMo IlNpbmsgT1VJOiAlMDJoeCUwMmh4JTAyaHhcbiIsCj4gIAkJCSAgICAgIGJ1ZlswXSwgYnVmWzFd LCBidWZbMl0pOwo+ICAKPiAtCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAt PmF1eCwgRFBfQlJBTkNIX09VSSwgYnVmLCAzKSA9PSAzKQo+ICsJaWYgKGRybV9kcF9kcGNkX3Jl YWQoJmludGVsX2RwLT5hdXgsIERQX0JSQU5DSF9PVUksIGJ1ZiwgMykgPT0gMykKPiAgCQlEUk1f REVCVUdfS01TKCJCcmFuY2ggT1VJOiAlMDJoeCUwMmh4JTAyaHhcbiIsCj4gIAkJCSAgICAgIGJ1 ZlswXSwgYnVmWzFdLCBidWZbMl0pOwo+ICB9Cj4gQEAgLTQwOTUsNyArNDA2NSw3IEBAIGludGVs X2RwX3Byb2JlX21zdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKGludGVsX2Rw LT5kcGNkW0RQX0RQQ0RfUkVWXSA8IDB4MTIpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlm IChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfTVNUTV9DQVAsIGJ1 ZiwgMSkpIHsKPiArCWlmIChkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBfTVNU TV9DQVAsIGJ1ZikpIHsKPiAgCQlpZiAoYnVmWzBdICYgRFBfTVNUX0NBUCkgewo+ICAJCQlEUk1f REVCVUdfS01TKCJTaW5rIGlzIE1TVCBjYXBhYmxlXG4iKTsKPiAgCQkJaW50ZWxfZHAtPmlzX21z dCA9IHRydWU7Cj4gQEAgLTQyMzQsOSArNDIwNCw5IEBAIHN0b3A6Cj4gIHN0YXRpYyBib29sCj4g IGludGVsX2RwX2dldF9zaW5rX2lycShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1OCAqc2lu a19pcnFfdmVjdG9yKQo+ICB7Cj4gLQlyZXR1cm4gaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmlu dGVsX2RwLT5hdXgsCj4gLQkJCQkgICAgICAgRFBfREVWSUNFX1NFUlZJQ0VfSVJRX1ZFQ1RPUiwK PiAtCQkJCSAgICAgICBzaW5rX2lycV92ZWN0b3IsIDEpID09IDE7Cj4gKwlyZXR1cm4gZHJtX2Rw X2RwY2RfcmVhZGIoJmludGVsX2RwLT5hdXgsCj4gKwkJCQkgRFBfREVWSUNFX1NFUlZJQ0VfSVJR X1ZFQ1RPUiwKPiArCQkJCSBzaW5rX2lycV92ZWN0b3IpID09IDE7Cj4gIH0KPiAgCj4gIHN0YXRp YyBib29sCj4gQEAgLTQyNDQsOSArNDIxNCw5IEBAIGludGVsX2RwX2dldF9zaW5rX2lycV9lc2ko c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTggKnNpbmtfaXJxX3ZlY3RvcikKPiAgewo+ICAJ aW50IHJldDsKPiAgCj4gLQlyZXQgPSBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAt PmF1eCwKPiAtCQkJCQkgICAgIERQX1NJTktfQ09VTlRfRVNJLAo+IC0JCQkJCSAgICAgc2lua19p cnFfdmVjdG9yLCAxNCk7Cj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4 LAo+ICsJCQkgICAgICAgRFBfU0lOS19DT1VOVF9FU0ksCj4gKwkJCSAgICAgICBzaW5rX2lycV92 ZWN0b3IsIDE0KTsKPiAgCWlmIChyZXQgIT0gMTQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiBA QCAtNDUwMiw4ICs0NDcyLDcgQEAgaW50ZWxfZHBfZGV0ZWN0X2RwY2Qoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgCSAgICBpbnRlbF9kcC0+ZG93bnN0cmVhbV9wb3J0c1swXSAmIERQX0RT X1BPUlRfSFBEKSB7Cj4gIAkJdWludDhfdCByZWc7Cj4gIAo+IC0JCWlmIChpbnRlbF9kcF9kcGNk X3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfU0lOS19DT1VOVCwKPiAtCQkJCQkgICAgJnJl ZywgMSkgPCAwKQo+ICsJCWlmIChkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBf U0lOS19DT1VOVCwgJnJlZykgPCAwKQo+ICAJCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c191bmtu b3duOwo+ICAKPiAgCQlyZXR1cm4gRFBfR0VUX1NJTktfQ09VTlQocmVnKSA/IGNvbm5lY3Rvcl9z dGF0dXNfY29ubmVjdGVkCj4gLS0gCj4gMi40LjMKPiAKPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBP VEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK