From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH v3.1 08/16] drm/i915/gen9: Compute DDB allocation at atomic check time (v3) Date: Tue, 3 May 2016 13:44:29 -0700 Message-ID: <20160503204429.GB28377@intel.com> References: <1461280630-7477-1-git-send-email-matthew.d.roper@intel.com> <1461280630-7477-9-git-send-email-matthew.d.roper@intel.com> <1d012cee-b3ec-e262-79bd-9c3845e6c303@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 F18756E69C for ; Tue, 3 May 2016 20:44:44 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1d012cee-b3ec-e262-79bd-9c3845e6c303@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMDIsIDIwMTYgYXQgMDI6NDI6NTFQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQ2FsY3VsYXRlIHRoZSBEREIgYmxvY2tzIG5lZWRlZCB0byBzYXRpc2Z5IHRo ZSBjdXJyZW50IGF0b21pYwo+IHRyYW5zYWN0aW9uIGF0IGF0b21pYyBjaGVjayB0aW1lLiAgVGhp cyBpcyBhIHByZXJlcXVpc2l0ZSB0byBjYWxjdWxhdGluZwo+IFNLTCB3YXRlcm1hcmtzIGR1cmlu ZyB0aGUgJ2NoZWNrJyBwaGFzZSBhbmQgcmVqZWN0aW5nIGFueSBjb25maWd1cmF0aW9ucwo+IHRo YXQgd2UgY2FuJ3QgZmluZCB2YWxpZCB3YXRlcm1hcmtzIGZvci4KPiAKPiBEdWUgdG8gdGhlIG5h dHVyZSBvZiBEREIgYWxsb2NhdGlvbiwgaXQncyBwb3NzaWJsZSBmb3IgdGhlIGFkZGl0aW9uIG9m IGEKPiBuZXcgQ1JUQyB0byBtYWtlIHRoZSB3YXRlcm1hcmsgY29uZmlndXJhdGlvbiBhbHJlYWR5 IGluIHVzZSBvbiBhbm90aGVyLAo+IHVuY2hhbmdlZCBDUlRDIGJlY29tZSBpbnZhbGlkLiAgQSBj aGFuZ2UgaW4gd2hpY2ggQ1JUQydzIGFyZSBhY3RpdmUKPiB0cmlnZ2VycyBhIHJlY29tcHV0ZSBv ZiB0aGUgZW50aXJlIEREQiwgd2hpY2ggdW5mb3J0dW5hdGVseSBtZWFucyB3ZQo+IG5lZWQgdG8g ZGlzYWxsb3cgYW55IG90aGVyIGF0b21pYyBjb21taXRzIGZyb20gcmFjaW5nIHdpdGggc3VjaCBh bgo+IHVwZGF0ZS4gIElmIHRoZSBhY3RpdmUgQ1JUQydzIGNoYW5nZSwgd2UgbmVlZCB0byBncmFi IHRoZSBsb2NrIG9uIGFsbAo+IENSVEMncyBhbmQgcnVuIGFsbCBDUlRDJ3MgdGhyb3VnaCB0aGVp ciAnY2hlY2snIGhhbmRsZXIgdG8gcmVjb21wdXRlIGFuZAo+IHJlLWNoZWNrIHRoZWlyIHBlci1D UlRDIEREQiBhbGxvY2F0aW9ucy4KPiAKPiBOb3RlIHRoYXQgd2l0aCB0aGlzIHBhdGNoIHdlIG9u bHkgY29tcHV0ZSB0aGUgRERCIGFsbG9jYXRpb24gYnV0IHdlCj4gZG9uJ3QgYWN0dWFsbHkgdXNl IHRoZSBjb21wdXRlZCB2YWx1ZXMgZHVyaW5nIHdhdGVybWFyayBwcm9ncmFtbWluZyB5ZXQuCj4g Rm9yIGVhc2Ugb2YgcmV2aWV3L3Rlc3RpbmcvYmlzZWN0aW5nLCB3ZSBzdGlsbCByZWNvbXB1dGUg dGhlIEREQiBhdAo+IHdhdGVybWFyayBwcm9ncmFtbWluZyB0aW1lIGFuZCBqdXN0IFdBUk4oKSBp ZiBpdCBkb2Vzbid0IG1hdGNoIHRoZQo+IHByZWNvbXB1dGVkIHZhbHVlcy4gIEEgZnV0dXJlIHBh dGNoIHdpbGwgc3dpdGNoIG92ZXIgdG8gdXNpbmcgdGhlCj4gcHJlY29tcHV0ZWQgdmFsdWVzIG9u Y2Ugd2UncmUgc3VyZSB0aGV5J3JlIGJlaW5nIHByb3Blcmx5IGNvbXB1dGVkLgo+IAo+IEFub3Ro ZXIgY2xhcmlmeWluZyBub3RlOiAgRERCIGFsbG9jYXRpb24gaXRzZWxmIHNob3VsZG4ndCBldmVy IGZhaWwgd2l0aAo+IHRoZSBhbGdvcml0aG0gd2UgdXNlIHRvZGF5IChpLmUuLCB3ZSBoYXZlIGVu b3VnaCBEREIgYmxvY2tzIG9uIEJYVCB0bwo+IHN1cHBvcnQgdGhlIG1pbmltdW0gbmVlZHMgb2Yg dGhlIHdvcnN0LWNhc2Ugc2NlbmFyaW8gb2YgZXZlcnkgcGlwZS9wbGFuZQo+IGVuYWJsZWQgYXQg ZnVsbCBzaXplKS4gIEhvd2V2ZXIgdGhlIHdhdGVybWFya3MgY2FsY3VsYXRpb25zIGJhc2VkIG9u IHRoZQo+IEREQiBtYXkgZmFpbCBhbmQgd2UnbGwgYmUgbW92aW5nIHRob3NlIHRvIHRoZSBhdG9t aWMgY2hlY2sgYXMgd2VsbCBpbgo+IGZ1dHVyZSBwYXRjaGVzLgo+IAo+IHYyOgo+ICAtIFNraXAg RERCIGNhbGN1bGF0aW9ucyBpbiB0aGUgcmFyZSBjYXNlIHdoZXJlIG91ciB0cmFuc2FjdGlvbiBk b2Vzbid0Cj4gICAgYWN0dWFsbHkgdG91Y2ggYW55IENSVEMncyBhdCBhbGwuICBBc3N1bWluZyBh dCBsZWFzdCBvbmUgQ1JUQyBzdGF0ZQo+ICAgIGlzIHByZXNlbnQgaW4gb3VyIHRyYW5zYWN0aW9u LCB0aGVuIGl0IG1lYW5zIHdlIGNhbid0IHJhY2Ugd2l0aCBhbnkKPiAgICB0cmFuc2FjdGlvbnMg dGhhdCB3b3VsZCB1cGRhdGUgZGV2X3ByaXYtPmFjdGl2ZV9jcnRjcyAod2hpY2ggcmVxdWlyZXMK PiAgICBfYWxsXyBDUlRDIGxvY2tzKS4KPiB2MzoKPiAgLSBBbHNvIGNhbGN1bGF0ZSBEREIgZHVy aW5nIGluaXRpYWwgaHcgcmVhZG91dCwgdG8gcHJldmVudCB1c2luZwo+ICAgIGluY29ycmVjdCBi aW9zIHZhbHVlcy4gKE1hYXJ0ZW4pCgpZZXAsIEkgc3VzcGVjdCB0aGlzIHNob3VsZCBmaXggdGhl IGZpbmFsIGJ1ZyByZXBvcnRlZCBieSBMeXVkZSBhbmQKb3RoZXJzIG9uIHRoaXMgcGF0Y2ggc2Vy aWVzLiAgSSB3b24ndCBoYXZlIGhhcmR3YXJlIGFjY2VzcyB0byBhY3R1YWxseQp0ZXN0IHRoaXMg b3V0IG15c2VsZiB1bnRpbCBuZXh0IHdlZWsgdGhvdWdoLgoKUmV2aWV3ZWQtYnk6IE1hdHQgUm9w ZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+CgpUaGFua3MgZm9yIHRha2luZyBjYXJlIG9m IHRoaXMgaW4gbXkgYWJzZW5jZSEKCkl0IG1pZ2h0IGJlIHdvcnRoIGFkZGluZyBhIHNtYWxsIGJs dXJiIHRvIHRoZSBjb21tZW50IHJpZ2h0IGFib3ZlIHRoZQpjaGVjayBvZiBza2lwX2ludGVybWVk aWF0ZV93bSB0byBleHBsYWluIHdoeSB3ZSdyZSBjaGVja2luZyB0aGF0IGZpZWxkOwppdCB3YXMg aW5pdGlhbGx5IGFkZGVkIGFuZCBuYW1lZCBmb3IgdGhlIHR3by1zdGFnZSB3YXRlcm1hcmsgcHJv Z3JhbW1pbmcKd2UgZG8gb24gcHJlLWdlbjksIHNvIHRoZSBuYW1lIGRvZXNuJ3QgcmVhbGx5IHJl cHJlc2VudCBob3cgd2UncmUgbm93CmFsc28gdXNpbmcgaXQgb24gZ2VuOSBub3cgKHdoZXJlIHRo ZXJlIGFyZSBubyAnaW50ZXJtZWRpYXRlJwp3YXRlcm1hcmtzKS4gIEkgc3VzcGVjdCB3ZSdsbCBw cm9iYWJseSBqdXN0IHJlbmFtZSB0aGUgZmllbGQgY29tcGxldGVseQppbiB0aGUgZnV0dXJlLgoK Ck1hdHQKCj4gCj4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5r aG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgfCAgNSArKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jIHwgMTggKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICB8ICAzICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDcxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDk3 IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA5N2ZkYWFm MDllNDQuLmQwNGZkZjRjZjYzMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0z MzksNiArMzM5LDEwIEBAIHN0cnVjdCBpOTE1X2hvdHBsdWcgewo+ICAjZGVmaW5lIGZvcl9lYWNo X2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSBcCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGlu dGVsX2NydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgYmFzZS5oZWFkKQo+ICAKPiAr I2RlZmluZSBmb3JfZWFjaF9pbnRlbF9jcnRjX21hc2soZGV2LCBpbnRlbF9jcnRjLCBjcnRjX21h c2spIFwKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfY3J0YywgJmRldi0+bW9kZV9jb25m aWcuY3J0Y19saXN0LCBiYXNlLmhlYWQpIFwKPiArCQlmb3JfZWFjaF9pZiAoKGNydGNfbWFzaykg JiAoMSA8PCBkcm1fY3J0Y19pbmRleCgmaW50ZWxfY3J0Yy0+YmFzZSkpKQo+ICsKPiAgI2RlZmlu ZSBmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgaW50ZWxfZW5jb2RlcikJCVwKPiAgCWxpc3Rf Zm9yX2VhY2hfZW50cnkoaW50ZWxfZW5jb2RlciwJCQlcCj4gIAkJCSAgICAmKGRldiktPm1vZGVf Y29uZmlnLmVuY29kZXJfbGlzdCwJXAo+IEBAIC01OTQsNiArNTk4LDcgQEAgc3RydWN0IGRybV9p OTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdzdGF0ZSk7Cj4gIAl2b2lkICgqaW5pdGlhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiAgCXZvaWQgKCpvcHRpbWl6ZV93YXRlcm1hcmtzKShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiArCWludCAoKmNvbXB1dGVfZ2xvYmFsX3dh dGVybWFya3MpKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gIAl2b2lkICgqdXBk YXRlX3dtKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICAJaW50ICgqbW9kZXNldF9jYWxjX2Nk Y2xrKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICAJdm9pZCAoKm1vZGVzZXRf Y29tbWl0X2NkY2xrKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCA1YzJjZjI3Mzg3OTguLjI2YmE4YzdkMWM3 NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTMzMTAsNiAr MTMzMTAsNyBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKPiAgc3RhdGljIHZvaWQgY2FsY193YXRlcm1hcmtfZGF0YShzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBzdGF0ZS0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUg PSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRj Owo+ICAJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4gQEAgLTEzMzM5LDYgKzEzMzQw LDEwIEBAIHN0YXRpYyB2b2lkIGNhbGNfd2F0ZXJtYXJrX2RhdGEoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICAJCSAgICBwc3RhdGUtPmNydGNfaCAhPSBwc3RhdGUtPnNyY19oID4+ IDE2KQo+ICAJCQlpbnRlbF9zdGF0ZS0+d21fY29uZmlnLnNwcml0ZXNfc2NhbGVkID0gdHJ1ZTsK PiAgCX0KPiArCj4gKwkvKiBJcyB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyB3YXRlcm1hcmsgaW5m b3JtYXRpb24gdG8gY2FsY3VsYXRlPyAqLwo+ICsJaWYgKGRldl9wcml2LT5kaXNwbGF5LmNvbXB1 dGVfZ2xvYmFsX3dhdGVybWFya3MpCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9nbG9i YWxfd2F0ZXJtYXJrcyhzdGF0ZSk7Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC0xMzcwNiw2ICsxMzcx MSwxOSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9jcnRjKGNydGMsIG9sZF9jcnRjX3N0YXRl LCBjcnRjLT5zdGF0ZSk7Cj4gIAl9Cj4gIAo+ICsJLyoKPiArCSAqIFRlbXBvcmFyeSBzYW5pdHkg Y2hlY2s6IG1ha2Ugc3VyZSBvdXIgcHJlLWNvbXB1dGVkIEREQiBtYXRjaGVzIHRoZQo+ICsJICog b25lIHdlIGFjdHVhbGx5IHdpbmQgdXAgcHJvZ3JhbW1pbmcuCj4gKwkgKgo+ICsJICogTm90IGEg Z3JlYXQgcGxhY2UgdG8gcHV0IHRoaXMsIGJ1dCB0aGUgZWFzaWVzdCBwbGFjZSB3ZSBoYXZlIGFj Y2Vzcwo+ICsJICogdG8gYm90aCB0aGUgcHJlLWNvbXB1dGVkIGFuZCBmaW5hbCBEREInczsgd2Un bGwgYmUgcmVtb3ZpbmcgdGhpcwo+ICsJICogY2hlY2sgaW4gdGhlIG5leHQgcGF0Y2ggYW55d2F5 Lgo+ICsJICovCj4gKwlXQVJOKElTX0dFTjkoZGV2KSAmJgo+ICsJICAgICBtZW1jbXAoJmludGVs X3N0YXRlLT5kZGIsICZkZXZfcHJpdi0+d20uc2tsX3Jlc3VsdHMuZGRiLAo+ICsJCSAgICBzaXpl b2YoaW50ZWxfc3RhdGUtPmRkYikpLAo+ICsJICAgICAiUHJlLWNvbXB1dGVkIEREQiBkb2VzIG5v dCBtYXRjaCBmaW5hbCBEREIhXG4iKTsKPiArCj4gIAlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQp Cj4gIAkJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9NT0RF U0VUKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBjMDFlZGYzOTA3MjEu LmZhNTk3ODRiMzk5OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTMxMSw2 ICszMTEsOSBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKPiAgCSAqIGRvbid0IGJvdGhl ciBjYWxjdWxhdGluZyBpbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcy4KPiAgCSAqLwo+ICAJYm9vbCBz a2lwX2ludGVybWVkaWF0ZV93bTsKPiArCj4gKwkvKiBHZW45KyBvbmx5ICovCj4gKwlzdHJ1Y3Qg c2tsX2RkYl9hbGxvY2F0aW9uIGRkYjsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggNTQwYWE3ZDNhMGUyLi5hYjlj MThkZWU1NjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMzgxMiw2ICszODEy LDc2IEBAIHN0YXRpYyB2b2lkIHNrbF9jbGVhcl93bShzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd2F0 ZXJtYXJrcywgZW51bSBwaXBlIHBpcGUpCj4gIAo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50Cj4gK3Nr bF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwl1bnNpZ25lZCByZWFsbG9jX3BpcGVzID0g ZGV2X3ByaXYtPmFjdGl2ZV9jcnRjczsKPiArCWludCByZXQ7Cj4gKwo+ICsJLyoKPiArCSAqIElm IHRoZSBtb2Rlc2V0IGNoYW5nZXMgd2hpY2ggQ1JUQydzIGFyZSBhY3RpdmUsIHdlIG5lZWQgdG8K PiArCSAqIHJlY29tcHV0ZSB0aGUgRERCIGFsbG9jYXRpb24gZm9yICphbGwqIGFjdGl2ZSBwaXBl cywgZXZlbgo+ICsJICogdGhvc2UgdGhhdCB3ZXJlbid0IG90aGVyd2lzZSBiZWluZyBtb2RpZmll ZCBpbiBhbnkgd2F5IGJ5IHRoaXMKPiArCSAqIGF0b21pYyBjb21taXQuICBEdWUgdG8gdGhlIHNo cmlua2luZyBvZiB0aGUgcGVyLXBpcGUgYWxsb2NhdGlvbnMKPiArCSAqIHdoZW4gbmV3IGFjdGl2 ZSBDUlRDJ3MgYXJlIGFkZGVkLCBpdCdzIHBvc3NpYmxlIGZvciBhIHBpcGUgdGhhdAo+ICsJICog d2Ugd2VyZSBhbHJlYWR5IHVzaW5nIGFuZCBhcmVuJ3QgY2hhbmdpbmcgYXQgYWxsIGhlcmUgdG8g c3VkZGVubHkKPiArCSAqIGJlY29tZSBpbnZhbGlkIGlmIGl0cyBEREIgbmVlZHMgZXhjZWVkcyBp dHMgbmV3IGFsbG9jYXRpb24uCj4gKwkgKgo+ICsJICogTm90ZSB0aGF0IGlmIHdlIHdpbmQgdXAg ZG9pbmcgYSBmdWxsIEREQiByZWNvbXB1dGUsIHdlIGNhbid0IGxldAo+ICsJICogYW55IG90aGVy IGRpc3BsYXkgdXBkYXRlcyByYWNlIHdpdGggdGhpcyB0cmFuc2FjdGlvbiwgc28gd2UgbmVlZAo+ ICsJICogdG8gZ3JhYiB0aGUgbG9jayBvbiAqYWxsKiBDUlRDJ3MuCj4gKwkgKi8KPiArCWlmIChp bnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyB8fAo+ICsJICAgIGludGVsX3N0YXRlLT5z a2lwX2ludGVybWVkaWF0ZV93bSkKPiArCQlyZWFsbG9jX3BpcGVzID0gfjA7Cj4gKwo+ICsJZm9y X2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRldiwgaW50ZWxfY3J0YywgcmVhbGxvY19waXBlcykgewo+ ICsJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7Cj4gKwo+ICsJCWNzdGF0ZSA9IGlu dGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gKwkJaWYgKElT X0VSUihjc3RhdGUpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihjc3RhdGUpOwo+ICsKPiArCQlyZXQg PSBza2xfYWxsb2NhdGVfcGlwZV9kZGIoY3N0YXRlLCAmaW50ZWxfc3RhdGUtPmRkYik7Cj4gKwkJ aWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGludAo+ICtza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3N0YXRlOwo+ICsJaW50IHJldCwgaTsKPiArCWJvb2wgY2hhbmdlZCA9IGZh bHNlOwo+ICsKPiArCS8qCj4gKwkgKiBJZiB0aGlzIHRyYW5zYWN0aW9uIGlzbid0IGFjdHVhbGx5 IHRvdWNoaW5nIGFueSBDUlRDJ3MsIGRvbid0Cj4gKwkgKiBib3RoZXIgd2l0aCB3YXRlcm1hcmsg Y2FsY3VsYXRpb24uICBOb3RlIHRoYXQgaWYgd2UgcGFzcyB0aGlzCj4gKwkgKiB0ZXN0LCB3ZSdy ZSBndWFyYW50ZWVkIHRvIGhvbGQgYXQgbGVhc3Qgb25lIENSVEMgc3RhdGUgbXV0ZXgsCj4gKwkg KiB3aGljaCBtZWFucyB3ZSBjYW4gc2FmZWx5IHVzZSB2YWx1ZXMgbGlrZSBkZXZfcHJpdi0+YWN0 aXZlX2NydGNzCj4gKwkgKiBzaW5jZSBhbnkgcmFjaW5nIGNvbW1pdHMgdGhhdCB3YW50IHRvIHVw ZGF0ZSB0aGVtIHdvdWxkIG5lZWQgdG8KPiArCSAqIGhvbGQgX2FsbF8gQ1JUQyBzdGF0ZSBtdXRl eGVzLgo+ICsJICovCj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3Rh dGUsIGkpCj4gKwkJY2hhbmdlZCA9IHRydWU7Cj4gKwlpZiAoIWNoYW5nZWQpCj4gKwkJcmV0dXJu IDA7Cj4gKwo+ICsJcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRlKTsKPiArCWlmIChyZXQpCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQg c2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIHsKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiBAQCAtNzM2OCw2ICs3 NDM4LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICAJCXNrbF9zZXR1cF93bV9sYXRlbmN5 KGRldik7Cj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gc2tsX3VwZGF0ZV93bTsK PiArCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzID0gc2tsX2Nv bXB1dGVfd207Cj4gIAl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2KSkgewo+ICAJCWlsa19z ZXR1cF93bV9sYXRlbmN5KGRldik7Cj4gIAo+IC0tIAo+IDIuNS41Cj4gCj4gCgotLSAKTWF0dCBS b3BlcgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYg RGV2ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==