From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH v7 07/19] drm/i915/gen8: implement alloc/free for 4lvl Date: Fri, 31 Jul 2015 09:50:26 +0530 Message-ID: <55BAF78A.2020103@intel.com> References: <1438187043-34267-8-git-send-email-michel.thierry@intel.com> <1438250729-22955-1-git-send-email-michel.thierry@intel.com> 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 ESMTP id 5AED16E66D for ; Thu, 30 Jul 2015 21:20:32 -0700 (PDT) In-Reply-To: <1438250729-22955-1-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQgdGhlIHBhdGNoICYgaXQgbG9va3MgZmluZS4KUmV2aWV3ZWQtYnk6ICJBa2FzaCBH b2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4iCgoKT24gNy8zMC8yMDE1IDM6MzUgUE0sIE1pY2hl bCBUaGllcnJ5IHdyb3RlOgo+IFBNTDQgaGFzIG5vIHNwZWNpYWwgYXR0cmlidXRlcywgYW5kIHRo ZXJlIHdpbGwgYWx3YXlzIGJlIGEgUE1MNC4KPiBTbyBzaW1wbHkgaW5pdGlhbGl6ZSBpdCBhdCBj cmVhdGlvbiwgYW5kIGRlc3Ryb3kgaXQgYXQgdGhlIGVuZC4KPgo+IFRoZSBjb2RlIGZvciA0bHZs IGlzIGFibGUgdG8gY2FsbCBpbnRvIHRoZSBleGlzdGluZyAzbHZsIHBhZ2UgdGFibGUgY29kZQo+ IHRvIGhhbmRsZSBhbGwgb2YgdGhlIGxvd2VyIGxldmVscy4KPgo+IHYyOiBSZXR1cm4gc29tZXRo aW5nIGF0IHRoZSBlbmQgb2YgZ2VuOF9hbGxvY192YV9yYW5nZV80bHZsIHRvIGtlZXAgdGhlCj4g Y29tcGlsZXIgaGFwcHkuIEFuZCBkZWZpbmUgcmV0IG9ubHkgaW4gb25lIHBsYWNlLgo+IFVwZGF0 ZWQgZ2VuOF9wcGd0dF91bm1hcF9wYWdlcyBhbmQgZ2VuOF9wcGd0dF9mcmVlIHRvIGhhbmRsZSA0 bHZsLgo+IHYzOiBVc2UgaTkxNV9kbWFfdW5tYXBfc2luZ2xlIGluc3RlYWQgb2YgcGNpIEFQSS4g Rml4IGEKPiBjb3VwbGUgb2YgaW5jb3JyZWN0IGNoZWNrcyB3aGVuIHVubWFwcGluZyBwZHAgYW5k IHBkIHBhZ2VzIChBa2FzaCkuCj4gdjQ6IENhbGwgX19wZHBfZmluaSBhbHNvIGZvciAzMmIgUFBH VFQuIENsZWFuIHVwIGFsbG9jX3BkcCBwYXJhbSBsaXN0Lgo+IHY1OiBQcmV2ZW50IChoYXJtbGVz cykgb3V0IG9mIHJhbmdlIGFjY2VzcyBpbiBnZW44X2Zvcl9lYWNoX3BtbDRlLgo+IHY2OiBTaW1w bGlmeSBhbGxvY192bWFfcmFuZ2VfNGx2bCBhbmQgZ2VuOF9wcGd0dF9pbml0X2NvbW1vbiBlcnJv cgo+IHBhdGhzLiAoQWthc2gpCj4gdjc6IFJlYmFzZSwgcy9nZW44X3BwZ3R0X2ZyZWVfKi9nZW44 X3BwZ3R0X2NsZWFudXBfKi8uCj4gdjg6IENoYW5nZSBsb2NhdGlvbiBvZiBwbWw0X2luaXQvZmlu aS4gSXQgd2lsbCBtYWtlIG5leHQgcGF0Y2hlcwo+IGNsZWFuZXIuCj4gdjk6IFJlYmFzZSBhZnRl ciBNaWthJ3MgcHBndHQgY2xlYW51cCAvIHNjcmF0Y2ggbWVyZ2UgcGF0Y2ggc2VyaWVzLCB3aGls ZQo+IHRyeWluZyB0byByZXVzZSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZvciBwZHAgYWxsb2MuIHBt bDRfaW5pdC9maW5pCj4gcmVwbGFjZWQgYnkgc2V0dXAvY2xlYW51cF9weCBtYWNyb3MuCj4gdjEw OiBSZWJhc2UgYWZ0ZXIgTWlrYSdzIG1lcmdlZCBwcGd0dCBjbGVhbnVwIHBhdGNoIHNlcmllcy4K PiB2MTE6IFJlYmFzZSBhZnRlciBmaW5hbCBtZXJnZWQgdmVyc2lvbiBvZiBNaWthJ3MgcHBndHQv c2NyYXRjaAo+IHBhdGNoZXMuCj4gdjEyOiBGaXggcGRwZSBzdGFydCB2YWx1ZSBpbiB0cmFjZSAo QWthc2gpCj4gdjEzOiBEZWZpbmUgYWxsIDRsdmwgZnVuY3Rpb25zIGluIHRoaXMgcGF0Y2ggZGly ZWN0bHksIGluc3RlYWQgb2YKPiBwcmV2aW91cyBwYXRjaGVzLCBhZGQgaTkxNV9wYWdlX2RpcmVj dG9yeV9wb2ludGVyX2VudHJ5X2FsbG9jIGhlcmUsCj4gdXNlIHRlc3RfYml0IHRvIGRldGVjdCB3 aGVuIHBkcCBpcyBhbHJlYWR5IGFsbG9jYXRlZCAoQWthc2gpLgo+IHYxNDogTW92ZSBwZHAgYWxs b2NhdGlvbiBpbnRvIGEgbmV3IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJwb2ludGVycwo+IGZ1 bnRpb24sIGFzIHdlIGRvIGZvciBwZHMgYW5kIHB0czsgbW92ZSBwZCBhbmQgcGRwIHNldHVwIGZ1 bmN0aW9ucyB0bwo+IHRoaXMgcGF0Y2ggKEFrYXNoKS4KPiB2MTU6IEFkZGVkIGtmcmVlKHBkcCkg ZnJvbSBwcmV2aW91cyBwYXRjaCB0byB0aGlzIChBa2FzaCkuCj4KPiBDYzogQWthc2ggR29lbCA8 YWthc2guZ29lbEBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5A YndpZGF3c2submV0Pgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhp ZXJyeUBpbnRlbC5jb20+ICh2MispCj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyB8IDIzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIHwgIDE1ICsrLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oICAgfCAgIDggKysKPiAgIDMgZmlsZXMgY2hhbmdl ZCwgMjQ2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMKPiBpbmRleCAzMjg4MTU0Li5jNDk4ZWFhIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjEwLDYgKzIxMCw5IEBAIHN0YXRpYyBnZW44X3Bk ZV90IGdlbjhfcGRlX2VuY29kZShjb25zdCBkbWFfYWRkcl90IGFkZHIsCj4gICAJcmV0dXJuIHBk ZTsKPiAgIH0KPgo+ICsjZGVmaW5lIGdlbjhfcGRwZV9lbmNvZGUgZ2VuOF9wZGVfZW5jb2RlCj4g KyNkZWZpbmUgZ2VuOF9wbWw0ZV9lbmNvZGUgZ2VuOF9wZGVfZW5jb2RlCj4gKwo+ICAgc3RhdGlj IGdlbjZfcHRlX3Qgc25iX3B0ZV9lbmNvZGUoZG1hX2FkZHJfdCBhZGRyLAo+ICAgCQkJCSBlbnVt IGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsCj4gICAJCQkJIGJvb2wgdmFsaWQsIHUzMiB1bnVzZWQp Cj4gQEAgLTU1OSwxMCArNTYyLDczIEBAIHN0YXRpYyB2b2lkIF9fcGRwX2Zpbmkoc3RydWN0IGk5 MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwKQo+ICAgCXBkcC0+cGFnZV9kaXJlY3Rvcnkg PSBOVUxMOwo+ICAgfQo+Cj4gK3N0YXRpYyBzdHJ1Y3QKPiAraTkxNV9wYWdlX2RpcmVjdG9yeV9w b2ludGVyICphbGxvY19wZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0 IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOwo+ICsJaW50IHJldCA9IC1FTk9NRU07 Cj4gKwo+ICsJV0FSTl9PTighVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikpOwo+ICsKPiArCXBk cCA9IGt6YWxsb2Moc2l6ZW9mKCpwZHApLCBHRlBfS0VSTkVMKTsKPiArCWlmICghcGRwKQo+ICsJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXJldCA9IF9fcGRwX2luaXQoZGV2LCBw ZHApOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZhaWxfYml0bWFwOwo+ICsKPiArCXJldCA9IHNl dHVwX3B4KGRldiwgcGRwKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBmYWlsX3BhZ2VfbTsKPiAr Cj4gKwlyZXR1cm4gcGRwOwo+ICsKPiArZmFpbF9wYWdlX206Cj4gKwlfX3BkcF9maW5pKHBkcCk7 Cj4gK2ZhaWxfYml0bWFwOgo+ICsJa2ZyZWUocGRwKTsKPiArCj4gKwlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgZnJlZV9wZHAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgIAkJICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAp Cj4gICB7Cj4gICAJX19wZHBfZmluaShwZHApOwo+ICsJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdU VChkZXYpKSB7Cj4gKwkJY2xlYW51cF9weChkZXYsIHBkcCk7Cj4gKwkJa2ZyZWUocGRwKTsKPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeShz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gKwkJCSAgc3RydWN0IGk5MTVfcGFnZV9kaXJl Y3RvcnlfcG9pbnRlciAqcGRwLAo+ICsJCQkgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpw ZCwKPiArCQkJICBpbnQgaW5kZXgpCj4gK3sKPiArCWdlbjhfcHBndHRfcGRwZV90ICpwYWdlX2Rp cmVjdG9yeXBvOwo+ICsKPiArCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNl LmRldikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXBhZ2VfZGlyZWN0b3J5cG8gPSBrbWFwX3B4KHBk cCk7Cj4gKwlwYWdlX2RpcmVjdG9yeXBvW2luZGV4XSA9IGdlbjhfcGRwZV9lbmNvZGUocHhfZG1h KHBkKSwgSTkxNV9DQUNIRV9MTEMpOwo+ICsJa3VubWFwX3B4KHBwZ3R0LCBwYWdlX2RpcmVjdG9y eXBvKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9y eV9wb2ludGVyKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiArCQkJCSAgc3RydWN0IGk5 MTVfcG1sNCAqcG1sNCwKPiArCQkJCSAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRl ciAqcGRwLAo+ICsJCQkJICBpbnQgaW5kZXgpCj4gK3sKPiArCWdlbjhfcHBndHRfcG1sNGVfdCAq cGFnZW1hcCA9IGttYXBfcHgocG1sNCk7Cj4gKwo+ICsJV0FSTl9PTighVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpOwo+ICsJcGFnZW1hcFtpbmRleF0gPSBnZW44X3BtbDRl X2VuY29kZShweF9kbWEocGRwKSwgSTkxNV9DQUNIRV9MTEMpOwo+ICsJa3VubWFwX3B4KHBwZ3R0 LCBwYWdlbWFwKTsKPiAgIH0KPgo+ICAgLyogQnJvYWR3ZWxsIFBhZ2UgRGlyZWN0b3J5IFBvaW50 ZXIgRGVzY3JpcHRvcnMgKi8KPiBAQCAtNzg1LDEyICs4NTEsOSBAQCBzdGF0aWMgdm9pZCBnZW44 X2ZyZWVfc2NyYXRjaChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIAlmcmVlX3Nj cmF0Y2hfcGFnZShkZXYsIHZtLT5zY3JhdGNoX3BhZ2UpOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lk IGdlbjhfcHBndHRfY2xlYW51cChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiArCQkJCSAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCj4gICB7 Cj4gLQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+IC0JCWNvbnRhaW5lcl9vZih2bSwg c3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+IC0Jc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnlfcG9pbnRlciAqcGRwID0gJnBwZ3R0LT5wZHA7IC8qIEZJWE1FOiA0OGIgKi8KPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7Cj4gICAJaW50IGk7Cj4KPiAgIAlm b3JfZWFjaF9zZXRfYml0KGksIHBkcC0+dXNlZF9wZHBlcywgSTkxNV9QRFBFU19QRVJfUERQKGRl dikpIHsKPiBAQCAtODAyLDYgKzg2NSwzMSBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFu dXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICAJfQo+Cj4gICAJZnJlZV9wZHAo ZGV2LCBwZHApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2 bChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCWZv cl9lYWNoX3NldF9iaXQoaSwgcHBndHQtPnBtbDQudXNlZF9wbWw0ZXMsIEdFTjhfUE1MNEVTX1BF Ul9QTUw0KSB7Cj4gKwkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wbWw0LnBkcHNbaV0pKQo+ICsJCQlj b250aW51ZTsKPiArCj4gKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2 LCBwcGd0dC0+cG1sNC5wZHBzW2ldKTsKPiArCX0KPiArCj4gKwljbGVhbnVwX3B4KHBwZ3R0LT5i YXNlLmRldiwgJnBwZ3R0LT5wbWw0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2VuOF9wcGd0 dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICt7Cj4gKwlzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICsJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVf aHdfcHBndHQsIGJhc2UpOwo+ICsKPiArCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0 LT5iYXNlLmRldikpCj4gKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2 LCAmcHBndHQtPnBkcCk7Cj4gKwllbHNlCj4gKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwocHBn dHQpOwo+Cj4gICAJZ2VuOF9mcmVlX3NjcmF0Y2godm0pOwo+ICAgfQo+IEBAIC05MjMsNiArMTAx MSw2MCBAQCB1bndpbmRfb3V0Ogo+ICAgCXJldHVybiAtRU5PTUVNOwo+ICAgfQo+Cj4gKy8qKgo+ ICsgKiBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlycG9pbnRlcnMoKSAtIEFsbG9jYXRlIHBkcHMg Zm9yIFZBIHJhbmdlLgo+ICsgKiBAdm06CU1hc3RlciB2bSBzdHJ1Y3R1cmUuCj4gKyAqIEBwbWw0 OglQYWdlIG1hcCBsZXZlbCA0IGZvciB0aGlzIGFkZHJlc3MgcmFuZ2UuCj4gKyAqIEBzdGFydDoJ U3RhcnRpbmcgdmlydHVhbCBhZGRyZXNzIHRvIGJlZ2luIGFsbG9jYXRpb25zLgo+ICsgKiBAbGVu Z3RoOglTaXplIG9mIHRoZSBhbGxvY2F0aW9ucy4KPiArICogQG5ld19wZHBzOglCaXRtYXAgc2V0 IGJ5IGZ1bmN0aW9uIHdpdGggbmV3IGFsbG9jYXRpb25zLiBMaWtlbHkgdXNlZCBieSB0aGUKPiAr ICoJCWNhbGxlciB0byBmcmVlIG9uIGVycm9yLgo+ICsgKgo+ICsgKiBBbGxvY2F0ZSB0aGUgcmVx dWlyZWQgbnVtYmVyIG9mIHBhZ2UgZGlyZWN0b3J5IHBvaW50ZXJzLiBFeHRyZW1lbHkgc2ltaWxh ciB0bwo+ICsgKiBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoKSBhbmQgZ2VuOF9w cGd0dF9hbGxvY19wYWdldGFicygpLgo+ICsgKiBUaGUgbWFpbiBkaWZmZXJlbmNlIGlzIGhlcmUg d2UgYXJlIGxpbWl0ZWQgYnkgdGhlIHBtbDQgYm91bmRhcnkgKGluc3RlYWQgb2YKPiArICogdGhl IHBhZ2UgZGlyZWN0b3J5IHBvaW50ZXIpLgo+ICsgKgo+ICsgKiBSZXR1cm46IDAgaWYgc3VjY2Vz czsgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtzdGF0aWMgaW50Cj4g K2dlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJwb2ludGVycyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKPiArCQkJCSAgc3RydWN0IGk5MTVfcG1sNCAqcG1sNCwKPiArCQkJCSAgdWludDY0 X3Qgc3RhcnQsCj4gKwkJCQkgIHVpbnQ2NF90IGxlbmd0aCwKPiArCQkJCSAgdW5zaWduZWQgbG9u ZyAqbmV3X3BkcHMpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2Owo+ ICsJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOwo+ICsJdWludDY0X3Qg dGVtcDsKPiArCXVpbnQzMl90IHBtbDRlOwo+ICsKPiArCVdBUk5fT04oIWJpdG1hcF9lbXB0eShu ZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpKTsKPiArCj4gKwlnZW44X2Zvcl9lYWNoX3Bt bDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcG1sNGUpIHsKPiArCQlpZiAoIXRl c3RfYml0KHBtbDRlLCBwbWw0LT51c2VkX3BtbDRlcykpIHsKPiArCQkJcGRwID0gYWxsb2NfcGRw KGRldik7Cj4gKwkJCWlmIChJU19FUlIocGRwKSkKPiArCQkJCWdvdG8gdW53aW5kX291dDsKPiAr Cj4gKwkJCXBtbDQtPnBkcHNbcG1sNGVdID0gcGRwOwo+ICsJCQlfX3NldF9iaXQocG1sNGUsIG5l d19wZHBzKTsKPiArCQkJdHJhY2VfaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5X2Fs bG9jKHZtLAo+ICsJCQkJCQkJCSAgICAgIHBtbDRlLAo+ICsJCQkJCQkJCSAgICAgIHN0YXJ0LAo+ ICsJCQkJCQkJCSAgICAgIEdFTjhfUE1MNEVfU0hJRlQpOwo+ICsJCX0KPiArCX0KPiArCj4gKwly ZXR1cm4gMDsKPiArCj4gK3Vud2luZF9vdXQ6Cj4gKwlmb3JfZWFjaF9zZXRfYml0KHBtbDRlLCBu ZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BNTDQpCj4gKwkJZnJlZV9wZHAoZGV2LCBwbWw0LT5w ZHBzW3BtbDRlXSk7Cj4gKwo+ICsJcmV0dXJuIC1FTk9NRU07Cj4gK30KPiArCj4gICBzdGF0aWMg dm9pZAo+ICAgZnJlZV9nZW44X3RlbXBfYml0bWFwcyh1bnNpZ25lZCBsb25nICpuZXdfcGRzLCB1 bnNpZ25lZCBsb25nICoqbmV3X3B0cywKPiAgIAkJICAgICAgIHVpbnQzMl90IHBkcGVzKQo+IEBA IC05ODQsMTQgKzExMjYsMTUgQEAgc3RhdGljIHZvaWQgbWFya190bGJzX2RpcnR5KHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgIAlwcGd0dC0+cGRfZGlydHlfcmluZ3MgPSBJTlRFTF9J TkZPKHBwZ3R0LT5iYXNlLmRldiktPnJpbmdfbWFzazsKPiAgIH0KPgo+IC1zdGF0aWMgaW50IGdl bjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCSAg ICAgICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQo+ICtzdGF0aWMgaW50IGdlbjhf YWxsb2NfdmFfcmFuZ2VfM2x2bChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJ CSAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHAsCj4gKwkJCQkgICAg dWludDY0X3Qgc3RhcnQsCj4gKwkJCQkgICAgdWludDY0X3QgbGVuZ3RoKQo+ICAgewo+ICAgCXN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4gICAJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0 IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+ICAgCXVuc2lnbmVkIGxvbmcgKm5ld19wYWdlX2RpcnMs ICoqbmV3X3BhZ2VfdGFibGVzOwo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSB2bS0+ZGV2 Owo+IC0Jc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwID0gJnBwZ3R0LT5w ZHA7IC8qIEZJWE1FOiA0OGIgKi8KPiAgIAlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQ7 Cj4gICAJY29uc3QgdWludDY0X3Qgb3JpZ19zdGFydCA9IHN0YXJ0Owo+ICAgCWNvbnN0IHVpbnQ2 NF90IG9yaWdfbGVuZ3RoID0gbGVuZ3RoOwo+IEBAIC0xMDcyLDYgKzEyMTUsNyBAQCBzdGF0aWMg aW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4K PiAgIAkJa3VubWFwX3B4KHBwZ3R0LCBwYWdlX2RpcmVjdG9yeSk7Cj4gICAJCV9fc2V0X2JpdChw ZHBlLCBwZHAtPnVzZWRfcGRwZXMpOwo+ICsJCWdlbjhfc2V0dXBfcGFnZV9kaXJlY3RvcnkocHBn dHQsIHBkcCwgcGQsIHBkcGUpOwo+ICAgCX0KPgo+ICAgCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMo bmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVzLCBwZHBlcyk7Cj4gQEAgLTEwOTIsNiArMTIz Niw2OCBAQCBlcnJfb3V0Ogo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4KPiArc3RhdGljIGludCBn ZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4g KwkJCQkgICAgc3RydWN0IGk5MTVfcG1sNCAqcG1sNCwKPiArCQkJCSAgICB1aW50NjRfdCBzdGFy dCwKPiArCQkJCSAgICB1aW50NjRfdCBsZW5ndGgpCj4gK3sKPiArCURFQ0xBUkVfQklUTUFQKG5l d19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCk7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQgPQo+ICsJCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNl KTsKPiArCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcDsKPiArCXVpbnQ2 NF90IHRlbXAsIHBtbDRlOwo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJLyogRG8gdGhlIHBtbDQg YWxsb2NhdGlvbnMgZmlyc3QsIHNvIHdlIGRvbid0IG5lZWQgdG8gdHJhY2sgdGhlIG5ld2x5Cj4g KwkgKiBhbGxvY2F0ZWQgdGFibGVzIGJlbG93IHRoZSBwZHAgKi8KPiArCWJpdG1hcF96ZXJvKG5l d19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCk7Cj4gKwo+ICsJLyogVGhlIHBhZ2VkaXJlY3Rv cnkgYW5kIHBhZ2V0YWJsZSBhbGxvY2F0aW9ucyBhcmUgZG9uZSBpbiB0aGUgc2hhcmVkIDMKPiAr CSAqIGFuZCA0IGxldmVsIGNvZGUuIEp1c3QgYWxsb2NhdGUgdGhlIHBkcHMuCj4gKwkgKi8KPiAr CXJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJwb2ludGVycyh2bSwgcG1sNCwgc3RhcnQs IGxlbmd0aCwKPiArCQkJCQkJbmV3X3BkcHMpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+ICsKPiArCVdBUk4oYml0bWFwX3dlaWdodChuZXdfcGRwcywgR0VOOF9QTUw0RVNfUEVSX1BN TDQpID4gMiwKPiArCSAgICAgIlRoZSBhbGxvY2F0aW9uIGhhcyBzcGFubmVkIG1vcmUgdGhhbiA1 MTJHQi4gIgo+ICsJICAgICAiSXQgaXMgaGlnaGx5IGxpa2VseSB0aGlzIGlzIGluY29ycmVjdC4i KTsKPiArCj4gKwlnZW44X2Zvcl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwg dGVtcCwgcG1sNGUpIHsKPiArCQlXQVJOX09OKCFwZHApOwo+ICsKPiArCQlyZXQgPSBnZW44X2Fs bG9jX3ZhX3JhbmdlXzNsdmwodm0sIHBkcCwgc3RhcnQsIGxlbmd0aCk7Cj4gKwkJaWYgKHJldCkK PiArCQkJZ290byBlcnJfb3V0Owo+ICsKPiArCQlnZW44X3NldHVwX3BhZ2VfZGlyZWN0b3J5X3Bv aW50ZXIocHBndHQsIHBtbDQsIHBkcCwgcG1sNGUpOwo+ICsJfQo+ICsKPiArCWJpdG1hcF9vcihw bWw0LT51c2VkX3BtbDRlcywgbmV3X3BkcHMsIHBtbDQtPnVzZWRfcG1sNGVzLAo+ICsJCSAgR0VO OF9QTUw0RVNfUEVSX1BNTDQpOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArZXJyX291dDoKPiAr CWZvcl9lYWNoX3NldF9iaXQocG1sNGUsIG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCkK PiArCQlnZW44X3BwZ3R0X2NsZWFudXBfM2x2bCh2bS0+ZGV2LCBwbWw0LT5wZHBzW3BtbDRlXSk7 Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCBnZW44X2FsbG9jX3Zh X3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkgICAgICAgdWludDY0 X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbmd0aCkKPiArewo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0ID0KPiArCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNl KTsKPiArCj4gKwlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKHZtLT5kZXYpKQo+ICsJCXJldHVy biBnZW44X2FsbG9jX3ZhX3JhbmdlXzRsdmwodm0sICZwcGd0dC0+cG1sNCwgc3RhcnQsIGxlbmd0 aCk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwgJnBw Z3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgpOwo+ICt9Cj4gKwo+ICAgLyoKPiAgICAqIEdFTjggbGVn YWN5IHBwZ3R0IHByb2dyYW1taW5nIGlzIGFjY29tcGxpc2hlZCB0aHJvdWdoIGEgbWF4IDQgUERQ IHJlZ2lzdGVycwo+ICAgICogd2l0aCBhIG5ldCBlZmZlY3QgcmVzZW1ibGluZyBhIDItbGV2ZWwg cGFnZSB0YWJsZSBpbiBub3JtYWwgeDg2IHRlcm1zLiBFYWNoCj4gQEAgLTExMTcsOSArMTMyMywx NCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQpCj4KPiAgIAlwcGd0dC0+c3dpdGNoX21tID0gZ2VuOF9tbV9zd2l0Y2g7Cj4KPiAtCWlmICgh VVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPiAtCQlyZXQgPSBfX3Bk cF9pbml0KGZhbHNlLCAmcHBndHQtPnBkcCk7Cj4gKwlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RU KHBwZ3R0LT5iYXNlLmRldikpIHsKPiArCQlyZXQgPSBzZXR1cF9weChwcGd0dC0+YmFzZS5kZXYs ICZwcGd0dC0+cG1sNCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBmcmVlX3NjcmF0Y2g7Cj4K PiArCQlwcGd0dC0+YmFzZS50b3RhbCA9IDFVTEwgPDwgNDg7Cj4gKwl9IGVsc2Ugewo+ICsJCXJl dCA9IF9fcGRwX2luaXQoZmFsc2UsICZwcGd0dC0+cGRwKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJ CWdvdG8gZnJlZV9zY3JhdGNoOwo+Cj4gQEAgLTExMzEsMTAgKzEzNDIsMTAgQEAgc3RhdGljIGlu dCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAgCQkJICog MkdpQikuCj4gICAJCQkgKi8KPiAgIAkJCXBwZ3R0LT5iYXNlLnRvdGFsID0gdG9faTkxNShwcGd0 dC0+YmFzZS5kZXYpLT5ndHQuYmFzZS50b3RhbDsKPiAtCX0gZWxzZSB7Cj4gLQkJcHBndHQtPmJh c2UudG90YWwgPSAxVUxMIDw8IDQ4Owo+IC0JCXJldCA9IC1FUEVSTTsgLyogTm90IHlldCBpbXBs ZW1lbnRlZCAqLwo+IC0JCWdvdG8gZnJlZV9zY3JhdGNoOwo+ICsKPiArCQl0cmFjZV9pOTE1X3Bh Z2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnlfYWxsb2MoJnBwZ3R0LT5iYXNlLAo+ICsJCQkJCQkJ ICAgICAgMCwgMCwKPiArCQkJCQkJCSAgICAgIEdFTjhfUE1MNEVfU0hJRlQpOwo+ICAgCX0KPgo+ ICAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggMDRi YzY2Zi4uMTFkNDRiMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAg LTM5LDYgKzM5LDggQEAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZTsKPiAgIHR5cGVkZWYg dWludDMyX3QgZ2VuNl9wdGVfdDsKPiAgIHR5cGVkZWYgdWludDY0X3QgZ2VuOF9wdGVfdDsKPiAg IHR5cGVkZWYgdWludDY0X3QgZ2VuOF9wZGVfdDsKPiArdHlwZWRlZiB1aW50NjRfdCBnZW44X3Bw Z3R0X3BkcGVfdDsKPiArdHlwZWRlZiB1aW50NjRfdCBnZW44X3BwZ3R0X3BtbDRlX3Q7Cj4KPiAg ICNkZWZpbmUgZ3R0X3RvdGFsX2VudHJpZXMoZ3R0KSAoKGd0dCkuYmFzZS50b3RhbCA+PiBQQUdF X1NISUZUKQo+Cj4gQEAgLTk1LDYgKzk3LDcgQEAgdHlwZWRlZiB1aW50NjRfdCBnZW44X3BkZV90 Owo+ICAgICovCj4gICAjZGVmaW5lIEdFTjhfUE1MNEVTX1BFUl9QTUw0CQk1MTIKPiAgICNkZWZp bmUgR0VOOF9QTUw0RV9TSElGVAkJMzkKPiArI2RlZmluZSBHRU44X1BNTDRFX01BU0sJCQkoR0VO OF9QTUw0RVNfUEVSX1BNTDQgLSAxKQo+ICAgI2RlZmluZSBHRU44X1BEUEVfU0hJRlQJCQkzMAo+ ICAgLyogTkI6IEdFTjhfUERQRV9NQVNLIGlzIHVudHJ1ZSBmb3IgMzJiIHBsYXRmb3JtcywgYnV0 IGl0IGhhcyBubyBpbXBhY3Qgb24gMzJiIHBhZ2UKPiAgICAqIHRhYmxlcyAqLwo+IEBAIC00NjUs NiArNDY4LDE1IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9wZGVfaW5kZXgodWludDMy X3QgYWRkcikKPiAgIAkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwJCQkJCVwKPiAgIAkg ICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQo+Cj4gKyNkZWZpbmUgZ2VuOF9mb3Jf ZWFjaF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpCVwKPiArCWZv ciAoaXRlciA9IGdlbjhfcG1sNGVfaW5kZXgoc3RhcnQpOwlcCj4gKwkgICAgIHBkcCA9IChwbWw0 KS0+cGRwc1tpdGVyXSwgXAo+ICsJICAgICBsZW5ndGggPiAwICYmIGl0ZXIgPCBHRU44X1BNTDRF U19QRVJfUE1MNDsgXAo+ICsJICAgICBpdGVyKyssCQkJCVwKPiArCSAgICAgdGVtcCA9IEFMSUdO KHN0YXJ0KzEsIDFVTEwgPDwgR0VOOF9QTUw0RV9TSElGVCkgLSBzdGFydCwJXAo+ICsJICAgICB0 ZW1wID0gbWluKHRlbXAsIGxlbmd0aCksCQkJCQlcCj4gKwkgICAgIHN0YXJ0ICs9IHRlbXAsIGxl bmd0aCAtPSB0ZW1wKQo+ICsKPiAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuOF9wdGVfaW5k ZXgodWludDY0X3QgYWRkcmVzcykKPiAgIHsKPiAgIAlyZXR1cm4gaTkxNV9wdGVfaW5kZXgoYWRk cmVzcywgR0VOOF9QREVfU0hJRlQpOwo+IEBAIC00ODIsOCArNDk0LDcgQEAgc3RhdGljIGlubGlu ZSB1aW50MzJfdCBnZW44X3BkcGVfaW5kZXgodWludDY0X3QgYWRkcmVzcykKPgo+ICAgc3RhdGlj IGlubGluZSB1aW50MzJfdCBnZW44X3BtbDRlX2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCj4gICB7 Cj4gLQlXQVJOX09OKDEpOyAvKiBGb3IgNjRCICovCj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiAo YWRkcmVzcyA+PiBHRU44X1BNTDRFX1NISUZUKSAmIEdFTjhfUE1MNEVfTUFTSzsKPiAgIH0KPgo+ ICAgc3RhdGljIGlubGluZSBzaXplX3QgZ2VuOF9wdGVfY291bnQodWludDY0X3QgYWRkcmVzcywg dWludDY0X3QgbGVuZ3RoKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBpbmRleCBmMjMw ZDc2Li5lNmI1Yzc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJh Y2UuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAo+IEBAIC0yMjEs NiArMjIxLDE0IEBAIERFRklORV9FVkVOVF9QUklOVChpOTE1X3B4X2VudHJ5LCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5X2VudHJ5X2FsbG9jLAo+ICAgCQkJICAgICBfX2VudHJ5LT52bSwgX19lbnRyeS0+ cHgsIF9fZW50cnktPnN0YXJ0LCBfX2VudHJ5LT5lbmQpCj4gICApOwo+Cj4gK0RFRklORV9FVkVO VF9QUklOVChpOTE1X3B4X2VudHJ5LCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnlf YWxsb2MsCj4gKwkJICAgVFBfUFJPVE8oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sIHUz MiBwbWw0ZSwgdTY0IHN0YXJ0LCB1NjQgcG1sNGVfc2hpZnQpLAo+ICsJCSAgIFRQX0FSR1Modm0s IHBtbDRlLCBzdGFydCwgcG1sNGVfc2hpZnQpLAo+ICsKPiArCQkgICBUUF9wcmludGsoInZtPSVw LCBwbWw0ZT0lZCAoMHglbGx4LTB4JWxseCkiLAo+ICsJCQkgICAgIF9fZW50cnktPnZtLCBfX2Vu dHJ5LT5weCwgX19lbnRyeS0+c3RhcnQsIF9fZW50cnktPmVuZCkKPiArKTsKPiArCj4gICAvKiBB dm9pZCBleHRyYSBtYXRoIGJlY2F1c2Ugd2Ugb25seSBzdXBwb3J0IHR3byBzaXplcy4gVGhlIGZv cm1hdCBpcyBkZWZpbmVkIGJ5Cj4gICAgKiBiaXRtYXBfc2NucHJpbnRmLiBFYWNoIDMyIGJpdHMg aXMgOCBIRVggZGlnaXRzIGZvbGxvd2VkIGJ5IGNvbW1hICovCj4gICAjZGVmaW5lIFRSQUNFX1BU X1NJWkUoYml0cykgXAo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==