From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 37/40] drm/i915: Allow a context to define its set of engines Date: Mon, 1 Oct 2018 09:30:46 +0100 Message-ID: <3519578b-4526-0172-e25e-c1f6c82527a5@linux.intel.com> References: <20180919195544.1511-1-chris@chris-wilson.co.uk> <20180919195544.1511-37-chris@chris-wilson.co.uk> <153816616567.22274.1180719285451321838@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 03FAA89CC4 for ; Mon, 1 Oct 2018 08:30:49 +0000 (UTC) In-Reply-To: <153816616567.22274.1180719285451321838@skylake-alporthouse-com> 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 Ck9uIDI4LzA5LzIwMTggMjE6MjIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTA5LTI3IDEyOjI4OjQ3KQo+Pgo+PiBPbiAxOS8wOS8yMDE4IDIwOjU1 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBPdmVyIHRoZSBsYXN0IGZldyB5ZWFycywgd2UgaGF2 ZSBkZWJhdGVkIGhvdyB0byBleHRlbmQgdGhlIHVzZXIgQVBJIHRvCj4+PiBzdXBwb3J0IGFuIGlu Y3JlYXNlIGluIHRoZSBudW1iZXIgb2YgZW5naW5lcywgdGhhdCBtYXkgYmUgc3BhcnNlIGFuZAo+ Pj4gZXZlbiBiZSBoZXRlcm9nZW5lb3VzIHdpdGhpbiBhIGNsYXNzIChub3QgYWxsIHZpZGVvIGRl Y29kZXJzIGNyZWF0ZWQKPj4+IGVxdWFsKS4gV2Ugc2V0dGxlZCBvbiB1c2luZyAoY2xhc3MsIGlu c3RhbmNlKSB0dXBsZXMgdG8gaWRlbnRpZnkgYQo+Pj4gc3BlY2lmaWMgZW5naW5lLCB3aXRoIGFu IEFQSSBmb3IgdGhlIHVzZXIgdG8gY29uc3RydWN0IGEgbWFwIG9mIGVuZ2luZXMKPj4+IHRvIGNh cGFiaWxpdGllcy4gSW50byB0aGlzIHBpY3R1cmUsIHdlIHRoZW4gYWRkIGEgY2hhbGxlbmdlIG9m IHZpcnR1YWwKPj4+IGVuZ2luZXM7IG9uZSB1c2VyIGVuZ2luZSB0aGF0IG1hcHMgYmVoaW5kIHRo ZSBzY2VuZXMgdG8gYW55IG51bWJlciBvZgo+Pj4gcGh5c2ljYWwgZW5naW5lcy4gVG8ga2VlcCBp dCBnZW5lcmFsLCB3ZSB3YW50IHRoZSB1c2VyIHRvIGhhdmUgZnVsbAo+Pj4gY29udHJvbCBvdmVy IHRoYXQgbWFwcGluZy4gVG8gdGhhdCBlbmQsIHdlIGFsbG93IHRoZSB1c2VyIHRvIGNvbnN0cmFp biBhCj4+PiBjb250ZXh0IHRvIGRlZmluZSB0aGUgc2V0IG9mIGVuZ2luZXMgdGhhdCBpdCBjYW4g YWNjZXNzLCBvcmRlciBmdWxseQo+Pj4gY29udHJvbGxlZCBieSB0aGUgdXNlciB2aWEgKGNsYXNz LCBpbnN0YW5jZSkuIFdpdGggc3VjaCBwcmVjaXNlIGNvbnRyb2wKPj4+IGluIGNvbnRleHQgc2V0 dXAsIHdlIGNhbiBjb250aW51ZSB0byB1c2UgdGhlIGV4aXN0aW5nIGV4ZWNidWYgdUFCSSBvZgo+ Pj4gc3BlY2lmeWluZyBhIHNpbmdsZSBpbmRleDsgb25seSBub3cgaXQgZG9lc24ndCBhdXRvbWFn aWNhbGx5IG1hcCBvbnRvCj4+PiB0aGUgZW5naW5lcywgaXQgdXNlcyB0aGUgdXNlciBkZWZpbmVk IGVuZ2luZSBtYXAgZnJvbSB0aGUgY29udGV4dC4KPj4+Cj4+PiBUaGUgSTkxNV9FWEVDX0RFRkFV TFQgc2xvdCBpcyBsZWZ0IGVtcHR5LCBhbmQgaW52YWxpZCBmb3IgdXNlIGJ5Cj4+PiBleGVjYnVm LiBJdCdzIHVzZSB3aWxsIGJlIHJldmVhbGVkIGluIHRoZSBuZXh0IHBhdGNoLgo+Pj4KPj4+IFNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Pj4g LS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCA4 OCArKysrKysrKysrKysrKysrKysrKysrCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmggICAgfCAgNCArCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMgfCAyMiArKysrLS0KPj4+ICAgIGluY2x1ZGUvdWFwaS9kcm0vaTkx NV9kcm0uaCAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysKPj4+ICAgIDQgZmlsZXMgY2hhbmdl ZCwgMTM1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+Pj4gaW5kZXggYTg1NzBhMDdiM2I3Li4zMTM0NzEy NTNmNTEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ Pj4gQEAgLTkwLDYgKzkwLDcgQEAKPj4+ICAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPj4+ ICAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+Pj4gICAgI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIK Pj4+ICsjaW5jbHVkZSAiaTkxNV91c2VyX2V4dGVuc2lvbnMuaCIKPj4+ICAgICNpbmNsdWRlICJp bnRlbF93b3JrYXJvdW5kcy5oIgo+Pj4gICAgCj4+PiAgICAjZGVmaW5lIEFMTF9MM19TTElDRVMo ZGV2KSAoMSA8PCBOVU1fTDNfU0xJQ0VTKGRldikpIC0gMQo+Pj4gQEAgLTIyMyw2ICsyMjQsOCBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKPj4+ICAgICAgICAgICAgICAgICAgICAgICAgY2UtPm9wcy0+ZGVzdHJveShjZSk7 Cj4+PiAgICAgICAgfQo+Pj4gICAgCj4+PiArICAgICBrZnJlZShjdHgtPmVuZ2luZXMpOwo+Pj4g Kwo+Pj4gICAgICAgIGlmIChjdHgtPnRpbWVsaW5lKQo+Pj4gICAgICAgICAgICAgICAgaTkxNV90 aW1lbGluZV9wdXQoY3R4LT50aW1lbGluZSk7Cj4+PiAgICAKPj4+IEBAIC05NDgsNiArOTUxLDg3 IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCj4+PiAgICAgICAgcmV0dXJuIHJldDsKPj4+ICAgIH0KPj4+ICAg IAo+Pj4gK3N0cnVjdCBzZXRfZW5naW5lcyB7Cj4+PiArICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4Owo+Pj4gKyAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKmVuZ2luZXM7Cj4+ PiArICAgICB1bnNpZ25lZCBpbnQgbmVuZ2luZTsKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0YXRpYyBj b25zdCBpOTE1X3VzZXJfZXh0ZW5zaW9uX2ZuIHNldF9lbmdpbmVzX19leHRlbnNpb25zW10gPSB7 Cj4+PiArfTsKPj4KPj4gVGhpcyBpcyBPSyB1bmxlc3Mgc29tZW9uZSBvbmUgZGF5IGdldHMgdGhl IGRlc2lyZSB0byBtYWtlIHRoZSBleHRlbnNpb24KPj4gbmFtZXNwYWNlIHNwYXJzZS4gSSB3YXMg dGhpbmtpbmcgb24gaG93IHRvIHB1dCBzb21lIHdhcm5pbmdzIGluIHRoZSBjb2RlCj4+IHRvIHdh cm4gYWJvdXQgaXQsIGJ1dCBJIHRoaW5rIHRoYXQncyBmb3IgbGF0ZXIuIE5hbWVzcGFjZSBpcyBh bHNvIHBlcgo+PiBwYXJlbnQgaW9jdGwsIGFub3RoZXIgdGhpbmcgd2hpY2ggd291bGQgcGVyaGFw cyBuZWVkIGVuZm9yY2luZy4KPiAKPiBVbmxlc3MgeW91IGludGVuZCB0byBnbyBleHRyZW1lbHkg c3BhcnNlLCBJJ2QganVzdCBsZWF2ZSBpdCB3aXRoIHRoZQo+IHVzdWFsIFtOQU1FMV0gPSBmdW5j MSwgYW5kIHNraXBwaW5nIG92ZXIgTlVMTHMuIFdlIGNhbiBhbHdheXMgYWRkCj4gYWx0ZXJuYXRp dmVzIGlmIG5lZWQgYmUgKEknZCBhY3R1YWxseSBiZWVuIG1lYW5pbmcgdG8gY29udmVydCBleGVj YnVmMwo+IG92ZXIgdG8gdGhpcyBzY2hlbWUgdG8gZmxlc2ggaXQgb3V0IGEgYml0IG1vcmUpLgoK SXQgaXMgZmluZSBmb3Igbm93LCBJIHdhcyBqdXN0IHRoaW5raW5nIG91dCBsb3VkIGhvdyB0byBw cm90ZWN0IHVzIAphZ2FpbnN0IHRoZSB0YWJsZSBhY2NpZGVudGFsbHkgZ3Jvd2luZyBodWdlIG9u ZSBkYXkuCgo+Pj4gK3N0YXRpYyBpbnQgc2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKPj4+ICsgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSAqYXJncykKPj4+ICt7Cj4+PiArICAgICBzdHJ1Y3QgaTkxNV9jb250ZXh0X3Bh cmFtX2VuZ2luZXMgX191c2VyICp1c2VyOwo+Pj4gKyAgICAgc3RydWN0IHNldF9lbmdpbmVzIHNl dCA9IHsKPj4+ICsgICAgICAgICAgICAgLmN0eCA9IGN0eCwKPj4+ICsgICAgICAgICAgICAgLmVu Z2luZXMgPSBOVUxMLAo+Pj4gKyAgICAgICAgICAgICAubmVuZ2luZSA9IC0xLAo+Pj4gKyAgICAg fTsKPj4+ICsgICAgIHVuc2lnbmVkIGludCBuOwo+Pj4gKyAgICAgdTY0IHNpemUsIGV4dGVuc2lv bnM7Cj4+Cj4+IFNpemUgaXMgdTMyIGluIHRoZSB1QVBJLCBzbyBlaXRoZXIgdGhhdCBvciB1bnNp Z25lZCBpbnQgd291bGQgZG8gaGVyZS4KPj4KPj4+ICsgICAgIGludCBlcnI7Cj4+PiArCj4+PiAr ICAgICB1c2VyID0gdTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVlKTsKPj4+ICsgICAgIHNpemUg PSBhcmdzLT5zaXplOwo+Pj4gKyAgICAgaWYgKCFzaXplKQo+Pgo+PiBhcmdzLT5zaXplcyA9IHNp emVvZigqdXNlcik7Cj4+Cj4+IC4uLiBpZiB5b3Ugd2FudCB0byBhbGxvdyBzaXplIHByb2Jpbmcg dmlhIHNldCBwYXJhbSwgb3Igd2UgYWRkIGEKPj4gZ2V0X3BhcmFtICh0b28gbXVjaCB3b3JrIGZv ciBub3RoaW5nPykgYW5kIG9ubHkgYWxsb3cgcHJvYmluZyBmcm9tIHRoZXJlPwo+IAo+IEl0J3Mg YSB2YXJpYWJsZSBhcnJheSwgc28gYSBsaXR0bGUgdHJpY2tpZXIuCgpJbmRlZWQhCgo+IAo+Pj4g KyAgICAgICAgICAgICBnb3RvIG91dDsKPj4+ICsKPj4+ICsgICAgIGlmIChzaXplIDwgc2l6ZW9m KHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykpCj4+PiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+Pj4gKwo+Pj4gKyAgICAgc2l6ZSAtPSBzaXplb2Yoc3RydWN0IGk5MTVf Y29udGV4dF9wYXJhbV9lbmdpbmVzKTsKPj4+ICsgICAgIGlmIChzaXplICUgc2l6ZW9mKCp1c2Vy LT5jbGFzc19pbnN0YW5jZSkpCj4+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4g Kwo+Pj4gKyAgICAgc2V0Lm5lbmdpbmUgPSBzaXplIC8gc2l6ZW9mKCp1c2VyLT5jbGFzc19pbnN0 YW5jZSk7Cj4+PiArICAgICBpZiAoc2V0Lm5lbmdpbmUgPT0gMCB8fCBzZXQubmVuZ2luZSA+PSBJ OTE1X0VYRUNfUklOR19NQVNLKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+ ICsKPj4+ICsgICAgIHNldC5lbmdpbmVzID0ga21hbGxvY19hcnJheShzZXQubmVuZ2luZSArIDEs Cj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpzZXQuZW5naW5l cyksCj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0ZQX0tFUk5FTCk7Cj4+ PiArICAgICBpZiAoIXNldC5lbmdpbmVzKQo+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPj4+ICsKPj4+ICsgICAgIHNldC5lbmdpbmVzWzBdID0gTlVMTDsKPj4KPj4gLyogUmVzZXJ2 ZSB0aGUgSTkxNV9FWEVDX0RFRkFVTFQgc2xvdC4gKi8KPj4KPj4+ICsgICAgIGZvciAobiA9IDA7 IG4gPCBzZXQubmVuZ2luZTsgbisrKSB7Cj4+PiArICAgICAgICAgICAgIHUzMiBjbGFzcywgaW5z dGFuY2U7Cj4+Cj4+IEkgd2lsbCBsYXRlciByZWNvbW1lbmQgd2UgdXNlIHUxNiBmb3IgY2xhc3Mv aW5zdGFuY2UuIEkgdGhpbmsgd2Ugc2V0dGxlZAo+PiBmb3IgdGhhdCBpbiB0aGUgbWVhbnRpbWUu Cj4+Cj4+PiArCj4+PiArICAgICAgICAgICAgIGlmIChnZXRfdXNlcihjbGFzcywgJnVzZXItPmNs YXNzX2luc3RhbmNlW25dLmNsYXNzKSB8fAo+Pj4gKyAgICAgICAgICAgICAgICAgZ2V0X3VzZXIo aW5zdGFuY2UsICZ1c2VyLT5jbGFzc19pbnN0YW5jZVtuXS5pbnN0YW5jZSkpIHsKPj4+ICsgICAg ICAgICAgICAgICAgICAgICBrZnJlZShzZXQuZW5naW5lcyk7Cj4+PiArICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4+PiArICAgICAgICAgICAgIH0KPj4+ICsKPj4+ICsgICAg ICAgICAgICAgc2V0LmVuZ2luZXNbbiArIDFdID0KPj4+ICsgICAgICAgICAgICAgICAgICAgICBp bnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1LCBjbGFzcywgaW5zdGFuY2UpOwo+Pj4g KyAgICAgICAgICAgICBpZiAoIXNldC5lbmdpbmVzW24gKyAxXSkgewo+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIGtmcmVlKHNldC5lbmdpbmVzKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVOT0VOVDsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4g KyAgICAgZXJyID0gLUVGQVVMVDsKPj4+ICsgICAgIGlmICghZ2V0X3VzZXIoZXh0ZW5zaW9ucywg JnVzZXItPmV4dGVuc2lvbnMpKQo+Pj4gKyAgICAgICAgICAgICBlcnIgPSBpOTE1X3VzZXJfZXh0 ZW5zaW9ucyh1NjRfdG9fdXNlcl9wdHIoZXh0ZW5zaW9ucyksCj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9lbmdpbmVzX19leHRlbnNpb25zLAo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWV9TSVpFKHNldF9lbmdp bmVzX19leHRlbnNpb25zKSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnNldCk7Cj4+PiArICAgICBpZiAoZXJyKSB7Cj4+Cj4+IERvIHdlIG5lZWQgYW4gdXNl ciBleHRlbnNpb25zIGRlc3RydWN0b3IgdGFibGUgZm9yIGEgbW9yZQo+PiBjb21wYXJ0bWVudGFs aXplZCBkZXNpZ24/IFRoaXMgYWN0dWFsbHkgYXBwbGllcyB0byB0aGUKPj4gaTkxNV91c2VyX2V4 dGVuc2lvbnMoKSBpbXBsZW1lbnRhdGlvbi4uIGl0IHdvdWxkIG5lZWQgdG8gdGFrZSB0d28KPj4g ZnVuY3Rpb24gdGFibGVzIEkgdGhpbmsgYW5kIHVud2luZCB1bnRpbCB0aGUgb25lIHRoYXQgZmFp bGVkLgo+IAo+IFllYWgsIGR0b3IgZm9yIHVud2luZCBpcyBpbnRyaWd1aW5nLgo+IAo+Pj4gKyAg ICAgICAgICAgICBrZnJlZShzZXQuZW5naW5lcyk7Cj4+PiArICAgICAgICAgICAgIHJldHVybiBl cnI7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArb3V0Ogo+Pj4gKyAgICAga2ZyZWUoY3R4LT5lbmdp bmVzKTsKPj4+ICsgICAgIGN0eC0+ZW5naW5lcyA9IHNldC5lbmdpbmVzOwo+Pj4gKyAgICAgY3R4 LT5uZW5naW5lID0gc2V0Lm5lbmdpbmUgKyAxOwo+Pj4gKwo+Pj4gKyAgICAgcmV0dXJuIDA7Cj4+ PiArfQo+Pj4gKwo+Pj4gICAgaW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQo+Pj4gICAgewo+Pj4gQEAgLTEw MTEsNiArMTA5NSwxMCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+Pj4gICAgICAgICAgICAgICAgfQo+Pj4g ICAgICAgICAgICAgICAgYnJlYWs7Cj4+PiAgICAKPj4+ICsgICAgIGNhc2UgSTkxNV9DT05URVhU X1BBUkFNX0VOR0lORVM6Cj4+PiArICAgICAgICAgICAgIHJldCA9IHNldF9lbmdpbmVzKGN0eCwg YXJncyk7Cj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+Pj4gKwo+Pj4gICAgICAgIGRlZmF1bHQ6 Cj4+PiAgICAgICAgICAgICAgICByZXQgPSAtRUlOVkFMOwo+Pj4gICAgICAgICAgICAgICAgYnJl YWs7Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4+PiBpbmRleCA3 NzAwNDM0NDliYTYuLjlmODkxMTlhNjU2NiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5oCj4+PiBAQCAtNjcsNiArNjcsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCB7Cj4+PiAgICAgICAgLyoqIGZpbGVfcHJpdjogb3duaW5nIGZpbGUgZGVzY3JpcHRv ciAqLwo+Pj4gICAgICAgIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsK Pj4+ICAgIAo+Pj4gKyAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKmVuZ2luZXM7Cj4+PiAr Cj4+PiAgICAgICAgc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+Pj4gICAgCj4+PiAg ICAgICAgLyoqCj4+PiBAQCAtMTM1LDYgKzEzNyw4IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 IHsKPj4+ICAgICNkZWZpbmUgQ09OVEVYVF9DTE9TRUQgICAgICAgICAgICAgICAgICAgICAgMQo+ Pj4gICAgI2RlZmluZSBDT05URVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OICAgICAyCj4+PiAg ICAKPj4+ICsgICAgIHVuc2lnbmVkIGludCBuZW5naW5lOwo+Pgo+PiBXaHkgcHV0IHJlbGF0ZWQg ZmllbGRzIGFwYXJ0Pwo+IAo+IFBhY2tpbmcuCgpIbSBpdCBmZWVscyB0byBmYXIuIEl0J3Mgb25l IHBlciBleGVjYnVmIGxvb2t1cCBzbyBub3QgdGhhdCBob3QuIE1vdmUgCnRoZSBlbmdpbmVzIGFu ZCBuZW5naW5lcyBkb3duIHRvIGFmdGVyIHN0cnVjdCBoZWFkX3JjdT8gQW5kIGFkZCBjb21tZW50 cyAKYWdhaW5zdCB0aGUgbWVtYmVycyBvZiBjb3Vyc2UhIDopCgo+IAo+Pgo+Pj4gKwo+Pj4gICAg ICAgIC8qKgo+Pj4gICAgICAgICAqIEBod19pZDogLSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhl IGNvbnRleHQKPj4+ICAgICAgICAgKgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+Pj4gaW5kZXggMTA5NDg2YTZlZjA3Li5mYWVkZmRjYTg3NWQgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+Pj4gQEAg LTIwMTQsMTMgKzIwMTQsMjMgQEAgc3RhdGljIGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2lkIHVz ZXJfcmluZ19tYXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7Cj4+PiAgICB9Owo+Pj4gICAgCj4+ PiAgICBzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4+PiAtZWJfc2VsZWN0X2VuZ2lu ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+PiArZWJfc2VsZWN0X2VuZ2lu ZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYiwKPj4+ICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUsCj4+PiAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjYnVmZmVyMiAqYXJncykKPj4+ICAgIHsKPj4+ICAgICAgICB1bnNpZ25lZCBpbnQgdXNlcl9y aW5nX2lkID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOwo+Pj4gICAgICAgIHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4+ICAgIAo+Pj4gKyAgICAgaWYgKGViLT5j dHgtPmVuZ2luZXMpIHsKPj4+ICsgICAgICAgICAgICAgaWYgKHVzZXJfcmluZ19pZCA+PSBlYi0+ Y3R4LT5uZW5naW5lKSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgRFJNX0RFQlVHKCJleGVj YnVmIHdpdGggdW5rbm93biByaW5nOiAldVxuIiwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdXNlcl9yaW5nX2lkKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4g TlVMTDsKPj4+ICsgICAgICAgICAgICAgfQo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICByZXR1cm4g ZWItPmN0eC0+ZW5naW5lc1t1c2VyX3JpbmdfaWRdOwo+Pj4gKyAgICAgfQo+Pj4gKwo+Pj4gICAg ICAgIGlmICh1c2VyX3JpbmdfaWQgPiBJOTE1X1VTRVJfUklOR1MpIHsKPj4+ICAgICAgICAgICAg ICAgIERSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIHVua25vd24gcmluZzogJXVcbiIsIHVzZXJfcmlu Z19pZCk7Cj4+PiAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPj4+IEBAIC0yMDMzLDExICsy MDQzLDExIEBAIGViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4+PiAgICAgICAgfQo+Pj4gICAg Cj4+PiAtICAgICBpZiAodXNlcl9yaW5nX2lkID09IEk5MTVfRVhFQ19CU0QgJiYgSEFTX0JTRDIo ZGV2X3ByaXYpKSB7Cj4+PiArICAgICBpZiAodXNlcl9yaW5nX2lkID09IEk5MTVfRVhFQ19CU0Qg JiYgSEFTX0JTRDIoZWItPmk5MTUpKSB7Cj4+PiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg YnNkX2lkeCA9IGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0JTRF9NQVNLOwo+Pj4gICAgCj4+PiAg ICAgICAgICAgICAgICBpZiAoYnNkX2lkeCA9PSBJOTE1X0VYRUNfQlNEX0RFRkFVTFQpIHsKPj4+ IC0gICAgICAgICAgICAgICAgICAgICBic2RfaWR4ID0gZ2VuOF9kaXNwYXRjaF9ic2RfZW5naW5l KGRldl9wcml2LCBmaWxlKTsKPj4+ICsgICAgICAgICAgICAgICAgICAgICBic2RfaWR4ID0gZ2Vu OF9kaXNwYXRjaF9ic2RfZW5naW5lKGViLT5pOTE1LCBmaWxlKTsKPj4+ICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoYnNkX2lkeCA+PSBJOTE1X0VYRUNfQlNEX1JJTkcxICYmCj4+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJzZF9pZHggPD0gSTkxNV9FWEVDX0JTRF9SSU5HMikgewo+Pj4g ICAgICAgICAgICAgICAgICAgICAgICBic2RfaWR4ID4+PSBJOTE1X0VYRUNfQlNEX1NISUZUOwo+ Pj4gQEAgLTIwNDgsOSArMjA1OCw5IEBAIGViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVM TDsKPj4+ICAgICAgICAgICAgICAgIH0KPj4+ICAgIAo+Pj4gLSAgICAgICAgICAgICBlbmdpbmUg PSBkZXZfcHJpdi0+ZW5naW5lW19WQ1MoYnNkX2lkeCldOwo+Pj4gKyAgICAgICAgICAgICBlbmdp bmUgPSBlYi0+aTkxNS0+ZW5naW5lW19WQ1MoYnNkX2lkeCldOwo+Pj4gICAgICAgIH0gZWxzZSB7 Cj4+PiAtICAgICAgICAgICAgIGVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbdXNlcl9yaW5nX21h cFt1c2VyX3JpbmdfaWRdXTsKPj4+ICsgICAgICAgICAgICAgZW5naW5lID0gZWItPmk5MTUtPmVu Z2luZVt1c2VyX3JpbmdfbWFwW3VzZXJfcmluZ19pZF1dOwo+Pj4gICAgICAgIH0KPj4+ICAgIAo+ Pj4gICAgICAgIGlmICghZW5naW5lKSB7Cj4+PiBAQCAtMjI2MCw3ICsyMjcwLDcgQEAgaTkxNV9n ZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gICAgICAgIGlmICh1 bmxpa2VseShlcnIpKQo+Pj4gICAgICAgICAgICAgICAgZ290byBlcnJfZGVzdHJveTsKPj4+ICAg IAo+Pj4gLSAgICAgZWIuZW5naW5lID0gZWJfc2VsZWN0X2VuZ2luZShlYi5pOTE1LCBmaWxlLCBh cmdzKTsKPj4+ICsgICAgIGViLmVuZ2luZSA9IGViX3NlbGVjdF9lbmdpbmUoJmViLCBmaWxlLCBh cmdzKTsKPj4+ICAgICAgICBpZiAoIWViLmVuZ2luZSkgewo+Pj4gICAgICAgICAgICAgICAgZXJy ID0gLUVJTlZBTDsKPj4+ICAgICAgICAgICAgICAgIGdvdG8gZXJyX2VuZ2luZTsKPj4+IGRpZmYg LS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmgKPj4+IGluZGV4IDY1YjBiODQ0MTlmMy4uZDQxYjRjNjczYWY0IDEwMDY0NAo+Pj4g LS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+PiArKysgYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKPj4+IEBAIC0xNTA4LDkgKzE1MDgsMzYgQEAgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X3BhcmFtIHsKPj4+ICAgICNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX1VT RVJfUFJJT1JJVFkgICAgMTAyMyAvKiBpbmNsdXNpdmUgKi8KPj4+ICAgICNkZWZpbmUgICBJOTE1 X0NPTlRFWFRfREVGQVVMVF9QUklPUklUWSAgICAgICAgICAgICAwCj4+PiAgICAjZGVmaW5lICAg STkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZICAgIC0xMDIzIC8qIGluY2x1c2l2ZSAqLwo+ Pj4gKwo+Pj4gKy8qCj4+PiArICogSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4+PiArICoK Pj4+ICsgKiBCaW5kIHRoaXMgY29udGV4dCB0byBvcGVyYXRlIG9uIHRoaXMgc3Vic2V0IG9mIGF2 YWlsYWJsZSBlbmdpbmVzLiBIZW5jZWZvcnRoLAo+Pj4gKyAqIHRoZSBJOTE1X0VYRUNfUklORyBz ZWxlY3RvciBmb3IgRFJNX0lPQ1RMX0k5MTVfR0VNX0VYRUNCVUZGRVIyIG9wZXJhdGVzIGFzCj4+ PiArICogYW4gaW5kZXggaW50byB0aGlzIGFycmF5IG9mIGVuZ2luZXM7IEk5MTVfRVhFQ19ERUZB VUxUIHNlbGVjdGluZyBlbmdpbmVbMF0KPj4+ICsgKiBhbmQgdXB3YXJkcy4gVGhlIGFycmF5IGNy ZWF0ZWQgaXMgb2Zmc2V0IGJ5IDEsIHN1Y2ggdGhhdCBieSBkZWZhdWx0Cj4+PiArICogSTkxNV9F WEVDX0RFRkFVTFQgaXMgbGVmdCBlbXB0eSwgdG8gYmUgZmlsbGVkIGluIGFzIGRpcmVjdGVkLiBT bG90cyAxLi4uTgo+Pj4gKyAqIGFyZSB0aGVuIGZpbGxlZCBpbiB1c2luZyB0aGUgc3BlY2lmaWVk IChjbGFzcywgaW5zdGFuY2UpLgo+Pgo+PiBTaG91bGQgd2UgYWxsb3cgc3BlY2lmeWluZyB0aGUg ZGVmYXVsdCBpbmRleD8gSSBhbSB3b25kZXJpbmcgaWYgdGhhdAo+PiB3b3VsZCBtYWtlIGxpZmUg ZWFzaWVyIHRvIGFueSB1c2Vyc3BhY2UuCj4gCj4gQ291bGQgZG8sIGNlcnRhaW5seSBnZXRzIHJp ZCBvZiB0aGUgY2x1bXN5IG5lbmdpbmVzKzEsIGJ1dCB0aGUgc2tpcCBmb3IKPiB1bmtub3duIGNs YXNzIG1heSBtYWtlIHVwIGZvciB0aGUgY2x1bXN5bmVzcyA6KQoKWWVhaCBJIGRvbid0IGtub3cu IFVzZXJzcGFjZSBoYXMgdG8gY3JlYXRlIGEgY29udGV4dCBhdCB3aGljaCBwb2ludCAKdGhlcmUg aXNuJ3QgbXVjaCB0byBnYWluIHdpdGggdGhlIGRlZmF1bHQgaW5kZXggY2FwYWJpbGl0eS4gU28g aXQncyAKcHJvYmFibHkgcG9pbnRsZXNzLgoKSSBndWVzcyB3aGF0IEkgYW0gdGhpbmtpbmcgb2Yg aXMgaG93IHdlJ2xsIG1ha2UgSUdUIHVzZSBuZXcgZW5naW5lcyAKd2l0aG91dCB0b28gbXVjaCBj aHVybiwgc2luY2Ugd2UgZHJvcHBlZCB0aGUgcGxhaW4gY2xhc3MvaW5zdGFuY2UgCmV4ZWNidWYu IEJ1dCB0aGUgZGVmYXVsdCBpbmRleCBpZGVhIGRvZXNuJ3QgaGVscCB0aGF0IGFueXdheS4KClJl Z2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==