From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v3] drm/i915: rewrite hsw/bdw audio codec enable/disable sequences Date: Fri, 31 Oct 2014 11:12:33 +0200 Message-ID: <87h9ykiovy.fsf@intel.com> References: <7441f15f037714b64fa4d0039e2d2332546ff541.1414419818.git.jani.nikula@intel.com> <1414497789-6224-1-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id BEBBD6E123 for ; Fri, 31 Oct 2014 02:12:43 -0700 (PDT) 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: Rodrigo Vivi Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAzMCBPY3QgMjAxNCwgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAZ21haWwuY29t PiB3cm90ZToKPiBPbiBUdWUsIE9jdCAyOCwgMjAxNCBhdCA1OjAzIEFNLCBKYW5pIE5pa3VsYSA8 amFuaS5uaWt1bGFAaW50ZWwuY29tPiB3cm90ZToKPj4gVGhlcmUncyBzb21lIHNlcmlvdXMgY29u ZnVzaW9uIHJlZ2FyZGluZyBFTEQgdmFsaWQgYml0IHRoYXQgZ2V0cyBzZXQgYW5kCj4+IGNsZWFy ZWQgYmFjayBhbmQgZm9ydGggZXRjLiBSZXdyaXRlIGl0IGFsbCBiYXNlZCBvbiB0aGUgZG9jdW1l bnRlZCBhdWRpbwo+PiBjb2RlYyBlbmFibGUvZGlzYWJsZSBzZXF1ZW5jZXMuCj4+Cj4+IHYzOiBy ZXBsYWNlIHZibGFuayB3YWl0IHdpdGggYSBjb21tZW50Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEph bmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyB8IDExMCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLS0tCj4+ICAxIGZpbGUgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRp b25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRp by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiBpbmRleCA4MjE1MTRj OTUyMjkuLjJlN2Q0Mjg3OGI5ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXVkaW8uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5j Cj4+IEBAIC0xMzIsMTQgKzEzMiwyNiBAQCBzdGF0aWMgdm9pZCBnNHhfYXVkaW9fY29kZWNfZW5h YmxlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+Cj4+ICBzdGF0aWMgdm9pZCBo c3dfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPj4g IHsKPj4gLSAgICAgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7 Cj4+IC0gICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPj4gLSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5iYXNl LmNydGM7Cj4+IC0gICAgICAgZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5w aXBlOwo+PiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29k ZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPj4gKyAgICAg ICBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4+ICAgICAgICAgdWludDMyX3Qg dG1wOwo+Pgo+PiArICAgICAgIERSTV9ERUJVR19LTVMoIkRpc2FibGUgYXVkaW8gY29kZWMgb24g cGlwZSAlY1xuIiwgcGlwZV9uYW1lKHBpcGUpKTsKPj4gKwo+PiArICAgICAgIC8qIERpc2FibGUg dGltZXN0YW1wcyAqLwo+PiArICAgICAgIHRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0NGRyhwaXBl KSk7Cj4+ICsgICAgICAgdG1wICY9IH5BVURfQ09ORklHX05fVkFMVUVfSU5ERVg7Cj4+ICsgICAg ICAgdG1wIHw9IEFVRF9DT05GSUdfTl9QUk9HX0VOQUJMRTsKPj4gKyAgICAgICB0bXAgJj0gfkFV RF9DT05GSUdfVVBQRVJfTl9NQVNLOwo+PiArICAgICAgIHRtcCAmPSB+QVVEX0NPTkZJR19MT1dF Ul9OX01BU0s7Cj4+ICsgICAgICAgaWYgKGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxfY3J0Yywg SU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUKSkKPj4gKyAgICAgICAgICAgICAgIHRtcCB8PSBBVURf Q09ORklHX05fVkFMVUVfSU5ERVg7Cj4+ICsgICAgICAgSTkxNV9XUklURShIU1dfQVVEX0NGRyhw aXBlKSwgdG1wKTsKPj4gKwo+PiArICAgICAgIC8qIEludmFsaWRhdGUgRUxEICovCj4+ICAgICAg ICAgdG1wID0gSTkxNV9SRUFEKEhTV19BVURfUElOX0VMRF9DUF9WTEQpOwo+PiAtICAgICAgIHRt cCAmPSB+KChBVURJT19PVVRQVVRfRU5BQkxFX0EgfCBBVURJT19FTERfVkFMSURfQSkgPDwgKHBp cGUgKiA0KSk7Cj4+ICsgICAgICAgdG1wICY9IH4oQVVESU9fRUxEX1ZBTElEX0EgPDwgKHBpcGUg KiA0KSk7Cj4+ICAgICAgICAgSTkxNV9XUklURShIU1dfQVVEX1BJTl9FTERfQ1BfVkxELCB0bXAp Owo+PiAgfQo+Pgo+PiBAQCAtMTQ5LDc3ICsxNjEsNDcgQEAgc3RhdGljIHZvaWQgaHN3X2F1ZGlv X2NvZGVjX2VuYWJsZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgewo+PiAg ICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+ZGV2 LT5kZXZfcHJpdmF0ZTsKPj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPj4gLSAgICAgICB1aW50OF90ICpl bGQgPSBjb25uZWN0b3ItPmVsZDsKPj4gLSAgICAgICB1aW50MzJfdCBlbGR2Owo+PiArICAgICAg IGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4gKyAgICAgICBjb25zdCB1aW50 OF90ICplbGQgPSBjb25uZWN0b3ItPmVsZDsKPj4gICAgICAgICB1aW50MzJfdCB0bXA7Cj4+ICAg ICAgICAgaW50IGxlbiwgaTsKPj4gLSAgICAgICBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMt PnBpcGU7Cj4+IC0gICAgICAgZW51bSBwb3J0IHBvcnQ7Cj4+IC0gICAgICAgaW50IGhkbWl3X2hk bWllZGlkID0gSFNXX0FVRF9FRElEX0RBVEEocGlwZSk7Cj4+IC0gICAgICAgaW50IGF1ZF9jbnRs X3N0ID0gSFNXX0FVRF9ESVBfRUxEX0NUUkwocGlwZSk7Cj4+IC0gICAgICAgaW50IGF1ZF9jb25m aWcgPSBIU1dfQVVEX0NGRyhwaXBlKTsKPj4gLSAgICAgICBpbnQgYXVkX2NudHJsX3N0MiA9IEhT V19BVURfUElOX0VMRF9DUF9WTEQ7Cj4+Cj4+IC0gICAgICAgLyogQXVkaW8gb3V0cHV0IGVuYWJs ZSAqLwo+PiAtICAgICAgIERSTV9ERUJVR19EUklWRVIoIkhETUkgYXVkaW86IGVuYWJsZSBjb2Rl Y1xuIik7Cj4+IC0gICAgICAgdG1wID0gSTkxNV9SRUFEKGF1ZF9jbnRybF9zdDIpOwo+PiAtICAg ICAgIHRtcCB8PSAoQVVESU9fT1VUUFVUX0VOQUJMRV9BIDw8IChwaXBlICogNCkpOwo+PiAtICAg ICAgIEk5MTVfV1JJVEUoYXVkX2NudHJsX3N0MiwgdG1wKTsKPj4gLSAgICAgICBQT1NUSU5HX1JF QUQoYXVkX2NudHJsX3N0Mik7Cj4+IC0KPj4gLSAgICAgICAvKiBTZXQgRUxEIHZhbGlkIHN0YXRl ICovCj4+IC0gICAgICAgdG1wID0gSTkxNV9SRUFEKGF1ZF9jbnRybF9zdDIpOwo+PiAtICAgICAg IERSTV9ERUJVR19EUklWRVIoIkhETUkgYXVkaW86IHBpbiBlbGQgdmxkIHN0YXR1cz0weCUwOHhc biIsIHRtcCk7Cj4+IC0gICAgICAgdG1wIHw9IChBVURJT19FTERfVkFMSURfQSA8PCAocGlwZSAq IDQpKTsKPj4gLSAgICAgICBJOTE1X1dSSVRFKGF1ZF9jbnRybF9zdDIsIHRtcCk7Cj4+IC0gICAg ICAgdG1wID0gSTkxNV9SRUFEKGF1ZF9jbnRybF9zdDIpOwo+PiAtICAgICAgIERSTV9ERUJVR19E UklWRVIoIkhETUkgYXVkaW86IGVsZCB2bGQgc3RhdHVzPTB4JTA4eFxuIiwgdG1wKTsKPj4gLQo+ PiAtICAgICAgIC8qIEVuYWJsZSBIRE1JIG1vZGUgKi8KPj4gLSAgICAgICB0bXAgPSBJOTE1X1JF QUQoYXVkX2NvbmZpZyk7Cj4+IC0gICAgICAgRFJNX0RFQlVHX0RSSVZFUigiSERNSSBhdWRpbzog YXVkaW8gY29uZjogMHglMDh4XG4iLCB0bXApOwo+PiAtICAgICAgIC8qIGNsZWFyIE5fcHJvZ3Jh bWluZ19lbmFibGUgYW5kIE5fdmFsdWVfaW5kZXggKi8KPj4gLSAgICAgICB0bXAgJj0gfihBVURf Q09ORklHX05fVkFMVUVfSU5ERVggfCBBVURfQ09ORklHX05fUFJPR19FTkFCTEUpOwo+PiAtICAg ICAgIEk5MTVfV1JJVEUoYXVkX2NvbmZpZywgdG1wKTsKPj4gKyAgICAgICBEUk1fREVCVUdfS01T KCJFbmFibGUgYXVkaW8gY29kZWMgb24gcGlwZSAlYywgJXUgYnl0ZXMgRUxEXG4iLAo+PiArICAg ICAgICAgICAgICAgICAgICAgcGlwZV9uYW1lKHBpcGUpLCBlbGRbMl0pOwo+Pgo+PiAtICAgICAg IERSTV9ERUJVR19EUklWRVIoIkVMRCBvbiBwaXBlICVjXG4iLCBwaXBlX25hbWUocGlwZSkpOwo+ PiAtCj4+IC0gICAgICAgZWxkdiA9IEFVRElPX0VMRF9WQUxJRF9BIDw8IChwaXBlICogNCk7Cj4+ IC0KPj4gLSAgICAgICBpZiAoaW50ZWxfcGlwZV9oYXNfdHlwZShpbnRlbF9jcnRjLCBJTlRFTF9P VVRQVVRfRElTUExBWVBPUlQpKQo+PiAtICAgICAgICAgICAgICAgSTkxNV9XUklURShhdWRfY29u ZmlnLCBBVURfQ09ORklHX05fVkFMVUVfSU5ERVgpOyAvKiAweDEgPSBEUCAqLwo+PiAtICAgICAg IGVsc2UKPj4gLSAgICAgICAgICAgICAgIEk5MTVfV1JJVEUoYXVkX2NvbmZpZywgYXVkaW9fY29u ZmlnX2hkbWlfcGl4ZWxfY2xvY2sobW9kZSkpOwo+PiAtCj4+IC0gICAgICAgaWYgKGludGVsX2Vs ZF91cHRvZGF0ZShjb25uZWN0b3IsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh dWRfY250cmxfc3QyLCBlbGR2LAo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVk X2NudGxfc3QsIElCWF9FTERfQUREUkVTU19NQVNLLAo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaGRtaXdfaGRtaWVkaWQpKQo+PiAtICAgICAgICAgICAgICAgcmV0dXJuOwo+PiAr ICAgICAgIC8qIEVuYWJsZSBhdWRpbyBwcmVzZW5jZSBkZXRlY3QsIGludmFsaWRhdGUgRUxEICov Cj4+ICsgICAgICAgdG1wID0gSTkxNV9SRUFEKEhTV19BVURfUElOX0VMRF9DUF9WTEQpOwo+PiAr ICAgICAgIHRtcCB8PSBBVURJT19PVVRQVVRfRU5BQkxFX0EgPDwgKHBpcGUgKiA0KTsKPj4gKyAg ICAgICB0bXAgJj0gfihBVURJT19FTERfVkFMSURfQSA8PCAocGlwZSAqIDQpKTsKPj4gKyAgICAg ICBJOTE1X1dSSVRFKEhTV19BVURfUElOX0VMRF9DUF9WTEQsIHRtcCk7Cj4+Cj4+IC0gICAgICAg dG1wID0gSTkxNV9SRUFEKGF1ZF9jbnRybF9zdDIpOwo+PiAtICAgICAgIHRtcCAmPSB+ZWxkdjsK Pj4gLSAgICAgICBJOTE1X1dSSVRFKGF1ZF9jbnRybF9zdDIsIHRtcCk7Cj4+ICsgICAgICAgLyog WFhYOiB2Ymxhbmsgd2FpdCBoZXJlICovCj4KPiB0aGUgd2FybnMgZG9lc24ndCB0ZWxsIHVzIHdl IGFyZSBzdGlsbCBkb2luZyB0aGlzIHRvbyBzb29uPwoKV2UgaGF2ZSBkcm1fY3J0Y192Ymxhbmtf b2ZmIHZlcnkgZWFybHkgaW4gdGhlIGRpc2FibGUgc2VxdWVuY2UsIGFuZApkcm1fY3J0Y192Ymxh bmtfb24gdmVyeSBsYXRlIGluIHRoZSBlbmFibGUgc2VxdWVuY2UuIEVzcGVjaWFsbHkKZWFybHkv bGF0ZSBzaW5jZQoKY29tbWl0IDRiM2E5NTI2ZmMzMjI4ZTc0MDExYjg4ZjU4MDg4MzM2YWNkMmM5 ZTIKQXV0aG9yOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PgpEYXRlOiAgIFRodSBBdWcgMTQgMjI6MDQ6MzcgMjAxNCArMDMwMAoKICAgIGRybS9pOTE1OiBN b3ZlIHZibGFuayBlbmFibGUgZWFybGllciBhbmQgZGlzYWJsZSBsYXRlcgoKQWxsIG9mIHRoZSBh dWRpbyBjb2RlYyBlbmFibGUvZGlzYWJsZSBzdHVmZiwgbGlrZSBtb3N0IG9mIG1vZGUgc2V0LCBp cwpkb25lIHdpdGggdmJsYW5rIGRpc2FibGVkLgoKU2luY2UKCmNvbW1pdCA0NGJkOTNhM2QzNjc5 MTNkODgzYmU2YWJiYTlhNmU1MWE1M2M0ZTkwCkF1dGhvcjogRGFuaWVsIFZldHRlciA8ZGFuaWVs LnZldHRlckBmZndsbC5jaD4KRGF0ZTogICBGcmkgSnVsIDI1IDIzOjM2OjQ0IDIwMTQgKzAyMDAK CiAgICBkcm0vaTkxNTogVXNlIGdlbmVyaWMgdmJsYW5rIHdhaXQKCndlIHN0YXJ0ZWQgdXNpbmcg ZHJtX3dhaXRfb25lX3ZibGFuayBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNoZWNraW5nIHRoZQpyZWdp c3RlcnMgaW4gaW50ZWxfd2FpdF9mb3JfdmJsYW5rLCBhbmQgdGhpcyBzcGVjaWZpY2FsbHkgZGlz YWxsb3dzIGl0cwp1c2UgZHVyaW5nIG1vZGUgc2V0IChhbmQgSUlSQyB3ZSd2ZSBzZWVuIGJ1ZyBy ZXBvcnRzIGFib3V0IHRoYXQgdG9vKS4KCkkgZG9uJ3Qga25vdyB3aGF0IHRoZSBjb3JyZWN0IGFu c3dlciBzaG91bGQgYmUgaGVyZS4gSSd2ZSBlbnN1cmVkIHRoZQphdWRpbyBjb2RlYyBlbmFibGUg ZG9lc24ndCBoYXBwZW4gdW50aWwgYWZ0ZXIgdGhlIHBvcnQvcGlwZSBhcmUgdXAgYW5kCnJ1bm5p bmcsIGJ1dCBJIHN0aWxsIGNhbid0IHZibGFuayB3YWl0LgoKPgo+Pgo+PiAtICAgICAgIHRtcCA9 IEk5MTVfUkVBRChhdWRfY250bF9zdCk7Cj4+ICsgICAgICAgLyogUmVzZXQgRUxEIHdyaXRlIGFk ZHJlc3MgKi8KPj4gKyAgICAgICB0bXAgPSBJOTE1X1JFQUQoSFNXX0FVRF9ESVBfRUxEX0NUUkwo cGlwZSkpOwo+PiAgICAgICAgIHRtcCAmPSB+SUJYX0VMRF9BRERSRVNTX01BU0s7Cj4+IC0gICAg ICAgSTkxNV9XUklURShhdWRfY250bF9zdCwgdG1wKTsKPj4gLSAgICAgICBwb3J0ID0gKHRtcCA+ PiAyOSkgJiBESVBfUE9SVF9TRUxfTUFTSzsgICAgICAgICAvKiBESVBfUG9ydF9TZWxlY3QsIDB4 MSA9IFBvcnRCICovCj4+IC0gICAgICAgRFJNX0RFQlVHX0RSSVZFUigicG9ydCBudW06JWRcbiIs IHBvcnQpOwo+PiArICAgICAgIEk5MTVfV1JJVEUoSFNXX0FVRF9ESVBfRUxEX0NUUkwocGlwZSks IHRtcCk7Cj4KPiBUaGlzICBzZXQgaXNuJ3QgcmVxdWlyZWQgYnkgc3BlYy4gQXQgbGVhc3Qgbm90 IG9uIGF1ZGlvIGVuYWJsZSBjb2RlYyBzdGVwLgo+IFdoZXJlIGRvZXMgaXQgY29tZSBmcm9tPwoK VGhlICJFTEQgYWNjZXNzIGFkZHJlc3MiIGlzIHRoZSB0aGUgZHdvcmQgb2Zmc2V0IGluIHRoZSBF TEQgYnVmZmVyIHRvIGJlCmFjY2Vzc2VkIHdoZW4gSFNXX0FVRF9FRElEX0RBVEEgaXMgcmVhZC93 cml0dGVuLiBJZiB5b3Ugd2FudCB0byB3cml0ZQp0aGUgd2hvbGUgRUxELCB5b3UgbmVlZCB0byBy ZXNldCB0aGUgc3RhcnQgYWRkcmVzcyB0byB6ZXJvIGZpcnN0Li4uCgo+Cj4+Cj4+IC0gICAgICAg bGVuID0gbWluX3QoaW50LCBlbGRbMl0sIDIxKTsgICAvKiA4NCBieXRlcyBvZiBodyBFTEQgYnVm ZmVyICovCj4+IC0gICAgICAgRFJNX0RFQlVHX0RSSVZFUigiRUxEIHNpemUgJWRcbiIsIGxlbik7 Cj4+ICsgICAgICAgLyogVXAgdG8gODQgYnl0ZXMgb2YgaHcgRUxEIGJ1ZmZlciAqLwo+PiArICAg ICAgIGxlbiA9IG1pbl90KGludCwgZWxkWzJdLCAyMSk7Cj4+ICAgICAgICAgZm9yIChpID0gMDsg aSA8IGxlbjsgaSsrKQo+PiAtICAgICAgICAgICAgICAgSTkxNV9XUklURShoZG1pd19oZG1pZWRp ZCwgKigodWludDMyX3QgKillbGQgKyBpKSk7Cj4+IC0KPj4gLSAgICAgICB0bXAgPSBJOTE1X1JF QUQoYXVkX2NudHJsX3N0Mik7Cj4+IC0gICAgICAgdG1wIHw9IGVsZHY7Cj4+IC0gICAgICAgSTkx NV9XUklURShhdWRfY250cmxfc3QyLCB0bXApOwo+PiArICAgICAgICAgICAgICAgSTkxNV9XUklU RShIU1dfQVVEX0VESURfREFUQShwaXBlKSwgKigodWludDMyX3QgKillbGQgKyBpKSk7Cj4KPiBU aGlzIGVkaWQgc2V0IGlzbid0IGF0IGF1ZGlvIGNvZGVjIGVuYWJsZSBzZXF1ZW5jZSBhcyB3ZWxs LgoKLi4uYW5kIHlvdSBoYXZlIHRvIHdyaXRlIHRoZSB3aG9sZSBFTEQgYmVjYXVzZSAiTG9hZCBF TEQgYnVmZmVyIGFuZApFbmFibGUgRUxEViIgaXMgdGhlcmUgaW4gdGhlIGNvZGVjIGVuYWJsZSBz ZXF1ZW5jZSEKCkJSLApKYW5pLgoKPgo+Pgo+PiAtICAgICAgIC8qIFhYWDogVHJhbnNpdGlvbmFs ICovCj4+ICsgICAgICAgLyogRUxEIHZhbGlkICovCj4+ICAgICAgICAgdG1wID0gSTkxNV9SRUFE KEhTV19BVURfUElOX0VMRF9DUF9WTEQpOwo+PiAtICAgICAgIHRtcCB8PSAoKEFVRElPX09VVFBV VF9FTkFCTEVfQSB8IEFVRElPX0VMRF9WQUxJRF9BKSA8PCAocGlwZSAqIDQpKTsKPj4gKyAgICAg ICB0bXAgfD0gQVVESU9fRUxEX1ZBTElEX0EgPDwgKHBpcGUgKiA0KTsKPj4gICAgICAgICBJOTE1 X1dSSVRFKEhTV19BVURfUElOX0VMRF9DUF9WTEQsIHRtcCk7Cj4+ICsKPj4gKyAgICAgICAvKiBF bmFibGUgdGltZXN0YW1wcyAqLwo+PiArICAgICAgIHRtcCA9IEk5MTVfUkVBRChIU1dfQVVEX0NG RyhwaXBlKSk7Cj4+ICsgICAgICAgdG1wICY9IH5BVURfQ09ORklHX05fVkFMVUVfSU5ERVg7Cj4+ ICsgICAgICAgdG1wICY9IH5BVURfQ09ORklHX05fUFJPR19FTkFCTEU7Cj4+ICsgICAgICAgdG1w ICY9IH5BVURfQ09ORklHX1BJWEVMX0NMT0NLX0hETUlfTUFTSzsKPj4gKyAgICAgICBpZiAoaW50 ZWxfcGlwZV9oYXNfdHlwZShpbnRlbF9jcnRjLCBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQpKQo+ PiArICAgICAgICAgICAgICAgdG1wIHw9IEFVRF9DT05GSUdfTl9WQUxVRV9JTkRFWDsKPj4gKyAg ICAgICBlbHNlCj4+ICsgICAgICAgICAgICAgICB0bXAgfD0gYXVkaW9fY29uZmlnX2hkbWlfcGl4 ZWxfY2xvY2sobW9kZSk7Cj4+ICsgICAgICAgSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwg dG1wKTsKPj4gIH0KPj4KPj4gIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19lbmFibGUoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gLS0KPj4gMi4xLjEKPj4KPgo+Cj4KPiAt LSAKPiBSb2RyaWdvIFZpdmkKPiBCbG9nOiBodHRwOi8vYmxvZy52aXZpLmVuZy5icgo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBO aWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==