From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: Re: [PATCH i-g-t v4 4/5] kms_vblank: Switch from using crtc0 statically to explicitly setting mode. Date: Mon, 9 May 2016 16:31:27 -0400 Message-ID: <5730F39F.4090703@collabora.com> References: <1461686062-24630-1-git-send-email-robert.foss@collabora.com> <1461686062-24630-5-git-send-email-robert.foss@collabora.com> <20160509153823.GA29124@mcvlad-wk.rb.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE3D189EBB for ; Mon, 9 May 2016 20:31:35 +0000 (UTC) In-Reply-To: <20160509153823.GA29124@mcvlad-wk.rb.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: daniel.vetter@ffwll.ch, tomeu.vizoso@collabora.com, daniel.stone@collabora.com, intel-gfx@lists.freedesktop.org, marius.vlad@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMDE2LTA1LTA5IDExOjM4IEFNLCBNYXJpdXMgVmxhZCB3cm90ZToKID4gT24gVHVlLCBB cHIgMjYsIDIwMTYgYXQgMTE6NTQ6MjFBTSAtMDQwMCwgcm9iZXJ0LmZvc3NAY29sbGFib3JhLmNv bSAKd3JvdGU6CiA+PiBGcm9tOiBSb2JlcnQgRm9zcyA8cm9iZXJ0LmZvc3NAY29sbGFib3JhLmNv bT4KID4+CiA+PiBQcmV2aW91c2x5IGNydGMwIHdhcyBzdGF0aWNhbGx5IHVzZWQgZm9yIFZCTEFO SyB0ZXN0cywgYnV0CiA+PiB0aGF0IGFzc3VtcHRpb24gaXMgbm90IHZhbGlkIGZvciB0aGUgVkM0 IHBsYXRmb3JtLgogPj4gSW5zdGVhZCB3ZSdyZSBub3cgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBt b2RlLgogPj4KID4+IEFsc28gYWRkIHN1cHBvcnQgZm9yIHRlc3RpbmcgYWxsIGNvbm5lY3RlZCBj b25uZWN0b3JzIGR1cmluZwogPj4gdGhlIHNhbWUgdGVzdC4KID4+CiA+PiBTaWduZWQtb2ZmLWJ5 OiBSb2JlcnQgRm9zcyA8cm9iZXJ0LmZvc3NAY29sbGFib3JhLmNvbT4KID4+IC0tLQogPj4gICB0 ZXN0cy9rbXNfdmJsYW5rLmMgfCAxNjIgCisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tCiA+PiAgIDEgZmlsZSBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9u cygrKSwgMjUgZGVsZXRpb25zKC0pCiA+PgogPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc192Ymxh bmsuYyBiL3Rlc3RzL2ttc192YmxhbmsuYwogPj4gaW5kZXggNDBhYjZmZC4uNmMzMmM1NyAxMDA2 NDQKID4+IC0tLSBhL3Rlc3RzL2ttc192YmxhbmsuYwogPj4gKysrIGIvdGVzdHMva21zX3ZibGFu ay5jCiA+PiBAQCAtNDQsNiArNDQsMTQgQEAKID4+CiA+PiAgIElHVF9URVNUX0RFU0NSSVBUSU9O KCJUZXN0IHNwZWVkIG9mIFdhaXRWYmxhbmsuIik7CiA+PgogPj4gK3R5cGVkZWYgc3RydWN0IHsK ID4+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5OwogPj4gKwlzdHJ1Y3QgaWd0X2ZiIHByaW1hcnlf ZmI7CiA+PiArCWlndF9vdXRwdXRfdCAqb3V0cHV0OwogPj4gKwllbnVtIHBpcGUgcGlwZTsKID4+ ICsJdWludDhfdCBtb2RlX2J1c3k6MTsKID4+ICt9IGRhdGFfdDsKID4+ICsKID4+ICAgc3RhdGlj IGRvdWJsZSBlbGFwc2VkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqc3RhcnQsCiA+PiAgIAkJICAg ICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICplbmQsCiA+PiAgIAkJICAgICAgaW50IGxvb3ApCiA+ PiBAQCAtNTEsMzggKzU5LDExOSBAQCBzdGF0aWMgZG91YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0 IHRpbWVzcGVjICpzdGFydCwKID4+ICAgCXJldHVybiAoMWU2KihlbmQtPnR2X3NlYyAtIHN0YXJ0 LT50dl9zZWMpICsgKGVuZC0+dHZfbnNlYyAtIApzdGFydC0+dHZfbnNlYykvMTAwMCkvbG9vcDsK ID4+ICAgfQogPj4KID4+IC1zdGF0aWMgYm9vbCBjcnRjMF9hY3RpdmUoaW50IGZkKQogPj4gK3N0 YXRpYyBib29sIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGludCBmZCwgaWd0X291dHB1dF90 ICpvdXRwdXQpCiA+PiAgIHsKID4+IC0JdW5pb24gZHJtX3dhaXRfdmJsYW5rIHZibDsKID4+ICsJ ZHJtTW9kZU1vZGVJbmZvICptb2RlOwogPj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRh dGEtPmRpc3BsYXk7CiA+PiArCWlndF9wbGFuZV90ICpwcmltYXJ5OwogPj4gKwogPj4gKwkvKiBz ZWxlY3QgdGhlIHBpcGUgd2Ugd2FudCB0byB1c2UgKi8KID4+ICsJaWd0X291dHB1dF9zZXRfcGlw ZShvdXRwdXQsIGRhdGEtPnBpcGUpOwogPj4gKwlpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7 CiA+PiArCiA+PiArCWlmICghb3V0cHV0LT52YWxpZCkgewogPj4gKwkJaWd0X291dHB1dF9zZXRf cGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKID4+ICsJCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5 KTsKID4+ICsJCXJldHVybiBmYWxzZTsKID4+ICsJfQogPj4KID4+IC0JbWVtc2V0KCZ2YmwsIDAs IHNpemVvZih2YmwpKTsKID4+IC0JdmJsLnJlcXVlc3QudHlwZSA9IERSTV9WQkxBTktfUkVMQVRJ VkU7CiA+PiAtCXJldHVybiBkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJs KSA9PSAwOwogPj4gKwkvKiBjcmVhdGUgYW5kIHNldCB0aGUgcHJpbWFyeSBwbGFuZSBmYiAqLwog Pj4gKwltb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwogPj4gKwlpZ3RfY3JlYXRl X2NvbG9yX2ZiKGZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCiA+PiArCQkJICAg IERSTV9GT1JNQVRfWFJHQjg4ODgsCiA+PiArCQkJICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkUsCiA+PiArCQkJICAgIDAuMCwgMC4wLCAwLjAsCiA+PiArCQkJICAgICZkYXRhLT5wcmltYXJ5 X2ZiKTsKID4+ICsKID4+ICsJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwg SUdUX1BMQU5FX1BSSU1BUlkpOwogPj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRh LT5wcmltYXJ5X2ZiKTsKID4+ICsKID4+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOwog Pj4gKwogPj4gKwlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGZkLCBkYXRhLT5waXBlKTsKID4+ICsKID4+ ICsJcmV0dXJuIHRydWU7CiA+PiAgIH0KID4+CiA+PiAtc3RhdGljIHZvaWQgYWNjdXJhY3koaW50 IGZkKQogPj4gK3N0YXRpYyB2b2lkIGNsZWFudXBfY3J0YyhkYXRhX3QgKmRhdGEsIGludCBmZCwg aWd0X291dHB1dF90ICpvdXRwdXQpCiA+PiArewogPj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5 ID0gJmRhdGEtPmRpc3BsYXk7CiA+PiArCWlndF9wbGFuZV90ICpwcmltYXJ5OwogPj4gKwogPj4g KwlpZ3RfcmVtb3ZlX2ZiKGZkLCAmZGF0YS0+cHJpbWFyeV9mYik7CiA+PiArCiA+PiArCXByaW1h cnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIElHVF9QTEFORV9QUklNQVJZKTsKID4+ ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKID4+ICsKID4+ICsJaWd0X291dHB1 dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKID4+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KGRp c3BsYXkpOwogPj4gK30KID4+ICsKID4+ICtzdGF0aWMgdm9pZCBydW5fdGVzdChkYXRhX3QgKmRh dGEsIGludCBmZCwgdm9pZCAoKnRlc3RmdW5jKShkYXRhX3QgCiosIGludCkpCiA+PiArewogPj4g KwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7CiA+PiArCWlndF9vdXRw dXRfdCAqb3V0cHV0OwogPj4gKwllbnVtIHBpcGUgcDsKID4+ICsJdW5zaWduZWQgaW50IHZhbGlk X3Rlc3RzID0gMDsKID4+ICsKID4+ICsJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkaXNwbGF5 LCBvdXRwdXQpIHsKID4+ICsJCWZvcl9lYWNoX3BpcGUoZGlzcGxheSwgcCkgewogPj4gKwkJCWRh dGEtPnBpcGUgPSBwOwogPj4gKwogPj4gKwkJCWlmICghcHJlcGFyZV9jcnRjKGRhdGEsIGZkLCBv dXRwdXQpKQogPj4gKwkJCQljb250aW51ZTsKID4+ICsKID4+ICsJCQl2YWxpZF90ZXN0cysrOwog Pj4gKwogPj4gKwkJCWlndF9pbmZvKCJCZWdpbm5pbmcgJXMgb24gcGlwZSAlcywgY29ubmVjdG9y ICVzXG4iLAogPj4gKwkJCQkgaWd0X3N1YnRlc3RfbmFtZSgpLAogPj4gKwkJCQkga21zdGVzdF9w aXBlX25hbWUoZGF0YS0+cGlwZSksCiA+PiArCQkJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7 CiA+PiArCiA+PiArCQkJdGVzdGZ1bmMoZGF0YSwgZmQpOwogPj4gKwogPj4gKwkJCWlndF9pbmZv KCJcbiVzIG9uIHBpcGUgJXMsIGNvbm5lY3RvciAlczogUEFTU0VEXG5cbiIsCiA+PiArCQkJCSBp Z3Rfc3VidGVzdF9uYW1lKCksCiA+PiArCQkJCSBrbXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5waXBl KSwKID4+ICsJCQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpKTsKID4+ICsKID4+ICsJCQkvKiBj bGVhbnVwIHdoYXQgcHJlcGFyZV9jcnRjKCkgaGFzIGRvbmUgKi8KID4+ICsJCQljbGVhbnVwX2Ny dGMoZGF0YSwgZmQsIG91dHB1dCk7CiA+PiArCQl9CiA+PiArCX0KID4+ICsKID4+ICsJaWd0X3Jl cXVpcmVfZih2YWxpZF90ZXN0cywgIm5vIHZhbGlkIGNydGMvY29ubmVjdG9yIGNvbWJpbmF0aW9u cyAKZm91bmRcbiIpOwogPj4gK30KID4+ICsKID4+ICtzdGF0aWMgdm9pZCBhY2N1cmFjeShkYXRh X3QgKmRhdGEsIGludCBmZCkKID4+ICAgewogPj4gICAJdW5pb24gZHJtX3dhaXRfdmJsYW5rIHZi bDsKID4+ICAgCXVuc2lnbmVkIGxvbmcgdGFyZ2V0OwogPj4gKwl1aW50MzJfdCBwaXBlX2lkX2Zs YWc7CiA+PiAgIAlpbnQgbjsKID4+CiA+PiAgIAltZW1zZXQoJnZibCwgMCwgc2l6ZW9mKHZibCkp OwogPj4gKwlwaXBlX2lkX2ZsYWcgPSBwaXBlX2lkX3RvX3ZibF9mbGFnKGRhdGEtPnBpcGUpOwog Pj4KID4+ICAgCXZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFOwogPj4gKwl2 YmwucmVxdWVzdC50eXBlIHw9IHBpcGVfaWRfZmxhZzsKID4+ICAgCXZibC5yZXF1ZXN0LnNlcXVl bmNlID0gMTsKID4+ICAgCWRvX2lvY3RsKGZkLCBEUk1fSU9DVExfV0FJVF9WQkxBTkssICZ2Ymwp OwogPj4KID4+ICAgCXRhcmdldCA9IHZibC5yZXBseS5zZXF1ZW5jZSArIDYwOwogPj4gICAJZm9y IChuID0gMDsgbiA8IDYwOyBuKyspIHsKID4+ICAgCQl2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZC TEFOS19SRUxBVElWRTsKID4+ICsJCXZibC5yZXF1ZXN0LnR5cGUgfD0gcGlwZV9pZF9mbGFnOwog Pj4gICAJCXZibC5yZXF1ZXN0LnNlcXVlbmNlID0gMTsKID4+ICAgCQlkb19pb2N0bChmZCwgRFJN X0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKID4+CiA+PiAgIAkJdmJsLnJlcXVlc3QudHlwZSA9 IERSTV9WQkxBTktfQUJTT0xVVEUgfCBEUk1fVkJMQU5LX0VWRU5UOwogPj4gKwkJdmJsLnJlcXVl c3QudHlwZSB8PSBwaXBlX2lkX2ZsYWc7CiA+PiAgIAkJdmJsLnJlcXVlc3Quc2VxdWVuY2UgPSB0 YXJnZXQ7CiA+PiAgIAkJZG9faW9jdGwoZmQsIERSTV9JT0NUTF9XQUlUX1ZCTEFOSywgJnZibCk7 CiA+PiAgIAl9CiA+PiAgIAl2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19SRUxBVElWRTsK ID4+ICsJdmJsLnJlcXVlc3QudHlwZSB8PSBwaXBlX2lkX2ZsYWc7CiA+PiAgIAl2YmwucmVxdWVz dC5zZXF1ZW5jZSA9IDA7CiA+PiAgIAlkb19pb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5L LCAmdmJsKTsKID4+ICAgCWlndF9hc3NlcnRfZXEodmJsLnJlcGx5LnNlcXVlbmNlLCB0YXJnZXQp OwogPj4gQEAgLTk0LDIyICsxODMsMjYgQEAgc3RhdGljIHZvaWQgYWNjdXJhY3koaW50IGZkKQog Pj4gICAJfQogPj4gICB9CiA+CiA+IFRoZSBhY2N1cmFjeSB0ZXN0IGZhaWxzIGFsd2F5cyBvbiBw aXBlIEIsIHdpdGggRmFpbGVkIGFzc2VydGlvbjoKID4gZXYuc2VxdWVuY2UgPT0gdGFyZ2V0LiBO b3Qgc3VyZSBpZiB0aGlzIGEgYnVnIGluIGtlcm5lbCBidXQgaXQgc2VlbXMgdG8KID4gaGFwcGVu IG9uIGEgY291cGxlIG9mIG1hY2hpbmVzIEkndmUgdGVzdGVkIHRoaXMgKGFuZCBwcmV2aW91c2x5 IHdlCiA+IHdlcmVuJ3QgZW5hYmxpbmcgYWxsIHBpcGVzKQoKVGhhbmtzIGZvciBwdXR0aW5nIHRo aXMgc2VyaWVzIHRocm91Z2ggc29tZSBtb3JlIHRlc3RpbmcuCkkndmUgb25seSBkb25lIHRlc3Rp bmcgYWdhaW5zdCBWQzQgb24gUlBpMiwgYW5kIGhhdmUgbm90IG9ic2VydmVkIHRoaXMgCmJlaGF2 aW9yLgoKSnVzdCBieSBsb29raW5nIGF0IHRoZSB0ZXN0LWNvZGUgSSBjYW4ndCBzZWUgYSByZWFz b24gZm9yIHRoYXQgYXNzZXJ0IApldmVyIHRvIGZhaWwgaW4gYSBsZWdpdGltYXRlIHdheS4KCkhv dyBkbyB5b3Ugd2FudCB0byBwcm9jZWVkPwogPgogPj4KID4+IC1zdGF0aWMgdm9pZCB2Ymxhbmtf cXVlcnkoaW50IGZkLCBib29sIGJ1c3kpCiA+PiArc3RhdGljIHZvaWQgdmJsYW5rX3F1ZXJ5KGRh dGFfdCAqZGF0YSwgaW50IGZkKQogPj4gICB7CiA+PiAgIAl1bmlvbiBkcm1fd2FpdF92Ymxhbmsg dmJsOwogPj4gICAJc3RydWN0IHRpbWVzcGVjIHN0YXJ0LCBlbmQ7CiA+PiAgIAl1bnNpZ25lZCBs b25nIHNxLCBjb3VudCA9IDA7CiA+PiAgIAlzdHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayBidWY7CiA+ PiArCXVpbnQzMl90IHBpcGVfaWRfZmxhZzsKID4+CiA+PiAgIAltZW1zZXQoJnZibCwgMCwgc2l6 ZW9mKHZibCkpOwogPj4gKwlwaXBlX2lkX2ZsYWcgPSBwaXBlX2lkX3RvX3ZibF9mbGFnKGRhdGEt PnBpcGUpOwogPj4KID4+IC0JaWYgKGJ1c3kpIHsKID4+ICsJaWYgKGRhdGEtPm1vZGVfYnVzeSkg ewogPj4gICAJCXZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgRFJNX1ZC TEFOS19FVkVOVDsKID4+ICsJCXZibC5yZXF1ZXN0LnR5cGUgfD0gcGlwZV9pZF9mbGFnOwogPj4g ICAJCXZibC5yZXF1ZXN0LnNlcXVlbmNlID0gNzI7CiA+PiAgIAkJZG9faW9jdGwoZmQsIERSTV9J T0NUTF9XQUlUX1ZCTEFOSywgJnZibCk7CiA+PiAgIAl9CiA+PgogPj4gICAJdmJsLnJlcXVlc3Qu dHlwZSA9IERSTV9WQkxBTktfUkVMQVRJVkU7CiA+PiArCXZibC5yZXF1ZXN0LnR5cGUgfD0gcGlw ZV9pZF9mbGFnOwogPj4gICAJdmJsLnJlcXVlc3Quc2VxdWVuY2UgPSAwOwogPj4gICAJZG9faW9j dGwoZmQsIERSTV9JT0NUTF9XQUlUX1ZCTEFOSywgJnZibCk7CiA+PgogPj4gQEAgLTExOCw2ICsy MTEsNyBAQCBzdGF0aWMgdm9pZCB2YmxhbmtfcXVlcnkoaW50IGZkLCBib29sIGJ1c3kpCiA+PiAg IAljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnN0YXJ0KTsKID4+ICAgCWRvIHsKID4+ ICAgCQl2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19SRUxBVElWRTsKID4+ICsJCXZibC5y ZXF1ZXN0LnR5cGUgfD0gcGlwZV9pZF9mbGFnOwogPj4gICAJCXZibC5yZXF1ZXN0LnNlcXVlbmNl ID0gMDsKID4+ICAgCQlkb19pb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsK ID4+ICAgCQljb3VudCsrOwogPj4gQEAgLTEyNSwyOCArMjE5LDMyIEBAIHN0YXRpYyB2b2lkIHZi bGFua19xdWVyeShpbnQgZmQsIGJvb2wgYnVzeSkKID4+ICAgCWNsb2NrX2dldHRpbWUoQ0xPQ0tf TU9OT1RPTklDLCAmZW5kKTsKID4+CiA+PiAgIAlpZ3RfaW5mbygiVGltZSB0byBxdWVyeSBjdXJy ZW50IGNvdW50ZXIgKCVzKToJCSU3LjNmwrVzXG4iLAogPj4gLQkJIGJ1c3kgPyAiYnVzeSIgOiAi aWRsZSIsIGVsYXBzZWQoJnN0YXJ0LCAmZW5kLCBjb3VudCkpOwogPj4gKwkJIGRhdGEtPm1vZGVf YnVzeSA/ICJidXN5IiA6ICJpZGxlIiwgZWxhcHNlZCgmc3RhcnQsICZlbmQsIGNvdW50KSk7CiA+ PgogPj4gLQlpZiAoYnVzeSkKID4+ICsJaWYgKGRhdGEtPm1vZGVfYnVzeSkKID4+ICAgCQlpZ3Rf YXNzZXJ0X2VxKHJlYWQoZmQsICZidWYsIHNpemVvZihidWYpKSwgc2l6ZW9mKGJ1ZikpOwogPj4g ICB9CiA+PgogPj4gLXN0YXRpYyB2b2lkIHZibGFua193YWl0KGludCBmZCwgYm9vbCBidXN5KQog Pj4gK3N0YXRpYyB2b2lkIHZibGFua193YWl0KGRhdGFfdCAqZGF0YSwgaW50IGZkKQogPj4gICB7 CiA+PiAgIAl1bmlvbiBkcm1fd2FpdF92YmxhbmsgdmJsOwogPj4gICAJc3RydWN0IHRpbWVzcGVj IHN0YXJ0LCBlbmQ7CiA+PiAgIAl1bnNpZ25lZCBsb25nIHNxLCBjb3VudCA9IDA7CiA+PiAgIAlz dHJ1Y3QgZHJtX2V2ZW50X3ZibGFuayBidWY7CiA+PiArCXVpbnQzMl90IHBpcGVfaWRfZmxhZzsK ID4+CiA+PiAgIAltZW1zZXQoJnZibCwgMCwgc2l6ZW9mKHZibCkpOwogPj4gKwlwaXBlX2lkX2Zs YWcgPSBwaXBlX2lkX3RvX3ZibF9mbGFnKGRhdGEtPnBpcGUpOwogPj4KID4+IC0JaWYgKGJ1c3kp IHsKID4+ICsJaWYgKGRhdGEtPm1vZGVfYnVzeSkgewogPj4gICAJCXZibC5yZXF1ZXN0LnR5cGUg PSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgRFJNX1ZCTEFOS19FVkVOVDsKID4+ICsJCXZibC5yZXF1 ZXN0LnR5cGUgfD0gcGlwZV9pZF9mbGFnOwogPj4gICAJCXZibC5yZXF1ZXN0LnNlcXVlbmNlID0g NzI7CiA+PiAgIAkJZG9faW9jdGwoZmQsIERSTV9JT0NUTF9XQUlUX1ZCTEFOSywgJnZibCk7CiA+ PiAgIAl9CiA+PgogPj4gICAJdmJsLnJlcXVlc3QudHlwZSA9IERSTV9WQkxBTktfUkVMQVRJVkU7 CiA+PiArCXZibC5yZXF1ZXN0LnR5cGUgfD0gcGlwZV9pZF9mbGFnOwogPj4gICAJdmJsLnJlcXVl c3Quc2VxdWVuY2UgPSAwOwogPj4gICAJZG9faW9jdGwoZmQsIERSTV9JT0NUTF9XQUlUX1ZCTEFO SywgJnZibCk7CiA+PgogPj4gQEAgLTE1NSw2ICsyNTMsNyBAQCBzdGF0aWMgdm9pZCB2Ymxhbmtf d2FpdChpbnQgZmQsIGJvb2wgYnVzeSkKID4+ICAgCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RP TklDLCAmc3RhcnQpOwogPj4gICAJZG8gewogPj4gICAJCXZibC5yZXF1ZXN0LnR5cGUgPSBEUk1f VkJMQU5LX1JFTEFUSVZFOwogPj4gKwkJdmJsLnJlcXVlc3QudHlwZSB8PSBwaXBlX2lkX2ZsYWc7 CiA+PiAgIAkJdmJsLnJlcXVlc3Quc2VxdWVuY2UgPSAxOwogPj4gICAJCWRvX2lvY3RsKGZkLCBE Uk1fSU9DVExfV0FJVF9WQkxBTkssICZ2YmwpOwogPj4gICAJCWNvdW50Kys7CiA+PiBAQCAtMTYz LDM2ICsyNjIsNDkgQEAgc3RhdGljIHZvaWQgdmJsYW5rX3dhaXQoaW50IGZkLCBib29sIGJ1c3kp CiA+PgogPj4gICAJaWd0X2luZm8oIlRpbWUgdG8gd2FpdCBmb3IgJWxkLyVkIHZibGFua3MgKCVz KToJCSU3LjNmwrVzXG4iLAogPj4gICAJCSBjb3VudCwgKGludCkodmJsLnJlcGx5LnNlcXVlbmNl IC0gc3EpLAogPj4gLQkJIGJ1c3kgPyAiYnVzeSIgOiAiaWRsZSIsCiA+PiArCQkgZGF0YS0+bW9k ZV9idXN5ID8gImJ1c3kiIDogImlkbGUiLAogPj4gICAJCSBlbGFwc2VkKCZzdGFydCwgJmVuZCwg Y291bnQpKTsKID4+CiA+PiAtCWlmIChidXN5KQogPj4gKwlpZiAoZGF0YS0+bW9kZV9idXN5KQog Pj4gICAJCWlndF9hc3NlcnRfZXEocmVhZChmZCwgJmJ1Ziwgc2l6ZW9mKGJ1ZikpLCBzaXplb2Yo YnVmKSk7CiA+PiAgIH0KID4+CiA+PiAgIGlndF9tYWluCiA+PiAgIHsKID4+ICAgCWludCBmZDsK ID4+ICsJZGF0YV90IGRhdGE7CiA+PgogPj4gICAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwog Pj4KID4+ICAgCWlndF9maXh0dXJlIHsKID4+ICAgCQlmZCA9IGRybV9vcGVuX2RyaXZlcihEUklW RVJfQU5ZKTsKID4+IC0JCWlndF9yZXF1aXJlKGNydGMwX2FjdGl2ZShmZCkpOwogPj4gKwkJa21z dGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwogPj4gKwkJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0 YS5kaXNwbGF5LCBmZCk7CiA+PiAgIAl9CiA+PgogPj4gLQlpZ3Rfc3VidGVzdCgiYWNjdXJhY3ki KQogPj4gLQkJYWNjdXJhY3koZmQpOwogPj4gKwlpZ3Rfc3VidGVzdCgiYWNjdXJhY3kiKSB7CiA+ PiArCQlkYXRhLm1vZGVfYnVzeSA9IDA7CiA+PiArCQlydW5fdGVzdCgmZGF0YSwgZmQsIGFjY3Vy YWN5KTsKID4+ICsJfQogPj4KID4+IC0JaWd0X3N1YnRlc3QoInF1ZXJ5LWlkbGUiKQogPj4gLQkJ dmJsYW5rX3F1ZXJ5KGZkLCBmYWxzZSk7CiA+PiArCWlndF9zdWJ0ZXN0KCJxdWVyeS1pZGxlIikg ewogPj4gKwkJZGF0YS5tb2RlX2J1c3kgPSAwOwogPj4gKwkJcnVuX3Rlc3QoJmRhdGEsIGZkLCB2 YmxhbmtfcXVlcnkpOwogPj4gKwl9CiA+PgogPj4gLQlpZ3Rfc3VidGVzdCgicXVlcnktYnVzeSIp CiA+PiAtCQl2YmxhbmtfcXVlcnkoZmQsIHRydWUpOwogPj4gKwlpZ3Rfc3VidGVzdCgicXVlcnkt YnVzeSIpIHsKID4+ICsJCWRhdGEubW9kZV9idXN5ID0gMTsKID4+ICsJCXJ1bl90ZXN0KCZkYXRh LCBmZCwgdmJsYW5rX3F1ZXJ5KTsKID4+ICsJfQogPj4KID4+IC0JaWd0X3N1YnRlc3QoIndhaXQt aWRsZSIpCiA+PiAtCQl2Ymxhbmtfd2FpdChmZCwgZmFsc2UpOwogPj4gKwlpZ3Rfc3VidGVzdCgi d2FpdC1pZGxlIikgewogPj4gKwkJZGF0YS5tb2RlX2J1c3kgPSAwOwogPj4gKwkJcnVuX3Rlc3Qo JmRhdGEsIGZkLCB2Ymxhbmtfd2FpdCk7CiA+PiArCX0KID4+CiA+PiAtCWlndF9zdWJ0ZXN0KCJ3 YWl0LWJ1c3kiKQogPj4gLQkJdmJsYW5rX3dhaXQoZmQsIHRydWUpOwogPj4gKwlpZ3Rfc3VidGVz dCgid2FpdC1idXN5IikgewogPj4gKwkJZGF0YS5tb2RlX2J1c3kgPSAxOwogPj4gKwkJcnVuX3Rl c3QoJmRhdGEsIGZkLCB2Ymxhbmtfd2FpdCk7CiA+PiArCX0KID4+ICAgfQogPj4gKwogPiB3aGl0 ZS1zcGFjZS4KID4+IC0tCiA+PiAyLjUuMAogPj4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==