From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 4/6] drm/i915/gen9: Make skl_wm_level per-plane Date: Thu, 6 Oct 2016 12:38:52 +0200 Message-ID: <9f338dc6-98ce-cef8-e9bf-11ff0e49c262@linux.intel.com> References: <1475681598-12081-1-git-send-email-cpaul@redhat.com> <1475681598-12081-5-git-send-email-cpaul@redhat.com> <1475699598.2381.64.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1475699598.2381.64.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni , Lyude , intel-gfx@lists.freedesktop.org Cc: David Airlie , Daniel Vetter , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDUtMTAtMTYgb20gMjI6MzMgc2NocmVlZiBQYXVsbyBaYW5vbmk6Cj4gRW0gUXVhLCAyMDE2 LTEwLTA1IMOgcyAxMTozMyAtMDQwMCwgTHl1ZGUgZXNjcmV2ZXU6Cj4+IEhhdmluZyBza2xfd21f bGV2ZWwgY29udGFpbiBhbGwgb2YgdGhlIHdhdGVybWFya3MgZm9yIGVhY2ggcGxhbmUgaXMKPj4g YW5ub3lpbmcgc2luY2UgaXQgcHJldmVudHMgdXMgZnJvbSBoYXZpbmcgYW55IHNvcnQgb2Ygb2Jq ZWN0IHRvCj4+IHJlcHJlc2VudCBhIHNpbmdsZSB3YXRlcm1hcmsgbGV2ZWwsIHNvbWV0aGluZyB3 ZSB0YWtlIGFkdmFudGFnZSBvZiBpbgo+PiB0aGUgbmV4dCBjb21taXQgdG8gY3V0IGRvd24gb24g YWxsIG9mIHRoZSBjb3B5IHBhc3RlIGNvZGUgaW4gaGVyZS4KPiBJJ2QgbGlrZSB0byBzdGFydCBt eSByZXZpZXcgcG9pbnRpbmcgdGhhdCBJIHJlYWxseSBsaWtlIHRoaXMgcGF0Y2guIEkKPiBhZ3Jl ZSB0aGUgY3VycmVudCBmb3JtIGlzIGFubm95aW5nLgo+Cj4gU2VlIGJlbG93IGZvciBzb21lIGRl dGFpbHMuCj4KPgo+PiBTaWduZWQtb2ZmLWJ5OiBMeXVkZSA8Y3BhdWxAcmVkaGF0LmNvbT4KPj4g Q2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+ Cj4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ PiBDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPj4gLS0tCj4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICB8ICAgNiArLQo+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgIDYgKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgIHwgMjA4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+PiAtLS0tLS0tLS0t LS0KPj4gIDMgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDEyMCBkZWxldGlvbnMo LSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IGQyNmU1OTk5Li4wZjk3 ZDQzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gQEAgLTE2NDgsOSArMTY0OCw5 IEBAIHN0cnVjdCBza2xfd21fdmFsdWVzIHsKPj4gIH07Cj4+ICAKPj4gIHN0cnVjdCBza2xfd21f bGV2ZWwgewo+PiAtCWJvb2wgcGxhbmVfZW5bSTkxNV9NQVhfUExBTkVTXTsKPj4gLQl1aW50MTZf dCBwbGFuZV9yZXNfYltJOTE1X01BWF9QTEFORVNdOwo+PiAtCXVpbnQ4X3QgcGxhbmVfcmVzX2xb STkxNV9NQVhfUExBTkVTXTsKPj4gKwlib29sIHBsYW5lX2VuOwo+PiArCXVpbnQxNl90IHBsYW5l X3Jlc19iOwo+PiArCXVpbnQ4X3QgcGxhbmVfcmVzX2w7Cj4+ICB9Owo+PiAgCj4+ICAvKgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCAzNWJhMjgyLi5kNjg0ZjRmIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBAQCAtNDY4LDkgKzQ2OCwxMyBAQCBzdHJ1 Y3QgaW50ZWxfcGlwZV93bSB7Cj4+ICAJYm9vbCBzcHJpdGVzX3NjYWxlZDsKPj4gIH07Cj4+ICAK Pj4gLXN0cnVjdCBza2xfcGlwZV93bSB7Cj4+ICtzdHJ1Y3Qgc2tsX3BsYW5lX3dtIHsKPj4gIAlz dHJ1Y3Qgc2tsX3dtX2xldmVsIHdtWzhdOwo+PiAgCXN0cnVjdCBza2xfd21fbGV2ZWwgdHJhbnNf d207Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3Qgc2tsX3BpcGVfd20gewo+PiArCXN0cnVjdCBza2xf cGxhbmVfd20gcGxhbmVzW0k5MTVfTUFYX1BMQU5FU107Cj4+ICAJdWludDMyX3QgbGluZXRpbWU7 Cj4+ICB9Owo+PiAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+PiBpbmRleCBhZjk2ODg4 Li4yNTBmMTJkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4gQEAgLTM2NjgsNjcg KzM2NjgsNTIgQEAgc3RhdGljIGludAo+PiAgc2tsX2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgCQkgICAgIHN0cnVjdCBza2xfZGRi X2FsbG9jYXRpb24gKmRkYiwKPj4gIAkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlLAo+PiArCQkgICAgIHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsCj4+ICAJCSAg ICAgaW50IGxldmVsLAo+PiAgCQkgICAgIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCkKPj4g IHsKPj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uuc3Rh dGU7Cj4+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNz dGF0ZS0KPj4+IGJhc2UuY3J0Yyk7Cj4+IC0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4+IC0J c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmludGVsX3BzdGF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRl bF9wbGFuZS0+YmFzZTsKPj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0 ZSA9IE5VTEw7Cj4+ICAJdWludDE2X3QgZGRiX2Jsb2NrczsKPj4gIAllbnVtIHBpcGUgcGlwZSA9 IGludGVsX2NydGMtPnBpcGU7Cj4+ICAJaW50IHJldDsKPj4gKwlpbnQgaSA9IHNrbF93bV9wbGFu ZV9pZChpbnRlbF9wbGFuZSk7Cj4+ICsKPj4gKwlpZiAoc3RhdGUpCj4+ICsJCWludGVsX3BzdGF0 ZSA9Cj4+ICsJCQlpbnRlbF9hdG9taWNfZ2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKHN0YXRlLAo+ PiArCQkJCQkJCSAgICAgIGludGVsXwo+PiBwbGFuZSk7Cj4+ICAKPj4gIAkvKgo+PiAtCSAqIFdl J2xsIG9ubHkgY2FsY3VsYXRlIHdhdGVybWFya3MgZm9yIHBsYW5lcyB0aGF0IGFyZQo+PiBhY3R1 YWxseQo+PiAtCSAqIGVuYWJsZWQsIHNvIG1ha2Ugc3VyZSBhbGwgb3RoZXIgcGxhbmVzIGFyZSBz ZXQgYXMKPj4gZGlzYWJsZWQuCj4+ICsJICogTm90ZTogSWYgd2Ugc3RhcnQgc3VwcG9ydGluZyBt dWx0aXBsZSBwZW5kaW5nIGF0b21pYwo+PiBjb21taXRzIGFnYWluc3QKPj4gKwkgKiB0aGUgc2Ft ZSBwbGFuZXMvQ1JUQydzIGluIHRoZSBmdXR1cmUsIHBsYW5lLT5zdGF0ZSB3aWxsCj4+IG5vIGxv bmdlciBiZQo+PiArCSAqIHRoZSBjb3JyZWN0IHByZS1zdGF0ZSB0byB1c2UgZm9yIHRoZSBjYWxj dWxhdGlvbnMgaGVyZQo+PiBhbmQgd2UnbGwKPj4gKwkgKiBuZWVkIHRvIGNoYW5nZSB3aGVyZSB3 ZSBnZXQgdGhlICd1bmNoYW5nZWQnIHBsYW5lIGRhdGEKPj4gZnJvbS4KPj4gKwkgKgo+PiArCSAq IEZvciBub3cgdGhpcyBpcyBmaW5lIGJlY2F1c2Ugd2Ugb25seSBhbGxvdyBvbmUgcXVldWVkCj4+ IGNvbW1pdCBhZ2FpbnN0Cj4+ICsJICogYSBDUlRDLiAgRXZlbiBpZiB0aGUgcGxhbmUgaXNuJ3Qg bW9kaWZpZWQgYnkgdGhpcwo+PiB0cmFuc2FjdGlvbiBhbmQgd2UKPj4gKwkgKiBkb24ndCBoYXZl IGEgcGxhbmUgbG9jaywgd2Ugc3RpbGwgaGF2ZSB0aGUgQ1JUQydzIGxvY2ssCj4+IHNvIHdlIGtu b3cKPj4gKwkgKiB0aGF0IG5vIG90aGVyIHRyYW5zYWN0aW9ucyBhcmUgcmFjaW5nIHdpdGggdXMg dG8gdXBkYXRlCj4+IGl0Lgo+PiAgCSAqLwo+PiAtCW1lbXNldChyZXN1bHQsIDAsIHNpemVvZigq cmVzdWx0KSk7Cj4+IC0KPj4gLQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9tYXNrKCZkZXZfcHJpdi0+ ZHJtLAo+PiAtCQkJCSAgaW50ZWxfcGxhbmUsCj4+IC0JCQkJICBjc3RhdGUtPmJhc2UucGxhbmVf bWFzaykgewo+PiAtCQlpbnQgaSA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7Cj4+IC0K Pj4gLQkJcGxhbmUgPSAmaW50ZWxfcGxhbmUtPmJhc2U7Cj4+IC0JCWludGVsX3BzdGF0ZSA9IE5V TEw7Cj4+IC0JCWlmIChzdGF0ZSkKPj4gLQkJCWludGVsX3BzdGF0ZSA9Cj4+IC0JCQkJaW50ZWxf YXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0Cj4+IGUoc3RhdGUsCj4+IC0JCQkJCQkJCSAg ICAKPj4gICBpbnRlbF9wbGFuZSk7Cj4+ICsJaWYgKCFpbnRlbF9wc3RhdGUpCj4+ICsJCWludGVs X3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Cj4+ICAKPj4gLQkJ LyoKPj4gLQkJICogTm90ZTogSWYgd2Ugc3RhcnQgc3VwcG9ydGluZyBtdWx0aXBsZSBwZW5kaW5n Cj4+IGF0b21pYyBjb21taXRzCj4+IC0JCSAqIGFnYWluc3QgdGhlIHNhbWUgcGxhbmVzL0NSVEMn cyBpbiB0aGUgZnV0dXJlLAo+PiBwbGFuZS0+c3RhdGUKPj4gLQkJICogd2lsbCBubyBsb25nZXIg YmUgdGhlIGNvcnJlY3QgcHJlLXN0YXRlIHRvIHVzZQo+PiBmb3IgdGhlCj4+IC0JCSAqIGNhbGN1 bGF0aW9ucyBoZXJlIGFuZCB3ZSdsbCBuZWVkIHRvIGNoYW5nZSB3aGVyZQo+PiB3ZSBnZXQgdGhl Cj4+IC0JCSAqICd1bmNoYW5nZWQnIHBsYW5lIGRhdGEgZnJvbS4KPj4gLQkJICoKPj4gLQkJICog Rm9yIG5vdyB0aGlzIGlzIGZpbmUgYmVjYXVzZSB3ZSBvbmx5IGFsbG93IG9uZQo+PiBxdWV1ZWQg Y29tbWl0Cj4+IC0JCSAqIGFnYWluc3QgYSBDUlRDLiAgRXZlbiBpZiB0aGUgcGxhbmUgaXNuJ3Qg bW9kaWZpZWQKPj4gYnkgdGhpcwo+PiAtCQkgKiB0cmFuc2FjdGlvbiBhbmQgd2UgZG9uJ3QgaGF2 ZSBhIHBsYW5lIGxvY2ssIHdlCj4+IHN0aWxsIGhhdmUKPj4gLQkJICogdGhlIENSVEMncyBsb2Nr LCBzbyB3ZSBrbm93IHRoYXQgbm8gb3RoZXIKPj4gdHJhbnNhY3Rpb25zIGFyZQo+PiAtCQkgKiBy YWNpbmcgd2l0aCB1cyB0byB1cGRhdGUgaXQuCj4+IC0JCSAqLwo+PiAtCQlpZiAoIWludGVsX3Bz dGF0ZSkKPj4gLQkJCWludGVsX3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLQo+ Pj4gc3RhdGUpOwo+PiArCVdBUk5fT04oIWludGVsX3BzdGF0ZS0+YmFzZS5mYik7Cj4+ICAKPj4g LQkJV0FSTl9PTighaW50ZWxfcHN0YXRlLT5iYXNlLmZiKTsKPj4gKwlkZGJfYmxvY2tzID0gc2ts X2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW2ldKTsKPj4gIAo+PiAtCQlkZGJfYmxv Y2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItCj4+PiBwbGFuZVtwaXBlXVtpXSk7Cj4+IC0K Pj4gLQkJcmV0ID0gc2tsX2NvbXB1dGVfcGxhbmVfd20oZGV2X3ByaXYsCj4+IC0JCQkJCSAgIGNz dGF0ZSwKPj4gLQkJCQkJICAgaW50ZWxfcHN0YXRlLAo+PiAtCQkJCQkgICBkZGJfYmxvY2tzLAo+ PiAtCQkJCQkgICBsZXZlbCwKPj4gLQkJCQkJICAgJnJlc3VsdC0+cGxhbmVfcmVzX2JbaV0sCj4+ IC0JCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19sW2ldLAo+PiAtCQkJCQkgICAmcmVzdWx0LT5w bGFuZV9lbltpXSk7Cj4+IC0JCWlmIChyZXQpCj4+IC0JCQlyZXR1cm4gcmV0Owo+PiAtCX0KPj4g KwlyZXQgPSBza2xfY29tcHV0ZV9wbGFuZV93bShkZXZfcHJpdiwKPj4gKwkJCQkgICBjc3RhdGUs Cj4+ICsJCQkJICAgaW50ZWxfcHN0YXRlLAo+PiArCQkJCSAgIGRkYl9ibG9ja3MsCj4+ICsJCQkJ ICAgbGV2ZWwsCj4+ICsJCQkJICAgJnJlc3VsdC0+cGxhbmVfcmVzX2IsCj4+ICsJCQkJICAgJnJl c3VsdC0+cGxhbmVfcmVzX2wsCj4+ICsJCQkJICAgJnJlc3VsdC0+cGxhbmVfZW4pOwo+PiArCWlm IChyZXQpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICAKPj4gIAlyZXR1cm4gMDsKPj4gIH0KPj4gQEAg LTM3NDksMTkgKzM3MzQsMTEgQEAgc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oc3RydWN0Cj4+IGlu dGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPj4gIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5z aXRpb25fd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUKPj4gKmNzdGF0ZSwKPj4gIAkJCQkgICAg ICBzdHJ1Y3Qgc2tsX3dtX2xldmVsICp0cmFuc193bQo+PiAvKiBvdXQgKi8pCj4+ICB7Cj4+IC0J c3RydWN0IGRybV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7Cj4+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+PiAtCXN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4+IC0KPj4gIAlpZiAoIWNzdGF0ZS0+YmFzZS5hY3Rp dmUpCj4+ICAJCXJldHVybjsKPj4gIAo+PiAgCS8qIFVudGlsIHdlIGtub3cgbW9yZSwganVzdCBk aXNhYmxlIHRyYW5zaXRpb24gV01zICovCj4+IC0JZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0 YyhjcnRjLT5kZXYsIGludGVsX2NydGMsCj4+IGludGVsX3BsYW5lKSB7Cj4+IC0JCWludCBpID0g c2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKPj4gLQo+PiAtCQl0cmFuc193bS0+cGxhbmVf ZW5baV0gPSBmYWxzZTsKPj4gLQl9Cj4+ICsJdHJhbnNfd20tPnBsYW5lX2VuID0gZmFsc2U7Cj4+ ICB9Cj4+ICAKPj4gIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNzdGF0ZSwKPj4gQEAgLTM3NzAsMTkgKzM3NDcsMzMgQEAgc3RhdGljIGludCBz a2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QKPj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+PiAg ewo+PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2Owo+ PiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwo+PiArCXN0cnVjdCBza2xf cGxhbmVfd20gKndtOwo+PiAgCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZl bChkZXYpOwo+PiAgCWludCByZXQ7Cj4+ICAKPj4gLQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0g bWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4+IC0JCXJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVsKGRl dl9wcml2LCBkZGIsIGNzdGF0ZSwKPj4gLQkJCQkJICAgbGV2ZWwsICZwaXBlX3dtLQo+Pj4gd21b bGV2ZWxdKTsKPj4gLQkJaWYgKHJldCkKPj4gLQkJCXJldHVybiByZXQ7Cj4+ICsJLyoKPj4gKwkg KiBXZSdsbCBvbmx5IGNhbGN1bGF0ZSB3YXRlcm1hcmtzIGZvciBwbGFuZXMgdGhhdCBhcmUKPj4g YWN0dWFsbHkKPj4gKwkgKiBlbmFibGVkLCBzbyBtYWtlIHN1cmUgYWxsIG90aGVyIHBsYW5lcyBh cmUgc2V0IGFzCj4+IGRpc2FibGVkLgo+PiArCSAqLwo+PiArCW1lbXNldChwaXBlX3dtLT5wbGFu ZXMsIDAsIHNpemVvZihwaXBlX3dtLT5wbGFuZXMpKTsKPj4gKwo+PiArCWZvcl9lYWNoX2ludGVs X3BsYW5lX21hc2soJmRldl9wcml2LT5kcm0sCj4+ICsJCQkJICBpbnRlbF9wbGFuZSwKPj4gKwkJ CQkgIGNzdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7Cj4+ICsJCXdtID0gJnBpcGVfd20tPnBsYW5l c1tza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpXTsKPj4gKwo+PiArCQlmb3IgKGxldmVsID0g MDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4+ICsJCQlyZXQgPSBza2xfY29tcHV0 ZV93bV9sZXZlbChkZXZfcHJpdiwgZGRiLAo+PiBjc3RhdGUsCj4+ICsJCQkJCQkgICBpbnRlbF9w bGFuZSwKPj4gbGV2ZWwsCj4+ICsJCQkJCQkgICAmd20tPndtW2xldmVsXSk7Cj4+ICsJCQlpZiAo cmV0KQo+PiArCQkJCXJldHVybiByZXQ7Cj4+ICsJCX0KPj4gKwkJc2tsX2NvbXB1dGVfdHJhbnNp dGlvbl93bShjc3RhdGUsICZ3bS0+dHJhbnNfd20pOwo+PiAgCX0KPj4gIAlwaXBlX3dtLT5saW5l dGltZSA9IHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKGNzdGF0ZSk7Cj4+ICAKPj4gLQlza2xfY29t cHV0ZV90cmFuc2l0aW9uX3dtKGNzdGF0ZSwgJnBpcGVfd20tPnRyYW5zX3dtKTsKPj4gLQo+PiAg CXJldHVybiAwOwo+PiAgfQo+PiAgCj4+IEBAIC0zNzkyLDUwICszNzgzLDU2IEBAIHN0YXRpYyB2 b2lkIHNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoc3RydWN0Cj4+IGRybV9kZXZpY2UgKmRldiwKPj4g IAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPj4gIHsKPj4gIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2KTsKPj4gKwlzdHJ1Y3Qgc2tsX3Bs YW5lX3dtICpwbGFuZV93bTsKPj4gIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7 Cj4+ICAJdWludDMyX3QgdGVtcDsKPj4gIAlpbnQgaTsKPj4gIAo+PiAtCWZvciAobGV2ZWwgPSAw OyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPj4gLQkJZm9yIChpID0gMDsgaSA8IGlu dGVsX251bV9wbGFuZXMoaW50ZWxfY3J0Yyk7IGkrKykgewo+PiArCWZvciAoaSA9IDA7IGkgPCBp bnRlbF9udW1fcGxhbmVzKGludGVsX2NydGMpOyBpKyspIHsKPj4gKwkJcGxhbmVfd20gPSAmcF93 bS0+cGxhbmVzW2ldOwo+PiArCj4+ICsJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKPj4gIAkJCXRlbXAgPSAwOwo+PiAgCj4+IC0JCQl0ZW1wIHw9IHBfd20t PndtW2xldmVsXS5wbGFuZV9yZXNfbFtpXSA8PAo+PiArCQkJdGVtcCB8PSBwbGFuZV93bS0+d21b bGV2ZWxdLnBsYW5lX3Jlc19sIDw8Cj4+ICAJCQkJCVBMQU5FX1dNX0xJTkVTX1NISUZUOwo+PiAt CQkJdGVtcCB8PSBwX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2JbaV07Cj4+IC0JCQlpZiAocF93 bS0+d21bbGV2ZWxdLnBsYW5lX2VuW2ldKQo+PiArCQkJdGVtcCB8PSBwbGFuZV93bS0+d21bbGV2 ZWxdLnBsYW5lX3Jlc19iOwo+PiArCQkJaWYgKHBsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfZW4p Cj4+ICAJCQkJdGVtcCB8PSBQTEFORV9XTV9FTjsKPj4gIAo+PiAgCQkJci0+cGxhbmVbcGlwZV1b aV1bbGV2ZWxdID0gdGVtcDsKPj4gIAkJfQo+PiAgCj4+IC0JCXRlbXAgPSAwOwo+PiAtCj4+IC0J CXRlbXAgfD0gcF93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sW1BMQU5FX0NVUlNPUl0gPDwKPj4g UExBTkVfV01fTElORVNfU0hJRlQ7Cj4+IC0JCXRlbXAgfD0gcF93bS0+d21bbGV2ZWxdLnBsYW5l X3Jlc19iW1BMQU5FX0NVUlNPUl07Cj4+ICsJfQo+PiAgCj4+IC0JCWlmIChwX3dtLT53bVtsZXZl bF0ucGxhbmVfZW5bUExBTkVfQ1VSU09SXSkKPj4gKwlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0g bWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4+ICsJCXBsYW5lX3dtID0gJnBfd20tPnBsYW5lc1tQTEFO RV9DVVJTT1JdOwo+PiArCQl0ZW1wID0gMDsKPj4gKwkJdGVtcCB8PSBwbGFuZV93bS0+d21bbGV2 ZWxdLnBsYW5lX3Jlc19sIDw8Cj4+IFBMQU5FX1dNX0xJTkVTX1NISUZUOwo+PiArCQl0ZW1wIHw9 IHBsYW5lX3dtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2I7Cj4+ICsJCWlmIChwbGFuZV93bS0+d21b bGV2ZWxdLnBsYW5lX2VuKQo+PiAgCQkJdGVtcCB8PSBQTEFORV9XTV9FTjsKPj4gIAo+PiAgCQly LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdW2xldmVsXSA9IHRlbXA7Cj4+IC0KPj4gIAl9Cj4+ ICAKPj4gIAkvKiB0cmFuc2l0aW9uIFdNcyAqLwo+PiAgCWZvciAoaSA9IDA7IGkgPCBpbnRlbF9u dW1fcGxhbmVzKGludGVsX2NydGMpOyBpKyspIHsKPj4gKwkJcGxhbmVfd20gPSAmcF93bS0+cGxh bmVzW2ldOwo+PiAgCQl0ZW1wID0gMDsKPj4gLQkJdGVtcCB8PSBwX3dtLT50cmFuc193bS5wbGFu ZV9yZXNfbFtpXSA8PAo+PiBQTEFORV9XTV9MSU5FU19TSElGVDsKPj4gLQkJdGVtcCB8PSBwX3dt LT50cmFuc193bS5wbGFuZV9yZXNfYltpXTsKPj4gLQkJaWYgKHBfd20tPnRyYW5zX3dtLnBsYW5l X2VuW2ldKQo+PiArCQl0ZW1wIHw9IHBsYW5lX3dtLT50cmFuc193bS5wbGFuZV9yZXNfbCA8PAo+ PiBQTEFORV9XTV9MSU5FU19TSElGVDsKPj4gKwkJdGVtcCB8PSBwbGFuZV93bS0+dHJhbnNfd20u cGxhbmVfcmVzX2I7Cj4+ICsJCWlmIChwbGFuZV93bS0+dHJhbnNfd20ucGxhbmVfZW4pCj4+ICAJ CQl0ZW1wIHw9IFBMQU5FX1dNX0VOOwo+PiAgCj4+ICAJCXItPnBsYW5lX3RyYW5zW3BpcGVdW2ld ID0gdGVtcDsKPj4gIAl9Cj4+ICAKPj4gKwlwbGFuZV93bSA9ICZwX3dtLT5wbGFuZXNbUExBTkVf Q1VSU09SXTsKPj4gIAl0ZW1wID0gMDsKPj4gLQl0ZW1wIHw9IHBfd20tPnRyYW5zX3dtLnBsYW5l X3Jlc19sW1BMQU5FX0NVUlNPUl0gPDwKPj4gUExBTkVfV01fTElORVNfU0hJRlQ7Cj4+IC0JdGVt cCB8PSBwX3dtLT50cmFuc193bS5wbGFuZV9yZXNfYltQTEFORV9DVVJTT1JdOwo+PiAtCWlmIChw X3dtLT50cmFuc193bS5wbGFuZV9lbltQTEFORV9DVVJTT1JdKQo+PiArCXRlbXAgfD0gcGxhbmVf d20tPnRyYW5zX3dtLnBsYW5lX3Jlc19sIDw8Cj4+IFBMQU5FX1dNX0xJTkVTX1NISUZUOwo+PiAr CXRlbXAgfD0gcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19iOwo+PiArCWlmIChwbGFuZV93 bS0+dHJhbnNfd20ucGxhbmVfZW4pCj4+ICAJCXRlbXAgfD0gUExBTkVfV01fRU47Cj4+ICAKPj4g IAlyLT5wbGFuZV90cmFuc1twaXBlXVtQTEFORV9DVVJTT1JdID0gdGVtcDsKPj4gQEAgLTQyNjIs NDQgKzQyNTksMjQgQEAgc3RhdGljIHZvaWQgaWxrX29wdGltaXplX3dhdGVybWFya3Moc3RydWN0 Cj4+IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSkKPj4gIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dt X2FjdGl2ZV9zdGF0ZSh1aW50MzJfdCB2YWwsCj4+ICAJCQkJICAgICBzdHJ1Y3Qgc2tsX3BpcGVf d20gKmFjdGl2ZSwKPj4gIAkJCQkgICAgIGJvb2wgaXNfdHJhbnN3bSwKPj4gLQkJCQkgICAgIGJv b2wgaXNfY3Vyc29yLAo+PiAgCQkJCSAgICAgaW50IGksCj4+ICAJCQkJICAgICBpbnQgbGV2ZWwp Cj4+ICB7Cj4+ICsJc3RydWN0IHNrbF9wbGFuZV93bSAqcGxhbmVfd20gPSAmYWN0aXZlLT5wbGFu ZXNbaV07Cj4+ICAJYm9vbCBpc19lbmFibGVkID0gKHZhbCAmIFBMQU5FX1dNX0VOKSAhPSAwOwo+ PiAgCj4+ICAJaWYgKCFpc190cmFuc3dtKSB7Cj4+IC0JCWlmICghaXNfY3Vyc29yKSB7Cj4+IC0J CQlhY3RpdmUtPndtW2xldmVsXS5wbGFuZV9lbltpXSA9IGlzX2VuYWJsZWQ7Cj4+IC0JCQlhY3Rp dmUtPndtW2xldmVsXS5wbGFuZV9yZXNfYltpXSA9Cj4+IC0JCQkJCXZhbCAmIFBMQU5FX1dNX0JM T0NLU19NQVNLOwo+PiAtCQkJYWN0aXZlLT53bVtsZXZlbF0ucGxhbmVfcmVzX2xbaV0gPQo+PiAt CQkJCQkodmFsID4+Cj4+IFBMQU5FX1dNX0xJTkVTX1NISUZUKSAmCj4+IC0JCQkJCQlQTEFORV9X TV9MSU5FU19NQVNLOwo+PiAtCQl9IGVsc2Ugewo+PiAtCQkJYWN0aXZlLT53bVtsZXZlbF0ucGxh bmVfZW5bUExBTkVfQ1VSU09SXSA9Cj4+IGlzX2VuYWJsZWQ7Cj4+IC0JCQlhY3RpdmUtPndtW2xl dmVsXS5wbGFuZV9yZXNfYltQTEFORV9DVVJTT1JdCj4+ID0KPj4gLQkJCQkJdmFsICYgUExBTkVf V01fQkxPQ0tTX01BU0s7Cj4+IC0JCQlhY3RpdmUtPndtW2xldmVsXS5wbGFuZV9yZXNfbFtQTEFO RV9DVVJTT1JdCj4+ID0KPj4gLQkJCQkJKHZhbCA+Pgo+PiBQTEFORV9XTV9MSU5FU19TSElGVCkg Jgo+PiAtCQkJCQkJUExBTkVfV01fTElORVNfTUFTSzsKPj4gLQkJfQo+PiArCQlwbGFuZV93bS0+ d21bbGV2ZWxdLnBsYW5lX2VuID0gaXNfZW5hYmxlZDsKPj4gKwkJcGxhbmVfd20tPndtW2xldmVs XS5wbGFuZV9yZXNfYiA9IHZhbCAmCj4+IFBMQU5FX1dNX0JMT0NLU19NQVNLOwo+PiArCQlwbGFu ZV93bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sID0KPj4gKwkJCSh2YWwgPj4gUExBTkVfV01fTElO RVNfU0hJRlQpICYKPj4gKwkJCVBMQU5FX1dNX0xJTkVTX01BU0s7Cj4gTml0cGljazogeW91IGNh biBqb2luIHRoZSB0d28gbGluZXMgYWJvdmUgYW5kIHN0aWxsIHN0YXkgdW5kZXIgODAKPiBjb2x1 bW5zLgo+Cj4KPj4gIAl9IGVsc2Ugewo+PiAtCQlpZiAoIWlzX2N1cnNvcikgewo+PiAtCQkJYWN0 aXZlLT50cmFuc193bS5wbGFuZV9lbltpXSA9IGlzX2VuYWJsZWQ7Cj4+IC0JCQlhY3RpdmUtPnRy YW5zX3dtLnBsYW5lX3Jlc19iW2ldID0KPj4gLQkJCQkJdmFsICYgUExBTkVfV01fQkxPQ0tTX01B U0s7Cj4+IC0JCQlhY3RpdmUtPnRyYW5zX3dtLnBsYW5lX3Jlc19sW2ldID0KPj4gLQkJCQkJKHZh bCA+Pgo+PiBQTEFORV9XTV9MSU5FU19TSElGVCkgJgo+PiAtCQkJCQkJUExBTkVfV01fTElORVNf TUFTSzsKPj4gLQkJfSBlbHNlIHsKPj4gLQkJCWFjdGl2ZS0+dHJhbnNfd20ucGxhbmVfZW5bUExB TkVfQ1VSU09SXSA9Cj4+IGlzX2VuYWJsZWQ7Cj4+IC0JCQlhY3RpdmUtPnRyYW5zX3dtLnBsYW5l X3Jlc19iW1BMQU5FX0NVUlNPUl0gPQo+PiAtCQkJCQl2YWwgJiBQTEFORV9XTV9CTE9DS1NfTUFT SzsKPj4gLQkJCWFjdGl2ZS0+dHJhbnNfd20ucGxhbmVfcmVzX2xbUExBTkVfQ1VSU09SXSA9Cj4+ IC0JCQkJCSh2YWwgPj4KPj4gUExBTkVfV01fTElORVNfU0hJRlQpICYKPj4gLQkJCQkJCVBMQU5F X1dNX0xJTkVTX01BU0s7Cj4+IC0JCX0KPj4gKwkJcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX2Vu ID0gaXNfZW5hYmxlZDsKPj4gKwkJcGxhbmVfd20tPnRyYW5zX3dtLnBsYW5lX3Jlc19iID0gdmFs ICYKPj4gUExBTkVfV01fQkxPQ0tTX01BU0s7Cj4+ICsJCXBsYW5lX3dtLT50cmFuc193bS5wbGFu ZV9yZXNfbCA9Cj4+ICsJCQkodmFsID4+IFBMQU5FX1dNX0xJTkVTX1NISUZUKSAmCj4+ICsJCQlQ TEFORV9XTV9MSU5FU19NQVNLOwo+IFNhbWUgaGVyZS4KPgo+Cj4+ICAJfQo+PiAgfQo+PiAgCj4+ IEBAIC00MzM4LDIwICs0MzE1LDE5IEBAIHN0YXRpYyB2b2lkIHNrbF9waXBlX3dtX2dldF9od19z dGF0ZShzdHJ1Y3QKPj4gZHJtX2NydGMgKmNydGMpCj4+ICAJZm9yIChsZXZlbCA9IDA7IGxldmVs IDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+PiAgCQlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfbnVt X3BsYW5lcyhpbnRlbF9jcnRjKTsgaSsrKSB7Cj4+ICAJCQl0ZW1wID0gaHctPnBsYW5lW3BpcGVd W2ldW2xldmVsXTsKPj4gLQkJCXNrbF9waXBlX3dtX2FjdGl2ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUs Cj4+IGZhbHNlLAo+PiAtCQkJCQkJZmFsc2UsIGksIGxldmVsKTsKPj4gKwkJCXNrbF9waXBlX3dt X2FjdGl2ZV9zdGF0ZSh0ZW1wLCBhY3RpdmUsCj4+IGZhbHNlLCBpLCBsZXZlbCk7Cj4+ICAJCX0K Pj4gIAkJdGVtcCA9IGh3LT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdW2xldmVsXTsKPj4gLQkJ c2tsX3BpcGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgZmFsc2UsIHRydWUsCj4+IGks IGxldmVsKTsKPj4gKwkJc2tsX3BpcGVfd21fYWN0aXZlX3N0YXRlKHRlbXAsIGFjdGl2ZSwgZmFs c2UsIGksCj4+IGxldmVsKTsKPiBXaGlsZSB0aGlzIGlzIG5vdCB3cm9uZyB0b2RheSwgaGlzdG9y eSBzaG93cyB0aGF0IHRoZSBudW1iZXIgb2YgcGxhbmVzCj4gaW5jcmVhc2VzIG92ZXIgdGltZSwg c28gd2UgbWF5IGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSBhZGQgUExBTkVfRAo+IGFuZCBt b3JlLCBzbyB0aGUgY29kZSB3aWxsIGJlY29tZSB3cm9uZy4gSnVzdCBwYXNzIFBMQU5FX0NVUlNP UiBpbnN0ZWFkCj4gb2YgImkiIGhlcmUgYW5kIGJlbG93LiBBbHNvLCB0aGlzIHNpbXBsaWZpY2F0 aW9uIGNvdWxkIGhhdmUgYmVlbiBhCj4gc2VwYXJhdGUgcGF0Y2guCkFncmVlZCwgYnV0IEkgd2Fu dCB0byBub3RlIHRoYXQgUExBTkVfQ1VSU09SIGlzIGFsd2F5cyBzdXBwb3NlZCB0byBiZSB0aGUg bGFzdCBtZW1iZXIuClVubGVzcyB5b3UgaGF2ZSBzcHJpdGUgcGxhbmVzIGNvdmVyaW5nIHRoZSBj dXJzb3IsIHdoaWNoIGRvZXNuJ3QgZXZlciBoYXBwZW4uCgp+TWFhcnRlbgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK