From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 5/9] drm/i915/execlists: Unify CSB access pointers Date: Thu, 28 Jun 2018 11:02:17 +0100 Message-ID: References: <20180627210712.25428-1-chris@chris-wilson.co.uk> <20180627210712.25428-5-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDB8A6EC99 for ; Thu, 28 Jun 2018 10:02:21 +0000 (UTC) In-Reply-To: <20180627210712.25428-5-chris@chris-wilson.co.uk> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI3LzA2LzIwMTggMjI6MDcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBGb2xsb3dpbmcgdGhl IHJlbW92YWwgb2YgdGhlIGxhc3Qgd29ya2Fyb3VuZHMsIHRoZSBvbmx5IENTQiBtbWlvIGFjY2Vz cwo+IGlzIGZvciB0aGUgb2xkIHZHUFUgaW50ZXJmYWNlLiBUaGUgbW1pbyByZWdpc3RlcnMgcHJl c2VudGVkIGJ5IHZHUFUgZG8KPiBub3QgcmVxdWlyZSBmb3JjZXdha2UgYW5kIGNhbiBiZSB0cmVh dGVkIGFzIG9yZGluYXJ5IHZvbGF0aWxlIG1lbW9yeSwKPiBpLmUuIHRoZXkgYmVoYXZlIGp1c3Qg bGlrZSB0aGUgSFdTUCBhY2Nlc3MganVzdCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbi4KPiBXZSBj YW4gcmVkdWNlIHRoZSBDU0IgYWNjZXNzIHRvIGEgc2V0IG9mIHJlYWQvd3JpdGUvYnVmZmVyIHBv aW50ZXJzIGFuZAo+IHRyZWF0IHRoZSB2YXJpb3VzIHBhdGhzIGlkZW50aWNhbGx5IGFuZCBub3Qg d29ycnkgYWJvdXQgZm9yY2V3YWtlLgo+IChGb3JjZXdha2UgaXMgbmlnaHRtYXJlIGZvciB3b3Jz dGNhc2UgbGF0ZW5jeSwgYW5kIHdlIHdhbnQgdG8gcHJvY2Vzcwo+IHRoaXMgYWxsIHdpdGggaXJx c29mZiAtLSBubyBsYXRlbmN5IGFsbG93ZWQhKQo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgIDEyIC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgMTE2ICsrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgIDIzICsrKy0tCj4gICAz IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDg2IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggZDMyNjRiZDZlOWRjLi43 MjA5YzIyNzk4ZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ IEBAIC0yNSw3ICsyNSw2IEBACj4gICAjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgo+ICAgCj4g ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAtI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+ICAgI2lu Y2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKPiAgICNpbmNsdWRlICJpbnRlbF9scmMuaCIKPiAg IAo+IEBAIC00NTYsMjEgKzQ1NSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfaW5pdF9i YXRjaF9wb29sKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpOTE1X2dlbV9i YXRjaF9wb29sX2luaXQoJmVuZ2luZS0+YmF0Y2hfcG9vbCwgZW5naW5lKTsKPiAgIH0KPiAgIAo+ IC1zdGF0aWMgYm9vbCBjc2JfZm9yY2VfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAtewo+IC0JLyogT2xkZXIgR1ZUIGVtdWxhdGlvbiBkZXBlbmRzIHVwb24gaW50ZXJjZXB0 aW5nIENTQiBtbWlvICovCj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoaTkxNSkgJiYgIWludGVs X3ZncHVfaGFzX2h3c3BfZW11bGF0aW9uKGk5MTUpKQo+IC0JCXJldHVybiB0cnVlOwo+IC0KPiAt CXJldHVybiBmYWxzZTsKPiAtfQo+IC0KPiAgIHN0YXRpYyB2b2lkIGludGVsX2VuZ2luZV9pbml0 X2V4ZWNsaXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4 ZWNsaXN0czsKPiAgIAo+IC0JZXhlY2xpc3RzLT5jc2JfdXNlX21taW8gPSBjc2JfZm9yY2VfbW1p byhlbmdpbmUtPmk5MTUpOwo+IC0KPiAgIAlleGVjbGlzdHMtPnBvcnRfbWFzayA9IDE7Cj4gICAJ QlVJTERfQlVHX09OX05PVF9QT1dFUl9PRl8yKGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3Rz KSk7Cj4gICAJR0VNX0JVR19PTihleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0cykgPiBFWEVD TElTVF9NQVhfUE9SVFMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggOTE2NTZl YjJmMmRiLi4zNjhhOGM3NGQxMWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBA IC0xMzcsNiArMTM3LDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAgICNpbmNs dWRlICJpOTE1X2Rydi5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5oIgo+ ICsjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgo+ ICAgI2luY2x1ZGUgImludGVsX21vY3MuaCIKPiAgICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5k cy5oIgo+IEBAIC05NTMsNDQgKzk1NCwyMyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2NzYihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2lu ZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4gICAJ c3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlzdHMtPnBvcnQ7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGVuZ2luZS0+aTkxNTsKPiAtCj4gLQkvKiBUaGUgSFdT UCBjb250YWlucyBhIChjYWNoZWFibGUpIG1pcnJvciBvZiB0aGUgQ1NCICovCj4gLQljb25zdCB1 MzIgKmJ1ZiA9Cj4gLQkJJmVuZ2luZS0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyW0k5MTVfSFdTX0NT Ql9CVUYwX0lOREVYXTsKPiAtCXVuc2lnbmVkIGludCBoZWFkLCB0YWlsOwo+IC0JYm9vbCBmdyA9 IGZhbHNlOwo+ICsJY29uc3QgdTMyICogY29uc3QgYnVmID0gZXhlY2xpc3RzLT5jc2Jfc3RhdHVz Owo+ICsJdTggaGVhZCwgdGFpbDsKPiAgIAo+ICAgCS8qIENsZWFyIGJlZm9yZSByZWFkaW5nIHRv IGNhdGNoIG5ldyBpbnRlcnJ1cHRzICovCj4gICAJY2xlYXJfYml0KEVOR0lORV9JUlFfRVhFQ0xJ U1QsICZlbmdpbmUtPmlycV9wb3N0ZWQpOwo+ICAgCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7Cj4g ICAKPiAtCWlmICh1bmxpa2VseShleGVjbGlzdHMtPmNzYl91c2VfbW1pbykpIHsKPiAtCQlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2dldChpOTE1LCBleGVjbGlzdHMtPmZ3X2RvbWFpbnMpOwo+IC0J CWZ3ID0gdHJ1ZTsKPiAtCj4gLQkJYnVmID0gKHUzMiAqIF9fZm9yY2UpCj4gLQkJCShpOTE1LT5y ZWdzICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8oZW5n aW5lLCAwKSkpOwo+ICsJLyogTm90ZSB0aGF0IGNzYl93cml0ZSwgY3NiX3N0YXR1cyBtYXkgYmUg ZWl0aGVyIGluIEhXU1Agb3IgbW1pbyAqLwo+ICsJaGVhZCA9IGV4ZWNsaXN0cy0+Y3NiX2hlYWQ7 Cj4gKwl0YWlsID0gUkVBRF9PTkNFKCpleGVjbGlzdHMtPmNzYl93cml0ZSk7CgpVbmRlciBHVlQg d2hlbiB0aGlzIGlzIGVtdWxhdGVkIG1taW8gSSB0aGluayB5b3UgbmVlZCB0byBtYXNrIGFuZCBz aGlmdCAKaXQgd2l0aCBHRU44X0NTQl9XUklURV9QVFIuCgo+ICsJR0VNX1RSQUNFKCIlcyBjcy1p cnEgaGVhZD0lZCwgdGFpbD0lZFxuIiwgZW5naW5lLT5uYW1lLCBoZWFkLCB0YWlsKTsKPiArCWlm ICh1bmxpa2VseShoZWFkID09IHRhaWwpKQo+ICsJCXJldHVybjsKPiAgIAo+IC0JCWhlYWQgPSBy ZWFkbChpOTE1LT5yZWdzICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRV U19QVFIoZW5naW5lKSkpOwo+IC0JCXRhaWwgPSBHRU44X0NTQl9XUklURV9QVFIoaGVhZCk7Cj4g LQkJaGVhZCA9IEdFTjhfQ1NCX1JFQURfUFRSKGhlYWQpOwo+IC0JCWV4ZWNsaXN0cy0+Y3NiX2hl YWQgPSBoZWFkOwo+IC0JfSBlbHNlIHsKPiAtCQljb25zdCBpbnQgd3JpdGVfaWR4ID0KPiAtCQkJ aW50ZWxfaHdzX2NzYl93cml0ZV9pbmRleChpOTE1KSAtCj4gLQkJCUk5MTVfSFdTX0NTQl9CVUYw X0lOREVYOwo+ICsJcm1iKCk7IC8qIEhvcGVmdWxseSBwYWlyZWQgd2l0aCBhIHdtYigpIGluIEhX ICovCj4gICAKPiAtCQloZWFkID0gZXhlY2xpc3RzLT5jc2JfaGVhZDsKPiAtCQl0YWlsID0gUkVB RF9PTkNFKGJ1Zlt3cml0ZV9pZHhdKTsKPiAtCQlybWIoKTsgLyogSG9wZWZ1bGx5IHBhaXJlZCB3 aXRoIGEgd21iKCkgaW4gSFcgKi8KPiAtCX0KPiAtCUdFTV9UUkFDRSgiJXMgY3MtaXJxIGhlYWQ9 JWQgWyVkJXNdLCB0YWlsPSVkIFslZCVzXVxuIiwKPiAtCQkgIGVuZ2luZS0+bmFtZSwKPiAtCQkg IGhlYWQsIEdFTjhfQ1NCX1JFQURfUFRSKHJlYWRsKGk5MTUtPnJlZ3MgKyBpOTE1X21taW9fcmVn X29mZnNldChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpKSkpLCBmdyA/ICIiIDogIj8i LAo+IC0JCSAgdGFpbCwgR0VOOF9DU0JfV1JJVEVfUFRSKHJlYWRsKGk5MTUtPnJlZ3MgKyBpOTE1 X21taW9fcmVnX29mZnNldChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpKSkpLCBmdyA/ ICIiIDogIj8iKTsKPiAtCj4gLQl3aGlsZSAoaGVhZCAhPSB0YWlsKSB7Cj4gKwlkbyB7CgpXaHkg Y29udmVydCB3aGlsZSB0byBkby13aGlsZT8gRWFybHkgdW5saWtlbHkgcmV0dXJuIGFib3ZlIGhh bmRsZXMgdGhlIAp2b2lkIHByb2Nlc3NfY3NiIGNhbGxzPyBXb3VsZCB0aGUgc2FtZSBlZmZlY3Qg aGFwcGVuIGlmIHlvdSBwdXQgdW5saWtlbHkgCmluIHRoZSB3aGlsZSAoaGVhZCAhPSB0YWlsKSBj b25kaXRpb24gYW5kIHdvdWxkIGJlIHNpbXBsZXI/Cgo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycTsKPiAgIAkJdW5zaWduZWQgaW50IHN0YXR1czsKPiAgIAkJdW5zaWduZWQgaW50IGNvdW50 Owo+IEBAIC0xMDE2LDEyICs5OTYsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCQkgKiBzdGF0dXMgbm90aWZpZXIuCj4gICAJ CSAqLwo+ICAgCj4gLQkJc3RhdHVzID0gUkVBRF9PTkNFKGJ1ZlsyICogaGVhZF0pOyAvKiBtYXli ZSBtbWlvISAqLwo+ICAgCQlHRU1fVFJBQ0UoIiVzIGNzYlslZF06IHN0YXR1cz0weCUwOHg6MHgl MDh4LCBhY3RpdmU9MHgleFxuIiwKPiAgIAkJCSAgZW5naW5lLT5uYW1lLCBoZWFkLAo+IC0JCQkg IHN0YXR1cywgYnVmWzIqaGVhZCArIDFdLAo+ICsJCQkgIGJ1ZlsyICogaGVhZCArIDBdLCBidWZb MiAqIGhlYWQgKyAxXSwKPiAgIAkJCSAgZXhlY2xpc3RzLT5hY3RpdmUpOwo+ICAgCj4gKwkJc3Rh dHVzID0gYnVmWzIgKiBoZWFkXTsKCldoeSBub3QgbGVhdmUgYmVmb3JlIEdFTV9UUkFDRSBhYm92 ZSwgYXMgaXMsIGFuZCB0aGVuIGRpZmYgaXMgc21hbGxlcj8KCj4gICAJCWlmIChzdGF0dXMgJiAo R0VOOF9DVFhfU1RBVFVTX0lETEVfQUNUSVZFIHwKPiAgIAkJCSAgICAgIEdFTjhfQ1RYX1NUQVRV U19QUkVFTVBURUQpKQo+ICAgCQkJZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLAo+IEBA IC0xMTAzLDE2ICsxMDgzLDExIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfY3NiKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCXBvcnRfc2V0KHBvcnQs IHBvcnRfcGFjayhycSwgY291bnQpKTsKPiAgIAkJfQo+IC0JfQo+ICsJfSB3aGlsZSAoaGVhZCAh PSB0YWlsKTsKPiAgIAo+IC0JaWYgKGhlYWQgIT0gZXhlY2xpc3RzLT5jc2JfaGVhZCkgewo+IC0J CWV4ZWNsaXN0cy0+Y3NiX2hlYWQgPSBoZWFkOwo+IC0JCXdyaXRlbChfTUFTS0VEX0ZJRUxEKEdF TjhfQ1NCX1JFQURfUFRSX01BU0ssIGhlYWQgPDwgOCksCj4gLQkJICAgICAgIGk5MTUtPnJlZ3Mg KyBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpKSk7 Cj4gLQl9Cj4gLQo+IC0JaWYgKHVubGlrZWx5KGZ3KSkKPiAtCQlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dChpOTE1LCBleGVjbGlzdHMtPmZ3X2RvbWFpbnMpOwo+ICsJd3JpdGVsKF9NQVNLRURf RklFTEQoR0VOOF9DU0JfUkVBRF9QVFJfTUFTSywgaGVhZCA8PCA4KSwKPiArCSAgICAgICBleGVj bGlzdHMtPmNzYl9yZWFkKTsKPiArCWV4ZWNsaXN0cy0+Y3NiX2hlYWQgPSBoZWFkOwoKSSBndWVz cyBlYXJseSByZXR1cm4gaGVscHMgdG8gYXZvaWQgdGhpcywgYnV0IHNpbmNlIGl0IGlzIGdvaW5n IGF3YXkgaW4gCmEgZm9sbG93aW5nIHBhdGNoIG1heWJlIGl0IGlzIG5vdCB3b3J0aCBpdC4KCj4g ICB9Cj4gICAKPiAgIC8qCj4gQEAgLTI0MzAsMjggKzI0MDUsMTEgQEAgbG9naWNhbF9yaW5nX2Rl ZmF1bHRfaXJxcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICBzdGF0aWMgdm9p ZAo+ICAgbG9naWNhbF9yaW5nX3NldHVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkx NTsKPiAtCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWluczsKPiAtCj4gICAJaW50ZWxf ZW5naW5lX3NldHVwX2NvbW1vbihlbmdpbmUpOwo+ICAgCj4gICAJLyogSW50ZW50aW9uYWxseSBs ZWZ0IGJsYW5rLiAqLwo+ICAgCWVuZ2luZS0+YnVmZmVyID0gTlVMTDsKPiAgIAo+IC0JZndfZG9t YWlucyA9IGludGVsX3VuY29yZV9mb3JjZXdha2VfZm9yX3JlZyhkZXZfcHJpdiwKPiAtCQkJCQkJ ICAgIFJJTkdfRUxTUChlbmdpbmUpLAo+IC0JCQkJCQkgICAgRldfUkVHX1dSSVRFKTsKPiAtCj4g LQlmd19kb21haW5zIHw9IGludGVsX3VuY29yZV9mb3JjZXdha2VfZm9yX3JlZyhkZXZfcHJpdiwK PiAtCQkJCQkJICAgICBSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihlbmdpbmUpLAo+IC0JCQkJCQkg ICAgIEZXX1JFR19SRUFEIHwgRldfUkVHX1dSSVRFKTsKPiAtCj4gLQlmd19kb21haW5zIHw9IGlu dGVsX3VuY29yZV9mb3JjZXdha2VfZm9yX3JlZyhkZXZfcHJpdiwKPiAtCQkJCQkJICAgICBSSU5H X0NPTlRFWFRfU1RBVFVTX0JVRl9CQVNFKGVuZ2luZSksCj4gLQkJCQkJCSAgICAgRldfUkVHX1JF QUQpOwo+IC0KPiAtCWVuZ2luZS0+ZXhlY2xpc3RzLmZ3X2RvbWFpbnMgPSBmd19kb21haW5zOwo+ IC0KPiAgIAl0YXNrbGV0X2luaXQoJmVuZ2luZS0+ZXhlY2xpc3RzLnRhc2tsZXQsCj4gICAJCSAg ICAgZXhlY2xpc3RzX3N1Ym1pc3Npb25fdGFza2xldCwgKHVuc2lnbmVkIGxvbmcpZW5naW5lKTsK PiAgIAo+IEBAIC0yNDU5LDM0ICsyNDE3LDU2IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJbG9naWNhbF9yaW5nX2RlZmF1bHRfaXJxcyhl bmdpbmUpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBib29sIGNzYl9mb3JjZV9tbWlvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwkvKiBPbGRlciBHVlQgZW11bGF0aW9uIGRl cGVuZHMgdXBvbiBpbnRlcmNlcHRpbmcgQ1NCIG1taW8gKi8KPiArCXJldHVybiBpbnRlbF92Z3B1 X2FjdGl2ZShpOTE1KSAmJiAhaW50ZWxfdmdwdV9oYXNfaHdzcF9lbXVsYXRpb24oaTkxNSk7Cj4g K30KPiArCj4gICBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g ZW5naW5lLT5pOTE1Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBl eGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4gICAJaW50IHJldDsKPiAgIAo+ICAgCXJl dCA9IGludGVsX2VuZ2luZV9pbml0X2NvbW1vbihlbmdpbmUpOwo+ICAgCWlmIChyZXQpCj4gICAJ CWdvdG8gZXJyb3I7Cj4gICAKPiAtCWlmIChIQVNfTE9HSUNBTF9SSU5HX0VMU1EoZW5naW5lLT5p OTE1KSkgewo+IC0JCWVuZ2luZS0+ZXhlY2xpc3RzLnN1Ym1pdF9yZWcgPSBlbmdpbmUtPmk5MTUt PnJlZ3MgKwo+ICsJaWYgKEhBU19MT0dJQ0FMX1JJTkdfRUxTUShpOTE1KSkgewo+ICsJCWV4ZWNs aXN0cy0+c3VibWl0X3JlZyA9IGk5MTUtPnJlZ3MgKwo+ICAgCQkJaTkxNV9tbWlvX3JlZ19vZmZz ZXQoUklOR19FWEVDTElTVF9TUV9DT05URU5UUyhlbmdpbmUpKTsKPiAtCQllbmdpbmUtPmV4ZWNs aXN0cy5jdHJsX3JlZyA9IGVuZ2luZS0+aTkxNS0+cmVncyArCj4gKwkJZXhlY2xpc3RzLT5jdHJs X3JlZyA9IGk5MTUtPnJlZ3MgKwo+ICAgCQkJaTkxNV9tbWlvX3JlZ19vZmZzZXQoUklOR19FWEVD TElTVF9DT05UUk9MKGVuZ2luZSkpOwo+ICAgCX0gZWxzZSB7Cj4gLQkJZW5naW5lLT5leGVjbGlz dHMuc3VibWl0X3JlZyA9IGVuZ2luZS0+aTkxNS0+cmVncyArCj4gKwkJZXhlY2xpc3RzLT5zdWJt aXRfcmVnID0gaTkxNS0+cmVncyArCj4gICAJCQlpOTE1X21taW9fcmVnX29mZnNldChSSU5HX0VM U1AoZW5naW5lKSk7Cj4gICAJfQo+ICAgCj4gLQllbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0X2Nv bXBsZXRlX3N0YXR1cyA9IH4wdTsKPiAtCWlmIChlbmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4 dCkgewo+ICsJZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cyA9IH4wdTsKPiArCWlm IChpOTE1LT5wcmVlbXB0X2NvbnRleHQpIHsKPiAgIAkJc3RydWN0IGludGVsX2NvbnRleHQgKmNl ID0KPiAtCQkJdG9faW50ZWxfY29udGV4dChlbmdpbmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCwg ZW5naW5lKTsKPiArCQkJdG9faW50ZWxfY29udGV4dChpOTE1LT5wcmVlbXB0X2NvbnRleHQsIGVu Z2luZSk7Cj4gICAKPiAtCQllbmdpbmUtPmV4ZWNsaXN0cy5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1 cyA9Cj4gKwkJZXhlY2xpc3RzLT5wcmVlbXB0X2NvbXBsZXRlX3N0YXR1cyA9Cj4gICAJCQl1cHBl cl8zMl9iaXRzKGNlLT5scmNfZGVzYyk7Cj4gICAJfQo+ICAgCj4gLQllbmdpbmUtPmV4ZWNsaXN0 cy5jc2JfaGVhZCA9IEdFTjhfQ1NCX0VOVFJJRVMgLSAxOwo+ICsJZXhlY2xpc3RzLT5jc2JfaGVh ZCA9IEdFTjhfQ1NCX0VOVFJJRVMgLSAxOwo+ICsJZXhlY2xpc3RzLT5jc2JfcmVhZCA9Cj4gKwkJ aTkxNS0+cmVncyArIGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRS KGVuZ2luZSkpOwo+ICsJaWYgKGNzYl9mb3JjZV9tbWlvKGk5MTUpKSB7Cj4gKwkJZXhlY2xpc3Rz LT5jc2Jfc3RhdHVzID0gKHUzMiBfX2ZvcmNlICopCj4gKwkJCShpOTE1LT5yZWdzICsgaTkxNV9t bWlvX3JlZ19vZmZzZXQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8oZW5naW5lLCAwKSkpOwo+ ICsKPiArCQlleGVjbGlzdHMtPmNzYl93cml0ZSA9ICh1MzIgX19mb3JjZSAqKWV4ZWNsaXN0cy0+ Y3NiX3JlYWQ7Cj4gKwl9IGVsc2Ugewo+ICsJCWV4ZWNsaXN0cy0+Y3NiX3N0YXR1cyA9Cj4gKwkJ CSZlbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkcltJOTE1X0hXU19DU0JfQlVGMF9JTkRFWF07 Cj4gKwo+ICsJCWV4ZWNsaXN0cy0+Y3NiX3dyaXRlID0KPiArCQkJJmVuZ2luZS0+c3RhdHVzX3Bh Z2UucGFnZV9hZGRyW2ludGVsX2h3c19jc2Jfd3JpdGVfaW5kZXgoaTkxNSldOwo+ICsJfQo+ICAg Cj4gICAJcmV0dXJuIDA7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCj4gaW5kZXggYTBiYzdhODIyMmI0Li41YjkyYzVmMDNlMWQgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTMwMCwxOSArMzAwLDMwIEBAIHN0cnVj dCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzIHsKPiAgIAlzdHJ1Y3QgcmJfbm9kZSAqZmlyc3Q7Cj4g ICAKPiAgIAkvKioKPiAtCSAqIEBmd19kb21haW5zOiBmb3JjZXdha2UgZG9tYWlucyBmb3IgaXJx IHRhc2tsZXQKPiArCSAqIEBjc2JfaGVhZDogY29udGV4dCBzdGF0dXMgYnVmZmVyIGhlYWQKPiAg IAkgKi8KPiAtCXVuc2lnbmVkIGludCBmd19kb21haW5zOwo+ICsJdW5zaWduZWQgaW50IGNzYl9o ZWFkOwo+ICAgCj4gICAJLyoqCj4gLQkgKiBAY3NiX2hlYWQ6IGNvbnRleHQgc3RhdHVzIGJ1ZmZl ciBoZWFkCj4gKwkgKiBAY3NiX3JlYWQ6IGNvbnRyb2wgcmVnaXN0ZXIgZm9yIENvbnRleHQgU3dp dGNoIGJ1ZmZlcgo+ICsJICoKPiArCSAqIE5vdGUgdGhpcyByZWdpc3RlciBpcyBhbHdheXMgaW4g bW1pby4KPiAgIAkgKi8KPiAtCXVuc2lnbmVkIGludCBjc2JfaGVhZDsKPiArCXUzMiBfX2lvbWVt ICpjc2JfcmVhZDsKPiAgIAo+ICAgCS8qKgo+IC0JICogQGNzYl91c2VfbW1pbzogYWNjZXNzIGNz YiB0aHJvdWdoIG1taW8sIGluc3RlYWQgb2YgaHdzcAo+ICsJICogQGNzYl93cml0ZTogY29udHJv bCByZWdpc3RlciBmb3IgQ29udGV4dCBTd2l0Y2ggYnVmZmVyCj4gKwkgKgo+ICsJICogTm90ZSB0 aGlzIHJlZ2lzdGVyIG1heSBiZSBlaXRoZXIgbW1pbyBvciBIV1NQIHNoYWRvdy4KPiArCSAqLwo+ ICsJdTMyICpjc2Jfd3JpdGU7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAY3NiX3N0YXR1czogc3RhdHVz IGFycmF5IGZvciBDb250ZXh0IFN3aXRjaCBidWZmZXIKPiArCSAqCj4gKwkgKiBOb3RlIHRoZXNl IHJlZ2lzdGVyIG1heSBiZSBlaXRoZXIgbW1pbyBvciBIV1NQIHNoYWRvdy4KPiAgIAkgKi8KPiAt CWJvb2wgY3NiX3VzZV9tbWlvOwo+ICsJdTMyICpjc2Jfc3RhdHVzOwo+ICAgCj4gICAJLyoqCj4g ICAJICogQHByZWVtcHRfY29tcGxldGVfc3RhdHVzOiBleHBlY3RlZCBDU0IgdXBvbiBjb21wbGV0 aW5nIHByZWVtcHRpb24KPiAKCkxvb2tzIG90aGVyd2lzZSBvay4KClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==