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: Tue, 12 Sep 2017 16:33:32 +0300 Message-ID: <20170912133332.GP4914@intel.com> References: <1504878535-28667-1-git-send-email-vidya.srinivas@intel.com> <20170908144759.GH4914@intel.com> <20170911175019.GN4914@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 343A889D60 for ; Tue, 12 Sep 2017 13:33:36 +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 T24gVHVlLCBTZXAgMTIsIDIwMTcgYXQgMDE6MjM6MzlQTSArMDAwMCwgU2hhbmthciwgVW1hIHdy b3RlOgo+IAo+IAo+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBJbnRlbC1n ZnggW21haWx0bzppbnRlbC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmddIE9uIEJl aGFsZiBPZgo+ID5TaGFua2FyLCBVbWEKPiA+U2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDEyLCAy MDE3IDM6MjAgUE0KPiA+VG86IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+Cj4gPkNjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBTcmluaXZh cywgVmlkeWEgPHZpZHlhLnNyaW5pdmFzQGludGVsLmNvbT4KPiA+U3ViamVjdDogUmU6IFtJbnRl bC1nZnhdIFtQQVRDSF0gZHJtL2k5MTU6IEVuYWJsZSBzY2FubGluZSByZWFkIGZvciBnZW45IGRz aQo+ID4KPiA+Cj4gPgo+ID4+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+PkZyb206IFZp bGxlIFN5cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+ID4+ U2VudDogTW9uZGF5LCBTZXB0ZW1iZXIgMTEsIDIwMTcgMTE6MjAgUE0KPiA+PlRvOiBTaGFua2Fy LCBVbWEgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiA+PkNjOiBTcmluaXZhcywgVmlkeWEgPHZp ZHlhLnNyaW5pdmFzQGludGVsLmNvbT47Cj4gPj5pbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnOyBLYWhvbGEsIE1pa2EgPG1pa2Eua2Fob2xhQGludGVsLmNvbT47Cj4gPj5LYW1hdGgsIFN1 bmlsIDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPjsgS29uZHVydSwgQ2hhbmRyYQo+ID4+PGNoYW5k cmEua29uZHVydUBpbnRlbC5jb20+Cj4gPj5TdWJqZWN0OiBSZTogW1BBVENIXSBkcm0vaTkxNTog RW5hYmxlIHNjYW5saW5lIHJlYWQgZm9yIGdlbjkgZHNpCj4gPj4KPiA+Pk9uIE1vbiwgU2VwIDEx LCAyMDE3IGF0IDAxOjA0OjE4UE0gKzAwMDAsIFNoYW5rYXIsIFVtYSB3cm90ZToKPiA+Pj4KPiA+ Pj4KPiA+Pj4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPj4+ID5Gcm9tOiBWaWxsZSBT eXJqw6Rsw6QgW21haWx0bzp2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbV0KPiA+Pj4gPlNl bnQ6IEZyaWRheSwgU2VwdGVtYmVyIDgsIDIwMTcgODoxOCBQTQo+ID4+PiA+VG86IFNyaW5pdmFz LCBWaWR5YSA8dmlkeWEuc3Jpbml2YXNAaW50ZWwuY29tPgo+ID4+PiA+Q2M6IGludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmc7IEthaG9sYSwgTWlrYQo+ID4+PiA+PG1pa2Eua2Fob2xhQGlu dGVsLmNvbT47IEthbWF0aCwgU3VuaWwgPHN1bmlsLmthbWF0aEBpbnRlbC5jb20+Owo+ID4+PiA+ U2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+OyBLb25kdXJ1LCBDaGFuZHJhCj4g Pj4+ID48Y2hhbmRyYS5rb25kdXJ1QGludGVsLmNvbT4KPiA+Pj4gPlN1YmplY3Q6IFJlOiBbUEFU Q0hdIGRybS9pOTE1OiBFbmFibGUgc2NhbmxpbmUgcmVhZCBmb3IgZ2VuOSBkc2kKPiA+Pj4gPgo+ ID4+PiA+T24gRnJpLCBTZXAgMDgsIDIwMTcgYXQgMDc6MTg6NTVQTSArMDUzMCwgVmlkeWEgU3Jp bml2YXMgd3JvdGU6Cj4gPj4+ID4+IEZyb206IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRl bC5jb20+Cj4gPj4+ID4+Cj4gPj4+ID4+IEZvciBnZW45IHBsYXRmb3JtcywgZHNpIHRpbWluZ3Mg YXJlIGRyaXZlbiBmcm9tIHBvcnQgaW5zdGVhZCBvZgo+ID4+PiA+PiBwaXBlICh1bmxpa2UgZGRp KS4gVGh1cywgd2UgY2FuJ3QgcmVseSBvbiBwaXBlIHJlZ2lzdGVycyB0byBnZXQKPiA+Pj4gPj4g dGhlIHRpbWluZyBpbmZvcm1hdGlvbi4gRXZlbiBzY2FubGluZSByZWdpc3RlciByZWFkIHdpbGwg bm90IGJlIGZ1bmN0aW9uYWwuCj4gPj4+ID4+IFRoaXMgaXMgY2F1c2luZyB2YmxhbmsgZXZhc2lv biBsb2dpYyB0byBmYWlsIHNpbmNlIGl0IHJlbGllcyBvbgo+ID4+PiA+PiBzY2FubGluZSwgY2F1 c2luZyBhdG9taWMgdXBkYXRlIGZhaWx1cmUgd2FybmluZ3MuCj4gPj4+ID4+Cj4gPj4+ID4+IFRo aXMgcGF0Y2ggdXNlcyBwaXBlIGZyYW1lc3RhbXAgYW5kIGN1cnJlbnQgdGltZXN0YW1wIHJlZ2lz dGVycyB0bwo+ID4+PiA+PiBjYWxjdWxhdGUgc2NhbmxpbmUuIFRoaXMgaXMgYW4gaW5kaXJlY3Qg d2F5IHRvIGdldCB0aGUgc2NhbmxpbmUuCj4gPj4+ID4+IEl0IGhlbHBzIHJlc29sdmUgYXRvbWlj IHVwZGF0ZSBmYWlsdXJlIGZvciBnZW45IGRzaSBwbGF0Zm9ybXMuCj4gPj4+ID4+Cj4gPj4+ID4+ IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPj4+ ID4+IFNpZ25lZC1vZmYtYnk6IENoYW5kcmEgS29uZHVydSA8Y2hhbmRyYS5rb25kdXJ1QGludGVs LmNvbT4KPiA+Pj4gPj4gU2lnbmVkLW9mZi1ieTogVmlkeWEgU3Jpbml2YXMgPHZpZHlhLnNyaW5p dmFzQGludGVsLmNvbT4KPiA+Pj4gPj4gLS0tCj4gPj4+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICB8ICAyICsrCj4gPj4+ID4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMgIHwgIDUgKysrKysKPiA+Pj4gPj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgfCAgMyArKysKPiA+Pj4gPj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgfCA0 Ngo+ID4+PiA+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+ ID4+ICA0IGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKykKPiA+Pj4gPj4KPiA+Pj4gPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+Pj4gPj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IGQwN2QxMTAuLjQyMTNiNTQgMTAw NjQ0Cj4gPj4+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+Pj4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4+PiA+PiBAQCAtNDA3 Nyw2ICs0MDc3LDggQEAgdm9pZCBpbnRlbF9zYmlfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPiA+Pj4gPj4gKmRldl9wcml2LCB1MTYgcmVnLCB1MzIgdmFsdWUsCj4gPj4+ID4+ICB1MzIg dmx2X2ZsaXNkc2lfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBy ZWcpOwo+ID4+PiA+PiB2b2lkIHZsdl9mbGlzZHNpX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIHJlZywKPiA+Pj4gPj4gdTMyIHZhbCk7Cj4gPj4+ID4+Cj4gPj4+ ID4+ICt1MzIgYnh0X2RzaV9nZXRfc2NhbmxpbmUoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ ID4+PiA+PiArCj4gPj4+ID4+ICAvKiBpbnRlbF9kcGlvX3BoeS5jICovCj4gPj4+ID4+ICB2b2lk IGJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+Pj4gPj4gZW51bSBwb3J0Cj4gPj4+ID5wb3J0LAo+ID4+PiA+PiAgCQkJICAgICBlbnVt IGRwaW9fcGh5ICpwaHksIGVudW0gZHBpb19jaGFubmVsICpjaCk7IGRpZmYgLS0KPiA+Pj4gPmdp dAo+ID4+PiA+PiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+Pj4gPj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGluZGV4IDVkMzkxZTYuLjMxYWE3ZjAgMTAw NjQ0Cj4gPj4+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiA+Pj4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4+PiA+PiBAQCAtNzgx LDYgKzc4MSw3IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9nZXRfY3J0Y19zY2FubGluZShzdHJ1Y3QK PiA+Pj4gPj4gaW50ZWxfY3J0Ywo+ID4+PiA+KmNydGMpCj4gPj4+ID4+ICAJc3RydWN0IGRybV92 YmxhbmtfY3J0YyAqdmJsYW5rOwo+ID4+PiA+PiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiA+Pj4gPj4gIAlpbnQgcG9zaXRpb24sIHZ0b3RhbDsKPiA+Pj4gPj4gKwllbnVtIHRyYW5z Y29kZXIgY3B1X3RyYW5zY29kZXI7Cj4gPj4+ID4+Cj4gPj4+ID4+ICAJaWYgKCFjcnRjLT5hY3Rp dmUpCj4gPj4+ID4+ICAJCXJldHVybiAtMTsKPiA+Pj4gPj4gQEAgLTc5Miw2ICs3OTMsMTAgQEAg c3RhdGljIGludCBfX2ludGVsX2dldF9jcnRjX3NjYW5saW5lKHN0cnVjdAo+ID4+PiA+PiBpbnRl bF9jcnRjCj4gPj4+ID4qY3J0YykKPiA+Pj4gPj4gIAlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX0lOVEVSTEFDRSkKPiA+Pj4gPj4gIAkJdnRvdGFsIC89IDI7Cj4gPj4+ID4+Cj4gPj4+ ID4+ICsJY3B1X3RyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwo+ID4+ PiA+Cj4gPj4+ID5IdW1tLiBXb3VsZCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gZG8gdGhpcyB3aXRo b3V0IGFkZGluZyBtb3JlCj4gPj4+ID5jcnRjLT5jb25maWcgdXNlcy4gV2UncmUgcHJldHR5IG11 Y2ggdHJ5aW5nIHRvIGdldCByaWQgb2YgdGhhdCBndXkuCj4gPj4+ID4KPiA+Pj4KPiA+Pj4gV2ls bCB0cnkgdG8gZmluZCBhbiBhbHRlcm5hdGUgd2F5IHRvIGRvIHRoaXMuCj4gPj4+Cj4gPj4+ID4+ ICsJaWYgKElTX0JST1hUT04oZGV2X3ByaXYpICYmIHRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFu c2NvZGVyKSkKPiA+Pj4gPj4gKwkJcmV0dXJuIGJ4dF9kc2lfZ2V0X3NjYW5saW5lKGNydGMpOwo+ ID4+PiA+PiArCj4gPj4+ID4+ICAJaWYgKElTX0dFTjIoZGV2X3ByaXYpKQo+ID4+PiA+PiAgCQlw b3NpdGlvbiA9IEk5MTVfUkVBRF9GVyhQSVBFRFNMKHBpcGUpKSAmCj4gPj4+ID5EU0xfTElORU1B U0tfR0VOMjsKPiA+Pj4gPj4gIAllbHNlCj4gPj4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4+ID4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaCBpbmRleCA5YTczZWEwLi41NDU4MmRlIDEwMDY0NAo+ID4+PiA+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiA+Pj4gPj4gQEAgLTg4MDIsNiArODgwMiw5IEBAIGVudW0gc2ts X3Bvd2VyX2dhdGUgewo+ID4+PiA+PiAgI2RlZmluZSBNSVBJT19UWEVTQ19DTEtfRElWMgkJCV9N TUlPKDB4MTYwMDA4KQo+ID4+PiA+PiAgI2RlZmluZSAgR0xLX1RYX0VTQ19DTEtfRElWMl9NQVNL CQkJMHgzRkYKPiA+Pj4gPj4KPiA+Pj4gPj4gKyNkZWZpbmUgQlhUX1RJTUVTVEFNUF9DVFIJX01N SU8oMHg0NDA3MCkKPiA+Pj4gPj4gKyNkZWZpbmUgQlhUX1BJUEVfRlJNVE1TVE1QX0EJX01NSU8o MHg3MDA0OCkKPiA+Pj4gPgo+ID4+PiA+UGxlYXNlIGFkZCBwcm9wZXIgcGFyYW1ldHJpemVkIGRl ZmluZSB0aGF0IHdvcmtzIGZvciBhbGwgcGlwZXMuCj4gPj4+ID4KPiA+Pj4KPiA+Pj4gV2lsbCBh ZGQgdGhhdC4KPiA+Pj4KPiA+Pj4gPj4gKwo+ID4+PiA+PiAgLyogQlhUIE1JUEkgY2xvY2sgY29u dHJvbHMgKi8KPiA+Pj4gPj4gICNkZWZpbmUgQlhUX01BWF9WQVJfT1VUUFVUX0tIWgkJCTM5NTAw Cj4gPj4+ID4+Cj4gPj4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuYwo+ID4+PiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gPj4+ ID4+IGluZGV4IDJhMGY1ZDMuLmQxNDViYTQgMTAwNjQ0Cj4gPj4+ID4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gPj4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RzaS5jCj4gPj4+ID4+IEBAIC0xNjIxLDYgKzE2MjEsNTIgQEAgc3RhdGljIGlu dCBpbnRlbF9kc2lfZ2V0X21vZGVzKHN0cnVjdAo+ID4+PiA+ZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ID4+PiA+PiAgCXJldHVybiAxOwo+ID4+PiA+PiAgfQo+ID4+PiA+Pgo+ID4+PiA+PiAr LyoKPiA+Pj4gPj4gKyAqIEZvciBHZW45IERTSSwgcGlwZSBzY2FubGluZSByZWdpc3RlciB3aWxs IG5vdAo+ID4+PiA+PiArICogd29yayB0byBnZXQgdGhlIHNjYW5saW5lIHNpbmNlIHRoZSB0aW1p bmdzCj4gPj4+ID4+ICsgKiBhcmUgZHJpdmVuIGZyb20gdGhlIFBPUlQgKHVubGlrZSBEREkgZW5j b2RlcnMpLgo+ID4+PiA+PiArICogVGhpcyBmdW5jdGlvbiB3aWxsIHVzZSBGcmFtZXN0YW1wIGFu ZCBjdXJyZW50Cj4gPj4+ID4+ICsgKiB0aW1lc3RhbXAgcmVnaXN0ZXJzIHRvIGNhbGN1bGF0ZSB0 aGUgc2NhbmxpbmUuCj4gPj4+ID4+ICsgKi8KPiA+Pj4gPj4gK3UzMiBieHRfZHNpX2dldF9zY2Fu bGluZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yykgewo+ID4+PiA+PiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+Pj4gPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPj4+ID4+ICsJdTMyIHZyZWZyZXNoID0g Y3J0Yy0+YmFzZS5tb2RlLnZyZWZyZXNoOwo+ID4+PiA+PiArCXUzMiB1bFByZXZUaW1lLCB1bEN1 cnJUaW1lLCB2dG90YWwsIHVsU2NhbmxpbmVObzIgPSAwOwo+ID4+PiA+Cj4gPj4+ID5QbGVhc2Ug Z2V0IHJpZCBvZiB0aGUgaHVuZ2FyaWFuIG5vdGF0aW9uLgo+ID4+PiA+Cj4gPj4+Cj4gPj4+IFll cywgd2lsbCBmaXggdGhpcy4KPiA+Pj4KPiA+Pj4gPj4gKwl1aW50X2ZpeGVkXzE2XzE2X3QgdWxT Y2FubGluZVRpbWU7Cj4gPj4+ID4+ICsKPiA+Pj4gPj4gKwkvKgo+ID4+PiA+PiArCSAqIFRoaXMg ZmllbGQgcHJvdmlkZXMgcmVhZCBiYWNrIG9mIHRoZSBkaXNwbGF5Cj4gPj4+ID4+ICsJICogcGlw ZSBmcmFtZSB0aW1lIHN0YW1wLiBUaGUgdGltZSBzdGFtcCB2YWx1ZQo+ID4+PiA+PiArCSAqIGlz IHNhbXBsZWQgYXQgZXZlcnkgc3RhcnQgb2YgdmVydGljYWwgYmxhbmsuCj4gPj4+ID4+ICsJICov Cj4gPj4+ID4+ICsJdWxQcmV2VGltZSA9IEk5MTVfUkVBRF9GVyhCWFRfUElQRV9GUk1UTVNUTVBf QSk7Cj4gPj4+ID4+ICsKPiA+Pj4gPj4gKwkvKgo+ID4+PiA+PiArCSAqIFRoZSBUSU1FU1RBTVBf Q1RSIHJlZ2lzdGVyIGhhcyB0aGUgY3VycmVudAo+ID4+PiA+PiArCSAqIHRpbWUgc3RhbXAgdmFs dWUuCj4gPj4+ID4+ICsJICovCj4gPj4+ID4+ICsJdWxDdXJyVGltZSA9IEk5MTVfUkVBRF9GVyhC WFRfVElNRVNUQU1QX0NUUik7Cj4gPj4+ID4+ICsKPiA+Pj4gPj4gKwkvKiBUaGUgUE9SVCBmb3Ig RFNJIHdpbGwgYWx3YXlzIGJlIDAgc2luY2UKPiA+Pj4gPj4gKwkgKiBpc29sYXRlZCBQT1JUQyBj YW5ub3QgYmUgZW5hYmxlZCBmb3IgR2VuOQo+ID4+PiA+PiArCSAqIERTSS4gSGVuY2UgdXNpbmcg UE9SVF9BIGkuZSAwIHRvIGV4dHJhY3QKPiA+Pj4gPj4gKwkgKiB0aGUgVlRPVEFMIHZhbHVlLgo+ ID4+PiA+PiArCSAqLwo+ID4+PiA+PiArCXZ0b3RhbCA9IEk5MTVfUkVBRF9GVyhCWFRfTUlQSV9U UkFOU19WVE9UQUwoMCkpOwo+ID4+PiA+Cj4gPj4+ID5UaGlzIHZhbHVlIGNhbiBiZSBkdWcgb3V0 IGZyb20gdGhlIGh3bW9kZS4KPiA+Pj4gPgo+ID4+Pgo+ID4+PiBZZXMsIHdpbGwgZ2V0IGl0IGZy b20gaHdtb2RlIGFuZCBkcm9wIHRoaXMgY2hhbmdlLgo+ID4+Pgo+ID4+PiA+PiArCVdBUk5fT04o IXZ0b3RhbCk7Cj4gPj4+ID4+ICsJaWYgKCF2dG90YWwpCj4gPj4+ID4+ICsJCXJldHVybiB1bFNj YW5saW5lTm8yOwo+ID4+PiA+PiArCj4gPj4+ID4+ICsJdWxTY2FubGluZVRpbWUgPSBkaXZfZml4 ZWQxNigxMDAwMDAwLCB2dG90YWwgKiB2cmVmcmVzaCk7Cj4gPj4+ID4+ICsJdWxTY2FubGluZU5v MiA9IGRpdl9yb3VuZF91cF91MzJfZml4ZWQxNigodWxDdXJyVGltZSAtIHVsUHJldlRpbWUpLAo+ ID4+PiA+PiArCQkJCQkJdWxTY2FubGluZVRpbWUpOwo+ID4+PiA+Cj4gPj4+ID5Tb21ldGhpbmcg bGlrZToKPiA+Pj4gPnNjYW5saW5lID0gZGl2X3U2NChtdWxfdTMyX3UzMihjdXJyIC0gcHJldiwg Y3J0Y19jbG9jayksCj4gPj4+ID4JCSAgIDEwMDAgKiBjcnRjX2h0b3RhbCk7Cj4gPj4+ID4KPiA+ Pj4gPj4gKwl1bFNjYW5saW5lTm8yID0gKHVsU2NhbmxpbmVObzIgKyB2dG90YWwpICUgdnRvdGFs Owo+ID4+PiA+Cj4gPj4+ID5JIHRoaW5rIHRoYXQgd291bGQgaGF2ZSB0byBiZSBzb21ldGhpbmcg bGlrZToKPiA+Pj4gPnJldHVybiAoc2NhbmxpbmUgKyB2Ymxhbmtfc3RhcnQpICUgdnRvdGFsOwo+ ID4+PiA+Cj4gPj4+Cj4gPj4+IFllcyB5b3UgYXJlIHJpZ2h0LiBJdCBzaG91bGQgYmUgdmJsYW5r X3N0YXJ0LiBXaWxsIGZpeCB0aGlzLgo+ID4+Pgo+ID4+PiA+QWxsIGluIGFsbCB0aGlzIGxvb2tz IGxpa2UgYSBwcmV0dHkgZGVjZW50IGFwcHJvYWNoIHRvIHRoZSBEU0kgcHJvYmxlbS4KPiA+Pj4g Pgo+ID4+PiA+T25lIGNvbmNlcm4gaGVyZSBpcyByb3VuZGluZyBpc3N1ZXMgYW5kIGluYWNjdXJh Y2llcyBpbiBvdXIKPiA+Pj4gPmNydGNfY2xvY2suIEJ1dCBzaW5jZSB0aGUgZnJhbWUgdGltZXN0 YW1wIGlzIHNhbXBsZWQgYXQgdmJsYW5rIHN0YXJ0Cj4gPj4+ID5JIGd1ZXNzIHdlIGNhbid0IGFj Y2lkZW50YWxseSBnZXQgYW4gYW5zd2VyIHRoYXQncyBlYXJsaWVyIHRoYW4KPiA+Pj4gPnZibGFu a19zdGFydCBhcyBsb25nIGFzIHdlIHJlYWxseSBwYXNzZWQgdmJsYW5rIHN0YXJ0IGFscmVhZHku IFRoYXQKPiA+Pj4gPnNob3VsZAo+ID4+bWFrZSB0aGlzIGF0IGxlYXN0IHN1aXRhYmxlIGZvciB2 YmxhbmsgdGltZXN0YW1wcy4KPiA+Pj4KPiA+Pj4gSSBhbHNvIGZlZWwgdGhlIHNhbWUsIHRoaXMg c2l0dWF0aW9uIHNob3VsZCBuZXZlciBvY2N1ci4KPiA+Pj4KPiA+Pj4gPkFuZCBmb3IKPiA+Pj4g PnRoZSBhdG9taWMgZXZhZGUsIEkgZ3Vlc3MgaWYgd2UgY2xhbXAgb3VyIHRoZSBzY2FubGluZSBi ZWZvcmUgdGhlCj4gPj4+ID4rdmJsYW5rX3N0YXJ0IHN1Y2ggdGhhdCBpdCBuZXZlciByZWFjaGVz IHZ0b3RhbCwgd2UgY2FuJ3QgYmUgc3VyZQo+ID4+PiA+K3RoYXQKPiA+Pj4gPm91ciB2Ymxhbmsg ZXZhZGUgbmV2ZXIgaW5kaWNhdGVzIHRoYXQgd2UgYWxyZWFkeSByZWFjaGVkIHRoZSBzdGFydAo+ ID4+PiA+b2YgdmJsYW5rIHByZW1hdHVyZWx5Lgo+ID4+PiA+Cj4gPj4+ID5TbyBtYXliZSBzb21l dGhpbmcgbGlrZToKPiA+Pj4gPnNjYWxpbmUgPSBkaXZfdTY0KC4uLik7Cj4gPj4+ID5zY2FubGlu ZSA9IG1pbihzY2FubGluZSwgdnRvdGFsIC0gMSk7Cj4gPj4+Cj4gPj4+IEkgYW0gbm90IHN1cmUg aWYgdGhlIHZhbHVlIG9mIHNjYW5saW5lIHJldHVybmVkIGNhbiBldmVyIGJlIGdyZWF0ZXIKPiA+ Pj4gdGhhbiB2dG90YWwgLQo+ID4+MS4KPiA+Pj4gQnV0IHdlIGNhbiBoYXZlIGEgY2hlY2sganVz dCB0byBiZSBzYWZlLiBOb3Qgc3VyZSBpZiBJIGZ1bGx5IGdvdCB5b3VyIHBvaW50IGhlcmUuCj4g Pj4KPiA+PlRoZSBwb2ludCBpcyB0aGF0IHRoZSB0aW1lc3RhbXAgY291bnRlciBtaWdodCB0aWNr IGF0IGEgc2xpZ2h0bHkgZmFzdGVyCj4gPj5yYXRlIHRoYW4gd2UgbWlnaHQgdGhpbmsuIFRodXMg d2UgbWlnaHQgZW5kIHVwIHdpdGggbW9yZSB0aWNrcyBpbiBvbmUKPiA+PmZyYW1lIHRoYW4gd2hh dCB3ZSBjYWxjdWxhdGVkIGFzIHRoZSBtYXhpbXVtIGZvbSBjcnRjX2Nsb2NrIGV0Yy4gQnV0IGlm Cj4gPj53ZSBjbGFtcCB0aGUgdmFsdWUgbGlrZSBJIHN1Z2dlc3RlZCB0aGVuIGF0IGxlYXN0IHdl IHNob3VsZCBuZXZlciBnZXQKPiA+PmFuIGFuc3dlciB0aGF0IHRlbGxzIHVzIHdlJ3JlIGFscmVh ZHkgcGFzdCB0aGUgc3RhcnQgb2YgdmJsYW5rIHdoZW4gaW4gcmVhbGl0eQo+ID53ZSdyZSBub3Qu Cj4gPj4KPiA+Pk9mIGNvdXJzZSBhcyBEYW5pZWwgcG9pbnRlZCBvdXQgd2UgbWlnaHQgYWxzbyBn ZXQgaW50byB0cm91YmxlIGlmIHRoZQo+ID4+Y291bnRlciB0aWNrcyBzbG93ZXIgdGhhbiBleHBl Y3RlZC4gVGhhdCBjb3VsZCBsZWFkIHVzIHRvIHRoaW5rIHRoYXQgd2UKPiA+PmRvbid0IG5lZWQg dG8gZG8gdGhlIHZibGFuayBldmFkZSB3aGVuIGluIGZhY3Qgd2UgZG8uCj4gPj4KPiAKPiBIaSBW aWxsZSwKPiBXZSB0cmllZCB0byB0ZXN0IHdpdGggdGhpcyBjb25kaXRpb24gYW5kIGFyZSBjYWxj dWxhdGluZyB3cm9uZyBzY2FubGluZXMuCj4gRm9yIGV4Ogo+IFsgICA3OS40MTg5NDNdIFtkcm06 Ynh0X2RzaV9nZXRfc2NhbmxpbmVdICpFUlJPUiogc2NhbmxpbmUgPSAyMjUzNCwgY3J0Y192dG90 YWwtMSA9IDEyMTEsIG1pbiBvZiB0d28gPSAxMjExCgpXZWxsLCB0aGF0IHNjYW5saW5lIG51bWJl ciBsb29rcyB0b3RhbGx5IGJvZ3VzLiBIb3cgZGlkIHlvdSBjYWxjdWxhdGUgaXQgZXhhY3RseT8K Cj4gVGhpcyBjYXVzZXMgY2FsY3VsYXRlZCB2YWx1ZSB0byBiZSBkaWZmZXJlbnQgZnJvbSBQSVBF IFNDQU5MSU5FIHZhbHVlIHJlYWQgZnJvbSByZWdpc3Rlci4gCj4gCj4gQnV0IGlmIHdlICBrZWVw IHNjYW5saW5lIGFuZCB0YWtlIHRoZSBtb2R1bG8gd2l0aCB2dG90YWwgYWZ0ZXIgYWRkaW5nIHRo ZSB2Ymxhbmtfc3RhcnQgKG5vdCB0YWtpbmcgbWluIHdpdGggdnRvdGFsIC0xKSwKPiAgd2UgYXJl IGdldHRpbmcgc2NhbmxpbmUgZXF1YWwgdG8gKGRlbHRhIG9mIDEgYWxsIHRoZSB0aW1lICkgd2hh dCB0aGUgUElQRSBTQ0FOTElORSByZWdpc3RlciByZXR1cm5zIGZvciBIRE1JLiBXZSBjYW4KPiB1 c2UgSERNSSBhcyBhIHJlZmVyZW5jZSB0byB2YWxpZGF0ZSBpZiB0aW1lc3RhbXAgYmFzZWQgY2Fs Y3VsYXRpb24gYWxpZ25zIHRvIGgvdyB2YWx1ZXMgcmV0dXJuZWQgYnkKPiBQaXBlIHNjYW5saW5l IHJlZ2lzdGVyLiBTbyBpZiB3ZSBkbyBsaWtlIGJlbG93Ogo+IAo+IHNjYW5saW5lID0gZGl2X3U2 NCguLi4pOwo+IHJldHVybiAoc2NhbmxpbmUgKyB2Ymxhbmtfc3RhcnQpICUgdnRvdGFsOwo+IAo+ IEl0IHdvcmtzIHBlcmZlY3RseSBmaW5lLiBUZXN0ZWQgaXQgd2l0aCAia21zX3BsYW5lX211bHRp cGxlIiBhbmQgYWxtb3N0IGdldHRpbmcgdGhlIHNhbWUgcmVzdWx0IGFsbCB0aGUgdGltZSB3aXRo Cj4gbm8gYXRvbWljIHVwZGF0ZSBmYWlsdXJlcy4gSSBhbSBub3Qgc3VyZSBvbiBvdGhlciBwbGF0 Zm9ybXMsIGJ1dCBCWFQvQVBMIGl0cyB3b3JraW5nIGZpbmUuIFdpdGhvdXQgdGhlc2UgY2hhbmdl cywKPiBpc3N1ZSBjYW4gZWFzaWx5IGJlIHJlcHJvZHVjZWQgdXNpbmcgdGhpcyBJR1QgdGVzdC4K PiAKPiBXaWxsIHNlbmQgdGhlIHVwZGF0ZWQgcGF0Y2gsIHBsZWFzZSBoYXZlIGEgbG9vayBvbmNl Lgo+IAo+IFRoYW5rcyAmIFJlZ2FyZHMsCj4gVW1hIFNoYW5rYXIKPiAKPiA+Pk9oIGFuZCB0aGVy ZSdzIG1heWJlIGFub3RoZXIgcmFjZSBsdXJraW5nIGhlcmUuIFdlIG1pZ2h0IGNyb3NzIGludG8g dGhlCj4gPj5uZXh0IHZibGFuayBqdXN0IGJldHdlZW4gdGhlIFBJUEVfRlJNVE1TVE1QIGFuZCBU SU1FU1RBTVBfQ1RSIHJlYWRzLiBJZgo+ID4+dGhhdCBoYXBwZW5zIHdlIGdldCBhbiBhbnN3ZXIg dGhhdCdzIGRlZmluaXRlbHkgdG9vIGJpZyBmb3Igb25lIGZyYW1lLgo+ID4+SSBndWVzcyB3ZSBj b3VsZCBhdm9pZCB0aGF0IHBhcnRpY3VsYXIgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB3ZSByZWFs bHkKPiA+PnJlYWQgUElQRV9GUk1UTVNUTVAgYW5kIFRJTUVTVEFNUF9DVFIgZHVyaW5nIHRoZSBz YW1lIGZyYW1lLiBFZy4KPiA+PnNvbWV0aGluZyBsaWtlOgo+ID4+Cj4gPj5kbyB7Cj4gPj4JcHJl diA9IFBJUEVfRlJNVE1TVE1QOwo+ID4+CWN1cnIgPSBUSU1FU1RBTVBfQ1RSCj4gPj4JcG9zdCA9 IFBJUEVfRlJNVE1TVE1QCj4gPj59IHdoaWxlIChwcmV2ICE9IHBvc3QpOwo+ID4+Cj4gPgo+ID5H b3QgaXQuIFdpbGwgYWRkIHRoaXMgY29uZGl0aW9uIHRvIGhhbmRsZSB0aGUgcmFjZSBzaXR1YXRp b24uICBUaGFua3MgZm9yIHRoZQo+ID5leHBsYW5hdGlvbi4KPiA+Cj4gPlJlZ2FyZHMsCj4gPlVt YSBTaGFua2FyCj4gPgo+ID4+Cj4gPj4+Cj4gPj4+ID5yZXR1cm4gKHNjYW5saW5lICsgdmJsYW5r X3N0YXJ0KSAlIHZ0b3RhbDsKPiA+Pj4gPgo+ID4+PiA+QXQgbGVhc3QgdGhhdCdzIG15IHRoaW5r aW5nIGF0bS4gRmVlbCBmcmVlIHRvIHJpcCBteSByZWFzb25pbmcgdG8KPiA+Pj4gPnNocmVkcyBp ZiB5b3UgdGhpbmsgSSdtIHRvdGFsbHkgd3JvbmcgaGVyZS4KPiA+Pj4gPgo+ID4+Pgo+ID4+PiBP bmUgbW9yZSB0aGluZyB3ZSBtaXNzZWQgaXMsIHRoYXQgdGhlIGN1cnJlbnQgdGltZXN0YW1wIGlz IGp1c3QgYSAzMgo+ID4+PiBiaXQgcmVnaXN0ZXIKPiA+PnZhbHVlLgo+ID4+PiBJdCBjYW4gb3Zl cmZsb3cgYW5kIHdyYXAgYXJvdW5kLiBTbyBhIHNpdHVhdGlvbiBjYW4gY29tZSwgd2hlcmUKPiA+ Pj4gY3VycmVudCB0aW1lc3RhbXAgd2lsbCBiZSBsZXNzIHRoYW4gcHJldiB0aW1lc3RhbXAgKHJl YWQgZnJvbSBmcmFtZQo+ID4+PiB0aW1lIHN0YW1wIHJlZykuIFdlIG5lZWQgdG8gaGFuZGxlIHRo YXQgc2l0dWF0aW9uIGFzIHdlbGwuICBXaWxsIGZpeAo+ID4+PiB0aGF0IGluIHRoZQo+ID4+bmV4 dCB2ZXJzaW9uIGFuZCByZXNlbmQuCj4gPj4KPiA+Pk1vZHVsbyAyXjMyIG1hdGggd2lsbCBoYW5k bGUgdGhhdCBqdXN0IGZpbmUuCj4gPj4KPiA+Pj4KPiA+Pj4gVGhhbmtzIFZpbGxlIGZvciB5b3Vy IHZhbHVhYmxlIHJldmlldyBjb21tZW50cy4KPiA+Pj4KPiA+Pj4gUmVnYXJkcywKPiA+Pj4gVW1h IFNoYW5rYXIKPiA+Pj4KPiA+Pj4gPgo+ID4+PiA+PiArCj4gPj4+ID4+ICsJcmV0dXJuIHVsU2Nh bmxpbmVObzI7Cj4gPj4+ID4+ICt9Cj4gPj4+ID4+ICsKPiA+Pj4gPj4gIHN0YXRpYyB2b2lkIGlu dGVsX2RzaV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+ID4+PiA+PiAq Y29ubmVjdG9yKSAgewo+ID4+PiA+PiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nv bm5lY3RvciA9Cj4gPj4+ID4+IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4+PiA+ PiAtLQo+ID4+PiA+PiAxLjkuMQo+ID4+PiA+Cj4gPj4+ID4tLQo+ID4+PiA+VmlsbGUgU3lyasOk bMOkCj4gPj4+ID5JbnRlbCBPVEMKPiA+Pgo+ID4+LS0KPiA+PlZpbGxlIFN5cmrDpGzDpAo+ID4+ SW50ZWwgT1RDCj4gPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gPkludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+ID5odHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==