From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 27/32] drm/i915: Allow userspace to clone contexts on creation Date: Wed, 17 Apr 2019 10:50:59 +0100 Message-ID: <57a07c1d-e649-a45a-b6d7-2aca18f53d9e@linux.intel.com> References: <20190417075657.19456-1-chris@chris-wilson.co.uk> <20190417075657.19456-27-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 596A289FF6 for ; Wed, 17 Apr 2019 09:51:01 +0000 (UTC) In-Reply-To: <20190417075657.19456-27-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 Ck9uIDE3LzA0LzIwMTkgMDg6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBIHVzZWNhc2UgYXJv c2Ugb3V0IG9mIGhhbmRsaW5nIGNvbnRleHQgcmVjb3ZlcnkgaW4gbWVzYSwgd2hlcmVieSB0aGV5 Cj4gd2lzaCB0byByZWNyZWF0ZSBhIGNvbnRleHQgd2l0aCBmcmVzaCBsb2dpY2FsIHN0YXRlIGJ1 dCBwcmVzZXJ2aW5nIGFsbAo+IG90aGVyIGRldGFpbHMgb2YgdGhlIG9yaWdpbmFsLiBDdXJyZW50 bHksIHRoZXkgY3JlYXRlIGEgbmV3IGNvbnRleHQgYW5kCj4gaXRlcmF0ZSBvdmVyIHdoaWNoIGJp dHMgdGhleSB3YW50IHRvIGNvcHkgYWNyb3NzLCBidXQgaXQgd291bGQgbXVjaCBtb3JlCj4gY29u dmVuaWVudCBpZiB0aGV5IHdlcmUgYWJsZSB0byBqdXN0IHBhc3MgaW4gYSB0YXJnZXQgY29udGV4 dCB0byBjbG9uZQo+IGR1cmluZyBjcmVhdGlvbi4gVGhpcyBlc3NlbnRpYWxseSBleHRlbmRzIHRo ZSBzZXRwYXJhbSBkdXJpbmcgY3JlYXRpb24KPiB0byBwdWxsIHRoZSBkZXRhaWxzIGZyb20gYSB0 YXJnZXQgY29udGV4dCBpbnN0ZWFkIG9mIHRoZSB1c2VyIHN1cHBsaWVkCj4gcGFyYW1ldGVycy4K PiAKPiBUaGUgaWRlYWwgaGVyZSBpcyB0aGF0IHdlIGRvbid0IGV4cG9zZSBjb250cm9sIG92ZXIg YW55dGhpbmcgbW9yZSB0aGFuCj4gY2FuIGJlIG9idGFpbmVkIHZpYSBDT05URVhUX1BBUkFNLiBU aGF0IGlzIHVzZXJzcGFjZSByZXRhaW5zIGV4cGxpY2l0Cj4gY29udHJvbCBvdmVyIGFsbCBmZWF0 dXJlcywgYW5kIHRoaXMgYXBpIGlzIGp1c3QgY29udmVuaWVuY2UuCj4gCj4gRm9yIGV4YW1wbGUs IHlvdSBjb3VsZCByZXBsYWNlCj4gCj4gCXN0cnVjdCBjb250ZXh0X3BhcmFtIHAgPSB7IC5wYXJh bSA9IENPTlRFWFRfUEFSQU1fVk0gfTsKPiAKPiAJcGFyYW0uY3R4X2lkID0gb2xkX2lkOwo+IAln ZW1fY29udGV4dF9nZXRfcGFyYW0oJnAucGFyYW0pOwo+IAo+IAluZXdfaWQgPSBnZW1fY29udGV4 dF9jcmVhdGUoKTsKPiAKPiAJcGFyYW0uY3R4X2lkID0gbmV3X2lkOwo+IAlnZW1fY29udGV4dF9z ZXRfcGFyYW0oJnAucGFyYW0pOwo+IAo+IAlnZW1fdm1fZGVzdHJveShwYXJhbS52YWx1ZSk7IC8q IGRyb3AgdGhlIHJlZiB0byBWTV9JRCBoYW5kbGUgKi8KPiAKPiB3aXRoCj4gCj4gCXN0cnVjdCBj cmVhdGVfZXh0X3BhcmFtIHAgPSB7Cj4gCSAgeyAubmFtZSA9IENPTlRFWFRfQ1JFQVRFX0NMT05F IH0sCj4gCSAgLmNsb25lX2lkID0gb2xkX2lkLAo+IAkgIC5mbGFncyA9IENMT05FX0ZMQUdTX1ZN Cj4gCX0KPiAJbmV3X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCgmcCk7Cj4gCj4gYW5kIG5v dCBoYXZlIHRvIHdvcnJ5IGFib3V0IHN0cmF5IG5hbWVzcGFjZSBwb2xsdXRpb24gZXRjLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgMjA2ICsr KysrKysrKysrKysrKysrKysrKysrKwo+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAg ICAgICAgICAgIHwgIDE1ICsrCj4gICAyIGZpbGVzIGNoYW5nZWQsIDIyMSBpbnNlcnRpb25zKCsp Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IGQ2YmVh NTEwNTBjMC4uYmE3NTgyZDk1NWQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwo+IEBAIC0xNjgyLDggKzE2ODIsMjE0IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3Nl dHBhcmFtKHN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIF9fdXNlciAqZXh0LCB2b2lkICpkYXRh KQo+ICAgCXJldHVybiBjdHhfc2V0cGFyYW0oYXJnLT5mcHJpdiwgYXJnLT5jdHgsICZsb2NhbC5w YXJhbSk7Cj4gICB9Cj4gICAKPiArc3RhdGljIGludCBjbG9uZV9lbmdpbmVzKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpkc3QsCj4gKwkJCSBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc3JjKQo+ ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqZSA9IGk5MTVfZ2VtX2NvbnRleHRfbG9j a19lbmdpbmVzKHNyYyk7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqY2xvbmU7Cj4gKwli b29sIHVzZXJfZW5naW5lczsKPiArCXVuc2lnbmVkIGxvbmcgbjsKPiArCj4gKwljbG9uZSA9IGtt YWxsb2Moc3RydWN0X3NpemUoZSwgZW5naW5lcywgZS0+bnVtX2VuZ2luZXMpLCBHRlBfS0VSTkVM KTsKPiArCWlmICghY2xvbmUpCj4gKwkJZ290byBlcnJfdW5sb2NrOwo+ICsKPiArCWNsb25lLT5p OTE1ID0gZHN0LT5pOTE1Owo+ICsJZm9yIChuID0gMDsgbiA8IGUtPm51bV9lbmdpbmVzOyBuKysp IHsKPiArCQlpZiAoIWUtPmVuZ2luZXNbbl0pIHsKPiArCQkJY2xvbmUtPmVuZ2luZXNbbl0gPSBO VUxMOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCWNsb25lLT5lbmdpbmVzW25dID0K PiArCQkJaW50ZWxfY29udGV4dF9jcmVhdGUoZHN0LCBlLT5lbmdpbmVzW25dLT5lbmdpbmUpOwo+ ICsJCWlmICghY2xvbmUtPmVuZ2luZXNbbl0pIHsKPiArCQkJX19mcmVlX2VuZ2luZXMoY2xvbmUs IG4pOwo+ICsJCQlnb3RvIGVycl91bmxvY2s7Cj4gKwkJfQo+ICsJfQo+ICsJY2xvbmUtPm51bV9l bmdpbmVzID0gbjsKPiArCj4gKwl1c2VyX2VuZ2luZXMgPSBpOTE1X2dlbV9jb250ZXh0X3VzZXJf ZW5naW5lcyhzcmMpOwo+ICsJaTkxNV9nZW1fY29udGV4dF91bmxvY2tfZW5naW5lcyhzcmMpOwo+ ICsKPiArCWZyZWVfZW5naW5lcyhkc3QtPmVuZ2luZXMpOwo+ICsJUkNVX0lOSVRfUE9JTlRFUihk c3QtPmVuZ2luZXMsIGNsb25lKTsKPiArCWlmICh1c2VyX2VuZ2luZXMpCj4gKwkJaTkxNV9nZW1f Y29udGV4dF9zZXRfdXNlcl9lbmdpbmVzKGRzdCk7Cj4gKwllbHNlCj4gKwkJaTkxNV9nZW1fY29u dGV4dF9jbGVhcl91c2VyX2VuZ2luZXMoZHN0KTsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX3Vu bG9jazoKPiArCWk5MTVfZ2VtX2NvbnRleHRfdW5sb2NrX2VuZ2luZXMoc3JjKTsKPiArCXJldHVy biAtRU5PTUVNOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNsb25lX2ZsYWdzKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpkc3QsCj4gKwkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpz cmMpCj4gK3sKPiArCWRzdC0+dXNlcl9mbGFncyA9IHNyYy0+dXNlcl9mbGFnczsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNsb25lX3NjaGVkYXR0cihzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqZHN0LAo+ICsJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc3JjKQo+ ICt7Cj4gKwlkc3QtPnNjaGVkID0gc3JjLT5zY2hlZDsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGNsb25lX3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmRzdCwKPiAr CQkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc3JjKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkx NV9nZW1fZW5naW5lcyAqZSA9IGk5MTVfZ2VtX2NvbnRleHRfbG9ja19lbmdpbmVzKHNyYyk7Cj4g KwlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lcyAqY2xvbmU7Cj4gKwl1bnNpZ25lZCBsb25nIG47Cj4g KwlpbnQgZXJyOwo+ICsKPiArCWNsb25lID0gZHN0LT5lbmdpbmVzOyAvKiBubyBsb2NraW5nIHJl cXVpcmVkOyBzb2xlIGFjY2VzcyAqLwo+ICsJaWYgKGUtPm51bV9lbmdpbmVzICE9IGNsb25lLT5u dW1fZW5naW5lcykgewo+ICsJCWVyciA9IC1FSU5WQUw7Cj4gKwkJZ290byB1bmxvY2s7Cj4gKwl9 Cj4gKwo+ICsJZm9yIChuID0gMDsgbiA8IGUtPm51bV9lbmdpbmVzOyBuKyspIHsKPiArCQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBlLT5lbmdpbmVzW25dOwo+ICsKPiArCQlpZiAoY2xvbmUt PmVuZ2luZXNbbl0tPmVuZ2luZS0+Y2xhc3MgIT0gY2UtPmVuZ2luZS0+Y2xhc3MpIHsKPiArCQkJ LyogTXVzdCBoYXZlIGNvbXBhdGlibGUgZW5naW5lIG1hcHMhICovCj4gKwkJCWVyciA9IC1FSU5W QUw7Cj4gKwkJCWdvdG8gdW5sb2NrOwo+ICsJCX0KPiArCj4gKwkJLyogc2VyaWFsaXNlcyB3aXRo IHNldF9zc2V1ICovCj4gKwkJZXJyID0gaW50ZWxfY29udGV4dF9sb2NrX3Bpbm5lZChjZSk7Cj4g KwkJaWYgKGVycikKPiArCQkJZ290byB1bmxvY2s7Cj4gKwo+ICsJCWNsb25lLT5lbmdpbmVzW25d LT5zc2V1ID0gY2UtPnNzZXU7Cj4gKwkJaW50ZWxfY29udGV4dF91bmxvY2tfcGlubmVkKGNlKTsK PiArCX0KPiArCj4gKwllcnIgPSAwOwo+ICt1bmxvY2s6Cj4gKwlpOTE1X2dlbV9jb250ZXh0X3Vu bG9ja19lbmdpbmVzKHNyYyk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50 IGNsb25lX3RpbWVsaW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpkc3QsCj4gKwkJCSAgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKnNyYykKPiArewo+ICsJaWYgKHNyYy0+dGltZWxpbmUpIHsK PiArCQlHRU1fQlVHX09OKHNyYy0+dGltZWxpbmUgPT0gZHN0LT50aW1lbGluZSk7Cj4gKwo+ICsJ CWlmIChkc3QtPnRpbWVsaW5lKQo+ICsJCQlpOTE1X3RpbWVsaW5lX3B1dChkc3QtPnRpbWVsaW5l KTsKPiArCQlkc3QtPnRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9nZXQoc3JjLT50aW1lbGluZSk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2xvbmVfdm0o c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmRzdCwKPiArCQkgICAgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKnNyYykKPiArewo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+ICsKPiAr CXJjdV9yZWFkX2xvY2soKTsKPiArCWRvIHsKPiArCQlwcGd0dCA9IFJFQURfT05DRShzcmMtPnBw Z3R0KTsKPiArCQlpZiAoIXBwZ3R0KQo+ICsJCQlicmVhazsKPiArCj4gKwkJaWYgKCFrcmVmX2dl dF91bmxlc3NfemVybygmcHBndHQtPnJlZikpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQkvKgo+ ICsJCSAqIFRoaXMgcHBndHQgbWF5IGhhdmUgYmUgcmVhbGxvY2F0ZWQgYmV0d2Vlbgo+ICsJCSAq IHRoZSByZWFkIGFuZCB0aGUga3JlZiwgYW5kIHJlYXNzaWduZWQgdG8gYSB0aGlyZAo+ICsJCSAq IGNvbnRleHQuIEluIG9yZGVyIHRvIGF2b2lkIGluYWR2ZXJ0ZW50IHNoYXJpbmcKPiArCQkgKiBv ZiB0aGlzIHBwZ3R0IHdpdGggdGhhdCB0aGlyZCBjb250ZXh0IChhbmQgbm90Cj4gKwkJICogc3Jj KSwgd2UgaGF2ZSB0byBjb25maXJtIHRoYXQgd2UgaGF2ZSB0aGUgc2FtZQo+ICsJCSAqIHBwZ3R0 IGFmdGVyIHBhc3NpbmcgdGhyb3VnaCB0aGUgc3Ryb25nIG1lbW9yeQo+ICsJCSAqIGJhcnJpZXIg aW1wbGllZCBieSBhIHN1Y2Nlc3NmdWwKPiArCQkgKiBrcmVmX2dldF91bmxlc3NfemVybygpLgo+ ICsJCSAqCj4gKwkJICogT25jZSB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBjdXJyZW50IHBwZ3R0IG9m IHNyYywKPiArCQkgKiB3ZSBubyBsb25nZXIgY2FyZSBpZiBpdCBpcyByZWxlYXNlZCBmcm9tIHNy YywgYXMKPiArCQkgKiBpdCBjYW5ub3QgYmUgcmVhbGxvY2F0ZWQgZWxzZXdoZXJlLgo+ICsJCSAq Lwo+ICsKPiArCQlpZiAocHBndHQgPT0gUkVBRF9PTkNFKHNyYy0+cHBndHQpKQo+ICsJCQlicmVh azsKPiArCj4gKwkJaTkxNV9wcGd0dF9wdXQocHBndHQpOwo+ICsJfSB3aGlsZSAoMSk7Cj4gKwly Y3VfcmVhZF91bmxvY2soKTsKPiArCj4gKwlpZiAocHBndHQpIHsKPiArCQlfX2Fzc2lnbl9wcGd0 dChkc3QsIHBwZ3R0KTsKPiArCQlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7Cj4gKwl9Cj4gKwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY3JlYXRlX2Nsb25lKHN0cnVjdCBpOTE1 X3VzZXJfZXh0ZW5zaW9uIF9fdXNlciAqZXh0LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdGF0aWMg aW50ICgqIGNvbnN0IGZuW10pKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpkc3QsCj4gKwkJCQkg IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpzcmMpID0gewo+ICsjZGVmaW5lIE1BUCh4LCB5KSBb aWxvZzIoSTkxNV9DT05URVhUX0NMT05FXyMjeCldID0geQo+ICsJCU1BUChFTkdJTkVTLCBjbG9u ZV9lbmdpbmVzKSwKPiArCQlNQVAoRkxBR1MsIGNsb25lX2ZsYWdzKSwKPiArCQlNQVAoU0NIRURB VFRSLCBjbG9uZV9zY2hlZGF0dHIpLAo+ICsJCU1BUChTU0VVLCBjbG9uZV9zc2V1KSwKPiArCQlN QVAoVElNRUxJTkUsIGNsb25lX3RpbWVsaW5lKSwKPiArCQlNQVAoVk0sIGNsb25lX3ZtKSwKPiAr I3VuZGVmIE1BUAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVf ZXh0X2Nsb25lIGxvY2FsOwo+ICsJY29uc3Qgc3RydWN0IGNyZWF0ZV9leHQgKmFyZyA9IGRhdGE7 Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZHN0ID0gYXJnLT5jdHg7Cj4gKwlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqc3JjOwo+ICsJaW50IGVyciwgYml0Owo+ICsKPiArCWlmIChjb3B5 X2Zyb21fdXNlcigmbG9jYWwsIGV4dCwgc2l6ZW9mKGxvY2FsKSkpCj4gKwkJcmV0dXJuIC1FRkFV TFQ7Cj4gKwo+ICsJQlVJTERfQlVHX09OKEdFTk1BU0soQklUU19QRVJfVFlQRShsb2NhbC5mbGFn cykgLSAxLCBBUlJBWV9TSVpFKGZuKSkgIT0KPiArCQkgICAgIEk5MTVfQ09OVEVYVF9DTE9ORV9V TktOT1dOKTsKPiArCj4gKwlpZiAobG9jYWwuZmxhZ3MgJiBJOTE1X0NPTlRFWFRfQ0xPTkVfVU5L Tk9XTikKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAobG9jYWwucnN2ZCkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwlzcmMgPSBfX2k5MTVf Z2VtX2NvbnRleHRfbG9va3VwX3JjdShhcmctPmZwcml2LCBsb2NhbC5jbG9uZV9pZCk7Cj4gKwly Y3VfcmVhZF91bmxvY2soKTsKPiArCWlmICghc3JjKQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICsK PiArCUdFTV9CVUdfT04oc3JjID09IGRzdCk7Cj4gKwo+ICsJZm9yIChiaXQgPSAwOyBiaXQgPCBB UlJBWV9TSVpFKGZuKTsgYml0KyspIHsKPiArCQlpZiAoIShsb2NhbC5mbGFncyAmIEJJVChiaXQp KSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVyciA9IGZuW2JpdF0oZHN0LCBzcmMpOwo+ICsJ CWlmIChlcnIpCj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gICBzdGF0aWMgY29uc3QgaTkxNV91c2VyX2V4dGVuc2lvbl9mbiBjcmVhdGVfZXh0ZW5z aW9uc1tdID0gewo+ICAgCVtJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTV0gPSBjcmVh dGVfc2V0cGFyYW0sCj4gKwlbSTkxNV9DT05URVhUX0NSRUFURV9FWFRfQ0xPTkVdID0gY3JlYXRl X2Nsb25lLAo+ICAgfTsKPiAgIAo+ICAgc3RhdGljIGJvb2wgY2xpZW50X2lzX2Jhbm5lZChzdHJ1 Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYpCj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGlu ZGV4IDdhZWY2NzJhYjNjNy4uNzY5NDExMzM2MmQ0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBA IC0xNjIzLDYgKzE2MjMsMjEgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9l eHRfc2V0cGFyYW0gewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwYXJh bTsKPiAgIH07Cj4gICAKPiArc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRf Y2xvbmUgewo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX0NMT05FIDEKPiArCXN0 cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9uIGJhc2U7Cj4gKwlfX3UzMiBjbG9uZV9pZDsKPiArCV9f dTMyIGZsYWdzOwo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9DTE9ORV9FTkdJTkVTCSgxdSA8PCAw KQo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9DTE9ORV9GTEFHUwkoMXUgPDwgMSkKPiArI2RlZmlu ZSBJOTE1X0NPTlRFWFRfQ0xPTkVfU0NIRURBVFRSCSgxdSA8PCAyKQo+ICsjZGVmaW5lIEk5MTVf Q09OVEVYVF9DTE9ORV9TU0VVCQkoMXUgPDwgMykKPiArI2RlZmluZSBJOTE1X0NPTlRFWFRfQ0xP TkVfVElNRUxJTkUJKDF1IDw8IDQpCj4gKyNkZWZpbmUgSTkxNV9DT05URVhUX0NMT05FX1ZNCQko MXUgPDwgNSkKPiArI2RlZmluZSBJOTE1X0NPTlRFWFRfQ0xPTkVfVU5LTk9XTiAtKEk5MTVfQ09O VEVYVF9DTE9ORV9WTSA8PCAxKQo+ICsJX191NjQgcnN2ZDsKPiArfTsKPiArCj4gICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSB7Cj4gICAJX191MzIgY3R4X2lkOwo+ICAgCV9f dTMyIHBhZDsKPiAKCkNhcnJ5IG92ZXIgZm9yIGdvb2QgbWVhc3VyZToKClJldmlld2VkLWJ5OiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRr bwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=