From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 16/20] drm/i915: Support to create write combined type vmaps Date: Fri, 12 Aug 2016 11:49:13 +0100 Message-ID: <57ADA9A9.7090801@linux.intel.com> References: <1470983123-22127-1-git-send-email-akash.goel@intel.com> <1470983123-22127-17-git-send-email-akash.goel@intel.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 ESMTP id 48A636EB15 for ; Fri, 12 Aug 2016 10:49:15 +0000 (UTC) In-Reply-To: <1470983123-22127-17-git-send-email-akash.goel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: akash.goel@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzA4LzE2IDA3OjI1LCBha2FzaC5nb2VsQGludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPgo+IHZtYXBzIGhhcyBhIHBy b3Zpc2lvbiBmb3IgY29udHJvbGxpbmcgdGhlIHBhZ2UgcHJvdGVjdGlvbiBiaXRzLCB3aXRoIHdo aWNoCj4gd2UgY2FuIHVzZSB0byBjb250cm9sIHRoZSBtYXBwaW5nIHR5cGUsIGUuZy4gV0IsIFdD LCBVQyBvciBldmVuIFdULgo+IFRvIGFsbG93IHRoZSBjYWxsZXIgdG8gY2hvb3NlIHRoZWlyIG1h cHBpbmcgdHlwZSwgd2UgYWRkIGEgcGFyYW1ldGVyIHRvCj4gaTkxNV9nZW1fb2JqZWN0X3Bpbl9t YXAgLSBidXQgd2Ugc3RpbGwgb25seSBhbGxvdyBvbmUgdm1hcCB0byBiZSBjYWNoZWQKPiBwZXIg b2JqZWN0LiBJZiB0aGUgb2JqZWN0IGlzIGN1cnJlbnRseSBub3QgcGlubmVkLCB0aGVuIHdlIHJl Y3JlYXRlIHRoZQo+IHByZXZpb3VzIHZtYXAgd2l0aCB0aGUgbmV3IGFjY2VzcyB0eXBlLCBidXQg aWYgaXQgd2FzIHBpbm5lZCB3ZSByZXBvcnQgYW4KPiBlcnJvci4gVGhpcyBlZmZlY3RpdmVseSBs aW1pdHMgdGhlIGFjY2VzcyB2aWEgaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAgdG8gYQo+IHNpbmds ZSBtYXBwaW5nIHR5cGUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgb2JqZWN0LiBOb3QgdXN1YWxs eSBhIHByb2JsZW0sCj4gYnV0IHNvbWV0aGluZyB0byBiZSBhd2FyZSBvZiB3aGVuIHNldHRpbmcg dXAgdGhlIG9iamVjdCdzIHZtYXAuCj4KPiBXZSB3aWxsIHdhbnQgdG8gdmFyeSB0aGUgYWNjZXNz IHR5cGUgdG8gZW5hYmxlIFdDIG1hcHBpbmdzIG9mIHJpbmdidWZmZXIKPiBhbmQgY29udGV4dCBv YmplY3RzIG9uICFsbGMgcGxhdGZvcm1zLCBhcyB3ZWxsIGFzIG90aGVyIG9iamVjdHMgd2hlcmUg d2UKPiBuZWVkIGNvaGVyZW50IGFjY2VzcyB0byB0aGUgR1BVJ3MgcGFnZXMgd2l0aG91dCBnb2lu ZyB0aHJvdWdoIHRoZSBHVFQKPgo+IHYyOiBSZW1vdmUgdGhlIHJlZHVuZGFudCBicmFjZXMgYXJv dW5kIHBpbiBjb3VudCBjaGVjayBhbmQgZml4IHRoZSBtYXJrZXIKPiAgICAgIGluIGRvY3VtZW50 YXRpb24gKENocmlzKQo+Cj4gdjM6Cj4gLSBBZGQgYSBuZXcgZW51bSBmb3IgdGhlIHZtYWxsb2Mg bWFwcGluZyB0eXBlICYgcGFzcyB0aGF0IGFzIGFuIGFyZ3VtZW50IHRvCj4gICAgaTkxNV9vYmpl Y3RfcGluX21hcC4gKFR2cnRrbykKPiAtIFVzZSBQQUdFX01BU0sgdG8gZXh0cmFjdCBvciBmaWx0 ZXIgdGhlIG1hcHBpbmcgdHlwZSBpbmZvIGFuZCByZW1vdmUgYQo+ICAgIHN1cGVyZmx1b3VzIEJV R19PTi4oVHZydGtvKQo+Cj4gdjQ6Cj4gLSBSZW5hbWUgdGhlIGVudW1zIGFuZCBjbGVhbiB1cCB0 aGUgcGluX21hcCBmdW5jdGlvbi4gKENocmlzKQo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gU2lnbmVkLW9mZi1ieTogQWthc2ggR29l bCA8YWthc2guZ29lbEBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgICAgfCAgOSArKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAgICAgICAgICAgIHwgNTggKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAgICAgfCAgMiArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgIDIgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8ICA4ICsrLS0tCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgfCAgMiArLQo+ICAg NiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDRiZDM3OTAuLjY2MDM4MTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtODM0LDYgKzgzNCwxMSBAQCBlbnVtIGk5MTVfY2FjaGVf bGV2ZWwgewo+ICAgCUk5MTVfQ0FDSEVfV1QsIC8qIGhzdzpndDNlIFdyaXRlVGhyb3VnaCBmb3Ig c2Nhbm91dHMgKi8KPiAgIH07Cj4KPiArZW51bSBpOTE1X21hcF90eXBlIHsKPiArCUk5MTVfTUFQ X1dCID0gMCwKPiArCUk5MTVfTUFQX1dDLAo+ICt9Owo+ICsKPiAgIHN0cnVjdCBpOTE1X2N0eF9o YW5nX3N0YXRzIHsKPiAgIAkvKiBUaGlzIGNvbnRleHQgaGFkIGJhdGNoIHBlbmRpbmcgd2hlbiBo YW5nIHdhcyBkZWNsYXJlZCAqLwo+ICAgCXVuc2lnbmVkIGJhdGNoX3BlbmRpbmc7Cj4gQEAgLTMx NTAsNiArMzE1NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5waW5f cGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIC8qKgo+ICAgICogaTkx NV9nZW1fb2JqZWN0X3Bpbl9tYXAgLSByZXR1cm4gYSBjb250aWd1b3VzIG1hcHBpbmcgb2YgdGhl IGVudGlyZSBvYmplY3QKPiAgICAqIEBvYmogLSB0aGUgb2JqZWN0IHRvIG1hcCBpbnRvIGtlcm5l bCBhZGRyZXNzIHNwYWNlCj4gKyAqIEBtYXBfdHlwZSAtIHdoZXRoZXIgdGhlIHZtYWxsb2MgbWFw cGluZyBzaG91bGQgYmUgdXNpbmcgV0Mgb3IgV0IgcGdwcm90X3QKPiAgICAqCj4gICAgKiBDYWxs cyBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKCkgdG8gcHJldmVudCByZWFwaW5nIG9mIHRoZSBv YmplY3Qncwo+ICAgICogcGFnZXMgYW5kIHRoZW4gcmV0dXJucyBhIGNvbnRpZ3VvdXMgbWFwcGlu ZyBvZiB0aGUgYmFja2luZyBzdG9yYWdlIGludG8KPiBAQCAtMzE2MSw3ICszMTY3LDggQEAgc3Rh dGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgICogUmV0dXJucyB0aGUgcG9pbnRlciB0aHJvdWdoIHdo aWNoIHRvIGFjY2VzcyB0aGUgbWFwcGVkIG9iamVjdCwgb3IgYW4KPiAgICAqIEVSUl9QVFIoKSBv biBlcnJvci4KPiAgICAqLwo+IC12b2lkICpfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gK3ZvaWQgKl9fbXVzdF9j aGVjayBpOTE1X2dlbV9vYmplY3RfcGluX21hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+ICsJCQkJCWVudW0gaTkxNV9tYXBfdHlwZSBtYXBfdHlwZSk7Cj4KPiAgIC8qKgo+ICAg ICogaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcCAtIHJlbGVhc2VzIGFuIGVhcmxpZXIgbWFwcGlu Zwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDAzNTQ4ZGIuLjdkYWJiYzNmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTIwNzcsMTAgKzIwNzcsMTEgQEAgaTkxNV9n ZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAg CWxpc3RfZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKPgo+ICAgCWlmIChvYmotPm1hcHBpbmcpIHsK PiAtCQlpZiAoaXNfdm1hbGxvY19hZGRyKG9iai0+bWFwcGluZykpCj4gLQkJCXZ1bm1hcChvYmot Pm1hcHBpbmcpOwo+ICsJCXZvaWQgKnB0ciA9ICh2b2lkICopKCh1aW50cHRyX3Qpb2JqLT5tYXBw aW5nICYgUEFHRV9NQVNLKTsKPiArCQlpZiAoaXNfdm1hbGxvY19hZGRyKHB0cikpCj4gKwkJCXZ1 bm1hcChwdHIpOwo+ICAgCQllbHNlCj4gLQkJCWt1bm1hcChrbWFwX3RvX3BhZ2Uob2JqLT5tYXBw aW5nKSk7Cj4gKwkJCWt1bm1hcChrbWFwX3RvX3BhZ2UocHRyKSk7Cj4gICAJCW9iai0+bWFwcGlu ZyA9IE5VTEw7Cj4gICAJfQo+Cj4gQEAgLTIyNTMsNyArMjI1NCw4IEBAIGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIH0KPgo+ICAg LyogVGhlICdtYXBwaW5nJyBwYXJ0IG9mIGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKCkgYmVsb3cg Ki8KPiAtc3RhdGljIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9tYXAoY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiArc3RhdGljIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9tYXAo Y29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJCSBlbnVtIGk5MTVf bWFwX3R5cGUgdHlwZSkKPiAgIHsKPiAgIAl1bnNpZ25lZCBsb25nIG5fcGFnZXMgPSBvYmotPmJh c2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2d0ID0gb2JqLT5w YWdlczsKPiBAQCAtMjI2Myw5ICsyMjY1LDEwIEBAIHN0YXRpYyB2b2lkICppOTE1X2dlbV9vYmpl Y3RfbWFwKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJc3RydWN0 IHBhZ2UgKipwYWdlcyA9IHN0YWNrX3BhZ2VzOwo+ICAgCXVuc2lnbmVkIGxvbmcgaSA9IDA7Cj4g ICAJdm9pZCAqYWRkcjsKPiArCWJvb2wgdXNlX3djID0gKHR5cGUgPT0gSTkxNV9NQVBfV0MpOwo+ Cj4gICAJLyogQSBzaW5nbGUgcGFnZSBjYW4gYWx3YXlzIGJlIGttYXBwZWQgKi8KPiAtCWlmIChu X3BhZ2VzID09IDEpCj4gKwlpZiAobl9wYWdlcyA9PSAxICYmICF1c2Vfd2MpCj4gICAJCXJldHVy biBrbWFwKHNnX3BhZ2Uoc2d0LT5zZ2wpKTsKPgo+ICAgCWlmIChuX3BhZ2VzID4gQVJSQVlfU0la RShzdGFja19wYWdlcykpIHsKPiBAQCAtMjI4MSw3ICsyMjg0LDggQEAgc3RhdGljIHZvaWQgKmk5 MTVfZ2VtX29iamVjdF9tYXAoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK PiAgIAkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBwYWdlcyAq Lwo+ICAgCUdFTV9CVUdfT04oaSAhPSBuX3BhZ2VzKTsKPgo+IC0JYWRkciA9IHZtYXAocGFnZXMs IG5fcGFnZXMsIDAsIFBBR0VfS0VSTkVMKTsKPiArCWFkZHIgPSB2bWFwKHBhZ2VzLCBuX3BhZ2Vz LCBWTV9OT19HVUFSRCwKClVucmVsZWF0ZWQgYW5kIHVubWVudGlvbmVkIGNoYW5nZSB0byBubyBn dWFyZCBwYWdlLiBCZXN0IHRvIHJlbW92ZSBJTUhPLiAKQ2FuIGtlZXAgdGhlIFJCIGluIHRoYXQg Y2FzZS4KCj4gKwkJICAgIHVzZV93YyA/IHBncHJvdF93cml0ZWNvbWJpbmUoUEFHRV9LRVJORUxf SU8pIDogUEFHRV9LRVJORUwpOwo+Cj4gICAJaWYgKHBhZ2VzICE9IHN0YWNrX3BhZ2VzKQo+ICAg CQlkcm1fZnJlZV9sYXJnZShwYWdlcyk7Cj4gQEAgLTIyOTAsMTEgKzIyOTQsMTYgQEAgc3RhdGlj IHZvaWQgKmk5MTVfZ2VtX29iamVjdF9tYXAoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPiAgIH0KPgo+ICAgLyogZ2V0LCBwaW4sIGFuZCBtYXAgdGhlIHBhZ2VzIG9mIHRo ZSBvYmplY3QgaW50byBrZXJuZWwgc3BhY2UgKi8KPiAtdm9pZCAqaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiArdm9pZCAqaTkxNV9nZW1f b2JqZWN0X3Bpbl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJICAg ICAgZW51bSBpOTE1X21hcF90eXBlIHR5cGUpCj4gICB7Cj4gKwllbnVtIGk5MTVfbWFwX3R5cGUg aGFzX3R5cGU7Cj4gKwlib29sIHBpbm5lZDsKPiArCXZvaWQgKnB0cjsKPiAgIAlpbnQgcmV0Owo+ Cj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmb2JqLT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsK PiArCUdFTV9CVUdfT04oKG9iai0+b3BzLT5mbGFncyAmIEk5MTVfR0VNX09CSkVDVF9IQVNfU1RS VUNUX1BBR0UpID09IDApOwo+Cj4gICAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlcyhv YmopOwo+ICAgCWlmIChyZXQpCj4gQEAgLTIzMDIsMTUgKzIzMTEsMzggQEAgdm9pZCAqaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPgo+ICAg CWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPgo+IC0JaWYgKCFvYmotPm1hcHBpbmcp IHsKPiAtCQlvYmotPm1hcHBpbmcgPSBpOTE1X2dlbV9vYmplY3RfbWFwKG9iaik7Cj4gLQkJaWYg KCFvYmotPm1hcHBpbmcpIHsKPiAtCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7 Cj4gLQkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsJcGlubmVkID0gb2JqLT5wYWdlc19w aW5fY291bnQgPiAxOwo+ICsJcHRyID0gKHZvaWQgKikoKHVpbnRwdHJfdClvYmotPm1hcHBpbmcg JiBQQUdFX01BU0spOwo+ICsJaGFzX3R5cGUgPSAodWludHB0cl90KW9iai0+bWFwcGluZyAmIH5Q QUdFX01BU0s7Cj4gKwo+ICsJaWYgKHB0ciAmJiBoYXNfdHlwZSAhPSB0eXBlKSB7Cj4gKwkJaWYg KHBpbm5lZCkgewo+ICsJCQlyZXQgPSAtRUJVU1k7Cj4gKwkJCWdvdG8gZXJyOwo+ICsJCX0KPiAr Cj4gKwkJaWYgKGlzX3ZtYWxsb2NfYWRkcihwdHIpKQo+ICsJCQl2dW5tYXAocHRyKTsKPiArCQll bHNlCj4gKwkJCWt1bm1hcChrbWFwX3RvX3BhZ2UocHRyKSk7Cj4gKwkJcHRyID0gb2JqLT5tYXBw aW5nID0gTlVMTDsKPiArCX0KPiArCj4gKwlpZiAoIXB0cikgewo+ICsJCXB0ciA9IGk5MTVfZ2Vt X29iamVjdF9tYXAob2JqLCB0eXBlKTsKPiArCQlpZiAoIXB0cikgewo+ICsJCQlyZXQgPSAtRU5P TUVNOwo+ICsJCQlnb3RvIGVycjsKPiAgIAkJfQo+ICsKPiArCQlvYmotPm1hcHBpbmcgPSAodm9p ZCAqKSgodWludHB0cl90KXB0ciB8IHR5cGUpOwo+ICAgCX0KPgo+IC0JcmV0dXJuIG9iai0+bWFw cGluZzsKPiArCXJldHVybiBwdHI7Cj4gKwo+ICtlcnI6Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5w aW5fcGFnZXMob2JqKTsKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gICB9Cj4KPiAgIHN0YXRp YyB2b2lkCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiBpbmRleCBjNjBh OGQ1Yi4uMTAyNjViYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9kbWFidWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5j Cj4gQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCAqaTkxNV9nZW1fZG1hYnVmX3ZtYXAo c3RydWN0IGRtYV9idWYgKmRtYV9idWYpCj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPgo+IC0JYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaik7Cj4gKwlh ZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7Cj4gICAJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4KPiAgIAlyZXR1cm4gYWRkcjsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4gaW5kZXggMDQxY2Y2OC4u MWQ1OGQzNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJt aXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKPiBAQCAtMTE3OCw3ICsxMTc4LDcgQEAgc3RhdGljIGludCBndWNfY3JlYXRlX2xvZ19leHRy YXMoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+Cj4gICAJaWYgKCFndWMtPmxvZy5idWZfYWRkcikg ewo+ICAgCQkvKiBDcmVhdGUgYSB2bWFsbG9jIG1hcHBpbmcgb2YgbG9nIGJ1ZmZlciBwYWdlcyAq Lwo+IC0JCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5sb2cub2JqKTsKPiAr CQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGd1Yy0+bG9nLm9iaiwgSTkxNV9NQVBf V0IpOwo+ICAgCQlpZiAoSVNfRVJSKHZhZGRyKSkgewo+ICAgCQkJcmV0ID0gUFRSX0VSUih2YWRk cik7Cj4gICAJCQlEUk1fRVJST1IoIkNvdWxkbid0IG1hcCBsb2cgYnVmZmVyIHBhZ2VzICVkXG4i LCByZXQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggYzdmNGI2NC4uYzI0YWMz OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTc4MCw3ICs3ODAsNyBAQCBz dGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4gICAJaWYgKHJldCkKPiAgIAkJZ290byBlcnI7Cj4KPiAtCXZhZGRyID0gaTkxNV9nZW1f b2JqZWN0X3Bpbl9tYXAoY2UtPnN0YXRlKTsKPiArCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoY2UtPnN0YXRlLCBJOTE1X01BUF9XQik7Cj4gICAJaWYgKElTX0VSUih2YWRkcikpIHsK PiAgIAkJcmV0ID0gUFRSX0VSUih2YWRkcik7Cj4gICAJCWdvdG8gdW5waW5fY3R4X29iajsKPiBA QCAtMTc1NSw3ICsxNzU1LDcgQEAgbHJjX3NldHVwX2h3cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCj4gICAJLyogVGhlIEhXU1AgaXMgcGFydCBvZiB0aGUgZGVmYXVsdCBjb250ZXh0 IG9iamVjdCBpbiBMUkMgbW9kZS4gKi8KPiAgIAllbmdpbmUtPnN0YXR1c19wYWdlLmdmeF9hZGRy ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGRjdHhfb2JqKSArCj4gICAJCQkJICAgICAgIExS Q19QUEhXU1BfUE4gKiBQQUdFX1NJWkU7Cj4gLQlod3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21h cChkY3R4X29iaik7Cj4gKwlod3MgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChkY3R4X29iaiwg STkxNV9NQVBfV0IpOwo+ICAgCWlmIChJU19FUlIoaHdzKSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIo aHdzKTsKPiAgIAllbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9IGh3cyArIExSQ19QUEhX U1BfUE4gKiBQQUdFX1NJWkU7Cj4gQEAgLTE5NjgsNyArMTk2OCw3IEBAIHBvcHVsYXRlX2xyX2Nv bnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgIAkJcmV0dXJuIHJldDsKPiAg IAl9Cj4KPiAtCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoY3R4X29iaik7Cj4gKwl2 YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGN0eF9vYmosIEk5MTVfTUFQX1dCKTsKPiAg IAlpZiAoSVNfRVJSKHZhZGRyKSkgewo+ICAgCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKPiAgIAkJ RFJNX0RFQlVHX0RSSVZFUigiQ291bGQgbm90IG1hcCBvYmplY3QgcGFnZXMhICglZClcbiIsIHJl dCk7Cj4gQEAgLTIxODksNyArMjE4OSw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXNldChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCWlmICghY3R4X29iaikKPiAg IAkJCWNvbnRpbnVlOwo+Cj4gLQkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChjdHhf b2JqKTsKPiArCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGN0eF9vYmosIEk5MTVf TUFQX1dCKTsKPiAgIAkJaWYgKFdBUk5fT04oSVNfRVJSKHZhZGRyKSkpCj4gICAJCQljb250aW51 ZTsKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCBlOGZh MjZjLi42OWVjNWRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu Ywo+IEBAIC0xOTUxLDcgKzE5NTEsNyBAQCBpbnQgaW50ZWxfcmluZ19waW4oc3RydWN0IGludGVs X3JpbmcgKnJpbmcpCj4gICAJCWlmIChyZXQpCj4gICAJCQlnb3RvIGVycl91bnBpbjsKPgo+IC0J CWFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmopOwo+ICsJCWFkZHIgPSBpOTE1X2dl bV9vYmplY3RfcGluX21hcChvYmosIEk5MTVfTUFQX1dCKTsKPiAgIAkJaWYgKElTX0VSUihhZGRy KSkgewo+ICAgCQkJcmV0ID0gUFRSX0VSUihhZGRyKTsKPiAgIAkJCWdvdG8gZXJyX3VucGluOwo+ CgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K ClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==