From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH v3 02/17] drm/i915/gen8: Make pdp allocation more dynamic Date: Tue, 7 Jul 2015 18:06:06 +0530 Message-ID: <559BC7B6.6040900@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-3-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 2A4E66E516 for ; Tue, 7 Jul 2015 05:36:09 -0700 (PDT) In-Reply-To: <1435764453-11954-3-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 CgpPbiA3LzEvMjAxNSA4OjU3IFBNLCBNaWNoZWwgVGhpZXJyeSB3cm90ZToKPiBUaGlzIHRyYW5z aXRpb25hbCBwYXRjaCBkb2Vzbid0IGRvIG11Y2ggZm9yIHRoZSBleGlzdGluZyBjb2RlLiBIb3dl dmVyLAo+IGl0IHNob3VsZCBtYWtlIHVwY29taW5nIHBhdGNoZXMgdG8gdXNlIHRoZSBmdWxsIDQ4 YiBhZGRyZXNzIHNwYWNlIGEgYml0Cj4gZWFzaWVyLiBUaGUgcGF0Y2ggYWxzbyBpbnRyb2R1Y2Vz IHRoZSBQTUw0LCBpZS4gdGhlIG5ldyB0b3AgbGV2ZWwgc3RydWN0dXJlCj4gb2YgdGhlIHBhZ2Ug dGFibGVzLgo+CgpXb3VsZCBiZSBiZXR0ZXIgdG8gbW92ZSB0aGUgaW50cm9kdWN0aW9uIG9mIFBN TDQgdG8gYSBzZXBhcmF0ZSBwYXRjaCAmIAprZWVwIHRoaXMgcGF0Y2ggb25seSBmb3IgdGhlIGR5 bmFtaWMgYWxsb2NhdGlvbiBvZiBwZHAgY2hhbmdlcy4KCj4gdjI6IFJlbmFtZWQgIHBkcF9mcmVl IHRvIGJlIHNpbWlsYXIgdG8gIHBkL3B0ICh1bm1hcF9hbmRfZnJlZV9wZHApLgo+IHYzOiBUbyBm YWNpbGl0YXRlIHRlc3RpbmcsIDQ4YiBtb2RlIHdpbGwgYmUgYXZhaWxhYmxlIG9uIEJyb2Fkd2Vs bCBhbmQKPiBHRU45Kywgd2hlbiBpOTE1LmVuYWJsZV9wcGd0dCA9IDMuCj4gdjQ6IFJlYmFzZSBh ZnRlciBzL3BhZ2VfdGFibGVzL3BhZ2VfdGFibGUvLCBhZGRlZCBleHRyYSBpbmZvcm1hdGlvbgo+ IGFib3V0IDQtbGV2ZWwgcGFnZSB0YWJsZSBmb3JtYXRzIGFuZCB1c2UgSVNfRU5BQkxFRCBtYWNy by4KPiB2NTogQ2hlY2sgQ09ORklHX1g4Nl82NCBpbnN0ZWFkIG9mIENPTkZJR182NEJJVC4KPiB2 NjogUmViYXNlIGFmdGVyIE1pa2EncyBwcGd0dCBjbGVhbnVwIC8gc2NyYXRjaCBtZXJnZSBwYXRj aCBzZXJpZXMsIGFuZCBmb2xsb3cKPiBoaXMgbm9tZW5jbGF0dXJlIGluIHBkcCBmdW5jdGlvbnMg KHRoZXJlIGlzIG5vIGFsbG9jX3BkcCB5ZXQpLgo+IHY3OiBSZWJhc2UgYWZ0ZXIgbWVyZ2VkIHZl cnNpb24gb2YgTWlrYSdzIHBwZ3R0IGNsZWFudXAgcGF0Y2ggc2VyaWVzLgo+IHY4OiBSZWJhc2Ug YWZ0ZXIgZmluYWwgbWVyZ2VkIHZlcnNpb24gb2YgTWlrYSdzIHBwZ3R0L3NjcmF0Y2ggcGF0Y2hl cy4KPgo+IFNpZ25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KPiBT aWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPiAo djIrKQo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgIDcg KystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDExNiArKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oIHwgIDQxICsrKysrKysrKystLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTI4 IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggMWRiZDk1Ny4uN2JjY2ZkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IEBAIC0yNDkwLDcgKzI0OTAsMTIgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4gICAj ZGVmaW5lIEhBU19IV19DT05URVhUUyhkZXYpCShJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA2KQo+ ICAgI2RlZmluZSBIQVNfTE9HSUNBTF9SSU5HX0NPTlRFWFRTKGRldikJKElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDgpCj4gICAjZGVmaW5lIFVTRVNfUFBHVFQoZGV2KQkJKGk5MTUuZW5hYmxlX3Bw Z3R0KQo+IC0jZGVmaW5lIFVTRVNfRlVMTF9QUEdUVChkZXYpCShpOTE1LmVuYWJsZV9wcGd0dCA9 PSAyKQo+ICsjZGVmaW5lIFVTRVNfRlVMTF9QUEdUVChkZXYpCShpOTE1LmVuYWJsZV9wcGd0dCA+ PSAyKQo+ICsjaWZkZWYgQ09ORklHX1g4Nl82NAo+ICsjIGRlZmluZSBVU0VTX0ZVTExfNDhCSVRf UFBHVFQoZGV2KQkoaTkxNS5lbmFibGVfcHBndHQgPT0gMykKPiArI2Vsc2UKPiArIyBkZWZpbmUg VVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikJZmFsc2UKPiArI2VuZGlmCj4KPiAgICNkZWZpbmUg SEFTX09WRVJMQVkoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+aGFzX292ZXJsYXkpCj4gICAjZGVm aW5lIE9WRVJMQVlfTkVFRFNfUEhZU0lDQUwoZGV2KQkoSU5URUxfSU5GTyhkZXYpLT5vdmVybGF5 X25lZWRzX3BoeXNpY2FsKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXgg NzEyY2EzNC4uY2RjYzc3OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g QEAgLTEwNCw5ICsxMDQsMTMgQEAgc3RhdGljIGludCBzYW5pdGl6ZV9lbmFibGVfcHBndHQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9wcGd0dCkKPiAgIHsKPiAgIAlib29sIGhh c19hbGlhc2luZ19wcGd0dDsKPiAgIAlib29sIGhhc19mdWxsX3BwZ3R0Owo+ICsJYm9vbCBoYXNf ZnVsbF82NGJpdF9wcGd0dDsKPgo+ICAgCWhhc19hbGlhc2luZ19wcGd0dCA9IElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDY7Cj4gICAJaGFzX2Z1bGxfcHBndHQgPSBJTlRFTF9JTkZPKGRldiktPmdl biA+PSA3Owo+ICsJaGFzX2Z1bGxfNjRiaXRfcHBndHQgPSBJU19FTkFCTEVEKENPTkZJR19YODZf NjQpICYmCj4gKwkJCSAgICAgICAoSVNfQlJPQURXRUxMKGRldikgfHwKPiArCQkJCUlOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDkpICYmIGZhbHNlOyAvKiBGSVhNRTogNjRiICovCj4KPiAgIAlpZiAo aW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkKPiAgIAkJaGFzX2Z1bGxfcHBndHQgPSBmYWxzZTsgLyog ZW11bGF0aW9uIGlzIHRvbyBoYXJkICovCj4gQEAgLTEyNSw2ICsxMjksOSBAQCBzdGF0aWMgaW50 IHNhbml0aXplX2VuYWJsZV9wcGd0dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgZW5hYmxl X3BwZ3R0KQo+ICAgCWlmIChlbmFibGVfcHBndHQgPT0gMiAmJiBoYXNfZnVsbF9wcGd0dCkKPiAg IAkJcmV0dXJuIDI7Cj4KPiArCWlmIChlbmFibGVfcHBndHQgPT0gMyAmJiBoYXNfZnVsbF82NGJp dF9wcGd0dCkKPiArCQlyZXR1cm4gMzsKPiArCj4gICAjaWZkZWYgQ09ORklHX0lOVEVMX0lPTU1V Cj4gICAJLyogRGlzYWJsZSBwcGd0dCBvbiBTTkIgaWYgVlQtZCBpcyBvbi4gKi8KPiAgIAlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPT0gNiAmJiBpbnRlbF9pb21tdV9nZnhfbWFwcGVkKSB7Cj4g QEAgLTUyMiw2ICs1MjksNDUgQEAgc3RhdGljIHZvaWQgZ2VuOF9pbml0aWFsaXplX3BkKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAgCWZpbGxfcHgodm0tPmRldiwgcGQsIHNjcmF0 Y2hfcGRlKTsKPiAgIH0KPgo+ICtzdGF0aWMgaW50IF9fcGRwX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiArCQkgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpw ZHApCj4gK3sKPiArCXNpemVfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXYpOwo+ICsK PiArCXBkcC0+dXNlZF9wZHBlcyA9IGtjYWxsb2MoQklUU19UT19MT05HUyhwZHBlcyksCj4gKwkJ CQkgIHNpemVvZih1bnNpZ25lZCBsb25nKSwKPiArCQkJCSAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAo IXBkcC0+dXNlZF9wZHBlcykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlwZHAtPnBhZ2Vf ZGlyZWN0b3J5ID0ga2NhbGxvYyhwZHBlcywgc2l6ZW9mKCpwZHAtPnBhZ2VfZGlyZWN0b3J5KSwK PiArCQkJCSAgICAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwZHAtPnBhZ2VfZGlyZWN0b3J5KSB7 Cj4gKwkJa2ZyZWUocGRwLT51c2VkX3BkcGVzKTsKPiArCQkvKiB0aGUgUERQIG1pZ2h0IGJlIHRo ZSBzdGF0aWNhbGx5IGFsbG9jYXRlZCB0b3AgbGV2ZWwuIEtlZXAgaXQKPiArCQkgKiBhcyBjbGVh biBhcyBwb3NzaWJsZSAqLwo+ICsJCXBkcC0+dXNlZF9wZHBlcyA9IE5VTEw7Cj4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IF9fcGRwX2Zpbmkoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwKQo+ICt7 Cj4gKwlrZnJlZShwZHAtPnVzZWRfcGRwZXMpOwo+ICsJa2ZyZWUocGRwLT5wYWdlX2RpcmVjdG9y eSk7Cj4gKwlwZHAtPnBhZ2VfZGlyZWN0b3J5ID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgZnJlZV9wZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkgICAgIHN0cnVjdCBpOTE1 X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcCkKPiArewo+ICsJX19wZHBfZmluaShwZHApOwo+ ICsJaWYgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpKQo+ICsJCWtmcmVlKHBkcCk7Cj4gK30K PiArCj4gICAvKiBCcm9hZHdlbGwgUGFnZSBEaXJlY3RvcnkgUG9pbnRlciBEZXNjcmlwdG9ycyAq Lwo+ICAgc3RhdGljIGludCBnZW44X3dyaXRlX3BkcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKPiAgIAkJCSAgdW5zaWduZWQgZW50cnksCj4gQEAgLTYzNCw5ICs2ODAsNiBAQCBz dGF0aWMgdm9pZCBnZW44X3BwZ3R0X2luc2VydF9lbnRyaWVzKHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLAo+ICAgCXB0X3ZhZGRyID0gTlVMTDsKPgo+ICAgCWZvcl9lYWNoX3NnX3BhZ2Uo cGFnZXMtPnNnbCwgJnNnX2l0ZXIsIHBhZ2VzLT5uZW50cywgMCkgewo+IC0JCWlmIChXQVJOX09O KHBkcGUgPj0gR0VOOF9MRUdBQ1lfUERQRVMpKQo+IC0JCQlicmVhazsKPiAtCj4gICAJCWlmIChw dF92YWRkciA9PSBOVUxMKSB7Cj4gICAJCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQg PSBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkcGVdOwo+ICAgCQkJc3RydWN0IGk5MTVfcGFn ZV90YWJsZSAqcHQgPSBwZC0+cGFnZV90YWJsZVtwZGVdOwo+IEBAIC03MjAsNyArNzYzLDggQEAg c3RhdGljIHZvaWQgZ2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtKQo+ICAgCQljb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNlKTsK PiAgIAlpbnQgaTsKPgo+IC0JZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRw ZXMsIEdFTjhfTEVHQUNZX1BEUEVTKSB7Cj4gKwlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5w ZHAudXNlZF9wZHBlcywKPiArCQkJCUk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYp KSB7Cj4gICAJCWlmIChXQVJOX09OKCFwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKSkKPiAg IAkJCWNvbnRpbnVlOwo+Cj4gQEAgLTcyOSw2ICs3NzMsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3Bw Z3R0X2NsZWFudXAoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICAJCWZyZWVfcGQo cHBndHQtPmJhc2UuZGV2LCBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W2ldKTsKPiAgIAl9Cj4K PiArCWZyZWVfcGRwKHBwZ3R0LT5iYXNlLmRldiwgJnBwZ3R0LT5wZHApOwo+ICAgCWdlbjhfZnJl ZV9zY3JhdGNoKHZtKTsKPiAgIH0KPgo+IEBAIC04MjAsOCArODY1LDkgQEAgc3RhdGljIGludCBn ZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LAo+ICAgCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZDsKPiAgIAl1aW50NjRfdCB0 ZW1wOwo+ICAgCXVpbnQzMl90IHBkcGU7Cj4gKwl1aW50MzJfdCBwZHBlcyA9ICBJOTE1X1BEUEVT X1BFUl9QRFAocHBndHQtPmJhc2UuZGV2KTsKPgo+IC0JV0FSTl9PTighYml0bWFwX2VtcHR5KG5l d19wZHMsIEdFTjhfTEVHQUNZX1BEUEVTKSk7Cj4gKwlXQVJOX09OKCFiaXRtYXBfZW1wdHkobmV3 X3BkcywgcGRwZXMpKTsKPgo+ICAgCWdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRwLCBzdGFydCwg bGVuZ3RoLCB0ZW1wLCBwZHBlKSB7Cj4gICAJCWlmIChwZCkKPiBAQCAtODM5LDE4ICs4ODUsMTkg QEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAgCXJldHVybiAwOwo+Cj4gICB1bndpbmRfb3V0Ogo+IC0J Zm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGRzLCBHRU44X0xFR0FDWV9QRFBFUykKPiArCWZv cl9lYWNoX3NldF9iaXQocGRwZSwgbmV3X3BkcywgcGRwZXMpCj4gICAJCWZyZWVfcGQoZGV2LCBw ZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdKTsKPgo+ICAgCXJldHVybiAtRU5PTUVNOwo+ICAgfQo+ Cj4gICBzdGF0aWMgdm9pZAo+IC1mcmVlX2dlbjhfdGVtcF9iaXRtYXBzKHVuc2lnbmVkIGxvbmcg Km5ld19wZHMsIHVuc2lnbmVkIGxvbmcgKipuZXdfcHRzKQo+ICtmcmVlX2dlbjhfdGVtcF9iaXRt YXBzKHVuc2lnbmVkIGxvbmcgKm5ld19wZHMsIHVuc2lnbmVkIGxvbmcgKipuZXdfcHRzLAo+ICsJ CSAgICAgICB1aW50MzJfdCBwZHBlcykKPiAgIHsKPiAgIAlpbnQgaTsKPgo+IC0JZm9yIChpID0g MDsgaSA8IEdFTjhfTEVHQUNZX1BEUEVTOyBpKyspCj4gKwlmb3IgKGkgPSAwOyBpIDwgcGRwZXM7 IGkrKykKPiAgIAkJa2ZyZWUobmV3X3B0c1tpXSk7Cj4gICAJa2ZyZWUobmV3X3B0cyk7Cj4gICAJ a2ZyZWUobmV3X3Bkcyk7Cj4gQEAgLTg2MSwyMyArOTA4LDI0IEBAIGZyZWVfZ2VuOF90ZW1wX2Jp dG1hcHModW5zaWduZWQgbG9uZyAqbmV3X3BkcywgdW5zaWduZWQgbG9uZyAqKm5ld19wdHMpCj4g ICAgKi8KPiAgIHN0YXRpYwo+ICAgaW50IF9fbXVzdF9jaGVjayBhbGxvY19nZW44X3RlbXBfYml0 bWFwcyh1bnNpZ25lZCBsb25nICoqbmV3X3BkcywKPiAtCQkJCQkgdW5zaWduZWQgbG9uZyAqKipu ZXdfcHRzKQo+ICsJCQkJCSB1bnNpZ25lZCBsb25nICoqKm5ld19wdHMsCj4gKwkJCQkJIHVpbnQz Ml90IHBkcGVzKQo+ICAgewo+ICAgCWludCBpOwo+ICAgCXVuc2lnbmVkIGxvbmcgKnBkczsKPiAg IAl1bnNpZ25lZCBsb25nICoqcHRzOwo+Cj4gLQlwZHMgPSBrY2FsbG9jKEJJVFNfVE9fTE9OR1Mo R0VOOF9MRUdBQ1lfUERQRVMpLCBzaXplb2YodW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpOwo+ ICsJcGRzID0ga2NhbGxvYyhCSVRTX1RPX0xPTkdTKHBkcGVzKSwgc2l6ZW9mKHVuc2lnbmVkIGxv bmcpLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoIXBkcykKPiAgIAkJcmV0dXJuIC1FTk9NRU07Cj4K PiAtCXB0cyA9IGtjYWxsb2MoR0VOOF9MRUdBQ1lfUERQRVMsIHNpemVvZih1bnNpZ25lZCBsb25n ICopLCBHRlBfS0VSTkVMKTsKPiArCXB0cyA9IGtjYWxsb2MocGRwZXMsIHNpemVvZih1bnNpZ25l ZCBsb25nICopLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoIXB0cykgewo+ICAgCQlrZnJlZShwZHMp Owo+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiAgIAl9Cj4KPiAtCWZvciAoaSA9IDA7IGkgPCBHRU44 X0xFR0FDWV9QRFBFUzsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgcGRwZXM7IGkrKykgewo+ ICAgCQlwdHNbaV0gPSBrY2FsbG9jKEJJVFNfVE9fTE9OR1MoSTkxNV9QREVTKSwKPiAgIAkJCQkg c2l6ZW9mKHVuc2lnbmVkIGxvbmcpLCBHRlBfS0VSTkVMKTsKPiAgIAkJaWYgKCFwdHNbaV0pCj4g QEAgLTg5MCw3ICs5MzgsNyBAQCBpbnQgX19tdXN0X2NoZWNrIGFsbG9jX2dlbjhfdGVtcF9iaXRt YXBzKHVuc2lnbmVkIGxvbmcgKipuZXdfcGRzLAo+ICAgCXJldHVybiAwOwo+Cj4gICBlcnJfb3V0 Ogo+IC0JZnJlZV9nZW44X3RlbXBfYml0bWFwcyhwZHMsIHB0cyk7Cj4gKwlmcmVlX2dlbjhfdGVt cF9iaXRtYXBzKHBkcywgcHRzLCBwZHBlcyk7Cj4gICAJcmV0dXJuIC1FTk9NRU07Cj4gICB9Cj4K PiBAQCAtOTE2LDYgKzk2NCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAljb25zdCB1aW50NjRfdCBvcmlnX2xlbmd0 aCA9IGxlbmd0aDsKPiAgIAl1aW50NjRfdCB0ZW1wOwo+ICAgCXVpbnQzMl90IHBkcGU7Cj4gKwl1 aW50MzJfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXYpOwo+ICAgCWludCByZXQ7Cj4K PiAgIAkvKiBXcmFwIGlzIG5ldmVyIG9rYXkgc2luY2Ugd2UgY2FuIG9ubHkgcmVwcmVzZW50IDQ4 YiwgYW5kIHdlIGRvbid0Cj4gQEAgLTkyNyw3ICs5NzYsNyBAQCBzdGF0aWMgaW50IGdlbjhfYWxs b2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAJaWYgKFdBUk5f T04oc3RhcnQgKyBsZW5ndGggPiBwcGd0dC0+YmFzZS50b3RhbCkpCj4gICAJCXJldHVybiAtRU5P REVWOwo+Cj4gLQlyZXQgPSBhbGxvY19nZW44X3RlbXBfYml0bWFwcygmbmV3X3BhZ2VfZGlycywg Jm5ld19wYWdlX3RhYmxlcyk7Cj4gKwlyZXQgPSBhbGxvY19nZW44X3RlbXBfYml0bWFwcygmbmV3 X3BhZ2VfZGlycywgJm5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwo+ICAgCWlmIChyZXQpCj4gICAJ CXJldHVybiByZXQ7Cj4KPiBAQCAtOTM1LDcgKzk4NCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxv Y192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAlyZXQgPSBnZW44 X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMocHBndHQsICZwcGd0dC0+cGRwLCBzdGFydCwg bGVuZ3RoLAo+ICAgCQkJCQluZXdfcGFnZV9kaXJzKTsKPiAgIAlpZiAocmV0KSB7Cj4gLQkJZnJl ZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90YWJsZXMpOwo+ICsJ CWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFibGVzLCBw ZHBlcyk7Cj4gICAJCXJldHVybiByZXQ7Cj4gICAJfQo+Cj4gQEAgLTk4OSw3ICsxMDM4LDcgQEAg c3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAo+ICAgCQlfX3NldF9iaXQocGRwZSwgcHBndHQtPnBkcC51c2VkX3BkcGVzKTsKPiAgIAl9 Cj4KPiAtCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2VfdGFi bGVzKTsKPiArCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3BhZ2Vf dGFibGVzLCBwZHBlcyk7Cj4gICAJbWFya190bGJzX2RpcnR5KHBwZ3R0KTsKPiAgIAlyZXR1cm4g MDsKPgo+IEBAIC05OTksMTAgKzEwNDgsMTAgQEAgZXJyX291dDoKPiAgIAkJCWZyZWVfcHQodm0t PmRldiwgcHBndHQtPnBkcC5wYWdlX2RpcmVjdG9yeVtwZHBlXS0+cGFnZV90YWJsZVt0ZW1wXSk7 Cj4gICAJfQo+Cj4gLQlmb3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wYWdlX2RpcnMsIEdFTjhf TEVHQUNZX1BEUEVTKQo+ICsJZm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdfcGFnZV9kaXJzLCBw ZHBlcykKPiAgIAkJZnJlZV9wZCh2bS0+ZGV2LCBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3Bk cGVdKTsKPgo+IC0JZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFn ZV90YWJsZXMpOwo+ICsJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdf cGFnZV90YWJsZXMsIHBkcGVzKTsKPiAgIAltYXJrX3RsYnNfZGlydHkocHBndHQpOwo+ICAgCXJl dHVybiByZXQ7Cj4gICB9Cj4gQEAgLTEwMjMsMTQgKzEwNzIsNiBAQCBzdGF0aWMgaW50IGdlbjhf cHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gICAJCXJldHVybiByZXQ7 Cj4KPiAgIAlwcGd0dC0+YmFzZS5zdGFydCA9IDA7Cj4gLQlwcGd0dC0+YmFzZS50b3RhbCA9IDFV TEwgPDwgMzI7Cj4gLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2XzMyKSkKPiAtCQkvKiBXaGls ZSB3ZSBoYXZlIGEgcHJvbGlmZXJhdGlvbiBvZiBzaXplX3QgdmFyaWFibGVzCj4gLQkJICogd2Ug Y2Fubm90IHJlcHJlc2VudCB0aGUgZnVsbCBwcGd0dCBzaXplIG9uIDMyYml0LAo+IC0JCSAqIHNv IGxpbWl0IGl0IHRvIHRoZSBzYW1lIHNpemUgYXMgdGhlIEdHVFQgKGN1cnJlbnRseQo+IC0JCSAq IDJHaUIpLgo+IC0JCSAqLwo+IC0JCXBwZ3R0LT5iYXNlLnRvdGFsID0gdG9faTkxNShwcGd0dC0+ YmFzZS5kZXYpLT5ndHQuYmFzZS50b3RhbDsKPiAgIAlwcGd0dC0+YmFzZS5jbGVhbnVwID0gZ2Vu OF9wcGd0dF9jbGVhbnVwOwo+ICAgCXBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3JhbmdlID0gZ2Vu OF9hbGxvY192YV9yYW5nZTsKPiAgIAlwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IGdlbjhf cHBndHRfaW5zZXJ0X2VudHJpZXM7Cj4gQEAgLTEwNDAsNyArMTA4MSwzMCBAQCBzdGF0aWMgaW50 IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4KPiAgIAlwcGd0 dC0+c3dpdGNoX21tID0gZ2VuOF9tbV9zd2l0Y2g7Cj4KPiArCWlmICghVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKPiArCQlyZXQgPSBfX3BkcF9pbml0KGZhbHNlLCAm cHBndHQtPnBkcCk7Cj4gKwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZnJlZV9zY3JhdGNoOwo+ ICsKPiArCQlwcGd0dC0+YmFzZS50b3RhbCA9IDFVTEwgPDwgMzI7Cj4gKwkJaWYgKElTX0VOQUJM RUQoQ09ORklHX1g4Nl8zMikpCj4gKwkJCS8qIFdoaWxlIHdlIGhhdmUgYSBwcm9saWZlcmF0aW9u IG9mIHNpemVfdCB2YXJpYWJsZXMKPiArCQkJICogd2UgY2Fubm90IHJlcHJlc2VudCB0aGUgZnVs bCBwcGd0dCBzaXplIG9uIDMyYml0LAo+ICsJCQkgKiBzbyBsaW1pdCBpdCB0byB0aGUgc2FtZSBz aXplIGFzIHRoZSBHR1RUIChjdXJyZW50bHkKPiArCQkJICogMkdpQikuCj4gKwkJCSAqLwo+ICsJ CQlwcGd0dC0+YmFzZS50b3RhbCA9IHRvX2k5MTUocHBndHQtPmJhc2UuZGV2KS0+Z3R0LmJhc2Uu dG90YWw7Cj4gKwl9IGVsc2Ugewo+ICsJCXBwZ3R0LT5iYXNlLnRvdGFsID0gMVVMTCA8PCA0ODsK PiArCQlyZXR1cm4gLUVQRVJNOyAvKiBOb3QgeWV0IGltcGxlbWVudGVkICovCj4gKwl9Cj4gKwo+ ICAgCXJldHVybiAwOwo+ICsKPiArZnJlZV9zY3JhdGNoOgo+ICsJZ2VuOF9mcmVlX3NjcmF0Y2go JnBwZ3R0LT5iYXNlKTsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIGdl bjZfZHVtcF9wcGd0dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmls ZSAqbSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IGQ1YmY5NTMuLmUy YjY4NGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC04OCw5ICs4 OCwxNyBAQCB0eXBlZGVmIHVpbnQ2NF90IGdlbjhfcGRlX3Q7Cj4gICAgKiBQRFBFICB8ICBQREUg IHwgIFBURSAgfCBvZmZzZXQKPiAgICAqIFRoZSBkaWZmZXJlbmNlIGFzIGNvbXBhcmVkIHRvIG5v cm1hbCB4ODYgMyBsZXZlbCBwYWdlIHRhYmxlIGlzIHRoZSBQRFBFcyBhcmUKPiAgICAqIHByb2dy YW1tZWQgdmlhIHJlZ2lzdGVyLgo+ICsgKgo+ICsgKiBHRU44IDQ4YiBsZWdhY3kgc3R5bGUgYWRk cmVzcyBpcyBkZWZpbmVkIGFzIGEgNCBsZXZlbCBwYWdlIHRhYmxlOgo+ICsgKiA0NzozOSB8IDM4 OjMwIHwgMjk6MjEgfCAyMDoxMiB8ICAxMTowCj4gKyAqIFBNTDRFIHwgUERQRSAgfCAgUERFICB8 ICBQVEUgIHwgb2Zmc2V0Cj4gICAgKi8KPiArI2RlZmluZSBHRU44X1BNTDRFU19QRVJfUE1MNAkJ NTEyCj4gKyNkZWZpbmUgR0VOOF9QTUw0RV9TSElGVAkJMzkKPiAgICNkZWZpbmUgR0VOOF9QRFBF X1NISUZUCQkJMzAKPiAtI2RlZmluZSBHRU44X1BEUEVfTUFTSwkJCTB4Mwo+ICsvKiBOQjogR0VO OF9QRFBFX01BU0sgaXMgdW50cnVlIGZvciAzMmIgcGxhdGZvcm1zLCBidXQgaXQgaGFzIG5vIGlt cGFjdCBvbiAzMmIgcGFnZQo+ICsgKiB0YWJsZXMgKi8KPiArI2RlZmluZSBHRU44X1BEUEVfTUFT SwkJCTB4MWZmCj4gICAjZGVmaW5lIEdFTjhfUERFX1NISUZUCQkJMjEKPiAgICNkZWZpbmUgR0VO OF9QREVfTUFTSwkJCTB4MWZmCj4gICAjZGVmaW5lIEdFTjhfUFRFX1NISUZUCQkJMTIKPiBAQCAt OTgsNiArMTA2LDkgQEAgdHlwZWRlZiB1aW50NjRfdCBnZW44X3BkZV90Owo+ICAgI2RlZmluZSBH RU44X0xFR0FDWV9QRFBFUwkJNAo+ICAgI2RlZmluZSBHRU44X1BURVMJCQlJOTE1X1BURVMoc2l6 ZW9mKGdlbjhfcHRlX3QpKQo+Cj4gKyNkZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQKGRldikgKFVT RVNfRlVMTF80OEJJVF9QUEdUVChkZXYpID9cCj4gKwkJCQlHRU44X1BNTDRFU19QRVJfUE1MNCA6 IEdFTjhfTEVHQUNZX1BEUEVTKQo+ICsKPiAgICNkZWZpbmUgUFBBVF9VTkNBQ0hFRF9JTkRFWAkJ KF9QQUdFX1BXVCB8IF9QQUdFX1BDRCkKPiAgICNkZWZpbmUgUFBBVF9DQUNIRURfUERFX0lOREVY CQkwIC8qIFdCIExMQyAqLwo+ICAgI2RlZmluZSBQUEFUX0NBQ0hFRF9JTkRFWAkJX1BBR0VfUEFU IC8qIFdCIExMQ2VMTEMgKi8KPiBAQCAtMjQxLDkgKzI1MiwxNyBAQCBzdHJ1Y3QgaTkxNV9wYWdl X2RpcmVjdG9yeSB7Cj4gICB9Owo+Cj4gICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2lu dGVyIHsKPiAtCS8qIHN0cnVjdCBwYWdlICpwYWdlOyAqLwo+IC0JREVDTEFSRV9CSVRNQVAodXNl ZF9wZHBlcywgR0VOOF9MRUdBQ1lfUERQRVMpOwo+IC0Jc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKnBhZ2VfZGlyZWN0b3J5W0dFTjhfTEVHQUNZX1BEUEVTXTsKPiArCXN0cnVjdCBpOTE1X3Bh Z2VfZG1hIGJhc2U7Cj4gKwo+ICsJdW5zaWduZWQgbG9uZyAqdXNlZF9wZHBlczsKPiArCXN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICoqcGFnZV9kaXJlY3Rvcnk7Cj4gK307Cj4gKwo+ICtzdHJ1 Y3QgaTkxNV9wbWw0IHsKPiArCXN0cnVjdCBpOTE1X3BhZ2VfZG1hIGJhc2U7Cj4gKwo+ICsJREVD TEFSRV9CSVRNQVAodXNlZF9wbWw0ZXMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KTsKPiArCXN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgKnBkcHNbR0VOOF9QTUw0RVNfUEVSX1BNTDRd Owo+ICAgfTsKPgo+ICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7Cj4gQEAgLTM0MSw4ICsz NjAsOSBAQCBzdHJ1Y3QgaTkxNV9od19wcGd0dCB7Cj4gICAJc3RydWN0IGRybV9tbV9ub2RlIG5v ZGU7Cj4gICAJdW5zaWduZWQgbG9uZyBwZF9kaXJ0eV9yaW5nczsKPiAgIAl1bmlvbiB7Cj4gLQkJ c3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciBwZHA7Cj4gLQkJc3RydWN0IGk5MTVf cGFnZV9kaXJlY3RvcnkgcGQ7Cj4gKwkJc3RydWN0IGk5MTVfcG1sNCBwbWw0OwkJLyogR0VOOCsg JiA0OGIgUFBHVFQgKi8KPiArCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyIHBk cDsJLyogR0VOOCsgKi8KPiArCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSBwZDsJCS8qIEdF TjYtNyAqLwo+ICAgCX07Cj4KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxl X3ByaXY7Cj4gQEAgLTQzNiwxNCArNDU2LDE3IEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2Vu Nl9wZGVfaW5kZXgodWludDMyX3QgYWRkcikKPiAgIAkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVu Z3RoKSwJCQkJCVwKPiAgIAkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQo+Cj4g LSNkZWZpbmUgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAs IGl0ZXIpCQlcCj4gLQlmb3IgKGl0ZXIgPSBnZW44X3BkcGVfaW5kZXgoc3RhcnQpOwlcCj4gLQkg ICAgIHBkID0gKHBkcCktPnBhZ2VfZGlyZWN0b3J5W2l0ZXJdLCBsZW5ndGggPiAwICYmIGl0ZXIg PCBHRU44X0xFR0FDWV9QRFBFUzsJXAo+ICsjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZV9lKHBk LCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIsIGIpCVwKPiArCWZvciAoaXRlciA9IGdl bjhfcGRwZV9pbmRleChzdGFydCk7IFwKPiArCSAgICAgcGQgPSAocGRwKS0+cGFnZV9kaXJlY3Rv cnlbaXRlcl0sIGxlbmd0aCA+IDAgJiYgKGl0ZXIgPCBiKTsJXAo+ICAgCSAgICAgaXRlcisrLAkJ CQlcCj4gICAJICAgICB0ZW1wID0gQUxJR04oc3RhcnQrMSwgMSA8PCBHRU44X1BEUEVfU0hJRlQp IC0gc3RhcnQsCVwKPiAgIAkgICAgIHRlbXAgPSBtaW4odGVtcCwgbGVuZ3RoKSwJCQkJCVwKPiAg IAkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQo+Cj4gKyNkZWZpbmUgZ2VuOF9m b3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0ZXIpCQlcCj4gKwln ZW44X2Zvcl9lYWNoX3BkcGVfZShwZCwgcGRwLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyLCBJ OTE1X1BEUEVTX1BFUl9QRFAoZGV2KSkKPiArCj4gICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGdl bjhfcHRlX2luZGV4KHVpbnQ2NF90IGFkZHJlc3MpCj4gICB7Cj4gICAJcmV0dXJuIGk5MTVfcHRl X2luZGV4KGFkZHJlc3MsIEdFTjhfUERFX1NISUZUKTsKPgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=