From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v4 7/8] drm/i915: Do not compute watermarks on a noop. Date: Tue, 1 Mar 2016 11:11:51 +0100 Message-ID: <56D56AE7.4060409@linux.intel.com> References: <1455108583-29227-1-git-send-email-maarten.lankhorst@linux.intel.com> <1455108583-29227-8-git-send-email-maarten.lankhorst@linux.intel.com> <1455828677.2576.100.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 3E1FC8919C for ; Tue, 1 Mar 2016 10:12:09 +0000 (UTC) In-Reply-To: <1455828677.2576.100.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: "Zanoni, Paulo R" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T3AgMTgtMDItMTYgb20gMjE6NTEgc2NocmVlZiBaYW5vbmksIFBhdWxvIFI6Cj4gRW0gUXVhLCAy MDE2LTAyLTEwIMOgcyAxMzo0OSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3QgZXNjcmV2ZXU6Cj4+ IE5vIGF0b21pYyBzdGF0ZSBzaG91bGQgYmUgaW5jbHVkZWQgYWZ0ZXIgYWxsIHZhbGlkYXRpb24g d2hlbiBub3RoaW5nCj4+IGhhcwo+PiBjaGFuZ2VkLiBEdXJpbmcgbW9kZXNldCBhbGwgYWN0aXZl IHBsYW5lcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzdGF0ZSwKPj4gd2hpbGUgZGlzYWJsZWQgcGxh bmVzIHdvbid0IGNoYW5nZSB0aGVpciBzdGF0ZS4KPiBBcyBzb21lb25lIHdobyBpcyBhbHNvIG5v dCBzdXBlciBmYW1pbGlhciB3aXRoIHRoZSBuZXcgd2F0ZXJtYXJrcyBjb2RlLAo+IEkgcmVhbGx5 IHJlYWxseSB3aXNoIEkgaGFkIGEgbW9yZSBkZXRhaWxlZCBjb21taXQgbWVzc2FnZSB0byBhbGxv dyBtZQo+IHRvIHVuZGVyc3RhbmQgeW91ciB0cmFpbiBvZiB0aG91Z2h0LiBJJ2xsIGFzayBzb21l IHF1ZXN0aW9ucyBiZWxvdyB0bwo+IHZhbGlkYXRlIG15IHVuZGVyc3RhbmRpbmcuCj4KPj4gU2ln bmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KPj4gQ2M6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Cj4+ IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDMgKy0KPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8IDEzICsrKysrKysrCj4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCA2MSArKysrKysrKysrKysrKysr KysrKystLS0tLQo+PiAtLS0tLS0tLS0tCj4+ICAzIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlv bnMoKyksIDI2IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4+IGluZGV4IDAwY2IyNjFjNjc4Ny4uNmJiMWY1ZGJjN2EwIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0xMTkxMCw3ICsxMTkxMCw4IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0Cj4+IGRybV9jcnRjICpjcnRj LAo+PiAgCX0KPj4gIAo+PiAgCXJldCA9IDA7Cj4+IC0JaWYgKGRldl9wcml2LT5kaXNwbGF5LmNv bXB1dGVfcGlwZV93bSkgewo+PiArCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVf d20gJiYKPj4gKwkgICAgKG1vZGVfY2hhbmdlZCB8fCBwaXBlX2NvbmZpZy0+dXBkYXRlX3BpcGUg fHwgY3J0Y19zdGF0ZS0KPj4+IHBsYW5lc19jaGFuZ2VkKSkgewo+PiAgCQlyZXQgPSBkZXZfcHJp di0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20oaW50ZWxfY3J0YywKPj4gc3RhdGUpOwo+PiAgCQlp ZiAocmV0KQo+PiAgCQkJcmV0dXJuIHJldDsKPiBDYW4ndCB0aGlzIGNodW5rIGJlIG9uIGl0cyBv d24gc2VwYXJhdGUgY29tbWl0PyBJJ20gbm90IHN1cmUgd2h5IHRoZQo+IHJlc3Qgb2YgdGhlIGNv bW1pdCBpcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLgo+Cj4gSXQgc2VlbXMgdGhlIHJlc3Qgb2Yg dGhlIGNvbW1pdCBpcyBhaW1lZCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHBsYW5lcwo+IHdlIGhh dmUgdG8gbG9jaywgbm90IGFib3V0IG5vdCBjb21wdXRpbmcgV01zIGlmIG5vdGhpbmcgaW4gdGhl IHBpcGUgaGFzCj4gY2hhbmdlZC4KPgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBp bmRleCA4ZWZmYjllY2UyMWUuLjE0NDU5N2FjNzRlMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPj4gQEAgLTE1ODMsNiArMTU4MywxOSBAQCBpbnRlbF9hdG9taWNfZ2V0X2NydGNf c3RhdGUoc3RydWN0Cj4+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiAgCj4+ICAJcmV0dXJu IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7Cj4+ICB9Cj4+ICsKPj4gK3N0YXRpYyBp bmxpbmUgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICoKPj4gK2ludGVsX2F0b21pY19nZXRfZXhp c3RpbmdfcGxhbmVfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPj4gKnN0YXRlLAo+PiAr CQkJCSAgICAgIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4+ICt7Cj4+ICsJc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4+ICsKPj4gKwlwbGFuZV9zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKHN0YXRlLAo+PiAmcGxhbmUtPmJhc2UpOwo+ PiArCj4+ICsJcmV0dXJuIHRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKTsKPj4gK30K Pj4gKwo+PiArCj4gVHdvIG5ld2xpbmVzIGFib3ZlLgo+Cj4gSXQgc2VlbXMgeW91J2xsIGJlIGFi bGUgdG8gc2ltcGxpZnkgYSBsb3Qgb2Ygc3R1ZmYgd2l0aCB0aGlzIG5ldwo+IGZ1bmN0aW9uLiBJ J20gbG9va2luZyBmb3J3YXJkIHRvIHJldmlldyB0aGF0IHBhdGNoIDopCj4KPgo+PiAgaW50IGlu dGVsX2F0b21pY19zZXR1cF9zY2FsZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPj4gaW5kZXggMzc5ZWFi ZTA5M2NiLi44ZmI4YzY4OTFhZTYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+PiBA QCAtMjAxMCwxMSArMjAxMCwxOCBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9sZXZlbChj b25zdCBzdHJ1Y3QKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICAJCWN1cl9sYXRl bmN5ICo9IDU7Cj4+ICAJfQo+PiAgCj4+IC0JcmVzdWx0LT5wcmlfdmFsID0gaWxrX2NvbXB1dGVf cHJpX3dtKGNzdGF0ZSwgcHJpc3RhdGUsCj4+IC0JCQkJCSAgICAgcHJpX2xhdGVuY3ksIGxldmVs KTsKPj4gLQlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRlLCBzcHJz dGF0ZSwKPj4gc3ByX2xhdGVuY3kpOwo+PiAtCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRl X2N1cl93bShjc3RhdGUsIGN1cnN0YXRlLAo+PiBjdXJfbGF0ZW5jeSk7Cj4+IC0JcmVzdWx0LT5m YmNfdmFsID0gaWxrX2NvbXB1dGVfZmJjX3dtKGNzdGF0ZSwgcHJpc3RhdGUsCj4+IHJlc3VsdC0+ cHJpX3ZhbCk7Cj4+ICsJaWYgKHByaXN0YXRlKSB7Cj4+ICsJCXJlc3VsdC0+cHJpX3ZhbCA9IGls a19jb21wdXRlX3ByaV93bShjc3RhdGUsCj4+IHByaXN0YXRlLAo+PiArCQkJCQkJICAgICBwcmlf bGF0ZW5jeSwKPj4gbGV2ZWwpOwo+PiArCQlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0ZV9m YmNfd20oY3N0YXRlLAo+PiBwcmlzdGF0ZSwgcmVzdWx0LT5wcmlfdmFsKTsKPj4gKwl9Cj4+ICsK Pj4gKwlpZiAoc3Byc3RhdGUpCj4+ICsJCXJlc3VsdC0+c3ByX3ZhbCA9IGlsa19jb21wdXRlX3Nw cl93bShjc3RhdGUsCj4+IHNwcnN0YXRlLCBzcHJfbGF0ZW5jeSk7Cj4+ICsKPj4gKwlpZiAoY3Vy c3RhdGUpCj4+ICsJCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3RhdGUs Cj4+IGN1cnN0YXRlLCBjdXJfbGF0ZW5jeSk7Cj4+ICsKPj4gIAlyZXN1bHQtPmVuYWJsZSA9IHRy dWU7Cj4+ICB9Cj4+ICAKPj4gQEAgLTIyODcsNyArMjI5NCw2IEBAIHN0YXRpYyBpbnQgaWxrX2Nv bXB1dGVfcGlwZV93bShzdHJ1Y3QKPj4gaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPj4gIAljb25z dCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ PiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSBOVUxMOwo+PiAgCXN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7Cj4+IC0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHM7 Cj4+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwcmlzdGF0ZSA9IE5VTEw7Cj4+ICAJc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpzcHJzdGF0ZSA9IE5VTEw7Cj4+ICAJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpjdXJzdGF0ZSA9IE5VTEw7Cj4+IEBAIC0yMzA2LDMwICsyMzEyLDM3IEBA IHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QKPj4gaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YywKPj4gIAltZW1zZXQocGlwZV93bSwgMCwgc2l6ZW9mKCpwaXBlX3dtKSk7Cj4+ICAK Pj4gIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxf cGxhbmUpIHsKPj4gLQkJcHMgPSBkcm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwKPj4g LQkJCQkJCSZpbnRlbF9wbGFuZS0+YmFzZSk7Cj4+IC0JCWlmIChJU19FUlIocHMpKQo+PiAtCQkJ cmV0dXJuIFBUUl9FUlIocHMpOwo+PiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBzOwo+ PiArCj4+ICsJCXBzID0gaW50ZWxfYXRvbWljX2dldF9leGlzdGluZ19wbGFuZV9zdGF0ZShzdGF0 ZSwKPj4gKwkJCQkJCQkgICBpbnRlbF9wbGEKPj4gbmUpOwo+PiArCQlpZiAoIXBzKQo+PiArCQkJ Y29udGludWU7Cj4gT2ssIGxldCBtZSBzZWUgaWYgSSB1bmRlcnN0b29kOiBpZiBzb21lIG9mIHRo ZXNlIHBsYW5lcyBpcyBub3QgcGFydCBvZgo+IHRoZSBhdG9taWMgY29tbWl0LCB5b3UncmUgbm90 IGdvaW5nIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGNhbGN1bGF0aW9ucwo+IHNpbmNlIGl0cyB2YWx1 ZSBpcyBub3QgZ29pbmcgdG8gY2hhbmdlLiBUaGlzIHdvdWxkIGFsbG93IHVzIGxvY2sgbGVzcwo+ IHBsYW5lcywgd2hpY2ggaXMgdGhlIG1haW4gYWR2YW50YWdlLiBJcyB0aGlzIGNvcnJlY3Q/Cj4K PiBJZiB5ZXMsIGhvdyBtdWNoIGRvIHdlIHJlYWxseSBnYWluIGJ5IHNhdmluZyBzb21lIHBsYW5l IGxvY2tpbmc/Cj4KPiBTbyBieSBub3QgYXNzaWduaW5nIHZhbHVlcyB0byByZXN1bHQtPnhfdmFs IGF0IGlsa19jb21wdXRlX3dtX2xldmVsKCkKPiB3aGVuIE5VTEwgaXMgcGFzc2VkIHlvdSdyZSBn b2luZyB0byBwcmVzZXJ2ZSB3aGF0ZXZlciBjb3JyZWN0IHZhbHVlcwo+IHdlcmUgYWxyZWFkeSBz ZXQgZWFybGllciwgc28geW91IGRvbid0IG5lZWQgdG8gcmVjb21wdXRlIHRoZW0uIElzIHRoaXMK PiBjb3JyZWN0Pwo+Cj4gSWYgdGhlIGFuc3dlciB0byB0aGUgYWJvdmUgaXMgInllcyIsIHRoZW4g ZG9uJ3Qgd2UgbmVlZCB0byByZW1vdmUgdGhlCj4gbWVtc2V0KHBpcGVfd20sIDApIGF0IHRoZSBi ZWdpbm5pbmcgb2YgaWxrX2NvbXB1dGVfd21fbGV2ZWw/IE90aGVyd2lzZSwKPiBub3RoaW5nIHdp bGwgYmUgcHJlc2VydmVkLgo+Cj4gVGhlcmUncyBhbHNvIHRoZSB6ZXJvLWluaXRpYWxpemF0aW9u IG9mICJjb25maWciIHRvIGNvbnNpZGVyLgo+Cj4gT3IgbWF5YmUgaW5zdGVhZCBvZiBhbGwgb2Yg dGhlIGFib3ZlLCB3ZSdyZSB3b3JraW5nIHVuZGVyIHRoZQo+IGFzc3VtcHRpb24gdGhhdCBpZiBz b21lIG9mIHRoZSBwbGFuZXMgaXMgbm90IHBhcnQgb2YgdGhlIGF0b21pYyBjb21taXQsCj4gdGhl biBhbGwgaXRzIHJlbGV2YW50IFdNIHZhbHVlcyB3aWxsIGJlIHplcm8/Cj4KPj4gIAo+PiAgCQlp ZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQo+PiBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQo+ PiAtCQkJcHJpc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcyk7Cj4+IC0JCWVsc2UgaWYg KGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0KPj4gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSkKPj4g LQkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwo+PiAtCQllbHNlIGlmIChp bnRlbF9wbGFuZS0+YmFzZS50eXBlID09Cj4+IERSTV9QTEFORV9UWVBFX0NVUlNPUikKPj4gLQkJ CWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwo+PiArCQkJcHJpc3RhdGUgPSBw czsKPj4gKwkJZWxzZSBpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PQo+PiBEUk1fUExBTkVf VFlQRV9PVkVSTEFZKSB7Cj4+ICsJCQlzcHJzdGF0ZSA9IHBzOwo+PiArCj4+ICsJCQlpZiAocHMp IHsKPj4gKwkJCQlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0KPj4+IHZpc2li bGU7Cj4+ICsJCQkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0KPj4+IHZpc2li bGUgJiYKPiBZb3UncmUgc2V0dGluZyB0aGVzZSB2YWx1ZXMgaGVyZS4uLgo+Cj4+ICsJCQkJCShk cm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtCj4+PiBkc3QpICE9IGRybV9yZWN0X3dpZHRoKCZzcHJz dGF0ZS0+c3JjKSA+PiAxNiB8fAo+PiArCQkJCQlkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLQo+ Pj4gZHN0KSAhPSBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5zcmMpID4+IDE2KTsKPj4gKwkJ CX0KPj4gKwkJfSBlbHNlIGlmIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09Cj4+IERSTV9QTEFO RV9UWVBFX0NVUlNPUikKPiAobWlzc2luZyBicmFja2V0cyBoZXJlLCBidXQgaWYgeW91IGZvbGxv dyBteSBzdWdnZXN0aW9uIGJlbG93IHlvdSB3b24ndAo+IG5lZWQgdGhlbSkKPgo+PiArCQkJY3Vy c3RhdGUgPSBwczsKPj4gIAl9Cj4+ICAKPj4gLQljb25maWcuc3ByaXRlc19lbmFibGVkID0gc3By c3RhdGUtPnZpc2libGU7Cj4+IC0JY29uZmlnLnNwcml0ZXNfc2NhbGVkID0gc3Byc3RhdGUtPnZp c2libGUgJiYKPj4gLQkJKGRybV9yZWN0X3dpZHRoKCZzcHJzdGF0ZS0+ZHN0KSAhPQo+PiBkcm1f cmVjdF93aWR0aCgmc3Byc3RhdGUtPnNyYykgPj4gMTYgfHwKPj4gLQkJZHJtX3JlY3RfaGVpZ2h0 KCZzcHJzdGF0ZS0+ZHN0KSAhPQo+PiBkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5zcmMpID4+ IDE2KTsKPj4gKwljb25maWcuc3ByaXRlc19lbmFibGVkID0gcGlwZV93bS0+c3ByaXRlc19lbmFi bGVkOwo+PiArCWNvbmZpZy5zcHJpdGVzX3NjYWxlZCA9IHBpcGVfd20tPnNwcml0ZXNfc2NhbGVk Owo+PiAgCj4+ICAJcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3N0YXRlLT5iYXNlLmFjdGl2ZTsK Pj4gIAlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQgPSBjb25maWcuc3ByaXRlc19lbmFibGVkOwo+ PiAgCXBpcGVfd20tPnNwcml0ZXNfc2NhbGVkID0gY29uZmlnLnNwcml0ZXNfc2NhbGVkOwo+IC4u LmJ1dCB0aGVuIHdlIHJlLXNldCB0aGVtIGhlcmUuCj4KPiBFaXRoZXIgeW91IGNvdWxkIHJlbW92 ZSB0aGVzZSBhc3NpZ25tZW50cyBoZXJlLCBvciB5b3UgY291bGQgbW92ZSB0aGUKPiAiaWYgKHBz KSIgZnJvbSB0aGUgbG9vcCB0byBvdXRzaWRlIGl0LCBiZWNvbWluZyAiaWYgKHNwcnN0YXRlKSIs IG1ha2luZwo+IHRoZSBwb3N0LXBhdGNoIGNvZGUgc2ltaWxhciB0byB0aGUgcHJlLXBhdGNoIGNv ZGUuIFNpbmNlIGJvdGggcGlwZV93bQo+IGFuZCBjb25maWcgYXJlIHplcm8taW5pdGlhbGl6ZWQg eW91IGRvbid0IGV2ZW4gbmVlZCB0byB0aGluayBhYm91dCB0aGUKPiAhc3Byc3RhdGUgY2FzZS4K TWFrZXMgc2Vuc2UsIHdpbGwgZG8gc28uCj4+ICAKPj4gIAkvKiBJTEsvU05COiBMUDIrIHdhdGVy bWFya3Mgb25seSB3L28gc3ByaXRlcyAqLwo+PiAtCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 PSA2ICYmIHNwcnN0YXRlLT52aXNpYmxlKQo+PiArCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 PSA2ICYmIHBpcGVfd20tPnNwcml0ZXNfZW5hYmxlZCkKPj4gIAkJbWF4X2xldmVsID0gMTsKPj4g IAo+PiAgCS8qIElMSy9TTkIvSVZCOiBMUDErIHdhdGVybWFya3Mgb25seSB3L28gc2NhbGluZyAq Lwo+PiBAQCAtMjM1MiwyMCArMjM2NSwxOCBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVf d20oc3RydWN0Cj4+IGludGVsX2NydGMgKmludGVsX2NydGMsCj4+ICAJaWxrX2NvbXB1dGVfd21f cmVnX21heGltdW1zKGRldiwgMSwgJm1heCk7Cj4+ICAKPj4gIAlmb3IgKGxldmVsID0gMTsgbGV2 ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4+IC0JCXN0cnVjdCBpbnRlbF93bV9sZXZlbCB3 bSA9IHt9Owo+PiArCQlzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwgKndtID0gJnBpcGVfd20tPndtW2xl dmVsXTsKPj4gIAo+PiAgCQlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgaW50ZWxfY3J0 YywgbGV2ZWwsCj4+IGNzdGF0ZSwKPj4gLQkJCQkgICAgIHByaXN0YXRlLCBzcHJzdGF0ZSwgY3Vy c3RhdGUsCj4+ICZ3bSk7Cj4+ICsJCQkJICAgICBwcmlzdGF0ZSwgc3Byc3RhdGUsIGN1cnN0YXRl LAo+PiB3bSk7Cj4+ICAKPj4gIAkJLyoKPj4gIAkJICogRGlzYWJsZSBhbnkgd2F0ZXJtYXJrIGxl dmVsIHRoYXQgZXhjZWVkcyB0aGUKPj4gIAkJICogcmVnaXN0ZXIgbWF4aW11bXMgc2luY2Ugc3Vj aCB3YXRlcm1hcmtzIGFyZQo+PiAgCQkgKiBhbHdheXMgaW52YWxpZC4KPj4gIAkJICovCj4+IC0J CWlmICghaWxrX3ZhbGlkYXRlX3dtX2xldmVsKGxldmVsLCAmbWF4LCAmd20pKQo+PiArCQlpZiAo IWlsa192YWxpZGF0ZV93bV9sZXZlbChsZXZlbCwgJm1heCwgd20pKQo+PiAgCQkJYnJlYWs7Cj4+ IC0KPj4gLQkJcGlwZV93bS0+d21bbGV2ZWxdID0gd207Cj4gVGhlIGNoYW5nZSBpbiB0aGUgY2h1 bmsgYWJvdmUgaXMgdGhhdCB3ZSdyZSBub3cgbGVhdmluZyB3aXRoIG5vbi16ZXJvCj4gd20tPntw cmksc3ByLGN1cn1fdmFsIGlmIHNvbWUgbGV2ZWwgaXMgaW52YWxpZC4gR2l2ZW4gdGhlIGN1cnJl bnQKPiBjb21wbGV4aXR5IG9mIHRoZSBjb2RlLCBpdCdzIG5vdCB0cml2aWFsIHZlcmlmeSB3aGV0 aGVyIG5vdGhpbmcgbGF0ZXIKPiBpcyBhc3N1bWluZyB0aGF0IGludmFsaWQgbGV2ZWxzIGFyZSBh bGwtemVybywgYnV0IGl0IGxvb2tzIGxpa2Ugd2UncmUKPiBzYWZlLiBBbnl3YXksIGNvdWxkIHlv dSBwbGVhc2UgbW92ZSB0aGlzIHRvIGEgc2VwYXJhdGUgcGF0Y2ggdGhhdCBjb21lcwo+IGJlZm9y ZSB0aGUgb3RoZXIgY2hhbmdlcz8gSXQgc2VlbXMgdGhpcyBjaGFuZ2Ugd291bGQgYmUgc2FmZSBh bG9uZSwgYW5kCj4gd2UncmUgc2VlaW5nIHByb2JsZW1zIHdpdGggV01zIHRoZXNlIGRheXMsIHNv IGhhdmluZyBuaWNlIGJpc2VjdGFiaWxpdHkKPiBpcyBhIGh1Z2UgcGx1cy4KPgpXZWxsIGNhdWdo dCwgSSB0aGluayB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBldmVuIGludmFsaWQgdmFsdWVzLCBidXQg c2V0IC0+ZW5hYmxlID0gZmFsc2UgaW4gdGhhdCBjYXNlLgpUaGF0IGlzIHRoZSBvbmx5IHdheSB3 ZSBjYW4gZW5zdXJlIHRoYXQgdGhlIHdtIGxldmVscyBhcmUgY2FsY3VsYXRlZCBjb3JyZWN0bHku CkkndmUgc2VudCB0aG9zZSBhcyBzZXBhcmF0ZSBwYXRjaGVzLCBzbyBJIGdldCBhIGZ1bGwgQ0kg cnVuIGZyb20gdGhlbS4KCltQQVRDSCAxLzJdIGRybS9pOTE1OiBBbGxvdyBwcmVzZXJ2YXRpb24g b2Ygd2F0ZXJtYXJrcy4KW1BBVENIIDIvMl0gZHJtL2k5MTU6IE9ubHkgcmVjYWxjdWxhdGUgd20n cyBmb3IgcGxhbmVzIHBhcnQgb2YgdGhlIHN0YXRlLCB2Mi4KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==