From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [RFC PATCH 3/3] drm/i915: add SVM execbuf ioctl v13 Date: Tue, 07 Feb 2017 14:11:41 +0200 Message-ID: <87inomryiq.fsf@gaia.fi.intel.com> References: <1483980774-18324-1-git-send-email-mika.kuoppala@intel.com> <1483980774-18324-4-git-send-email-mika.kuoppala@intel.com> <20170109210904.GB19067@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170109210904.GB19067@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, Jesse Barnes , miku@iki.fi, beignet@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gT24gTW9u LCBKYW4gMDksIDIwMTcgYXQgMDY6NTI6NTRQTSArMDIwMCwgTWlrYSBLdW9wcGFsYSB3cm90ZToK Pj4gRnJvbTogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+Cj4+IAo+PiBX ZSBqdXN0IG5lZWQgdG8gcGFzcyBpbiBhbiBhZGRyZXNzIHRvIGV4ZWN1dGUgYW5kIHNvbWUgZmxh Z3MsIHNpbmNlIHdlCj4+IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgYnVmZmVyIHJlbG9jYXRp b24gb3IgYW55IG9mIHRoZSBvdGhlciB1c3VhbAo+PiBzdHVmZi4gIFRha2VzIGluIGEgZmFuY2Ug YW5kIHJldHVybnMgYSBmZW5jZSB0byBiZSB1c2VkIGZvcgo+PiBzeW5jaHJvbml6YXRpb24uCj4+ IAo+PiB2MjogYWRkIGEgcmVxdWVzdCBhZnRlciBiYXRjaCBzdWJtaXNzaW9uIChKZXNzZSkKPj4g djM6IGFkZCBhIGZsYWcgZm9yIGZlbmNlIGNyZWF0aW9uIChDaHJpcykKPj4gdjQ6IGFkZCBDTE9F WEVDIGZsYWcgKEtyaXN0aWFuKQo+PiAgICAgYWRkIG5vbi1SQ1MgcmluZyBzdXBwb3J0IChKZXNz ZSkKPj4gdjU6IHVwZGF0ZSBmb3IgcmVxdWVzdCBhbGxvYyBjaGFuZ2UgKEplc3NlKQo+PiB2Njog bmV3IHN5bmMgZmlsZSBpbnRlcmZhY2UsIGVycm9yIHBhdGhzLCByZXF1ZXN0IGJyZWFkY3J1bWJz Cj4+IHY3OiBhbHdheXMgQ0xPRVhFQyBmb3Igc3luY19maWxlX2luc3RhbGwKPj4gdjg6IHJlYmFz ZSBvbiBuZXcgc3luYyBmaWxlIGFwaQo+PiB2OTogcmV3b3JrIG9uIHRvcCBvZiBmZW5jZSByZXF1 ZXN0cyBhbmQgc3luY19maWxlCj4+IHYxMDogdGFrZSBmZW5jZSByZWYgZm9yIHN5bmNfZmlsZSAo Q2hyaXMpCj4+ICAgICAgdXNlIGNvcnJlY3QgZmx1c2ggKENocmlzKQo+PiAgICAgIGxpbWl0IGV4 ZWMgb24gcmNzCj4+IHYxMTogYWxsb3cgZXhlYyBvbiBhbGwgZW5naW5lcwo+PiB2MTI6IGRtYV9m ZW5jZV9wdXQvZ2V0LCBmaXggZXJyb3IgcGF0aCBvbiBnZXR0aW5nIHN5bmNfZmlsZQo+PiB2MTM6 IGFkZCBpbiBmZW5jZXMsIHJlbW92ZWQgc3VwZXJmbHVvdXMgZG1hX2ZlbmNlX3B1dC9nZXQKPj4g Cj4+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+PiBDYzogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+IENjOiBKb29uYXMgTGFodGlu ZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEpl c3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91c2dlZWsub3JnPiAodjUpCj4+IFNpZ25lZC1vZmYt Ynk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+PiAtLS0KPj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcgICAgICAgICAgICAgICB8ICAgMSArCj4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgfCAgIDEgKwo+PiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgICAyICsKPj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8IDE3NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+PiAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAg ICAgIHwgIDQ0ICsrKysrKysrCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCsp Cj4+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPj4gaW5kZXggMTgzZjVkYy4uMzg3OTkwZCAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9LY29uZmlnCj4+IEBAIC04LDYgKzgsNyBAQCBjb25maWcgRFJNX0k5MTUKPj4g IAkjIHRoZSBzaG1lbV9yZWFkcGFnZSgpIHdoaWNoIGRlcGVuZHMgdXBvbiB0bXBmcwo+PiAgCXNl bGVjdCBTSE1FTQo+PiAgCXNlbGVjdCBUTVBGUwo+PiArCXNlbGVjdCBTWU5DX0ZJTEUKPgo+IER1 cGxpY2F0ZS4KPgo+PiAgCXNlbGVjdCBEUk1fS01TX0hFTFBFUgo+PiAgCXNlbGVjdCBEUk1fUEFO RUwKPj4gIAlzZWxlY3QgRFJNX01JUElfRFNJCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBp bmRleCA0ZDIyYjRiLi4yMjc2YmE2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4g QEAgLTI1NjcsNiArMjU2Nyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2Mg aTkxNV9pb2N0bHNbXSA9IHsKPj4gIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhU X0dFVFBBUkFNLCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsLCBEUk1fUkVOREVSX0FM TE9XKSwKPj4gIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNLCBp OTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKPj4gIAlE Uk1fSU9DVExfREVGX0RSVihJOTE1X1BFUkZfT1BFTiwgaTkxNV9wZXJmX29wZW5faW9jdGwsIERS TV9SRU5ERVJfQUxMT1cpLAo+PiArCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX0VYRUNfTU0s IGk5MTVfZ2VtX2V4ZWNfbW0sIERSTV9SRU5ERVJfQUxMT1cpLAo+PiAgfTsKPj4gIAo+PiAgc3Rh dGljIHN0cnVjdCBkcm1fZHJpdmVyIGRyaXZlciA9IHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4+IGluZGV4IGNhMWVhYWYuLjg0MzZlYTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+PiBAQCAtMzA5NCw2ICszMDk0LDggQEAgaW50IGk5MTVfZ2VtX2V4ZWNidWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4gIAkJCXN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2KTsKPj4gIGludCBpOTE1X2dlbV9leGVjYnVmZmVyMihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+PiAgCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPj4g K2ludCBpOTE1X2dlbV9leGVjX21tKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs Cj4+ICsJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPj4gIGludCBpOTE1X2dlbV9idXN5 X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ICAJCQlzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4+ICBpbnQgaTkxNV9nZW1fZ2V0X2NhY2hpbmdfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBpbmRleCBhNWZlMjk5Li5iYjUxY2U0IDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+IEBAIC0y OSw2ICsyOSw3IEBACj4+ICAjaW5jbHVkZSA8bGludXgvZG1hX3JlbWFwcGluZy5oPgo+PiAgI2lu Y2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4+ICAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgo+Cj4gT3V0IG9mIGRhdGUuCgpMb29r aW5nIGF0IHRoZSBjdXJyZW50IGNvZGUsIGl0IGlzIGR1cGxpY2F0ZSBhcyB0aGUgZXhwbGljaXQg ZmVuY2luZwpwcm9sbHkgYnJvdWdodCBpdCBpbi4KCj4+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4K Pj4gICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPj4gQEAgLTE5ODQsMyArMTk4NSwxNzcgQEAg aTkxNV9nZW1fZXhlY2J1ZmZlcjIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK Pj4gIAlkcm1fZnJlZV9sYXJnZShleGVjMl9saXN0KTsKPj4gIAlyZXR1cm4gcmV0Owo+PiAgfQo+ PiArCj4+ICtzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4+ICtleGVjX21tX3NlbGVj dF9lbmdpbmUoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiArCQkg ICAgICBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXhlY19tbSAqZXhlY19tbSkKPj4gK3sKPj4gKwlj b25zdCB1bnNpZ25lZCBpbnQgdXNlcl9yaW5nX2lkID0gZXhlY19tbS0+cmluZ19pZDsKPj4gKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4+ICsKPj4gKwlpZiAodXNlcl9yaW5nX2lk ID4gSTkxNV9VU0VSX1JJTkdTKSB7Cj4+ICsJCURSTV9ERUJVRygiZXhlY19tbSB3aXRoIHVua25v d24gcmluZzogJXVcbiIsIHVzZXJfcmluZ19pZCk7Cj4+ICsJCXJldHVybiBOVUxMOwo+PiArCX0K Pj4gKwo+PiArCWVuZ2luZSA9IGRldl9wcml2LT5lbmdpbmVbdXNlcl9yaW5nX21hcFt1c2VyX3Jp bmdfaWRdXTsKPj4gKwo+PiArCWlmICghZW5naW5lKSB7Cj4+ICsJCURSTV9ERUJVRygiZXhlY19t bSB3aXRoIGludmFsaWQgZW5naW5lOiAldVxuIiwgdXNlcl9yaW5nX2lkKTsKPj4gKwkJcmV0dXJu IE5VTEw7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIGVuZ2luZTsKPj4gK30KPgo+IEkgd291bGQg cmF0aGVyIHdlIHJldXNlIGViX3NlbGVjdF9lbmdpbmUoKS4gV2Uga25vdyB3ZSBoYXZlIHRvIGZp eCB0aGUKPiBBQkkgYW55d2F5LCBzbyBtaWdodCBhcyB3ZWxsIGtpbGwgMiBiaXJkcyB3aXRoIG9u ZSBzdG9uZS4KPgoKSSBhbSBzdGlsbCBoZXNpc3RhbnQgYWJvdXQgdGhpcy4gVHJpZWQgYnV0IHRo aXMgd291bGQgZXhwb3NlIHRoZSBleGVjCnN2bSBmbGFncyB0byBzaW1pbGFyIGtpbmQgb2YgdHJp Y2tlcnkgZm9yIEJTRCByaW5nLgoKPj4gK3N0YXRpYyBpbnQgZG9fZXhlY19tbShzdHJ1Y3QgZHJt X2k5MTVfZXhlY19tbSAqZXhlY19tbSwKPj4gKwkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsCj4+ICsJCSAgICAgIGNvbnN0IHUzMiBmbGFncykKPj4gK3sKPj4gKwlzdHJ1 Y3Qgc3luY19maWxlICpvdXRfZmVuY2UgPSBOVUxMOwo+PiArCXN0cnVjdCBkbWFfZmVuY2UgKmlu X2ZlbmNlID0gTlVMTDsKPj4gKwlpbnQgb3V0X2ZlbmNlX2ZkID0gLTE7Cj4+ICsJaW50IHJldDsK Pj4gKwo+PiArCWlmIChmbGFncyAmIEk5MTVfRVhFQ19NTV9GRU5DRV9JTikgewo+PiArCQlpbl9m ZW5jZSA9IHN5bmNfZmlsZV9nZXRfZmVuY2UoZXhlY19tbS0+aW5fZmVuY2VfZmQpOwo+PiArCQlp ZiAoIWluX2ZlbmNlKQo+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKwkJcmV0ID0gaTkx NV9nZW1fcmVxdWVzdF9hd2FpdF9kbWFfZmVuY2UocmVxLCBpbl9mZW5jZSk7Cj4KPiBZb3UgY2Fu IGRyb3AgdGhlIGZlbmNlIHJlZiBpbW1lZGlhdGVseS4KClNvIGNsb3NlbHkgbWltaWNlZCBmcm9t IGV4cGxpY2l0IGZlbmNlcyB0aGF0IGV4ZWNidWYgcGF0aAptaWdodCBiZSBhYmxlIHRvIGRvIHRo ZSBzYW1lIDopCgo+Cj4gCQlkbWFfZmVuY2VfcHV0KGluX2ZlbmNlKTsKPj4gKwkJaWYgKHJldCA8 IDApCj4+ICsJCQlnb3RvIGVycl9vdXQ7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGZsYWdzICYgSTkx NV9FWEVDX01NX0ZFTkNFX09VVCkgewo+PiArCQlvdXRfZmVuY2UgPSBzeW5jX2ZpbGVfY3JlYXRl KCZyZXEtPmZlbmNlKTsKPj4gKwkJaWYgKCFvdXRfZmVuY2UpIHsKPj4gKwkJCURSTV9ERUJVR19E UklWRVIoInN5bmNfZmlsZV9jcmVhdGUgZmFpbGVkXG4iKTsKPj4gKwkJCXJldCA9IC1FTk9NRU07 Cj4+ICsJCQlnb3RvIGVycl9vdXQ7Cj4+ICsJCX0KPj4gKwo+PiArCQlvdXRfZmVuY2VfZmQgPSBn ZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7Cj4+ICsJCWlmIChvdXRfZmVuY2VfZmQgPCAw KSB7Cj4+ICsJCQlyZXQgPSBvdXRfZmVuY2VfZmQ7Cj4+ICsJCQlvdXRfZmVuY2VfZmQgPSAtMTsK Pj4gKwkJCWdvdG8gZXJyX291dDsKPj4gKwkJfQo+PiArCj4+ICsJCWZkX2luc3RhbGwob3V0X2Zl bmNlX2ZkLCBvdXRfZmVuY2UtPmZpbGUpOwo+PiArCQlleGVjX21tLT5vdXRfZmVuY2VfZmQgPSBv dXRfZmVuY2VfZmQ7Cj4KPiBUcnkgbm90IHRvIHNldCBiZWZvcmUgc3VjY2Vzcy4KPgo+PiArCXJl dCA9IHJlcS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwgRU1JVF9JTlZBTElEQVRFKTsKPj4gKwlp ZiAocmV0KSB7Cj4+ICsJCURSTV9ERUJVR19EUklWRVIoImVuZ2luZSBmbHVzaCBmYWlsZWQ6ICVk XG4iLCByZXQpOwo+PiArCQlnb3RvIGVycl9vdXQ7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gcmVx LT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocmVxLCBleGVjX21tLT5iYXRjaF9wdHIsIDAsIDApOwo+ PiArCWlmIChyZXQpIHsKPj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiZW5naW5lIGRpc3BhdGNoIGV4 ZWNidWYgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPj4gKwkJZ290byBlcnJfb3V0Owo+PiArCX0KPj4g Kwo+PiArCXJldHVybiAwOwo+PiArCj4+ICtlcnJfb3V0Ogo+PiArCWlmIChvdXRfZmVuY2VfZmQg IT0gLTEpCj4+ICsJCXB1dF91bnVzZWRfZmQob3V0X2ZlbmNlX2ZkKTsKPj4gKwo+PiArCWlmIChv dXRfZmVuY2UpCj4+ICsJCWZwdXQob3V0X2ZlbmNlLT5maWxlKTsKPj4gKwo+PiArCWlmIChpbl9m ZW5jZSkKPj4gKwkJZG1hX2ZlbmNlX3B1dChpbl9mZW5jZSk7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0 Owo+PiArfQo+PiArCj4+ICtpbnQgaTkxNV9nZW1fZXhlY19tbShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4KPiBNaWdodCBhcyBjYWxs IHRoaXMgZXhlY19zdm0uIFVubGVzcyB5b3UgaGF2ZSBpbW1lZGlhdGUgcGxhbnMgdG8KPiBnZW5l cmFsaXNlLgo+CgpJIHJlbmFtZWQgZXZlcnl3aGVyZSBzL21tL3N2bQoKPj4gK3sKPj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+ICsJc3RydWN0 IGRybV9pOTE1X2V4ZWNfbW0gKmV4ZWNfbW0gPSBkYXRhOwo+PiArCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZTsKPj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+PiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+PiArCWNvbnN0IHUzMiBjdHhfaWQgPSBl eGVjX21tLT5jdHhfaWQ7Cj4+ICsJY29uc3QgdTMyIGZsYWdzID0gZXhlY19tbS0+ZmxhZ3M7Cj4+ ICsJaW50IHJldDsKPj4gKwo+PiArCWlmIChleGVjX21tLT5iYXRjaF9wdHIgJiAzKSB7Cj4+ICsJ CURSTV9ERUJVR19EUklWRVIoInB0ciBub3QgNC1ieXQgYWxpZ25lZCAlbGx1XG4iLAo+PiArCQkJ CSBleGVjX21tLT5iYXRjaF9wdHIpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4KPiBX aGVyZSBkb2VzIGFjY2Vzc19vaygpIGdldCBwZXJmb3JtZWQ/IEEgbGl0dGxlIHNwaWVsIG9uIHRo ZSBtbSB2YWxpZGF0aW9uCj4gd291bGQgaGVscCBoZXJlIGlmIGl0IGlzIGFsbCBkb25lIGZvciB1 cyBieSBzdm0uCj4KClBhc3NpbmcgaW4gbGVuZ3RoIHdvdWxkbid0IGhlbHAgbXVjaCBhcyB0aGUg cmVmcyBpbnNpZGUgdGhlIGJiCndvdWxkIGFsc28gbmVlZCB0byBiZSBjaGVja2VkPwoKPj4gKwlp ZiAoZmxhZ3MgJiB+KEk5MTVfRVhFQ19NTV9GRU5DRV9PVVQgfCBJOTE1X0VYRUNfTU1fRkVOQ0Vf SU4pKSB7Cj4+ICsJCURSTV9ERUJVR19EUklWRVIoImJhZCBmbGFnczogMHglMDh4XG4iLCBmbGFn cyk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCWlmIChleGVjX21tLT5w YWQgIT0gMCkgewo+PiArCQlEUk1fREVCVUdfRFJJVkVSKCJiYWQgcGFkOiAweCUwOHhcbiIsIGV4 ZWNfbW0tPnBhZCk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCWlmIChm aWxlID09IE5VTEwpCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Cj4gPyBUaGF0J3Mgbm90IGEgdXNl ciBlcnJvciAoRUlOVkFMKSwgdGhhdCdzIGEga2Fib29tIQo+Cj4+ICsKPj4gKwllbmdpbmUgPSBl eGVjX21tX3NlbGVjdF9lbmdpbmUoZGV2X3ByaXYsIGV4ZWNfbW0pOwo+PiArCWlmICghZW5naW5l KQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPj4gKwo+PiArCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRl dik7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1fRVJST1IoIm11dGV4IGludGVycnVwdGVkXG4i KTsKPj4gKwkJZ290byBwbV9wdXQ7Cj4+ICsJfQo+PiArCj4+ICsJY3R4ID0gaTkxNV9nZW1fdmFs aWRhdGVfY29udGV4dChkZXYsIGZpbGUsIGVuZ2luZSwgY3R4X2lkKTsKPj4gKwlpZiAoSVNfRVJS KGN0eCkpIHsKPj4gKwkJcmV0ID0gUFRSX0VSUihjdHgpOwo+PiArCQlEUk1fREVCVUdfRFJJVkVS KCJjb3VsZG4ndCBnZXQgY29udGV4dFxuIik7Cj4+ICsJCWdvdG8gdW5sb2NrOwo+PiArCX0KPj4g Kwo+PiArCWlmICghaTkxNV9nZW1fY29udGV4dF9pc19zdm0oY3R4KSkgewo+PiArCQlyZXQgPSAt RUlOVkFMOwo+PiArCQlEUk1fREVCVUdfRFJJVkVSKCJjb250ZXh0IGlzIG5vdCBTVk0gZW5hYmxl ZFxuIik7Cj4+ICsJCWdvdG8gdW5sb2NrOwo+PiArCX0KPj4gKwo+PiArCWk5MTVfZ2VtX2NvbnRl eHRfZ2V0KGN0eCk7Cj4+ICsKPj4gKwlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2lu ZSwgY3R4KTsKPj4gKwlpZiAoSVNfRVJSKHJlcSkpIHsKPj4gKwkJcmV0ID0gUFRSX0VSUihyZXEp Owo+PiArCQlnb3RvIGN0eF9wdXQ7Cj4+ICsJfQo+PiArCj4+ICsJcmV0ID0gaTkxNV9nZW1fcmVx dWVzdF9hZGRfdG9fY2xpZW50KHJlcSwgZmlsZSk7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1f REVCVUdfRFJJVkVSKCJmYWlsZWQgdG8gYWRkIHJlcXVlc3QgdG8gY2xpZW50LCAlZFxuIiwgcmV0 KTsKPj4gKwkJZ290byBhZGRfcmVxdWVzdDsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBJZiB3ZSBmYWls IGhlcmUsIHdlIHN0aWxsIG5lZWQgdG8gc3VibWl0IHRoZSByZXEgKi8KPj4gKwlyZXQgPSBkb19l eGVjX21tKGV4ZWNfbW0sIHJlcSwgZmxhZ3MpOwo+PiArCj4+ICthZGRfcmVxdWVzdDoKPj4gKwlp OTE1X2FkZF9yZXF1ZXN0KHJlcSk7Cj4KPiBEbyB0aGUgc2FtZSBhcyBleGVjYnVmIGp1c3QgZm9y IGNvbnNpc3RlbmN5IChpLmUuCj4gX19pOTE1X2FkZF9yZXF1ZXN0KHJlcSwgcmV0ID09IDApKS4K Pgo+IFdoYXQncyB0aGUgc3RvcnkgZm9yIGk5MTVfZ3B1X2Vycm9yLmM/Cj4KCldvcmsgaW4gcHJv Z3Jlc3MuCgo+PiArCj4+ICtjdHhfcHV0Ogo+PiArCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7 Cj4+ICsKPj4gK3VubG9jazoKPj4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK Pj4gKwo+PiArcG1fcHV0Ogo+PiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPj4g Kwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4gaW5kZXggNWIwNmFi MS4uODQzZjk0MyAxMDA2NDQKPj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+ ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+PiBAQCAtMjU5LDYgKzI1OSw3IEBA IHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7Cj4+ICAjZGVmaW5lIERSTV9JOTE1X0dF TV9DT05URVhUX0dFVFBBUkFNCTB4MzQKPj4gICNkZWZpbmUgRFJNX0k5MTVfR0VNX0NPTlRFWFRf U0VUUEFSQU0JMHgzNQo+PiAgI2RlZmluZSBEUk1fSTkxNV9QRVJGX09QRU4JCTB4MzYKPj4gKyNk ZWZpbmUgRFJNX0k5MTVfR0VNX0VYRUNfTU0JCTB4MzcKPj4gIAo+PiAgI2RlZmluZSBEUk1fSU9D VExfSTkxNV9JTklUCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfSU5JVCwg ZHJtX2k5MTVfaW5pdF90KQo+PiAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9GTFVTSAkJRFJNX0lP ICggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0ZMVVNIKQo+PiBAQCAtMzEzLDYgKzMxNCw3 IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7Cj4+ICAjZGVmaW5lIERSTV9JT0NU TF9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsg RFJNX0k5MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0sIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSkKPj4gICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0J RFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9TRVRQQVJB TSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtKQo+PiAgI2RlZmluZSBEUk1fSU9D VExfSTkxNV9QRVJGX09QRU4JRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVS Rl9PUEVOLCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtKQo+PiArI2RlZmluZSBEUk1f SU9DVExfSTkxNV9HRU1fRVhFQ19NTQkJCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k5MTVfR0VNX0VYRUNfTU0sIHN0cnVjdCBkcm1faTkxNV9leGVjX21tKQo+PiAgCj4+ICAvKiBB bGxvdyBkcml2ZXJzIHRvIHN1Ym1pdCBiYXRjaGJ1ZmZlcnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUs IHJlbHlpbmcKPj4gICAqIG9uIHRoZSBzZWN1cml0eSBtZWNoYW5pc21zIHByb3ZpZGVkIGJ5IGhh cmR3YXJlLgo+PiBAQCAtMTM2Myw2ICsxMzY1LDQ4IEBAIGVudW0gZHJtX2k5MTVfcGVyZl9yZWNv cmRfdHlwZSB7Cj4+ICAJRFJNX0k5MTVfUEVSRl9SRUNPUkRfTUFYIC8qIG5vbi1BQkkgKi8KPj4g IH07Cj4+ICAKPj4gKy8qKgo+PiArICogZHJtX2k5MTVfZXhlY19tbSAtIHNoYXJlZCBhZGRyZXNz IHNwYWNlIGV4ZWNidWYKPj4gKyAqIEBiYXRjaF9wdHI6IGFkZHJlc3Mgb2YgYmF0Y2ggYnVmZmVy IChpbiBjb250ZXh0J3MgQ1BVIGFkZHJlc3Mgc3BhY2UpCj4+ICsgKiBAY3R4X2lkOiBjb250ZXh0 IHRvIHVzZSBmb3IgZXhlY3V0aW9uLCBtdXN0IGJlIHN2bSBlbmFibGVkCj4+ICsgKiBAcmluZ19p ZDogcmluZyB0byB3aGljaCB0aGlzIGNvbnRleHQgd2lsbCBiZSBzdWJtaXR0ZWQsIHNlZSBleGVj YnVmZmVyMgo+PiArICogQGZsYWdzOiB1c2VkIHRvIHNpZ25hbCBpZiBpbi9vdXQgZmVuY2VzIHNo b3VsZCBiZSB1c2VkCj4+ICsgKiBAb3V0X2ZlbmNlX2ZkOiByZXR1cm5lZCBmZW5jZSBoYW5kbGUg b2Ygb3V0IGZlbmNlIHlvdSBjYW4gd2FpdCBvbgo+PiArICogQGluX2ZlbmNlX2ZkOiBnaXZlbiBm ZW5jZSBoYW5kbGUgb2YgZmVuY2UgdGhlIGdwdSB3aWxsIHdhaXQgZm9yCj4+ICsgKiBAcGFkOiBw YWRkaW5nLCBtdXN0IGJlIHplcm8KPj4gKyAqCj4+ICsgKiBUaGlzIHNpbXBsaWZpZWQgZXhlY2J1 ZiBqdXN0IGV4ZWN1dGVzIGFuIE1JX0JBVENIX0JVRkZFUl9TVEFSVCBhdAo+PiArICogQGJhdGNo X3B0ciB1c2luZyBAY3R4X2lkIGFzIHRoZSBjb250ZXh0LiAgVGhlIGNvbnRleHQgd2lsbCBpbmRp Y2F0ZQo+PiArICogd2hpY2ggYWRkcmVzcyBzcGFjZSB0aGUgQGJhdGNoX3B0ciB3aWxsIHVzZS4K Pj4gKyAqCj4+ICsgKiBOb3RlIEBiYXRjaF9wdHIgbXVzdCBiZSBkd29yZCBhbGlnbmVkLgo+PiAr ICoKPj4gKyAqIEJ5IGRlZmF1bHQsIHRoZSBrZXJuZWwgd2lsbCBzaW1wbHkgZXhlY3V0ZSB0aGUg YWRkcmVzcyBnaXZlbiBvbiB0aGUgR1BVLgo+PiArICoKPj4gKyAqIElmIHRoZSAlSTkxNV9FWEVD X01NX0ZFTkNFX09VVCBmbGFnIGlzIHBhc3NlZCBpbiB0aGUgQGZsYWdzIGZpZWxkIGhvd2V2ZXIs Cj4+ICsgKiB0aGUga2VybmVsIHdpbGwgcmV0dXJuIGEgc3luY19maWxlIChkbWFfZmVuY2UpIG9i amVjdCBpbiBAb3V0X2ZlbmNlX2ZkIGZvcgo+PiArICogdGhlIGNhbGxlciB0byB1c2UgdG8gc3lu Y2hyb25pemUgZXhlY3V0aW9uIG9mIHRoZSBwYXNzZWQgYmF0Y2guCj4+ICsgKgo+PiArICogSWYg dGhlICVJOTE1X0VYRUNfTU1fRkVOQ0VfSU4gZmxhZyBpcyBwYXNzZWQgaW4gdGhlIEBmbGFncyBm aWVsZCwKPj4gKyAqIHRoZSBrZXJuZWwgd2lsbCB3YWl0IHVudGlsIHRoZSBmZW5jZSAoZG1hX2Zl bmNlKSBvYmplY3QgcGFzc2VkIGluCj4+ICsgKiBAaW5fZmVuY2VfZmQgdG8gY29tcGxldGUgYmVm b3JlIHN1Ym1pdHRpbmcgYmF0Y2ggdG8gZ3B1Lgo+PiArICoKPj4gKyAqLwo+PiArc3RydWN0IGRy bV9pOTE1X2V4ZWNfbW0gewo+PiArCV9fdTY0IGJhdGNoX3B0cjsKPj4gKwlfX3UzMiBjdHhfaWQ7 Cj4+ICsJX191MzIgcmluZ19pZDsgLyogc2VlIGV4ZWNidWZmZXIyIHJpbmcgZmxhZ3MgKi8KPj4g Kwo+PiArI2RlZmluZSBJOTE1X0VYRUNfTU1fRkVOQ0VfT1VUICgxPDwwKQo+PiArI2RlZmluZSBJ OTE1X0VYRUNfTU1fRkVOQ0VfSU4gICgxPDwxKQo+PiArCV9fdTMyIGZsYWdzOwo+PiArCj4+ICsJ X191MzIgb3V0X2ZlbmNlX2ZkOwo+PiArCV9fdTMyIGluX2ZlbmNlX2ZkOwo+Cj4gSW4gdGhlbiBv dXQganVzdCBtYWtlcyBtb3JlIHNlbnNlIHRvIG1vIQo+PiArCj4+ICsJX191MzIgcGFkOwo+Cj4g SWYgeW91IHVzZSB1NjQgZmxhZ3MgKGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyKSB3ZSBjYW4gcHV0 IHRoaXMgcGFkIHRvCj4gZ29vZCB1c2UuCj4KCkkgaGF2ZSBhZGRyZXNzZWQgZXZlcnl0aGluZyB3 aXRoIHRoZSBleGNlcHRpb24gd2hlcmUgSSBoYXZlCnN0YXRlZCBvdGhlcndpc2UuCgpUaGFuayB5 b3UgZm9yIHRoZSBmZWVkYmFjaywKLU1pa2EKCj4+ICt9Owo+PiArCj4+ICAjaWYgZGVmaW5lZChf X2NwbHVzcGx1cykKPj4gIH0KPj4gICNlbmRpZgo+PiAtLSAKPj4gMi43LjQKPj4gCj4KPiAtLSAK PiBDaHJpcyBXaWxzb24sIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudHJlCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=