From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [BXT MIPI PATCH v2 11/13] drm/i915/bxt: Modify BXT BLC according to VBT changes Date: Mon, 17 Aug 2015 15:02:58 +0300 Message-ID: <87lhdanmvh.fsf@intel.com> References: <1437899840-32153-1-git-send-email-uma.shankar@intel.com> <1437899840-32153-12-git-send-email-uma.shankar@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 EFAEE7210C for ; Mon, 17 Aug 2015 05:00:00 -0700 (PDT) In-Reply-To: <1437899840-32153-12-git-send-email-uma.shankar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Uma Shankar , intel-gfx@lists.freedesktop.org Cc: shobhit.kumar@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gU3VuLCAyNiBKdWwgMjAxNSwgVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4g d3JvdGU6Cj4gRnJvbTogU3VuaWwgS2FtYXRoIDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPgo+Cj4g TGF0ZXN0IFZCVCBtZW50aW9ucyB3aGljaCBzZXQgb2YgcmVnaXN0ZXJzIHdpbGwgYmUgdXNlZCBm b3IgQkxDLAo+IGFzIGNvbnRyb2xsZXIgbnVtYmVyIGZpZWxkLiBNYWtpbmcgdXNlIG9mIHRoaXMg ZmllbGQgaW4gQlhUCj4gQkxDIGltcGxlbWVudGF0aW9uLiBBbHNvLCB0aGUgcmVnaXN0ZXJzIGFy ZSB1c2VkIGluIGNhc2UgY29udHJvbAo+IHBpbiBpbmRpY2F0ZXMgZGlzcGxheSBEREkuIEFkZGlu ZyBhIGNoZWNrIGZvciB0aGlzLgo+IEFjY29yZGluZyB0byBCc3BlYywgQkxDX1BXTV8qXzIgdXNl cyB0aGUgZGlzcGxheSB1dGlsaXR5IHBpbiBmb3Igb3V0cHV0Lgo+IFRvIHVzZSBiYWNrbGlnaHQg MiwgZW5hYmxlIHRoZSB1dGlsaXR5IHBpbiB3aXRoIG1vZGUgPSBQV00KPiAgICB2MjogSmFuaSdz IHJldmlldyBjb21tZW50cwo+ICAgIGFkZHJlc3NlZAo+ICAgICAgICAtIEFkZCBhIHByZWZpeCBf IHRvIEJYVCBCTEMgcmVnaXN0ZXJzIGRlZmluaXRpb25zLgo+ICAgICAgICAtIEFkZCAiYnh0IG9u bHkiIGNvbW1lbnQgZm9yIHU4IGNvbnRyb2xsZXIKPiAgICAgICAgLSBSZW1vdmUgY29udHJvbF9w aW4gY2hlY2sgZm9yIERESSBjb250cm9sbGVyCj4gICAgICAgIC0gQ2hlY2sgZm9yIHZhbGlkIGNv bnRyb2xsZXIgdmFsdWVzCj4gICAgICAgIC0gU2V0IHBpcGUgYml0cyBpbiBVVElMX1BJTl9DVEwK PiAgICAgICAgLSBFbmFibGUvRGlzYWJsZSBVVElMX1BJTl9DVEwgaW4gZW5hYmxlL2Rpc2FibGVf YmFja2xpZ2h0KCkKPiAgICAgICAgLSBJZiBCTEMgMiBpcyB1c2VkLCByZWFkIGFjdGl2ZV9sb3df cHdtIGZyb20gVVRJTF9QSU4gcG9sYXJpdHkKPiAgICBTYXRoZWVzaCdzIHJldmlldyBjb21tZW50 IGFkZHJlc3NlZAo+ICAgICAgICAtIElmIFVUSUwgUElOIGlzIGFscmVhZHkgZW5hYmxlZCwgQklP UyB3b3VsZCBoYXZlIHByb2dyYW1tZWQgaXQuIE5vCj4gICAgICAgIG5lZWQgdG8gZGlzYWJsZSBh bmQgZW5hYmxlIGFnYWluLgo+ICAgIHYzOiBKYW5pJ3MgcmV2aWV3IGNvbW1lbnRzCj4gICAgICAg IC0gYWRkIFVUSUxfUElOX1BJUEVfTUFTSyBhbmQgVVRJTF9QSU5fTU9ERV9NQVNLCj4gICAgICAg IC0gRGlzYWJsZSBVVElMX1BJTiBpZiBjb250cm9sbGVyIDEgaXMgdXNlZAo+ICAgICAgICAtIE1h c2sgb3V0IFVUSUxfUElOX1BJUEVfTUFTSyBhbmQgVVRJTF9QSU5fTU9ERV9NQVNLIGJlZm9yZSBl bmFibGluZwo+ICAgICAgICBVVElMX1BJTgo+ICAgICAgICAtIGNoZWNrIHZhbGlkIGNvbnRyb2xs ZXIgdmFsdWUgaW4gaW50ZWxfYmlvcy5jCj4gICAgICAgIC0gYWRkIGJhY2tsaWdodC51dGlsX3Bp bl9hY3RpdmVfbG93Cj4gICAgICAgIC0gZGlzYWJsZSB1dGlsIHBpbiBiZWZvcmUgZW5hYmxpbmcK PiAgICB2NDogQ2hhbmdlIGZvciBCWFQtUE8gYnJhbmNoOgo+ICAgIFN0dWJiZWQgdW53YW50ZWQg ZGVmaW5pdGlvbiB3aGljaCB3YXMgZXhpc3RpbmcgYmVmb3JlCj4gICAgYmVjYXVzZSBvZiBEQzYg cGF0Y2guCj4gICAgVVRJTF9QSU5fTU9ERV9QV00gICAgICgweDFiIDw8IDI0KQo+Cj4gdjI6IEZp eGVkIEphbmkncyByZXZpZXcgY29tbWVudC4KPgo+IFNpZ25lZC1vZmYtYnk6IFZhbmRhbmEgS2Fu bmFuIDx2YW5kYW5hLmthbm5hbkBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogU3VuaWwgS2Ft YXRoIDxzdW5pbC5rYW1hdGhAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2Fy IDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICAgfCAgIDI3ICsrKysrKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgfCAgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwu YyB8ICAgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gIDMgZmlsZXMg Y2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gaW5kZXggMzEwYWZkNC4uMGIxZDdmZiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+IEBAIC0zNTUzLDE3ICszNTUzLDI5IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJf d2VsbHMgewo+ICAjZGVmaW5lIFVUSUxfUElOX0NUTAkJMHg0ODQwMAo+ICAjZGVmaW5lICAgVVRJ TF9QSU5fRU5BQkxFCSgxIDw8IDMxKQo+ICAKPiArI2RlZmluZSAgIFVUSUxfUElOX1BJUEUoeCkg ICAgICgoeCkgPDwgMjkpCj4gKyNkZWZpbmUgICBVVElMX1BJTl9QSVBFX01BU0sgICAoMyA8PCAy OSkKPiArI2RlZmluZSAgIFVUSUxfUElOX01PREVfUFdNICAgICgxIDw8IDI0KQo+ICsjZGVmaW5l ICAgVVRJTF9QSU5fTU9ERV9NQVNLICAgKDB4ZiA8PCAyNCkKPiArI2RlZmluZSAgIFVUSUxfUElO X1BPTEFSSVRZICAgICgxIDw8IDIyKQo+ICsKPiAgLyogQlhUIGJhY2tsaWdodCByZWdpc3RlciBk ZWZpbml0aW9uLiAqLwo+IC0jZGVmaW5lIEJYVF9CTENfUFdNX0NUTDEJCQkweEM4MjUwCj4gKyNk ZWZpbmUgX0JYVF9CTENfUFdNX0NUTDEJCQkweEM4MjUwCj4gICNkZWZpbmUgICBCWFRfQkxDX1BX TV9FTkFCTEUJCQkoMSA8PCAzMSkKPiAgI2RlZmluZSAgIEJYVF9CTENfUFdNX1BPTEFSSVRZCQkJ KDEgPDwgMjkpCj4gLSNkZWZpbmUgQlhUX0JMQ19QV01fRlJFUTEJCQkweEM4MjU0Cj4gLSNkZWZp bmUgQlhUX0JMQ19QV01fRFVUWTEJCQkweEM4MjU4Cj4gKyNkZWZpbmUgX0JYVF9CTENfUFdNX0ZS RVExCQkJMHhDODI1NAo+ICsjZGVmaW5lIF9CWFRfQkxDX1BXTV9EVVRZMQkJCTB4QzgyNTgKPiAg Cj4gLSNkZWZpbmUgQlhUX0JMQ19QV01fQ1RMMgkJCTB4QzgzNTAKPiAtI2RlZmluZSBCWFRfQkxD X1BXTV9GUkVRMgkJCTB4QzgzNTQKPiAtI2RlZmluZSBCWFRfQkxDX1BXTV9EVVRZMgkJCTB4Qzgz NTgKPiArI2RlZmluZSBfQlhUX0JMQ19QV01fQ1RMMgkJCTB4QzgzNTAKPiArI2RlZmluZSBfQlhU X0JMQ19QV01fRlJFUTIJCQkweEM4MzU0Cj4gKyNkZWZpbmUgX0JYVF9CTENfUFdNX0RVVFkyCQkJ MHhDODM1OAo+ICAKPiArI2RlZmluZSBCWFRfQkxDX1BXTV9DVEwoY29udHJvbGxlcikgICAgX1BJ UEUoY29udHJvbGxlciwgXAo+ICsJCQkJCV9CWFRfQkxDX1BXTV9DVEwxLCBfQlhUX0JMQ19QV01f Q1RMMikKPiArI2RlZmluZSBCWFRfQkxDX1BXTV9GUkVRKGNvbnRyb2xsZXIpICAgX1BJUEUoY29u dHJvbGxlciwgXAo+ICsJCQkJCV9CWFRfQkxDX1BXTV9GUkVRMSwgX0JYVF9CTENfUFdNX0ZSRVEy KQo+ICsjZGVmaW5lIEJYVF9CTENfUFdNX0RVVFkoY29udHJvbGxlcikgICBfUElQRShjb250cm9s bGVyLCBcCj4gKwkJCQkJX0JYVF9CTENfUFdNX0RVVFkxLCBfQlhUX0JMQ19QV01fRFVUWTIpCj4g IAo+ICAjZGVmaW5lIFBDSF9HVENfQ1RMCQkweGU3MDAwCj4gICNkZWZpbmUgICBQQ0hfR1RDX0VO QUJMRQkoMSA8PCAzMSkKPiBAQCAtNzI4MCw2ICs3MjkyLDkgQEAgZW51bSBza2xfZGlzcF9wb3dl cl93ZWxscyB7Cj4gICNkZWZpbmUgIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfNAkoMzw8MjIpCj4g ICNkZWZpbmUgIEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRQkoMTw8MTYpCj4gIAo+ICsv KiBNYXggQ0RDTEsgZnJlcSBmb3IgQlhUIGluIEhaICovCj4gKyNkZWZpbmUgQlhUX0NEQ0xLX01B WAkJCTYyNDAwMDAwMAo+ICsKPiAgLyogTENQTExfQ1RMICovCj4gICNkZWZpbmUgTENQTEwxX0NU TAkJMHg0NjAxMAo+ICAjZGVmaW5lIExDUExMMl9DVEwJCTB4NDYwMTQKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IGluZGV4IDNiMDBkMDAuLjgxMTFhMjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IEBAIC0xNzcsNyArMTc3LDkgQEAgc3RydWN0IGludGVsX3BhbmVsIHsKPiAg CQlib29sIGVuYWJsZWQ7Cj4gIAkJYm9vbCBjb21iaW5hdGlvbl9tb2RlOwkvKiBnZW4gMi80IG9u bHkgKi8KPiAgCQlib29sIGFjdGl2ZV9sb3dfcHdtOwo+ICsJCWJvb2wgdXRpbF9waW5fYWN0aXZl X2xvdzsJLyogYnh0KyAqLwo+ICAJCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpkZXZpY2U7Cj4g KwkJdTggY29udHJvbGxlcjsJCS8qIGJ4dCsgb25seSAqLwo+ICAJfSBiYWNrbGlnaHQ7Cj4gIAo+ ICAJdm9pZCAoKmJhY2tsaWdodF9wb3dlcikoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqLCBib29s IGVuYWJsZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggNTVhYWQyMy4u MmE5N2U1YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC01MzksOSAr NTM5LDEwIEBAIHN0YXRpYyB1MzIgdmx2X2dldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+ICBzdGF0aWMgdTMyIGJ4dF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0g JmNvbm5lY3Rvci0+cGFuZWw7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ICAKPiAtCXJldHVybiBJOTE1X1JFQUQoQlhUX0JMQ19QV01f RFVUWTEpOwo+ICsJcmV0dXJuIEk5MTVfUkVBRChCWFRfQkxDX1BXTV9EVVRZKHBhbmVsLT5iYWNr bGlnaHQuY29udHJvbGxlcikpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdTMyIGludGVsX3BhbmVsX2dl dF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IEBAIC02Mjgs OCArNjI5LDkgQEAgc3RhdGljIHZvaWQgYnh0X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFu ZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAgCj4gLQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0RV VFkxLCBsZXZlbCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0RVVFkocGFuZWwtPmJhY2ts aWdodC5jb250cm9sbGVyKSwgbGV2ZWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC03 NjEsMTIgKzc2MywyMCBAQCBzdGF0aWMgdm9pZCBieHRfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1MzIgdG1wOwo+ICsJc3RydWN0IGludGVs X3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICsJdTMyIHRtcCwgdmFsOwo+ICAK PiAgCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiAg Cj4gLQl0bXAgPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fQ1RMMSk7Cj4gLQlJOTE1X1dSSVRFKEJY VF9CTENfUFdNX0NUTDEsIHRtcCAmIH5CWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICsJdG1wID0gSTkx NV9SRUFEKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsKPiAr CUk5MTVfV1JJVEUoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciks Cj4gKwkJCXRtcCAmIH5CWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICsKPiArCWlmIChwYW5lbC0+YmFj a2xpZ2h0LmNvbnRyb2xsZXIgPT0gMSkgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChVVElMX1BJTl9D VEwpOwo+ICsJCXZhbCAmPSB+VVRJTF9QSU5fRU5BQkxFOwo+ICsJCUk5MTVfV1JJVEUoVVRJTF9Q SU5fQ1RMLCB2YWwpOwo+ICsJfQo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX3BhbmVsX2Rpc2FibGVf YmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiBAQCAtOTg4LDE2 ICs5OTgsMzkgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5l Y3Rvci0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0 b3ItPnBhbmVsOwo+IC0JdTMyIHB3bV9jdGw7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dl dF9waXBlX2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwl1MzIgcHdtX2N0bCwgdmFsOwo+ ICsKPiArCS8qIFRvIHVzZSAybmQgc2V0IG9mIGJhY2tsaWdodCByZWdpc3RlcnMsIHV0aWxpdHkg cGluIGhhcyB0byBiZQo+ICsJICogZW5hYmxlZCB3aXRoIFBXTSBtb2RlLgo+ICsJICogVGhlIGZp ZWxkIHNob3VsZCBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgdXRpbGl0eSBwaW4gaXMgZGlzYWJs ZWQKPiArCSAqLwo+ICsJaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciA9PSAxKSB7Cj4g KwkJdmFsID0gSTkxNV9SRUFEKFVUSUxfUElOX0NUTCk7Cj4gKwkJaWYgKHZhbCAmIFVUSUxfUElO X0VOQUJMRSkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJ1dGlsIHBpbiBhbHJlYWR5IGVuYWJsZWRc biIpOwo+ICsJCQl2YWwgJj0gflVUSUxfUElOX0VOQUJMRTsKPiArCQkJSTkxNV9XUklURShVVElM X1BJTl9DVEwsIHZhbCk7Cj4gKwkJfQo+ICsJCS8qIG1hc2sgb3V0IFVUSUxfUElOX1BJUEUgYW5k IFVUSUxfUElOX01PREUgKi8KPiArCQl2YWwgJj0gfihVVElMX1BJTl9QSVBFX01BU0sgfCBVVElM X1BJTl9NT0RFX01BU0spOwo+ICsJCUk5MTVfV1JJVEUoVVRJTF9QSU5fQ1RMLCB2YWwpOwo+ICsJ CWlmIChwYW5lbC0+YmFja2xpZ2h0LnV0aWxfcGluX2FjdGl2ZV9sb3cpCj4gKwkJCXZhbCB8PSBV VElMX1BJTl9QT0xBUklUWTsKPiArCQlJOTE1X1dSSVRFKFVUSUxfUElOX0NUTCwgdmFsIHwgVVRJ TF9QSU5fUElQRShwaXBlKSB8Cj4gKwkJCQlVVElMX1BJTl9NT0RFX1BXTSB8IFVUSUxfUElOX0VO QUJMRSk7Cj4gKwl9Cj4gIAo+IC0JcHdtX2N0bCA9IEk5MTVfUkVBRChCWFRfQkxDX1BXTV9DVEwx KTsKPiArCXB3bV9jdGwgPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGln aHQuY29udHJvbGxlcikpOwo+ICAJaWYgKHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9FTkFCTEUpIHsK PiAgCQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQgYWxyZWFkeSBlbmFibGVkXG4iKTsKPiAgCQlw d21fY3RsICY9IH5CWFRfQkxDX1BXTV9FTkFCTEU7Cj4gLQkJSTkxNV9XUklURShCWFRfQkxDX1BX TV9DVEwxLCBwd21fY3RsKTsKPiArCQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+ YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+ICsJCQkJcHdtX2N0bCk7Cj4gIAl9Cj4gIAo+IC0JSTkx NV9XUklURShCWFRfQkxDX1BXTV9GUkVRMSwgcGFuZWwtPmJhY2tsaWdodC5tYXgpOwo+ICsJSTkx NV9XUklURShCWFRfQkxDX1BXTV9GUkVRKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4g KwkJCXBhbmVsLT5iYWNrbGlnaHQubWF4KTsKPiAgCj4gIAlpbnRlbF9wYW5lbF9hY3R1YWxseV9z ZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gIAo+IEBA IC0xMDA1LDkgKzEwMzgsMTAgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQu YWN0aXZlX2xvd19wd20pCj4gIAkJcHdtX2N0bCB8PSBCWFRfQkxDX1BXTV9QT0xBUklUWTsKPiAg Cj4gLQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0NUTDEsIHB3bV9jdGwpOwo+IC0JUE9TVElOR19S RUFEKEJYVF9CTENfUFdNX0NUTDEpOwo+IC0JSTkxNV9XUklURShCWFRfQkxDX1BXTV9DVEwxLCBw d21fY3RsIHwgQlhUX0JMQ19QV01fRU5BQkxFKTsKPiArCUk5MTVfV1JJVEUoQlhUX0JMQ19QV01f Q1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksIHB3bV9jdGwpOwo+ICsJUE9TVElOR19S RUFEKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsKPiArCUk5 MTVfV1JJVEUoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4g KwkJCXB3bV9jdGwgfCBCWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVs X3BhbmVsX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+IEBAIC0xMzcwLDEyICsxNDA0LDM4IEBAIGJ4dF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgdW51c2VkKQo+ICAJc3RydWN0IGlu dGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICAJdTMyIHB3bV9jdGwsIHZh bDsKPiAgCj4gLQlwd21fY3RsID0gSTkxNV9SRUFEKEJYVF9CTENfUFdNX0NUTDEpOwo+IC0JcGFu ZWwtPmJhY2tsaWdodC5hY3RpdmVfbG93X3B3bSA9IHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9QT0xB UklUWTsKPiArCS8qIEZvciBCWFQgaGFyZCBjb2RpbmcgdGhlIEJhY2tsaWdodCBjb250cm9sbGVy IHRvIDAuCj4gKwkgKiBUT0RPIDogUmVhZCB0aGUgY29udHJvbGxlciB2YWx1ZSBmcm9tIFZCVCBh bmQgZ2VuZXJhbGl6ZQo+ICsJICovCj4gKwlwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIgPSAw Owo+ICAKPiAtCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gSTkxNV9SRUFEKEJYVF9CTENfUFdNX0ZS RVExKTsKPiAtCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gLQkJcmV0dXJuIC1FTk9ERVY7 Cj4gKwlwd21fY3RsID0gSTkxNV9SRUFEKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0 LmNvbnRyb2xsZXIpKTsKPiArCj4gKwkvKiBLZWVwaW5nIHRoZSBjaGVjayBpZiBjb250cm9sbGVy IDEgaXMgdG8gYmUgcHJvZ3JhbW1lZC4KPiArCSAqIFRoaXMgd2lsbCBjb21lIGludG8gYWZmZWN0 IG9uY2UgdGhlIFZCVCBwYXJzaW5nCj4gKwkgKiBpcyBmaXhlZCBmb3IgY29udHJvbGxlciBzZWxl Y3Rpb24sIGFuZCBjb250cm9sbGVyIDEgaXMgdXNlZAo+ICsJICogZm9yIGEgcHJ0aWN1bGFyIGRp c3BsYXkgY29uZmlndXJhdGlvbi4KPiArCSAqLwo+ICsJaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29u dHJvbGxlciA9PSAxKSB7Cj4gKwkJdmFsID0gSTkxNV9SRUFEKFVUSUxfUElOX0NUTCk7Cj4gKwkJ cGFuZWwtPmJhY2tsaWdodC51dGlsX3Bpbl9hY3RpdmVfbG93ID0KPiArCQkJCQl2YWwgJiBVVElM X1BJTl9QT0xBUklUWTsKPiArCX0KPiArCj4gKwlwYW5lbC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3df cHdtID0gcHdtX2N0bCAmIEJYVF9CTENfUFdNX1BPTEFSSVRZOwo+ICsJcGFuZWwtPmJhY2tsaWdo dC5tYXggPSBJOTE1X1JFQUQoCj4gKwkJCUJYVF9CTENfUFdNX0ZSRVEocGFuZWwtPmJhY2tsaWdo dC5jb250cm9sbGVyKSk7Cj4gKwo+ICsJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkgewo+ICsJ CURSTV9ERUJVR19LTVMoIlBXTSBmcmVxIG5vdCBwcm9ncmFtbWVkIGJ5IEJJT1NcbiIpOwo+ICsJ CURSTV9ERUJVR19LTVMoIlByb2dyYW1taW5nIFBXTSBmcmVxXG4iKTsKPiArCj4gKwkJLyogTWF4 IEJhY2tsaWdodCA9IE1heCBDRCBDbG9jayAvIHB3bSBmcmVxKSAqLwo+ICsJCXBhbmVsLT5iYWNr bGlnaHQubWF4ID0gKEJYVF9DRENMS19NQVggLwo+ICsJCQkJZGV2X3ByaXYtPnZidC5iYWNrbGln aHQucHdtX2ZyZXFfaHopOwo+ICsJCUk5MTVfV1JJVEUoQlhUX0JMQ19QV01fRlJFUShwYW5lbC0+ YmFja2xpZ2h0LmNvbnRyb2xsZXIpLAo+ICsJCQkJcGFuZWwtPmJhY2tsaWdodC5tYXgpOwo+ICsJ fQoKSGFuZGxpbmcgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkgc2hvdWxkIHByb2JhYmx5IGJlIGEg c2VwYXJhdGUgcGF0Y2guCgo+ICAKPiAgCXZhbCA9IGJ4dF9nZXRfYmFja2xpZ2h0KGNvbm5lY3Rv cik7Cj4gIAlwYW5lbC0+YmFja2xpZ2h0LmxldmVsID0gaW50ZWxfcGFuZWxfY29tcHV0ZV9icmln aHRuZXNzKGNvbm5lY3RvciwgdmFsKTsKPiAtLSAKPiAxLjcuOS41Cj4KCi0tIApKYW5pIE5pa3Vs YSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK