From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 10/10] drm/i915: Update the DSI enable path to support dual link panel enabling Date: Thu, 04 Dec 2014 13:49:16 +0200 Message-ID: <87k327ljnn.fsf@intel.com> References: <1417670936-31032-1-git-send-email-gaurav.k.singh@intel.com> <1417670936-31032-11-git-send-email-gaurav.k.singh@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 2D0F66EB2D for ; Thu, 4 Dec 2014 03:49:22 -0800 (PST) In-Reply-To: <1417670936-31032-11-git-send-email-gaurav.k.singh@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Gaurav K Singh , intel-gfx Cc: Shobhit Kumar List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAwNCBEZWMgMjAxNCwgR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVs LmNvbT4gd3JvdGU6Cj4gV2UgbmVlZCB0byBwcm9ncmFtIGJvdGggcG9ydCByZWdpc3RlcnMgZHVy aW5nIGR1YWwgbGluayBlbmFibGUgcGF0aC4KPgo+IHYyOiBBZGRyZXNzIHJldmlldyBjb21tZW50 cyBieSBKYW5pCj4gICAgIC0gVXNlZCBhIGZvciBsb29wIGluc3RlYWQgb2YgZG8td2hpbGUgbG9v cC4KPgo+IHYzOiBVc2VkIGZvcl9lYWNoX2RzaV9wb3J0IG1hY3JvIGluc3RlYWQgb2YgZm9yIGxv b3AKPgo+IFNpZ25lZC1vZmYtYnk6IEdhdXJhdiBLIFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRl bC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogU2hvYmhpdCBLdW1hciA8c2hvYmhpdC5rdW1hckBpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIHwgIDI1MSAr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwg MTM2IGluc2VydGlvbnMoKyksIDExNSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaS5jCj4gaW5kZXggNWFlNDAxNS4uYWQ4MmQwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RzaS5jCj4gQEAgLTE1Niw4ICsxNTYsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcG9ydF9k aXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICBzdGF0aWMgdm9pZCBpbnRl bF9kc2lfZGV2aWNlX3JlYWR5KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmNvZGVyLT5iYXNlLmRldi0+ ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAtCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZHNp X3BpcGVfdG9fcG9ydChpbnRlbF9jcnRjLT5waXBlKTsKPiArCXN0cnVjdCBpbnRlbF9kc2kgKmlu dGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICsJZW51bSBwb3J0 IHBvcnQ7Cj4gIAl1MzIgdmFsOwo+ICAKPiAgCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gQEAgLTE3 MSwxOCArMTcxLDIxIEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9kZXZpY2VfcmVhZHkoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkvKiBiYW5kZ2FwIHJlc2V0IGlzIG5lZWRlZCBh ZnRlciBldmVyeXRpbWUgd2UgZG8gcG93ZXIgZ2F0ZSAqLwo+ICAJYmFuZF9nYXBfcmVzZXQoZGV2 X3ByaXYpOwo+ICAKPiAtCUk5MTVfV1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocG9ydCksIFVMUFNf U1RBVEVfRU5URVIpOwo+IC0JdXNsZWVwX3JhbmdlKDI1MDAsIDMwMDApOwo+ICsJZm9yX2VhY2hf ZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ICAKPiAtCXZhbCA9IEk5MTVfUkVB RChNSVBJX1BPUlRfQ1RSTChwb3J0KSk7Cj4gLQlJOTE1X1dSSVRFKE1JUElfUE9SVF9DVFJMKHBv cnQpLCB2YWwgfCBMUF9PVVRQVVRfSE9MRCk7Cj4gLQl1c2xlZXBfcmFuZ2UoMTAwMCwgMTUwMCk7 Cj4gKwkJSTkxNV9XUklURShNSVBJX0RFVklDRV9SRUFEWShwb3J0KSwgVUxQU19TVEFURV9FTlRF Uik7Cj4gKwkJdXNsZWVwX3JhbmdlKDI1MDAsIDMwMDApOwo+ICAKPiAtCUk5MTVfV1JJVEUoTUlQ SV9ERVZJQ0VfUkVBRFkocG9ydCksIFVMUFNfU1RBVEVfRVhJVCk7Cj4gLQl1c2xlZXBfcmFuZ2Uo MjUwMCwgMzAwMCk7Cj4gKwkJdmFsID0gSTkxNV9SRUFEKE1JUElfUE9SVF9DVFJMKHBvcnQpKTsK PiArCQlJOTE1X1dSSVRFKE1JUElfUE9SVF9DVFJMKHBvcnQpLCB2YWwgfCBMUF9PVVRQVVRfSE9M RCk7Cj4gKwkJdXNsZWVwX3JhbmdlKDEwMDAsIDE1MDApOwo+ICAKPiAtCUk5MTVfV1JJVEUoTUlQ SV9ERVZJQ0VfUkVBRFkocG9ydCksIERFVklDRV9SRUFEWSk7Cj4gLQl1c2xlZXBfcmFuZ2UoMjUw MCwgMzAwMCk7Cj4gKwkJSTkxNV9XUklURShNSVBJX0RFVklDRV9SRUFEWShwb3J0KSwgVUxQU19T VEFURV9FWElUKTsKPiArCQl1c2xlZXBfcmFuZ2UoMjUwMCwgMzAwMCk7Cj4gKwo+ICsJCUk5MTVf V1JJVEUoTUlQSV9ERVZJQ0VfUkVBRFkocG9ydCksIERFVklDRV9SRUFEWSk7Cj4gKwkJdXNsZWVw X3JhbmdlKDI1MDAsIDMwMDApOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9k c2lfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IEBAIC01NDEsMzIgKzU0 NCw0MyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqaW50ZWxfZW5jb2RlcikKPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190 b19pbnRlbF9kc2koZW5jb2Rlcik7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9Cj4gIAkJJmludGVsX2NydGMtPmNvbmZpZy5hZGp1c3RlZF9tb2RlOwo+IC0JZW51 bSBwb3J0IHBvcnQgPSBpbnRlbF9kc2lfcGlwZV90b19wb3J0KGludGVsX2NydGMtPnBpcGUpOwo+ ICsJZW51bSBwb3J0IHBvcnQ7Cj4gIAl1bnNpZ25lZCBpbnQgYnBwID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLnBpcGVfYnBwOwo+ICAJdTMyIHZhbCwgdG1wOwo+ICsJdTE2IG1vZGVfaGFjdGl2ZTsKPiAg Cj4gIAlEUk1fREVCVUdfS01TKCJwaXBlICVjXG4iLCBwaXBlX25hbWUoaW50ZWxfY3J0Yy0+cGlw ZSkpOwo+ICAKPiAtCS8qIGVzY2FwZSBjbG9jayBkaXZpZGVyLCAyME1Ieiwgc2hhcmVkIGZvciBB IGFuZCBDLiBkZXZpY2UgcmVhZHkgbXVzdCBiZQo+IC0JICogb2ZmIHdoZW4gZG9pbmcgdGhpcyEg dHhjbGtlc2M/ICovCj4gLQl0bXAgPSBJOTE1X1JFQUQoTUlQSV9DVFJMKFBPUlRfQSkpOwo+IC0J dG1wICY9IH5FU0NBUEVfQ0xPQ0tfRElWSURFUl9NQVNLOwo+IC0JSTkxNV9XUklURShNSVBJX0NU UkwoUE9SVF9BKSwgdG1wIHwgRVNDQVBFX0NMT0NLX0RJVklERVJfMSk7Cj4gLQo+IC0JLyogcmVh ZCByZXF1ZXN0IHByaW9yaXR5IGlzIHBlciBwaXBlICovCj4gLQl0bXAgPSBJOTE1X1JFQUQoTUlQ SV9DVFJMKHBvcnQpKTsKPiAtCXRtcCAmPSB+UkVBRF9SRVFVRVNUX1BSSU9SSVRZX01BU0s7Cj4g LQlJOTE1X1dSSVRFKE1JUElfQ1RSTChwb3J0KSwgdG1wIHwgUkVBRF9SRVFVRVNUX1BSSU9SSVRZ X0hJR0gpOwo+ICsJbW9kZV9oYWN0aXZlID0gYWRqdXN0ZWRfbW9kZS0+aGRpc3BsYXk7CgpoYWN0 aXZlIHZzLiBoZGlzcGxheSBpcyBhIGJpdCBjb25mdXNpbmcgcGVyaGFwcz8KCj4gIAo+IC0JLyog WFhYOiB3aHkgaGVyZSwgd2h5IGxpa2UgdGhpcz8gaGFuZGxpbmcgaW4gaXJxIGhhbmRsZXI/ISAq Lwo+IC0JSTkxNV9XUklURShNSVBJX0lOVFJfU1RBVChwb3J0KSwgMHhmZmZmZmZmZik7Cj4gLQlJ OTE1X1dSSVRFKE1JUElfSU5UUl9FTihwb3J0KSwgMHhmZmZmZmZmZik7Cj4gLQo+IC0JSTkxNV9X UklURShNSVBJX0RQSFlfUEFSQU0ocG9ydCksIGludGVsX2RzaS0+ZHBoeV9yZWcpOwo+ICsJaWYg KGludGVsX2RzaS0+ZHVhbF9saW5rKSB7Cj4gKwkJbW9kZV9oYWN0aXZlIC89IDI7Cj4gKwkJaWYg KGludGVsX2RzaS0+ZHVhbF9saW5rID09IERTSV9EVUFMX0xJTktfRlJPTlRfQkFDSykKPiArCQkJ bW9kZV9oYWN0aXZlICs9IGludGVsX2RzaS0+cGl4ZWxfb3ZlcmxhcDsKPiArCX0KPiAgCj4gLQlJ OTE1X1dSSVRFKE1JUElfRFBJX1JFU09MVVRJT04ocG9ydCksCj4gLQkJICAgYWRqdXN0ZWRfbW9k ZS0+dmRpc3BsYXkgPDwgVkVSVElDQUxfQUREUkVTU19TSElGVCB8Cj4gLQkJICAgYWRqdXN0ZWRf bW9kZS0+aGRpc3BsYXkgPDwgSE9SSVpPTlRBTF9BRERSRVNTX1NISUZUKTsKPiArCWZvcl9lYWNo X2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQkvKiBlc2NhcGUgY2xvY2sg ZGl2aWRlciwgMjBNSHosIHNoYXJlZCBmb3IgQSBhbmQgQy4KPiArCQkgKiBkZXZpY2UgcmVhZHkg bXVzdCBiZSBvZmYgd2hlbiBkb2luZyB0aGlzISB0eGNsa2VzYz8gKi8KPiArCQl0bXAgPSBJOTE1 X1JFQUQoTUlQSV9DVFJMKFBPUlRfQSkpOwo+ICsJCXRtcCAmPSB+RVNDQVBFX0NMT0NLX0RJVklE RVJfTUFTSzsKPiArCQlJOTE1X1dSSVRFKE1JUElfQ1RSTChQT1JUX0EpLCB0bXAgfCBFU0NBUEVf Q0xPQ0tfRElWSURFUl8xKTsKCkkgdGhpbmsgdGhpcyBwYXJ0IGNvdWxkIGJlIGxlZnQgb3V0c2lk ZSBvZiB0aGUgbG9vcCwgYnV0IG5vIGJpZyBkZWFsCklNTy4KCj4gKwo+ICsJCS8qIHJlYWQgcmVx dWVzdCBwcmlvcml0eSBpcyBwZXIgcGlwZSAqLwo+ICsJCXRtcCA9IEk5MTVfUkVBRChNSVBJX0NU UkwocG9ydCkpOwo+ICsJCXRtcCAmPSB+UkVBRF9SRVFVRVNUX1BSSU9SSVRZX01BU0s7Cj4gKwkJ STkxNV9XUklURShNSVBJX0NUUkwocG9ydCksIHRtcCB8IFJFQURfUkVRVUVTVF9QUklPUklUWV9I SUdIKTsKPiArCj4gKwkJLyogWFhYOiB3aHkgaGVyZSwgd2h5IGxpa2UgdGhpcz8gaGFuZGxpbmcg aW4gaXJxIGhhbmRsZXI/ISAqLwo+ICsJCUk5MTVfV1JJVEUoTUlQSV9JTlRSX1NUQVQocG9ydCks IDB4ZmZmZmZmZmYpOwo+ICsJCUk5MTVfV1JJVEUoTUlQSV9JTlRSX0VOKHBvcnQpLCAweGZmZmZm ZmZmKTsKPiArCj4gKwkJSTkxNV9XUklURShNSVBJX0RQSFlfUEFSQU0ocG9ydCksIGludGVsX2Rz aS0+ZHBoeV9yZWcpOwo+ICsKPiArCQlJOTE1X1dSSVRFKE1JUElfRFBJX1JFU09MVVRJT04ocG9y dCksCj4gKwkJCWFkanVzdGVkX21vZGUtPnZkaXNwbGF5IDw8IFZFUlRJQ0FMX0FERFJFU1NfU0hJ RlQgfAo+ICsJCQltb2RlX2hhY3RpdmUgPDwgSE9SSVpPTlRBTF9BRERSRVNTX1NISUZUKTsKPiAr CX0KPiAgCj4gIAlzZXRfZHNpX3RpbWluZ3MoZW5jb2RlciwgYWRqdXN0ZWRfbW9kZSk7Cj4gIAo+ IEBAIC01ODAsOTUgKzU5NCwxMDIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ByZXBhcmUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gIAkJLyogWFhYOiBjcm9zcy1jaGVj ayBicHAgdnMuIHBpeGVsIGZvcm1hdD8gKi8KPiAgCQl2YWwgfD0gaW50ZWxfZHNpLT5waXhlbF9m b3JtYXQ7Cj4gIAl9Cj4gLQlJOTE1X1dSSVRFKE1JUElfRFNJX0ZVTkNfUFJHKHBvcnQpLCB2YWwp Owo+ICAKPiAtCS8qIHRpbWVvdXRzIGZvciByZWNvdmVyeS4gb25lIGZyYW1lIElJVUMuIGlmIGNv dW50ZXIgZXhwaXJlcywgRU9UIGFuZAo+IC0JICogc3RvcCBzdGF0ZS4gKi8KPiAtCj4gLQkvKgo+ IC0JICogSW4gYnVyc3QgbW9kZSwgdmFsdWUgZ3JlYXRlciB0aGFuIG9uZSBEUEkgbGluZSBUaW1l IGluIGJ5dGUgY2xvY2sKPiAtCSAqICh0eGJ5dGVjbGtocykgVG8gdGltZW91dCB0aGlzIHRpbWVy IDErIG9mIHRoZSBhYm92ZSBzYWlkIHZhbHVlIGlzCj4gLQkgKiByZWNvbW1lbmRlZC4KPiAtCSAq Cj4gLQkgKiBJbiBub24tYnVyc3QgbW9kZSwgVmFsdWUgZ3JlYXRlciB0aGFuIG9uZSBEUEkgZnJh bWUgdGltZSBpbiBieXRlCj4gLQkgKiBjbG9jayh0eGJ5dGVjbGtocykgVG8gdGltZW91dCB0aGlz IHRpbWVyIDErIG9mIHRoZSBhYm92ZSBzYWlkIHZhbHVlCj4gLQkgKiBpcyByZWNvbW1lbmRlZC4K PiAtCSAqCj4gLQkgKiBJbiBEQkkgb25seSBtb2RlLCB2YWx1ZSBncmVhdGVyIHRoYW4gb25lIERC SSBmcmFtZSB0aW1lIGluIGJ5dGUKPiAtCSAqIGNsb2NrKHR4Ynl0ZWNsa2hzKSBUbyB0aW1lb3V0 IHRoaXMgdGltZXIgMSsgb2YgdGhlIGFib3ZlIHNhaWQgdmFsdWUKPiAtCSAqIGlzIHJlY29tbWVu ZGVkLgo+IC0JICovCj4gLQo+IC0JaWYgKGlzX3ZpZF9tb2RlKGludGVsX2RzaSkgJiYKPiAtCSAg ICBpbnRlbF9kc2ktPnZpZGVvX21vZGVfZm9ybWF0ID09IFZJREVPX01PREVfQlVSU1QpIHsKPiAt CQlJOTE1X1dSSVRFKE1JUElfSFNfVFhfVElNRU9VVChwb3J0KSwKPiAtCQkJICAgdHhieXRlY2xr aHMoYWRqdXN0ZWRfbW9kZS0+aHRvdGFsLCBicHAsCj4gLQkJCQkgICAgICAgaW50ZWxfZHNpLT5s YW5lX2NvdW50LAo+IC0JCQkJICAgICAgIGludGVsX2RzaS0+YnVyc3RfbW9kZV9yYXRpbykgKyAx KTsKPiAtCX0gZWxzZSB7Cj4gLQkJSTkxNV9XUklURShNSVBJX0hTX1RYX1RJTUVPVVQocG9ydCks Cj4gLQkJCSAgIHR4Ynl0ZWNsa2hzKGFkanVzdGVkX21vZGUtPnZ0b3RhbCAqCj4gLQkJCQkgICAg ICAgYWRqdXN0ZWRfbW9kZS0+aHRvdGFsLAo+IC0JCQkJICAgICAgIGJwcCwgaW50ZWxfZHNpLT5s YW5lX2NvdW50LAo+IC0JCQkJICAgICAgIGludGVsX2RzaS0+YnVyc3RfbW9kZV9yYXRpbykgKyAx KTsKPiAtCX0KPiAtCUk5MTVfV1JJVEUoTUlQSV9MUF9SWF9USU1FT1VUKHBvcnQpLCBpbnRlbF9k c2ktPmxwX3J4X3RpbWVvdXQpOwo+IC0JSTkxNV9XUklURShNSVBJX1RVUk5fQVJPVU5EX1RJTUVP VVQocG9ydCksIGludGVsX2RzaS0+dHVybl9hcm5kX3ZhbCk7Cj4gLQlJOTE1X1dSSVRFKE1JUElf REVWSUNFX1JFU0VUX1RJTUVSKHBvcnQpLCBpbnRlbF9kc2ktPnJzdF90aW1lcl92YWwpOwo+IC0K PiAtCS8qIGRwaHkgc3R1ZmYgKi8KPiAtCj4gLQkvKiBpbiB0ZXJtcyBvZiBsb3cgcG93ZXIgY2xv Y2sgKi8KPiAtCUk5MTVfV1JJVEUoTUlQSV9JTklUX0NPVU5UKHBvcnQpLCB0eGNsa2VzYyhpbnRl bF9kc2ktPmVzY2FwZV9jbGtfZGl2LCAxMDApKTsKPiAtCj4gLQl2YWwgPSAwOwo+ICsJdG1wID0g MDsKPiAgCWlmIChpbnRlbF9kc2ktPmVvdHBfcGt0ID09IDApCj4gLQkJdmFsIHw9IEVPVF9ESVNB QkxFOwo+IC0KPiArCQl0bXAgfD0gRU9UX0RJU0FCTEU7Cj4gIAlpZiAoaW50ZWxfZHNpLT5jbG9j a19zdG9wKQo+IC0JCXZhbCB8PSBDTE9DS1NUT1A7Cj4gLQo+IC0JLyogcmVjb3ZlcnkgZGlzYWJs ZXMgKi8KPiAtCUk5MTVfV1JJVEUoTUlQSV9FT1RfRElTQUJMRShwb3J0KSwgdmFsKTsKPiAtCj4g LQkvKiBpbiB0ZXJtcyBvZiBsb3cgcG93ZXIgY2xvY2sgKi8KPiAtCUk5MTVfV1JJVEUoTUlQSV9J TklUX0NPVU5UKHBvcnQpLCBpbnRlbF9kc2ktPmluaXRfY291bnQpOwo+IC0KPiAtCS8qIGluIHRl cm1zIG9mIHR4Ynl0ZWNsa2hzLiBhY3R1YWwgaGlnaCB0byBsb3cgc3dpdGNoICsKPiAtCSAqIE1J UElfU1RPUF9TVEFURV9TVEFMTCAqIE1JUElfTFBfQllURUNMSy4KPiAtCSAqCj4gLQkgKiBYWFg6 IHdyaXRlIE1JUElfU1RPUF9TVEFURV9TVEFMTD8KPiAtCSAqLwo+IC0JSTkxNV9XUklURShNSVBJ X0hJR0hfTE9XX1NXSVRDSF9DT1VOVChwb3J0KSwKPiAtCQkgICBpbnRlbF9kc2ktPmhzX3RvX2xw X2NvdW50KTsKPiArCQl0bXAgfD0gQ0xPQ0tTVE9QOwo+ICAKPiAtCS8qIFhYWDogbG93IHBvd2Vy IGNsb2NrIGVxdWl2YWxlbmNlIGluIHRlcm1zIG9mIGJ5dGUgY2xvY2suIHRoZSBudW1iZXIKPiAt CSAqIG9mIGJ5dGUgY2xvY2tzIG9jY3VwaWVkIGluIG9uZSBsb3cgcG93ZXIgY2xvY2suIGJhc2Vk IG9uIHR4Ynl0ZWNsa2hzCj4gLQkgKiBhbmQgdHhjbGtlc2MuIHR4Y2xrZXNjIHRpbWUgLyB0eGJ5 dGVjbGsgdGltZSAqICgxMDUgKwo+IC0JICogTUlQSV9TVE9QX1NUQVRFX1NUQUxMKSAvIDEwNS4/ Pz8KPiAtCSAqLwo+IC0JSTkxNV9XUklURShNSVBJX0xQX0JZVEVDTEsocG9ydCksIGludGVsX2Rz aS0+bHBfYnl0ZV9jbGspOwo+IC0KPiAtCS8qIHRoZSBidyBlc3NlbnRpYWwgZm9yIHRyYW5zbWl0 dGluZyAxNiBsb25nIHBhY2tldHMgY29udGFpbmluZyAyNTIKPiAtCSAqIGJ5dGVzIG1lYW50IGZv ciBkY3Mgd3JpdGUgbWVtb3J5IGNvbW1hbmQgaXMgcHJvZ3JhbW1lZCBpbiB0aGlzCj4gLQkgKiBy ZWdpc3RlciBpbiB0ZXJtcyBvZiBieXRlIGNsb2Nrcy4gYmFzZWQgb24gZHNpIHRyYW5zZmVyIHJh dGUgYW5kIHRoZQo+IC0JICogbnVtYmVyIG9mIGxhbmVzIGNvbmZpZ3VyZWQgdGhlIHRpbWUgdGFr ZW4gdG8gdHJhbnNtaXQgMTYgbG9uZyBwYWNrZXRzCj4gLQkgKiBpbiBhIGRzaSBzdHJlYW0gdmFy aWVzLiAqLwo+IC0JSTkxNV9XUklURShNSVBJX0RCSV9CV19DVFJMKHBvcnQpLCBpbnRlbF9kc2kt PmJ3X3RpbWVyKTsKPiAtCj4gLQlJOTE1X1dSSVRFKE1JUElfQ0xLX0xBTkVfU1dJVENIX1RJTUVf Q05UKHBvcnQpLAo+IC0JCSAgIGludGVsX2RzaS0+Y2xrX2xwX3RvX2hzX2NvdW50IDw8IExQX0hT X1NTV19DTlRfU0hJRlQgfAo+IC0JCSAgIGludGVsX2RzaS0+Y2xrX2hzX3RvX2xwX2NvdW50IDw8 IEhTX0xQX1BXUl9TV19DTlRfU0hJRlQpOwo+IC0KPiAtCWlmIChpc192aWRfbW9kZShpbnRlbF9k c2kpKQo+IC0JCS8qIFNvbWUgcGFuZWxzIG1pZ2h0IGhhdmUgcmVzb2x1dGlvbiB3aGljaCBpcyBu b3QgYSBtdWx0aXBsZSBvZgo+IC0JCSAqIDY0IGxpa2UgMTM2NiB4IDc2OC4gRW5hYmxlIFJBTkRP TSByZXNvbHV0aW9uIHN1cHBvcnQgZm9yIHN1Y2gKPiAtCQkgKiBwYW5lbHMgYnkgZGVmYXVsdCAq Lwo+IC0JCUk5MTVfV1JJVEUoTUlQSV9WSURFT19NT0RFX0ZPUk1BVChwb3J0KSwKPiAtCQkJICAg aW50ZWxfZHNpLT52aWRlb19mcm10X2NmZ19iaXRzIHwKPiAtCQkJICAgaW50ZWxfZHNpLT52aWRl b19tb2RlX2Zvcm1hdCB8Cj4gLQkJCSAgIElQX1RHX0NPTkZJRyB8Cj4gLQkJCSAgIFJBTkRPTV9E UElfRElTUExBWV9SRVNPTFVUSU9OKTsKPiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVs X2RzaS0+cG9ydHMpIHsKPiArCQlJOTE1X1dSSVRFKE1JUElfRFNJX0ZVTkNfUFJHKHBvcnQpLCB2 YWwpOwo+ICsKPiArCQkvKiB0aW1lb3V0cyBmb3IgcmVjb3ZlcnkuIG9uZSBmcmFtZSBJSVVDLiBp ZiBjb3VudGVyIGV4cGlyZXMsCj4gKwkJICogRU9UIGFuZCBzdG9wIHN0YXRlLiAqLwo+ICsKPiAr CQkvKgo+ICsJCSAqIEluIGJ1cnN0IG1vZGUsIHZhbHVlIGdyZWF0ZXIgdGhhbiBvbmUgRFBJIGxp bmUgVGltZSBpbiBieXRlCj4gKwkJICogY2xvY2sgKHR4Ynl0ZWNsa2hzKSBUbyB0aW1lb3V0IHRo aXMgdGltZXIgMSsgb2YgdGhlIGFib3ZlCj4gKwkJICogc2FpZCB2YWx1ZSBpcyByZWNvbW1lbmRl ZC4KPiArCQkgKgo+ICsJCSAqIEluIG5vbi1idXJzdCBtb2RlLCBWYWx1ZSBncmVhdGVyIHRoYW4g b25lIERQSSBmcmFtZSB0aW1lIGluCj4gKwkJICogYnl0ZSBjbG9jayh0eGJ5dGVjbGtocykgVG8g dGltZW91dCB0aGlzIHRpbWVyIDErIG9mIHRoZSBhYm92ZQo+ICsJCSAqIHNhaWQgdmFsdWUgaXMg cmVjb21tZW5kZWQuCj4gKwkJICoKPiArCQkgKiBJbiBEQkkgb25seSBtb2RlLCB2YWx1ZSBncmVh dGVyIHRoYW4gb25lIERCSSBmcmFtZSB0aW1lIGluCj4gKwkJICogYnl0ZSBjbG9jayh0eGJ5dGVj bGtocykgVG8gdGltZW91dCB0aGlzIHRpbWVyIDErIG9mIHRoZSBhYm92ZQo+ICsJCSAqIHNhaWQg dmFsdWUgaXMgcmVjb21tZW5kZWQuCj4gKwkJICovCj4gKwo+ICsJCWlmIChpc192aWRfbW9kZShp bnRlbF9kc2kpICYmCj4gKwkJCWludGVsX2RzaS0+dmlkZW9fbW9kZV9mb3JtYXQgPT0gVklERU9f TU9ERV9CVVJTVCkgewo+ICsJCQlJOTE1X1dSSVRFKE1JUElfSFNfVFhfVElNRU9VVChwb3J0KSwK PiArCQkJCXR4Ynl0ZWNsa2hzKGFkanVzdGVkX21vZGUtPmh0b3RhbCwgYnBwLAo+ICsJCQkJCWlu dGVsX2RzaS0+bGFuZV9jb3VudCwKPiArCQkJCQlpbnRlbF9kc2ktPmJ1cnN0X21vZGVfcmF0aW8p ICsgMSk7Cj4gKwkJfSBlbHNlIHsKPiArCQkJSTkxNV9XUklURShNSVBJX0hTX1RYX1RJTUVPVVQo cG9ydCksCj4gKwkJCQl0eGJ5dGVjbGtocyhhZGp1c3RlZF9tb2RlLT52dG90YWwgKgo+ICsJCQkJ CWFkanVzdGVkX21vZGUtPmh0b3RhbCwKPiArCQkJCQlicHAsIGludGVsX2RzaS0+bGFuZV9jb3Vu dCwKPiArCQkJCQlpbnRlbF9kc2ktPmJ1cnN0X21vZGVfcmF0aW8pICsgMSk7Cj4gKwkJfQo+ICsJ CUk5MTVfV1JJVEUoTUlQSV9MUF9SWF9USU1FT1VUKHBvcnQpLCBpbnRlbF9kc2ktPmxwX3J4X3Rp bWVvdXQpOwo+ICsJCUk5MTVfV1JJVEUoTUlQSV9UVVJOX0FST1VORF9USU1FT1VUKHBvcnQpLAo+ ICsJCQkJCQlpbnRlbF9kc2ktPnR1cm5fYXJuZF92YWwpOwo+ICsJCUk5MTVfV1JJVEUoTUlQSV9E RVZJQ0VfUkVTRVRfVElNRVIocG9ydCksCj4gKwkJCQkJCWludGVsX2RzaS0+cnN0X3RpbWVyX3Zh bCk7Cj4gKwo+ICsJCS8qIGRwaHkgc3R1ZmYgKi8KPiArCj4gKwkJLyogaW4gdGVybXMgb2YgbG93 IHBvd2VyIGNsb2NrICovCj4gKwkJSTkxNV9XUklURShNSVBJX0lOSVRfQ09VTlQocG9ydCksCj4g KwkJCQl0eGNsa2VzYyhpbnRlbF9kc2ktPmVzY2FwZV9jbGtfZGl2LCAxMDApKTsKPiArCj4gKwo+ ICsJCS8qIHJlY292ZXJ5IGRpc2FibGVzICovCj4gKwkJSTkxNV9XUklURShNSVBJX0VPVF9ESVNB QkxFKHBvcnQpLCB2YWwpOwo+ICsKPiArCQkvKiBpbiB0ZXJtcyBvZiBsb3cgcG93ZXIgY2xvY2sg Ki8KPiArCQlJOTE1X1dSSVRFKE1JUElfSU5JVF9DT1VOVChwb3J0KSwgaW50ZWxfZHNpLT5pbml0 X2NvdW50KTsKClNpZGUgbm90ZSBub3QgcmVsYXRlZCB0byB0aGlzIHBhdGNoOiBNSVBJX0lOSVRf Q09VTlQgZ2V0cyB3cml0dGVuIHR3aWNlLApwcm9iYWJseSBub3QgaW50ZW50aW9uYWxseS4gRm9s bG93LXVwIGZpeCBmb3IgdGhlIGZ1dHVyZS4KCgpSZXZpZXdlZC1ieTogSmFuaSBOaWt1bGEgPGph bmkubmlrdWxhQGludGVsLmNvbT4KCgo+ICsKPiArCQkvKiBpbiB0ZXJtcyBvZiB0eGJ5dGVjbGto cy4gYWN0dWFsIGhpZ2ggdG8gbG93IHN3aXRjaCArCj4gKwkJICogTUlQSV9TVE9QX1NUQVRFX1NU QUxMICogTUlQSV9MUF9CWVRFQ0xLLgo+ICsJCSAqCj4gKwkJICogWFhYOiB3cml0ZSBNSVBJX1NU T1BfU1RBVEVfU1RBTEw/Cj4gKwkJICovCj4gKwkJSTkxNV9XUklURShNSVBJX0hJR0hfTE9XX1NX SVRDSF9DT1VOVChwb3J0KSwKPiArCQkJCQkJaW50ZWxfZHNpLT5oc190b19scF9jb3VudCk7Cj4g Kwo+ICsJCS8qIFhYWDogbG93IHBvd2VyIGNsb2NrIGVxdWl2YWxlbmNlIGluIHRlcm1zIG9mIGJ5 dGUgY2xvY2suCj4gKwkJICogdGhlIG51bWJlciBvZiBieXRlIGNsb2NrcyBvY2N1cGllZCBpbiBv bmUgbG93IHBvd2VyIGNsb2NrLgo+ICsJCSAqIGJhc2VkIG9uIHR4Ynl0ZWNsa2hzIGFuZCB0eGNs a2VzYy4KPiArCQkgKiB0eGNsa2VzYyB0aW1lIC8gdHhieXRlY2xrIHRpbWUgKiAoMTA1ICsgTUlQ SV9TVE9QX1NUQVRFX1NUQUxMCj4gKwkJICogKSAvIDEwNS4/Pz8KPiArCQkgKi8KPiArCQlJOTE1 X1dSSVRFKE1JUElfTFBfQllURUNMSyhwb3J0KSwgaW50ZWxfZHNpLT5scF9ieXRlX2Nsayk7Cj4g Kwo+ICsJCS8qIHRoZSBidyBlc3NlbnRpYWwgZm9yIHRyYW5zbWl0dGluZyAxNiBsb25nIHBhY2tl dHMgY29udGFpbmluZwo+ICsJCSAqIDI1MiBieXRlcyBtZWFudCBmb3IgZGNzIHdyaXRlIG1lbW9y eSBjb21tYW5kIGlzIHByb2dyYW1tZWQgaW4KPiArCQkgKiB0aGlzIHJlZ2lzdGVyIGluIHRlcm1z IG9mIGJ5dGUgY2xvY2tzLiBiYXNlZCBvbiBkc2kgdHJhbnNmZXIKPiArCQkgKiByYXRlIGFuZCB0 aGUgbnVtYmVyIG9mIGxhbmVzIGNvbmZpZ3VyZWQgdGhlIHRpbWUgdGFrZW4gdG8KPiArCQkgKiB0 cmFuc21pdCAxNiBsb25nIHBhY2tldHMgaW4gYSBkc2kgc3RyZWFtIHZhcmllcy4gKi8KPiArCQlJ OTE1X1dSSVRFKE1JUElfREJJX0JXX0NUUkwocG9ydCksIGludGVsX2RzaS0+YndfdGltZXIpOwo+ ICsKPiArCQlJOTE1X1dSSVRFKE1JUElfQ0xLX0xBTkVfU1dJVENIX1RJTUVfQ05UKHBvcnQpLAo+ ICsJCWludGVsX2RzaS0+Y2xrX2xwX3RvX2hzX2NvdW50IDw8IExQX0hTX1NTV19DTlRfU0hJRlQg fAo+ICsJCWludGVsX2RzaS0+Y2xrX2hzX3RvX2xwX2NvdW50IDw8IEhTX0xQX1BXUl9TV19DTlRf U0hJRlQpOwo+ICsKPiArCQlpZiAoaXNfdmlkX21vZGUoaW50ZWxfZHNpKSkKPiArCQkJLyogU29t ZSBwYW5lbHMgbWlnaHQgaGF2ZSByZXNvbHV0aW9uIHdoaWNoIGlzIG5vdCBhCj4gKwkJCSAqIG11 bHRpcGxlIG9mIDY0IGxpa2UgMTM2NiB4IDc2OC4gRW5hYmxlIFJBTkRPTQo+ICsJCQkgKiByZXNv bHV0aW9uIHN1cHBvcnQgZm9yIHN1Y2ggcGFuZWxzIGJ5IGRlZmF1bHQgKi8KPiArCQkJSTkxNV9X UklURShNSVBJX1ZJREVPX01PREVfRk9STUFUKHBvcnQpLAo+ICsJCQkJaW50ZWxfZHNpLT52aWRl b19mcm10X2NmZ19iaXRzIHwKPiArCQkJCWludGVsX2RzaS0+dmlkZW9fbW9kZV9mb3JtYXQgfAo+ ICsJCQkJSVBfVEdfQ09ORklHIHwKPiArCQkJCVJBTkRPTV9EUElfRElTUExBWV9SRVNPTFVUSU9O KTsKPiArCX0KPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZHNpX3ByZV9wbGxfZW5hYmxl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IC0tIAo+IDEuNy45LjUKPgo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBO aWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==