From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v6 02/19] drm/i915/gen8: Make pdp allocation more dynamic Date: Wed, 5 Aug 2015 17:31:11 +0200 Message-ID: <20150805153111.GZ17734@phenom.ffwll.local> References: <1438187043-34267-1-git-send-email-michel.thierry@intel.com> <1438187043-34267-3-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id E09A36E91F for ; Wed, 5 Aug 2015 08:31:14 -0700 (PDT) Received: by wibhh20 with SMTP id hh20so29777039wib.0 for ; Wed, 05 Aug 2015 08:31:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1438187043-34267-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 Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMjksIDIwMTUgYXQgMDU6MjM6NDZQTSArMDEwMCwgTWljaGVsIFRoaWVycnkg d3JvdGU6Cj4gVGhpcyB0cmFuc2l0aW9uYWwgcGF0Y2ggZG9lc24ndCBkbyBtdWNoIGZvciB0aGUg ZXhpc3RpbmcgY29kZS4gSG93ZXZlciwKPiBpdCBzaG91bGQgbWFrZSB1cGNvbWluZyBwYXRjaGVz IHRvIHVzZSB0aGUgZnVsbCA0OGIgYWRkcmVzcyBzcGFjZSBhIGJpdAo+IGVhc2llci4KCmNvbW1p dCBtZXNzYWdlIHNob3VsZCBhbHNvIG1lbnRpb24gaG93IGV4YWN0bHkgaXQncyBtb3JlIGR5bmFt aWMgYW5kIHdoeQpleGFjdGx5IHRoYXQncyB1c2VmdWwgLi4uIEl0J3Mgb2ZjIHBvc3NpYmxlIHRv IGluZmVyIHRoYXQgZnJvbSB0aGUKY29udGV4dCwgYnV0IHRoYXQgd29uJ3QgYmUgdGhlIGNhc2Ug YW55IG1vcmUgaWYgeW91IGxvb2sgYXQgdGhlIHBhdGNoCmFsb25lICh3aXRoIGdpdCBibGFtZSBv ciBhZnRlciBhIGJpc2VjdCkuIFBsZWFzZSBmb2xsb3cgdXAgd2l0aCBhIGZldwp3b3JkcyBzbyBJ IGNhbiBhZGQgdGhlbSB0byB0aGUgY29tbWl0IG1lc3NhZ2UuCi1EYW5pZWwKCj4gCj4gdjI6IFJl bmFtZWQgIHBkcF9mcmVlIHRvIGJlIHNpbWlsYXIgdG8gIHBkL3B0ICh1bm1hcF9hbmRfZnJlZV9w ZHApLgo+IHYzOiBUbyBmYWNpbGl0YXRlIHRlc3RpbmcsIDQ4YiBtb2RlIHdpbGwgYmUgYXZhaWxh YmxlIG9uIEJyb2Fkd2VsbCBhbmQKPiBHRU45Kywgd2hlbiBpOTE1LmVuYWJsZV9wcGd0dCA9IDMu Cj4gdjQ6IFJlYmFzZSBhZnRlciBzL3BhZ2VfdGFibGVzL3BhZ2VfdGFibGUvLCBhZGRlZCBleHRy YSBpbmZvcm1hdGlvbgo+IGFib3V0IDQtbGV2ZWwgcGFnZSB0YWJsZSBmb3JtYXRzIGFuZCB1c2Ug SVNfRU5BQkxFRCBtYWNyby4KPiB2NTogQ2hlY2sgQ09ORklHX1g4Nl82NCBpbnN0ZWFkIG9mIENP TkZJR182NEJJVC4KPiB2NjogUmViYXNlIGFmdGVyIE1pa2EncyBwcGd0dCBjbGVhbnVwIC8gc2Ny YXRjaCBtZXJnZSBwYXRjaCBzZXJpZXMsIGFuZAo+IGZvbGxvdwo+IGhpcyBub21lbmNsYXR1cmUg aW4gcGRwIGZ1bmN0aW9ucyAodGhlcmUgaXMgbm8gYWxsb2NfcGRwIHlldCkuCj4gdjc6IFJlYmFz ZSBhZnRlciBtZXJnZWQgdmVyc2lvbiBvZiBNaWthJ3MgcHBndHQgY2xlYW51cCBwYXRjaCBzZXJp ZXMuCj4gdjg6IFJlYmFzZSBhZnRlciBmaW5hbCBtZXJnZWQgdmVyc2lvbiBvZiBNaWthJ3MgcHBn dHQvc2NyYXRjaCBwYXRjaGVzLgo+IHY5OiBJbnRyb2R1Y2UgUE1MNCAoYW5kIDQ4LWJpdCBjaGVj a3MpIHVudGlsIG5leHQgcGF0Y2ggKEFrYXNoKS4KPiB2MTA6IEFsc28gdXNlIHRlc3RfYml0IHRv IGRldGVjdCB3aGVuIHBkL3B0IGFyZSBhbHJlYWR5IGFsbG9jYXRlZCAoQWthc2gpCj4gCj4gQ2M6 IEFrYXNoIEdvZWwgPGFrYXNoLmdvZWxAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEJlbiBX aWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJy eSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPiAodjIrKQo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDg2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggfCAxNyArKysr Ky0tLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMTg5NTcyZC4uMjhm MzIyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTUyMiw2ICs1 MjIsNDMgQEAgc3RhdGljIHZvaWQgZ2VuOF9pbml0aWFsaXplX3BkKHN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtLAo+ICAJZmlsbF9weCh2bS0+ZGV2LCBwZCwgc2NyYXRjaF9wZGUpOwo+ICB9 Cj4gIAo+ICtzdGF0aWMgaW50IF9fcGRwX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAr CQkgICAgICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpwZHApCj4gK3sKPiAr CXNpemVfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChkZXYpOwo+ICsKPiArCXBkcC0+dXNl ZF9wZHBlcyA9IGtjYWxsb2MoQklUU19UT19MT05HUyhwZHBlcyksCj4gKwkJCQkgIHNpemVvZih1 bnNpZ25lZCBsb25nKSwKPiArCQkJCSAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXBkcC0+dXNlZF9w ZHBlcykKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwlwZHAtPnBhZ2VfZGlyZWN0b3J5ID0g a2NhbGxvYyhwZHBlcywgc2l6ZW9mKCpwZHAtPnBhZ2VfZGlyZWN0b3J5KSwKPiArCQkJCSAgICAg IEdGUF9LRVJORUwpOwo+ICsJaWYgKCFwZHAtPnBhZ2VfZGlyZWN0b3J5KSB7Cj4gKwkJa2ZyZWUo cGRwLT51c2VkX3BkcGVzKTsKPiArCQkvKiB0aGUgUERQIG1pZ2h0IGJlIHRoZSBzdGF0aWNhbGx5 IGFsbG9jYXRlZCB0b3AgbGV2ZWwuIEtlZXAgaXQKPiArCQkgKiBhcyBjbGVhbiBhcyBwb3NzaWJs ZSAqLwo+ICsJCXBkcC0+dXNlZF9wZHBlcyA9IE5VTEw7Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fcGRwX2Zpbmko c3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwKQo+ICt7Cj4gKwlrZnJlZShw ZHAtPnVzZWRfcGRwZXMpOwo+ICsJa2ZyZWUocGRwLT5wYWdlX2RpcmVjdG9yeSk7Cj4gKwlwZHAt PnBhZ2VfZGlyZWN0b3J5ID0gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnJlZV9wZHAo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkgICAgIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0 b3J5X3BvaW50ZXIgKnBkcCkKPiArewo+ICsJX19wZHBfZmluaShwZHApOwo+ICt9Cj4gKwo+ICAv KiBCcm9hZHdlbGwgUGFnZSBEaXJlY3RvcnkgUG9pbnRlciBEZXNjcmlwdG9ycyAqLwo+ICBzdGF0 aWMgaW50IGdlbjhfd3JpdGVfcGRwKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAJCQkgIHVuc2lnbmVkIGVudHJ5LAo+IEBAIC03MjAsNyArNzU3LDggQEAgc3RhdGljIHZvaWQg Z2VuOF9wcGd0dF9jbGVhbnVwKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAJCWNv bnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsIGJhc2UpOwo+ICAJaW50IGk7Cj4g IAo+IC0JZm9yX2VhY2hfc2V0X2JpdChpLCBwcGd0dC0+cGRwLnVzZWRfcGRwZXMsIEdFTjhfTEVH QUNZX1BEUEVTKSB7Cj4gKwlmb3JfZWFjaF9zZXRfYml0KGksIHBwZ3R0LT5wZHAudXNlZF9wZHBl cywKPiArCQkJIEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpKSB7Cj4gIAkJaWYg KFdBUk5fT04oIXBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pKQo+ICAJCQljb250aW51ZTsK PiAgCj4gQEAgLTcyOSw2ICs3NjcsNyBAQCBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFudXAo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gIAkJZnJlZV9wZChwcGd0dC0+YmFzZS5k ZXYsIHBwZ3R0LT5wZHAucGFnZV9kaXJlY3RvcnlbaV0pOwo+ICAJfQo+ICAKPiArCWZyZWVfcGRw KHBwZ3R0LT5iYXNlLmRldiwgJnBwZ3R0LT5wZHApOwo+ICAJZ2VuOF9mcmVlX3NjcmF0Y2godm0p Owo+ICB9Cj4gIAo+IEBAIC03NjMsNyArODAyLDcgQEAgc3RhdGljIGludCBnZW44X3BwZ3R0X2Fs bG9jX3BhZ2V0YWJzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCj4gIAlnZW44X2Zv cl9lYWNoX3BkZShwdCwgcGQsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIHBkZSkgewo+ICAJCS8qIERv bid0IHJlYWxsb2NhdGUgcGFnZSB0YWJsZXMgKi8KPiAtCQlpZiAocHQpIHsKPiArCQlpZiAodGVz dF9iaXQocGRlLCBwZC0+dXNlZF9wZGVzKSkgewo+ICAJCQkvKiBTY3JhdGNoIGlzIG5ldmVyIGFs bG9jYXRlZCB0aGlzIHdheSAqLwo+ICAJCQlXQVJOX09OKHB0ID09IHBwZ3R0LT5iYXNlLnNjcmF0 Y2hfcHQpOwo+ICAJCQljb250aW51ZTsKPiBAQCAtODIwLDExICs4NTksMTIgQEAgc3RhdGljIGlu dCBnZW44X3BwZ3R0X2FsbG9jX3BhZ2VfZGlyZWN0b3JpZXMoc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0LAo+ICAJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkOwo+ICAJdWludDY0X3Qg dGVtcDsKPiAgCXVpbnQzMl90IHBkcGU7Cj4gKwl1aW50MzJfdCBwZHBlcyA9IEk5MTVfUERQRVNf UEVSX1BEUChkZXYpOwo+ICAKPiAtCVdBUk5fT04oIWJpdG1hcF9lbXB0eShuZXdfcGRzLCBHRU44 X0xFR0FDWV9QRFBFUykpOwo+ICsJV0FSTl9PTighYml0bWFwX2VtcHR5KG5ld19wZHMsIHBkcGVz KSk7Cj4gIAo+ICAJZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRl bXAsIHBkcGUpIHsKPiAtCQlpZiAocGQpCj4gKwkJaWYgKHRlc3RfYml0KHBkcGUsIHBkcC0+dXNl ZF9wZHBlcykpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwZCA9IGFsbG9jX3BkKGRldik7Cj4g QEAgLTgzOSwxOCArODc5LDE5IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9hbGxvY19wYWdlX2Rp cmVjdG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCXJldHVybiAwOwo+ICAK PiAgdW53aW5kX291dDoKPiAtCWZvcl9lYWNoX3NldF9iaXQocGRwZSwgbmV3X3BkcywgR0VOOF9M RUdBQ1lfUERQRVMpCj4gKwlmb3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wZHMsIHBkcGVzKQo+ ICAJCWZyZWVfcGQoZGV2LCBwZHAtPnBhZ2VfZGlyZWN0b3J5W3BkcGVdKTsKPiAgCj4gIAlyZXR1 cm4gLUVOT01FTTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtZnJlZV9nZW44X3RlbXBfYml0 bWFwcyh1bnNpZ25lZCBsb25nICpuZXdfcGRzLCB1bnNpZ25lZCBsb25nICoqbmV3X3B0cykKPiAr ZnJlZV9nZW44X3RlbXBfYml0bWFwcyh1bnNpZ25lZCBsb25nICpuZXdfcGRzLCB1bnNpZ25lZCBs b25nICoqbmV3X3B0cywKPiArCQkgICAgICAgdWludDMyX3QgcGRwZXMpCj4gIHsKPiAgCWludCBp Owo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBHRU44X0xFR0FDWV9QRFBFUzsgaSsrKQo+ICsJZm9y IChpID0gMDsgaSA8IHBkcGVzOyBpKyspCj4gIAkJa2ZyZWUobmV3X3B0c1tpXSk7Cj4gIAlrZnJl ZShuZXdfcHRzKTsKPiAgCWtmcmVlKG5ld19wZHMpOwo+IEBAIC04NjEsMjMgKzkwMiwyNCBAQCBm cmVlX2dlbjhfdGVtcF9iaXRtYXBzKHVuc2lnbmVkIGxvbmcgKm5ld19wZHMsIHVuc2lnbmVkIGxv bmcgKipuZXdfcHRzKQo+ICAgKi8KPiAgc3RhdGljCj4gIGludCBfX211c3RfY2hlY2sgYWxsb2Nf Z2VuOF90ZW1wX2JpdG1hcHModW5zaWduZWQgbG9uZyAqKm5ld19wZHMsCj4gLQkJCQkJIHVuc2ln bmVkIGxvbmcgKioqbmV3X3B0cykKPiArCQkJCQkgdW5zaWduZWQgbG9uZyAqKipuZXdfcHRzLAo+ ICsJCQkJCSB1aW50MzJfdCBwZHBlcykKPiAgewo+ICAJaW50IGk7Cj4gIAl1bnNpZ25lZCBsb25n ICpwZHM7Cj4gIAl1bnNpZ25lZCBsb25nICoqcHRzOwo+ICAKPiAtCXBkcyA9IGtjYWxsb2MoQklU U19UT19MT05HUyhHRU44X0xFR0FDWV9QRFBFUyksIHNpemVvZih1bnNpZ25lZCBsb25nKSwgR0ZQ X0tFUk5FTCk7Cj4gKwlwZHMgPSBrY2FsbG9jKEJJVFNfVE9fTE9OR1MocGRwZXMpLCBzaXplb2Yo dW5zaWduZWQgbG9uZyksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCFwZHMpCj4gIAkJcmV0dXJuIC1F Tk9NRU07Cj4gIAo+IC0JcHRzID0ga2NhbGxvYyhHRU44X0xFR0FDWV9QRFBFUywgc2l6ZW9mKHVu c2lnbmVkIGxvbmcgKiksIEdGUF9LRVJORUwpOwo+ICsJcHRzID0ga2NhbGxvYyhwZHBlcywgc2l6 ZW9mKHVuc2lnbmVkIGxvbmcgKiksIEdGUF9LRVJORUwpOwo+ICAJaWYgKCFwdHMpIHsKPiAgCQlr ZnJlZShwZHMpOwo+ICAJCXJldHVybiAtRU5PTUVNOwo+ICAJfQo+ICAKPiAtCWZvciAoaSA9IDA7 IGkgPCBHRU44X0xFR0FDWV9QRFBFUzsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgcGRwZXM7 IGkrKykgewo+ICAJCXB0c1tpXSA9IGtjYWxsb2MoQklUU19UT19MT05HUyhJOTE1X1BERVMpLAo+ ICAJCQkJIHNpemVvZih1bnNpZ25lZCBsb25nKSwgR0ZQX0tFUk5FTCk7Cj4gIAkJaWYgKCFwdHNb aV0pCj4gQEAgLTg5MCw3ICs5MzIsNyBAQCBpbnQgX19tdXN0X2NoZWNrIGFsbG9jX2dlbjhfdGVt cF9iaXRtYXBzKHVuc2lnbmVkIGxvbmcgKipuZXdfcGRzLAo+ICAJcmV0dXJuIDA7Cj4gIAo+ICBl cnJfb3V0Ogo+IC0JZnJlZV9nZW44X3RlbXBfYml0bWFwcyhwZHMsIHB0cyk7Cj4gKwlmcmVlX2dl bjhfdGVtcF9iaXRtYXBzKHBkcywgcHRzLCBwZHBlcyk7Cj4gIAlyZXR1cm4gLUVOT01FTTsKPiAg fQo+ICAKPiBAQCAtOTE2LDYgKzk1OCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5n ZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCWNvbnN0IHVpbnQ2NF90IG9yaWdf bGVuZ3RoID0gbGVuZ3RoOwo+ICAJdWludDY0X3QgdGVtcDsKPiAgCXVpbnQzMl90IHBkcGU7Cj4g Kwl1aW50MzJfdCBwZHBlcyA9IEk5MTVfUERQRVNfUEVSX1BEUChwcGd0dC0+YmFzZS5kZXYpOwo+ ICAJaW50IHJldDsKPiAgCj4gIAkvKiBXcmFwIGlzIG5ldmVyIG9rYXkgc2luY2Ugd2UgY2FuIG9u bHkgcmVwcmVzZW50IDQ4YiwgYW5kIHdlIGRvbid0Cj4gQEAgLTkyNyw3ICs5NzAsNyBAQCBzdGF0 aWMgaW50IGdlbjhfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4gIAlpZiAoV0FSTl9PTihzdGFydCArIGxlbmd0aCA+IHBwZ3R0LT5iYXNlLnRvdGFsKSkKPiAg CQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLQlyZXQgPSBhbGxvY19nZW44X3RlbXBfYml0bWFwcygm bmV3X3BhZ2VfZGlycywgJm5ld19wYWdlX3RhYmxlcyk7Cj4gKwlyZXQgPSBhbGxvY19nZW44X3Rl bXBfYml0bWFwcygmbmV3X3BhZ2VfZGlycywgJm5ld19wYWdlX3RhYmxlcywgcGRwZXMpOwo+ICAJ aWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiBAQCAtOTM1LDcgKzk3OCw3IEBAIHN0YXRp YyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwK PiAgCXJldCA9IGdlbjhfcHBndHRfYWxsb2NfcGFnZV9kaXJlY3RvcmllcyhwcGd0dCwgJnBwZ3R0 LT5wZHAsIHN0YXJ0LCBsZW5ndGgsCj4gIAkJCQkJbmV3X3BhZ2VfZGlycyk7Cj4gIAlpZiAocmV0 KSB7Cj4gLQkJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9kaXJzLCBuZXdfcGFnZV90 YWJsZXMpOwo+ICsJCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywgbmV3X3Bh Z2VfdGFibGVzLCBwZHBlcyk7Cj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gQEAgLTk4OSw3 ICsxMDMyLDcgQEAgc3RhdGljIGludCBnZW44X2FsbG9jX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAo+ICAJCV9fc2V0X2JpdChwZHBlLCBwcGd0dC0+cGRwLnVzZWRfcGRw ZXMpOwo+ICAJfQo+ICAKPiAtCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGlycywg bmV3X3BhZ2VfdGFibGVzKTsKPiArCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2VfZGly cywgbmV3X3BhZ2VfdGFibGVzLCBwZHBlcyk7Cj4gIAltYXJrX3RsYnNfZGlydHkocHBndHQpOwo+ ICAJcmV0dXJuIDA7Cj4gIAo+IEBAIC05OTksMTAgKzEwNDIsMTAgQEAgZXJyX291dDoKPiAgCQkJ ZnJlZV9wdCh2bS0+ZGV2LCBwcGd0dC0+cGRwLnBhZ2VfZGlyZWN0b3J5W3BkcGVdLT5wYWdlX3Rh YmxlW3RlbXBdKTsKPiAgCX0KPiAgCj4gLQlmb3JfZWFjaF9zZXRfYml0KHBkcGUsIG5ld19wYWdl X2RpcnMsIEdFTjhfTEVHQUNZX1BEUEVTKQo+ICsJZm9yX2VhY2hfc2V0X2JpdChwZHBlLCBuZXdf cGFnZV9kaXJzLCBwZHBlcykKPiAgCQlmcmVlX3BkKHZtLT5kZXYsIHBwZ3R0LT5wZHAucGFnZV9k aXJlY3RvcnlbcGRwZV0pOwo+ICAKPiAtCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3BhZ2Vf ZGlycywgbmV3X3BhZ2VfdGFibGVzKTsKPiArCWZyZWVfZ2VuOF90ZW1wX2JpdG1hcHMobmV3X3Bh Z2VfZGlycywgbmV3X3BhZ2VfdGFibGVzLCBwZHBlcyk7Cj4gIAltYXJrX3RsYnNfZGlydHkocHBn dHQpOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IEBAIC0xMDQwLDcgKzEwODMsMTYgQEAgc3RhdGlj IGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAKPiAg CXBwZ3R0LT5zd2l0Y2hfbW0gPSBnZW44X21tX3N3aXRjaDsKPiAgCj4gKwlyZXQgPSBfX3BkcF9p bml0KGZhbHNlLCAmcHBndHQtPnBkcCk7Cj4gKwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZyZWVf c2NyYXRjaDsKPiArCj4gIAlyZXR1cm4gMDsKPiArCj4gK2ZyZWVfc2NyYXRjaDoKPiArCWdlbjhf ZnJlZV9zY3JhdGNoKCZwcGd0dC0+YmFzZSk7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZCBnZW42X2R1bXBfcHBndHQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBz dHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRl eCBkNWJmOTUzLi44N2UzODljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgK PiBAQCAtOTgsNiArOTgsOSBAQCB0eXBlZGVmIHVpbnQ2NF90IGdlbjhfcGRlX3Q7Cj4gICNkZWZp bmUgR0VOOF9MRUdBQ1lfUERQRVMJCTQKPiAgI2RlZmluZSBHRU44X1BURVMJCQlJOTE1X1BURVMo c2l6ZW9mKGdlbjhfcHRlX3QpKQo+ICAKPiArLyogRklYTUU6IE5leHQgcGF0Y2ggd2lsbCB1c2Ug ZGV2ICovCj4gKyNkZWZpbmUgSTkxNV9QRFBFU19QRVJfUERQKGRldikJCUdFTjhfTEVHQUNZX1BE UEVTCj4gKwo+ICAjZGVmaW5lIFBQQVRfVU5DQUNIRURfSU5ERVgJCShfUEFHRV9QV1QgfCBfUEFH RV9QQ0QpCj4gICNkZWZpbmUgUFBBVF9DQUNIRURfUERFX0lOREVYCQkwIC8qIFdCIExMQyAqLwo+ ICAjZGVmaW5lIFBQQVRfQ0FDSEVEX0lOREVYCQlfUEFHRV9QQVQgLyogV0IgTExDZUxMQyAqLwo+ IEBAIC0yNDEsOSArMjQ0LDEwIEBAIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5IHsKPiAgfTsK PiAgCj4gIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgewo+IC0JLyogc3RydWN0 IHBhZ2UgKnBhZ2U7ICovCj4gLQlERUNMQVJFX0JJVE1BUCh1c2VkX3BkcGVzLCBHRU44X0xFR0FD WV9QRFBFUyk7Cj4gLQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGFnZV9kaXJlY3Rvcnlb R0VOOF9MRUdBQ1lfUERQRVNdOwo+ICsJc3RydWN0IGk5MTVfcGFnZV9kbWEgYmFzZTsKPiArCj4g Kwl1bnNpZ25lZCBsb25nICp1c2VkX3BkcGVzOwo+ICsJc3RydWN0IGk5MTVfcGFnZV9kaXJlY3Rv cnkgKipwYWdlX2RpcmVjdG9yeTsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2Ugewo+IEBAIC00MzYsOSArNDQwLDEwIEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9w ZGVfaW5kZXgodWludDMyX3QgYWRkcikKPiAgCSAgICAgdGVtcCA9IG1pbih0ZW1wLCBsZW5ndGgp LAkJCQkJXAo+ICAJICAgICBzdGFydCArPSB0ZW1wLCBsZW5ndGggLT0gdGVtcCkKPiAgCj4gLSNk ZWZpbmUgZ2VuOF9mb3JfZWFjaF9wZHBlKHBkLCBwZHAsIHN0YXJ0LCBsZW5ndGgsIHRlbXAsIGl0 ZXIpCQlcCj4gLQlmb3IgKGl0ZXIgPSBnZW44X3BkcGVfaW5kZXgoc3RhcnQpOwlcCj4gLQkgICAg IHBkID0gKHBkcCktPnBhZ2VfZGlyZWN0b3J5W2l0ZXJdLCBsZW5ndGggPiAwICYmIGl0ZXIgPCBH RU44X0xFR0FDWV9QRFBFUzsJXAo+ICsjZGVmaW5lIGdlbjhfZm9yX2VhY2hfcGRwZShwZCwgcGRw LCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKQlcCj4gKwlmb3IgKGl0ZXIgPSBnZW44X3BkcGVf aW5kZXgoc3RhcnQpOyBcCj4gKwkgICAgIHBkID0gKHBkcCktPnBhZ2VfZGlyZWN0b3J5W2l0ZXJd LCBcCj4gKwkgICAgIGxlbmd0aCA+IDAgJiYgKGl0ZXIgPCBJOTE1X1BEUEVTX1BFUl9QRFAoZGV2 KSk7IFwKPiAgCSAgICAgaXRlcisrLAkJCQlcCj4gIAkgICAgIHRlbXAgPSBBTElHTihzdGFydCsx LCAxIDw8IEdFTjhfUERQRV9TSElGVCkgLSBzdGFydCwJXAo+ICAJICAgICB0ZW1wID0gbWluKHRl bXAsIGxlbmd0aCksCQkJCQlcCj4gLS0gCj4gMi40LjUKPiAKPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==