From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH v3 05/17] drm/i915/gen8: implement alloc/free for 4lvl Date: Tue, 7 Jul 2015 18:18:12 +0530 Message-ID: <559BCA8C.3010604@intel.com> References: <1433954816-13787-1-git-send-email-michel.thierry@intel.com> <1435764453-11954-1-git-send-email-michel.thierry@intel.com> <1435764453-11954-6-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id E4E216E552 for ; Tue, 7 Jul 2015 05:48:19 -0700 (PDT) In-Reply-To: <1435764453-11954-6-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 CgpPbiA3LzEvMjAxNSA4OjU3IFBNLCBNaWNoZWwgVGhpZXJyeSB3cm90ZToKPiBQTUw0IGhhcyBu byBzcGVjaWFsIGF0dHJpYnV0ZXMsIGFuZCB0aGVyZSB3aWxsIGFsd2F5cyBiZSBhIFBNTDQuCj4g U28gc2ltcGx5IGluaXRpYWxpemUgaXQgYXQgY3JlYXRpb24sIGFuZCBkZXN0cm95IGl0IGF0IHRo ZSBlbmQuCj4KPiBUaGUgY29kZSBmb3IgNGx2bCBpcyBhYmxlIHRvIGNhbGwgaW50byB0aGUgZXhp c3RpbmcgM2x2bCBwYWdlIHRhYmxlIGNvZGUKPiB0byBoYW5kbGUgYWxsIG9mIHRoZSBsb3dlciBs ZXZlbHMuCj4KPiB2MjogUmV0dXJuIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGdlbjhfYWxsb2Nf dmFfcmFuZ2VfNGx2bCB0byBrZWVwIHRoZQo+IGNvbXBpbGVyIGhhcHB5LiBBbmQgZGVmaW5lIHJl dCBvbmx5IGluIG9uZSBwbGFjZS4KPiBVcGRhdGVkIGdlbjhfcHBndHRfdW5tYXBfcGFnZXMgYW5k IGdlbjhfcHBndHRfZnJlZSB0byBoYW5kbGUgNGx2bC4KPiB2MzogVXNlIGk5MTVfZG1hX3VubWFw X3NpbmdsZSBpbnN0ZWFkIG9mIHBjaSBBUEkuIEZpeCBhCj4gY291cGxlIG9mIGluY29ycmVjdCBj aGVja3Mgd2hlbiB1bm1hcHBpbmcgcGRwIGFuZCBwZCBwYWdlcyAoQWthc2gpLgo+IHY0OiBDYWxs IF9fcGRwX2ZpbmkgYWxzbyBmb3IgMzJiIFBQR1RULiBDbGVhbiB1cCBhbGxvY19wZHAgcGFyYW0g bGlzdC4KPiB2NTogUHJldmVudCAoaGFybWxlc3MpIG91dCBvZiByYW5nZSBhY2Nlc3MgaW4gZ2Vu OF9mb3JfZWFjaF9wbWw0ZS4KPiB2NjogU2ltcGxpZnkgYWxsb2Nfdm1hX3JhbmdlXzRsdmwgYW5k IGdlbjhfcHBndHRfaW5pdF9jb21tb24gZXJyb3IKPiBwYXRocy4gKEFrYXNoKQo+IHY3OiBSZWJh c2UsIHMvZ2VuOF9wcGd0dF9mcmVlXyovZ2VuOF9wcGd0dF9jbGVhbnVwXyovLgo+IHY4OiBDaGFu Z2UgbG9jYXRpb24gb2YgcG1sNF9pbml0L2ZpbmkuIEl0IHdpbGwgbWFrZSBuZXh0IHBhdGNoZXMK PiBjbGVhbmVyLgo+IHY5OiBSZWJhc2UgYWZ0ZXIgTWlrYSdzIHBwZ3R0IGNsZWFudXAgLyBzY3Jh dGNoIG1lcmdlIHBhdGNoIHNlcmllcywgd2hpbGUKPiB0cnlpbmcgdG8gcmV1c2UgYXMgbXVjaCBh cyBwb3NzaWJsZSBmb3IgcGRwIGFsbG9jLiBwbWw0X2luaXQvZmluaQo+IHJlcGxhY2VkIGJ5IHNl dHVwL2NsZWFudXBfcHggbWFjcm9zLgo+IHYxMDogUmViYXNlIGFmdGVyIE1pa2EncyBtZXJnZWQg cHBndHQgY2xlYW51cCBwYXRjaCBzZXJpZXMuCj4gdjExOiBSZWJhc2UgYWZ0ZXIgZmluYWwgbWVy Z2VkIHZlcnNpb24gb2YgTWlrYSdzIHBwZ3R0L3NjcmF0Y2ggcGF0Y2hlcy4KPgo+IENjOiBBa2Fz aCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBCZW4gV2lkYXdz a3kgPGJlbkBid2lkYXdzay5uZXQ+Cj4gU2lnbmVkLW9mZi1ieTogTWljaGVsIFRoaWVycnkgPG1p Y2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHYyKykKPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jIHwgMTYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAgMTIgKystCj4g ICAyIGZpbGVzIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMTMyN2U0MS4uZDIzYjBhOCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTU4NCwxMiArNTg0LDQ0 IEBAIHN0YXRpYyB2b2lkIF9fcGRwX2Zpbmkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9p bnRlciAqcGRwKQo+ICAgCXBkcC0+cGFnZV9kaXJlY3RvcnkgPSBOVUxMOwo+ICAgfQo+Cj4gK3N0 YXRpYyBzdHJ1Y3QKPiAraTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICphbGxvY19wZHAoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rvcnlf cG9pbnRlciAqcGRwOwo+ICsJaW50IHJldCA9IC1FTk9NRU07Cj4gKwo+ICsJV0FSTl9PTighVVNF U19GVUxMXzQ4QklUX1BQR1RUKGRldikpOwo+ICsKPiArCXBkcCA9IGt6YWxsb2Moc2l6ZW9mKCpw ZHApLCBHRlBfS0VSTkVMKTsKPiArCWlmICghcGRwKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwo+ICsKPiArCXJldCA9IF9fcGRwX2luaXQoZGV2LCBwZHApOwo+ICsJaWYgKHJldCkKPiAr CQlnb3RvIGZhaWxfYml0bWFwOwo+ICsKPiArCXJldCA9IHNldHVwX3B4KGRldiwgcGRwKTsKPiAr CWlmIChyZXQpCj4gKwkJZ290byBmYWlsX3BhZ2VfbTsKPiArCj4gKwlyZXR1cm4gcGRwOwo+ICsK PiArZmFpbF9wYWdlX206Cj4gKwlfX3BkcF9maW5pKHBkcCk7Cj4gK2ZhaWxfYml0bWFwOgo+ICsJ a2ZyZWUocGRwKTsKPiArCj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICt9Cj4gKwo+ICAgc3Rh dGljIHZvaWQgZnJlZV9wZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJICAgICBzdHJ1 Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCj4gICB7Cj4gICAJX19wZHBfZmlu aShwZHApOwo+IC0JaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpKQo+ICsJaWYgKFVTRVNf RlVMTF80OEJJVF9QUEdUVChkZXYpKSB7Cj4gKwkJY2xlYW51cF9weChkZXYsIHBkcCk7Cj4gICAJ CWtmcmVlKHBkcCk7Cj4gKwl9Cj4gICB9Cj4KPiAgIC8qIEJyb2Fkd2VsbCBQYWdlIERpcmVjdG9y eSBQb2ludGVyIERlc2NyaXB0b3JzICovCj4gQEAgLTc4MywyOCArODE1LDQ2IEBAIHN0YXRpYyB2 b2lkIGdlbjhfZnJlZV9zY3JhdGNoKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAg CWZyZWVfc2NyYXRjaF9wYWdlKGRldiwgdm0tPnNjcmF0Y2hfcGFnZSk7Cj4gICB9Cj4KPiAtc3Rh dGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KQo+ICtzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfM2x2bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICsJCQkJICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBk cCkKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9Cj4gLQkJY29udGFpbmVy X29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gICAJaW50IGk7Cj4KPiAtCWlm ICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPiAtCQlmb3JfZWFj aF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBlcywKPiAtCQkJCSBJOTE1X1BEUEVTX1BF Ul9QRFAocHBndHQtPmJhc2UuZGV2KSkgewo+IC0JCQlpZiAoV0FSTl9PTighcHBndHQtPnBkcC5w YWdlX2RpcmVjdG9yeVtpXSkpCj4gLQkJCQljb250aW51ZTsKPiArCWZvcl9lYWNoX3NldF9iaXQo aSwgcGRwLT51c2VkX3BkcGVzLCBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2KSkgewo+ICsJCWlmIChX QVJOX09OKCFwZHAtPnBhZ2VfZGlyZWN0b3J5W2ldKSkKPiArCQkJY29udGludWU7Cj4KPiAtCQkJ Z2VuOF9mcmVlX3BhZ2VfdGFibGVzKHBwZ3R0LT5iYXNlLmRldiwKPiAtCQkJCQkgICAgICBwcGd0 dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKTsKPiAtCQkJZnJlZV9wZChwcGd0dC0+YmFzZS5kZXYs Cj4gLQkJCQlwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKTsKPiAtCQl9Cj4gLQkJZnJlZV9w ZHAocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBkcCk7Cj4gLQl9IGVsc2Ugewo+IC0JCVdBUk5f T04oMSk7IC8qIHRvIGJlIGltcGxlbWVudGVkIGxhdGVyICovCj4gKwkJZ2VuOF9mcmVlX3BhZ2Vf dGFibGVzKGRldiwgcGRwLT5wYWdlX2RpcmVjdG9yeVtpXSk7Cj4gKwkJZnJlZV9wZChkZXYsIHBk cC0+cGFnZV9kaXJlY3RvcnlbaV0pOwo+ICAgCX0KPgo+ICsJZnJlZV9wZHAoZGV2LCBwZHApOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXBfNGx2bChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCWZvcl9lYWNoX3NldF9i aXQoaSwgcHBndHQtPnBtbDQudXNlZF9wbWw0ZXMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KSB7Cj4g KwkJaWYgKFdBUk5fT04oIXBwZ3R0LT5wbWw0LnBkcHNbaV0pKQo+ICsJCQljb250aW51ZTsKPiAr Cj4gKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2LCBwcGd0dC0+cG1s NC5wZHBzW2ldKTsKPiArCX0KPiArCj4gKwljbGVhbnVwX3B4KHBwZ3R0LT5iYXNlLmRldiwgJnBw Z3R0LT5wbWw0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQgPQo+ICsJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJh c2UpOwo+ICsKPiArCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikp Cj4gKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzNsdmwocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBk cCk7Cj4gKwllbHNlCj4gKwkJZ2VuOF9wcGd0dF9jbGVhbnVwXzRsdmwocHBndHQpOwo+ICsKPiAg IAlnZW44X2ZyZWVfc2NyYXRjaCh2bSk7Cj4gICB9Cj4KPiBAQCAtMTA4Nyw4ICsxMTM3LDYyIEBA IHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZV80bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLAo+ICAgCQkJCSAgICB1aW50NjRfdCBzdGFydCwKPiAgIAkJCQkgICAgdWludDY0 X3QgbGVuZ3RoKQo+ICAgewo+IC0JV0FSTl9PTigxKTsgLyogdG8gYmUgaW1wbGVtZW50ZWQgbGF0 ZXIgKi8KPiArCURFQ0xBUkVfQklUTUFQKG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCk7 Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICsJCWNvbnRhaW5lcl9vZih2bSwg c3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+ICsJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnlfcG9pbnRlciAqcGRwOwo+ICsJY29uc3QgdWludDY0X3Qgb3JpZ19zdGFydCA9IHN0YXJ0Owo+ ICsJY29uc3QgdWludDY0X3Qgb3JpZ19sZW5ndGggPSBsZW5ndGg7Cj4gKwl1aW50NjRfdCB0ZW1w LCBwbWw0ZTsKPiArCWludCByZXQgPSAwOwo+ICsKPiArCS8qIERvIHRoZSBwbWw0IGFsbG9jYXRp b25zIGZpcnN0LCBzbyB3ZSBkb24ndCBuZWVkIHRvIHRyYWNrIHRoZSBuZXdseQo+ICsJICogYWxs b2NhdGVkIHRhYmxlcyBiZWxvdyB0aGUgcGRwICovCj4gKwliaXRtYXBfemVybyhuZXdfcGRwcywg R0VOOF9QTUw0RVNfUEVSX1BNTDQpOwo+ICsKPiArCS8qIFRoZSBwYWdlZGlyZWN0b3J5IGFuZCBw YWdldGFibGUgYWxsb2NhdGlvbnMgYXJlIGRvbmUgaW4gdGhlIHNoYXJlZCAzCj4gKwkgKiBhbmQg NCBsZXZlbCBjb2RlLiBKdXN0IGFsbG9jYXRlIHRoZSBwZHBzLgo+ICsJICovCj4gKwlnZW44X2Zv cl9lYWNoX3BtbDRlKHBkcCwgcG1sNCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcG1sNGUpIHsKPiAr CQlpZiAoIXBkcCkgewo+ICsJCQlXQVJOX09OKHRlc3RfYml0KHBtbDRlLCBwbWw0LT51c2VkX3Bt bDRlcykpOwo+ICsJCQlwZHAgPSBhbGxvY19wZHAodm0tPmRldik7Cj4gKwkJCWlmIChJU19FUlIo cGRwKSkKPiArCQkJCWdvdG8gZXJyX291dDsKPiArCj4gKwkJCXBtbDQtPnBkcHNbcG1sNGVdID0g cGRwOwo+ICsJCQlfX3NldF9iaXQocG1sNGUsIG5ld19wZHBzKTsKPiArCQkJdHJhY2VfaTkxNV9w YWdlX2RpcmVjdG9yeV9wb2ludGVyX2VudHJ5X2FsbG9jKCZwcGd0dC0+YmFzZSwgcG1sNGUsCj4g KwkJCQkJCSAgIHBtbDRlIDw8IEdFTjhfUE1MNEVfU0hJRlQsClRoZSDigJhzdGFydOKAmSB2YXJp YWJsZSBzaG91bGQgYmUgdXNlZCBoZXJlIGluIHBsYWNlIG9mICDigJhwbWw0ZSA8PCAKR0VOOF9Q TUw0RV9TSElGVOKAmSAgPwo+ICsJCQkJCQkgICBHRU44X1BNTDRFX1NISUZUKTsKPiArCQl9Cj4g Kwl9Cj4gKwo+ICsJV0FSTihiaXRtYXBfd2VpZ2h0KG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJf UE1MNCkgPiAyLAo+ICsJICAgICAiVGhlIGFsbG9jYXRpb24gaGFzIHNwYW5uZWQgbW9yZSB0aGFu IDUxMkdCLiAiCj4gKwkgICAgICJJdCBpcyBoaWdobHkgbGlrZWx5IHRoaXMgaXMgaW5jb3JyZWN0 LiIpOwo+ICsKPiArCXN0YXJ0ID0gb3JpZ19zdGFydDsKPiArCWxlbmd0aCA9IG9yaWdfbGVuZ3Ro Owo+ICsKPiArCWdlbjhfZm9yX2VhY2hfcG1sNGUocGRwLCBwbWw0LCBzdGFydCwgbGVuZ3RoLCB0 ZW1wLCBwbWw0ZSkgewo+ICsJCVdBUk5fT04oIXBkcCk7Cj4gKwo+ICsJCXJldCA9IGdlbjhfYWxs b2NfdmFfcmFuZ2VfM2x2bCh2bSwgcGRwLCBzdGFydCwgbGVuZ3RoKTsKPiArCQlpZiAocmV0KQo+ ICsJCQlnb3RvIGVycl9vdXQ7Cj4gKwl9Cj4gKwo+ICsJYml0bWFwX29yKHBtbDQtPnVzZWRfcG1s NGVzLCBuZXdfcGRwcywgcG1sNC0+dXNlZF9wbWw0ZXMsCj4gKwkJICBHRU44X1BNTDRFU19QRVJf UE1MNCk7Cj4gKwo+ICAgCXJldHVybiAwOwo+ICsKPiArZXJyX291dDoKPiArCWZvcl9lYWNoX3Nl dF9iaXQocG1sNGUsIG5ld19wZHBzLCBHRU44X1BNTDRFU19QRVJfUE1MNCkKPiArCQlnZW44X3Bw Z3R0X2NsZWFudXBfM2x2bCh2bS0+ZGV2LCBwbWw0LT5wZHBzW3BtbDRlXSk7Cj4gKwo+ICsJcmV0 dXJuIHJldDsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IEBAIC0xMDk3LDEwICsxMjAxLDEwIEBAIHN0YXRp YyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK PiAgIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICAgCQljb250YWluZXJfb2Yodm0s IHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsKPgo+IC0JaWYgKCFVU0VTX0ZVTExfNDhCSVRf UFBHVFQodm0tPmRldikpCj4gLQkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfM2x2bCh2bSwg JnBwZ3R0LT5wZHAsIHN0YXJ0LCBsZW5ndGgpOwo+IC0JZWxzZQo+ICsJaWYgKFVTRVNfRlVMTF80 OEJJVF9QUEdUVCh2bS0+ZGV2KSkKPiAgIAkJcmV0dXJuIGdlbjhfYWxsb2NfdmFfcmFuZ2VfNGx2 bCh2bSwgJnBwZ3R0LT5wbWw0LCBzdGFydCwgbGVuZ3RoKTsKPiArCWVsc2UKPiArCQlyZXR1cm4g Z2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHZtLCAmcHBndHQtPnBkcCwgc3RhcnQsIGxlbmd0aCk7 Cj4gICB9Cj4KPiAgIC8qCj4gQEAgLTExMjgsOSArMTIzMiwxNCBAQCBzdGF0aWMgaW50IGdlbjhf cHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4KPiAgIAlwcGd0dC0+c3dp dGNoX21tID0gZ2VuOF9tbV9zd2l0Y2g7Cj4KPiAtCWlmICghVVNFU19GVUxMXzQ4QklUX1BQR1RU KHBwZ3R0LT5iYXNlLmRldikpIHsKPiAtCQlyZXQgPSBfX3BkcF9pbml0KGZhbHNlLCAmcHBndHQt PnBkcCk7Cj4gKwlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsK PiArCQlyZXQgPSBzZXR1cF9weChwcGd0dC0+YmFzZS5kZXYsICZwcGd0dC0+cG1sNCk7Cj4gKwkJ aWYgKHJldCkKPiArCQkJZ290byBmcmVlX3NjcmF0Y2g7Cj4KPiArCQlwcGd0dC0+YmFzZS50b3Rh bCA9IDFVTEwgPDwgNDg7Cj4gKwl9IGVsc2Ugewo+ICsJCXJldCA9IF9fcGRwX2luaXQoZmFsc2Us ICZwcGd0dC0+cGRwKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCWdvdG8gZnJlZV9zY3JhdGNoOwo+ Cj4gQEAgLTExNDIsOSArMTI1MSwxMCBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICAJCQkgKiAyR2lCKS4KPiAgIAkJCSAqLwo+ICAg CQkJcHBndHQtPmJhc2UudG90YWwgPSB0b19pOTE1KHBwZ3R0LT5iYXNlLmRldiktPmd0dC5iYXNl LnRvdGFsOwo+IC0JfSBlbHNlIHsKPiAtCQlwcGd0dC0+YmFzZS50b3RhbCA9IDFVTEwgPDwgNDg7 Cj4gLQkJcmV0dXJuIC1FUEVSTTsgLyogTm90IHlldCBpbXBsZW1lbnRlZCAqLwo+ICsKPiArCQl0 cmFjZV9pOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXJfZW50cnlfYWxsb2MoJnBwZ3R0LT5iYXNl LAo+ICsJCQkJCQkJICAgICAgMCwgMCwKPiArCQkJCQkJCSAgICAgIEdFTjhfUE1MNEVfU0hJRlQp Owo+ICAgCX0KPgo+ICAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o Cj4gaW5kZXggZTJiNjg0ZS4uYzhhYzBiNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oCj4gQEAgLTk1LDYgKzk1LDcgQEAgdHlwZWRlZiB1aW50NjRfdCBnZW44X3BkZV90Owo+ ICAgICovCj4gICAjZGVmaW5lIEdFTjhfUE1MNEVTX1BFUl9QTUw0CQk1MTIKPiAgICNkZWZpbmUg R0VOOF9QTUw0RV9TSElGVAkJMzkKPiArI2RlZmluZSBHRU44X1BNTDRFX01BU0sJCQkoR0VOOF9Q TUw0RVNfUEVSX1BNTDQgLSAxKQo+ICAgI2RlZmluZSBHRU44X1BEUEVfU0hJRlQJCQkzMAo+ICAg LyogTkI6IEdFTjhfUERQRV9NQVNLIGlzIHVudHJ1ZSBmb3IgMzJiIHBsYXRmb3JtcywgYnV0IGl0 IGhhcyBubyBpbXBhY3Qgb24gMzJiIHBhZ2UKPiAgICAqIHRhYmxlcyAqLwo+IEBAIC00NjQsNiAr NDY1LDE0IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9wZGVfaW5kZXgodWludDMyX3Qg YWRkcikKPiAgIAkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwJCQkJCVwKPiAgIAkgICAg IHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQo+Cj4gKyNkZWZpbmUgZ2VuOF9mb3JfZWFj aF9wbWw0ZShwZHAsIHBtbDQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpCVwKPiArCWZvciAo aXRlciA9IGdlbjhfcG1sNGVfaW5kZXgoc3RhcnQpOwlcCj4gKwkgICAgIHBkcCA9IChwbWw0KS0+ cGRwc1tpdGVyXSwgbGVuZ3RoID4gMCAmJiBpdGVyIDwgR0VOOF9QTUw0RVNfUEVSX1BNTDQ7CVwK PiArCSAgICAgaXRlcisrLAkJCQlcCj4gKwkgICAgIHRlbXAgPSBBTElHTihzdGFydCsxLCAxVUxM IDw8IEdFTjhfUE1MNEVfU0hJRlQpIC0gc3RhcnQsCVwKPiArCSAgICAgdGVtcCA9IG1pbih0ZW1w LCBsZW5ndGgpLAkJCQkJXAo+ICsJICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcCkK PiArCj4gICAjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwgbGVuZ3Ro LCB0ZW1wLCBpdGVyKQkJXAo+ICAgCWdlbjhfZm9yX2VhY2hfcGRwZV9lKHBkLCBwZHAsIHN0YXJ0 LCBsZW5ndGgsIHRlbXAsIGl0ZXIsIEk5MTVfUERQRVNfUEVSX1BEUChkZXYpKQo+Cj4gQEAgLTQ4 NCw4ICs0OTMsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGdlbjhfcGRwZV9pbmRleCh1aW50 NjRfdCBhZGRyZXNzKQo+Cj4gICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGdlbjhfcG1sNGVfaW5k ZXgodWludDY0X3QgYWRkcmVzcykKPiAgIHsKPiAtCVdBUk5fT04oMSk7IC8qIEZvciA2NEIgKi8K PiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIChhZGRyZXNzID4+IEdFTjhfUE1MNEVfU0hJRlQpICYg R0VOOF9QTUw0RV9NQVNLOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW5saW5lIHNpemVfdCBnZW44X3B0 ZV9jb3VudCh1aW50NjRfdCBhZGRyZXNzLCB1aW50NjRfdCBsZW5ndGgpCj4KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK