From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2] drm/i915: Reduce context HW ID lifetime Date: Wed, 5 Sep 2018 10:49:02 +0100 Message-ID: References: <20180830102454.26956-1-chris@chris-wilson.co.uk> <20180904153117.3907-1-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 11E696E426 for ; Wed, 5 Sep 2018 09:49:05 +0000 (UTC) In-Reply-To: <20180904153117.3907-1-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 Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA0LzA5LzIwMTggMTY6MzEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBGdXR1cmUgZ2VuIHJl ZHVjZSB0aGUgbnVtYmVyIG9mIGJpdHMgd2Ugd2lsbCBoYXZlIGF2YWlsYWJsZSB0bwo+IGRpZmZl cmVudGlhdGUgYmV0d2VlbiBjb250ZXh0cywgc28gcmVkdWNlIHRoZSBsaWZldGltZSBvZiB0aGUg SUQKPiBhc3NpZ25tZW50IGZyb20gdGhhdCBvZiB0aGUgY29udGV4dCB0byBpdHMgY3VycmVudCBh Y3RpdmUgY3ljbGUgKGkuZS4KPiBvbmx5IHdoaWxlIGl0IGlzIHBpbm5lZCBmb3IgdXNlIGJ5IHRo ZSBIVywgd2lsbCBpdCBoYXZlIGEgY29uc3RhbnQgSUQpLgo+IFRoaXMgbWVhbnMgdGhhdCBpbnN0 ZWFkIG9mIGEgbWF4IG9mIDJrIGFsbG9jYXRlZCBjb250ZXh0cyAod29yc3QgY2FzZQo+IGJlZm9y ZSBmdW4gd2l0aCBiaXQgdHdpZGRsaW5nKSwgd2UgaW5zdGVhZCBoYXZlIGEgbGltaXQgb2YgMmsg aW4gZmxpZ2h0Cj4gY29udGV4dHMgKG1pbnVzIGEgZmV3IHRoYXQgaGF2ZSBiZWVuIHBpbm5lZCBi eSB0aGUga2VybmVsIG9yIGJ5IHBlcmYpLgo+IAo+IFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNv bnRleHRzIGlkIHdlIHJlcXVpcmUsIHdlIGFsbG9jYXRlIGEgY29udGV4dCBpZAo+IG9uIGZpcnN0 IGFuZCBtYXJrIGl0IGFzIHBpbm5lZCBmb3IgYXMgbG9uZyBhcyB0aGUgR0VNIGNvbnRleHQgaXRz ZWxmIGlzLAo+IHRoYXQgaXMgd2Uga2VlcCBpdCBwaW5uZWQgaXQgd2hpbGUgYWN0aXZlIG9uIGVh Y2ggZW5naW5lLiBJZiB3ZSBleGhhdXN0Cj4gb3VyIGNvbnRleHQgaWQgc3BhY2UsIHRoZW4gd2Ug dHJ5IHRvIHJlY2xhaW0gYW4gaWQgZnJvbSBhbiBpZGxlIGNvbnRleHQuCj4gSW4gdGhlIGV4dHJl bWUgY2FzZSB3aGVyZSBhbGwgY29udGV4dCBpZHMgYXJlIHBpbm5lZCBieSBhY3RpdmUgY29udGV4 dHMsCj4gd2UgZm9yY2UgdGhlIHN5c3RlbSB0byBpZGxlIGluIG9yZGVyIHRvIHJlY292ZXIgaWRz Lgo+IAo+IFdlIGNhbm5vdCByZWR1Y2UgdGhlIHNjb3BlIG9mIGFuIEhXLUlEIHRvIGFuIGVuZ2lu ZSAoYWxsb3dpbmcgdGhlIHNhbWUKPiBnZW1fY29udGV4dCB0byBoYXZlIGRpZmZlcmVudCBpZHMg b24gZWFjaCBlbmdpbmUpIGFzIGluIHRoZSBmdXR1cmUgd2UKPiB3aWxsIG5lZWQgdG8gcHJlYXNz aWduIGFuIGlkIGJlZm9yZSB3ZSBrbm93IHdoaWNoIGVuZ2luZSB0aGUKPiBjb250ZXh0IGlzIGJl aW5nIGV4ZWN1dGVkIG9uLgo+IAo+IHYyOiBJbXByb3ZlZCBjb21tZW50YXJ5IChUdnJ0a28pIFtJ IHRyaWVkIGF0IGxlYXN0XQo+IAo+IFJlZmVyZW5jZXM6IGh0dHBzOi8vYnVncy5mcmVlZGVza3Rv cC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzc4OAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlv bmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28u dXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50 ZWwuY29tPgo+IENjOiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+ IENjOiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPiBDYzog RGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4K PiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8 ICAgNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAg IHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAg ICB8IDIyMiArKysrKysrKysrKysrLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuaCAgICAgICB8ICAyMyArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMgICAgICAgICAgICAgIHwgICA4ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyB8ICAxMSArLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAyMDEg aW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBpbmRleCA0YWQwZTJlZDg2MTAuLjFmNzA1MWU5N2FmYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE5NTMsNyArMTk1MywxMCBAQCBzdGF0aWMg aW50IGk5MTVfY29udGV4dF9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQp Cj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRl dl9wcml2LT5jb250ZXh0cy5saXN0LCBsaW5rKSB7Cj4gLQkJc2VxX3ByaW50ZihtLCAiSFcgY29u dGV4dCAldSAiLCBjdHgtPmh3X2lkKTsKPiArCQlzZXFfcHV0cyhtLCAiSFcgY29udGV4dCAiKTsK PiArCQlpZiAoIWxpc3RfZW1wdHkoJmN0eC0+aHdfaWRfbGluaykpCj4gKwkJCXNlcV9wcmludGYo bSwgIiV4IFtwaW4gJXVdIiwgY3R4LT5od19pZCwKPiArCQkJCSAgIGF0b21pY19yZWFkKCZjdHgt Pmh3X2lkX3Bpbl9jb3VudCkpOwoKRG8geW91IHdhbnQgdG8gcHV0IHNvbWUgbWFya2VyIGZvciB0 aGUgdW5hbGxvY2F0ZWQgY2FzZSBoZXJlPwoKPiAgIAkJaWYgKGN0eC0+cGlkKSB7Cj4gICAJCQlz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCA1YTRkYTViNzIzZmQuLjc2NzYxNWVjZGVhNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC0xODYxLDYgKzE4NjEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4g ICAJc3RydWN0IG11dGV4IGF2X211dGV4Owo+ICAgCj4gICAJc3RydWN0IHsKPiArCQlzdHJ1Y3Qg bXV0ZXggbXV0ZXg7Cj4gICAJCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiAgIAkJc3RydWN0IGxs aXN0X2hlYWQgZnJlZV9saXN0Owo+ICAgCQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZnJlZV93b3JrOwo+ IEBAIC0xODczLDYgKzE4NzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gICAjZGVm aW5lIE1BWF9DT05URVhUX0hXX0lEICgxPDwyMSkgLyogZXhjbHVzaXZlICovCj4gICAjZGVmaW5l IE1BWF9HVUNfQ09OVEVYVF9IV19JRCAoMSA8PCAyMCkgLyogZXhjbHVzaXZlICovCj4gICAjZGVm aW5lIEdFTjExX01BWF9DT05URVhUX0hXX0lEICgxPDwxMSkgLyogZXhjbHVzaXZlICovCj4gKwkJ c3RydWN0IGxpc3RfaGVhZCBod19pZF9saXN0Owo+ICAgCX0gY29udGV4dHM7Cj4gICAKPiAgIAl1 MzIgZmRpX3J4X2NvbmZpZzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j Cj4gaW5kZXggZjE1YTAzOTc3MmRiLi43NDdiODE3MGExNWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTExNSw2ICsxMTUsOTUgQEAgc3RhdGljIHZv aWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJcmN1X3JlYWRf dW5sb2NrKCk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSBpbnQgbmV3X2h3X2lkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBnZnBfdCBnZnApCj4gK3sKPiArCXVuc2lnbmVkIGlu dCBtYXg7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+Y29udGV4dHMubXV0ZXgp Owo+ICsKPiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpCj4gKwkJbWF4ID0gR0VOMTFfTUFY X0NPTlRFWFRfSFdfSUQ7Cj4gKwllbHNlIGlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKQo+ ICsJCS8qCj4gKwkJICogV2hlbiB1c2luZyBHdUMgaW4gcHJveHkgc3VibWlzc2lvbiwgR3VDIGNv bnN1bWVzIHRoZQo+ICsJCSAqIGhpZ2hlc3QgYml0IGluIHRoZSBjb250ZXh0IGlkIHRvIGluZGlj YXRlIHByb3h5IHN1Ym1pc3Npb24uCj4gKwkJICovCj4gKwkJbWF4ID0gTUFYX0dVQ19DT05URVhU X0hXX0lEOwo+ICsJZWxzZQo+ICsJCW1heCA9IE1BWF9DT05URVhUX0hXX0lEOwo+ICsKPiArCXJl dHVybiBpZGFfc2ltcGxlX2dldCgmaTkxNS0+Y29udGV4dHMuaHdfaWRhLCAwLCBtYXgsIGdmcCk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc3RlYWxfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsICpjbjsKPiAr CUxJU1RfSEVBRChwaW5uZWQpOwo+ICsJaW50IGlkID0gLUVOT1NQQzsKPiArCj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gKwo+ICsJbGlzdF9mb3JfZWFj aF9lbnRyeV9zYWZlKGN0eCwgY24sCj4gKwkJCQkgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3Qs IGh3X2lkX2xpbmspIHsKPiArCQlpZiAoYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50 KSkgewo+ICsJCQlsaXN0X21vdmVfdGFpbCgmY3R4LT5od19pZF9saW5rLCAmcGlubmVkKTsKPiAr CQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlHRU1fQlVHX09OKCFjdHgtPmh3X2lkKTsgLyog cGVybWEtcGlubmVkIGtlcm5lbCBjb250ZXh0ICovCj4gKwkJbGlzdF9kZWxfaW5pdCgmY3R4LT5o d19pZF9saW5rKTsKPiArCQlpZCA9IGN0eC0+aHdfaWQ7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ ICsJLyoKPiArCSAqIFJlbWVtYmVyIGhvdyBmYXIgd2UgZ290IHVwIG9uIHRoZSBsYXN0IHJlcG9z c2VzaW9uIHNjYW4sIHNvIHRoZQo+ICsJICogbGlzdCBpcyBrZXB0IGluIGEgImxlYXN0IHJlY2Vu dGx5IHNjYW5uZWQiIG9yZGVyLgo+ICsJICovCj4gKwlsaXN0X3NwbGljZV90YWlsKCZwaW5uZWQs ICZpOTE1LT5jb250ZXh0cy5od19pZF9saXN0KTsKPiArCXJldHVybiBpZDsKPiArfQo+ICsKPiAr c3RhdGljIGludCBhc3NpZ25faHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHVu c2lnbmVkIGludCAqb3V0KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiArCj4gKwkvKgo+ICsJICogV2UgcHJlZmVy IHRvIHN0ZWFsL3N0YWxsIG91cnNlbHZlcyBhbmQgb3VyIHVzZXJzIG92ZXIgdGhhdCBvZiB0aGUK PiArCSAqIGVudGlyZSBzeXN0ZW0uIFRoYXQgbWF5IGJlIGEgbGl0dGxlIHVuZmFpciB0byBvdXIg dXNlcnMsIGFuZAo+ICsJICogZXZlbiBodXJ0IGhpZ2ggcHJpb3JpdHkgY2xpZW50cy4gVGhlIGNo b2ljZSBpcyB3aGV0aGVyIHRvIG9vbWtpbGwKPiArCSAqIHNvbWV0aGluZyBlbHNlLCBvciBzdGVh bCBhIGNvbnRleHQgaWQuCj4gKwkgKi8KPiArCXJldCA9IG5ld19od19pZChpOTE1LCBHRlBfS0VS TkVMIHwgX19HRlBfUkVUUllfTUFZRkFJTCB8IF9fR0ZQX05PV0FSTik7Cj4gKwlpZiAodW5saWtl bHkocmV0IDwgMCkpIHsKPiArCQlyZXQgPSBzdGVhbF9od19pZChpOTE1KTsKPiArCQlpZiAocmV0 IDwgMCkgLyogb25jZSBhZ2FpbiBmb3IgdGhlIGNvcnJlY3QgZXJybm8gY29kZSAqLwo+ICsJCQly ZXQgPSBuZXdfaHdfaWQoaTkxNSwgR0ZQX0tFUk5FTCk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJ CXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJKm91dCA9IHJldDsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCByZWxlYXNlX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1 Owo+ICsKPiArCWlmIChsaXN0X2VtcHR5KCZjdHgtPmh3X2lkX2xpbmspKQo+ICsJCXJldHVybjsK PiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gKwlpZiAoIWxpc3Rf ZW1wdHkoJmN0eC0+aHdfaWRfbGluaykpIHsKPiArCQlpZGFfc2ltcGxlX3JlbW92ZSgmaTkxNS0+ Y29udGV4dHMuaHdfaWRhLCBjdHgtPmh3X2lkKTsKPiArCQlsaXN0X2RlbF9pbml0KCZjdHgtPmh3 X2lkX2xpbmspOwo+ICsJfQo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7 Cj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgbjsKPiBAQCAtMTIy LDYgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJR0VNX0JVR19PTighaTkxNV9nZW1fY29udGV4dF9pc19j bG9zZWQoY3R4KSk7Cj4gICAKPiArCXJlbGVhc2VfaHdfaWQoY3R4KTsKPiAgIAlpOTE1X3BwZ3R0 X3B1dChjdHgtPnBwZ3R0KTsKPiAgIAo+ICAgCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGN0 eC0+X19lbmdpbmUpOyBuKyspIHsKPiBAQCAtMTM2LDcgKzIyNiw2IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCj4g ICAJbGlzdF9kZWwoJmN0eC0+bGluayk7Cj4gICAKPiAtCWlkYV9zaW1wbGVfcmVtb3ZlKCZjdHgt Pmk5MTUtPmNvbnRleHRzLmh3X2lkYSwgY3R4LT5od19pZCk7Cj4gICAJa2ZyZWVfcmN1KGN0eCwg cmN1KTsKPiAgIH0KPiAgIAo+IEBAIC0xOTAsNiArMjc5LDEyIEBAIHN0YXRpYyB2b2lkIGNvbnRl eHRfY2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIHsKPiAgIAlpOTE1X2dl bV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsKPiAgIAo+ICsJLyoKPiArCSAqIFRoaXMgY29udGV4 dCB3aWxsIG5ldmVyIGFnYWluIGJlIGFzc2luZ2VkIHRvIEhXLCBzbyB3ZSBjYW4KPiArCSAqIHJl dXNlIGl0cyBJRCBmb3IgdGhlIG5leHQgY29udGV4dC4KPiArCSAqLwo+ICsJcmVsZWFzZV9od19p ZChjdHgpOwo+ICsKPiAgIAkvKgo+ICAgCSAqIFRoZSBMVVQgdXNlcyB0aGUgVk1BIGFzIGEgYmFj a3BvaW50ZXIgdG8gdW5yZWYgdGhlIG9iamVjdCwKPiAgIAkgKiBzbyB3ZSBuZWVkIHRvIGNsZWFy IHRoZSBMVVQgYmVmb3JlIHdlIGNsb3NlIGFsbCB0aGUgVk1BIChpbnNpZGUKPiBAQCAtMjAzLDQz ICsyOTgsNiBAQCBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gICAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiAgIH0KPiAgIAo+IC1z dGF0aWMgaW50IGFzc2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHVuc2lnbmVkICpvdXQpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQl1bnNpZ25lZCBpbnQgbWF4Owo+ IC0KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4gLQkJbWF4ID0gR0VOMTFf TUFYX0NPTlRFWFRfSFdfSUQ7Cj4gLQl9IGVsc2Ugewo+IC0JCS8qCj4gLQkJICogV2hlbiB1c2lu ZyBHdUMgaW4gcHJveHkgc3VibWlzc2lvbiwgR3VDIGNvbnN1bWVzIHRoZQo+IC0JCSAqIGhpZ2hl c3QgYml0IGluIHRoZSBjb250ZXh0IGlkIHRvIGluZGljYXRlIHByb3h5IHN1Ym1pc3Npb24uCj4g LQkJICovCj4gLQkJaWYgKFVTRVNfR1VDX1NVQk1JU1NJT04oZGV2X3ByaXYpKQo+IC0JCQltYXgg PSBNQVhfR1VDX0NPTlRFWFRfSFdfSUQ7Cj4gLQkJZWxzZQo+IC0JCQltYXggPSBNQVhfQ09OVEVY VF9IV19JRDsKPiAtCX0KPiAtCj4gLQo+IC0JcmV0ID0gaWRhX3NpbXBsZV9nZXQoJmRldl9wcml2 LT5jb250ZXh0cy5od19pZGEsCj4gLQkJCSAgICAgMCwgbWF4LCBHRlBfS0VSTkVMKTsKPiAtCWlm IChyZXQgPCAwKSB7Cj4gLQkJLyogQ29udGV4dHMgYXJlIG9ubHkgcmVsZWFzZWQgd2hlbiBubyBs b25nZXIgYWN0aXZlLgo+IC0JCSAqIEZsdXNoIGFueSBwZW5kaW5nIHJldGlyZXMgdG8gaG9wZWZ1 bGx5IHJlbGVhc2Ugc29tZQo+IC0JCSAqIHN0YWxlIGNvbnRleHRzIGFuZCB0cnkgYWdhaW4uCj4g LQkJICovCj4gLQkJaTkxNV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwo+IC0JCXJldCA9IGlk YV9zaW1wbGVfZ2V0KCZkZXZfcHJpdi0+Y29udGV4dHMuaHdfaWRhLAo+IC0JCQkJICAgICAwLCBt YXgsIEdGUF9LRVJORUwpOwo+IC0JCWlmIChyZXQgPCAwKQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0J fQo+IC0KPiAtCSpvdXQgPSByZXQ7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgIHN0YXRpYyB1 MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+ICAgCQkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICB7Cj4g QEAgLTI3NiwxMiArMzM0LDYgQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJaWYgKGN0eCA9PSBOVUxMKQo+ICAgCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKPiAgIAo+IC0JcmV0ID0gYXNzaWduX2h3X2lkKGRldl9wcml2LCAmY3R4 LT5od19pZCk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJa2ZyZWUoY3R4KTsKPiAtCQlyZXR1cm4gRVJS X1BUUihyZXQpOwo+IC0JfQo+IC0KPiAgIAlrcmVmX2luaXQoJmN0eC0+cmVmKTsKPiAgIAlsaXN0 X2FkZF90YWlsKCZjdHgtPmxpbmssICZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCk7Cj4gICAJY3R4 LT5pOTE1ID0gZGV2X3ByaXY7Cj4gQEAgLTI5NSw2ICszNDcsNyBAQCBfX2NyZWF0ZV9od19jb250 ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAo+ICAgCUlOSVRfUkFE SVhfVFJFRSgmY3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7Cj4gICAJSU5JVF9MSVNUX0hF QUQoJmN0eC0+aGFuZGxlc19saXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xp bmspOwo+ICAgCj4gICAJLyogRGVmYXVsdCBjb250ZXh0IHdpbGwgbmV2ZXIgaGF2ZSBhIGZpbGVf cHJpdiAqLwo+ICAgCXJldCA9IERFRkFVTFRfQ09OVEVYVF9IQU5ETEU7Cj4gQEAgLTQyMSwxNSAr NDc0LDM1IEBAIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2d2dChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAgCXJldHVybiBjdHg7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQKPiArZGVzdHJv eV9rZXJuZWxfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqKmN0eHApCj4gK3sKPiAr CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwo+ICsJLyogS2VlcCB0aGUgY29udGV4 dCByZWYgc28gdGhhdCB3ZSBjYW4gZnJlZSBpdCBpbW1lZGlhdGVseSBvdXJzZWx2ZXMgKi8KPiAr CWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0KGZldGNoX2FuZF96ZXJvKGN0eHApKTsKPiArCUdF TV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOwo+ICsKPiArCWNvbnRl eHRfY2xvc2UoY3R4KTsKPiArCWk5MTVfZ2VtX2NvbnRleHRfZnJlZShjdHgpOwo+ICt9Cj4gKwo+ ICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICAgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVf a2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgcHJpbykKPiAgIHsKPiAg IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJaW50IGVycjsKPiAgIAo+ICAgCWN0 eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIE5VTEwpOwo+ICAgCWlmIChJU19FUlIo Y3R4KSkKPiAgIAkJcmV0dXJuIGN0eDsKPiAgIAo+ICsJZXJyID0gaTkxNV9nZW1fY29udGV4dF9w aW5faHdfaWQoY3R4KTsKPiArCWlmIChlcnIpIHsKPiArCQlkZXN0cm95X2tlcm5lbF9jb250ZXh0 KCZjdHgpOwo+ICsJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gKwl9Cj4gKwo+ICAgCWk5MTVfZ2Vt X2NvbnRleHRfY2xlYXJfYmFubmFibGUoY3R4KTsKPiAgIAljdHgtPnNjaGVkLnByaW9yaXR5ID0g cHJpbzsKPiAgIAljdHgtPnJpbmdfc2l6ZSA9IFBBR0VfU0laRTsKPiBAQCAtNDM5LDE3ICs1MTIs MTkgQEAgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCBpbnQgcHJpbykKPiAgIAlyZXR1cm4gY3R4Owo+ICAgfQo+ICAgCj4gLXN0YXRp YyB2b2lkCj4gLWRlc3Ryb3lfa2VybmVsX2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KipjdHhwKQo+ICtzdGF0aWMgdm9pZCBpbml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICAgewo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCW11 dGV4X2luaXQoJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiArCUlOSVRfTElTVF9IRUFEKCZpOTE1 LT5jb250ZXh0cy5saXN0KTsKPiAgIAo+IC0JLyogS2VlcCB0aGUgY29udGV4dCByZWYgc28gdGhh dCB3ZSBjYW4gZnJlZSBpdCBpbW1lZGlhdGVseSBvdXJzZWx2ZXMgKi8KPiAtCWN0eCA9IGk5MTVf Z2VtX2NvbnRleHRfZ2V0KGZldGNoX2FuZF96ZXJvKGN0eHApKTsKPiAtCUdFTV9CVUdfT04oIWk5 MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOwo+ICsJLyogVXNpbmcgdGhlIHNpbXBsZSBp ZGEgaW50ZXJmYWNlLCB0aGUgbWF4IGlzIGxpbWl0ZWQgYnkgc2l6ZW9mKGludCkgKi8KPiArCUJV SUxEX0JVR19PTihNQVhfQ09OVEVYVF9IV19JRCA+IElOVF9NQVgpOwo+ICsJQlVJTERfQlVHX09O KEdFTjExX01BWF9DT05URVhUX0hXX0lEID4gSU5UX01BWCk7Cj4gKwlpZGFfaW5pdCgmaTkxNS0+ Y29udGV4dHMuaHdfaWRhKTsKPiArCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5jb250ZXh0cy5od19p ZF9saXN0KTsKPiAgIAo+IC0JY29udGV4dF9jbG9zZShjdHgpOwo+IC0JaTkxNV9nZW1fY29udGV4 dF9mcmVlKGN0eCk7Cj4gKwlJTklUX1dPUksoJmk5MTUtPmNvbnRleHRzLmZyZWVfd29yaywgY29u dGV4dHNfZnJlZV93b3JrZXIpOwo+ICsJaW5pdF9sbGlzdF9oZWFkKCZpOTE1LT5jb250ZXh0cy5m cmVlX2xpc3QpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgYm9vbCBuZWVkc19wcmVlbXB0X2NvbnRl eHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gQEAgLTQ3MCwxNCArNTQ1LDcgQEAg aW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAtCUlOSVRfTElTVF9I RUFEKCZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCk7Cj4gLQlJTklUX1dPUksoJmRldl9wcml2LT5j b250ZXh0cy5mcmVlX3dvcmssIGNvbnRleHRzX2ZyZWVfd29ya2VyKTsKPiAtCWluaXRfbGxpc3Rf aGVhZCgmZGV2X3ByaXYtPmNvbnRleHRzLmZyZWVfbGlzdCk7Cj4gLQo+IC0JLyogVXNpbmcgdGhl IHNpbXBsZSBpZGEgaW50ZXJmYWNlLCB0aGUgbWF4IGlzIGxpbWl0ZWQgYnkgc2l6ZW9mKGludCkg Ki8KPiAtCUJVSUxEX0JVR19PTihNQVhfQ09OVEVYVF9IV19JRCA+IElOVF9NQVgpOwo+IC0JQlVJ TERfQlVHX09OKEdFTjExX01BWF9DT05URVhUX0hXX0lEID4gSU5UX01BWCk7Cj4gLQlpZGFfaW5p dCgmZGV2X3ByaXYtPmNvbnRleHRzLmh3X2lkYSk7Cj4gKwlpbml0X2NvbnRleHRzKGRldl9wcml2 KTsKPiAgIAo+ICAgCS8qIGxvd2VzdCBwcmlvcml0eTsgaWRsZSB0YXNrICovCj4gICAJY3R4ID0g aTkxNV9nZW1fY29udGV4dF9jcmVhdGVfa2VybmVsKGRldl9wcml2LCBJOTE1X1BSSU9SSVRZX01J Tik7Cj4gQEAgLTQ4Nyw5ICs1NTUsMTMgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCX0KPiAgIAkvKgo+ICAgCSAqIEZv ciBlYXN5IHJlY29nbmlzYWJsaXR5LCB3ZSB3YW50IHRoZSBrZXJuZWwgY29udGV4dCB0byBiZSAw IGFuZCB0aGVuCj4gLQkgKiBhbGwgdXNlciBjb250ZXh0cyB3aWxsIGhhdmUgbm9uLXplcm8gaHdf aWQuCj4gKwkgKiBhbGwgdXNlciBjb250ZXh0cyB3aWxsIGhhdmUgbm9uLXplcm8gaHdfaWQuIEtl cm5lbCBjb250ZXh0cyBhcmUKPiArCSAqIHBlcm1hbmVudGx5IHBpbm5lZCwgc28gdGhhdCB3ZSBu ZXZlciBzdWZmZXIgYSBzdGFsbCBhbmQgY2FuCj4gKwkgKiB1c2UgdGhlbSBmcm9tIGFueSBhbGxv Y2F0aW9uIGNvbnRleHQgKGUuZy4gZm9yIGV2aWN0aW5nIG90aGVyCj4gKwkgKiBjb250ZXh0cyBh bmQgZnJvbSBpbnNpZGUgdGhlIHNocmlua2VyKS4KPiAgIAkgKi8KPiAgIAlHRU1fQlVHX09OKGN0 eC0+aHdfaWQpOwo+ICsJR0VNX0JVR19PTighYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2Nv dW50KSk7Cj4gICAJZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0ID0gY3R4Owo+ICAgCj4gICAJLyog aGlnaGVzdCBwcmlvcml0eTsgcHJlZW1wdGluZyB0YXNrICovCj4gQEAgLTUyNyw2ICs1OTksNyBA QCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCj4gICAJZGVzdHJveV9rZXJuZWxfY29udGV4dCgmaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ ICAgCj4gICAJLyogTXVzdCBmcmVlIGFsbCBkZWZlcnJlZCBjb250ZXh0cyAodmlhIGZsdXNoX3dv cmtxdWV1ZSkgZmlyc3QgKi8KPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmk5MTUtPmNvbnRl eHRzLmh3X2lkX2xpc3QpKTsKPiAgIAlpZGFfZGVzdHJveSgmaTkxNS0+Y29udGV4dHMuaHdfaWRh KTsKPiAgIH0KPiAgIAo+IEBAIC05MzIsNiArMTAwNSwzMyBAQCBpbnQgaTkxNV9nZW1fY29udGV4 dF9yZXNldF9zdGF0c19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCXJldHVybiBy ZXQ7Cj4gICB9Cj4gICAKPiAraW50IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPSBjdHgtPmk5MTU7Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwltdXRleF9sb2NrKCZp OTE1LT5jb250ZXh0cy5tdXRleCk7Cj4gKwo+ICsJR0VNX0JVR19PTihpOTE1X2dlbV9jb250ZXh0 X2lzX2Nsb3NlZChjdHgpKTsKPiArCj4gKwlpZiAobGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5r KSkgewo+ICsJCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50KSk7 Cj4gKwo+ICsJCWVyciA9IGFzc2lnbl9od19pZChpOTE1LCAmY3R4LT5od19pZCk7Cj4gKwkJaWYg KGVycikKPiArCQkJZ290byBvdXRfdW5sb2NrOwo+ICsKPiArCQlsaXN0X2FkZF90YWlsKCZjdHgt Pmh3X2lkX2xpbmssICZpOTE1LT5jb250ZXh0cy5od19pZF9saXN0KTsKPiArCX0KPiArCj4gKwlH RU1fQlVHX09OKGF0b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkgPT0gfjB1KTsKPiAr CWF0b21pY19pbmMoJmN0eC0+aHdfaWRfcGluX2NvdW50KTsKPiArCj4gK291dF91bmxvY2s6Cj4g KwltdXRleF91bmxvY2soJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKPiArCXJldHVybiBlcnI7Cj4g K30KPiArCj4gICAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCj4gICAj aW5jbHVkZSAic2VsZnRlc3RzL21vY2tfY29udGV4dC5jIgo+ICAgI2luY2x1ZGUgInNlbGZ0ZXN0 cy9pOTE1X2dlbV9jb250ZXh0LmMiCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaAo+IGluZGV4IDg1MWRhZDZkZWNkNy4uZTA5NjczY2E3MzFkIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAo+IEBAIC0xMzQsOCArMTM0LDE2IEBAIHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0IHsKPiAgIAkgKiBmdW5jdGlvbnMgbGlrZSBmYXVsdCByZXBvcnRp bmcsIFBBU0lELCBzY2hlZHVsaW5nLiBUaGUKPiAgIAkgKiAmZHJtX2k5MTVfcHJpdmF0ZS5jb250 ZXh0X2h3X2lkYSBpcyB1c2VkIHRvIGFzc2lnbiBhIHVucWl1ZQo+ICAgCSAqIGlkIGZvciB0aGUg bGlmZXRpbWUgb2YgdGhlIGNvbnRleHQuCj4gKwkgKgo+ICsJICogQGh3X2lkX3Bpbl9jb3VudDog LSBudW1iZXIgb2YgdGltZXMgdGhpcyBjb250ZXh0IGhhZCBiZWVuIHBpbm5lZAo+ICsJICogZm9y IHVzZSAoc2hvdWxkIGJlLCBhdCBtb3N0LCBvbmNlIHBlciBlbmdpbmUpLgo+ICsJICoKPiArCSAq IEBod19pZF9saW5rOiAtIGFsbCBjb250ZXh0cyB3aXRoIGFuIGFzc2lnbmVkIGlkIGFyZSB0cmFj a2VkCj4gKwkgKiBmb3IgcG9zc2libGUgcmVwb3NzZXNzaW9uLgo+ICAgCSAqLwo+ICAgCXVuc2ln bmVkIGludCBod19pZDsKPiArCWF0b21pY190IGh3X2lkX3Bpbl9jb3VudDsKPiArCXN0cnVjdCBs aXN0X2hlYWQgaHdfaWRfbGluazsKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIEB1c2VyX2hhbmRsZTog dXNlcnNwYWNlIGlkZW50aWZpZXIKPiBAQCAtMjU0LDYgKzI2MiwyMSBAQCBzdGF0aWMgaW5saW5l IHZvaWQgaTkxNV9nZW1fY29udGV4dF9zZXRfZm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0 IGk5MTVfZ2VtXwo+ICAgCV9fc2V0X2JpdChDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9O LCAmY3R4LT5mbGFncyk7Cj4gICB9Cj4gICAKPiAraW50IF9faTkxNV9nZW1fY29udGV4dF9waW5f aHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7Cj4gK3N0YXRpYyBpbmxpbmUgaW50 IGk5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gK3sKPiArCWlmIChhdG9taWNfaW5jX25vdF96ZXJvKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIF9faTkxNV9nZW1fY29udGV4dF9waW5faHdf aWQoY3R4KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRf dW5waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArewo+ICsJR0VNX0JV R19PTihhdG9taWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpID09IDB1KTsKPiArCWF0b21p Y19kZWMoJmN0eC0+aHdfaWRfcGluX2NvdW50KTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbmxpbmUg Ym9vbCBpOTE1X2dlbV9jb250ZXh0X2lzX2RlZmF1bHQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmMpCj4gICB7Cj4gICAJcmV0dXJuIGMtPnVzZXJfaGFuZGxlID09IERFRkFVTFRfQ09O VEVYVF9IQU5ETEU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBkZWY0NjdjMjQ1 MWIuLjliMWYwZTUyMTFhMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTEy NzIsNiArMTI3Miw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X2Rlc3Ryb3koc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgCj4gICBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29u dGV4dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICB7Cj4gKwlpOTE1X2dlbV9j b250ZXh0X3VucGluX2h3X2lkKGNlLT5nZW1fY29udGV4dCk7Cj4gKwo+ICAgCWludGVsX3Jpbmdf dW5waW4oY2UtPnJpbmcpOwo+ICAgCj4gICAJY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsK PiBAQCAtMTMzMCw2ICsxMzMyLDEwIEBAIF9fZXhlY2xpc3RzX2NvbnRleHRfcGluKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIHVucGluX21h cDsKPiAgIAo+ICsJcmV0ID0gaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKPiArCWlm IChyZXQpCj4gKwkJZ290byB1bnBpbl9yaW5nOwo+ICsKPiAgIAlpbnRlbF9scl9jb250ZXh0X2Rl c2NyaXB0b3JfdXBkYXRlKGN0eCwgZW5naW5lLCBjZSk7Cj4gICAKPiAgIAljZS0+bHJjX3JlZ19z dGF0ZSA9IHZhZGRyICsgTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFOwo+IEBAIC0xMzQyLDYgKzEz NDgsOCBAQCBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gICAJaTkxNV9nZW1fY29udGV4dF9nZXQoY3R4KTsKPiAgIAlyZXR1cm4gY2U7Cj4g ICAKPiArdW5waW5fcmluZzoKPiArCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwo+ICAgdW5w aW5fbWFwOgo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwo+ ICAgdW5waW5fdm1hOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19j b250ZXh0LmMKPiBpbmRleCA4OTA0ZjFjZTY0ZTMuLmQ5MzdiZGZmMjZmOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBAQCAtNDMsNiAr NDMsNyBAQCBtb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAK PiAgIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwo+ICAg CUlOSVRfTElTVF9IRUFEKCZjdHgtPmhhbmRsZXNfbGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgm Y3R4LT5od19pZF9saW5rKTsKPiAgIAo+ICAgCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGN0 eC0+X19lbmdpbmUpOyBuKyspIHsKPiAgIAkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gJmN0 eC0+X19lbmdpbmVbbl07Cj4gQEAgLTUwLDExICs1MSw5IEBAIG1vY2tfY29udGV4dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAkJY2UtPmdlbV9jb250ZXh0ID0gY3R4Owo+ICAg CX0KPiAgIAo+IC0JcmV0ID0gaWRhX3NpbXBsZV9nZXQoJmk5MTUtPmNvbnRleHRzLmh3X2lkYSwK PiAtCQkJICAgICAwLCBNQVhfQ09OVEVYVF9IV19JRCwgR0ZQX0tFUk5FTCk7Cj4gKwlyZXQgPSBp OTE1X2dlbV9jb250ZXh0X3Bpbl9od19pZChjdHgpOwo+ICAgCWlmIChyZXQgPCAwKQo+ICAgCQln b3RvIGVycl9oYW5kbGVzOwo+IC0JY3R4LT5od19pZCA9IHJldDsKPiAgIAo+ICAgCWlmIChuYW1l KSB7Cj4gICAJCWN0eC0+bmFtZSA9IGtzdHJkdXAobmFtZSwgR0ZQX0tFUk5FTCk7Cj4gQEAgLTg1 LDExICs4NCw3IEBAIHZvaWQgbW9ja19jb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gICAKPiAgIHZvaWQgbW9ja19pbml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICAgewo+IC0JSU5JVF9MSVNUX0hFQUQoJmk5MTUtPmNvbnRleHRz Lmxpc3QpOwo+IC0JaWRhX2luaXQoJmk5MTUtPmNvbnRleHRzLmh3X2lkYSk7Cj4gLQo+IC0JSU5J VF9XT1JLKCZpOTE1LT5jb250ZXh0cy5mcmVlX3dvcmssIGNvbnRleHRzX2ZyZWVfd29ya2VyKTsK PiAtCWluaXRfbGxpc3RfaGVhZCgmaTkxNS0+Y29udGV4dHMuZnJlZV9saXN0KTsKPiArCWluaXRf Y29udGV4dHMoaTkxNSk7Cj4gICB9Cj4gICAKPiAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoK PiAKClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t PgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK