From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 10/22] drm/i915: Separate GEM context construction and registration to userspace Date: Mon, 18 Mar 2019 16:22:12 +0000 Message-ID: References: <20190318095204.9913-1-chris@chris-wilson.co.uk> <20190318095204.9913-10-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id C913A898A3 for ; Mon, 18 Mar 2019 16:24:35 +0000 (UTC) In-Reply-To: <20190318095204.9913-10-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 Ck9uIDE4LzAzLzIwMTkgMDk6NTEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiBsYXRlciBwYXRj aGVzLCBpdCBiZWNhbWUgYXBwYXJlbnQgdGhhdCB1c2Vyc3BhY2UgY2FuIHNlZSBhIHBhcnRpYWxs eQo+IGNvbnN0cnVjdGVkIEdFTSBjb250ZXh0IGFuZCBiZWdpbiB1c2luZyBpdCBiZWZvcmUgaXQg d2FzIHJlYWR5LCB0byBtdWNoCj4gaGlsYXJpdHkuIENsb3NlIHRoaXMgd2luZG93IG9mIG9wcG9y dHVuaXR5IGJ5IGxpZnRpbmcgdGhlIHJlZ2lzdHJhdGlvbiBvZgo+IHRoZSBjb250ZXh0IHdpdGgg dXNlcnNwYWNlICh0aGUgaW5zZXJ0aW9uIG9mIHRoZSBjb250ZXh0IGludG8gdGhlIGZpbHAncwo+ IGlkcikgdG8gdGhlIHZlcnkgZW5kIG9mIHRoZSBDT05URVhUX0NSRUFURSBpb2N0bC4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBD YzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDE0MyArKysrKysr KysrKy0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAg ICAgICB8ICAgNyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAg ICAgICAgIHwgICA4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9w YWdlcy5jICAgfCAgIDIgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYyB8ICAxMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2d0dC5jIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMgfCAgMTcgKystCj4gICA3IGZpbGVzIGNoYW5nZWQsIDExNiBpbnNlcnRp b25zKCspLCA3NSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gaW5kZXggZDc3NmQ0MzcwN2UwLi41ZGYzZDQyM2VjNmMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTMzNywxNSArMzM3LDEzIEBA IHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ICAgfQo+ICAgCj4gICBzdGF0aWMgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKgo+IC1fX2NyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAtCQkgICAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQo+ ICtfX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IHsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+IC0JaW50IHJldDsKPiAgIAlp bnQgaTsKPiAgIAo+ICAgCWN0eCA9IGt6YWxsb2Moc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsK PiAtCWlmIChjdHggPT0gTlVMTCkKPiArCWlmICghY3R4KQo+ICAgCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKPiAgIAo+ICAgCWtyZWZfaW5pdCgmY3R4LT5yZWYpOwo+IEBAIC0zNjIsMjkgKzM2 MCw2IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAgCUlOSVRfTElTVF9IRUFEKCZjdHgtPmhhbmRsZXNfbGlzdCk7Cj4gICAJSU5JVF9M SVNUX0hFQUQoJmN0eC0+aHdfaWRfbGluayk7Cj4gICAKPiAtCS8qIERlZmF1bHQgY29udGV4dCB3 aWxsIG5ldmVyIGhhdmUgYSBmaWxlX3ByaXYgKi8KPiAtCXJldCA9IERFRkFVTFRfQ09OVEVYVF9I QU5ETEU7Cj4gLQlpZiAoZmlsZV9wcml2KSB7Cj4gLQkJcmV0ID0gaWRyX2FsbG9jKCZmaWxlX3By aXYtPmNvbnRleHRfaWRyLCBjdHgsCj4gLQkJCQlERUZBVUxUX0NPTlRFWFRfSEFORExFLCAwLCBH RlBfS0VSTkVMKTsKPiAtCQlpZiAocmV0IDwgMCkKPiAtCQkJZ290byBlcnJfbHV0Owo+IC0JfQo+ IC0JY3R4LT51c2VyX2hhbmRsZSA9IHJldDsKPiAtCj4gLQljdHgtPmZpbGVfcHJpdiA9IGZpbGVf cHJpdjsKPiAtCWlmIChmaWxlX3ByaXYpIHsKPiAtCQljdHgtPnBpZCA9IGdldF90YXNrX3BpZChj dXJyZW50LCBQSURUWVBFX1BJRCk7Cj4gLQkJY3R4LT5uYW1lID0ga2FzcHJpbnRmKEdGUF9LRVJO RUwsICIlc1slZF0vJXgiLAo+IC0JCQkJICAgICAgY3VycmVudC0+Y29tbSwKPiAtCQkJCSAgICAg IHBpZF9ucihjdHgtPnBpZCksCj4gLQkJCQkgICAgICBjdHgtPnVzZXJfaGFuZGxlKTsKPiAtCQlp ZiAoIWN0eC0+bmFtZSkgewo+IC0JCQlyZXQgPSAtRU5PTUVNOwo+IC0JCQlnb3RvIGVycl9waWQ7 Cj4gLQkJfQo+IC0JfQo+IC0KPiAgIAkvKiBOQjogTWFyayBhbGwgc2xpY2VzIGFzIG5lZWRpbmcg YSByZW1hcCBzbyB0aGF0IHdoZW4gdGhlIGNvbnRleHQgZmlyc3QKPiAgIAkgKiBsb2FkcyBpdCB3 aWxsIHJlc3RvcmUgd2hhdGV2ZXIgcmVtYXAgc3RhdGUgYWxyZWFkeSBleGlzdHMuIElmIHRoZXJl Cj4gICAJICogaXMgbm8gcmVtYXAgaW5mbywgaXQgd2lsbCBiZSBhIE5PUC4gKi8KPiBAQCAtNDAx LDI1ICszNzYsMTAgQEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gICAJCWN0eC0+aGFuZ190aW1lc3RhbXBbaV0gPSBqaWZmaWVzIC0gQ09O VEVYVF9GQVNUX0hBTkdfSklGRklFUzsKPiAgIAo+ICAgCXJldHVybiBjdHg7Cj4gLQo+IC1lcnJf cGlkOgo+IC0JcHV0X3BpZChjdHgtPnBpZCk7Cj4gLQlpZHJfcmVtb3ZlKCZmaWxlX3ByaXYtPmNv bnRleHRfaWRyLCBjdHgtPnVzZXJfaGFuZGxlKTsKPiAtZXJyX2x1dDoKPiAtCWNvbnRleHRfY2xv c2UoY3R4KTsKPiAtCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lk IF9fZGVzdHJveV9od19jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gLQkJ CQkgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQo+IC17Cj4gLQlpZHJf cmVtb3ZlKCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyLCBjdHgtPnVzZXJfaGFuZGxlKTsKPiAtCWNv bnRleHRfY2xvc2UoY3R4KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICoKPiAtaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IC0JCQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3By aXYpCj4gK2k5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCj4g QEAgLTQyOCwxOCArMzg4LDE4IEBAIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkvKiBSZWFwIHRoZSBtb3N0IHN0YWxlIGNvbnRl eHQgKi8KPiAgIAljb250ZXh0c19mcmVlX2ZpcnN0KGRldl9wcml2KTsKPiAgIAo+IC0JY3R4ID0g X19jcmVhdGVfaHdfY29udGV4dChkZXZfcHJpdiwgZmlsZV9wcml2KTsKPiArCWN0eCA9IF9fY3Jl YXRlX2NvbnRleHQoZGV2X3ByaXYpOwo+ICAgCWlmIChJU19FUlIoY3R4KSkKPiAgIAkJcmV0dXJu IGN0eDsKPiAgIAo+ICAgCWlmIChIQVNfRlVMTF9QUEdUVChkZXZfcHJpdikpIHsKPiAgIAkJc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0Owo+ICAgCj4gLQkJcHBndHQgPSBpOTE1X3BwZ3R0X2Ny ZWF0ZShkZXZfcHJpdiwgZmlsZV9wcml2KTsKPiArCQlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRl KGRldl9wcml2KTsKPiAgIAkJaWYgKElTX0VSUihwcGd0dCkpIHsKPiAgIAkJCURSTV9ERUJVR19E UklWRVIoIlBQR1RUIHNldHVwIGZhaWxlZCAoJWxkKVxuIiwKPiAgIAkJCQkJIFBUUl9FUlIocHBn dHQpKTsKPiAtCQkJX19kZXN0cm95X2h3X2NvbnRleHQoY3R4LCBmaWxlX3ByaXYpOwo+ICsJCQlj b250ZXh0X2Nsb3NlKGN0eCk7Cj4gICAJCQlyZXR1cm4gRVJSX0NBU1QocHBndHQpOwo+ICAgCQl9 Cj4gICAKPiBAQCAtNDc1LDcgKzQzNSw3IEBAIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2d2dChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiBFUlJfUFRS KHJldCk7Cj4gICAKPiAtCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHRvX2k5MTUoZGV2 KSwgTlVMTCk7Cj4gKwljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dCh0b19pOTE1KGRldikp Owo+ICAgCWlmIChJU19FUlIoY3R4KSkKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiBAQCAtNTExLDcg KzQ3MSw3IEBAIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgaW50IHByaW8pCj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eDsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChp OTE1LCBOVUxMKTsKPiArCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUpOwo+ICAg CWlmIChJU19FUlIoY3R4KSkKPiAgIAkJcmV0dXJuIGN0eDsKPiAgIAo+IEBAIC02MjUsMjUgKzU4 NSw3OSBAQCBzdGF0aWMgaW50IGNvbnRleHRfaWRyX2NsZWFudXAoaW50IGlkLCB2b2lkICpwLCB2 b2lkICpkYXRhKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBpbnQgZ2VtX2Nv bnRleHRfcmVnaXN0ZXIoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiArCQkJCXN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2KQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKCkFz c2VydCBzdHJ1Y3QgbXV0ZXggZm9yIG5vdz8gV2l0aG91dCBpdCB1c2Vyc3BhY2UgY2FuIHN0aWxs IHNlZSBub3QgCmZ1bGx5IGluaXRpYWxpemVkIGN0eC4gSXQgaXMga2luZCBvZiB0d28gYXJndW1l bnRzIGJ1dCBnb29kIGZvciAKZG9jdW1lbnRhdGlvbiBuZXZlcnRoZWxlc3MgSSB0aGluay4KCj4g KwljdHgtPnBpZCA9IGdldF90YXNrX3BpZChjdXJyZW50LCBQSURUWVBFX1BJRCk7Cj4gKwo+ICsJ aWYgKGN0eC0+cHBndHQpCj4gKwkJY3R4LT5wcGd0dC0+dm0uZmlsZSA9IGZwcml2OwoKVGhpbmtp bmcgYWJvdXQgaTkxNV92bV9zZXRfZmlsZSh2bSwgZnByaXYpLCBub3Qgc3VyZS4KCj4gKwo+ICsJ LyogQW5kIChuZWFybHkpIGZpbmFsbHkgZXhwb3NlIG91cnNlbHZlcyB0byB1c2Vyc3BhY2Ugdmlh IHRoZSBpZHIgKi8KPiArCXJldCA9IGlkcl9hbGxvYygmZnByaXYtPmNvbnRleHRfaWRyLCBjdHgs Cj4gKwkJCURFRkFVTFRfQ09OVEVYVF9IQU5ETEUsIDAsIEdGUF9LRVJORUwpOwo+ICsJaWYgKHJl dCA8IDApCj4gKwkJZ290byBlcnJfcGlkOwo+ICsKPiArCWN0eC0+ZmlsZV9wcml2ID0gZnByaXY7 Cj4gKwljdHgtPnVzZXJfaGFuZGxlID0gcmV0Owo+ICsKPiArCWN0eC0+bmFtZSA9IGthc3ByaW50 ZihHRlBfS0VSTkVMLCAiJXNbJWRdLyV4IiwKPiArCQkJICAgICAgY3VycmVudC0+Y29tbSwKPiAr CQkJICAgICAgcGlkX25yKGN0eC0+cGlkKSwKPiArCQkJICAgICAgY3R4LT51c2VyX2hhbmRsZSk7 Cj4gKwlpZiAoIWN0eC0+bmFtZSkgewo+ICsJCXJldCA9IC1FTk9NRU07Cj4gKwkJZ290byBlcnJf aWRyOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX2lkcjoKPiArCWlkcl9yZW1v dmUoJmZwcml2LT5jb250ZXh0X2lkciwgY3R4LT51c2VyX2hhbmRsZSk7Cj4gKwljdHgtPmZpbGVf cHJpdiA9IE5VTEw7Cj4gK2Vycl9waWQ6Cj4gKwlwdXRfcGlkKGN0eC0+cGlkKTsKPiArCWN0eC0+ cGlkID0gTlVMTDsKClRvIGF2b2lkIHRoaXMsIGFuZCBpbiB0aGUgc3Bpcml0IG9mIHRoZSBwYXRj aCwgSSB0aGluayBpdCB3b3VsZCBiZSAKYmV0dGVyIHRvIGp1c3Qgc3RvcmUgZXZlcnl0aGluZyBp biBsb2NhbHMgYW5kIGFzc2lnbiB0byBjdHggbWVtYmVycyBvbmNlIApwYXNzZWQgdGhlIHBvaW50 IG9mIGZhaWx1cmUuCgo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAgIGludCBpOTE1X2dlbV9j b250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQkgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl ICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4Owo+ICsJaW50IGVycjsKPiAgIAo+ICAgCWlkcl9pbml0KCZmaWxlX3ByaXYtPmNv bnRleHRfaWRyKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2KTsKPiAt CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJY3R4ID0gaTkx NV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSk7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gLQkJ aWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwo+IC0JCXJldHVybiBQVFJfRVJS KGN0eCk7Cj4gKwkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICsJCWdvdG8gZXJyOwo+ICAgCX0KPiAg IAo+ICsJZXJyID0gZ2VtX2NvbnRleHRfcmVnaXN0ZXIoY3R4LCBmaWxlX3ByaXYpOwo+ICsJaWYg KGVycikKPiArCQlnb3RvIGVycl9jdHg7Cj4gKwo+ICsJR0VNX0JVR19PTihjdHgtPnVzZXJfaGFu ZGxlICE9IERFRkFVTFRfQ09OVEVYVF9IQU5ETEUpOwo+ICAgCUdFTV9CVUdfT04oaTkxNV9nZW1f Y29udGV4dF9pc19rZXJuZWwoY3R4KSk7Cj4gICAKPiArCW11dGV4X3VubG9jaygmaTkxNS0+ZHJt LnN0cnVjdF9tdXRleCk7Cj4gKwo+ICAgCXJldHVybiAwOwo+ICsKPiArZXJyX2N0eDoKPiArCWNv bnRleHRfY2xvc2UoY3R4KTsKPiArZXJyOgo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiArCWlkcl9kZXN0cm95KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyKTsKPiAr CXJldHVybiBQVFJfRVJSKGN0eCk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgaTkxNV9nZW1fY29udGV4 dF9jbG9zZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gQEAgLTgzNSwxNyArODQ5LDI4IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAtCWN0eCA9 IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGVfcHJpdik7Cj4gLQltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCWlmIChJU19FUlIoY3R4KSkKPiAtCQlyZXR1cm4g UFRSX0VSUihjdHgpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSk7Cj4g KwlpZiAoSVNfRVJSKGN0eCkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGN0eCk7Cj4gKwkJZ290byBl cnJfdW5sb2NrOwo+ICsJfQo+ICAgCj4gLQlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRfaXNf a2VybmVsKGN0eCkpOwo+ICsJcmV0ID0gZ2VtX2NvbnRleHRfcmVnaXN0ZXIoY3R4LCBmaWxlX3By aXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVycl9jdHg7Cj4gKwo+ICsJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAKPiAgIAlhcmdzLT5jdHhfaWQgPSBjdHgtPnVzZXJf aGFuZGxlOwo+ICAgCURSTV9ERUJVRygiSFcgY29udGV4dCAlZCBjcmVhdGVkXG4iLCBhcmdzLT5j dHhfaWQpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfY3R4Ogo+ICsJY29udGV4dF9j bG9zZShjdHgpOwo+ICtlcnJfdW5sb2NrOgo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gICBpbnQgaTkxNV9nZW1fY29udGV4 dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gQEAg LTg3MCw3ICs4OTUsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBv dXQ7Cj4gICAKPiAtCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZV9wcml2KTsKPiArCWlk cl9yZW1vdmUoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIsIGN0eC0+dXNlcl9oYW5kbGUpOwo+ICsJ Y29udGV4dF9jbG9zZShjdHgpOwo+ICsKPiAgIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPiAgIAo+ICAgb3V0Ogo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5k ZXggYjgwNTVjOGQ0ZTcxLi5iOWUwZTNhMDAyMjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IEBAIC0yMDY5LDggKzIwNjksNyBAQCBfX2h3X3BwZ3R0X2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIH0KPiAgIAo+ICAgc3RydWN0IGk5MTVfaHdf cHBndHQgKgo+IC1pOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKPiAtCQkgIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2KQo+ICtpOTE1X3Bw Z3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIHsKPiAgIAlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7Cj4gICAKPiBAQCAtMjA3OCw4ICsyMDc3LDYgQEAgaTkx NV9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJaWYgKElT X0VSUihwcGd0dCkpCj4gICAJCXJldHVybiBwcGd0dDsKPiAgIAo+IC0JcHBndHQtPnZtLmZpbGUg PSBmcHJpdjsKPiAtCj4gICAJdHJhY2VfaTkxNV9wcGd0dF9jcmVhdGUoJnBwZ3R0LT52bSk7Cj4g ICAKPiAgIAlyZXR1cm4gcHBndHQ7Cj4gQEAgLTI2NTcsNyArMjY1NCw3IEBAIGludCBpOTE1X2dl bV9pbml0X2FsaWFzaW5nX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAg CXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQlwcGd0 dCA9IGk5MTVfcHBndHRfY3JlYXRlKGk5MTUsIEVSUl9QVFIoLUVQRVJNKSk7Cj4gKwlwcGd0dCA9 IGk5MTVfcHBndHRfY3JlYXRlKGk5MTUpOwoKdm0uZmlsZSBjaGFuZ2VzIHRvIE5VTEwgbm93LCBi dXQgYWZ0ZXIgc29tZSBncmVwcGluZyBJIGRpZCBub3QgZmluZCB0aGF0IAppdCBtYXR0ZXJzLgoK PiAgIAlpZiAoSVNfRVJSKHBwZ3R0KSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIocHBndHQpOwo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCAzNWYyMWEyYWUzNmMuLmI3 NmFiNGMyYTBlNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTYw MywxNSArNjAzLDE3IEBAIGludCBpOTE1X2dlbV9pbml0X2dndHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiAgIHZvaWQgaTkxNV9nZ3R0X2NsZWFudXBfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgIAo+ICAgaW50IGk5MTVfcHBndHRfaW5pdF9o dyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12b2lkIGk5MTVfcHBndHRf cmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7Cj4gLXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICppOTE1 X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkJ c3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZnByaXYpOwo+ICsKPiArc3RydWN0IGk5MTVf aHdfcHBndHQgKmk5MTVfcHBndHRfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gICB2b2lkIGk5MTVfcHBndHRfY2xvc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pOwo+ICt2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7Cj4g Kwo+ICAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBndHRfZ2V0KHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCkKPiAgIHsKPiAgIAlpZiAocHBndHQpCj4gICAJCWtyZWZfZ2V0KCZwcGd0dC0+ cmVmKTsKPiAgIH0KPiArCj4gICBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9wcGd0dF9wdXQoc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAgewo+ICAgCWlmIChwcGd0dCkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBpbmRleCAyMThjZmMzNjFk ZTMuLmM1YzhiYTZjMDU5ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaHVnZV9wYWdlcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2h1Z2VfcGFnZXMuYwo+IEBAIC0xNzEwLDcgKzE3MTAsNyBAQCBpbnQgaTkxNV9nZW1faHVnZV9w YWdlX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICAJbWt3cml0ZV9kZXZpY2VfaW5mbyhkZXZfcHJp diktPnBwZ3R0X3NpemUgPSA0ODsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVhdGUoZGV2X3ByaXYsIEVS Ul9QVFIoLUVOT0RFVikpOwo+ICsJcHBndHQgPSBpOTE1X3BwZ3R0X2NyZWF0ZShkZXZfcHJpdik7 Cj4gICAJaWYgKElTX0VSUihwcGd0dCkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihwcGd0dCk7Cj4g ICAJCWdvdG8gb3V0X3VubG9jazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBmMThjNzhlYmZmMDcuLjRkYzk2ZTI4ZDg5 ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f Y29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYwo+IEBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3Bfc3dpdGNo KHZvaWQgKmFyZykKPiAgIAl9Cj4gICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgbmN0eDsgbisrKSB7 Cj4gLQkJY3R4W25dID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVy X3ByaXYpOwo+ICsJCWN0eFtuXSA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxlKTsKPiAgIAkJaWYg KElTX0VSUihjdHhbbl0pKSB7Cj4gICAJCQllcnIgPSBQVFJfRVJSKGN0eFtuXSk7Cj4gICAJCQln b3RvIG91dF91bmxvY2s7Cj4gQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgaW50IGlndF9jdHhf ZXhlYyh2b2lkICphcmcpCj4gICAJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJ CXVuc2lnbmVkIGludCBpZDsKPiAgIAo+IC0JCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0 KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCQljdHggPSBsaXZlX2NvbnRleHQoaTkxNSwg ZmlsZSk7Cj4gICAJCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihjdHgp Owo+ICAgCQkJZ290byBvdXRfdW5sb2NrOwo+IEBAIC05NjAsNyArOTYwLDcgQEAgX19pZ3RfY3R4 X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAgIAltdXRleF9sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRl X2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4ID0gbGl2ZV9jb250ZXh0 KGk5MTUsIGZpbGUpOwo+ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQlyZXQgPSBQVFJfRVJS KGN0eCk7Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtMTA3MCw3ICsxMDcwLDcgQEAgc3Rh dGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykKPiAgIAlpZiAoZXJyKQo+ICAgCQln b3RvIG91dF91bmxvY2s7Cj4gICAKPiAtCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5 MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCWN0eCA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxl KTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICAg CQlnb3RvIG91dF91bmxvY2s7Cj4gQEAgLTEzOTAsMTMgKzEzOTAsMTMgQEAgc3RhdGljIGludCBp Z3Rfdm1faXNvbGF0aW9uKHZvaWQgKmFyZykKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dF91 bmxvY2s7Cj4gICAKPiAtCWN0eF9hID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmls ZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4X2EgPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7Cj4g ICAJaWYgKElTX0VSUihjdHhfYSkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihjdHhfYSk7Cj4gICAJ CWdvdG8gb3V0X3VubG9jazsKPiAgIAl9Cj4gICAKPiAtCWN0eF9iID0gaTkxNV9nZW1fY3JlYXRl X2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4X2IgPSBsaXZlX2NvbnRl eHQoaTkxNSwgZmlsZSk7Cj4gICAJaWYgKElTX0VSUihjdHhfYikpIHsKPiAgIAkJZXJyID0gUFRS X0VSUihjdHhfYik7Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggODI2ZmQ1MWMzMzFlLi4wMTA4 NGY2YjRmYjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2d0dC5jCj4gQEAgLTEwMTAsNyArMTAxMCw3IEBAIHN0YXRpYyBpbnQgZXhlcmNpc2VfcHBn dHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlyZXR1cm4gUFRSX0VS UihmaWxlKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKPiAtCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVhdGUoZGV2X3ByaXYsIGZpbGUtPmRyaXZlcl9w cml2KTsKPiArCXBwZ3R0ID0gaTkxNV9wcGd0dF9jcmVhdGUoZGV2X3ByaXYpOwo+ICAgCWlmIChJ U19FUlIocHBndHQpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocHBndHQpOwo+ICAgCQlnb3RvIG91 dF91bmxvY2s7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRl eHQuYwo+IGluZGV4IDhlZmE2ODkyYzZjZC4uMWNjOGJlNzMyNDM1IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IEBAIC04OCw5ICs4OCwy NCBAQCB2b2lkIG1vY2tfaW5pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKPiAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiAgIGxpdmVfY29udGV4dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGRybV9maWxlICpmaWxlKQoKTGl2ZSBjb250 ZXh0LCBtb2NrIGNvbnRleHQgaWRlbnRpdHkgY3Jpc2lzLiA6KSBOb3RoaW5nIHRvIGFjdCB1cG9u LCBqdXN0IAphbXVzaW5nIG15c2VsZi4uCgo+ICAgewo+ICsJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eDsKPiArCWludCBlcnI7Cj4gKwo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUt PmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQlyZXR1cm4gaTkxNV9nZW1fY3JlYXRlX2NvbnRl eHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2Nv bnRleHQoaTkxNSk7Cj4gKwlpZiAoSVNfRVJSKGN0eCkpCj4gKwkJcmV0dXJuIGN0eDsKPiArCj4g KwllcnIgPSBnZW1fY29udGV4dF9yZWdpc3RlcihjdHgsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiAr CWlmIChlcnIpCj4gKwkJZ290byBlcnJfY3R4Owo+ICsKPiArCXJldHVybiBjdHg7Cj4gKwo+ICtl cnJfY3R4Ogo+ICsJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKPiArCXJldHVybiBFUlJfUFRS KGVycik7CgpOZXZlciB0b28gZWFybHkgZm9yIG9uaW9uIHVud2luZCwgeWVzPyA6KQoKPiAgIH0K PiAgIAo+ICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+IAoKTG9va3MgZ29vZC4gQ2xlYW51 cCBvZiBnZW1fY29udGV4dF9yZWdpc3RlciB0byB1c2UgbG9jYWwgd291bGQgbWFrZSBtZSAKY29t cGxldGVseSBoYXBweS4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4