From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 1/2] drm/i915/glk: Apply cdclk workaround for DP audio Date: Fri, 03 Mar 2017 14:55:00 -0300 Message-ID: <1488563700.2469.14.camel@intel.com> References: <1488337038-2906-1-git-send-email-dhinakaran.pandiyan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8124C6EDB9 for ; Fri, 3 Mar 2017 17:55:05 +0000 (UTC) In-Reply-To: <1488337038-2906-1-git-send-email-dhinakaran.pandiyan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dhinakaran Pandiyan , intel-gfx@lists.freedesktop.org Cc: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org RW0gVGVyLCAyMDE3LTAyLTI4IMOgcyAxODo1NyAtMDgwMCwgRGhpbmFrYXJhbiBQYW5kaXlhbiBl c2NyZXZldToKPiBJbXBsZW1lbnQgR0xLIGNkY2xrIHJlc3RyaWN0aW9uIGZvciBEUCBhdWRpbywg c2ltaWxhciB0byB3aGF0J3MKPiBpbXBsZW1lbnRlZAo+IGZvciBCRFcgYW5kIG90aGVyIEdFTjkg cGxhdGZvcm1zLiBUaGUgY2RjbGsgcmVzdHJpY3Rpb24gaGFzIGJlZW4KPiByZWZhY3RvcmVkIG91 dCBvZiBtYXguIHBpeGVsIGNsb2NrIGNvbXB1dGF0aW9uIGFzIHRoZSAxOjEKPiByZWxhdGlvbnNo aXAKPiBiZXR3ZWVuIHBpeGVsIGNsb2NrIGFuZCBjZGNsayBmcmVxdWVuY3kgZG9lcyBub3QgaG9s ZCBmb3IgR0xLLgo+IAo+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5h a2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfY2RjbGsuYyB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gLS0tLS0tLS0t LS0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiBpbmRleCBkNjQzYzBjLi44ZmMw ZjcyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gQEAgLTEwNjksMTEgKzEw NjksMTEgQEAgc3RhdGljIGludCBieHRfY2FsY19jZGNsayhpbnQgbWF4X3BpeGNsaykKPiDCoAkJ cmV0dXJuIDE0NDAwMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGdsa19jYWxjX2NkY2xrKGlu dCBtYXhfcGl4Y2xrKQo+ICtzdGF0aWMgaW50IGdsa19jYWxjX2NkY2xrKGludCBtYXhfcGl4Y2xr LCBpbnQgbWluX2NkY2xrKQo+IMKgewo+IC0JaWYgKG1heF9waXhjbGsgPiAyICogMTU4NDAwKQo+ ICsJaWYgKG1heF9waXhjbGsgPiAyICogMTU4NDAwIHx8IG1pbl9jZGNsayA+IDE1ODQwMCkKPiDC oAkJcmV0dXJuIDMxNjgwMDsKPiAtCWVsc2UgaWYgKG1heF9waXhjbGsgPiAyICogNzkyMDApCj4g KwllbHNlIGlmIChtYXhfcGl4Y2xrID4gMiAqIDc5MjAwIHx8IG1pbl9jZGNsayA+IDc5MjAwKQo+ IMKgCQlyZXR1cm4gMTU4NDAwOwo+IMKgCWVsc2UKPiDCoAkJcmV0dXJuIDc5MjAwOwo+IEBAIC0x MzY3LDcgKzEzNjcsNyBAQCB2b2lkIGJ4dF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlCj4gKmRldl9wcml2KQo+IMKgCcKgKsKgwqDCoE5lZWQgdG8gbWFrZSB0aGlzIGNoYW5nZSBh ZnRlciBWQlQgaGFzIGNoYW5nZXMgZm9yIEJYVC4KPiDCoAnCoCovCj4gwqAJaWYgKElTX0dFTUlO SUxBS0UoZGV2X3ByaXYpKSB7Cj4gLQkJY2RjbGtfc3RhdGUuY2RjbGsgPSBnbGtfY2FsY19jZGNs aygwKTsKPiArCQljZGNsa19zdGF0ZS5jZGNsayA9IGdsa19jYWxjX2NkY2xrKDAsIDApOwo+IMKg CQljZGNsa19zdGF0ZS52Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwKPiBjZGNsa19zdGF0 ZS5jZGNsayk7Cj4gwqAJfSBlbHNlIHsKPiDCoAkJY2RjbGtfc3RhdGUuY2RjbGsgPSBieHRfY2Fs Y19jZGNsaygwKTsKPiBAQCAtMTQzMiwyOCArMTQzMiwzNyBAQCB2b2lkIGludGVsX3NldF9jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiDCoAlkZXZfcHJpdi0+ZGlz cGxheS5zZXRfY2RjbGsoZGV2X3ByaXYsIGNkY2xrX3N0YXRlKTsKPiDCoH0KPiDCoAo+IC1zdGF0 aWMgaW50IGJkd19hZGp1c3RfbWluX3BpcGVfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZQo+ICpjcnRjX3N0YXRlLAo+IC0JCQkJCcKgwqBpbnQgcGl4ZWxfcmF0ZSkKPiArc3RhdGlj IGludCBpbnRlbF9taW5fY2RjbGsoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+IMKg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19pOTE1KGNy dGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7 Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKPiArCWludCBpOwo+ICsJaW50IG1p bl9jZGNsayA9IDA7Cj4gwqAKPiAtCS8qIHBpeGVsIHJhdGUgbXVzdG4ndCBleGNlZWQgOTUlIG9m IGNkY2xrIHdpdGggSVBTIG9uIEJEVyAqLwo+IC0JaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikg JiYgY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4gLQkJcGl4ZWxfcmF0ZSA9IERJVl9ST1VORF9V UChwaXhlbF9yYXRlICogMTAwLCA5NSk7Cj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBjc3RhdGUsIGkpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZTsKCkhlcmUgd2UncmUganVzdCBsb29raW5nIGF0IHRoZSBDUlRDcyBpbiB0aGUgc3RhdGUu IE5vdGljZSB0aGF0Cm1heF9waXhlbF9yYXRlIGNhY2hlcyB0aGUgdmFsdWVzIGZvciBhbGwgdGhl IENSVENzIHNvIHdlIGNhbiBhY2NvdW50CmZvciBhbGwgb2YgdGhlbSBpbnN0ZWFkIG9mIGp1c3Qg dGhlIG9uZXMgdGhhdCBhcmUgaW4gdGhlIGN1cnJlbnQgYXRvbWljCmNvbW1pdC4KCldoYXQgaWYg c29tZSBvdGhlciBDUlRDIG5vdCBpbiB0aGUgY3VycmVudCBzdGF0ZSByYWlzZWQgdGhlIG1pbmlt dW0KY2xvY2sgdG8gNDMyLzMxNj8gRG9uJ3Qgd2UgZW5kIHVwIHJpc2tpbmcgbm90IG5vdGljaW5n IGl0IGFuZCBnb2luZwp3aXRoIGEgbG93ZXIgY2xvY2sgaGVyZT8gSW1hZ2luZSB0d28gdmVyeS1s b3ctcmVzIG1vbml0b3JzIHdpdGggYXVkaW8KZW5hYmxlZC4gRmlyc3Qgd2UgZG8gdGhlIG1vZGVz ZXQgb24gdGhlIGF1ZGlvIG1vbml0b3IsIHRoZW4gd2UgZW5hYmxlCnRoZSBvdGhlciBtb25pdG9y LiBXb24ndCB0aGUgc2Vjb25kIG1vZGVzZXQgZW5kIHVwIHdyb25nbHkgcmVkdWNpbmcgdGhlCmNs b2NrIGJlbG93IDQzMi8zMTY/CgpJbiBvdGhlciB3b3Jkczogd2h5IGRvZXNuJ3QgbWluX2NkY2xr IG5lZWQgdG8gZG8gdGhlIHNhbWUgY2FjaGluZwpzY2hlbWUgdGhhdCBtYXhfY2RjbGsgbmVlZHM/ Cgo+IMKgCj4gLQkvKiBCU3BlYyBzYXlzICJEbyBub3QgdXNlIERpc3BsYXlQb3J0IHdpdGggQ0RD TEsgbGVzcyB0aGFuCj4gLQnCoCogNDMyIE1IeiwgYXVkaW8gZW5hYmxlZCwgcG9ydCB3aWR0aCB4 NCwgYW5kIGxpbmsgcmF0ZQo+IC0JwqAqIEhCUjIgKDUuNCBHSHopLCBvciBlbHNlIHRoZXJlIG1h eSBiZSBhdWRpbyBjb3JydXB0aW9uIG9yCj4gLQnCoCogc2NyZWVuIGNvcnJ1cHRpb24uIgo+IC0J wqAqLwo+IC0JaWYgKGludGVsX2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkgJiYKPiAt CcKgwqDCoMKgY3J0Y19zdGF0ZS0+aGFzX2F1ZGlvICYmCj4gLQnCoMKgwqDCoGNydGNfc3RhdGUt PnBvcnRfY2xvY2sgPj0gNTQwMDAwICYmCj4gLQnCoMKgwqDCoGNydGNfc3RhdGUtPmxhbmVfY291 bnQgPT0gNCkKPiAtCQlwaXhlbF9yYXRlID0gbWF4KDQzMjAwMCwgcGl4ZWxfcmF0ZSk7Cj4gKwkJ Y3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKCkNhbiB5b3UgcGxlYXNl IGNsYXJpZnkgd2h5IGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNpbXBseSBhZGQgYSBuZXcgY2hlY2sK Zm9yIEdMSyBpbiB0aGUgb2xkIGZ1bmN0aW9uPyBUaGF0IHdvdWxkIGhhdmUgYmVlbiBzaW1wbGVy LgoKSWYgd2Ugc3RpbGwgd2FudCB0byBnbyB3aXRoIHRoaXMgYXBwcm9hY2gsIEknZCBzdWdnZXN0 IHNwbGl0dGluZyB5b3VyCmNvbW1pdCBpbiB0d28gc2VwYXJhdGUgY29tbWl0czogb25lIHJld29y a2luZyB0aGUgY3VycmVudCBjb2RlIChhbmQKYWRkcmVzc2luZyB0aGUgaXNzdWUgSSBwb2ludGVk IGFib3ZlKSwgYW5kIGFub3RoZXIgYWRkaW5nIHRoZSBHTEsKc3R1ZmYuCgoKPiArCj4gKwkJLyog QWNjb3JkaW5nIHRvIEJTcGVjLCAiRG8gbm90IHVzZSBEaXNwbGF5UG9ydCB3aXRoCj4gQ0RDTEsg bGVzcwo+ICsJCcKgKiB0aGFuIDQzMiBNSHosIGF1ZGlvIGVuYWJsZWQsIHBvcnQgd2lkdGggeDQs IGFuZAo+IGxpbmsgcmF0ZQo+ICsJCcKgKiBIQlIyICg1LjQgR0h6KSwgb3IgZWxzZSB0aGVyZSBt YXkgYmUgYXVkaW8KPiBjb3JydXB0aW9uIG9yCj4gKwkJwqAqIHNjcmVlbiBjb3JydXB0aW9uLiIg Zm9yIEJEVyBhbmQgR0VOOS4gVGhlIGNkY2xrCj4gcmVzdHJpY3Rpb24KPiArCQnCoCogZm9yIEdM SyBpcyBhdCAzMTYuOCBNSHoKPiArCQnCoCovCj4gKwkJaWYgKGludGVsX2NydGNfaGFzX2RwX2Vu Y29kZXIoY3J0Y19zdGF0ZSkgJiYKPiArCQnCoMKgwqDCoGNydGNfc3RhdGUtPmhhc19hdWRpbyAm Jgo+ICsJCcKgwqDCoMKgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+PSA1NDAwMDAgJiYKPiArCQnC oMKgwqDCoGNydGNfc3RhdGUtPmxhbmVfY291bnQgPT0gNCkgewo+ICsJCQlpZiAoSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpCj4gKwkJCQltaW5fY2RjbGsgPSAzMTY4MDA7Cj4gKwkJCWVsc2UgaWYg KElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwKPiBJU19HRU45KGRldl9wcml2KSkKPiArCQkJCW1p bl9jZGNsayA9IDQzMjAwMDsKPiArCQl9Cj4gKwl9Cj4gwqAKPiAtCXJldHVybiBwaXhlbF9yYXRl Owo+ICsJcmV0dXJuIG1pbl9jZGNsazsKPiDCoH0KPiDCoAo+IMKgLyogY29tcHV0ZSB0aGUgbWF4 IHJhdGUgZm9yIG5ldyBjb25maWd1cmF0aW9uICovCj4gQEAgLTE0ODEsMTAgKzE0OTAsOSBAQCBz dGF0aWMgaW50IGludGVsX21heF9waXhlbF9yYXRlKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+IMKgCj4gwqAJCXBpeGVsX3JhdGUgPSBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ IMKgCj4gLQkJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwgSVNfR0VOOShkZXZfcHJpdikp Cj4gLQkJCXBpeGVsX3JhdGUgPQo+IC0JCQkJYmR3X2FkanVzdF9taW5fcGlwZV9waXhlbF9yYXRl KGNydGNfCj4gc3RhdGUsCj4gLQkJCQkJCQnCoMKgwqDCoMKgwqDCoHBpeGVsCj4gX3JhdGUpOwo+ ICsJCS8qIHBpeGVsIHJhdGUgbXVzdG4ndCBleGNlZWQgOTUlIG9mIGNkY2xrIHdpdGggSVBTCj4g b24gQkRXICovCj4gKwkJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgJiYgY3J0Y19zdGF0ZS0K PiA+aXBzX2VuYWJsZWQpCj4gKwkJCXBpeGVsX3JhdGUgPSBESVZfUk9VTkRfVVAocGl4ZWxfcmF0 ZSAqIDEwMCwKPiA5NSk7Cj4gwqAKPiDCoAkJaW50ZWxfc3RhdGUtPm1pbl9waXhjbGtbaV0gPSBw aXhlbF9yYXRlOwo+IMKgCX0KPiBAQCAtMTUzMSwxMyArMTUzOSwxNyBAQCBzdGF0aWMgaW50IGJk d19tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0Cj4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4g wqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+ZGV2 KTsKPiDCoAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4gdG9faW50 ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiDCoAlpbnQgbWF4X3BpeGNsayA9IGludGVsX21heF9w aXhlbF9yYXRlKHN0YXRlKTsKPiArCWludCBtaW5fY2RjbGsgPSBpbnRlbF9taW5fY2RjbGsoc3Rh dGUpOwo+IMKgCWludCBjZGNsazsKPiDCoAo+IMKgCS8qCj4gwqAJwqAqIEZJWE1FIHNob3VsZCBh bHNvIGFjY291bnQgZm9yIHBsYW5lIHJhdGlvCj4gwqAJwqAqIG9uY2UgNjRicHAgcGl4ZWwgZm9y bWF0cyBhcmUgc3VwcG9ydGVkLgo+IMKgCcKgKi8KPiAtCWNkY2xrID0gYmR3X2NhbGNfY2RjbGso bWF4X3BpeGNsayk7Cj4gKwlpZiAobWluX2NkY2xrID4gbWF4X3BpeGNsaykKPiArCQljZGNsayA9 IGJkd19jYWxjX2NkY2xrKG1pbl9jZGNsayk7Cj4gKwllbHNlCj4gKwkJY2RjbGsgPSBiZHdfY2Fs Y19jZGNsayhtYXhfcGl4Y2xrKTsKPiDCoAo+IMKgCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhf Y2RjbGtfZnJlcSkgewo+IMKgCQlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgY2RjbGsgKCVkIGtI eikgZXhjZWVkcyBtYXgKPiAoJWQga0h6KVxuIiwKPiBAQCAtMTU2NCw2ICsxNTc2LDcgQEAgc3Rh dGljIGludCBza2xfbW9kZXNldF9jYWxjX2NkY2xrKHN0cnVjdAo+IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+IMKgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiB0 b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmRldik7Cj4gwqAJY29uc3QgaW50IG1heF9waXhj bGsgPSBpbnRlbF9tYXhfcGl4ZWxfcmF0ZShzdGF0ZSk7Cj4gKwlpbnQgbWluX2NkY2xrID0gaW50 ZWxfbWluX2NkY2xrKHN0YXRlKTsKPiDCoAlpbnQgY2RjbGssIHZjbzsKPiDCoAo+IMKgCXZjbyA9 IGludGVsX3N0YXRlLT5jZGNsay5sb2dpY2FsLnZjbzsKPiBAQCAtMTU3NCw3ICsxNTg3LDEwIEBA IHN0YXRpYyBpbnQgc2tsX21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiDCoAnCoCogRklYTUUgc2hvdWxkIGFsc28gYWNjb3VudCBmb3IgcGxhbmUg cmF0aW8KPiDCoAnCoCogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCj4g wqAJwqAqLwo+IC0JY2RjbGsgPSBza2xfY2FsY19jZGNsayhtYXhfcGl4Y2xrLCB2Y28pOwo+ICsJ aWYgKG1pbl9jZGNsayA+IG1heF9waXhjbGspCj4gKwkJY2RjbGsgPSBza2xfY2FsY19jZGNsayht aW5fY2RjbGssIHZjbyk7Cj4gKwllbHNlCj4gKwkJY2RjbGsgPSBza2xfY2FsY19jZGNsayhtYXhf cGl4Y2xrLCB2Y28pOwo+IMKgCj4gwqAJaWYgKGNkY2xrID4gZGV2X3ByaXYtPm1heF9jZGNsa19m cmVxKSB7Cj4gwqAJCURSTV9ERUJVR19LTVMoInJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNl ZWRzIG1heAo+ICglZCBrSHopXG4iLAo+IEBAIC0xNjA0LDEzICsxNjIwLDE4IEBAIHN0YXRpYyBp bnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiDCoAlpbnQgbWF4X3BpeGNsayA9IGludGVsX21heF9waXhlbF9yYXRlKHN0YXRlKTsKPiDC oAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4gwqAJCXRvX2ludGVs X2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4gKwlpbnQgbWluX2NkY2xrID0gaW50ZWxfbWluX2NkY2xr KHN0YXRlKTsKPiDCoAlpbnQgY2RjbGssIHZjbzsKPiDCoAo+IMKgCWlmIChJU19HRU1JTklMQUtF KGRldl9wcml2KSkgewo+IC0JCWNkY2xrID0gZ2xrX2NhbGNfY2RjbGsobWF4X3BpeGNsayk7Cj4g KwkJY2RjbGsgPSBnbGtfY2FsY19jZGNsayhtYXhfcGl4Y2xrLCBtaW5fY2RjbGspOwo+IMKgCQl2 Y28gPSBnbGtfZGVfcGxsX3ZjbyhkZXZfcHJpdiwgY2RjbGspOwo+IMKgCX0gZWxzZSB7Cj4gLQkJ Y2RjbGsgPSBieHRfY2FsY19jZGNsayhtYXhfcGl4Y2xrKTsKPiArCQlpZiAobWluX2NkY2xrID4g bWF4X3BpeGNsaykKPiArCQkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhtaW5fY2RjbGspOwo+ICsJ CWVsc2UKPiArCQkJY2RjbGsgPSBieHRfY2FsY19jZGNsayhtYXhfcGl4Y2xrKTsKPiArCj4gwqAJ CXZjbyA9IGJ4dF9kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4gwqAJfQo+IMKgCj4gQEAg LTE2MjUsNyArMTY0Niw3IEBAIHN0YXRpYyBpbnQgYnh0X21vZGVzZXRfY2FsY19jZGNsayhzdHJ1 Y3QKPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiDCoAo+IMKgCWlmICghaW50ZWxfc3RhdGUt PmFjdGl2ZV9jcnRjcykgewo+IMKgCQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAt CQkJY2RjbGsgPSBnbGtfY2FsY19jZGNsaygwKTsKPiArCQkJY2RjbGsgPSBnbGtfY2FsY19jZGNs aygwLCAwKTsKPiDCoAkJCXZjbyA9IGdsa19kZV9wbGxfdmNvKGRldl9wcml2LCBjZGNsayk7Cj4g wqAJCX0gZWxzZSB7Cj4gwqAJCQljZGNsayA9IGJ4dF9jYWxjX2NkY2xrKDApOwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK