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:53:18 +0300 Message-ID: <1440766398.5933.4.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-f44.google.com (mail-pa0-f44.google.com [209.85.220.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id 316206EF12 for ; Fri, 28 Aug 2015 05:53:22 -0700 (PDT) Received: by pacdd16 with SMTP id dd16so62202712pac.2 for ; Fri, 28 Aug 2015 05:53:21 -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+ICsJCSAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSk7Cj4gIAo+ICAvKiBp bnRlbF9hdG9taWNfcGxhbmUuYyAqLwo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVs X2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCj4gaW5kZXggMDRmYzA5Mi4uYmMyOTI2MCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IEBAIC0yMDQzLDkgKzIwNDMsMTEgQEAgc3RhdGljIHZvaWQgaWxrX2NvbXB1 dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCQkJIGludCBsZXZl bCwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICsJCQkJIHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpc3RhdGUsCj4gKwkJCQkgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpzcHJzdGF0ZSwKPiArCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1cnN0 YXRlLAo+ICAJCQkJIHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqcmVzdWx0KQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICAJdWludDE2X3QgcHJpX2xhdGVuY3kgPSBk ZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2ZWxdOwo+ICAJdWludDE2X3Qgc3ByX2xhdGVuY3kg PSBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbbGV2ZWxdOwo+ICAJdWludDE2X3QgY3VyX2xhdGVu Y3kgPSBkZXZfcHJpdi0+d20uY3VyX2xhdGVuY3lbbGV2ZWxdOwo+IEBAIC0yMDU3LDI5ICsyMDU5 LDExIEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQljdXJfbGF0ZW5jeSAqPSA1Owo+ICAJfQo+ICAK PiAtCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2X3ByaXYtPmRldiwgaW50ZWxfY3J0 YywgaW50ZWxfcGxhbmUpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzdGF0ZSA9 Cj4gLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGludGVsX3BsYW5lLT5iYXNlLnN0YXRlKTsKPiAt Cj4gLQkJc3dpdGNoIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlKSB7Cj4gLQkJY2FzZSBEUk1fUExB TkVfVFlQRV9QUklNQVJZOgo+IC0JCQlyZXN1bHQtPnByaV92YWwgPSBpbGtfY29tcHV0ZV9wcmlf d20oY3N0YXRlLCBwc3RhdGUsCj4gLQkJCQkJCQkgICAgIHByaV9sYXRlbmN5LAo+IC0JCQkJCQkJ ICAgICBsZXZlbCk7Cj4gLQkJCXJlc3VsdC0+ZmJjX3ZhbCA9IGlsa19jb21wdXRlX2ZiY193bShj c3RhdGUsIHBzdGF0ZSwKPiAtCQkJCQkJCSAgICAgcmVzdWx0LT5wcmlfdmFsKTsKPiAtCQkJYnJl YWs7Cj4gLQkJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgo+IC0JCQlyZXN1bHQtPnNwcl92 YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLCBwc3RhdGUsCj4gLQkJCQkJCQkgICAgIHNw cl9sYXRlbmN5KTsKPiAtCQkJYnJlYWs7Cj4gLQkJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6 Cj4gLQkJCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3RhdGUsIHBzdGF0 ZSwKPiAtCQkJCQkJCSAgICAgY3VyX2xhdGVuY3kpOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQl9 Cj4gLQo+ICsJcmVzdWx0LT5wcmlfdmFsID0gaWxrX2NvbXB1dGVfcHJpX3dtKGNzdGF0ZSwgcHJp c3RhdGUsCj4gKwkJCQkJICAgICBwcmlfbGF0ZW5jeSwgbGV2ZWwpOwo+ICsJcmVzdWx0LT5zcHJf dmFsID0gaWxrX2NvbXB1dGVfc3ByX3dtKGNzdGF0ZSwgc3Byc3RhdGUsIHNwcl9sYXRlbmN5KTsK PiArCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3RhdGUsIGN1cnN0YXRl LCBjdXJfbGF0ZW5jeSk7Cj4gKwlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0ZV9mYmNfd20o Y3N0YXRlLCBwcmlzdGF0ZSwgcmVzdWx0LT5wcmlfdmFsKTsKPiAgCXJlc3VsdC0+ZW5hYmxlID0g dHJ1ZTsKPiAgfQo+ICAKPiBAQCAtMjM1OSwxNSArMjM0MywyMCBAQCBzdGF0aWMgdm9pZCBpbGtf Y29tcHV0ZV93bV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgfQo+ICAKPiAgLyog Q29tcHV0ZSBuZXcgd2F0ZXJtYXJrcyBmb3IgdGhlIHBpcGUgKi8KPiAtc3RhdGljIGJvb2wgaW50 ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gLQkJ CQkgIHN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtKQo+ICtzdGF0aWMgaW50IGlsa19jb21w dXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkgICAgICAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBj c3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtOwo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNzOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IE5V TEw7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+ICsJc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqcHM7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnByaXN0YXRlID0g TlVMTDsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Byc3RhdGUgPSBOVUxMOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXJzdGF0ZSA9IE5VTEw7Cj4gIAlpbnQgbGV2ZWws IG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPiAgCS8qIExQMCB3YXRlcm1hcmsg bWF4aW11bXMgZGVwZW5kIG9uIHRoaXMgcGlwZSBhbG9uZSAqLwo+ICAJc3RydWN0IGludGVsX3dt X2NvbmZpZyBjb25maWcgPSB7Cj4gQEAgLTIzNzUsMTEgKzIzNjQsMjYgQEAgc3RhdGljIGJvb2wg aW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4g IAl9Owo+ICAJc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7Cj4gIAo+ICsJY3MgPSBkcm1fYXRv bWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCWlmIChJU19FUlIoY3MpKQo+ICsJ CXJldHVybiBQVFJfRVJSKGNzKTsKPiArCWVsc2UKPiArCQljc3RhdGUgPSB0b19pbnRlbF9jcnRj X3N0YXRlKGNzKTsKCllvdSBjb3VsZCByZXBsYWNlIHRoaXMgd2l0aCBpbnRlbF9hdG9taWNfZ2V0 X2NydGNfc3RhdGUoKS4gTWF5YmUgZXZlbiBwYXNzIGFuIGludGVsX2NydGMgdG8gdGhpcwpmdW5j dGlvbiBpbnN0ZWFkIG9mIGEgZHJtIG9uZSwgc2luY2UgdGhlcmUgaXMgb25seSBvbmUgb3RoZXIg cGxhY2UgYmVzaWRlcyB0aGlzIHdoZXJlIHRoZSBkcm0gb25lIGlzCnVzZWQuCgpBbmRlcgoKPiAr Cj4gKwlwaXBlX3dtID0gJmNzdGF0ZS0+d20uYWN0aXZlLmlsazsKPiArCj4gIAlmb3JfZWFjaF9p bnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKPiAtCQlp ZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKSB7Cj4g LQkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoaW50ZWxfcGxhbmUtPmJhc2Uuc3Rh dGUpOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gKwkJcHMgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9z dGF0ZShzdGF0ZSwKPiArCQkJCQkJJmludGVsX3BsYW5lLT5iYXNlKTsKPiArCQlpZiAoSVNfRVJS KHBzKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIocHMpOwo+ICsKPiArCQlpZiAoaW50ZWxfcGxhbmUt PmJhc2UudHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQo+ICsJCQlwcmlzdGF0ZSA9IHRv X2ludGVsX3BsYW5lX3N0YXRlKHBzKTsKPiArCQllbHNlIGlmIChpbnRlbF9wbGFuZS0+YmFzZS50 eXBlID09IERSTV9QTEFORV9UWVBFX09WRVJMQVkpCj4gKwkJCXNwcnN0YXRlID0gdG9faW50ZWxf cGxhbmVfc3RhdGUocHMpOwo+ICsJCWVsc2UgaWYgKGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0g RFJNX1BMQU5FX1RZUEVfQ1VSU09SKQo+ICsJCQljdXJzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0 YXRlKHBzKTsKPiAgCX0KPiAgCj4gIAljb25maWcuc3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUt PnZpc2libGU7Cj4gQEAgLTIzODgsNyArMjM5Miw3IEBAIHN0YXRpYyBib29sIGludGVsX2NvbXB1 dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJCWRybV9yZWN0 X2hlaWdodCgmc3Byc3RhdGUtPmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+c3Jj KSA+PiAxNjsKPiAgCj4gIAlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0 aXZlOwo+IC0JcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnZpc2libGU7Cj4g KwlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBjb25maWcuc3ByaXRlc19lbmFibGVkOwo+ICAJ cGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBjb25maWcuc3ByaXRlc19zY2FsZWQ7Cj4gIAo+ICAJ LyogSUxLL1NOQjogTFAyKyB3YXRlcm1hcmtzIG9ubHkgdy9vIHNwcml0ZXMgKi8KPiBAQCAtMjM5 OSw3ICsyNDAzLDggQEAgc3RhdGljIGJvb2wgaW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAlpZiAoY29uZmlnLnNwcml0ZXNfc2NhbGVkKQo+ ICAJCW1heF9sZXZlbCA9IDA7Cj4gIAo+IC0JaWxrX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYs IGludGVsX2NydGMsIDAsIGNzdGF0ZSwgJnBpcGVfd20tPndtWzBdKTsKPiArCWlsa19jb21wdXRl X3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCAwLCBjc3RhdGUsCj4gKwkJCSAgICAgcHJp c3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJnBpcGVfd20tPndtWzBdKTsKPiAgCj4gIAlpZiAo SVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKQo+ICAJCXBpcGVfd20tPmxpbmV0 aW1lID0gaHN3X2NvbXB1dGVfbGluZXRpbWVfd20oZGV2LCBjcnRjKTsKPiBAQCAtMjQwOSwxNCAr MjQxNCwxNSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCj4gIAkvKiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxp ZCAqLwo+ICAJaWYgKCFpbGtfdmFsaWRhdGVfd21fbGV2ZWwoMCwgJm1heCwgJnBpcGVfd20tPndt WzBdKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWxr X2NvbXB1dGVfd21fcmVnX21heGltdW1zKGRldiwgMSwgJm1heCk7Cj4gIAo+ICAJZm9yIChsZXZl bCA9IDE7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+ICAJCXN0cnVjdCBpbnRlbF93 bV9sZXZlbCB3bSA9IHt9Owo+ICAKPiAtCQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwg aW50ZWxfY3J0YywgbGV2ZWwsIGNzdGF0ZSwgJndtKTsKPiArCQlpbGtfY29tcHV0ZV93bV9sZXZl bChkZXZfcHJpdiwgaW50ZWxfY3J0YywgbGV2ZWwsIGNzdGF0ZSwKPiArCQkJCSAgICAgcHJpc3Rh dGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJndtKTsKPiAgCj4gIAkJLyoKPiAgCQkgKiBEaXNhYmxl IGFueSB3YXRlcm1hcmsgbGV2ZWwgdGhhdCBleGNlZWRzIHRoZQo+IEBAIC0yNDI5LDcgKzI0MzUs NyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPiAgCQlwaXBlX3dtLT53bVtsZXZlbF0gPSB3bTsKPiAgCX0KPiAgCj4g LQlyZXR1cm4gdHJ1ZTsKPiArCXJldHVybiAwOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0zNjk0LDcg KzM3MDAsNiBAQCBzdGF0aWMgdm9pZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRlbF9jcnRj X3N0YXRlKGNydGMtPnN0YXRlKTsKPiAtCXN0cnVjdCBpbnRlbF9waXBlX3dtIHBpcGVfd20gPSB7 fTsKPiAgCj4gIAkvKgo+ICAJICogSVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93 ZXIgd2F0ZXJtYXJrcyBmb3IgYXQgbGVhc3QKPiBAQCAtMzcwOCwxMyArMzcxMyw2IEBAIHN0YXRp YyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCWludGVsX3dh aXRfZm9yX3ZibGFuayhjcnRjLT5kZXYsIGludGVsX2NydGMtPnBpcGUpOwo+ICAJfQo+ICAKPiAt CWludGVsX2NvbXB1dGVfcGlwZV93bShjc3RhdGUsICZwaXBlX3dtKTsKPiAtCj4gLQlpZiAoIW1l bWNtcCgmY3N0YXRlLT53bS5hY3RpdmUuaWxrLCAmcGlwZV93bSwgc2l6ZW9mKHBpcGVfd20pKSkK PiAtCQlyZXR1cm47Cj4gLQo+IC0JY3N0YXRlLT53bS5hY3RpdmUuaWxrID0gcGlwZV93bTsKPiAt Cj4gIAlpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKGRldl9wcml2KTsKPiAgfQo+ICAKPiBAQCAtNjk5 NCw2ICs2OTkyLDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAkJICAgICghSVNfR0VONShkZXYpICYmIGRldl9wcml2LT53bS5wcmlfbGF0ZW5jeVswXSAm Jgo+ICAJCSAgICAgZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5WzBdICYmIGRldl9wcml2LT53bS5j dXJfbGF0ZW5jeVswXSkpIHsKPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaWxr X3VwZGF0ZV93bTsKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtID0gaWxr X2NvbXB1dGVfcGlwZV93bTsKPiAgCQl9IGVsc2Ugewo+ICAJCQlEUk1fREVCVUdfS01TKCJGYWls ZWQgdG8gcmVhZCBkaXNwbGF5IHBsYW5lIGxhdGVuY3kuICIKPiAgCQkJCSAgICAgICJEaXNhYmxl IEN4U1JcbiIpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=