From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 09/13] drm/i915: Calculate ILK-style watermarks during atomic check (v2) Date: Fri, 28 Aug 2015 15:56:27 +0300 Message-ID: <1440766587.5933.6.camel@gmail.com> References: <1440119524-13867-1-git-send-email-matthew.d.roper@intel.com> <1440119524-13867-10-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f53.google.com (mail-pa0-f53.google.com [209.85.220.53]) by gabe.freedesktop.org (Postfix) with ESMTPS id 784D36E35C for ; Fri, 28 Aug 2015 05:56:30 -0700 (PDT) Received: by pacdd16 with SMTP id dd16so62273225pac.2 for ; Fri, 28 Aug 2015 05:56:30 -0700 (PDT) In-Reply-To: <1440119524-13867-10-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE1LTA4LTIwIGF0IDE4OjEyIC0wNzAwLCBNYXR0IFJvcGVyIHdyb3RlOgo+IENh bGN1bGF0ZSBwaXBlIHdhdGVybWFya3MgZHVyaW5nIGF0b21pYyBjYWxjdWxhdGlvbiBwaGFzZSwg YmFzZWQgb24gdGhlCj4gY29udGVudHMgb2YgdGhlIGF0b21pYyB0cmFuc2FjdGlvbidzIHN0YXRl IHN0cnVjdHVyZS4gIFdlIHN0aWxsIHByb2dyYW0KPiB0aGUgd2F0ZXJtYXJrcyBhdCB0aGUgc2Ft ZSB0aW1lIHdlIGRpZCBiZWZvcmUsIGJ1dCB0aGUgY29tcHV0YXRpb24gbm93Cj4gaGFwcGVucyBt dWNoIGVhcmxpZXIuCj4gCj4gV2hpbGUgdGhpcyBwYXRjaCBpc24ndCB0b28gZXhjaXRpbmcgYnkg aXRzZWxmLCBpdCBwYXZlcyB0aGUgd2F5IGZvcgo+IGZ1dHVyZSBwYXRjaGVzLiAgVGhlIGV2ZW50 dWFsIGdvYWwgKHdoaWNoIHdpbGwgYmUgcmVhbGl6ZWQgaW4gZnV0dXJlCj4gcGF0Y2hlcyBpbiB0 aGlzIHNlcmllcykgaXMgdG8gY2FsY3VsYXRlIG11bHRpcGxlIHNldHMgdXAgd2F0ZXJtYXJrCj4g dmFsdWVzIHVwIGZyb250LCBhbmQgdGhlbiBwcm9ncmFtIHRoZW0gYXQgZGlmZmVyZW50IHRpbWVz IChwcmUtIHZzCj4gcG9zdC12YmxhbmspIG9uIHRoZSBwbGF0Zm9ybXMgdGhhdCBuZWVkIGEgdHdv LXN0ZXAgd2F0ZXJtYXJrIHVwZGF0ZS4KPiAKPiBXaGlsZSB3ZSdyZSBhdCBpdCwgcy9pbnRlbF9j b21wdXRlX3BpcGVfd20vaWxrX2NvbXB1dGVfcGlwZV93bS8gc2luY2UKPiB0aGlzIGZ1bmN0aW9u IG9ubHkgYXBwbGllcyB0byBJTEstc3R5bGUgd2F0ZXJtYXJrcyBhbmQgd2UgaGF2ZSBhCj4gY29t cGxldGVseSBkaWZmZXJlbnQgZnVuY3Rpb24gZm9yIFNLTC1zdHlsZSB3YXRlcm1hcmtzLgo+IAo+ IE5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBtZW1jbXAoKSBpbiBpbGtfdXBkYXRl X3dtKCkgdG8gYXZvaWQKPiBjYWxsaW5nIGlsa19wcm9ncmFtX3dhdGVybWFya3MoKSBpZiB0aGUg d2F0ZXJtYXJrcyBoYWRuJ3QgY2hhbmdlZC4gIFRoaXMKPiBtZW1jbXAgdmFuaXNoZXMgaGVyZSwg d2hpY2ggbWVhbnMgd2UgbWF5IGRvIHNvbWUgdW5uZWNlc3NhcnkgcmVzdWx0Cj4gZ2VuZXJhdGlv biBhbmQgbWVyZ2luZyBpbiBjYXNlcyB3aGVyZSB3YXRlcm1hcmtzIGRpZG4ndCBjaGFuZ2UsIGJ1 dCB0aGUKPiBsb3dlci1sZXZlbCBmdW5jdGlvbiBpbGtfd3JpdGVfd21fdmFsdWVzIGFscmVhZHkg bWFrZXMgc3VyZSB0aGF0IHdlCj4gZG9uJ3QgYWN0dWFsbHkgdHJ5IHRvIHByb2dyYW0gdGhlIHdh dGVybWFyayByZWdpc3RlcnMgYWdhaW4uCj4gCj4gdjI6IFNxdWFzaCBhIGZldyBjb21taXRzIGZy b20gdGhlIG9yaWdpbmFsIHNlcmllcyB0b2dldGhlcjsgbm8gbG9uZ2VyCj4gICAgIGxlYXZlIHBy ZS1jYWxjdWxhdGVkIHdtJ3MgaW4gYSBzZXBhcmF0ZSB0ZW1wb3Jhcnkgc3RydWN0dXJlIHNpbmNl Cj4gICAgIGl0J3MgZWFzaWVyIHRvIGZvbGxvdyB0aGUgbG9naWMgaWYgd2UganVzdCBjdXQgb3Zl ciB0byB1c2luZyB0aGUKPiAgICAgcHJlLWNhbGN1bGF0ZWQgdmFsdWVzIGRpcmVjdGx5Lgo+IAo+ IFNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAyICsKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDYgKysrCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAgICAgIHwgODcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t Cj4gIDQgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggN2M1OGYzOC4uYzkxYmFiOSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02MjAsNiArNjIwLDggQEAgc3RydWN0IGRybV9p OTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJCQkgIGludCB0YXJnZXQsIGludCByZWZjbGssCj4gIAkJ CSAgc3RydWN0IGRwbGwgKm1hdGNoX2Nsb2NrLAo+ICAJCQkgIHN0cnVjdCBkcGxsICpiZXN0X2Ns b2NrKTsKPiArCWludCAoKmNvbXB1dGVfcGlwZV93bSkoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICsJCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiAgCXZvaWQgKCp1 cGRhdGVfd20pKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIAlpbnQgKCptb2Rlc2V0X2NhbGNf Y2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIAl2b2lkICgqbW9kZXNl dF9jb21taXRfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDZiY2MzZGEuLmM0MGYwMjUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTExNzkxLDYgKzExNzkxLDEy IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJfQo+ICAKPiAgCXJldCA9IDA7Cj4gKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29t cHV0ZV9waXBlX3dtKSB7Cj4gKwkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBl X3dtKGNydGMsIHN0YXRlKTsKPiArCQlpZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfQo+ ICsKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gIAkJaWYgKG1vZGVfY2hh bmdlZCkKPiAgCQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBlX2NvbmZpZyk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBkZmJmYmE5Li5mOWNhYzRiIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTQyNyw2ICsxNDI3LDggQEAgaW50ZWxfYXRv bWljX2dldF9jcnRjX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgaW50 IGludGVsX2F0b21pY19zZXR1cF9zY2FsZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKTsKPiAraW50IGludGVsX2NoZWNrX2NydGMoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICsJCSAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSk7CgpUaGlzIGZ1bmN0 aW9uIGlzIG5vdCBkZWZpbmVkIG9yIHVzZWQgYW55d2hlcmUgaW4gdGhlIHBhdGNoLgoKQW5kZXIK Cj4gIAo+ICAvKiBpbnRlbF9hdG9taWNfcGxhbmUuYyAqLwo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmludGVsX2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggMDRmYzA5Mi4uYmMyOTI2MCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0yMDQzLDkgKzIwNDMsMTEgQEAgc3RhdGljIHZv aWQgaWxrX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJ CQkJIGludCBsZXZlbCwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ ICsJCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpc3RhdGUsCj4gKwkJCQkgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpzcHJzdGF0ZSwKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmN1cnN0YXRlLAo+ICAJCQkJIHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqcmVzdWx0KQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICAJdWludDE2X3QgcHJp X2xhdGVuY3kgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdOwo+ICAJdWludDE2X3Qg c3ByX2xhdGVuY3kgPSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbbGV2ZWxdOwo+ICAJdWludDE2 X3QgY3VyX2xhdGVuY3kgPSBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3lbbGV2ZWxdOwo+IEBAIC0y MDU3LDI5ICsyMDU5LDExIEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX2xldmVsKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQljdXJfbGF0ZW5jeSAqPSA1 Owo+ICAJfQo+ICAKPiAtCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2X3ByaXYtPmRl diwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBzdGF0ZSA9Cj4gLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGludGVsX3BsYW5lLT5iYXNl LnN0YXRlKTsKPiAtCj4gLQkJc3dpdGNoIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlKSB7Cj4gLQkJ Y2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgo+IC0JCQlyZXN1bHQtPnByaV92YWwgPSBpbGtf Y29tcHV0ZV9wcmlfd20oY3N0YXRlLCBwc3RhdGUsCj4gLQkJCQkJCQkgICAgIHByaV9sYXRlbmN5 LAo+IC0JCQkJCQkJICAgICBsZXZlbCk7Cj4gLQkJCXJlc3VsdC0+ZmJjX3ZhbCA9IGlsa19jb21w dXRlX2ZiY193bShjc3RhdGUsIHBzdGF0ZSwKPiAtCQkJCQkJCSAgICAgcmVzdWx0LT5wcmlfdmFs KTsKPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgo+IC0JCQly ZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLCBwc3RhdGUsCj4gLQkJ CQkJCQkgICAgIHNwcl9sYXRlbmN5KTsKPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSBEUk1fUExBTkVf VFlQRV9DVVJTT1I6Cj4gLQkJCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShj c3RhdGUsIHBzdGF0ZSwKPiAtCQkJCQkJCSAgICAgY3VyX2xhdGVuY3kpOwo+IC0JCQlicmVhazsK PiAtCQl9Cj4gLQl9Cj4gLQo+ICsJcmVzdWx0LT5wcmlfdmFsID0gaWxrX2NvbXB1dGVfcHJpX3dt KGNzdGF0ZSwgcHJpc3RhdGUsCj4gKwkJCQkJICAgICBwcmlfbGF0ZW5jeSwgbGV2ZWwpOwo+ICsJ cmVzdWx0LT5zcHJfdmFsID0gaWxrX2NvbXB1dGVfc3ByX3dtKGNzdGF0ZSwgc3Byc3RhdGUsIHNw cl9sYXRlbmN5KTsKPiArCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3Rh dGUsIGN1cnN0YXRlLCBjdXJfbGF0ZW5jeSk7Cj4gKwlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29t cHV0ZV9mYmNfd20oY3N0YXRlLCBwcmlzdGF0ZSwgcmVzdWx0LT5wcmlfdmFsKTsKPiAgCXJlc3Vs dC0+ZW5hYmxlID0gdHJ1ZTsKPiAgfQo+ICAKPiBAQCAtMjM1OSwxNSArMjM0MywyMCBAQCBzdGF0 aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAg fQo+ICAKPiAgLyogQ29tcHV0ZSBuZXcgd2F0ZXJtYXJrcyBmb3IgdGhlIHBpcGUgKi8KPiAtc3Rh dGljIGJvb2wgaW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCj4gLQkJCQkgIHN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQo+ICtzdGF0aWMg aW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkgICAg ICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBpbnRlbF9waXBlX3dtICpw aXBlX3dtOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCWNvbnN0 IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g KwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSA9IE5VTEw7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICsJ c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHM7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnByaXN0YXRlID0gTlVMTDsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Byc3RhdGUg PSBOVUxMOwo+ICsJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXJzdGF0ZSA9IE5VTEw7Cj4g IAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiAgCS8qIExQ MCB3YXRlcm1hcmsgbWF4aW11bXMgZGVwZW5kIG9uIHRoaXMgcGlwZSBhbG9uZSAqLwo+ICAJc3Ry dWN0IGludGVsX3dtX2NvbmZpZyBjb25maWcgPSB7Cj4gQEAgLTIzNzUsMTEgKzIzNjQsMjYgQEAg c3RhdGljIGJvb2wgaW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCj4gIAl9Owo+ICAJc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7Cj4gIAo+ICsJ Y3MgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCWlmIChJU19F UlIoY3MpKQo+ICsJCXJldHVybiBQVFJfRVJSKGNzKTsKPiArCWVsc2UKPiArCQljc3RhdGUgPSB0 b19pbnRlbF9jcnRjX3N0YXRlKGNzKTsKPiArCj4gKwlwaXBlX3dtID0gJmNzdGF0ZS0+d20uYWN0 aXZlLmlsazsKPiArCj4gIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxf Y3J0YywgaW50ZWxfcGxhbmUpIHsKPiAtCQlpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PSBE Uk1fUExBTkVfVFlQRV9PVkVSTEFZKSB7Cj4gLQkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVf c3RhdGUoaW50ZWxfcGxhbmUtPmJhc2Uuc3RhdGUpOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gKwkJ cHMgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwKPiArCQkJCQkJJmludGVsX3Bs YW5lLT5iYXNlKTsKPiArCQlpZiAoSVNfRVJSKHBzKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIocHMp Owo+ICsKPiArCQlpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PSBEUk1fUExBTkVfVFlQRV9Q UklNQVJZKQo+ICsJCQlwcmlzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBzKTsKPiArCQll bHNlIGlmIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBFX09WRVJMQVkp Cj4gKwkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwo+ICsJCWVsc2UgaWYg KGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+ICsJCQlj dXJzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBzKTsKPiAgCX0KPiAgCj4gIAljb25maWcu c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4gQEAgLTIzODgsNyArMjM5Miw3 IEBAIHN0YXRpYyBib29sIGludGVsX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlLAo+ICAJCWRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPmRzdCkgIT0gZHJt X3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+c3JjKSA+PiAxNjsKPiAgCj4gIAlwaXBlX3dtLT5waXBl X2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0aXZlOwo+IC0JcGlwZV93bS0+c3ByaXRlc19lbmFi bGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4gKwlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBj b25maWcuc3ByaXRlc19lbmFibGVkOwo+ICAJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBjb25m aWcuc3ByaXRlc19zY2FsZWQ7Cj4gIAo+ICAJLyogSUxLL1NOQjogTFAyKyB3YXRlcm1hcmtzIG9u bHkgdy9vIHNwcml0ZXMgKi8KPiBAQCAtMjM5OSw3ICsyNDAzLDggQEAgc3RhdGljIGJvb2wgaW50 ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAlp ZiAoY29uZmlnLnNwcml0ZXNfc2NhbGVkKQo+ICAJCW1heF9sZXZlbCA9IDA7Cj4gIAo+IC0JaWxr X2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIDAsIGNzdGF0ZSwgJnBpcGVf d20tPndtWzBdKTsKPiArCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRj LCAwLCBjc3RhdGUsCj4gKwkJCSAgICAgcHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJnBp cGVfd20tPndtWzBdKTsKPiAgCj4gIAlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VM TChkZXYpKQo+ICAJCXBpcGVfd20tPmxpbmV0aW1lID0gaHN3X2NvbXB1dGVfbGluZXRpbWVfd20o ZGV2LCBjcnRjKTsKPiBAQCAtMjQwOSwxNCArMjQxNCwxNSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9j b21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCj4gIAkv KiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAqLwo+ICAJaWYgKCFpbGtfdmFsaWRhdGVfd21f bGV2ZWwoMCwgJm1heCwgJnBpcGVfd20tPndtWzBdKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWxrX2NvbXB1dGVfd21fcmVnX21heGltdW1zKGRldiwg MSwgJm1heCk7Cj4gIAo+ICAJZm9yIChsZXZlbCA9IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2 ZWwrKykgewo+ICAJCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3bSA9IHt9Owo+ICAKPiAtCQlpbGtf Y29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgaW50ZWxfY3J0YywgbGV2ZWwsIGNzdGF0ZSwgJndt KTsKPiArCQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgaW50ZWxfY3J0YywgbGV2ZWws IGNzdGF0ZSwKPiArCQkJCSAgICAgcHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJndtKTsK PiAgCj4gIAkJLyoKPiAgCQkgKiBEaXNhYmxlIGFueSB3YXRlcm1hcmsgbGV2ZWwgdGhhdCBleGNl ZWRzIHRoZQo+IEBAIC0yNDI5LDcgKzI0MzUsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jb21wdXRl X3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCQlwaXBlX3dtLT53 bVtsZXZlbF0gPSB3bTsKPiAgCX0KPiAgCj4gLQlyZXR1cm4gdHJ1ZTsKPiArCXJldHVybiAwOwo+ ICB9Cj4gIAo+ICAvKgo+IEBAIC0zNjk0LDcgKzM3MDAsNiBAQCBzdGF0aWMgdm9pZCBpbGtfdXBk YXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiAtCXN0cnVj dCBpbnRlbF9waXBlX3dtIHBpcGVfd20gPSB7fTsKPiAgCj4gIAkvKgo+ICAJICogSVZCIHdvcmth cm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJrcyBmb3IgYXQgbGVhc3QKPiBA QCAtMzcwOCwxMyArMzcxMyw2IEBAIHN0YXRpYyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJCWludGVsX3dhaXRfZm9yX3ZibGFuayhjcnRjLT5kZXYsIGludGVs X2NydGMtPnBpcGUpOwo+ICAJfQo+ICAKPiAtCWludGVsX2NvbXB1dGVfcGlwZV93bShjc3RhdGUs ICZwaXBlX3dtKTsKPiAtCj4gLQlpZiAoIW1lbWNtcCgmY3N0YXRlLT53bS5hY3RpdmUuaWxrLCAm cGlwZV93bSwgc2l6ZW9mKHBpcGVfd20pKSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JY3N0YXRlLT53 bS5hY3RpdmUuaWxrID0gcGlwZV93bTsKPiAtCj4gIAlpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKGRl dl9wcml2KTsKPiAgfQo+ICAKPiBAQCAtNjk5NCw2ICs2OTkyLDcgQEAgdm9pZCBpbnRlbF9pbml0 X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJICAgICghSVNfR0VONShkZXYpICYmIGRl dl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAmJgo+ICAJCSAgICAgZGV2X3ByaXYtPndtLnNwcl9s YXRlbmN5WzBdICYmIGRldl9wcml2LT53bS5jdXJfbGF0ZW5jeVswXSkpIHsKPiAgCQkJZGV2X3By aXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaWxrX3VwZGF0ZV93bTsKPiArCQkJZGV2X3ByaXYtPmRp c3BsYXkuY29tcHV0ZV9waXBlX3dtID0gaWxrX2NvbXB1dGVfcGlwZV93bTsKPiAgCQl9IGVsc2Ug ewo+ICAJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBkaXNwbGF5IHBsYW5lIGxhdGVu Y3kuICIKPiAgCQkJCSAgICAgICJEaXNhYmxlIEN4U1JcbiIpOwpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=