From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915: Enable scanline read for gen9 dsi Date: Mon, 11 Sep 2017 20:50:19 +0300 Message-ID: <20170911175019.GN4914@intel.com> References: <1504878535-28667-1-git-send-email-vidya.srinivas@intel.com> <20170908144759.GH4914@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26AF96E4D4 for ; Mon, 11 Sep 2017 17:50:24 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Shankar, Uma" Cc: "intel-gfx@lists.freedesktop.org" , "Srinivas, Vidya" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMTEsIDIwMTcgYXQgMDE6MDQ6MThQTSArMDAwMCwgU2hhbmthciwgVW1hIHdy b3RlOgo+IAo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBWaWxsZSBT eXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+U2VudDog RnJpZGF5LCBTZXB0ZW1iZXIgOCwgMjAxNyA4OjE4IFBNCj4gPlRvOiBTcmluaXZhcywgVmlkeWEg PHZpZHlhLnNyaW5pdmFzQGludGVsLmNvbT4KPiA+Q2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmc7IEthaG9sYSwgTWlrYSA8bWlrYS5rYWhvbGFAaW50ZWwuY29tPjsKPiA+S2FtYXRo LCBTdW5pbCA8c3VuaWwua2FtYXRoQGludGVsLmNvbT47IFNoYW5rYXIsIFVtYQo+ID48dW1hLnNo YW5rYXJAaW50ZWwuY29tPjsgS29uZHVydSwgQ2hhbmRyYSA8Y2hhbmRyYS5rb25kdXJ1QGludGVs LmNvbT4KPiA+U3ViamVjdDogUmU6IFtQQVRDSF0gZHJtL2k5MTU6IEVuYWJsZSBzY2FubGluZSBy ZWFkIGZvciBnZW45IGRzaQo+ID4KPiA+T24gRnJpLCBTZXAgMDgsIDIwMTcgYXQgMDc6MTg6NTVQ TSArMDUzMCwgVmlkeWEgU3Jpbml2YXMgd3JvdGU6Cj4gPj4gRnJvbTogVW1hIFNoYW5rYXIgPHVt YS5zaGFua2FyQGludGVsLmNvbT4KPiA+Pgo+ID4+IEZvciBnZW45IHBsYXRmb3JtcywgZHNpIHRp bWluZ3MgYXJlIGRyaXZlbiBmcm9tIHBvcnQgaW5zdGVhZCBvZiBwaXBlCj4gPj4gKHVubGlrZSBk ZGkpLiBUaHVzLCB3ZSBjYW4ndCByZWx5IG9uIHBpcGUgcmVnaXN0ZXJzIHRvIGdldCB0aGUgdGlt aW5nCj4gPj4gaW5mb3JtYXRpb24uIEV2ZW4gc2NhbmxpbmUgcmVnaXN0ZXIgcmVhZCB3aWxsIG5v dCBiZSBmdW5jdGlvbmFsLgo+ID4+IFRoaXMgaXMgY2F1c2luZyB2YmxhbmsgZXZhc2lvbiBsb2dp YyB0byBmYWlsIHNpbmNlIGl0IHJlbGllcyBvbgo+ID4+IHNjYW5saW5lLCBjYXVzaW5nIGF0b21p YyB1cGRhdGUgZmFpbHVyZSB3YXJuaW5ncy4KPiA+Pgo+ID4+IFRoaXMgcGF0Y2ggdXNlcyBwaXBl IGZyYW1lc3RhbXAgYW5kIGN1cnJlbnQgdGltZXN0YW1wIHJlZ2lzdGVycyB0bwo+ID4+IGNhbGN1 bGF0ZSBzY2FubGluZS4gVGhpcyBpcyBhbiBpbmRpcmVjdCB3YXkgdG8gZ2V0IHRoZSBzY2FubGlu ZS4KPiA+PiBJdCBoZWxwcyByZXNvbHZlIGF0b21pYyB1cGRhdGUgZmFpbHVyZSBmb3IgZ2VuOSBk c2kgcGxhdGZvcm1zLgo+ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTogVW1hIFNoYW5rYXIgPHVtYS5z aGFua2FyQGludGVsLmNvbT4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBDaGFuZHJhIEtvbmR1cnUgPGNo YW5kcmEua29uZHVydUBpbnRlbC5jb20+Cj4gPj4gU2lnbmVkLW9mZi1ieTogVmlkeWEgU3Jpbml2 YXMgPHZpZHlhLnNyaW5pdmFzQGludGVsLmNvbT4KPiA+PiAtLS0KPiA+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAgMiArKwo+ID4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgIHwgIDUgKysrKysKPiA+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o ICB8ICAzICsrKwo+ID4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIHwgNDYKPiA+ PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gIDQgZmlsZXMg Y2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggaW5kZXggZDA3ZDExMC4uNDIxM2I1NCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ID4+IEBAIC00MDc3LDYgKzQwNzcsOCBAQCB2b2lkIGludGVsX3NiaV93cml0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4+ICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVl LAo+ID4+ICB1MzIgdmx2X2ZsaXNkc2lfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiByZWcpOwo+ID4+IHZvaWQgdmx2X2ZsaXNkc2lfd3JpdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIKPiA+PiB2YWwpOwo+ID4+Cj4gPj4g K3UzMiBieHRfZHNpX2dldF9zY2FubGluZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gPj4g Kwo+ID4+ICAvKiBpbnRlbF9kcGlvX3BoeS5jICovCj4gPj4gIHZvaWQgYnh0X3BvcnRfdG9fcGh5 X2NoYW5uZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQKPiA+ cG9ydCwKPiA+PiAgCQkJICAgICBlbnVtIGRwaW9fcGh5ICpwaHksIGVudW0gZHBpb19jaGFubmVs ICpjaCk7IGRpZmYgLS0KPiA+Z2l0Cj4gPj4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4+IGluZGV4IDVkMzkxZTYu LjMxYWE3ZjAgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+PiBAQCAtNzgx LDYgKzc4MSw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1Y3Qg aW50ZWxfY3J0Ywo+ID4qY3J0YykKPiA+PiAgCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFu azsKPiA+PiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+PiAgCWludCBwb3NpdGlv biwgdnRvdGFsOwo+ID4+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyOwo+ID4+Cj4g Pj4gIAlpZiAoIWNydGMtPmFjdGl2ZSkKPiA+PiAgCQlyZXR1cm4gLTE7Cj4gPj4gQEAgLTc5Miw2 ICs3OTMsMTAgQEAgc3RhdGljIGludCBfX2ludGVsX2dldF9jcnRjX3NjYW5saW5lKHN0cnVjdCBp bnRlbF9jcnRjCj4gPipjcnRjKQo+ID4+ICAJaWYgKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxB R19JTlRFUkxBQ0UpCj4gPj4gIAkJdnRvdGFsIC89IDI7Cj4gPj4KPiA+PiArCWNwdV90cmFuc2Nv ZGVyID0gY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiA+Cj4gPkh1bW0uIFdvdWxkIGJl IG5pY2UgdG8gYmUgYWJsZSB0byBkbyB0aGlzIHdpdGhvdXQgYWRkaW5nIG1vcmUKPiA+Y3J0Yy0+ Y29uZmlnIHVzZXMuIFdlJ3JlIHByZXR0eSBtdWNoIHRyeWluZyB0byBnZXQgcmlkIG9mIHRoYXQg Z3V5Lgo+ID4KPiAKPiBXaWxsIHRyeSB0byBmaW5kIGFuIGFsdGVybmF0ZSB3YXkgdG8gZG8gdGhp cy4KPiAKPiA+PiArCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSAmJiB0cmFuc2NvZGVyX2lzX2Rz aShjcHVfdHJhbnNjb2RlcikpCj4gPj4gKwkJcmV0dXJuIGJ4dF9kc2lfZ2V0X3NjYW5saW5lKGNy dGMpOwo+ID4+ICsKPiA+PiAgCWlmIChJU19HRU4yKGRldl9wcml2KSkKPiA+PiAgCQlwb3NpdGlv biA9IEk5MTVfUkVBRF9GVyhQSVBFRFNMKHBpcGUpKSAmCj4gPkRTTF9MSU5FTUFTS19HRU4yOwo+ ID4+ICAJZWxzZQo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGluZGV4IDlhNzNlYTAu LjU0NTgyZGUgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+PiBAQCAtODgw Miw2ICs4ODAyLDkgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gPj4gICNkZWZpbmUgTUlQSU9f VFhFU0NfQ0xLX0RJVjIJCQlfTU1JTygweDE2MDAwOCkKPiA+PiAgI2RlZmluZSAgR0xLX1RYX0VT Q19DTEtfRElWMl9NQVNLCQkJMHgzRkYKPiA+Pgo+ID4+ICsjZGVmaW5lIEJYVF9USU1FU1RBTVBf Q1RSCV9NTUlPKDB4NDQwNzApCj4gPj4gKyNkZWZpbmUgQlhUX1BJUEVfRlJNVE1TVE1QX0EJX01N SU8oMHg3MDA0OCkKPiA+Cj4gPlBsZWFzZSBhZGQgcHJvcGVyIHBhcmFtZXRyaXplZCBkZWZpbmUg dGhhdCB3b3JrcyBmb3IgYWxsIHBpcGVzLgo+ID4KPiAKPiBXaWxsIGFkZCB0aGF0Lgo+IAo+ID4+ ICsKPiA+PiAgLyogQlhUIE1JUEkgY2xvY2sgY29udHJvbHMgKi8KPiA+PiAgI2RlZmluZSBCWFRf TUFYX1ZBUl9PVVRQVVRfS0haCQkJMzk1MDAKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ID4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHNpLmMKPiA+PiBpbmRleCAyYTBmNWQzLi5kMTQ1YmE0IDEwMDY0NAo+ID4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpLmMKPiA+PiBAQCAtMTYyMSw2ICsxNjIxLDUyIEBAIHN0YXRpYyBpbnQg aW50ZWxfZHNpX2dldF9tb2RlcyhzdHJ1Y3QKPiA+ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ID4+ICAJcmV0dXJuIDE7Cj4gPj4gIH0KPiA+Pgo+ID4+ICsvKgo+ID4+ICsgKiBGb3IgR2VuOSBE U0ksIHBpcGUgc2NhbmxpbmUgcmVnaXN0ZXIgd2lsbCBub3QKPiA+PiArICogd29yayB0byBnZXQg dGhlIHNjYW5saW5lIHNpbmNlIHRoZSB0aW1pbmdzCj4gPj4gKyAqIGFyZSBkcml2ZW4gZnJvbSB0 aGUgUE9SVCAodW5saWtlIERESSBlbmNvZGVycykuCj4gPj4gKyAqIFRoaXMgZnVuY3Rpb24gd2ls bCB1c2UgRnJhbWVzdGFtcCBhbmQgY3VycmVudAo+ID4+ICsgKiB0aW1lc3RhbXAgcmVnaXN0ZXJz IHRvIGNhbGN1bGF0ZSB0aGUgc2NhbmxpbmUuCj4gPj4gKyAqLwo+ID4+ICt1MzIgYnh0X2RzaV9n ZXRfc2NhbmxpbmUoc3RydWN0IGludGVsX2NydGMgKmNydGMpIHsKPiA+PiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+PiArCXUzMiB2cmVmcmVzaCA9IGNydGMt PmJhc2UubW9kZS52cmVmcmVzaDsKPiA+PiArCXUzMiB1bFByZXZUaW1lLCB1bEN1cnJUaW1lLCB2 dG90YWwsIHVsU2NhbmxpbmVObzIgPSAwOwo+ID4KPiA+UGxlYXNlIGdldCByaWQgb2YgdGhlIGh1 bmdhcmlhbiBub3RhdGlvbi4KPiA+Cj4gCj4gWWVzLCB3aWxsIGZpeCB0aGlzLgo+IAo+ID4+ICsJ dWludF9maXhlZF8xNl8xNl90IHVsU2NhbmxpbmVUaW1lOwo+ID4+ICsKPiA+PiArCS8qCj4gPj4g KwkgKiBUaGlzIGZpZWxkIHByb3ZpZGVzIHJlYWQgYmFjayBvZiB0aGUgZGlzcGxheQo+ID4+ICsJ ICogcGlwZSBmcmFtZSB0aW1lIHN0YW1wLiBUaGUgdGltZSBzdGFtcCB2YWx1ZQo+ID4+ICsJICog aXMgc2FtcGxlZCBhdCBldmVyeSBzdGFydCBvZiB2ZXJ0aWNhbCBibGFuay4KPiA+PiArCSAqLwo+ ID4+ICsJdWxQcmV2VGltZSA9IEk5MTVfUkVBRF9GVyhCWFRfUElQRV9GUk1UTVNUTVBfQSk7Cj4g Pj4gKwo+ID4+ICsJLyoKPiA+PiArCSAqIFRoZSBUSU1FU1RBTVBfQ1RSIHJlZ2lzdGVyIGhhcyB0 aGUgY3VycmVudAo+ID4+ICsJICogdGltZSBzdGFtcCB2YWx1ZS4KPiA+PiArCSAqLwo+ID4+ICsJ dWxDdXJyVGltZSA9IEk5MTVfUkVBRF9GVyhCWFRfVElNRVNUQU1QX0NUUik7Cj4gPj4gKwo+ID4+ ICsJLyogVGhlIFBPUlQgZm9yIERTSSB3aWxsIGFsd2F5cyBiZSAwIHNpbmNlCj4gPj4gKwkgKiBp c29sYXRlZCBQT1JUQyBjYW5ub3QgYmUgZW5hYmxlZCBmb3IgR2VuOQo+ID4+ICsJICogRFNJLiBI ZW5jZSB1c2luZyBQT1JUX0EgaS5lIDAgdG8gZXh0cmFjdAo+ID4+ICsJICogdGhlIFZUT1RBTCB2 YWx1ZS4KPiA+PiArCSAqLwo+ID4+ICsJdnRvdGFsID0gSTkxNV9SRUFEX0ZXKEJYVF9NSVBJX1RS QU5TX1ZUT1RBTCgwKSk7Cj4gPgo+ID5UaGlzIHZhbHVlIGNhbiBiZSBkdWcgb3V0IGZyb20gdGhl IGh3bW9kZS4KPiA+Cj4gCj4gWWVzLCB3aWxsIGdldCBpdCBmcm9tIGh3bW9kZSBhbmQgZHJvcCB0 aGlzIGNoYW5nZS4KPiAKPiA+PiArCVdBUk5fT04oIXZ0b3RhbCk7Cj4gPj4gKwlpZiAoIXZ0b3Rh bCkKPiA+PiArCQlyZXR1cm4gdWxTY2FubGluZU5vMjsKPiA+PiArCj4gPj4gKwl1bFNjYW5saW5l VGltZSA9IGRpdl9maXhlZDE2KDEwMDAwMDAsIHZ0b3RhbCAqIHZyZWZyZXNoKTsKPiA+PiArCXVs U2NhbmxpbmVObzIgPSBkaXZfcm91bmRfdXBfdTMyX2ZpeGVkMTYoKHVsQ3VyclRpbWUgLSB1bFBy ZXZUaW1lKSwKPiA+PiArCQkJCQkJdWxTY2FubGluZVRpbWUpOwo+ID4KPiA+U29tZXRoaW5nIGxp a2U6Cj4gPnNjYW5saW5lID0gZGl2X3U2NChtdWxfdTMyX3UzMihjdXJyIC0gcHJldiwgY3J0Y19j bG9jayksCj4gPgkJICAgMTAwMCAqIGNydGNfaHRvdGFsKTsKPiA+Cj4gPj4gKwl1bFNjYW5saW5l Tm8yID0gKHVsU2NhbmxpbmVObzIgKyB2dG90YWwpICUgdnRvdGFsOwo+ID4KPiA+SSB0aGluayB0 aGF0IHdvdWxkIGhhdmUgdG8gYmUgc29tZXRoaW5nIGxpa2U6Cj4gPnJldHVybiAoc2NhbmxpbmUg KyB2Ymxhbmtfc3RhcnQpICUgdnRvdGFsOwo+ID4KPiAKPiBZZXMgeW91IGFyZSByaWdodC4gSXQg c2hvdWxkIGJlIHZibGFua19zdGFydC4gV2lsbCBmaXggdGhpcy4KPiAKPiA+QWxsIGluIGFsbCB0 aGlzIGxvb2tzIGxpa2UgYSBwcmV0dHkgZGVjZW50IGFwcHJvYWNoIHRvIHRoZSBEU0kgcHJvYmxl bS4KPiA+Cj4gPk9uZSBjb25jZXJuIGhlcmUgaXMgcm91bmRpbmcgaXNzdWVzIGFuZCBpbmFjY3Vy YWNpZXMgaW4gb3VyIGNydGNfY2xvY2suIEJ1dCBzaW5jZQo+ID50aGUgZnJhbWUgdGltZXN0YW1w IGlzIHNhbXBsZWQgYXQgdmJsYW5rIHN0YXJ0IEkgZ3Vlc3Mgd2UgY2FuJ3QgYWNjaWRlbnRhbGx5 IGdldAo+ID5hbiBhbnN3ZXIgdGhhdCdzIGVhcmxpZXIgdGhhbiB2Ymxhbmtfc3RhcnQgYXMgbG9u ZyBhcyB3ZSByZWFsbHkgcGFzc2VkIHZibGFuayBzdGFydAo+ID5hbHJlYWR5LiBUaGF0IHNob3Vs ZCBtYWtlIHRoaXMgYXQgbGVhc3Qgc3VpdGFibGUgZm9yIHZibGFuayB0aW1lc3RhbXBzLiAKPiAK PiBJIGFsc28gZmVlbCB0aGUgc2FtZSwgdGhpcyBzaXR1YXRpb24gc2hvdWxkIG5ldmVyIG9jY3Vy Lgo+IAo+ID5BbmQgZm9yCj4gPnRoZSBhdG9taWMgZXZhZGUsIEkgZ3Vlc3MgaWYgd2UgY2xhbXAg b3VyIHRoZSBzY2FubGluZSBiZWZvcmUgdGhlCj4gPit2Ymxhbmtfc3RhcnQgc3VjaCB0aGF0IGl0 IG5ldmVyIHJlYWNoZXMgdnRvdGFsLCB3ZSBjYW4ndCBiZSBzdXJlIHRoYXQKPiA+b3VyIHZibGFu ayBldmFkZSBuZXZlciBpbmRpY2F0ZXMgdGhhdCB3ZSBhbHJlYWR5IHJlYWNoZWQgdGhlIHN0YXJ0 IG9mIHZibGFuawo+ID5wcmVtYXR1cmVseS4KPiA+Cj4gPlNvIG1heWJlIHNvbWV0aGluZyBsaWtl Ogo+ID5zY2FsaW5lID0gZGl2X3U2NCguLi4pOwo+ID5zY2FubGluZSA9IG1pbihzY2FubGluZSwg dnRvdGFsIC0gMSk7Cj4gCj4gSSBhbSBub3Qgc3VyZSBpZiB0aGUgdmFsdWUgb2Ygc2NhbmxpbmUg cmV0dXJuZWQgY2FuIGV2ZXIgYmUgZ3JlYXRlciB0aGFuIHZ0b3RhbCAtMS4KPiBCdXQgd2UgY2Fu IGhhdmUgYSBjaGVjayBqdXN0IHRvIGJlIHNhZmUuIE5vdCBzdXJlIGlmIEkgZnVsbHkgZ290IHlv dXIgcG9pbnQgaGVyZS4KClRoZSBwb2ludCBpcyB0aGF0IHRoZSB0aW1lc3RhbXAgY291bnRlciBt aWdodCB0aWNrIGF0IGEgc2xpZ2h0bHkgZmFzdGVyCnJhdGUgdGhhbiB3ZSBtaWdodCB0aGluay4g VGh1cyB3ZSBtaWdodCBlbmQgdXAgd2l0aCBtb3JlIHRpY2tzIGluIG9uZQpmcmFtZSB0aGFuIHdo YXQgd2UgY2FsY3VsYXRlZCBhcyB0aGUgbWF4aW11bSBmb20gY3J0Y19jbG9jayBldGMuIEJ1dCBp Zgp3ZSBjbGFtcCB0aGUgdmFsdWUgbGlrZSBJIHN1Z2dlc3RlZCB0aGVuIGF0IGxlYXN0IHdlIHNo b3VsZCBuZXZlciBnZXQKYW4gYW5zd2VyIHRoYXQgdGVsbHMgdXMgd2UncmUgYWxyZWFkeSBwYXN0 IHRoZSBzdGFydCBvZiB2Ymxhbmsgd2hlbiBpbgpyZWFsaXR5IHdlJ3JlIG5vdC4KCk9mIGNvdXJz ZSBhcyBEYW5pZWwgcG9pbnRlZCBvdXQgd2UgbWlnaHQgYWxzbyBnZXQgaW50byB0cm91YmxlIGlm IHRoZQpjb3VudGVyIHRpY2tzIHNsb3dlciB0aGFuIGV4cGVjdGVkLiBUaGF0IGNvdWxkIGxlYWQg dXMgdG8gdGhpbmsgdGhhdAp3ZSBkb24ndCBuZWVkIHRvIGRvIHRoZSB2YmxhbmsgZXZhZGUgd2hl biBpbiBmYWN0IHdlIGRvLgoKT2ggYW5kIHRoZXJlJ3MgbWF5YmUgYW5vdGhlciByYWNlIGx1cmtp bmcgaGVyZS4gV2UgbWlnaHQgY3Jvc3MgaW50byB0aGUKbmV4dCB2YmxhbmsganVzdCBiZXR3ZWVu IHRoZSBQSVBFX0ZSTVRNU1RNUCBhbmQgVElNRVNUQU1QX0NUUiByZWFkcy4gSWYKdGhhdCBoYXBw ZW5zIHdlIGdldCBhbiBhbnN3ZXIgdGhhdCdzIGRlZmluaXRlbHkgdG9vIGJpZyBmb3Igb25lIGZy YW1lLgpJIGd1ZXNzIHdlIGNvdWxkIGF2b2lkIHRoYXQgcGFydGljdWxhciBwcm9ibGVtIGJ5IG1h a2luZyBzdXJlIHdlIHJlYWxseQpyZWFkIFBJUEVfRlJNVE1TVE1QIGFuZCBUSU1FU1RBTVBfQ1RS IGR1cmluZyB0aGUgc2FtZSBmcmFtZS4gRWcuCnNvbWV0aGluZyBsaWtlOgoKZG8gewoJcHJldiA9 IFBJUEVfRlJNVE1TVE1QOwoJY3VyciA9IFRJTUVTVEFNUF9DVFIKCXBvc3QgPSBQSVBFX0ZSTVRN U1RNUAp9IHdoaWxlIChwcmV2ICE9IHBvc3QpOwoKCj4gCj4gPnJldHVybiAoc2NhbmxpbmUgKyB2 Ymxhbmtfc3RhcnQpICUgdnRvdGFsOwo+ID4KPiA+QXQgbGVhc3QgdGhhdCdzIG15IHRoaW5raW5n IGF0bS4gRmVlbCBmcmVlIHRvIHJpcCBteSByZWFzb25pbmcgdG8gc2hyZWRzIGlmIHlvdSB0aGlu awo+ID5JJ20gdG90YWxseSB3cm9uZyBoZXJlLgo+ID4KPiAKPiBPbmUgbW9yZSB0aGluZyB3ZSBt aXNzZWQgaXMsIHRoYXQgdGhlIGN1cnJlbnQgdGltZXN0YW1wIGlzIGp1c3QgYSAzMiBiaXQgcmVn aXN0ZXIgdmFsdWUuCj4gSXQgY2FuIG92ZXJmbG93IGFuZCB3cmFwIGFyb3VuZC4gU28gYSBzaXR1 YXRpb24gY2FuIGNvbWUsIHdoZXJlIGN1cnJlbnQgdGltZXN0YW1wIHdpbGwKPiBiZSBsZXNzIHRo YW4gcHJldiB0aW1lc3RhbXAgKHJlYWQgZnJvbSBmcmFtZSB0aW1lIHN0YW1wIHJlZykuIFdlIG5l ZWQgdG8gaGFuZGxlIHRoYXQKPiBzaXR1YXRpb24gYXMgd2VsbC4gIFdpbGwgZml4IHRoYXQgaW4g dGhlIG5leHQgdmVyc2lvbiBhbmQgcmVzZW5kLgoKTW9kdWxvIDJeMzIgbWF0aCB3aWxsIGhhbmRs ZSB0aGF0IGp1c3QgZmluZS4KCj4gCj4gVGhhbmtzIFZpbGxlIGZvciB5b3VyIHZhbHVhYmxlIHJl dmlldyBjb21tZW50cy4KPiAKPiBSZWdhcmRzLAo+IFVtYSBTaGFua2FyCj4gCj4gPgo+ID4+ICsK PiA+PiArCXJldHVybiB1bFNjYW5saW5lTm8yOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICBzdGF0aWMg dm9pZCBpbnRlbF9kc2lfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IKPiA+ PiAqY29ubmVjdG9yKSAgewo+ID4+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yID0KPiA+PiB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+PiAtLQo+ID4+ IDEuOS4xCj4gPgo+ID4tLQo+ID5WaWxsZSBTeXJqw6Rsw6QKPiA+SW50ZWwgT1RDCgotLSAKVmls bGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK