From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 11/12] drm/i915/bxt: Modify BXT BLC according to VBT changes Date: Mon, 25 May 2015 13:03:16 +0300 Message-ID: <874mn1j7ob.fsf@intel.com> References: <1432310765-2218-1-git-send-email-uma.shankar@intel.com> <1432310765-2218-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 438FA6E3FB for ; Mon, 25 May 2015 03:01:05 -0700 (PDT) In-Reply-To: <1432310765-2218-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 T24gRnJpLCAyMiBNYXkgMjAxNSwgVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4g 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+Cj4gU2lnbmVk LW9mZi1ieTogVmFuZGFuYSBLYW5uYW4gPHZhbmRhbmEua2FubmFuQGludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBTdW5pbCBLYW1hdGggPHN1bmlsLmthbWF0aEBpbnRlbC5jb20+Cj4gU2lnbmVk LW9mZi1ieTogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAgMjggKysrKysrKy0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgIHwgICAgMiArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMgfCAgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGY5NmYwNDkuLjVlMzk1OGYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtMzUwOSwxNyArMzUwOSwyOSBAQCBl bnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSBVVElMX1BJTl9DVEwJCTB4NDg0 MDAKPiAgI2RlZmluZSAgIFVUSUxfUElOX0VOQUJMRQkoMSA8PCAzMSkKPiAgCj4gKyNkZWZpbmUg ICBVVElMX1BJTl9QSVBFKHgpICAgICAoKHgpIDw8IDI5KQo+ICsjZGVmaW5lICAgVVRJTF9QSU5f UElQRV9NQVNLICAgKDMgPDwgMjkpCj4gKyNkZWZpbmUgICBVVElMX1BJTl9NT0RFX1BXTSAgICAo MSA8PCAyNCkKPiArI2RlZmluZSAgIFVUSUxfUElOX01PREVfTUFTSyAgICgweGYgPDwgMjQpCj4g KyNkZWZpbmUgICBVVElMX1BJTl9QT0xBUklUWSAgICAoMSA8PCAyMikKPiArCj4gIC8qIEJYVCBi YWNrbGlnaHQgcmVnaXN0ZXIgZGVmaW5pdGlvbi4gKi8KPiAtI2RlZmluZSBCWFRfQkxDX1BXTV9D VEwxCQkJMHhDODI1MAo+ICsjZGVmaW5lIF9CWFRfQkxDX1BXTV9DVEwxCQkJMHhDODI1MAo+ICAj ZGVmaW5lICAgQlhUX0JMQ19QV01fRU5BQkxFCQkJKDEgPDwgMzEpCj4gICNkZWZpbmUgICBCWFRf QkxDX1BXTV9QT0xBUklUWQkJCSgxIDw8IDI5KQo+IC0jZGVmaW5lIEJYVF9CTENfUFdNX0ZSRVEx CQkJMHhDODI1NAo+IC0jZGVmaW5lIEJYVF9CTENfUFdNX0RVVFkxCQkJMHhDODI1OAo+IC0KPiAt I2RlZmluZSBCWFRfQkxDX1BXTV9DVEwyCQkJMHhDODM1MAo+IC0jZGVmaW5lIEJYVF9CTENfUFdN X0ZSRVEyCQkJMHhDODM1NAo+IC0jZGVmaW5lIEJYVF9CTENfUFdNX0RVVFkyCQkJMHhDODM1OAo+ IC0KPiArI2RlZmluZSBfQlhUX0JMQ19QV01fRlJFUTEJCQkweEM4MjU0Cj4gKyNkZWZpbmUgX0JY VF9CTENfUFdNX0RVVFkxCQkJMHhDODI1OAo+ICsKPiArI2RlZmluZSBfQlhUX0JMQ19QV01fQ1RM MgkJCTB4QzgzNTAKPiArI2RlZmluZSBfQlhUX0JMQ19QV01fRlJFUTIJCQkweEM4MzU0Cj4gKyNk ZWZpbmUgX0JYVF9CTENfUFdNX0RVVFkyCQkJMHhDODM1OAo+ICsKPiArI2RlZmluZSBCWFRfQkxD X1BXTV9DVEwoY29udHJvbGxlcikgICAgX1BJUEUoY29udHJvbGxlciwgXAo+ICsJCQkJCV9CWFRf QkxDX1BXTV9DVEwxLCBfQlhUX0JMQ19QV01fQ1RMMikKPiArI2RlZmluZSBCWFRfQkxDX1BXTV9G UkVRKGNvbnRyb2xsZXIpICAgX1BJUEUoY29udHJvbGxlciwgXAo+ICsJCQkJCV9CWFRfQkxDX1BX TV9GUkVRMSwgX0JYVF9CTENfUFdNX0ZSRVEyKQo+ICsjZGVmaW5lIEJYVF9CTENfUFdNX0RVVFko Y29udHJvbGxlcikgICBfUElQRShjb250cm9sbGVyLCBcCj4gKwkJCQkJX0JYVF9CTENfUFdNX0RV VFkxLCBfQlhUX0JMQ19QV01fRFVUWTIpCj4gIAo+ICAjZGVmaW5lIFBDSF9HVENfQ1RMCQkweGU3 MDAwCj4gICNkZWZpbmUgICBQQ0hfR1RDX0VOQUJMRQkoMSA8PCAzMSkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IGluZGV4IDQ3YmM3MjkuLmVlOWViMmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IEBAIC0xODIsNyArMTgyLDkgQEAgc3RydWN0IGludGVsX3BhbmVsIHsKPiAg CQlib29sIGVuYWJsZWQ7Cj4gIAkJYm9vbCBjb21iaW5hdGlvbl9tb2RlOwkvKiBnZW4gMi80IG9u bHkgKi8KPiAgCQlib29sIGFjdGl2ZV9sb3dfcHdtOwo+ICsJCWJvb2wgdXRpbF9waW5fYWN0aXZl X2xvdzsJLyogYnh0KyAqLwo+ICAJCXN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpkZXZpY2U7Cj4g KwkJdTggY29udHJvbGxlcjsJCS8qIGJ4dCsgb25seSAqLwo+ICAJfSBiYWNrbGlnaHQ7Cj4gIAo+ ICAJdm9pZCAoKmJhY2tsaWdodF9wb3dlcikoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqLCBib29s IGVuYWJsZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggN2Q4MzUyNy4u MjM4NDdmMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0zMiw3ICsz MiwxMCBAQAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICAjaW5jbHVkZSA8bGlu dXgvbW9kdWxlcGFyYW0uaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiAgI2luY2x1 ZGUgImludGVsX2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZHNpLmgiCj4gKyNpbmNsdWRlICJp OTE1X2Rydi5oIgo+ICAKPiAgdm9pZAo+ICBpbnRlbF9maXhlZF9wYW5lbF9tb2RlKGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlLAo+IEBAIC01MzksOSArNTQyLDEwIEBA IHN0YXRpYyB1MzIgdmx2X2dldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKQo+ICBzdGF0aWMgdTMyIGJ4dF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5l Y3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rv ci0+cGFuZWw7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAKPiAtCXJldHVybiBJOTE1X1JFQUQoQlhUX0JMQ19QV01fRFVUWTEpOwo+ ICsJcmV0dXJuIEk5MTVfUkVBRChCWFRfQkxDX1BXTV9EVVRZKHBhbmVsLT5iYWNrbGlnaHQuY29u dHJvbGxlcikpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdTMyIGludGVsX3BhbmVsX2dldF9iYWNrbGln aHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IEBAIC02MjgsOCArNjMyLDkg QEAgc3RhdGljIHZvaWQgYnh0X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj b25uZWN0b3ItPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29u bmVjdG9yLT5wYW5lbDsKPiAgCj4gLQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0RVVFkxLCBsZXZl bCk7Cj4gKwlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0RVVFkocGFuZWwtPmJhY2tsaWdodC5jb250 cm9sbGVyKSwgbGV2ZWwpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC03NjEsMTIgKzc2 NiwyMCBAQCBzdGF0aWMgdm9pZCBieHRfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1MzIgdG1wOwo+ICsJc3RydWN0IGludGVsX3BhbmVsICpw YW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICsJdTMyIHRtcCwgdmFsOwo+ICAKPiAgCWludGVs X3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiAgCj4gLQl0bXAg PSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fQ1RMMSk7Cj4gLQlJOTE1X1dSSVRFKEJYVF9CTENfUFdN X0NUTDEsIHRtcCAmIH5CWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICsJdG1wID0gSTkxNV9SRUFEKEJY VF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsKPiArCUk5MTVfV1JJ VEUoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4gKwkJCXRt cCAmIH5CWFRfQkxDX1BXTV9FTkFCTEUpOwo+ICsKPiArCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNv bnRyb2xsZXIgPT0gMSkgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChVVElMX1BJTl9DVEwpOwo+ICsJ CXZhbCAmPSB+VVRJTF9QSU5fRU5BQkxFOwo+ICsJCUk5MTVfV1JJVEUoVVRJTF9QSU5fQ1RMLCB2 YWwpOwo+ICsJfQo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX3BhbmVsX2Rpc2FibGVfYmFja2xpZ2h0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiBAQCAtOTgwLDE2ICs5OTMsMzkg QEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVs Owo+IC0JdTMyIHB3bV9jdGw7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dldF9waXBlX2Zy b21fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwl1MzIgcHdtX2N0bCwgdmFsOwo+ICAKPiAtCXB3 bV9jdGwgPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fQ1RMMSk7Cj4gKwkvKiBUbyB1c2UgMm5kIHNl dCBvZiBiYWNrbGlnaHQgcmVnaXN0ZXJzLCB1dGlsaXR5IHBpbiBoYXMgdG8gYmUKPiArCSAqIGVu YWJsZWQgd2l0aCBQV00gbW9kZS4KPiArCSAqIFRoZSBmaWVsZCBzaG91bGQgb25seSBiZSBjaGFu Z2VkIHdoZW4gdGhlIHV0aWxpdHkgcGluIGlzIGRpc2FibGVkCj4gKwkgKi8KPiArCWlmIChwYW5l bC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIgPT0gMSkgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChVVElM X1BJTl9DVEwpOwo+ICsJCWlmICh2YWwgJiBVVElMX1BJTl9FTkFCTEUpIHsKPiArCQkJRFJNX0RF QlVHX0tNUygidXRpbCBwaW4gYWxyZWFkeSBlbmFibGVkXG4iKTsKPiArCQkJdmFsICY9IH5VVElM X1BJTl9FTkFCTEU7Cj4gKwkJCUk5MTVfV1JJVEUoVVRJTF9QSU5fQ1RMLCB2YWwpOwo+ICsJCX0K PiArCQkvKiBtYXNrIG91dCBVVElMX1BJTl9QSVBFIGFuZCBVVElMX1BJTl9NT0RFICovCj4gKwkJ dmFsICY9IH4oVVRJTF9QSU5fUElQRV9NQVNLIHwgVVRJTF9QSU5fTU9ERV9NQVNLKTsKPiArCQlJ OTE1X1dSSVRFKFVUSUxfUElOX0NUTCwgdmFsKTsKPiArCQlpZiAocGFuZWwtPmJhY2tsaWdodC51 dGlsX3Bpbl9hY3RpdmVfbG93KQo+ICsJCQl2YWwgfD0gVVRJTF9QSU5fUE9MQVJJVFk7Cj4gKwkJ STkxNV9XUklURShVVElMX1BJTl9DVEwsIHZhbCB8IFVUSUxfUElOX1BJUEUocGlwZSkgfAo+ICsJ CQkJVVRJTF9QSU5fTU9ERV9QV00gfCBVVElMX1BJTl9FTkFCTEUpOwo+ICsJfQo+ICsKPiArCXB3 bV9jdGwgPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJv bGxlcikpOwo+ICAJaWYgKHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9FTkFCTEUpIHsKPiAgCQlEUk1f REVCVUdfS01TKCJiYWNrbGlnaHQgYWxyZWFkeSBlbmFibGVkXG4iKTsKPiAgCQlwd21fY3RsICY9 IH5CWFRfQkxDX1BXTV9FTkFCTEU7Cj4gLQkJSTkxNV9XUklURShCWFRfQkxDX1BXTV9DVEwxLCBw d21fY3RsKTsKPiArCQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0 LmNvbnRyb2xsZXIpLAo+ICsJCQkJcHdtX2N0bCk7Cj4gIAl9Cj4gIAo+IC0JSTkxNV9XUklURShC WFRfQkxDX1BXTV9GUkVRMSwgcGFuZWwtPmJhY2tsaWdodC5tYXgpOwo+ICsJSTkxNV9XUklURShC WFRfQkxDX1BXTV9GUkVRKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4gKwkJCXBhbmVs LT5iYWNrbGlnaHQubWF4KTsKPiAgCj4gIAlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xp Z2h0KGNvbm5lY3RvciwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gIAo+IEBAIC05OTcsOSAr MTAzMywxMCBAQCBzdGF0aWMgdm9pZCBieHRfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlpZiAocGFuZWwtPmJhY2tsaWdodC5hY3RpdmVfbG93 X3B3bSkKPiAgCQlwd21fY3RsIHw9IEJYVF9CTENfUFdNX1BPTEFSSVRZOwo+ICAKPiAtCUk5MTVf V1JJVEUoQlhUX0JMQ19QV01fQ1RMMSwgcHdtX2N0bCk7Cj4gLQlQT1NUSU5HX1JFQUQoQlhUX0JM Q19QV01fQ1RMMSk7Cj4gLQlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0NUTDEsIHB3bV9jdGwgfCBC WFRfQkxDX1BXTV9FTkFCTEUpOwo+ICsJSTkxNV9XUklURShCWFRfQkxDX1BXTV9DVEwocGFuZWwt PmJhY2tsaWdodC5jb250cm9sbGVyKSwgcHdtX2N0bCk7Cj4gKwlQT1NUSU5HX1JFQUQoQlhUX0JM Q19QV01fQ1RMKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlcikpOwo+ICsJSTkxNV9XUklURShC WFRfQkxDX1BXTV9DVEwocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyKSwKPiArCQkJcHdtX2N0 bCB8IEJYVF9CTENfUFdNX0VOQUJMRSk7Cj4gIH0KPiAgCj4gIHZvaWQgaW50ZWxfcGFuZWxfZW5h YmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gQEAgLTEw MDgsNiArMTA0NSw5IEBAIHZvaWQgaW50ZWxfcGFuZWxfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5l bCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9nZXRfcGlw ZV9mcm9tX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxf ZHNpID0gTlVMTDsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5VTEw7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IE5VTEw7Cj4gIAo+ICAJaWYgKCFwYW5lbC0+YmFja2xp Z2h0LnByZXNlbnQpCj4gIAkJcmV0dXJuOwo+IEBAIC0xMDI3LDcgKzEwNjcsMTggQEAgdm9pZCBp bnRlbF9wYW5lbF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiAgCQkJCQkJIHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlLT5wcm9wcy5tYXhfYnJpZ2h0 bmVzcyk7Cj4gIAl9Cj4gIAo+IC0JZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodChj b25uZWN0b3IpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZp Zy5jcnRjX2xpc3QsIGhlYWQpIHsKPiArCQlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBj cnRjLCBlbmNvZGVyKSB7Cj4gKwkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9E U0kpCj4gKwkJCQlpbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsK PiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKElTX0JST1hUT04oZGV2KSAmJiBpbnRlbF9kc2ktPnBh bmVsLT5mdW5jcy0+ZW5hYmxlKQo+ICsJCWludGVsX2RzaS0+cGFuZWwtPmZ1bmNzLT5lbmFibGUo aW50ZWxfZHNpLT5wYW5lbCk7Cj4gKwllbHNlCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxl X2JhY2tsaWdodChjb25uZWN0b3IpOwo+ICsKClRoaXMgaXMgYmFja3dhcmRzLiBUaGUgRFNJIGNv ZGUgc2hvdWxkIGNhbGwgaW50ZWxfcGFuZWxfZW5hYmxlX2JhY2tsaWdodAphbmQgaW50ZWxfcGFu ZWxfZGlzYWJsZV9iYWNrbGlnaHQsIG5vdCB0aGUgb3RoZXIgd2F5IHJvdW5kLgoKQlIsCkphbmku CgoKPiAgCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlZCA9IHRydWU7Cj4gIAlpZiAocGFuZWwtPmJh Y2tsaWdodC5kZXZpY2UpCj4gIAkJcGFuZWwtPmJhY2tsaWdodC5kZXZpY2UtPnByb3BzLnBvd2Vy ID0gRkJfQkxBTktfVU5CTEFOSzsKPiBAQCAtMTM2MiwxMCArMTQxMywyNyBAQCBieHRfc2V0dXBf YmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVu dXNlZCkKPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsK PiAgCXUzMiBwd21fY3RsLCB2YWw7Cj4gIAo+IC0JcHdtX2N0bCA9IEk5MTVfUkVBRChCWFRfQkxD X1BXTV9DVEwxKTsKPiAtCXBhbmVsLT5iYWNrbGlnaHQuYWN0aXZlX2xvd19wd20gPSBwd21fY3Rs ICYgQlhUX0JMQ19QV01fUE9MQVJJVFk7Cj4gKwkvKiBGb3IgQlhUIGhhcmQgY29kaW5nIHRoZSBC YWNrbGlnaHQgY29udHJvbGxlciB0byAwLgo+ICsJICogVG9EbyA6IFJlYWQgdGhlIGNvbnRyb2xs ZXIgdmFsdWUgZnJvbSBWQlQgYW5kIGdlbmVyYWxpemUKPiArCSAqLwo+ICsJcGFuZWwtPmJhY2ts aWdodC5jb250cm9sbGVyID0gMDsKPiArCj4gKwlwd21fY3RsID0gSTkxNV9SRUFEKEJYVF9CTENf UFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsKPiArCj4gKwkvKiBLZWVwaW5n IHRoZSBjaGVjayBpZiBjb250cm9sbGVyIDEgaXMgdG8gYmUgcHJvZ3JhbW1lZC4gCj4gKwkgKiBU aGlzIHdpbGwgY29tZSBpbnRvIGFmZmVjdCBvbmNlIHRoZSBWQlQgcGFyc2luZwo+ICsJICogaXMg Zml4ZWQgZm9yIGNvbnRyb2xsZXIgc2VsZWN0aW9uLCBhbmQgY29udHJvbGxlciAxIGlzIHVzZWQK PiArCSAqIGZvciBhIHBydGljdWxhciBkaXNwbGF5IGNvbmZpZ3VyYXRpb24uCj4gKwkgKi8gCj4g KwlpZiAocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyID09IDEpIHsKPiArCQl2YWwgPSBJOTE1 X1JFQUQoVVRJTF9QSU5fQ1RMKTsKPiArCQlwYW5lbC0+YmFja2xpZ2h0LnV0aWxfcGluX2FjdGl2 ZV9sb3cgPQo+ICsJCQl2YWwgJiBVVElMX1BJTl9QT0xBUklUWTsKPiArCX0KPiAgCj4gLQlwYW5l bC0+YmFja2xpZ2h0Lm1heCA9IEk5MTVfUkVBRChCWFRfQkxDX1BXTV9GUkVRMSk7Cj4gKwlwYW5l bC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3dfcHdtID0gcHdtX2N0bCAmIEJYVF9CTENfUFdNX1BPTEFS SVRZOwo+ICsJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBJOTE1X1JFQUQoCj4gKwkJCQlCWFRfQkxD X1BXTV9GUkVRKHBhbmVsLT5iYWNrbGlnaHQuY29udHJvbGxlcikpOwo+ICAJaWYgKCFwYW5lbC0+ YmFja2xpZ2h0Lm1heCkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAgCj4gLS0gCj4gMS43LjkuNQo+ Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK