From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 4/6] drm/i915/bxt: Set DDI PHY lane latency optimization during modeset Date: Wed, 08 Jun 2016 11:54:53 +0300 Message-ID: <1465376093.12702.7.camel@intel.com> References: <1465323873-9786-1-git-send-email-imre.deak@intel.com> <1465323873-9786-5-git-send-email-imre.deak@intel.com> <1465368115.2909.16.camel@gmail.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 410326E931 for ; Wed, 8 Jun 2016 08:54:56 +0000 (UTC) In-Reply-To: <1465368115.2909.16.camel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan De Oliveira , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24ga2UsIDIwMTYtMDYtMDggYXQgMDk6NDEgKzAzMDAsIEFuZGVyIENvbnNlbHZhbiBEZSBPbGl2 ZWlyYSB3cm90ZToKPiBPbiBUdWUsIDIwMTYtMDYtMDcgYXQgMjE6MjQgKzAzMDAsIEltcmUgRGVh ayB3cm90ZToKPiA+IFNvIGZhciB3ZSBjb25maWd1cmVkIGEgc3RhdGljIGxhbmUgbGF0ZW5jeSBv cHRpbWl6YXRpb24gZHVyaW5nIGRyaXZlcgo+ID4gbG9hZGluZy9yZXN1bWluZy4gVGhlIHNwZWNp ZmljYXRpb24gY2hhbmdlZCBhdCBvbmUgcG9pbnQgYW5kIG5vdyB0aGlzCj4gPiBjb25maWd1cmF0 aW9uIGRlcGVuZHMgb24gdGhlIGxhbmUgY291bnQsIHNvIG1vdmUgdGhlIGNvbmZpZ3VyYXRpb24K PiA+IHRvIG1vZGVzZXQgdGltZSBhY2NvcmRpbmdseS4KPiA+IAo+ID4gSXQncyBub3QgY2xlYXIg d2hlbiB0aGlzIGxhbmUgY29uZmlndXJhdGlvbiB0YWtlcyBlZmZlY3QuIFRoZQo+ID4gc3BlY2lm aWNhdGlvbiBvbmx5IHJlcXVpcmVzIHRoYXQgdGhlIHByb2dyYW1taW5nIGlzIGRvbmUgYmVmb3Jl IGVuYWJsaW5nCj4gPiB0aGUgcG9ydC4gT24gQ0hWIE9UT0ggdGhlIGxhbmVzIHN0YXJ0IHRvIHBv d2VyIHVwIGFscmVhZHkgcmlnaHQgYWZ0ZXIKPiA+IGVuYWJsaW5nIHRoZSBQTEwuIFRvIGJlIHNh ZmUgcHJlc2VydmUgdGhlIGN1cnJlbnQgb3JkZXIgYW5kIHNldCB0aGluZ3MKPiA+IHVwIGFscmVh ZHkgYmVmb3JlIGVuYWJsaW5nIHRoZSBQTEwuCj4gPiAKPiA+IEJ1Z3ppbGxhOiBodHRwczovL2J1 Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3Ngo+ID4gU2lnbmVkLW9mZi1i eTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiDCoGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jwqDCoMKgwqDCoHwgMTMxICsrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KPiA+IC0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIHzCoMKgwqA1ICsrCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5owqDCoMKgwqDCoHzCoMKgwqA2ICsrCj4gPiDCoDMgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0 aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYwo+ID4gaW5kZXggZGVlNmRkMC4uZjQ2MTE3YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+ID4gQEAgLTE3ODksOCArMTc4OSw3IEBAIHN0YXRpYyB2b2lkIGJyb3h0b25f cGh5X3dhaXRfZ3JjX2RvbmUoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiA+IMKgCj4gPiDCoHZvaWQgYnh0X2RkaV9waHlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGVudW0gZHBpb19waHkgcGh5KQo+ID4gwqB7Cj4gPiAtCWVudW0gcG9ydCBw b3J0Owo+ID4gLQl1MzIgcG9ydHMsIHZhbDsKPiA+ICsJdTMyIHZhbDsKPiA+IMKgCj4gPiDCoAlp ZiAoYnh0X2RkaV9waHlfaXNfZW5hYmxlZChkZXZfcHJpdiwgcGh5KSkgewo+ID4gwqAJCS8qIFN0 aWxsIHJlYWQgb3V0IHRoZSBHUkMgdmFsdWUgZm9yIHN0YXRlIHZlcmlmaWNhdGlvbiAqLwo+ID4g QEAgLTE4MjUsMjggKzE4MjQsNiBAQCB2b2lkIGJ4dF9kZGlfcGh5X2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwgZW51bSBkcGlvX3BoeSBwaHkpCj4gPiDCoAkJRFJN X0VSUk9SKCJ0aW1lb3V0IGR1cmluZyBQSFklZCBwb3dlciBvblxuIiwgcGh5KTsKPiA+IMKgCX0K PiA+IMKgCj4gPiAtCWlmIChwaHkgPT0gRFBJT19QSFkwKQo+ID4gLQkJcG9ydHMgPSBCSVQoUE9S VF9CKSB8IEJJVChQT1JUX0MpOwo+ID4gLQllbHNlCj4gPiAtCQlwb3J0cyA9IEJJVChQT1JUX0Ep Owo+ID4gLQo+ID4gLQlmb3JfZWFjaF9wb3J0X21hc2tlZChwb3J0LCBwb3J0cykgewo+ID4gLQkJ aW50IGxhbmU7Cj4gPiAtCj4gPiAtCQlmb3IgKGxhbmUgPSAwOyBsYW5lIDwgNDsgbGFuZSsrKSB7 Cj4gPiAtCQkJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMTRfTE4ocG9ydCwgbGFuZSkp Owo+ID4gLQkJCS8qCj4gPiAtCQkJwqAqIE5vdGUgdGhhdCBvbiBDSFYgdGhpcyBmbGFnIGlzIGNh bGxlZCBVUEFSLCBidXQgaGFzCj4gPiAtCQkJwqAqIHRoZSBzYW1lIGZ1bmN0aW9uLgo+ID4gLQkJ CcKgKi8KPiA+IC0JCQl2YWwgJj0gfkxBVEVOQ1lfT1BUSU07Cj4gPiAtCQkJaWYgKGxhbmUgIT0g MSkKPiA+IC0JCQkJdmFsIHw9IExBVEVOQ1lfT1BUSU07Cj4gPiAtCj4gPiAtCQkJSTkxNV9XUklU RShCWFRfUE9SVF9UWF9EVzE0X0xOKHBvcnQsIGxhbmUpLCB2YWwpOwo+ID4gLQkJfQo+ID4gLQl9 Cj4gPiAtCj4gPiDCoAkvKiBQcm9ncmFtIFBMTCBSY29tcCBjb2RlIG9mZnNldCAqLwo+ID4gwqAJ dmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX0NMMUNNX0RXOShwaHkpKTsKPiA+IMKgCXZhbCAmPSB+ SVJFRjBSQ19PRkZTRVRfTUFTSzsKPiA+IEBAIC0xOTU2LDggKzE5MzMsNiBAQCBfX3BoeV9yZWdf dmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsIGVudW0g ZHBpb19waHkgcGh5LAo+ID4gwqBib29sIGJ4dF9kZGlfcGh5X3ZlcmlmeV9zdGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiDCoAkJCcKgwqDCoMKgwqDCoGVudW0gZHBp b19waHkgcGh5KQo+ID4gwqB7Cj4gPiAtCWVudW0gcG9ydCBwb3J0Owo+ID4gLQl1MzIgcG9ydHM7 Cj4gPiDCoAl1aW50MzJfdCBtYXNrOwo+ID4gwqAJYm9vbCBvazsKPiA+IMKgCj4gPiBAQCAtMTk3 MCwyMSArMTk0NSw2IEBAIGJvb2wgYnh0X2RkaV9waHlfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlCj4gPiAqZGV2X3ByaXYsCj4gPiDCoAo+ID4gwqAJb2sgPSB0cnVlOwo+ID4g wqAKPiA+IC0JaWYgKHBoeSA9PSBEUElPX1BIWTApCj4gPiAtCQlwb3J0cyA9IEJJVChQT1JUX0Ip IHwgQklUKFBPUlRfQyk7Cj4gPiAtCWVsc2UKPiA+IC0JCXBvcnRzID0gQklUKFBPUlRfQSk7Cj4g PiAtCj4gPiAtCWZvcl9lYWNoX3BvcnRfbWFza2VkKHBvcnQsIHBvcnRzKSB7Cj4gPiAtCQlpbnQg bGFuZTsKPiA+IC0KPiA+IC0JCWZvciAobGFuZSA9IDA7IGxhbmUgPCA0OyBsYW5lKyspCj4gPiAt CQkJb2sgJj0gX0NISyhCWFRfUE9SVF9UWF9EVzE0X0xOKHBvcnQsIGxhbmUpLAo+ID4gLQkJCQnC oMKgwqDCoExBVEVOQ1lfT1BUSU0sCj4gPiAtCQkJCcKgwqDCoMKgbGFuZSAhPSAxID8gTEFURU5D WV9PUFRJTSA6IDAsCj4gPiAtCQkJCcKgwqDCoMKgIkJYVF9QT1JUX1RYX0RXMTRfTE4oJWQsICVk KSIsIHBvcnQsCj4gPiBsYW5lKTsKPiA+IC0JfQo+ID4gLQo+ID4gwqAJLyogUExMIFJjb21wIGNv ZGUgb2Zmc2V0ICovCj4gPiDCoAlvayAmPSBfQ0hLKEJYVF9QT1JUX0NMMUNNX0RXOShwaHkpLAo+ ID4gwqAJCcKgwqDCoMKgSVJFRjBSQ19PRkZTRVRfTUFTSywgMHhlNCA8PCBJUkVGMFJDX09GRlNF VF9TSElGVCwKPiA+IEBAIC0yMDI4LDYgKzE5ODgsNzUgQEAgYm9vbCBieHRfZGRpX3BoeV92ZXJp Znlfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+IMKgI3Vu ZGVmIF9DSEsKPiA+IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgdWludDhfdAo+ID4gK2J4dF9kZGlf cGh5X2NhbGNfbGFuZV9sYXRfb3B0aW1fbWFzayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiA+ICsJCQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZykKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ID4gKwlpbnQgb3B0aW1fbGFuZV9jb3VudDsKPiA+ ICsKPiA+ICsJc3dpdGNoIChwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCkgewo+ID4gKwljYXNlIDE6 Cj4gPiArCQlvcHRpbV9sYW5lX2NvdW50ID0gMDsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIDI6 Cj4gPiArCQlvcHRpbV9sYW5lX2NvdW50ID0gMzsKPiA+ICsJCWJyZWFrOwo+ID4gKwljYXNlIDQ6 Cj4gPiArCQlvcHRpbV9sYW5lX2NvdW50ID0gNDsKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0 Ogo+ID4gKwkJTUlTU0lOR19DQVNFKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCk7Cj4g Cj4gU2luY2UgdGhpcyBpcyBjYWxsZWQgZnJvbSBjb21wdXRlIGNvbmZpZywgcGlwZV9jb25maWcg YW5kIGludGVsX2NydGMtPmNvbmZpZwo+IHdpbGwgYmUgZGlmZmVyZW50LiBCdXQgYW55d2F5LCBJ IHRoaW5rIHRoaXMgYmVsb25ncyBpbiB0aGUgZHBsbCBjb2RlLiBTZWUgYmVsb3cuCgpZZXAsIHRo aXMgaXMgYSB0eXBvIGxlZnQtb3ZlciBiZWZvcmUgSSByZWFsaXplZCB0aGF0IHRoZSB0d28gdGhp bmdzIGFyZQpkaWZmZXJlbnQ6KSBUaGFua3MgZm9yIGNhdGNoaW5nIGl0LgoKPiAKPiA+ICsKPiA+ ICsJCXJldHVybiAwOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAoQklUKG9wdGltX2xhbmVf Y291bnQpIC0gMSkgJiB+QklUKDEpOwo+IAo+IFdvdWxkbid0IGl0IGJlIGVhc2llciB0byBqdXN0 IHJldHVybiB0aGUgcmlnaHQgbWFzayBmcm9tIHRoZSBzd2l0Y2g/IFRoZXJlJ3MKPiBhbHJlYWR5 IGEgY2FzZSBmb3IgZWFjaCBwb3NzaWJsZSBsYW5lIGNvdW50LgoKT2ssIHdpbGwgc2ltcGxpZnkg aXQuCgo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBieHRfZGRpX3ByZV9wbGxfZW5hYmxl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwo+ ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRwb3J0LT5i YXNlLmJhc2UuZGV2KTsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBkcG9ydC0+cG9ydDsKPiA+ICsJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmJh c2UuY3J0Yyk7Cj4gPiArCWludCBsYW5lOwo+ID4gKwo+ID4gKwlmb3IgKGxhbmUgPSAwOyBsYW5l IDwgNDsgbGFuZSsrKSB7Cj4gPiArCQl1MzIgdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RX MTRfTE4ocG9ydCwgbGFuZSkpOwo+ID4gKwo+ID4gKwkJLyoKPiA+ICsJCcKgKiBOb3RlIHRoYXQg b24gQ0hWIHRoaXMgZmxhZyBpcyBjYWxsZWQgVVBBUiwgYnV0IGhhcwo+ID4gKwkJwqAqIHRoZSBz YW1lIGZ1bmN0aW9uLgo+ID4gKwkJwqAqLwo+ID4gKwkJdmFsICY9IH5MQVRFTkNZX09QVElNOwo+ ID4gKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9sYXRfb3B0aW1fbWFzayAmIEJJVChs YW5lKSkKPiA+ICsJCQl2YWwgfD0gTEFURU5DWV9PUFRJTTsKPiA+ICsKPiA+ICsJCUk5MTVfV1JJ VEUoQlhUX1BPUlRfVFhfRFcxNF9MTihwb3J0LCBsYW5lKSwgdmFsKTsKPiA+ICsJfQo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdWludDhfdAo+ID4gK2J4dF9kZGlfcGh5X2dldF9sYW5lX2xhdF9v cHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXIt PmJhc2UpOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRwb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBkcG9ydC0+cG9y dDsKPiA+ICsJaW50IGxhbmU7Cj4gPiArCXVpbnQ4X3QgbWFzazsKPiA+ICsKPiA+ICsJbWFzayA9 IDA7Cj4gPiArCWZvciAobGFuZSA9IDA7IGxhbmUgPCA0OyBsYW5lKyspIHsKPiA+ICsJCXUzMiB2 YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFcxNF9MTihwb3J0LCBsYW5lKSk7Cj4gPiArCj4g PiArCQlpZiAodmFsICYgTEFURU5DWV9PUFRJTSkKPiA+ICsJCQltYXNrIHw9IEJJVChsYW5lKTsK PiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gbWFzazsKPiA+ICt9Cj4gPiArCj4gPiDCoHZvaWQg aW50ZWxfZGRpX3ByZXBhcmVfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gQEAgLTIxOTksMTMgKzIyMjgsMTkgQEAg dm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gKmVuY29k ZXIsCj4gPiDCoAl9Cj4gPiDCoAo+ID4gwqAJaW50ZWxfZGRpX2Nsb2NrX2dldChlbmNvZGVyLCBw aXBlX2NvbmZpZyk7Cj4gPiArCj4gPiArCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJ CXBpcGVfY29uZmlnLT5sYW5lX2xhdF9vcHRpbV9tYXNrID0KPiA+ICsJCQlieHRfZGRpX3BoeV9n ZXRfbGFuZV9sYXRfb3B0aW1fbWFzayhlbmNvZGVyKTsKPiA+IMKgfQo+ID4gwqAKPiA+IMKgc3Rh dGljIGJvb2wgaW50ZWxfZGRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ID4gwqAJCQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZykKPiA+IMKgewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBlbmNvZGVyLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gPiDCoAlpbnQgdHlwZSA9IGVuY29k ZXItPnR5cGU7Cj4gPiDCoAlpbnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVu Y29kZXIpOwo+ID4gKwlpbnQgcmV0Owo+ID4gwqAKPiA+IMKgCVdBUk4odHlwZSA9PSBJTlRFTF9P VVRQVVRfVU5LTk9XTiwgImNvbXB1dGVfY29uZmlnKCkgb24gdW5rbm93bgo+ID4gb3V0cHV0IVxu Iik7Cj4gPiDCoAo+ID4gQEAgLTIyMTMsOSArMjI0OCwxNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9k ZGlfY29tcHV0ZV9jb25maWcoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g wqAJCXBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9IFRSQU5TQ09ERVJfRURQOwo+ID4gwqAK PiA+IMKgCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKQo+ID4gLQkJcmV0dXJuIGludGVs X2hkbWlfY29tcHV0ZV9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ID4gKwkJcmV0ID0g aW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhlbmNvZGVyLCBwaXBlX2NvbmZpZyk7Cj4gPiDCoAll bHNlCj4gPiAtCQlyZXR1cm4gaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoZW5jb2RlciwgcGlwZV9j b25maWcpOwo+ID4gKwkJcmV0ID0gaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoZW5jb2RlciwgcGlw ZV9jb25maWcpOwo+ID4gKwo+ID4gKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikgJiYgcmV0KQo+ ID4gKwkJcGlwZV9jb25maWctPmxhbmVfbGF0X29wdGltX21hc2sgPQo+ID4gKwkJCWJ4dF9kZGlf cGh5X2NhbGNfbGFuZV9sYXRfb3B0aW1fbWFzayhlbmNvZGVyLAo+ID4gKwkJCQkJCQnCoMKgwqDC oMKgcGlwZV9jb25maWcpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gKwo+ID4gwqB9Cj4g PiDCoAo+ID4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGludGVsX2Rk aV9mdW5jcyA9IHsKPiA+IEBAIC0yMzE0LDYgKzIzNTcsOCBAQCB2b2lkIGludGVsX2RkaV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydAo+ID4gcG9ydCkKPiA+IMKgCj4gPiDC oAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVsX2RkaV9jb21wdXRlX2NvbmZp ZzsKPiA+IMKgCWludGVsX2VuY29kZXItPmVuYWJsZSA9IGludGVsX2VuYWJsZV9kZGk7Cj4gPiAr CWlmIChJU19CUk9YVE9OKGRldl9wcml2KSkKPiA+ICsJCWludGVsX2VuY29kZXItPnByZV9wbGxf ZW5hYmxlID0gYnh0X2RkaV9wcmVfcGxsX2VuYWJsZTsKPiA+IMKgCWludGVsX2VuY29kZXItPnBy ZV9lbmFibGUgPSBpbnRlbF9kZGlfcHJlX2VuYWJsZTsKPiA+IMKgCWludGVsX2VuY29kZXItPmRp c2FibGUgPSBpbnRlbF9kaXNhYmxlX2RkaTsKPiA+IMKgCWludGVsX2VuY29kZXItPnBvc3RfZGlz YWJsZSA9IGludGVsX2RkaV9wb3N0X2Rpc2FibGU7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggNjBjYmExOS4uNGJjN2M0OCAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBAQCAtNDg0MSw2ICs0ODQxLDEwIEBAIHN0 YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4g wqAJCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIFRSQU5T Q09ERVJfQSwKPiA+IMKgCQkJCQkJwqDCoMKgwqDCoMKgZmFsc2UpOwo+ID4gwqAKPiA+ICsJZm9y X2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2RlcikKPiA+ICsJCWlmIChlbmNv ZGVyLT5wcmVfcGxsX2VuYWJsZSkKPiA+ICsJCQllbmNvZGVyLT5wcmVfcGxsX2VuYWJsZShlbmNv ZGVyKTsKPiA+ICsKPiA+IMKgCWlmIChpbnRlbF9jcnRjLT5jb25maWctPnNoYXJlZF9kcGxsKQo+ ID4gwqAJCWludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKPiAKPiBFZmZlY3Rp dmVseSB0aGlzIHdyaXRlc8KgQlhUX1BPUlRfVFhfRFcxNF9MTiBiZWZvcmUgYnh0X2RkaV9wbGxf ZW5hYmxlKCkgaXMKPiBjYWxsZWQuIElmIHRoYXQgd291bGQgYmUgdGhlIGZpcnN0IHJlZ2lzdGVy IHdyaXRlIGluIHRoYXQgZnVuY3Rpb24sIGl0IHdvdWxkCj4gYXZvaWQgdGhlIGV4dHJhIGRldG91 ci4gU28gd2UgY2FuIGNhbGN1bGF0ZSB0aGUgb3B0aW1pemF0aW9uIGluIGJ4dF9nZXRfZHBsbCgp LAo+IHN0b3JlIGl0IGluIHN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlIGFuZCB1c2UgdGhlIHBs bCBzdGF0ZSBjaGVja2luZyB0byB2ZXJpZnkKPiB0aGUgcmlnaHQgdmFsdWVzIHdlcmUgcHJvZ3Jh bW1lZC4gVGhhdCB3YXkgdGhlcmUncyBubyBuZWVkIHRvIGFkZCBhIHZhbHVlCj4gc3BlY2lmaWMg dG8gdGhlIGJ4dCBwaHkgdG8gc3RydWN0IGludGVsX2NydGNfc3RhdGUgb3IgaW1wbGVtZW50IHRo ZQo+IHByZV9wbGxfZW5hYmxlIGhvb2suCgpJdCdzIG5vdCBhIFBMTCBzcGVjaWZpYyB0aGluZyB0 aG91Z2gsIHJhdGhlciBhIHByb3BlcnR5IG9mIHRoZSBQSFkKY2hhbm5lbC4gRm9yIGluc3RhbmNl IHdlIGNvdWxkIHNoYXJlIG9uZSBQTEwgZm9yIHR3byBjaGFubmVscyBpbiB3aGljaCAKY2FzZSB3 ZSdkIG5lZWQgdG8gZW5hYmxlIG9ubHkgb25lIFBMTCBidXQgY29uZmlndXJlIHRoZSBsYW5lcyBm b3IgYm90aApjaGFubmVscy4KCi0tSW1yZQoKPiAKPiBBbmRlcgo+IAo+ID4gwqAKPiA+IEBAIC0x MjgxNiw2ICsxMjgyMCw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+IMKgCj4gPiDCoAlQSVBFX0NPTkZfQ0hFQ0tfSShoYXNfZHBfZW5jb2Rl cik7Cj4gPiDCoAlQSVBFX0NPTkZfQ0hFQ0tfSShsYW5lX2NvdW50KTsKPiA+ICsJUElQRV9DT05G X0NIRUNLX1gobGFuZV9sYXRfb3B0aW1fbWFzayk7Cj4gPiDCoAo+ID4gwqAJaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgOCkgewo+ID4gwqAJCVBJUEVfQ09ORl9DSEVDS19NX04oZHBfbV9uKTsK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggMTc0NDVkNy4uY2E5ODQx NiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTU3OSw2ICs1Nzks MTIgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+ID4gwqAKPiA+IMKgCXVpbnQ4X3QgbGFu ZV9jb3VudDsKPiA+IMKgCj4gPiArCS8qCj4gPiArCcKgKiBVc2VkIGJ5IHBsYXRmb3JtcyBoYXZp bmcgRFAvSERNSSBQSFkgd2l0aCBwcm9ncmFtbWFibGUgbGFuZQo+ID4gKwnCoCogbGF0ZW5jeSBv cHRpbWl6YXRpb24uCj4gPiArCcKgKi8KPiA+ICsJdWludDhfdCBsYW5lX2xhdF9vcHRpbV9tYXNr Owo+ID4gKwo+ID4gwqAJLyogUGFuZWwgZml0dGVyIGNvbnRyb2xzIGZvciBnZW4yLWdlbjQgKyBW TFYgKi8KPiA+IMKgCXN0cnVjdCB7Cj4gPiDCoAkJdTMyIGNvbnRyb2w7Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=