From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 6/8] drm/i915/skl: Add DC6 Trigger sequence. Date: Thu, 02 Apr 2015 23:42:00 +0300 Message-ID: <1428007320.8235.66.camel@ideak-mobl> References: <1427885382-8753-1-git-send-email-animesh.manna@intel.com> <1427885547-8834-1-git-send-email-animesh.manna@intel.com> <1427885547-8834-6-git-send-email-animesh.manna@intel.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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 7E5756E47B for ; Thu, 2 Apr 2015 13:42:02 -0700 (PDT) In-Reply-To: <1427885547-8834-6-git-send-email-animesh.manna@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Animesh Manna Cc: Suketu Shah , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE1LTA0LTAxIGF0IDE2OjIyICswNTMwLCBBbmltZXNoIE1hbm5hIHdyb3RlOgo+ IEZyb206IFN1a2V0dSBTaGFoIDxzdWtldHUuai5zaGFoQGludGVsLmNvbT4KPiAKPiBBZGQgdHJp Z2dlcnMgZm9yIERDNiBhcyBwZXIgZGV0YWlscyBwcm92aWRlZCBpbiBza2xfZW5hYmxlX2RjNgo+ IGFuZCBza2xfZGlzYWJsZV9kYzYgaW1wbGVtZW50YXRpb25zLgo+IAo+IEFsc28gQ2FsbCBQT1NU SU5HX1JFQUQgZm9yIGV2ZXJ5IHdyaXRlIHRvIGEgcmVnaXN0ZXIgdG8gZW5zdXJlCj4gaXQgaXMg d3JpdHRlbiB0byBpbW1lZGlhdGVseQo+IAo+IHYxOiBSZW1vdmUgUE9TVElOR19SRUFEIGFuZCBp bnRlbF9wcmVwYXJlX2RkaSBjYWxscyBhcyB0aGV5J3ZlIGJlZW4gYWRkZWQgaW4gcHJldmlvdXMg cGF0Y2hlcy4KPiAKPiB2MjoKPiAxXSBSZW1vdmUgY2hlY2sgZm9yIGJhY2tsaWdodCBkaXNhYmxl ZCBhcyBpdCBzaG91bGQgYmUgdGhlIGNhc2UgYnkgdGhhdCB0aW1lLgo+IDJdIE1hcmsgREM1IGFz IGRpc2FibGVkIHdoZW4gZW5hYmxpbmcgREM2Lgo+IDNdIFJldHVybiBmcm9tIERDNS1kaXNhYmxp bmcgZnVuY3Rpb24gZWFybHkgaWYgREM1IGlzIGFscmVhZHkgYmUgZGlzYWJsZWQgd2hpY2ggY2Fu IGhhcHBlbgo+ICAgIGR1ZSB0byBEQzYtZW5hYmxpbmcgZWFybGllci4KPiAzXSBFbnN1cmUgQ1NS IGZpcm13YXJlIGlzIGxvYWRlZCBhZnRlciByZXN1bWUgZnJvbSBEQzYgYXMgY29ycmVzcG9uZGlu ZyBtZW1vcnkgY29udGVudHMgd29uJ3QKPiAgICBiZSByZXRhaW5lZCBhZnRlciBydW50aW1lLXN1 c3BlbmQuCj4gNF0gRW5zdXJlIHRoYXQgQ1NSIGlzbid0IGlkZW50aWZpZWQgYXMgbG9hZGVkIGJl Zm9yZSBDU1ItbG9hZGluZyBwcm9ncmFtIGlzIGNhbGxlZCBkdXJpbmcKPiAgICBydW50aW1lLXJl c3VtZS4KPiAKPiB2MzogUmViYXNlIHRvIGxhdGVzdAo+IE1vZGlmaWVkIGFzIHBlciByZXZpZXcg Y29tbWVudHMgZnJvbSBJbXJlIGFuZCBhZnRlciBkaXNjdXNzaW9uIHdpdGggQXJ0Ogo+IDFdIERD NiBzaG91bGQgYmUgcHJlZmVyYWJseSBlbmFibGVkIHdoZW4gUEcyIGlzIGRpc2FibGVkIGJ5IFNX IGFzIHRoZSBjaGVjayBmb3IgUEcxIGJlaW5nCj4gICAgZGlzYWJsZWQgaXMgdGFrZW4gb2YgYnkg SFcgdG8gZW50ZXIgREM2LCBhbmQgZGlzYWJsZWQgd2hlbiBQRzIgaXMgZW5hYmxlZCByZXNwZWN0 aXZlbHkuCj4gICAgVGhpcyBoZWxwcyBzYXZlIG1vcmUgcG93ZXIsIGVzcGVjaWFsbHkgaW4gdGhl IGNhc2Ugd2hlbiBkaXNwbGF5IGlzIGRpc2FibGVkIGJ1dCBHVCBpcwo+ICAgIGVuYWJsZWQuIEFj Y29yZGluZ2x5LCByZXBsYWNpbmcgREM1IHRyaWdnZXIgc2VxdWVuY2Ugd2l0aCBEQzYgZm9yIFNL TC4KPiAyXSBEQzYgY291bGQgYmUgZW5hYmxlZCBmcm9tIGludGVsX3J1bnRpbWVfc3VzcGVuZCgp IGZ1bmN0aW9uLCBpZiBEQzUgaXMgYWxyZWFkeSBlbmFibGVkLgo+IDNdIE1vdmUgQ1NSLWxvYWQt c3RhdHVzIHNldHRpbmcgY29kZSBmcm9tIGludGVsX3J1bnRpbWVfc3VzcGVuZCBmdW5jdGlvbiB0 byBhIG5ldyBmdW5jdGlvbi4KPiAKPiB2NDoKPiAxXSBFbmFibGUvZGlzYWJsZSBEQzYgb25seSB3 aGVuIHRvZ2dsaW5nIHRoZSBwb3dlci13ZWxsIHVzaW5nIGEgbmV3bHkgZGVmaW5lZCBtYWNybyBF TkFCTEVfREM2Lgo+IAo+IHY1Ogo+IDFdIExvYWQgQ1NSIG9uIHN5c3RlbSByZXN1bWUgdG9vIGFz IGZpcm13YXJlIG1heSBiZSBsb3N0IG9uIHN5c3RlbSBzdXNwZW5kIHByZXZlbnRpbmcKPiAgICBl bmFibGluZyBEQzUsIERDNi4KPiAyXSBEREkgYnVmZmVycyBzaG91bGRuJ3QgYmUgcHJvZ3JhbW1l ZCBkdXJpbmcgZHJpdmVyLWxvYWQvcmVzdW1lIGFzIGl0J3MgYWxyZWFkeSBkb25lCj4gICAgZHVy aW5nIG1vZGVzZXQgaW5pdGlhbGl6YXRpb24gdGhlbiBhbmQgYWxzbyB0aGF0IHRoZSBlbmNvZGVy IGxpc3QgaXMgc3RpbGwgdW5pbml0aWFsaXplZCBieQo+ICAgIHRoZW4uIFRoZXJlZm9yZSwgY2Fs bCBpbnRlbF9wcmVwYXJlX2RkaSBmdW5jdGlvbiByaWdodCBhZnRlciBkaXNhYmxpbmcgREM2IGJ1 dCBvdXRzaWRlCj4gICAgc2tsX2Rpc2FibGVfZGM2IGZ1bmN0aW9uIGFuZCBub3QgZHVyaW5nIGRy aXZlci1sb2FkL3Jlc3VtZS4KPiAKPiB2NjoKPiAxXSBSZWJhc2UgdG8gbGF0ZXN0Lgo+IDJdIE1v dmUgU0tMX0VOQUJMRV9EQzYgbWFjcm8gZGVmaW5pdGlvbiBmcm9tIGludGVsX2Rpc3BsYXkuYyB0 byBpbnRlbF9ydW50aW1lX3BtLmMuCj4gCj4gdjc6Cj4gMSkgUmVmYWN0b3JlZCB0aGUgY29kZSBm b3IgcmVtb3ZpbmcgdGhlIHdhcm5pbmcgZ290IGZyb20gY2hlY2twYXRjaC4KPiAyKSBBZnRlciBh ZGRpbmcgZG1jIHZlciAxLjAgc3VwcG9ydCByZWJhc2VkIG9uIHRvcCBvZiBuaWdodGx5LiAoQW5p bWVzaCkKPiAKPiBJc3N1ZTogVklaLTI4MTkKPiBTaWduZWQtb2ZmLWJ5OiBBLlN1bmlsIEthbWF0 aCA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBTdWtldHUgU2hhaCA8 c3VrZXR1Lmouc2hhaEBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRGFtaWVuIExlc3BpYXUg PGRhbWllbi5sZXNwaWF1QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbmltZXNoIE1hbm5h IDxhbmltZXNoLm1hbm5hQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyAgICAgICAgIHwgMjkgKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgfCAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYyB8IDk4ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICAz IGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQo+IAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDQ4OWNhYTYuLjM1MmM3NzAyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTc5NSw2ICs3OTUsOCBAQCBzdGF0aWMgaW50IGk5MTVf ZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWlmIChJU19I QVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCWhzd19kaXNh YmxlX3BjOChkZXZfcHJpdik7Cj4gKwllbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkKPiAr CQlyZXQgPSBza2xfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYpOwo+ICAKPiAgCWludGVsX3VuY29y ZV9zYW5pdGl6ZShkZXYpOwo+ICAJaW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KGRldl9wcml2 KTsKPiBAQCAtMTAwOSw2ICsxMDExLDE5IEBAIHN0YXRpYyBpbnQgaTkxNV9wbV9yZXN1bWUoc3Ry dWN0IGRldmljZSAqZGV2KQo+ICAJcmV0dXJuIGk5MTVfZHJtX3Jlc3VtZShkcm1fZGV2KTsKPiAg fQo+ICAKPiArc3RhdGljIGludCBza2xfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCS8qIEVuYWJsaW5nIERDNiBpcyBub3QgYSBoYXJk IHJlcXVpcmVtZW50IHRvIGVudGVyIHJ1bnRpbWUgRDMgKi8KPiArCj4gKwkvKgo+ICsJICogVGhp cyBpcyB0byBlbnN1cmUgdGhhdCBDU1IgaXNuJ3QgaWRlbnRpZmllZCBhcyBsb2FkZWQgYmVmb3Jl Cj4gKwkgKiBDU1ItbG9hZGluZyBwcm9ncmFtIGlzIGNhbGxlZCBkdXJpbmcgcnVudGltZS1yZXN1 bWUuCj4gKwkgKi8KPiArCWludGVsX2Nzcl9sb2FkX3N0YXR1c19zZXQoZGV2X3ByaXYsIGZhbHNl KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBoc3dfc3VzcGVuZF9j b21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWhzd19l bmFibGVfcGM4KGRldl9wcml2KTsKPiBAQCAtMTAxNiw2ICsxMDMxLDE2IEBAIHN0YXRpYyBpbnQg aHN3X3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK2ludCBza2xfcmVzdW1lX3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZGV2X3ByaXYtPmRldjsKPiArCj4gKwlpZiAoIWludGVsX2Nzcl9sb2FkX3N0YXR1c19nZXQo ZGV2X3ByaXYpKQoKTm8gbmVlZCB0byBjaGVjayB0aGUgYWJvdmUsIGl0J3MgZ3VhcmFudGVlZCB0 aGUgZmlybXdhcmUgaXMgbm90IGxvYWRlZAphdCB0aGlzIHBvaW50LgoKPiArCQlpbnRlbF9jc3Jf bG9hZF9wcm9ncmFtKGRldik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIC8qCj4gICAq IFNhdmUgYWxsIEd1bml0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBsb3N0IGFmdGVyIGEgRDMgYW5k IGEgc3Vic2VxdWVudAo+ICAgKiBTMGlbUjEyM10gdHJhbnNpdGlvbi4gVGhlIGxpc3Qgb2YgcmVn aXN0ZXJzIG5lZWRpbmcgYSBzYXZlL3Jlc3RvcmUgaXMKPiBAQCAtMTQ4NCw2ICsxNTA5LDggQEAg c3RhdGljIGludCBpbnRlbF9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpCj4g IAo+ICAJaWYgKElTX0dFTjYoZGV2X3ByaXYpKQo+ICAJCWludGVsX2luaXRfcGNoX3JlZmNsayhk ZXYpOwo+ICsJZWxzZSBpZiAoSVNfU0tZTEFLRShkZXYpKQo+ICsJCXJldCA9IHNrbF9yZXN1bWVf cHJlcGFyZShkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ICAJCWhzd19kaXNhYmxlX3BjOChkZXZfcHJpdik7Cj4g IAllbHNlIGlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkKPiBAQCAtMTUxNiw2ICsxNTQzLDgg QEAgc3RhdGljIGludCBpbnRlbF9zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2 Owo+ICAJaW50IHJldDsKPiAgCj4gKwlpZiAoSVNfU0tZTEFLRShkZXYpKQo+ICsJCXJldCA9IHNr bF9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKPiAgCWlmIChJU19IQVNXRUxMKGRldikgfHwg SVNfQlJPQURXRUxMKGRldikpCj4gIAkJcmV0ID0gaHN3X3N1c3BlbmRfY29tcGxldGUoZGV2X3By aXYpOwo+ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGluZGV4IDMzMjBmYjQuLjVkZDhkNjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBAQCAtMjY0Miw2ICsyNjQyLDcgQEAgZXh0ZXJuIHZvaWQgaTkxNV91cGRhdGVfZ2Z4X3Zh bChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBpbnQgdmx2X2ZvcmNlX2dm eF9jbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgb24pOwo+ICB2 b2lkIGludGVsX2hwZF9jYW5jZWxfd29yayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+ICB2b2lkIGk5MTVfZmlybXdhcmVfbG9hZF9lcnJvcl9wcmludChjb25zdCBjaGFyICpm d19wYXRoLCBpbnQgZXJyKTsKPiAraW50IHNrbF9yZXN1bWVfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwoKTm8gbmVlZCB0byBleHBvcnQgdGhpcywgeW91IGNhbiBh ZGQgYSBmb3J3YXJkIGRlY2xhcmF0aW9uIGF0IHRoZSB0b3AgaW4KaTkxNV9kcnYuYy4KCj4gIAo+ ICAvKiBpOTE1X2lycS5jICovCj4gIHZvaWQgaTkxNV9xdWV1ZV9oYW5nY2hlY2soc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ IGluZGV4IGRhZTY1ZTAuLmNjOTQ1MDMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jCj4gQEAgLTQ5LDcgKzQ5LDggQEAKPiAgICogcHJlc2VudCBmb3IgYSBnaXZl biBwbGF0Zm9ybS4KPiAgICovCj4gIAo+IC0jZGVmaW5lIEdFTjlfRU5BQkxFX0RDNShkZXYpIChJ U19TS1lMQUtFKGRldikpCj4gKyNkZWZpbmUgR0VOOV9FTkFCTEVfREM1KGRldikgMAo+ICsjZGVm aW5lIFNLTF9FTkFCTEVfREM2KGRldikgSVNfU0tZTEFLRShkZXYpCj4gIAo+ICAjZGVmaW5lIGZv cl9lYWNoX3Bvd2VyX3dlbGwoaSwgcG93ZXJfd2VsbCwgZG9tYWluX21hc2ssIHBvd2VyX2RvbWFp bnMpCVwKPiAgCWZvciAoaSA9IDA7CQkJCQkJCVwKPiBAQCAtMzczLDcgKzM3NCw3IEBAIHN0YXRp YyB2b2lkIGFzc2VydF9jYW5fZGlzYWJsZV9kYzUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICAKPiAgCVdBUk4oIXBnMl9lbmFibGVkLCAiUEcyIG5vdCBlbmFibGVkIHRvIGRp c2FibGUgREM1LlxuIik7Cj4gIAlXQVJOKGRldl9wcml2LT5wbS5zdXNwZW5kZWQsCj4gLQkJIkRp c2FibGluZyBvZiBEQzUgd2hpbGUgcGxhdGZvcm0gaXMgcnVudGltZS1zdXNwZW5kZWQgc2hvdWxk IG5ldmVyIGhhcHBlbi5cbiIpOwo+ICsJCSJQbGF0Zm9ybSBpcyBydW50aW1lLXN1c3BlbmRlZCwg c2hvdWxkIG5vdCBkaXNhYmxlIERDNS5cbiIpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBnZW45 X2VuYWJsZV9kYzUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IEBAIC00Mzgs OCArNDM5LDYgQEAgc3RhdGljIHZvaWQgc2tsX2Rpc2FibGVfZGM2KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCXZhbCAmPSB+RENfU1RBVEVfRU5fVVBUT19EQzY7Cj4gIAlJ OTE1X1dSSVRFKERDX1NUQVRFX0VOLCB2YWwpOwo+ICAJUE9TVElOR19SRUFEKERDX1NUQVRFX0VO KTsKPiAtCj4gLQlpbnRlbF9wcmVwYXJlX2RkaShkZXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IEBAIC00ODMsNTUgKzQ4Miw2MCBAQCBzdGF0aWMgdm9pZCBza2xfc2V0X3Bvd2VyX3dlbGwoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJc3RhdGVfbWFzayA9IFNLTF9QT1dF Ul9XRUxMX1NUQVRFKHBvd2VyX3dlbGwtPmRhdGEpOwo+ICAJaXNfZW5hYmxlZCA9IHRtcCAmIHN0 YXRlX21hc2s7Cj4gIAo+IC0JaWYgKGVuYWJsZSkgewo+IC0JCWlmICghZW5hYmxlX3JlcXVlc3Rl ZCkgewo+IC0JCQlXQVJOKCh0bXAgJiBzdGF0ZV9tYXNrKSAmJgo+IC0JCQkJIUk5MTVfUkVBRChI U1dfUFdSX1dFTExfQklPUyksICJJbnZhbGlkIGZvciBcCj4gLQkJCQkgcG93ZXIgd2VsbCBzdGF0 dXMgdG8gYmUgZW5hYmxlZCwgdW5sZXNzIGRvbmUgXAo+IC0JCQkJIGJ5IHRoZSBCSU9TLCB3aGVu IHJlcXVlc3QgaXMgdG8gZGlzYWJsZSFcbiIpOwo+IC0JCQlpZiAoR0VOOV9FTkFCTEVfREM1KGRl dikgJiYKPiAtCQkJCXBvd2VyX3dlbGwtPmRhdGEgPT0gU0tMX0RJU1BfUFdfMikKPiAtCQkJCWdl bjlfZGlzYWJsZV9kYzUoZGV2X3ByaXYpOwo+IC0JCQlJOTE1X1dSSVRFKEhTV19QV1JfV0VMTF9E UklWRVIsIHRtcCB8IHJlcV9tYXNrKTsKPiArCWlmIChlbmFibGUgJiYgKCFlbmFibGVfcmVxdWVz dGVkKSkgewo+ICsJCVdBUk4oaXNfZW5hYmxlZCAmJiAhSTkxNV9SRUFEKEhTV19QV1JfV0VMTF9C SU9TKSwKPiArCQkiSW52YWxpZCBmb3IgcG93ZXIgd2VsbCBzdGF0dXMgdG8gYmUgZW5hYmxlZCwg dW5sZXNzIGRvbmUgYnkgXAo+ICsJCXRoZSBCSU9TLCB3aGVuIHJlcXVlc3QgaXMgdG8gZGlzYWJs ZSFcbiIpOwo+ICsJCWlmIChTS0xfRU5BQkxFX0RDNihkZXYpICYmIHBvd2VyX3dlbGwtPmRhdGEg PT0gU0tMX0RJU1BfUFdfMikgewo+ICsJCQlza2xfZGlzYWJsZV9kYzYoZGV2X3ByaXYpOwo+ICsJ CQkvKgo+ICsJCQkgKiBEREkgYnVmZmVyIHByb2dyYW1taW5nIHVubmVjZXNzYXJ5IGR1cmluZyBk cml2ZXIKPiArCQkJICogbG9hZC9yZXN1bWVhcyBpdCdzIGFscmVhZHkgZG9uZSBkdXJpbmcgbW9k ZXNldAo+ICsJCQkgKiBpbml0aWFsaXphdGlvbiB0aGVuLiBJdCdzIGFsc28gaW52YWxpZCBoZXJl IGFzCj4gKwkJCSAqIGVuY29kZXIgbGlzdCBpcyBzdGlsbCB1bmluaXRpYWxpemVkLgoKU29tZSB0 eXBvcyBpbiB0aGUgYWJvdmUgY29tbWVudC4KCj4gKwkJCSAqLwo+ICsJCQlpZiAoIWRldl9wcml2 LT5wb3dlcl9kb21haW5zLmluaXRpYWxpemluZykKPiArCQkJCWludGVsX3ByZXBhcmVfZGRpKGRl dik7Cj4gIAkJfQo+IC0KPiAtCQlpZiAoIWlzX2VuYWJsZWQpIHsKPiAtCQkJRFJNX0RFQlVHX0tN UygiRW5hYmxpbmcgJXNcbiIsIHBvd2VyX3dlbGwtPm5hbWUpOwo+IC0JCQlpZiAod2FpdF9mb3Io KEk5MTVfUkVBRChIU1dfUFdSX1dFTExfRFJJVkVSKSAmCj4gLQkJCQlzdGF0ZV9tYXNrKSwgMSkp Cj4gLQkJCQlEUk1fRVJST1IoIiVzIGVuYWJsZSB0aW1lb3V0XG4iLAo+IC0JCQkJCXBvd2VyX3dl bGwtPm5hbWUpOwo+ICsJCWlmIChHRU45X0VOQUJMRV9EQzUoZGV2KSAmJiBwb3dlcl93ZWxsLT5k YXRhID09IFNLTF9ESVNQX1BXXzIpCj4gKwkJCWdlbjlfZGlzYWJsZV9kYzUoZGV2X3ByaXYpOwo+ ICsJCUk5MTVfV1JJVEUoSFNXX1BXUl9XRUxMX0RSSVZFUiwgdG1wIHwgcmVxX21hc2spOwo+ICsJ fQo+ICsJaWYgKGVuYWJsZSAmJiAoIWlzX2VuYWJsZWQpKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygi RW5hYmxpbmcgJXNcbiIsIHBvd2VyX3dlbGwtPm5hbWUpOwo+ICsJCWlmICh3YWl0X2ZvcigoSTkx NV9SRUFEKEhTV19QV1JfV0VMTF9EUklWRVIpICYgc3RhdGVfbWFzayksIDEpKQo+ICsJCQlEUk1f RVJST1IoIiVzIGVuYWJsZSB0aW1lb3V0XG4iLCBwb3dlcl93ZWxsLT5uYW1lKTsKPiAgCQkJY2hl Y2tfZnVzZV9zdGF0dXMgPSB0cnVlOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gLQkJaWYgKGVuYWJs ZV9yZXF1ZXN0ZWQpIHsKPiAtCQkJSTkxNV9XUklURShIU1dfUFdSX1dFTExfRFJJVkVSLAl0bXAg JiB+cmVxX21hc2spOwo+IC0JCQlQT1NUSU5HX1JFQUQoSFNXX1BXUl9XRUxMX0RSSVZFUik7Cj4g LQkJCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4g LQo+IC0JCQlpZiAoR0VOOV9FTkFCTEVfREM1KGRldikgJiYKPiAtCQkJCXBvd2VyX3dlbGwtPmRh dGEgPT0gU0tMX0RJU1BfUFdfMikgewo+IC0JCQkJaWYgKCFkZXZfcHJpdi0+Y3NyLmZhaWxlZCkg ewo+IC0JCQkJCS8qCj4gLQkJCQkJKiBUT0RPOiB3YWl0IGZvciBhIGNvbXBsZXRpb24gZXZlbnQg b3IKPiAtCQkJCQkqIHNpbWlsYXIgaGVyZSBpbnN0ZWFkIG9mIGJ1c3kKPiAtCQkJCQkqIHdhaXRp bmcgdXNpbmcgd2FpdF9mb3IgZnVuY3Rpb24uCj4gLQkJCQkJKi8KPiAtCQkJCQlpZiAod2FpdF9m b3IoCj4gLQkJCQkJCWludGVsX2Nzcl9sb2FkX3N0YXR1c19nZXQoCj4gLQkJCQkJCQlkZXZfcHJp diksIDEwMDApKQo+IC0JCQkJCQlEUk1fRVJST1IoIlRpbWVkIG91dCB3YWl0aW5nIFwKPiAtCQkJ CQkJCWZvciBDU1IgdG8gYmUgbG9hZGVkISIpOwo+IC0JCQkJCWVsc2UKPiAtCQkJCQkJZ2VuOV9l bmFibGVfZGM1KGRldl9wcml2KTsKPiAtCQkJCX0gZWxzZSB7Cj4gLQkJCQkJRFJNX0VSUk9SKCJD YW5ub3QgZW5hYmxlIERDNSBhcyBDU1IgXAo+IC0JCQkJCQkJZmFpbGVkIHRvIGxvYWQhIik7Cj4g LQkJCQl9Cj4gKwl9Cj4gKwlpZiAoKCFlbmFibGUpICYmIGVuYWJsZV9yZXF1ZXN0ZWQpIHsKPiAr CQlJOTE1X1dSSVRFKEhTV19QV1JfV0VMTF9EUklWRVIsCXRtcCAmIH5yZXFfbWFzayk7Cj4gKwkJ UE9TVElOR19SRUFEKEhTV19QV1JfV0VMTF9EUklWRVIpOwo+ICsJCURSTV9ERUJVR19LTVMoIkRp c2FibGluZyAlc1xuIiwgcG93ZXJfd2VsbC0+bmFtZSk7Cj4gKwo+ICsJCWlmICgoR0VOOV9FTkFC TEVfREM1KGRldikgfHwgU0tMX0VOQUJMRV9EQzYoZGV2KSkgJiYKPiArCQkJcG93ZXJfd2VsbC0+ ZGF0YSA9PSBTS0xfRElTUF9QV18yKSB7Cj4gKwkJCWlmIChkZXZfcHJpdi0+Y3NyLmZhaWxlZCkg ewo+ICsJCQkJRFJNX0VSUk9SKCJDU1IgbG9hZGluZyBmYWlsZWQsIG5vdCBlbnRlcmluZyAlcyIs Cj4gKwkJCQlTS0xfRU5BQkxFX0RDNihkZXYpID8gIkRDNiIgOiAiREM1Iik7Cj4gKwkJCQlnb3Rv IGV4aXQ7Cj4gKwkJCX0KPiArCQkJLyoKPiArCQkJICogVE9ETzogd2FpdCBmb3IgYSBjb21wbGV0 aW9uIGV2ZW50IG9yIHNpbWlsYXIgaGVyZQo+ICsJCQkgKiBpbnN0ZWFkIG9mIGJ1c3kgd2FpdGlu ZyB1c2luZyB3YWl0X2ZvciBmdW5jdGlvbi4KPiArCQkJICovCj4gKwkJCWlmICh3YWl0X2Zvcihp bnRlbF9jc3JfbG9hZF9zdGF0dXNfZ2V0KGRldl9wcml2KSwKPiArCQkJCQkJCQkxMDAwKSkgewo+ ICsJCQkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgZm9yIENTUiBsb2FkaW5nISIpOwo+ICsJCQkJZ290 byBleGl0Owo+ICAJCQl9Cj4gKwkJCWlmIChTS0xfRU5BQkxFX0RDNihkZXYpKQo+ICsJCQkJc2ts X2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+ICsJCQllbHNlCj4gKwkJCQlnZW45X2VuYWJsZV9kYzUo ZGV2X3ByaXYpOwo+ICAJCX0KPiAgCX0KPiAgCj4gK2V4aXQ6Cj4gIAlpZiAoY2hlY2tfZnVzZV9z dGF0dXMpIHsKPiAgCQlpZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBTS0xfRElTUF9QV18xKSB7Cj4g IAkJCWlmICh3YWl0X2ZvcigoSTkxNV9SRUFEKFNLTF9GVVNFX1NUQVRVUykgJgoKTm8gbmVlZCB0 byBjaGFuZ2UgYW55dGhpbmcgYWJvdXQgdGhpcyBub3csIGJ1dCB0aGVyZSBhcmUgYSBxdWl0ZSBh IGxvdApvZiByZXdyaXRlcyBoZXJlIGZvciB0aGluZ3MgdGhhdCB3ZXJlIGFkZGVkIGVhcmxpZXIg aW4gdGhlIHBhdGNoc2V0IGFuZAp0aGVyZSBpcyByZWFsbHkgbm8gZ29vZCByZWFzb24gZm9yIHRo aXMuIEluIHRoZSBmdXR1cmUgaXQgd291bGQgbWFrZSB0aGUKcmV2aWV3IGVhc2llciBpZiB5b3Ug d291bGQgc3F1YXNoL29yZ2FuaXplIHRoZSBwYXRjaGVzIHNvIGFzIHRvIG1pbmltaXplCnN1Y2gg cmV3cml0ZXMuCgpXaXRoIHRoZSBhYm92ZSB0aGluZ3MgZml4ZWQ6ClJldmlld2VkLWJ5OiBJbXJl IERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=