From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 38/46] drm/i915: Allow a context to define its set of engines Date: Mon, 25 Feb 2019 10:41:28 +0000 Message-ID: <19119b68-deec-b986-b35b-87638741fb83@linux.intel.com> References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-39-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 99C47891D5 for ; Mon, 25 Feb 2019 10:41:31 +0000 (UTC) In-Reply-To: <20190206130356.18771-39-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 Ck9uIDA2LzAyLzIwMTkgMTM6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdmVyIHRoZSBsYXN0 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 bGwgYmUgcmV2ZWFsZWQgaW4gdGhlIG5leHQgcGF0Y2guCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCAxODQgKysrKysrKysrKysrKysrKysr KystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggICAgfCAgIDQg Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDIyICsr LQo+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgIHwgIDMyICsr KysKPiAgIDQgZmlsZXMgY2hhbmdlZCwgMjMwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCAyZTJk ZTA1MzJjMDguLmFkODA1MjIzNWYzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmMKPiBAQCAtOTUsNiArOTUsMjEgQEAKPiAgIAo+ICAgI2RlZmluZSBBTExfTDNf U0xJQ0VTKGRldikgKDEgPDwgTlVNX0wzX1NMSUNFUyhkZXYpKSAtIDEKPiAgIAo+ICtzdGF0aWMg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gK2xvb2t1cF91c2VyX2VuZ2luZShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAo+ICsJCSAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHUxNiBjbGFz cywgdTE2IGluc3RhbmNlKQo+ICsjZGVmaW5lIExPT0tVUF9VU0VSX0lOREVYIEJJVCgwKQo+ICt7 Cj4gKwlpZiAoZmxhZ3MgJiBMT09LVVBfVVNFUl9JTkRFWCkgewo+ICsJCWlmIChpbnN0YW5jZSA+ PSBjdHgtPm5lbmdpbmUpCj4gKwkJCXJldHVybiBOVUxMOwo+ICsKPiArCQlyZXR1cm4gY3R4LT5l bmdpbmVzW2luc3RhbmNlXTsKPiArCX0KPiArCj4gKwlyZXR1cm4gaW50ZWxfZW5naW5lX2xvb2t1 cF91c2VyKGN0eC0+aTkxNSwgY2xhc3MsIGluc3RhbmNlKTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2 b2lkIGx1dF9jbG9zZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgewo+ICAgCXN0 cnVjdCBpOTE1X2x1dF9oYW5kbGUgKmx1dCwgKmxuOwo+IEBAIC0yMTgsNiArMjMzLDggQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCj4gICAJcmVsZWFzZV9od19pZChjdHgpOwo+ICAgCWk5MTVfcHBndHRfcHV0KGN0eC0+cHBn dHQpOwo+ICAgCj4gKwlrZnJlZShjdHgtPmVuZ2luZXMpOwo+ICsKPiAgIAlmb3IgKG4gPSAwOyBu IDwgQVJSQVlfU0laRShjdHgtPl9fZW5naW5lKTsgbisrKSB7Cj4gICAJCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSA9ICZjdHgtPl9fZW5naW5lW25dOwo+ICAgCj4gQEAgLTEzMTcsOSArMTMzNCw5 IEBAIHN0YXRpYyBpbnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAg IAlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQo+ICAgCQlyZXR1cm4gLUVJ TlZBTDsKPiAgIAo+IC0JZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGk5MTUsCj4g LQkJCQkJICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAo+IC0JCQkJCSAgdXNlcl9zc2V1LmVuZ2lu ZV9pbnN0YW5jZSk7Cj4gKwllbmdpbmUgPSBsb29rdXBfdXNlcl9lbmdpbmUoY3R4LCAwLAo+ICsJ CQkJICAgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCj4gKwkJCQkgICAgdXNlcl9zc2V1LmVuZ2lu ZV9pbnN0YW5jZSk7Cj4gICAJaWYgKCFlbmdpbmUpCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAg Cj4gQEAgLTEzMzcsOSArMTM1NCwxNTYgQEAgc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCj4gICAJYXJncy0+c2l6ZSA9IHNpemVvZih1c2VyX3Nz ZXUpOwo+ICAgCj4gKwlyZXR1cm4gMDsKPiArfTsKPiArCj4gK3N0cnVjdCBzZXRfZW5naW5lcyB7 Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqKmVuZ2luZXM7Cj4gKwl1bnNpZ25lZCBpbnQgbmVuZ2luZTsKPiArfTsKPiArCj4gK3N0 YXRpYyBjb25zdCBpOTE1X3VzZXJfZXh0ZW5zaW9uX2ZuIHNldF9lbmdpbmVzX19leHRlbnNpb25z W10gPSB7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK3NldF9lbmdpbmVzKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCj4gKwkgICAgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtICphcmdzKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2lu ZXMgX191c2VyICp1c2VyOwo+ICsJc3RydWN0IHNldF9lbmdpbmVzIHNldCA9IHsgLmN0eCA9IGN0 eCB9Owo+ICsJdTY0IHNpemUsIGV4dGVuc2lvbnM7Cj4gKwl1bnNpZ25lZCBpbnQgbjsKPiArCWlu dCBlcnI7Cj4gKwo+ICsJdXNlciA9IHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSk7Cj4gKwlz aXplID0gYXJncy0+c2l6ZTsKPiArCWlmICghc2l6ZSkKPiArCQlnb3RvIG91dDsKPiArCj4gKwlC VUlMRF9CVUdfT04oIUlTX0FMSUdORUQoc2l6ZW9mKCp1c2VyKSwgc2l6ZW9mKCp1c2VyLT5jbGFz c19pbnN0YW5jZSkpKTsKPiArCWlmIChzaXplIDwgc2l6ZW9mKCp1c2VyKSB8fCBzaXplICUgc2l6 ZW9mKCp1c2VyLT5jbGFzc19pbnN0YW5jZSkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJ c2V0Lm5lbmdpbmUgPSAoc2l6ZSAtIHNpemVvZigqdXNlcikpIC8gc2l6ZW9mKCp1c2VyLT5jbGFz c19pbnN0YW5jZSk7Cj4gKwlpZiAoc2V0Lm5lbmdpbmUgPT0gMCB8fCBzZXQubmVuZ2luZSA+IEk5 MTVfRVhFQ19SSU5HX01BU0spCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJc2V0LmVuZ2lu ZXMgPSBrbWFsbG9jX2FycmF5KHNldC5uZW5naW5lLAo+ICsJCQkJICAgIHNpemVvZigqc2V0LmVu Z2luZXMpLAo+ICsJCQkJICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFzZXQuZW5naW5lcykKPiAr CQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlmb3IgKG4gPSAwOyBuIDwgc2V0Lm5lbmdpbmU7IG4r Kykgewo+ICsJCXUxNiBjbGFzcywgaW5zdDsKPiArCj4gKwkJaWYgKGdldF91c2VyKGNsYXNzLCAm dXNlci0+Y2xhc3NfaW5zdGFuY2Vbbl0uZW5naW5lX2NsYXNzKSB8fAo+ICsJCSAgICBnZXRfdXNl cihpbnN0LCAmdXNlci0+Y2xhc3NfaW5zdGFuY2Vbbl0uZW5naW5lX2luc3RhbmNlKSkgewo+ICsJ CQlrZnJlZShzZXQuZW5naW5lcyk7Cj4gKwkJCXJldHVybiAtRUZBVUxUOwo+ICsJCX0KPiArCj4g KwkJaWYgKGNsYXNzID09ICh1MTYpSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRCAmJgo+ICsJCSAg ICBpbnN0ID09ICh1MTYpSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRF9OT05FKSB7Cj4gKwkJCXNl dC5lbmdpbmVzW25dID0gTlVMTDsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlzZXQu ZW5naW5lc1tuXSA9IGxvb2t1cF91c2VyX2VuZ2luZShjdHgsIDAsIGNsYXNzLCBpbnN0KTsKPiAr CQlpZiAoIXNldC5lbmdpbmVzW25dKSB7Cj4gKwkJCWtmcmVlKHNldC5lbmdpbmVzKTsKPiArCQkJ cmV0dXJuIC1FTk9FTlQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWVyciA9IC1FRkFVTFQ7Cj4gKwlp ZiAoIWdldF91c2VyKGV4dGVuc2lvbnMsICZ1c2VyLT5leHRlbnNpb25zKSkKPiArCQllcnIgPSBp OTE1X3VzZXJfZXh0ZW5zaW9ucyh1NjRfdG9fdXNlcl9wdHIoZXh0ZW5zaW9ucyksCj4gKwkJCQkJ ICAgc2V0X2VuZ2luZXNfX2V4dGVuc2lvbnMsCj4gKwkJCQkJICAgQVJSQVlfU0laRShzZXRfZW5n aW5lc19fZXh0ZW5zaW9ucyksCj4gKwkJCQkJICAgJnNldCk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJ a2ZyZWUoc2V0LmVuZ2luZXMpOwo+ICsJCXJldHVybiBlcnI7Cj4gKwl9Cj4gKwo+ICtvdXQ6Cj4g KwltdXRleF9sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJa2ZyZWUoY3R4 LT5lbmdpbmVzKTsKPiArCWN0eC0+ZW5naW5lcyA9IHNldC5lbmdpbmVzOwo+ICsJY3R4LT5uZW5n aW5lID0gc2V0Lm5lbmdpbmU7Cj4gKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gKwo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQKPiAr Z2V0X2VuZ2luZXMoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCSAgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2Nv bnRleHRfcGFyYW1fZW5naW5lcyAqbG9jYWw7Cj4gKwl1bnNpZ25lZCBpbnQgbiwgY291bnQsIHNp emU7Cj4gKwlpbnQgZXJyOwo+ICsKPiArcmVzdGFydDoKPiArCWNvdW50ID0gUkVBRF9PTkNFKGN0 eC0+bmVuZ2luZSk7Cj4gKwlpZiAoY291bnQgPiAoSU5UX01BWCAtIHNpemVvZigqbG9jYWwpKSAv IHNpemVvZigqbG9jYWwtPmNsYXNzX2luc3RhbmNlKSkKPiArCQlyZXR1cm4gLUVOT01FTTsgLyog dW5yZXByZXNlbnRhYmxlISAqLwo+ICsKPiArCXNpemUgPSBzaXplb2YoKmxvY2FsKSArIGNvdW50 ICogc2l6ZW9mKCpsb2NhbC0+Y2xhc3NfaW5zdGFuY2UpOwo+ICsJaWYgKCFhcmdzLT5zaXplKSB7 Cj4gKwkJYXJncy0+c2l6ZSA9IHNpemU7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwlpZiAoYXJn cy0+c2l6ZSA8IHNpemUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJbG9jYWwgPSBrbWFs bG9jKHNpemUsIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFsb2NhbCkKPiArCQlyZXR1cm4gLUVOT01F TTsKPiArCj4gKwlpZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpKSB7Cj4gKwkJZXJyID0gLUVJTlRSOwo+ICsJCWdvdG8gZXJyOwo+ICsJfQo+ ICsKPiArCWlmIChSRUFEX09OQ0UoY3R4LT5uZW5naW5lKSAhPSBjb3VudCkgewo+ICsJCW11dGV4 X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCQlrZnJlZShsb2NhbCk7 Cj4gKwkJZ290byByZXN0YXJ0Owo+ICsJfQo+ICsKPiArCWxvY2FsLT5leHRlbnNpb25zID0gMDsK PiArCWZvciAobiA9IDA7IG4gPCBjb3VudDsgbisrKSB7Cj4gKwkJaWYgKGN0eC0+ZW5naW5lc1tu XSkgewo+ICsJCQlsb2NhbC0+Y2xhc3NfaW5zdGFuY2Vbbl0uZW5naW5lX2NsYXNzID0KPiArCQkJ CWN0eC0+ZW5naW5lc1tuXS0+dWFiaV9jbGFzczsKPiArCQkJbG9jYWwtPmNsYXNzX2luc3RhbmNl W25dLmVuZ2luZV9pbnN0YW5jZSA9Cj4gKwkJCQljdHgtPmVuZ2luZXNbbl0tPmluc3RhbmNlOwo+ ICsJCX0gZWxzZSB7Cj4gKwkJCWxvY2FsLT5jbGFzc19pbnN0YW5jZVtuXS5lbmdpbmVfY2xhc3Mg PQo+ICsJCQkJSTkxNV9FTkdJTkVfQ0xBU1NfSU5WQUxJRDsKPiArCQkJbG9jYWwtPmNsYXNzX2lu c3RhbmNlW25dLmVuZ2luZV9pbnN0YW5jZSA9Cj4gKwkJCQlJOTE1X0VOR0lORV9DTEFTU19JTlZB TElEX05PTkU7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0 cihhcmdzLT52YWx1ZSksIGxvY2FsLCBzaXplKSkgewo+ICsJCWVyciA9IC1FRkFVTFQ7Cj4gKwkJ Z290byBlcnI7Cj4gKwl9Cj4gKwoKU3JpcGFkYSwgUmFkaGFrcmlzaG5hIDxyYWRoYWtyaXNobmEu c3JpcGFkYUBpbnRlbC5jb20+IHJlcG9ydHMgbGVha2FnZSAKb2YgbG9jYWwgb24gdGhlIHN1Y2Nl c3MgcGF0aCBoZXJlLgoKQWx0ZXJuYXRpdmVseSwgcGVyaGFwcyB5b3UgY291bGQgc2ltcGxpZnkg YnkgdXNpbmcgc3RhY2sgc3BhY2UsIHdpdGggCnNvbWUgcmVhc29uYWJsZSBtYXggc2l6ZSBmb3Ig ZnV0dXJlIHByb29maW5nLCBhbmQgYSBHRU1fV0FSTl9PTiBlcnJvciAKcmV0dXJuIG9yIHNvbWV0 aGluZy4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gKwlhcmdzLT5zaXplID0gc2l6ZTsKPiArCXJldHVy biAwOwo+ICsKPiArZXJyOgo+ICsJa2ZyZWUobG9jYWwpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ ICsKPiAgIHN0YXRpYyBpbnQgY3R4X3NldHBhcmFtKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4gICAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCj4gICB7 Cj4gQEAgLTE0MDMsNiArMTU2NywxMCBAQCBzdGF0aWMgaW50IGN0eF9zZXRwYXJhbShzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQlyZXQgPSBzZXRfcHBndHQoY3R4LCBhcmdzKTsK PiAgIAkJYnJlYWs7Cj4gICAKPiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4g KwkJcmV0ID0gc2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2Fz ZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQg PSAtRUlOVkFMOwo+IEBAIC0xNTM1LDkgKzE3MDMsOSBAQCBzdGF0aWMgaW50IGdldF9zc2V1KHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1 c2VyX3NzZXUucnN2ZCkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAtCWVuZ2luZSA9IGlu dGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUsCj4gLQkJCQkJICB1c2VyX3NzZXUuZW5n aW5lX2NsYXNzLAo+IC0JCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7Cj4gKwllbmdp bmUgPSBsb29rdXBfdXNlcl9lbmdpbmUoY3R4LCAwLAo+ICsJCQkJICAgIHVzZXJfc3NldS5lbmdp bmVfY2xhc3MsCj4gKwkJCQkgICAgdXNlcl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7Cj4gICAJaWYg KCFlbmdpbmUpCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCj4gQEAgLTE2MTYsNiArMTc4NCwx MCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQlyZXQgPSBnZXRfcHBndHQoY3R4LCBhcmdzKTsKPiAg IAkJYnJlYWs7Cj4gICAKPiArCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVM6Cj4gKwkJ cmV0ID0gZ2V0X2VuZ2luZXMoY3R4LCBhcmdzKTsKPiArCQlicmVhazsKPiArCj4gICAJY2FzZSBJ OTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKPiAgIAlkZWZhdWx0Ogo+ICAgCQlyZXQgPSAt RUlOVkFMOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiBpbmRleCAz YmQxZmFhYmJjM2YuLjc3NWRlMWFmMWIxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKPiBAQCAtNzgsNiArNzgsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCB7Cj4gICAJLyoqIGZpbGVfcHJpdjogb3duaW5nIGZpbGUgZGVzY3JpcHRvciAqLwo+ICAgCXN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsKPiAgIAo+ICsJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqKmVuZ2luZXM7Cj4gKwo+ICAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0 aW1lbGluZTsKPiAgIAo+ICAgCS8qKgo+IEBAIC0xNDYsNiArMTQ4LDggQEAgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgewo+ICAgI2RlZmluZSBDT05URVhUX0NMT1NFRAkJCTEKPiAgICNkZWZpbmUg Q09OVEVYVF9GT1JDRV9TSU5HTEVfU1VCTUlTU0lPTgkyCj4gICAKPiArCXVuc2lnbmVkIGludCBu ZW5naW5lOwo+ICsKPiAgIAkvKioKPiAgIAkgKiBAaHdfaWQ6IC0gdW5pcXVlIGlkZW50aWZpZXIg Zm9yIHRoZSBjb250ZXh0Cj4gICAJICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jCj4gaW5kZXggODU5NjI1NDc0ZjU4Li41MDUyYjQ5ZjhkY2QgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTIwODYsMTMg KzIwODYsMjMgQEAgc3RhdGljIGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2lkIHVzZXJfcmluZ19t YXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7Cj4gICB9Owo+ICAgCj4gICBzdGF0aWMgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqCj4gLWViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICtlYl9zZWxlY3RfZW5naW5lKHN0cnVjdCBpOTE1X2V4ZWNidWZm ZXIgKmViLAo+ICAgCQkgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAgCQkgc3RydWN0IGRybV9p OTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncykKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgdXNlcl9y aW5nX2lkID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOwo+ICAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAo+ICsJaWYgKGViLT5jdHgtPmVuZ2luZXMpIHsK PiArCQlpZiAodXNlcl9yaW5nX2lkID49IGViLT5jdHgtPm5lbmdpbmUpIHsKPiArCQkJRFJNX0RF QlVHKCJleGVjYnVmIHdpdGggdW5rbm93biByaW5nOiAldVxuIiwKPiArCQkJCSAgdXNlcl9yaW5n X2lkKTsKPiArCQkJcmV0dXJuIE5VTEw7Cj4gKwkJfQo+ICsKPiArCQlyZXR1cm4gZWItPmN0eC0+ ZW5naW5lc1t1c2VyX3JpbmdfaWRdOwo+ICsJfQo+ICsKPiAgIAlpZiAodXNlcl9yaW5nX2lkID4g STkxNV9VU0VSX1JJTkdTKSB7Cj4gICAJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIHVua25vd24g cmluZzogJXVcbiIsIHVzZXJfcmluZ19pZCk7Cj4gICAJCXJldHVybiBOVUxMOwo+IEBAIC0yMTA1 LDExICsyMTE1LDExIEBAIGViX3NlbGVjdF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAgCQlyZXR1cm4gTlVMTDsKPiAgIAl9Cj4gICAKPiAtCWlmICh1c2VyX3Jp bmdfaWQgPT0gSTkxNV9FWEVDX0JTRCAmJiBIQVNfQlNEMihkZXZfcHJpdikpIHsKPiArCWlmICh1 c2VyX3JpbmdfaWQgPT0gSTkxNV9FWEVDX0JTRCAmJiBIQVNfQlNEMihlYi0+aTkxNSkpIHsKPiAg IAkJdW5zaWduZWQgaW50IGJzZF9pZHggPSBhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19CU0RfTUFT SzsKPiAgIAo+ICAgCQlpZiAoYnNkX2lkeCA9PSBJOTE1X0VYRUNfQlNEX0RFRkFVTFQpIHsKPiAt CQkJYnNkX2lkeCA9IGdlbjhfZGlzcGF0Y2hfYnNkX2VuZ2luZShkZXZfcHJpdiwgZmlsZSk7Cj4g KwkJCWJzZF9pZHggPSBnZW44X2Rpc3BhdGNoX2JzZF9lbmdpbmUoZWItPmk5MTUsIGZpbGUpOwo+ ICAgCQl9IGVsc2UgaWYgKGJzZF9pZHggPj0gSTkxNV9FWEVDX0JTRF9SSU5HMSAmJgo+ICAgCQkJ ICAgYnNkX2lkeCA8PSBJOTE1X0VYRUNfQlNEX1JJTkcyKSB7Cj4gICAJCQlic2RfaWR4ID4+PSBJ OTE1X0VYRUNfQlNEX1NISUZUOwo+IEBAIC0yMTIwLDkgKzIxMzAsOSBAQCBlYl9zZWxlY3RfZW5n aW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCXJldHVybiBOVUxM Owo+ICAgCQl9Cj4gICAKPiAtCQllbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW19WQ1MoYnNkX2lk eCldOwo+ICsJCWVuZ2luZSA9IGViLT5pOTE1LT5lbmdpbmVbX1ZDUyhic2RfaWR4KV07Cj4gICAJ fSBlbHNlIHsKPiAtCQllbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW3VzZXJfcmluZ19tYXBbdXNl cl9yaW5nX2lkXV07Cj4gKwkJZW5naW5lID0gZWItPmk5MTUtPmVuZ2luZVt1c2VyX3JpbmdfbWFw W3VzZXJfcmluZ19pZF1dOwo+ICAgCX0KPiAgIAo+ICAgCWlmICghZW5naW5lKSB7Cj4gQEAgLTIz MzIsNyArMjM0Miw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgIAlpZiAodW5saWtlbHkoZXJyKSkKPiAgIAkJZ290byBlcnJfZGVzdHJveTsKPiAg IAo+IC0JZWIuZW5naW5lID0gZWJfc2VsZWN0X2VuZ2luZShlYi5pOTE1LCBmaWxlLCBhcmdzKTsK PiArCWViLmVuZ2luZSA9IGViX3NlbGVjdF9lbmdpbmUoJmViLCBmaWxlLCBhcmdzKTsKPiAgIAlp ZiAoIWViLmVuZ2luZSkgewo+ICAgCQllcnIgPSAtRUlOVkFMOwo+ICAgCQlnb3RvIGVycl9lbmdp bmU7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IDBjNTU2NmIyZDI0NC4uZWI1Nzk5ZmUzODY4IDEw MDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0xMjIsNiArMTIyLDggQEAgZW51bSBkcm1faTkxNV9n ZW1fZW5naW5lX2NsYXNzIHsKPiAgIAlJOTE1X0VOR0lORV9DTEFTU19JTlZBTElECT0gLTEKPiAg IH07Cj4gICAKPiArI2RlZmluZSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkUgLTEKPiAr Cj4gICAvKioKPiAgICAqIERPQzogcGVyZl9ldmVudHMgZXhwb3NlZCBieSBpOTE1IHRocm91Z2gg L3N5cy9idXMvZXZlbnRfc291cmNlcy9kcml2ZXJzL2k5MTUKPiAgICAqCj4gQEAgLTE0ODEsNiAr MTQ4MywyNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewo+ICAgCSAqIFNl ZSBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFIGFuZCBEUk1fSTkxNV9HRU1fVk1fREVTVFJPWS4KPiAg IAkgKi8KPiAgICNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1ZNCQkweDgKPiArCj4gKy8qCj4g KyAqIEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOgo+ICsgKgo+ICsgKiBCaW5kIHRoaXMgY29u dGV4dCB0byBvcGVyYXRlIG9uIHRoaXMgc3Vic2V0IG9mIGF2YWlsYWJsZSBlbmdpbmVzLiBIZW5j ZWZvcnRoLAo+ICsgKiB0aGUgSTkxNV9FWEVDX1JJTkcgc2VsZWN0b3IgZm9yIERSTV9JT0NUTF9J OTE1X0dFTV9FWEVDQlVGRkVSMiBvcGVyYXRlcyBhcwo+ICsgKiBhbiBpbmRleCBpbnRvIHRoaXMg YXJyYXkgb2YgZW5naW5lczsgSTkxNV9FWEVDX0RFRkFVTFQgc2VsZWN0aW5nIGVuZ2luZVswXQo+ ICsgKiBhbmQgdXB3YXJkcy4gU2xvdHMgMC4uLk4gYXJlIGZpbGxlZCBpbiB1c2luZyB0aGUgc3Bl Y2lmaWVkIChjbGFzcywgaW5zdGFuY2UpLgo+ICsgKiBVc2UKPiArICoJZW5naW5lX2NsYXNzOiBJ OTE1X0VOR0lORV9DTEFTU19JTlZBTElELAo+ICsgKgllbmdpbmVfaW5zdGFuY2U6IEk5MTVfRU5H SU5FX0NMQVNTX0lOVkFMSURfTk9ORQo+ICsgKiB0byBzcGVjaWZ5IGEgZ2FwIGluIHRoZSBhcnJh eSB0aGF0IGNhbiBiZSBmaWxsZWQgaW4gbGF0ZXIsIGUuZy4gYnkgYQo+ICsgKiB2aXJ0dWFsIGVu Z2luZSB1c2VkIGZvciBsb2FkIGJhbGFuY2luZy4KPiArICoKPiArICogU2V0dGluZyB0aGUgbnVt YmVyIG9mIGVuZ2luZXMgYm91bmQgdG8gdGhlIGNvbnRleHQgdG8gMCwgYnkgcGFzc2luZyBhIHpl cm8KPiArICogc2l6ZWQgYXJndW1lbnQsIHdpbGwgcmV2ZXJ0IGJhY2sgdG8gZGVmYXVsdCBzZXR0 aW5ncy4KPiArICoKPiArICogU2VlIHN0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcy4K PiArICovCj4gKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMJMHg5Cj4gKwo+ICAg CV9fdTY0IHZhbHVlOwo+ICAgfTsKPiAgIAo+IEBAIC0xNTQzLDYgKzE1NjYsMTUgQEAgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgewo+ICAgCV9fdTMyIHJzdmQ7Cj4gICB9 Owo+ICAgCj4gK3N0cnVjdCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyB7Cj4gKwlfX3U2NCBl eHRlbnNpb25zOyAvKiBsaW5rZWQgY2hhaW4gb2YgZXh0ZW5zaW9uIGJsb2NrcywgMCB0ZXJtaW5h dGVzICovCj4gKwo+ICsJc3RydWN0IHsKPiArCQlfX3UxNiBlbmdpbmVfY2xhc3M7IC8qIHNlZSBl bnVtIGRybV9pOTE1X2dlbV9lbmdpbmVfY2xhc3MgKi8KPiArCQlfX3UxNiBlbmdpbmVfaW5zdGFu Y2U7Cj4gKwl9IGNsYXNzX2luc3RhbmNlWzBdOwo+ICt9Owo+ICsKPiAgIHN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHsKPiAgICNkZWZpbmUgSTkxNV9DT05U RVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gMAo+ICAgCXN0cnVjdCBpOTE1X3VzZXJfZXh0ZW5zaW9u IGJhc2U7Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==