From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 12/39] drm/i915: Allow a context to define its set of engines Date: Thu, 14 Mar 2019 16:47:05 +0000 Message-ID: References: <20190313144401.17735-1-chris@chris-wilson.co.uk> <20190313144401.17735-12-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id C90616E160 for ; Thu, 14 Mar 2019 16:47:09 +0000 (UTC) In-Reply-To: <20190313144401.17735-12-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDEzLzAzLzIwMTkgMTQ6NDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdmVyIHRoZSBsYXN0 IGZldyB5ZWFycywgd2UgaGF2ZSBkZWJhdGVkIGhvdyB0byBleHRlbmQgdGhlIHVzZXIgQVBJIHRv Cj4gc3VwcG9ydCBhbiBpbmNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIGVuZ2luZXMsIHRoYXQgbWF5 IGJlIHNwYXJzZSBhbmQKPiBldmVuIGJlIGhldGVyb2dlbmVvdXMgd2l0aGluIGEgY2xhc3MgKG5v dCBhbGwgdmlkZW8gZGVjb2RlcnMgY3JlYXRlZAo+IGVxdWFsKS4gV2Ugc2V0dGxlZCBvbiB1c2lu ZyAoY2xhc3MsIGluc3RhbmNlKSB0dXBsZXMgdG8gaWRlbnRpZnkgYQo+IHNwZWNpZmljIGVuZ2lu ZSwgd2l0aCBhbiBBUEkgZm9yIHRoZSB1c2VyIHRvIGNvbnN0cnVjdCBhIG1hcCBvZiBlbmdpbmVz Cj4gdG8gY2FwYWJpbGl0aWVzLiBJbnRvIHRoaXMgcGljdHVyZSwgd2UgdGhlbiBhZGQgYSBjaGFs bGVuZ2Ugb2YgdmlydHVhbAo+IGVuZ2luZXM7IG9uZSB1c2VyIGVuZ2luZSB0aGF0IG1hcHMgYmVo aW5kIHRoZSBzY2VuZXMgdG8gYW55IG51bWJlciBvZgo+IHBoeXNpY2FsIGVuZ2luZXMuIFRvIGtl ZXAgaXQgZ2VuZXJhbCwgd2Ugd2FudCB0aGUgdXNlciB0byBoYXZlIGZ1bGwKPiBjb250cm9sIG92 ZXIgdGhhdCBtYXBwaW5nLiBUbyB0aGF0IGVuZCwgd2UgYWxsb3cgdGhlIHVzZXIgdG8gY29uc3Ry YWluIGEKPiBjb250ZXh0IHRvIGRlZmluZSB0aGUgc2V0IG9mIGVuZ2luZXMgdGhhdCBpdCBjYW4g YWNjZXNzLCBvcmRlciBmdWxseQo+IGNvbnRyb2xsZWQgYnkgdGhlIHVzZXIgdmlhIChjbGFzcywg aW5zdGFuY2UpLiBXaXRoIHN1Y2ggcHJlY2lzZSBjb250cm9sCj4gaW4gY29udGV4dCBzZXR1cCwg d2UgY2FuIGNvbnRpbnVlIHRvIHVzZSB0aGUgZXhpc3RpbmcgZXhlY2J1ZiB1QUJJIG9mCj4gc3Bl Y2lmeWluZyBhIHNpbmdsZSBpbmRleDsgb25seSBub3cgaXQgZG9lc24ndCBhdXRvbWFnaWNhbGx5 IG1hcCBvbnRvCj4gdGhlIGVuZ2luZXMsIGl0IHVzZXMgdGhlIHVzZXIgZGVmaW5lZCBlbmdpbmUg bWFwIGZyb20gdGhlIGNvbnRleHQuCj4gCj4gVGhlIEk5MTVfRVhFQ19ERUZBVUxUIHNsb3QgaXMg bGVmdCBlbXB0eSwgYW5kIGludmFsaWQgZm9yIHVzZSBieQo+IGV4ZWNidWYuIEl0J3MgdXNlIHdp bGwgYmUgcmV2ZWFsZWQgaW4gdGhlIG5leHQgcGF0Y2guCj4gCj4gdjI6IEZpeHVwIGZyZWVpbmcg b2YgbG9jYWwgb24gc3VjY2VzcyBvZiBnZXRfZW5naW5lcygpCj4gdjM6IEFsbG93IGVtcHR5IGVu Z2luZXNbXQo+IAo+IFRlc3RjYXNlOiBpZ3QvZ2VtX2N0eF9lbmdpbmVzCj4gU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAyMjMgKysrKysrKysrKysrKysrKyst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggfCAgIDQg Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgIDE5 ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmggICAgICAgICAgICAgfCAg MjMgKysKPiAgIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgICB8 ICA0MiArKystCj4gICA1IGZpbGVzIGNoYW5nZWQsIDI5OCBpbnNlcnRpb25zKCspLCAxMyBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5k ZXggYmFjNTQ4NTg0MDkxLi4wNzM3N2I3NWI1NjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTg2LDcgKzg2LDkgQEAKPiAgICAqLwo+ICAgCj4gICAj aW5jbHVkZSA8bGludXgvbG9nMi5oPgo+ICsKPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4K PiArCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNpbmNsdWRlICJpOTE1X2dsb2JhbHMu aCIKPiAgICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gQEAgLTEwMSw2ICsxMDMsMjEgQEAgc3Rh dGljIHN0cnVjdCBpOTE1X2dsb2JhbF9nZW1fY29udGV4dCB7Cj4gICAJc3RydWN0IGttZW1fY2Fj aGUgKnNsYWJfbHV0czsKPiAgIH0gZ2xvYmFsOwo+ICAgCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICoKPiArbG9va3VwX3VzZXJfZW5naW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCj4gKwkJICAgdW5zaWduZWQgbG9uZyBmbGFncywgdTE2IGNsYXNzLCB1MTYgaW5zdGFu Y2UpCgpZb3UgZGlkbid0IGxpa2UgcmVkdWNpbmcgZmxhZ3MgdG8gMzItYml0IGZvciBub3c/Cgo+ ICsjZGVmaW5lIExPT0tVUF9VU0VSX0lOREVYIEJJVCgwKQo+ICt7Cj4gKwlpZiAoZmxhZ3MgJiBM T09LVVBfVVNFUl9JTkRFWCkgewo+ICsJCWlmIChpbnN0YW5jZSA+PSBjdHgtPm5lbmdpbmUpCj4g KwkJCXJldHVybiBOVUxMOwo+ICsKPiArCQlyZXR1cm4gY3R4LT5lbmdpbmVzW2luc3RhbmNlXTsK PiArCX0KPiArCj4gKwlyZXR1cm4gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkxNSwg Y2xhc3MsIGluc3RhbmNlKTsKPiArfQo+ICsKPiAgIHN0cnVjdCBpOTE1X2x1dF9oYW5kbGUgKmk5 MTVfbHV0X2hhbmRsZV9hbGxvYyh2b2lkKQo+ICAgewo+ICAgCXJldHVybiBrbWVtX2NhY2hlX2Fs bG9jKGdsb2JhbC5zbGFiX2x1dHMsIEdGUF9LRVJORUwpOwo+IEBAIC0yMzUsNiArMjUyLDggQEAg c3RhdGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpCj4gICAJcmVsZWFzZV9od19pZChjdHgpOwo+ICAgCWk5MTVfcHBndHRfcHV0KGN0eC0+ cHBndHQpOwo+ICAgCj4gKwlrZnJlZShjdHgtPmVuZ2luZXMpOwo+ICsKPiAgIAlyYnRyZWVfcG9z dG9yZGVyX2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXQsIG4sICZjdHgtPmh3X2NvbnRleHRzLCBub2Rl KQo+ICAgCQlpbnRlbF9jb250ZXh0X3B1dChpdCk7Cj4gICAKPiBAQCAtMTM3MSw5ICsxMzkwLDkg QEAgc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAg CWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCj4gICAJCXJldHVybiAtRUlO VkFMOwo+ICAgCj4gLQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoaTkxNSwKPiAt CQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCj4gLQkJCQkJICB1c2VyX3NzZXUuZW5naW5l X2luc3RhbmNlKTsKPiArCWVuZ2luZSA9IGxvb2t1cF91c2VyX2VuZ2luZShjdHgsIDAsCj4gKwkJ CQkgICAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKPiArCQkJCSAgICB1c2VyX3NzZXUuZW5naW5l X2luc3RhbmNlKTsKPiAgIAlpZiAoIWVuZ2luZSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAK PiBAQCAtMTM5MSw5ICsxNDEwLDE2MyBAQCBzdGF0aWMgaW50IHNldF9zc2V1KHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCj4gICAKPiAgIAlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3Nl dSk7Cj4gICAKPiArCXJldHVybiAwOwo+ICt9Owo+ICsKPiArc3RydWN0IHNldF9lbmdpbmVzIHsK PiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICoqZW5naW5lczsKPiArCXVuc2lnbmVkIGludCBuZW5naW5lOwo+ICt9Owo+ICsKPiArc3Rh dGljIGNvbnN0IGk5MTVfdXNlcl9leHRlbnNpb25fZm4gc2V0X2VuZ2luZXNfX2V4dGVuc2lvbnNb XSA9IHsKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQKPiArc2V0X2VuZ2luZXMoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKPiArCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gKmFyZ3MpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5l cyBfX3VzZXIgKnVzZXI7Cj4gKwlzdHJ1Y3Qgc2V0X2VuZ2luZXMgc2V0ID0geyAuY3R4ID0gY3R4 IH07Cj4gKwl1NjQgc2l6ZSwgZXh0ZW5zaW9uczsKPiArCXVuc2lnbmVkIGludCBuOwo+ICsJaW50 IGVycjsKPiArCj4gKwl1c2VyID0gdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKTsKPiArCXNp emUgPSBhcmdzLT5zaXplOwo+ICsJaWYgKCFzaXplKQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCUJV SUxEX0JVR19PTighSVNfQUxJR05FRChzaXplb2YoKnVzZXIpLCBzaXplb2YoKnVzZXItPmNsYXNz X2luc3RhbmNlKSkpOwo+ICsJaWYgKHNpemUgPCBzaXplb2YoKnVzZXIpIHx8Cj4gKwkgICAgIUlT X0FMSUdORUQoc2l6ZSwgc2l6ZW9mKCp1c2VyLT5jbGFzc19pbnN0YW5jZSkpKQo+ICsJCXJldHVy biAtRUlOVkFMOwo+ICsKPiArCXNldC5uZW5naW5lID0gKHNpemUgLSBzaXplb2YoKnVzZXIpKSAv IHNpemVvZigqdXNlci0+Y2xhc3NfaW5zdGFuY2UpOwo+ICsJaWYgKHNldC5uZW5naW5lID4gSTkx NV9FWEVDX1JJTkdfTUFTSyArIDEpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJc2V0LmVu Z2luZXMgPSBrbWFsbG9jX2FycmF5KHNldC5uZW5naW5lLAo+ICsJCQkJICAgIHNpemVvZigqc2V0 LmVuZ2luZXMpLAo+ICsJCQkJICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFzZXQuZW5naW5lcykK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlmb3IgKG4gPSAwOyBuIDwgc2V0Lm5lbmdpbmU7 IG4rKykgewo+ICsJCXUxNiBjbGFzcywgaW5zdDsKPiArCj4gKwkJaWYgKGdldF91c2VyKGNsYXNz LCAmdXNlci0+Y2xhc3NfaW5zdGFuY2Vbbl0uZW5naW5lX2NsYXNzKSB8fAo+ICsJCSAgICBnZXRf dXNlcihpbnN0LCAmdXNlci0+Y2xhc3NfaW5zdGFuY2Vbbl0uZW5naW5lX2luc3RhbmNlKSkgewo+ ICsJCQlrZnJlZShzZXQuZW5naW5lcyk7Cj4gKwkJCXJldHVybiAtRUZBVUxUOwo+ICsJCX0KPiAr Cj4gKwkJaWYgKGNsYXNzID09ICh1MTYpSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCAmJgo+ICsJ CSAgICBpbnN0ID09ICh1MTYpSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FKSB7Cj4gKwkJ CXNldC5lbmdpbmVzW25dID0gTlVMTDsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlz ZXQuZW5naW5lc1tuXSA9IGxvb2t1cF91c2VyX2VuZ2luZShjdHgsIDAsIGNsYXNzLCBpbnN0KTsK PiArCQlpZiAoIXNldC5lbmdpbmVzW25dKSB7Cj4gKwkJCWtmcmVlKHNldC5lbmdpbmVzKTsKPiAr CQkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWVyciA9IC1FRkFVTFQ7Cj4g KwlpZiAoIWdldF91c2VyKGV4dGVuc2lvbnMsICZ1c2VyLT5leHRlbnNpb25zKSkKPiArCQllcnIg PSBpOTE1X3VzZXJfZXh0ZW5zaW9ucyh1NjRfdG9fdXNlcl9wdHIoZXh0ZW5zaW9ucyksCj4gKwkJ CQkJICAgc2V0X2VuZ2luZXNfX2V4dGVuc2lvbnMsCj4gKwkJCQkJICAgQVJSQVlfU0laRShzZXRf ZW5naW5lc19fZXh0ZW5zaW9ucyksCj4gKwkJCQkJICAgJnNldCk7Cj4gKwlpZiAoZXJyKSB7Cj4g KwkJa2ZyZWUoc2V0LmVuZ2luZXMpOwo+ICsJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICtvdXQ6 Cj4gKwltdXRleF9sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJa2ZyZWUo Y3R4LT5lbmdpbmVzKTsKPiArCWN0eC0+ZW5naW5lcyA9IHNldC5lbmdpbmVzOwo+ICsJY3R4LT5u ZW5naW5lID0gc2V0Lm5lbmdpbmU7Cj4gKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gKwo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQK PiArZ2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCSAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCj4gK3sKPiArCXN0cnVjdCBpOTE1 X2NvbnRleHRfcGFyYW1fZW5naW5lcyAqbG9jYWw7Cj4gKwlzaXplX3QgbiwgY291bnQsIHNpemU7 Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gK3Jlc3RhcnQ6Cj4gKwlpZiAoIVJFQURfT05DRShjdHgt PmVuZ2luZXMpKSB7CgpaRVJPX09SX05VTExfUFRSPwoKPiArCQlhcmdzLT5zaXplID0gMDsKPiAr CQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwljb3VudCA9IFJFQURfT05DRShjdHgtPm5lbmdpbmUp Owo+ICsKPiArCS8qIEJlIHBhcmFub2lkIGluIGNhc2Ugd2UgaGF2ZSBhbiBpbXBlZGFuY2UgbWlz bWF0Y2ggKi8KPiArCWlmICghY2hlY2tfc3RydWN0X3NpemUobG9jYWwsIGNsYXNzX2luc3RhbmNl LCBjb3VudCwgJnNpemUpKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJaWYgKHVubGlrZWx5KG92 ZXJmbG93c190eXBlKHNpemUsIGFyZ3MtPnNpemUpKSkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiAr Cj4gKwlpZiAoIWFyZ3MtPnNpemUpIHsKPiArCQlhcmdzLT5zaXplID0gc2l6ZTsKPiArCQlyZXR1 cm4gMDsKPiArCX0KPiArCWlmIChhcmdzLT5zaXplIDwgc2l6ZSkKPiArCQlyZXR1cm4gLUVJTlZB TDsKCmVsc2UgaWYgd291bGQgcmVhZCBuaWNlciBpZiBubyBibGFuayBsaW5lLgoKPiArCj4gKwls b2NhbCA9IGttYWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWxvY2FsKQo+ICsJCXJl dHVybiAtRU5PTUVNOwo+ICsKPiArCWlmIChtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+ aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCkpIHsKPiArCQllcnIgPSAtRUlOVFI7Cj4gKwkJZ290byBv dXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFjdHgtPmVuZ2luZXMgfHwgY3R4LT5uZW5naW5lICE9IGNv dW50KSB7CgpDb3VudCBjaGVjayB3b3VsZCBiZSBzdWZmaWNpZW50IEFGQUlDVC4KCj4gKwkJbXV0 ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCWtmcmVlKGxvY2Fs KTsKPiArCQlnb3RvIHJlc3RhcnQ7Cj4gKwl9Cj4gKwo+ICsJbG9jYWwtPmV4dGVuc2lvbnMgPSAw Owo+ICsJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKPiArCQlpZiAoY3R4LT5lbmdpbmVz W25dKSB7Cj4gKwkJCWxvY2FsLT5jbGFzc19pbnN0YW5jZVtuXS5lbmdpbmVfY2xhc3MgPQo+ICsJ CQkJY3R4LT5lbmdpbmVzW25dLT51YWJpX2NsYXNzOwo+ICsJCQlsb2NhbC0+Y2xhc3NfaW5zdGFu Y2Vbbl0uZW5naW5lX2luc3RhbmNlID0KPiArCQkJCWN0eC0+ZW5naW5lc1tuXS0+aW5zdGFuY2U7 Cj4gKwkJfSBlbHNlIHsKPiArCQkJbG9jYWwtPmNsYXNzX2luc3RhbmNlW25dLmVuZ2luZV9jbGFz cyA9Cj4gKwkJCQlJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEOwo+ICsJCQlsb2NhbC0+Y2xhc3Nf aW5zdGFuY2Vbbl0uZW5naW5lX2luc3RhbmNlID0KPiArCQkJCUk5MTVfRU5HSU5FX0NMQVNTX0lO VkFMSURfTk9ORTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJf cHRyKGFyZ3MtPnZhbHVlKSwgbG9jYWwsIHNpemUpKSB7Cj4gKwkJZXJyID0gLUVGQVVMVDsKPiAr CQlnb3RvIG91dDsKPiArCX0KPiArCWFyZ3MtPnNpemUgPSBzaXplOwo+ICsKPiArb3V0Ogo+ICsJ a2ZyZWUobG9jYWwpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgY3R4 X3NldHBhcmFtKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCj4gICB7Cj4gQEAgLTE0NjYsNiArMTYzOSwx MCBAQCBzdGF0aWMgaW50IGN0eF9zZXRwYXJhbShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAo+ICAgCQlyZXQgPSBzZXRfcHBndHQoY3R4LCBhcmdzKTsKPiAgIAkJYnJlYWs7Cj4gICAKPiAr CWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4gKwkJcmV0ID0gc2V0X2VuZ2luZXMo Y3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f QkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAtRUlOVkFMOwo+IEBAIC0xNTE5 LDYgKzE2OTYsMzAgQEAgc3RhdGljIGludCBjbG9uZV9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpkc3QsCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiArc3RhdGljIGludCBjbG9uZV9l bmdpbmVzKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpkc3QsCj4gKwkJCSBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqc3JjKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoqZW5naW5l czsKPiArCXVuc2lnbmVkIGludCBuZW5naW5lOwo+ICsKPiArCW11dGV4X2xvY2soJnNyYy0+aTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7IC8qIHNlcmlhbGlzZSBzcmMtPmVuZ2luZVtdICovCj4gKwlu ZW5naW5lID0gc3JjLT5uZW5naW5lOwo+ICsJaWYgKCFaRVJPX09SX05VTExfUFRSKHNyYy0+ZW5n aW5lcykpCgpBIGNvbW1lbnQgdGFraW5nIG5vdGUgb2YgdGhlIHJlYXNvbiBmb3IgdGhlIFpFUk9f UFRSIHRyaWNrLgoKPiArCQllbmdpbmVzID0ga21lbWR1cChzcmMtPmVuZ2luZXMsCj4gKwkJCQkg IHNpemVvZigqc3JjLT5lbmdpbmVzKSAqIG5lbmdpbmUsCj4gKwkJCQkgIEdGUF9LRVJORUwpOwo+ ICsJZWxzZQo+ICsJCWVuZ2luZXMgPSBzcmMtPmVuZ2luZXM7Cj4gKwltdXRleF91bmxvY2soJnNy Yy0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAoIWVuZ2luZXMgJiYgbmVuZ2luZSkK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlrZnJlZShkc3QtPmVuZ2luZXMpOwo+ICsJZHN0 LT5lbmdpbmVzID0gZW5naW5lczsKPiArCWRzdC0+bmVuZ2luZSA9IG5lbmdpbmU7Cj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgY3JlYXRlX2Nsb25lKHN0cnVjdCBpOTE1X3Vz ZXJfZXh0ZW5zaW9uIF9fdXNlciAqZXh0LCB2b2lkICpkYXRhKQo+ICAgewo+ICAgCXN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X2Nsb25lIGxvY2FsOwo+IEBAIC0xNTg3LDYg KzE3ODgsMTIgQEAgc3RhdGljIGludCBjcmVhdGVfY2xvbmUoc3RydWN0IGk5MTVfdXNlcl9leHRl bnNpb24gX191c2VyICpleHQsIHZvaWQgKmRhdGEpCj4gICAJCX0KPiAgIAl9Cj4gICAKPiArCWlm IChsb2NhbC5mbGFncyAmIEk5MTVfQ09OVEVYVF9DTE9ORV9FTkdJTkVTKSB7Cj4gKwkJZXJyID0g Y2xvbmVfZW5naW5lcyhkc3QsIHNyYyk7Cj4gKwkJaWYgKGVycikKPiArCQkJcmV0dXJuIGVycjsK PiArCX0KPiArCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiBAQCAtMTcwNSw5ICsxOTEyLDkg QEAgc3RhdGljIGludCBnZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAg CWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCj4gICAJCXJldHVybiAtRUlO VkFMOwo+ICAgCj4gLQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1 LAo+IC0JCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKPiAtCQkJCQkgIHVzZXJfc3NldS5l bmdpbmVfaW5zdGFuY2UpOwo+ICsJZW5naW5lID0gbG9va3VwX3VzZXJfZW5naW5lKGN0eCwgMCwK PiArCQkJCSAgICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAo+ICsJCQkJICAgIHVzZXJfc3NldS5l bmdpbmVfaW5zdGFuY2UpOwoKQmVsb25ncyB0byBhIGxhdGVyIHBhdGNoIGJ1dCBPSy4KCj4gICAJ aWYgKCFlbmdpbmUpCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCj4gQEAgLTE3ODgsNiArMTk5 NSwxMCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQlyZXQgPSBnZXRfcHBndHQoY3R4LCBhcmdzKTsK PiAgIAkJYnJlYWs7Cj4gICAKPiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4g KwkJcmV0ID0gZ2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2Fz ZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQg PSAtRUlOVkFMOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5 cGVzLmgKPiBpbmRleCBmOGY2ZTZjOTYwYTcuLjhhODlmMzA1M2Y3MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiBAQCAtNDEsNiArNDEs OCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7Cj4gICAJLyoqIGZpbGVfcHJpdjogb3duaW5n IGZpbGUgZGVzY3JpcHRvciAqLwo+ICAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZp bGVfcHJpdjsKPiAgIAo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKmVuZ2luZXM7Cj4gKwo+ ICAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiAgIAo+ICAgCS8qKgo+IEBAIC0x MTAsNiArMTEyLDggQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewo+ICAgI2RlZmluZSBDT05U RVhUX0NMT1NFRAkJCTEKPiAgICNkZWZpbmUgQ09OVEVYVF9GT1JDRV9TSU5HTEVfU1VCTUlTU0lP TgkyCj4gICAKPiArCXVuc2lnbmVkIGludCBuZW5naW5lOwoKQ2FuIEkgdGVtcHQgeW91IHRvIHBs dXJhbGlzZSB0aGlzPyBJIGF0IGxlYXN0IGZpbmQgaXQgbW9yZSBvYnZpb3VzIGluIApwbHVyYWwu CgoJaWYgKHVzZXJfcmluZ19pZCA+PSBlYi0+Y3R4LT5uZW5naW5lKQoKdnMKCglpZiAodXNlcl9y aW5nX2lkID49IGViLT5jdHgtPm5lbmdpbmVzKQoKPwoKPiArCj4gICAJLyoqCj4gICAJICogQGh3 X2lkOiAtIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29udGV4dAo+ICAgCSAqCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IGVlNmQzMDFhOTYy Ny4uNzBhMjZmMGE5ZjFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYwo+IEBAIC0yMDkwLDEzICsyMDkwLDIwIEBAIHN0YXRpYyBjb25zdCBlbnVtIGlu dGVsX2VuZ2luZV9pZCB1c2VyX3JpbmdfbWFwW0k5MTVfVVNFUl9SSU5HUyArIDFdID0gewo+ICAg fTsKPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgo+IC1lYl9zZWxlY3Rf ZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArZWJfc2VsZWN0X2Vu Z2luZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPiAgIAkJIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZSwKPiAgIAkJIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmFyZ3MpCj4gICB7 Cj4gICAJdW5zaWduZWQgaW50IHVzZXJfcmluZ19pZCA9IGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVD X1JJTkdfTUFTSzsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAKPiAr CWlmIChlYi0+Y3R4LT5lbmdpbmVzKSB7Cj4gKwkJaWYgKHVzZXJfcmluZ19pZCA+PSBlYi0+Y3R4 LT5uZW5naW5lKQoKU28gZW1wdHkgZW5naW5lIGFycmF5IGJsb2NrcyBvZmYgc3VibWlzc2lvbi4g SXQncyBwcm9iYWJseSBva2F5LCBqdXN0IApuZWVkIHRvIHJlbWVtYmVyIHRocm91Z2hvdXQgdGhl IGNvZGUgbm90IHRvIGNoZWNrICJpZiAoY3R4LT5lbmdpbmVzKSIgCm9ubHkuIEkgZ3Vlc3Mgc29t ZW9uZSB3aWxsIGdldCBidXJudCBvbiB0aGF0IHNvb25lciBvciBsYXRlciwgYnV0IEkgCmRvbid0 IHRoaW5rIGl0J3MgYSBiaWcgZGVhbC4KCj4gKwkJCXJldHVybiBOVUxMOwo+ICsKPiArCQlyZXR1 cm4gZWItPmN0eC0+ZW5naW5lc1t1c2VyX3JpbmdfaWRdOwo+ICsJfQo+ICsKPiAgIAlpZiAodXNl cl9yaW5nX2lkID4gSTkxNV9VU0VSX1JJTkdTKSB7Cj4gICAJCURSTV9ERUJVRygiZXhlY2J1ZiB3 aXRoIHVua25vd24gcmluZzogJXVcbiIsIHVzZXJfcmluZ19pZCk7Cj4gICAJCXJldHVybiBOVUxM Owo+IEBAIC0yMTA5LDExICsyMTE2LDExIEBAIGViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAKPiAt CWlmICh1c2VyX3JpbmdfaWQgPT0gSTkxNV9FWEVDX0JTRCAmJiBIQVNfRU5HSU5FKGRldl9wcml2 LCBWQ1MxKSkgewo+ICsJaWYgKHVzZXJfcmluZ19pZCA9PSBJOTE1X0VYRUNfQlNEICYmIEhBU19F TkdJTkUoZWItPmk5MTUsIFZDUzEpKSB7Cj4gICAJCXVuc2lnbmVkIGludCBic2RfaWR4ID0gYXJn cy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQlNEX01BU0s7Cj4gICAKPiAgIAkJaWYgKGJzZF9pZHggPT0g STkxNV9FWEVDX0JTRF9ERUZBVUxUKSB7Cj4gLQkJCWJzZF9pZHggPSBnZW44X2Rpc3BhdGNoX2Jz ZF9lbmdpbmUoZGV2X3ByaXYsIGZpbGUpOwo+ICsJCQlic2RfaWR4ID0gZ2VuOF9kaXNwYXRjaF9i c2RfZW5naW5lKGViLT5pOTE1LCBmaWxlKTsKPiAgIAkJfSBlbHNlIGlmIChic2RfaWR4ID49IEk5 MTVfRVhFQ19CU0RfUklORzEgJiYKPiAgIAkJCSAgIGJzZF9pZHggPD0gSTkxNV9FWEVDX0JTRF9S SU5HMikgewo+ICAgCQkJYnNkX2lkeCA+Pj0gSTkxNV9FWEVDX0JTRF9TSElGVDsKPiBAQCAtMjEy NCw5ICsyMTMxLDkgQEAgZWJfc2VsZWN0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gICAJCQlyZXR1cm4gTlVMTDsKPiAgIAkJfQo+ICAgCj4gLQkJZW5naW5lID0g ZGV2X3ByaXYtPmVuZ2luZVtfVkNTKGJzZF9pZHgpXTsKPiArCQllbmdpbmUgPSBlYi0+aTkxNS0+ ZW5naW5lW19WQ1MoYnNkX2lkeCldOwo+ICAgCX0gZWxzZSB7Cj4gLQkJZW5naW5lID0gZGV2X3By aXYtPmVuZ2luZVt1c2VyX3JpbmdfbWFwW3VzZXJfcmluZ19pZF1dOwo+ICsJCWVuZ2luZSA9IGVi LT5pOTE1LT5lbmdpbmVbdXNlcl9yaW5nX21hcFt1c2VyX3JpbmdfaWRdXTsKPiAgIAl9Cj4gICAK PiAgIAlpZiAoIWVuZ2luZSkgewo+IEBAIC0yMzM2LDcgKzIzNDMsNyBAQCBpOTE1X2dlbV9kb19l eGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJaWYgKHVubGlrZWx5KGVycikp Cj4gICAJCWdvdG8gZXJyX2Rlc3Ryb3k7Cj4gICAKPiAtCWViLmVuZ2luZSA9IGViX3NlbGVjdF9l bmdpbmUoZWIuaTkxNSwgZmlsZSwgYXJncyk7Cj4gKwllYi5lbmdpbmUgPSBlYl9zZWxlY3RfZW5n aW5lKCZlYiwgZmlsZSwgYXJncyk7Cj4gICAJaWYgKCFlYi5lbmdpbmUpIHsKPiAgIAkJZXJyID0g LUVJTlZBTDsKPiAgIAkJZ290byBlcnJfZW5naW5lOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3V0aWxzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxz LmgKPiBpbmRleCA1MWI2NThmYTk2NmQuLmI5NmQxMTBjMWMyYiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3V0aWxzLmgKPiBAQCAtMjUsNiArMjUsOSBAQAo+ICAgI2lmbmRlZiBfX0k5MTVfVVRJ TFNfSAo+ICAgI2RlZmluZSBfX0k5MTVfVVRJTFNfSAo+ICAgCj4gKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L292ZXJmbG93Lmg+Cj4gKwo+ICAgI3VuZGVmIFdB Uk5fT04KPiAgIC8qIE1hbnkgZ2NjIHNlZW0gdG8gbm8gc2VlIHRocm91Z2ggdGhpcyBhbmQgZmFs bCBvdmVyIDooICovCj4gICAjaWYgMAo+IEBAIC03Myw2ICs3NiwyNiBAQAo+ICAgI2RlZmluZSBv dmVyZmxvd3NfdHlwZSh4LCBUKSBcCj4gICAJKHNpemVvZih4KSA+IHNpemVvZihUKSAmJiAoeCkg Pj4gQklUU19QRVJfVFlQRShUKSkKPiAgIAo+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiArX19jaGVj a19zdHJ1Y3Rfc2l6ZShzaXplX3QgYmFzZSwgc2l6ZV90IGFyciwgc2l6ZV90IGNvdW50LCBzaXpl X3QgKnNpemUpCj4gK3sKPiArCXNpemVfdCBzejsKPiArCj4gKwlpZiAoY2hlY2tfbXVsX292ZXJm bG93KGNvdW50LCBhcnIsICZzeikpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmIChjaGVj a19hZGRfb3ZlcmZsb3coc3osIGJhc2UsICZzeikpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiAr CSpzaXplID0gc3o7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArI2RlZmluZSBjaGVja19z dHJ1Y3Rfc2l6ZShULCBBLCBDLCBTWikgXAo+ICsJbGlrZWx5KF9fY2hlY2tfc3RydWN0X3NpemUo c2l6ZW9mKCooVCkpLCBcCj4gKwkJCQkgICBzaXplb2YoKihUKS0+QSkgKyBfX211c3RfYmVfYXJy YXkoKFQpLT5BKSwgXAo+ICsJCQkJICAgQywgU1opKQoKQSBjb21tZW50IGV4cGxhaW5pbmcgdXNh Z2Ugd291bGQgYmUgbmljZS4KCj4gKwo+ICAgI2RlZmluZSBwdHJfbWFza19iaXRzKHB0ciwgbikg KHsJCQkJCVwKPiAgIAl1bnNpZ25lZCBsb25nIF9fdiA9ICh1bnNpZ25lZCBsb25nKShwdHIpOwkJ CVwKPiAgIAkodHlwZW9mKHB0cikpKF9fdiAmIC1CSVQobikpOwkJCQkJXAo+IGRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKPiBpbmRleCA5NzE0NTIwZjQzZGEuLjZkZGU4NjRlMTRlNyAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKPiBAQCAtMTI2LDYgKzEyNiw4IEBAIGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2luZV9jbGFzcyB7 Cj4gICAJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRAk9IC0xCj4gICB9Owo+ICAgCj4gKyNkZWZp bmUgSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FIC0xCj4gKwo+ICAgLyoqCj4gICAgKiBE T0M6IHBlcmZfZXZlbnRzIGV4cG9zZWQgYnkgaTkxNSB0aHJvdWdoIC9zeXMvYnVzL2V2ZW50X3Nv dXJjZXMvZHJpdmVycy9pOTE1Cj4gICAgKgo+IEBAIC0xNTExLDYgKzE1MTMsMjYgQEAgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKPiAgIAkgKiBTZWUgRFJNX0k5MTVfR0VNX1ZN X0NSRUFURSBhbmQgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kuCj4gICAJICovCj4gICAjZGVmaW5l IEk5MTVfQ09OVEVYVF9QQVJBTV9WTQkJMHg5Cj4gKwo+ICsvKgo+ICsgKiBJOTE1X0NPTlRFWFRf UEFSQU1fRU5HSU5FUzoKPiArICoKPiArICogQmluZCB0aGlzIGNvbnRleHQgdG8gb3BlcmF0ZSBv biB0aGlzIHN1YnNldCBvZiBhdmFpbGFibGUgZW5naW5lcy4gSGVuY2Vmb3J0aCwKPiArICogdGhl IEk5MTVfRVhFQ19SSU5HIHNlbGVjdG9yIGZvciBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZF UjIgb3BlcmF0ZXMgYXMKPiArICogYW4gaW5kZXggaW50byB0aGlzIGFycmF5IG9mIGVuZ2luZXM7 IEk5MTVfRVhFQ19ERUZBVUxUIHNlbGVjdGluZyBlbmdpbmVbMF0KPiArICogYW5kIHVwd2FyZHMu IFNsb3RzIDAuLi5OIGFyZSBmaWxsZWQgaW4gdXNpbmcgdGhlIHNwZWNpZmllZCAoY2xhc3MsIGlu c3RhbmNlKS4KPiArICogVXNlCj4gKyAqCWVuZ2luZV9jbGFzczogSTkxNV9FTkdJTkVfQ0xBU1Nf SU5WQUxJRCwKPiArICoJZW5naW5lX2luc3RhbmNlOiBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElE X05PTkUKPiArICogdG8gc3BlY2lmeSBhIGdhcCBpbiB0aGUgYXJyYXkgdGhhdCBjYW4gYmUgZmls bGVkIGluIGxhdGVyLCBlLmcuIGJ5IGEKPiArICogdmlydHVhbCBlbmdpbmUgdXNlZCBmb3IgbG9h ZCBiYWxhbmNpbmcuCj4gKyAqCj4gKyAqIFNldHRpbmcgdGhlIG51bWJlciBvZiBlbmdpbmVzIGJv dW5kIHRvIHRoZSBjb250ZXh0IHRvIDAsIGJ5IHBhc3NpbmcgYSB6ZXJvCj4gKyAqIHNpemVkIGFy Z3VtZW50LCB3aWxsIHJldmVydCBiYWNrIHRvIGRlZmF1bHQgc2V0dGluZ3MuCj4gKyAqCj4gKyAq IFNlZSBzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMuCj4gKyAqLwo+ICsjZGVmaW5l IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTCTB4YQo+ICAgLyogTXVzdCBiZSBrZXB0IGNvbXBh Y3QgLS0gbm8gaG9sZXMgYW5kIHdlbGwgZG9jdW1lbnRlZCAqLwo+ICAgCj4gICAJX191NjQgdmFs dWU7Cj4gQEAgLTE1NzUsNiArMTU5NywyMyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW1fc3NldSB7Cj4gICAJX191MzIgcnN2ZDsKPiAgIH07Cj4gICAKPiArc3RydWN0IGk5MTVf Y29udGV4dF9wYXJhbV9lbmdpbmVzIHsKPiArCV9fdTY0IGV4dGVuc2lvbnM7IC8qIGxpbmtlZCBj aGFpbiBvZiBleHRlbnNpb24gYmxvY2tzLCAwIHRlcm1pbmF0ZXMgKi8KPiArCj4gKwlzdHJ1Y3Qg ewo+ICsJCV9fdTE2IGVuZ2luZV9jbGFzczsgLyogc2VlIGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2lu ZV9jbGFzcyAqLwo+ICsJCV9fdTE2IGVuZ2luZV9pbnN0YW5jZTsKPiArCX0gY2xhc3NfaW5zdGFu Y2VbMF07Cj4gK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7Cj4gKwo+ICsjZGVmaW5lIEk5MTVf REVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhuYW1lX18sIE5fXykgc3RydWN0IHsgXAo+ICsJ X191NjQgZXh0ZW5zaW9uczsgXAo+ICsJc3RydWN0IHsgXAo+ICsJCV9fdTE2IGVuZ2luZV9jbGFz czsgXAo+ICsJCV9fdTE2IGVuZ2luZV9pbnN0YW5jZTsgXAo+ICsJfSBjbGFzc19pbnN0YW5jZVtO X19dOyBcCj4gK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgbmFtZV9fCj4gKwo+ICAgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gewo+ICAgI2RlZmluZSBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSAwCj4gICAJc3RydWN0IGk5MTVfdXNlcl9l eHRlbnNpb24gYmFzZTsKPiBAQCAtMTU5MSw3ICsxNjMwLDggQEAgc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X2NyZWF0ZV9leHRfY2xvbmUgewo+ICAgI2RlZmluZSBJOTE1X0NPTlRFWFRfQ0xP TkVfU1NFVQkJKDF1IDw8IDIpCj4gICAjZGVmaW5lIEk5MTVfQ09OVEVYVF9DTE9ORV9USU1FTElO RQkoMXUgPDwgMykKPiAgICNkZWZpbmUgSTkxNV9DT05URVhUX0NMT05FX1ZNCQkoMXUgPDwgNCkK PiAtI2RlZmluZSBJOTE1X0NPTlRFWFRfQ0xPTkVfVU5LTk9XTiAtKEk5MTVfQ09OVEVYVF9DTE9O RV9WTSA8PCAxKQo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9DTE9ORV9FTkdJTkVTCSgxdSA8PCA1 KQo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9DTE9ORV9VTktOT1dOIC0oSTkxNV9DT05URVhUX0NM T05FX0VOR0lORVMgPDwgMSkKPiAgIAlfX3U2NCByc3ZkOwo+ICAgfTsKPiAgIAo+IAoKUmVnYXJk cywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=