From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: Re: [PATCH i-g-t v3 4/4] kms_vblank: Switch from using crtc0 statically to explicitly setting mode. Date: Tue, 26 Apr 2016 11:46:24 -0400 Message-ID: <571F8D50.4070602@collabora.com> References: <1461596713-20384-1-git-send-email-robert.foss@collabora.com> <1461596713-20384-5-git-send-email-robert.foss@collabora.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 E80E0898CE for ; Tue, 26 Apr 2016 15:46:29 +0000 (UTC) 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: Tomeu Vizoso Cc: Intel Graphics Development , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org Pj4gUHJldmlvdXNseSBjcnRjMCB3YXMgc3RhdGljYWxseSB1c2VkIGZvciBWQkxBTksgdGVzdHMs IGJ1dAo+PiB0aGF0IGFzc3VtcHRpb24gaXMgbm90IHZhbGlkIGZvciB0aGUgVkM0IHBsYXRmb3Jt Lgo+PiBJbnN0ZWFkIHdlJ3JlIG5vdyBleHBsaWNpdGx5IHNldHRpbmcgdGhlIG1vZGUuCj4+Cj4+ IEFsc28gYWRkIHN1cHBvcnQgZm9yIHRlc3RpbmcgYWxsIGNvbm5lY3RlZCBjb25uZWN0b3JzIGR1 cmluZwo+PiB0aGUgc2FtZSB0ZXN0Lgo+Cj4gSXMgdGhlcmUgYW55IHJlYXNvbiB3aHkgdGhpcyBj YW5ub3QgYmUgZG9uZSBpbiBhIHN1YnNlcXVlbnQgcGF0Y2g/Cj4KSXQgY291bGQgYmUgZG9uZSBp biBhIHNlcGFyYXRlIHBhdGNoLCBidXQgSSB0aGluayBpdCB3b3VsZCBiZQpqdW1waW5nIHRocm91 Z2ggaG9vcHMuCkZpbmRpbmcgdGhlIGZpcnN0IHZhbGlkIGNvbm5lY3RvciBpcyBwcmV0dHkgbXVj aCB0aGUgc2FtZSB3b3JrIGFzCml0ZXJhdGluZyB0aHJvdWdoIGFsbCBvZiB0aGUgY29ubmVjdGVk IGNvbm5lY3RvcnMuCgpJZiB0aGUgY29uc2Vuc3VzIGlzIHNlcGFyYXRpbmcgdGhlIHR3bywgSSds bCBoYXBwaWx5IGRvIHNvLApidXQgdGhlIGNvZGUgZm9yIHRoZSBpbnRlcm1lZGlhdGUgc3RlcCB3 b3VsZCBiZSBzb21ld2hhdCBjb252b2x1dGVkCkkgdGhpbmsuCgo+PiBTaWduZWQtb2ZmLWJ5OiBS b2JlcnQgRm9zcyA8cm9iZXJ0LmZvc3NAY29sbGFib3JhLmNvbT4KPj4gLS0tCj4+ICAgdGVzdHMv a21zX3ZibGFuay5jIHwgMTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCj4+ICAgMSBmaWxlIGNoYW5nZWQsIDE0MCBpbnNlcnRpb25zKCspLCAz OSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc192YmxhbmsuYyBiL3Rl c3RzL2ttc192YmxhbmsuYwo+PiBpbmRleCA0MGFiNmZkLi45NzBmZWZlIDEwMDY0NAo+PiAtLS0g YS90ZXN0cy9rbXNfdmJsYW5rLmMKPj4gKysrIGIvdGVzdHMva21zX3ZibGFuay5jCj4+IEBAIC00 NCw2ICs0NCwxNCBAQAo+Pgo+PiAgIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IHNwZWVkIG9m IFdhaXRWYmxhbmsuIik7Cj4+Cj4+ICt0eXBlZGVmIHN0cnVjdCB7Cj4+ICsgICAgICAgaW50IGRy bV9mZDsKPj4gKyAgICAgICBpZ3RfZGlzcGxheV90IGRpc3BsYXk7Cj4+ICsgICAgICAgc3RydWN0 IGlndF9mYiBwcmltYXJ5X2ZiOwo+PiArICAgICAgIGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+PiAr ICAgICAgIGVudW0gcGlwZSBwaXBlOwo+PiArfSBkYXRhX3Q7Cj4+ICsKPj4gICBzdGF0aWMgZG91 YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICpzdGFydCwKPj4gICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKmVuZCwKPj4gICAgICAgICAgICAgICAg ICAgICAgICBpbnQgbG9vcCkKPj4gQEAgLTUxLDc1ICs1OSwxNjQgQEAgc3RhdGljIGRvdWJsZSBl bGFwc2VkKGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqc3RhcnQsCj4+ICAgICAgICAgIHJldHVybiAo MWU2KihlbmQtPnR2X3NlYyAtIHN0YXJ0LT50dl9zZWMpICsgKGVuZC0+dHZfbnNlYyAtIHN0YXJ0 LT50dl9uc2VjKS8xMDAwKS9sb29wOwo+PiAgIH0KPj4KPj4gLXN0YXRpYyBib29sIGNydGMwX2Fj dGl2ZShpbnQgZmQpCj4+ICtzdGF0aWMgdWludDMyX3QgY3J0Y19pZF90b19mbGFnKHVpbnQzMl90 IGNydGNfaWQpCj4KPiBUaGlzIHNlZW1zIHRvIGJlIHBpcGUgaWQsIG5vdCB0aGUgY3J0YyBpZC4g TWF5YmUgdGhpcyBiZWxvbmdzIHRvIHRoZSBsaWJyYXJ5Lgo+CkFncmVlZCwgZml4aW5nIG5hbWUg YW5kIG1vdmluZyB0byBpZ3Rfa21zIGluIHY0LgoKPj4gICB7Cj4+IC0gICAgICAgdW5pb24gZHJt X3dhaXRfdmJsYW5rIHZibDsKPj4gKyAgICAgICBpZiAoY3J0Y19pZCA9PSAwKQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIDA7Cj4+ICsgICAgICAgZWxzZSBpZiAoY3J0Y19pZCA9PSAxKQo+PiAr ICAgICAgICAgICAgICAgcmV0dXJuIDEgfCBfRFJNX1ZCTEFOS19TRUNPTkRBUlk7Cj4+ICsgICAg ICAgZWxzZQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGNydGNfaWQgPDwgMTsKPj4gK30KPj4K Pj4gLSAgICAgICBtZW1zZXQoJnZibCwgMCwgc2l6ZW9mKHZibCkpOwo+PiAtICAgICAgIHZibC5y ZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFOwo+PiAtICAgICAgIHJldHVybiBkcm1J b2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKSA9PSAwOwo+PiArc3RhdGljIGJv b2wgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQpCj4+ICt7 Cj4+ICsgICAgICAgZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+PiArICAgICAgIGlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPj4gKyAgICAgICBpZ3RfcGxhbmVfdCAqcHJp bWFyeTsKPj4gKwo+PiArICAgICAgIC8qIHNlbGVjdCB0aGUgcGlwZSB3ZSB3YW50IHRvIHVzZSAq Lwo+PiArICAgICAgIGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBkYXRhLT5waXBlKTsKPj4g KyAgICAgICBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4+ICsKPj4gKyAgICAgICBpZiAo IW91dHB1dC0+dmFsaWQpIHsKPj4gKyAgICAgICAgICAgICAgIGlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBQSVBFX0FOWSk7Cj4+ICsgICAgICAgICAgICAgICBpZ3RfZGlzcGxheV9jb21taXQo ZGlzcGxheSk7Cj4+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+ICsgICAgICAgfQo+ PiArCj4+ICsgICAgICAgLyogY3JlYXRlIGFuZCBzZXQgdGhlIHByaW1hcnkgcGxhbmUgZmIgKi8K Pj4gKyAgICAgICBtb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+Cj4gSSB0aG91 Z2h0IHRoZSBwbGFuIHdhcyB0byBzZXQgYSBtb2RlLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gb25l IGJlaW5nCj4gYWxyZWFkeSBzZXQgKGVnLiBieSBmYmNvbik/IE90aGVyd2lzZSwgSSBkb24ndCBz ZWUgd2h5IHRoaXMgY2Fubm90IGJlCj4gaW4gdGhlIGxpYnJhcnk/Cj4KSSdtIG5vdCBzdXJlIEkg dW5kZXJzdGFuZCB0aGlzIGNvbW1lbnQgZW50aXJlbHkuIFRoZSBtb2RlIChhcyBmYXIgYXMgSSAK dW5kZXJzdGFuZCBpdCkgaXMgc2V0IGR1cmluZyB0aGUga21zdGVzdF9zZXRfdnRfZ3JhcGhpY3Nf bW9kZSgpIGNhbGwuCgo+PiArICAgICAgIGlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2Zk LCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIDAuMCwgMC4wLCAwLjAsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YS0+ cHJpbWFyeV9mYik7Cj4+ICsKPj4gKyAgICAgICBwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxh bmUob3V0cHV0LCBJR1RfUExBTkVfUFJJTUFSWSk7Cj4+ICsgICAgICAgaWd0X3BsYW5lX3NldF9m YihwcmltYXJ5LCAmZGF0YS0+cHJpbWFyeV9mYik7Cj4+ICsKPj4gKyAgICAgICBpZ3RfZGlzcGxh eV9jb21taXQoZGlzcGxheSk7Cj4+ICsKPj4gKyAgICAgICBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRh dGEtPmRybV9mZCwgZGF0YS0+cGlwZSk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gdHJ1ZTsKPj4g K30KPj4gKwo+PiArc3RhdGljIHZvaWQgY2xlYW51cF9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291 dHB1dF90ICpvdXRwdXQpCj4+ICt7Cj4+ICsgICAgICAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9 ICZkYXRhLT5kaXNwbGF5Owo+PiArICAgICAgIGlndF9wbGFuZV90ICpwcmltYXJ5Owo+PiArCj4+ ICsgICAgICAgaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5wcmltYXJ5X2ZiKTsK Pj4gKwo+PiArICAgICAgIHByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIElH VF9QTEFORV9QUklNQVJZKTsKPj4gKyAgICAgICBpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5V TEwpOwo+PiArCj4+ICsgICAgICAgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5Z KTsKPj4gKyAgICAgICBpZ3RfZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cj4+ICAgfQo+Pgo+PiAt c3RhdGljIHZvaWQgYWNjdXJhY3koaW50IGZkKQo+PiArc3RhdGljIHZvaWQgcnVuX3Rlc3QoZGF0 YV90ICpkYXRhLCB2b2lkICgqdGVzdGZ1bmMpKGRhdGFfdCAqLCBib29sKSwgYm9vbCBib29sZWFu KQo+Cj4gUHJvYmFibHkgbm90IGEgYmlnIGRlYWwsIGJ1dCBJIHRoaW5rIGl0J3MgbW9yZSBjdXN0 b21hcnkgdG8gaGF2ZSBhCj4gYml0ZmllbGQgaW4gZGF0YV90IHRoYXQgdGVsbHMgd2hhdCBiZWhh dmlvciB0aGUgdGVzdCBzaG91bGQgaGF2ZSwKPiByYXRoZXIgdGhhbiBwYXNzaW5nIGEgY2FsbGJh Y2suCj4KQWdyZWVkLCBtb3ZpbmcgdG8gYml0ZmllbGQgaW4gdjQuCgo+PiArewo+PiArICAgICAg IGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPj4gKyAgICAgICBpZ3Rf b3V0cHV0X3QgKm91dHB1dDsKPj4gKyAgICAgICBlbnVtIHBpcGUgcDsKPj4gKyAgICAgICBpbnQg dmFsaWRfdGVzdHMgPSAwOwo+Cj4gdW5zaWduZWQKPgpBZ3JlZWQsIGZpeGluZyBpbiB2NC4KCj4+ ICsKPj4gKyAgICAgICBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRpc3BsYXksIG91dHB1dCkg ewo+PiArICAgICAgICAgICAgICAgZm9yX2VhY2hfcGlwZShkaXNwbGF5LCBwKSB7Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRhdGEtPnBpcGUgPSBwOwo+PiArCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgIGlmICghcHJlcGFyZV9jcnRjKGRhdGEsIG91dHB1dCkpCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfdGVzdHMrKzsKPj4gKwo+PiArICAgICAgICAgICAgICAgICAgICAgICBpZ3Rf aW5mbygiQmVnaW5uaW5nICVzIG9uIHBpcGUgJXMsIGNvbm5lY3RvciAlc1xuIiwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X3N1YnRlc3RfbmFtZSgpLAo+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5waXBlKSwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X291dHB1dF9uYW1lKG91dHB1 dCkpOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHRlc3RmdW5jKGRhdGEsIGJvb2xl YW4pOwo+PiArCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlndF9pbmZvKCJcbiVzIG9uIHBp cGUgJXMsIGNvbm5lY3RvciAlczogUEFTU0VEXG5cbiIsCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlndF9zdWJ0ZXN0X25hbWUoKSwKPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga21zdGVzdF9waXBlX25hbWUoZGF0YS0+cGlwZSksCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpKTsKPj4gKwo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhbnVwIHdoYXQgcHJlcGFyZV9jcnRjKCkgaGFz IGRvbmUgKi8KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9jcnRjKGRhdGEsIG91 dHB1dCk7Cj4+ICsgICAgICAgICAgICAgICB9Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAg aWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywgIm5vIHZhbGlkIGNydGMvY29ubmVjdG9yIGNvbWJp bmF0aW9ucyBmb3VuZFxuIik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGFjY3VyYWN5KGRh dGFfdCAqZGF0YSwgYm9vbCBidXN5KQo+PiAgIHsKPj4gICAgICAgICAgdW5pb24gZHJtX3dhaXRf dmJsYW5rIHZibDsKPj4gICAgICAgICAgdW5zaWduZWQgbG9uZyB0YXJnZXQ7Cj4+ICsgICAgICAg dWludDMyX3QgY3J0Y19pZF9mbGFnOwo+PiAgICAgICAgICBpbnQgbjsKPj4KPj4gICAgICAgICAg bWVtc2V0KCZ2YmwsIDAsIHNpemVvZih2YmwpKTsKPj4gKyAgICAgICBjcnRjX2lkX2ZsYWcgPSBj cnRjX2lkX3RvX2ZsYWcoZGF0YS0+cGlwZSk7Cj4+Cj4+IC0gICAgICAgdmJsLnJlcXVlc3QudHlw ZSA9IERSTV9WQkxBTktfUkVMQVRJVkU7Cj4+ICsgICAgICAgdmJsLnJlcXVlc3QudHlwZSA9IERS TV9WQkxBTktfUkVMQVRJVkUgfCBjcnRjX2lkX2ZsYWc7Cj4+ICAgICAgICAgIHZibC5yZXF1ZXN0 LnNlcXVlbmNlID0gMTsKPj4gLSAgICAgICBkb19pb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJM QU5LLCAmdmJsKTsKPj4gKyAgICAgICBkb19pb2N0bChkYXRhLT5kcm1fZmQsIERSTV9JT0NUTF9X QUlUX1ZCTEFOSywgJnZibCk7Cj4KPiBEb24ndCBzZWUgbXVjaCBwb2ludCBpbiBtb3ZpbmcgdGhl IGRybV9mZCBpbnRvIHRoZSBkYXRhIHN0cnVjdCwgSQo+IHRoaW5rIEkgd291bGQganVzdCBtYWtl IGZkIGEgZ2xvYmFsIGFuZCBhdm9pZCB0aGVzZSBjaGFuZ2VzLgo+CkFncmVlZCwgbW92aW5nIGRy bV9mZCBvdXQgb2YgZGF0YSBzdHJ1Y3QgaW4gdjQuCgo+PiAgICAgICAgICB0YXJnZXQgPSB2Ymwu cmVwbHkuc2VxdWVuY2UgKyA2MDsKPj4gICAgICAgICAgZm9yIChuID0gMDsgbiA8IDYwOyBuKysp IHsKPj4gLSAgICAgICAgICAgICAgIHZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFU SVZFOwo+PiArICAgICAgICAgICAgICAgdmJsLnJlcXVlc3QudHlwZSA9IERSTV9WQkxBTktfUkVM QVRJVkUgfCBjcnRjX2lkX2ZsYWc7Cj4+ICAgICAgICAgICAgICAgICAgdmJsLnJlcXVlc3Quc2Vx dWVuY2UgPSAxOwo+PiAtICAgICAgICAgICAgICAgZG9faW9jdGwoZmQsIERSTV9JT0NUTF9XQUlU X1ZCTEFOSywgJnZibCk7Cj4+ICsgICAgICAgICAgICAgICBkb19pb2N0bChkYXRhLT5kcm1fZmQs IERSTV9JT0NUTF9XQUlUX1ZCTEFOSywgJnZibCk7Cj4+Cj4+IC0gICAgICAgICAgICAgICB2Ymwu cmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19BQlNPTFVURSB8IERSTV9WQkxBTktfRVZFTlQ7Cj4+ ICsgICAgICAgICAgICAgICB2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19BQlNPTFVURSB8 IERSTV9WQkxBTktfRVZFTlQgfCBjcnRjX2lkX2ZsYWc7Cj4+ICAgICAgICAgICAgICAgICAgdmJs LnJlcXVlc3Quc2VxdWVuY2UgPSB0YXJnZXQ7Cj4+IC0gICAgICAgICAgICAgICBkb19pb2N0bChm ZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4gKyAgICAgICAgICAgICAgIGRvX2lv Y3RsKGRhdGEtPmRybV9mZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4gICAgICAg ICAgfQo+PiAtICAgICAgIHZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFOwo+ PiArICAgICAgIHZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgY3J0Y19p ZF9mbGFnOwo+PiAgICAgICAgICB2YmwucmVxdWVzdC5zZXF1ZW5jZSA9IDA7Cj4+IC0gICAgICAg ZG9faW9jdGwoZmQsIERSTV9JT0NUTF9XQUlUX1ZCTEFOSywgJnZibCk7Cj4+ICsgICAgICAgZG9f aW9jdGwoZGF0YS0+ZHJtX2ZkLCBEUk1fSU9DVExfV0FJVF9WQkxBTkssICZ2YmwpOwo+PiAgICAg ICAgICBpZ3RfYXNzZXJ0X2VxKHZibC5yZXBseS5zZXF1ZW5jZSwgdGFyZ2V0KTsKPj4KPj4gICAg ICAgICAgZm9yIChuID0gMDsgbiA8IDYwOyBuKyspIHsKPj4gICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2V2ZW50X3ZibGFuayBldjsKPj4gLSAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEo cmVhZChmZCwgJmV2LCBzaXplb2YoZXYpKSwgc2l6ZW9mKGV2KSk7Cj4+ICsgICAgICAgICAgICAg ICBpZ3RfYXNzZXJ0X2VxKHJlYWQoZGF0YS0+ZHJtX2ZkLCAmZXYsIHNpemVvZihldikpLCBzaXpl b2YoZXYpKTsKPj4gICAgICAgICAgICAgICAgICBpZ3RfYXNzZXJ0X2VxKGV2LnNlcXVlbmNlLCB0 YXJnZXQpOwo+PiAgICAgICAgICB9Cj4+ICAgfQo+Pgo+PiAtc3RhdGljIHZvaWQgdmJsYW5rX3F1 ZXJ5KGludCBmZCwgYm9vbCBidXN5KQo+PiArc3RhdGljIHZvaWQgdmJsYW5rX3F1ZXJ5KGRhdGFf dCAqZGF0YSwgYm9vbCBidXN5KQo+PiAgIHsKPj4gICAgICAgICAgdW5pb24gZHJtX3dhaXRfdmJs YW5rIHZibDsKPj4gICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHN0YXJ0LCBlbmQ7Cj4+ICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgc3EsIGNvdW50ID0gMDsKPj4gICAgICAgICAgc3RydWN0IGRybV9l dmVudF92YmxhbmsgYnVmOwo+PiArICAgICAgIHVpbnQzMl90IGNydGNfaWRfZmxhZzsKPj4KPj4g ICAgICAgICAgbWVtc2V0KCZ2YmwsIDAsIHNpemVvZih2YmwpKTsKPj4gKyAgICAgICBjcnRjX2lk X2ZsYWcgPSBjcnRjX2lkX3RvX2ZsYWcoZGF0YS0+cGlwZSk7Cj4+Cj4+ICAgICAgICAgIGlmIChi dXN5KSB7Cj4+IC0gICAgICAgICAgICAgICB2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19S RUxBVElWRSB8IERSTV9WQkxBTktfRVZFTlQ7Cj4+ICsgICAgICAgICAgICAgICB2YmwucmVxdWVz dC50eXBlID0gRFJNX1ZCTEFOS19SRUxBVElWRSB8IERSTV9WQkxBTktfRVZFTlQgfCBjcnRjX2lk X2ZsYWc7Cj4+ICAgICAgICAgICAgICAgICAgdmJsLnJlcXVlc3Quc2VxdWVuY2UgPSA3MjsKPj4g LSAgICAgICAgICAgICAgIGRvX2lvY3RsKGZkLCBEUk1fSU9DVExfV0FJVF9WQkxBTkssICZ2Ymwp Owo+PiArICAgICAgICAgICAgICAgZG9faW9jdGwoZGF0YS0+ZHJtX2ZkLCBEUk1fSU9DVExfV0FJ VF9WQkxBTkssICZ2YmwpOwo+PiAgICAgICAgICB9Cj4+Cj4+IC0gICAgICAgdmJsLnJlcXVlc3Qu dHlwZSA9IERSTV9WQkxBTktfUkVMQVRJVkU7Cj4+ICsgICAgICAgdmJsLnJlcXVlc3QudHlwZSA9 IERSTV9WQkxBTktfUkVMQVRJVkUgfCBjcnRjX2lkX2ZsYWc7Cj4+ICAgICAgICAgIHZibC5yZXF1 ZXN0LnNlcXVlbmNlID0gMDsKPj4gLSAgICAgICBkb19pb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRf VkJMQU5LLCAmdmJsKTsKPj4gKyAgICAgICBkb19pb2N0bChkYXRhLT5kcm1fZmQsIERSTV9JT0NU TF9XQUlUX1ZCTEFOSywgJnZibCk7Cj4+Cj4+ICAgICAgICAgIHNxID0gdmJsLnJlcGx5LnNlcXVl bmNlOwo+Pgo+PiAgICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnN0YXJ0 KTsKPj4gICAgICAgICAgZG8gewo+PiAtICAgICAgICAgICAgICAgdmJsLnJlcXVlc3QudHlwZSA9 IERSTV9WQkxBTktfUkVMQVRJVkU7Cj4+ICsgICAgICAgICAgICAgICB2YmwucmVxdWVzdC50eXBl ID0gRFJNX1ZCTEFOS19SRUxBVElWRSB8IGNydGNfaWRfZmxhZzsKPj4gICAgICAgICAgICAgICAg ICB2YmwucmVxdWVzdC5zZXF1ZW5jZSA9IDA7Cj4+IC0gICAgICAgICAgICAgICBkb19pb2N0bChm ZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4gKyAgICAgICAgICAgICAgIGRvX2lv Y3RsKGRhdGEtPmRybV9mZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4gICAgICAg ICAgICAgICAgICBjb3VudCsrOwo+PiAgICAgICAgICB9IHdoaWxlICgodmJsLnJlcGx5LnNlcXVl bmNlIC0gc3EpIDw9IDYwKTsKPj4gICAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9O SUMsICZlbmQpOwo+PiBAQCAtMTI4LDM1ICsyMjUsMzcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX3F1 ZXJ5KGludCBmZCwgYm9vbCBidXN5KQo+PiAgICAgICAgICAgICAgICAgICBidXN5ID8gImJ1c3ki IDogImlkbGUiLCBlbGFwc2VkKCZzdGFydCwgJmVuZCwgY291bnQpKTsKPj4KPj4gICAgICAgICAg aWYgKGJ1c3kpCj4+IC0gICAgICAgICAgICAgICBpZ3RfYXNzZXJ0X2VxKHJlYWQoZmQsICZidWYs IHNpemVvZihidWYpKSwgc2l6ZW9mKGJ1ZikpOwo+PiArICAgICAgICAgICAgICAgaWd0X2Fzc2Vy dF9lcShyZWFkKGRhdGEtPmRybV9mZCwgJmJ1Ziwgc2l6ZW9mKGJ1ZikpLCBzaXplb2YoYnVmKSk7 Cj4+ICAgfQo+Pgo+PiAtc3RhdGljIHZvaWQgdmJsYW5rX3dhaXQoaW50IGZkLCBib29sIGJ1c3kp Cj4+ICtzdGF0aWMgdm9pZCB2Ymxhbmtfd2FpdChkYXRhX3QgKmRhdGEsIGJvb2wgYnVzeSkKPj4g ICB7Cj4+ICAgICAgICAgIHVuaW9uIGRybV93YWl0X3ZibGFuayB2Ymw7Cj4+ICAgICAgICAgIHN0 cnVjdCB0aW1lc3BlYyBzdGFydCwgZW5kOwo+PiAgICAgICAgICB1bnNpZ25lZCBsb25nIHNxLCBj b3VudCA9IDA7Cj4+ICAgICAgICAgIHN0cnVjdCBkcm1fZXZlbnRfdmJsYW5rIGJ1ZjsKPj4gKyAg ICAgICB1aW50MzJfdCBjcnRjX2lkX2ZsYWc7Cj4+Cj4+ICAgICAgICAgIG1lbXNldCgmdmJsLCAw LCBzaXplb2YodmJsKSk7Cj4+ICsgICAgICAgY3J0Y19pZF9mbGFnID0gY3J0Y19pZF90b19mbGFn KGRhdGEtPnBpcGUpOwo+Pgo+PiAgICAgICAgICBpZiAoYnVzeSkgewo+PiAtICAgICAgICAgICAg ICAgdmJsLnJlcXVlc3QudHlwZSA9IERSTV9WQkxBTktfUkVMQVRJVkUgfCBEUk1fVkJMQU5LX0VW RU5UOwo+PiArICAgICAgICAgICAgICAgdmJsLnJlcXVlc3QudHlwZSB8PSBEUk1fVkJMQU5LX1JF TEFUSVZFIHwgRFJNX1ZCTEFOS19FVkVOVCB8IGNydGNfaWRfZmxhZzsKPgo+IEkgd291bGQgcGVy c29uYWxseSBqdXN0IGFkZCBzdWNoIGEgbGluZSBhZnRlcndhcmRzLCBmaW5kIGl0IG1vcmUKPiBy ZWFkYWJsZSAoaGVyZSBhbmQgZWxzZXdoZXJlKToKPgo+IHZibC5yZXF1ZXN0LnR5cGUgfD0gY3J0 Y19pZF9mbGFnOwo+CkFncmVlZCwgY2hhbmdpbmcgaW4gdjQuCgo+PiAgICAgICAgICAgICAgICAg IHZibC5yZXF1ZXN0LnNlcXVlbmNlID0gNzI7Cj4+IC0gICAgICAgICAgICAgICBkb19pb2N0bChm ZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4gKyAgICAgICAgICAgICAgIGRvX2lv Y3RsKGRhdGEtPmRybV9mZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4gICAgICAg ICAgfQo+Pgo+PiAtICAgICAgIHZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZF Owo+PiArICAgICAgIHZibC5yZXF1ZXN0LnR5cGUgfD0gRFJNX1ZCTEFOS19SRUxBVElWRSB8IGNy dGNfaWRfZmxhZzsKPj4gICAgICAgICAgdmJsLnJlcXVlc3Quc2VxdWVuY2UgPSAwOwo+PiAtICAg ICAgIGRvX2lvY3RsKGZkLCBEUk1fSU9DVExfV0FJVF9WQkxBTkssICZ2YmwpOwo+PiArICAgICAg IGRvX2lvY3RsKGRhdGEtPmRybV9mZCwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LLCAmdmJsKTsKPj4K Pj4gICAgICAgICAgc3EgPSB2YmwucmVwbHkuc2VxdWVuY2U7Cj4+Cj4+ICAgICAgICAgIGNsb2Nr X2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmc3RhcnQpOwo+PiAgICAgICAgICBkbyB7Cj4+IC0g ICAgICAgICAgICAgICB2YmwucmVxdWVzdC50eXBlID0gRFJNX1ZCTEFOS19SRUxBVElWRTsKPj4g KyAgICAgICAgICAgICAgIHZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwg Y3J0Y19pZF9mbGFnOwo+PiAgICAgICAgICAgICAgICAgIHZibC5yZXF1ZXN0LnNlcXVlbmNlID0g MTsKPj4gLSAgICAgICAgICAgICAgIGRvX2lvY3RsKGZkLCBEUk1fSU9DVExfV0FJVF9WQkxBTkss ICZ2YmwpOwo+PiArICAgICAgICAgICAgICAgZG9faW9jdGwoZGF0YS0+ZHJtX2ZkLCBEUk1fSU9D VExfV0FJVF9WQkxBTkssICZ2YmwpOwo+PiAgICAgICAgICAgICAgICAgIGNvdW50Kys7Cj4+ICAg ICAgICAgIH0gd2hpbGUgKCh2YmwucmVwbHkuc2VxdWVuY2UgLSBzcSkgPD0gNjApOwo+PiAgICAg ICAgICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJmVuZCk7Cj4+IEBAIC0xNjcsMzIg KzI2NiwzNCBAQCBzdGF0aWMgdm9pZCB2Ymxhbmtfd2FpdChpbnQgZmQsIGJvb2wgYnVzeSkKPj4g ICAgICAgICAgICAgICAgICAgZWxhcHNlZCgmc3RhcnQsICZlbmQsIGNvdW50KSk7Cj4+Cj4+ICAg ICAgICAgIGlmIChidXN5KQo+PiAtICAgICAgICAgICAgICAgaWd0X2Fzc2VydF9lcShyZWFkKGZk LCAmYnVmLCBzaXplb2YoYnVmKSksIHNpemVvZihidWYpKTsKPj4gKyAgICAgICAgICAgICAgIGln dF9hc3NlcnRfZXEocmVhZChkYXRhLT5kcm1fZmQsICZidWYsIHNpemVvZihidWYpKSwgc2l6ZW9m KGJ1ZikpOwo+PiAgIH0KPj4KPj4gICBpZ3RfbWFpbgo+PiAgIHsKPj4gLSAgICAgICBpbnQgZmQ7 Cj4+ICsgICAgICAgZGF0YV90IGRhdGE7Cj4+Cj4+ICAgICAgICAgIGlndF9za2lwX29uX3NpbXVs YXRpb24oKTsKPj4KPj4gICAgICAgICAgaWd0X2ZpeHR1cmUgewo+PiAtICAgICAgICAgICAgICAg ZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0FOWSk7Cj4+IC0gICAgICAgICAgICAgICBpZ3Rf cmVxdWlyZShjcnRjMF9hY3RpdmUoZmQpKTsKPj4gKyAgICAgICAgICAgICAgIGRhdGEuZHJtX2Zk ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9BTlkpOwo+PiArICAgICAgICAgICAgICAga21zdGVz dF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+PiArICAgICAgICAgICAgICAgaWd0X2Rpc3BsYXlf aW5pdCgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7Cj4+ICAgICAgICAgIH0KPj4KPj4gICAg ICAgICAgaWd0X3N1YnRlc3QoImFjY3VyYWN5IikKPj4gLSAgICAgICAgICAgICAgIGFjY3VyYWN5 KGZkKTsKPj4gKyAgICAgICAgICAgICAgIHJ1bl90ZXN0KCZkYXRhLCBhY2N1cmFjeSwgZmFsc2Up Owo+Pgo+PiAgICAgICAgICBpZ3Rfc3VidGVzdCgicXVlcnktaWRsZSIpCj4+IC0gICAgICAgICAg ICAgICB2YmxhbmtfcXVlcnkoZmQsIGZhbHNlKTsKPj4gKyAgICAgICAgICAgICAgIHJ1bl90ZXN0 KCZkYXRhLCB2YmxhbmtfcXVlcnksIGZhbHNlKTsKPj4KPj4gICAgICAgICAgaWd0X3N1YnRlc3Qo InF1ZXJ5LWJ1c3kiKQo+PiAtICAgICAgICAgICAgICAgdmJsYW5rX3F1ZXJ5KGZkLCB0cnVlKTsK Pj4gKyAgICAgICAgICAgICAgIHJ1bl90ZXN0KCZkYXRhLCB2YmxhbmtfcXVlcnksIHRydWUpOwo+ Pgo+PiAgICAgICAgICBpZ3Rfc3VidGVzdCgid2FpdC1pZGxlIikKPj4gLSAgICAgICAgICAgICAg IHZibGFua193YWl0KGZkLCBmYWxzZSk7Cj4+ICsgICAgICAgICAgICAgICBydW5fdGVzdCgmZGF0 YSwgdmJsYW5rX3dhaXQsIGZhbHNlKTsKPj4KPj4gICAgICAgICAgaWd0X3N1YnRlc3QoIndhaXQt YnVzeSIpCj4+IC0gICAgICAgICAgICAgICB2Ymxhbmtfd2FpdChmZCwgdHJ1ZSk7Cj4+ICsgICAg ICAgICAgICAgICBydW5fdGVzdCgmZGF0YSwgdmJsYW5rX3dhaXQsIHRydWUpOwo+PiAgIH0KPj4g Kwo+Cj4gVGhhbmtzIQo+Cj4gVG9tZXUKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK