From: Daniel Vetter Subject: Re: [PATCH v2 05/10] drm/i915/gen9: Get rid of redundant watermark values Date: Mon, 17 Oct 2016 08:05:00 +0200 Message-ID: <20161017060500.GO20761@phenom.ffwll.local> References: <1475885497-6094-1-git-send-email-cpaul@redhat.com> <1475885497-6094-6-git-send-email-cpaul@redhat.com> <1476389043.2478.30.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1476389043.2478.30.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 Cc: David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBPY3QgMTMsIDIwMTYgYXQgMDU6MDQ6MDNQTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IEVtIFF1aSwgMjAxNi0xMC0xMyDDoHMgMTU6MzkgKzAyMDAsIE1hYXJ0ZW4gTGFua2hv cnN0IGVzY3JldmV1Ogo+ID4gT3AgMDgtMTAtMTYgb20gMDI6MTEgc2NocmVlZiBMeXVkZToKPiA+ ID4gCj4gPiA+IE5vdyB0aGF0IHdlJ3ZlIG1ha2Ugc2tsX3dtX2xldmVscyBtYWtlIGEgbGl0dGxl IG1vcmUgc2Vuc2UsIHdlIGNhbgo+ID4gPiByZW1vdmUgYWxsIG9mIHRoZSByZWR1bmRhbnQgd20g aW5mb3JtYXRpb24uIFVwIHVudGlsIG5vdyB3ZSdkIGJlZW4KPiA+ID4gc3RvcmluZyB0d28gY29w aWVzIG9mIGFsbCBvZiB0aGUgc2tsIHdhdGVybWFya3M6IG9uZSBiZWluZyB0aGUKPiA+ID4gc2ts X3BpcGVfd20gc3RydWN0cywgdGhlIG90aGVyIGJlaW5nIHRoZSBnbG9iYWwgd20gc3RydWN0IGlu Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgY29udGFpbmluZyB0aGUgcmF3IHJlZ2lzdGVyIHZhbHVl cy4gVGhpcyBpcwo+ID4gPiBjb25mdXNpbmcKPiA+ID4gYW5kIHByb2JsZW1hdGljLCBzaW5jZSBp dCBtZWFucyB3ZSdyZSBwcm9uZSB0byBhY2NpZGVudGFsbHkgbGV0dGluZwo+ID4gPiB0aGUKPiA+ ID4gdHdvIGNvcGllcyBnbyBvdXQgb2Ygc3luYy4gU28sIGdldCByaWQgb2YgYWxsIG9mIHRoZSBm dW5jdGlvbnMKPiA+ID4gcmVzcG9uc2libGUgZm9yIGNvbXB1dGluZyB0aGUgcmVnaXN0ZXIgdmFs dWVzIGFuZCBqdXN0IHVzZSBhIHNpbmdsZQo+ID4gPiBoZWxwZXIsIHNrbF93cml0ZV93bV9sZXZl bCgpLCB0byBjb252ZXJ0IGFuZCB3cml0ZSB0aGUgbmV3Cj4gPiA+IHdhdGVybWFya3Mgb24KPiA+ ID4gdGhlIGZseS4KPiA+ID4gCj4gPiA+IENoYW5nZXMgc2luY2UgdjE6Cj4gPiA+IC0gRml4dXAg c2tsX3dyaXRlX3dtX2xldmVsKCkKPiA+ID4gLSBGaXh1cCBza2xfd21fbGV2ZWxfZnJvbV9yZWdf dmFsKCkKPiA+ID4gLSBEb24ndCBmb3JnZXQgdG8gY29weSAqYWN0aXZlIHRvIGludGVsX2NydGMt PndtLmFjdGl2ZS5za2wKPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IEx5dWRlIDxjcGF1bEBy ZWRoYXQuY29tPgo+ID4gPiBSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiA+ID4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+IENjOiBQYXVsbyBaYW5vbmkgPHBhdWxv LnIuemFub25pQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoHzCoMKgwqAyIC0KPiA+ID4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfMKgwqAxNCArKy0KPiA+ID4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDCoMKgwqB8wqDCoMKgNiArLQo+ID4gPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmPCoMKgwqDCoMKgwqB8IDIwNCArKysrKysrKysrKystLS0t LS0tLS0tLQo+ID4gPiAtLS0tLS0tLS0tLS0KPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuY8KgwqB8wqDCoMKgOCArLQo+ID4gPiDCoDUgZmlsZXMgY2hhbmdlZCwgOTAg aW5zZXJ0aW9ucygrKSwgMTQ0IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gPiA+IGluZGV4IDAyODdjOTMuLjc2NTgzYjIgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBAQCAtMTY0NCw4ICsxNjQ0LDYgQEAgc3Ry dWN0IHNrbF9kZGJfYWxsb2NhdGlvbiB7Cj4gPiA+IMKgc3RydWN0IHNrbF93bV92YWx1ZXMgewo+ ID4gPiDCoAl1bnNpZ25lZCBkaXJ0eV9waXBlczsKPiA+ID4gwqAJc3RydWN0IHNrbF9kZGJfYWxs b2NhdGlvbiBkZGI7Cj4gPiA+IC0JdWludDMyX3QgcGxhbmVbSTkxNV9NQVhfUElQRVNdW0k5MTVf TUFYX1BMQU5FU11bOF07Cj4gPiA+IC0JdWludDMyX3QgcGxhbmVfdHJhbnNbSTkxNV9NQVhfUElQ RVNdW0k5MTVfTUFYX1BMQU5FU107Cj4gPiA+IMKgfTsKPiA+ID4gwqAKPiA+ID4gwqBzdHJ1Y3Qg c2tsX3dtX2xldmVsIHsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ID4gPiBpbmRleCBhNzFkMDVhLi4zOTQwMGEwIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+IEBAIC0zMzc4LDYgKzMzNzgsOCBAQCBzdGF0aWMg dm9pZAo+ID4gPiBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Y19zdGF0ZS0KPiA+ID4gPmJhc2UuY3J0Yyk7Cj4gPiA+IMKgCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gPiA+IMKgCWNvbnN0IHN0 cnVjdCBza2xfd21fdmFsdWVzICp3bSA9ICZkZXZfcHJpdi0KPiA+ID4gPndtLnNrbF9yZXN1bHRz Owo+ID4gPiArCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKnBfd20gPQo+ID4gPiArCQkmY3J0 Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzWzBdOwo+ID4gPiDCoAlpbnQgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Cj4gPiA+IMKgCXUzMiBwbGFuZV9jdGw7Cj4gPiA+IMKgCXVuc2lnbmVk IGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ID4gPiBAQCAtMzQx NCw3ICszNDE2LDcgQEAgc3RhdGljIHZvaWQKPiA+ID4gc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ID4gwqAJaW50ZWxfY3J0Yy0+YWRqdXN0 ZWRfeSA9IHNyY195Owo+ID4gPiDCoAo+ID4gPiDCoAlpZiAod20tPmRpcnR5X3BpcGVzICYgZHJt X2NydGNfbWFzaygmaW50ZWxfY3J0Yy0+YmFzZSkpCj4gPiA+IC0JCXNrbF93cml0ZV9wbGFuZV93 bShpbnRlbF9jcnRjLCB3bSwgMCk7Cj4gPiA+ICsJCXNrbF93cml0ZV9wbGFuZV93bShpbnRlbF9j cnRjLCBwX3dtLCAmd20tPmRkYiwgMCk7Cj4gPiA+IMKgCj4gPiA+IMKgCUk5MTVfV1JJVEUoUExB TkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwpOwo+ID4gPiDCoAlJOTE1X1dSSVRFKFBMQU5FX09G RlNFVChwaXBlLCAwKSwgKHNyY195IDw8IDE2KSB8IHNyY194KTsKPiA+ID4gQEAgLTM0NDgsNiAr MzQ1MCw4IEBAIHN0YXRpYyB2b2lkCj4gPiA+IHNreWxha2VfZGlzYWJsZV9wcmltYXJ5X3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCj4gPiA+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5kZXY7Cj4gPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiA+ID4gwqAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUgPQo+ID4gPiB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4gKwlj b25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpwX3dtID0gJmNzdGF0ZS0KPiA+ID4gPndtLnNrbC5v cHRpbWFsLnBsYW5lc1swXTsKPiA+ID4gwqAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ ID4gPiDCoAo+ID4gPiDCoAkvKgo+ID4gPiBAQCAtMzQ1NSw3ICszNDU5LDggQEAgc3RhdGljIHZv aWQKPiA+ID4gc2t5bGFrZV9kaXNhYmxlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cHJpbWFyeSwKPiA+ID4gwqAJwqAqIHBsYW5lJ3MgdmlzaWJsaXR5IGlzbid0IGFjdHVhbGx5IGNo YW5naW5nIG5laXRoZXIgaXMKPiA+ID4gaXRzIHdhdGVybWFya3MuCj4gPiA+IMKgCcKgKi8KPiA+ ID4gwqAJaWYgKCFjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+dmlzaWJsZSkKPiA+ID4gLQkJc2tsX3dy aXRlX3BsYW5lX3dtKGludGVsX2NydGMsICZkZXZfcHJpdi0KPiA+ID4gPndtLnNrbF9yZXN1bHRz LCAwKTsKPiA+ID4gKwkJc2tsX3dyaXRlX3BsYW5lX3dtKGludGVsX2NydGMsIHBfd20sCj4gPiA+ ICsJCQkJwqDCoMKgJmRldl9wcml2LT53bS5za2xfcmVzdWx0cy5kZGIsCj4gPiA+IDApOwo+ID4g PiDCoAo+ID4gPiDCoAlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7Cj4gPiA+IMKg CUk5MTVfV1JJVEUoUExBTkVfU1VSRihwaXBlLCAwKSwgMCk7Cj4gPiA+IEBAIC0xMDgxOSwxMiAr MTA4MjQsMTUgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdAo+ID4gPiBk cm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsCj4gPiA+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZGV2KTsKPiA+ID4gwqAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUgPQo+ID4gPiB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ID4gwqAJY29u c3Qgc3RydWN0IHNrbF93bV92YWx1ZXMgKndtID0gJmRldl9wcml2LQo+ID4gPiA+d20uc2tsX3Jl c3VsdHM7Cj4gPiA+ICsJY29uc3Qgc3RydWN0IHNrbF9wbGFuZV93bSAqcF93bSA9Cj4gPiA+ICsJ CSZjc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1tQTEFORV9DVVJTT1JdOwo+ID4gPiDCoAlp bnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiA+IMKgCXVpbnQzMl90IGNudGwgPSAwOwo+ ID4gPiDCoAo+ID4gPiDCoAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5ICYmIHdtLT5kaXJ0 eV9waXBlcyAmCj4gPiA+IGRybV9jcnRjX21hc2soY3J0YykpCj4gPiA+IC0JCXNrbF93cml0ZV9j dXJzb3Jfd20oaW50ZWxfY3J0Yywgd20pOwo+ID4gPiArCQlza2xfd3JpdGVfY3Vyc29yX3dtKGlu dGVsX2NydGMsIHBfd20sICZ3bS0+ZGRiKTsKPiA+ID4gwqAKPiA+ID4gwqAJaWYgKHBsYW5lX3N0 YXRlICYmIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiA+ID4gwqAJCWNudGwgPSBNQ1VS U09SX0dBTU1BX0VOQUJMRTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ ID4gaW5kZXggZDY4NGY0Zi4uOTU4ZGM3MiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+ID4gQEAgLTE3NjUsOSArMTc2NSwxMSBAQCBib29sIHNrbF9kZGJfYWxsb2Nh dGlvbl9lcXVhbHMoY29uc3Qgc3RydWN0Cj4gPiA+IHNrbF9kZGJfYWxsb2NhdGlvbiAqb2xkLAo+ ID4gPiDCoGJvb2wgc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSwKPiA+ID4gwqAJCQkJwqBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 Yyk7Cj4gPiA+IMKgdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLAo+ID4gPiAtCQkJwqBjb25zdCBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd20pOwo+ ID4gPiArCQkJwqBjb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSwKPiA+ID4gKwkJCcKgY29u c3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiKTsKPiA+ID4gwqB2b2lkIHNrbF93cml0 ZV9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiA+ID4gLQkJCWNvbnN0 IHN0cnVjdCBza2xfd21fdmFsdWVzICp3bSwKPiA+ID4gKwkJCWNvbnN0IHN0cnVjdCBza2xfcGxh bmVfd20gKndtLAo+ID4gPiArCQkJY29uc3Qgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRi LAo+ID4gPiDCoAkJCWludCBwbGFuZSk7Cj4gPiA+IMKgdWludDMyX3QgaWxrX3BpcGVfcGl4ZWxf cmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gPiAqcGlwZV9jb25maWcpOwo+ ID4gPiDCoGJvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ID4gPiBpbmRleCA1ZGJhZjEyLi41Y2I1 MzdjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gQEAgLTMwMDAs NiArMzAwMCw4IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdAo+ID4gPiBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiDCoAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICppbnRlbF9zdGF0ZSA9Cj4gPiA+IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gPiA+ IMKgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlOwo+ID4gPiArCXN0cnVjdCBza2xfcGxhbmVfd20gKndtOwo+ID4gPiDCoAllbnVt IHBpcGUgcGlwZTsKPiA+ID4gwqAJaW50IGxldmVsLCBwbGFuZTsKPiA+ID4gwqAKPiA+ID4gQEAg LTMwMjAsMTggKzMwMjIsMjEgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0Cj4g PiA+IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gPiDCoAkvKiBTaW5jZSB3ZSdyZSBub3cg Z3VhcmFudGVlZCB0byBvbmx5IGhhdmUgb25lIGFjdGl2ZQo+ID4gPiBDUlRDLi4uICovCj4gPiA+ IMKgCXBpcGUgPSBmZnMoaW50ZWxfc3RhdGUtPmFjdGl2ZV9jcnRjcykgLSAxOwo+ID4gPiDCoAlj cnRjID0gZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwo+ID4gPiArCWNzdGF0 ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwKPiA+ID4gdG9faW50ZWxfY3J0 YyhjcnRjKSk7Cj4gPiBXcm9uZyBjc3RhdGUgaGVyZSwgc2hvdWxkIGJlIGNydGMtPnN0YXRlIHNp bmNlIGl0J3MgY29tbWl0dGVkIGFuZAo+ID4gY3J0Y19zdGF0ZSBpcyB0aGUgb2xkIHN0YXRlLgo+ IAo+IEFoLi4uIEhvdyBtYW55IGluc3RhbmNlcyBvZiB0aGUgInlvdSdyZSBsb29raW5nIGF0IHRo ZSB3cm9uZyBzdGF0ZQo+IHN0cnVjdCIgaGF2ZSB3ZSBzcG90dGVkL2ZpeGVkIGV2ZXIgc2luY2Ug dGhlIGludHJvZHVjdGlvbiBvZiB0aGUgYXRvbWljCj4gY29kZT8gQ2FuJ3Qgd2UgdHJ5IHRvIGRv IHNvbWV0aGluZyBtb3JlIGh1bWFuLXByb29mIGluIG9yZGVyIHRvIGF2b2lkCj4gdGhlc2UgcHJv YmxlbXMgZnJvbSBoYXBwZW5pbmcgYWdhaW4gYW5kIGFnYWluPwo+IAo+IExpa2UgZm9yIGV4YW1w bGUgY29weWluZyB0aGUgb2xkIHN0YXRlcyB0byBhIHNwZWNpZmljIHN0cnVjdHVyZSBsaWtlCj4g ZHJtX2F0b21pY19zdGF0ZS0+b2xkX3N0YXRlc193aGljaF95b3VfcHJvYmFibHlfc2hvdWxkbl9i ZV91c2luZywgYW5kCj4gdGhlbiBzZXR0aW5nIHRoZSBDUlRDL2Nvbm5lY3Rvci9wbGFuZSBzdGF0 ZXMgaW4gdGhlIGRybV9hdG9taWNfc3RhdGUKPiBzdHJ1Y3QgdG8gTlVMTCBzbyBidWdzIHdpbGwg YmUgbXVjaCBlYXNpZXIgdG8gc3BvdD8KCk1hYXJ0ZW4gaGFzIHBhdGNoZXMgc29tZXdoZXJlIHRv IGNyZWF0ZSBleHBsaWNpdCBvbGQvbmV3IHN0YXRlIHBvaW50ZXJzIGluCmRybV9hdG9taWNfc3Rh dGUuIE5vdCBzdXJlIHdoZXJlIGV4YWN0bHkgdGhleSdyZSBzdHVjay4KLURhbmllbAotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==