From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clint Taylor Subject: Re: [PATCH v2 2/3] drm/i915: initialize backlight max from VBT Date: Fri, 04 Sep 2015 15:42:13 -0700 Message-ID: <55EA1E45.2000609@intel.com> References: <1441374915-14076-1-git-send-email-jani.nikula@intel.com> <1441374915-14076-2-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 624626E370 for ; Fri, 4 Sep 2015 15:44:52 -0700 (PDT) In-Reply-To: <1441374915-14076-2-git-send-email-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDkvMDQvMjAxNSAwNjo1NSBBTSwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gTm9ybWFsbHkgd2Ug ZGV0ZXJtaW5lIHRoZSBiYWNrbGlnaHQgUFdNIG1vZHVsYXRpb24gZnJlcXVlbmN5ICh3aGljaCB3 ZQo+IGFsc28gdXNlIGFzIGJhY2tsaWdodCBtYXggdmFsdWUpIGZyb20gdGhlIGJhY2tsaWdodCBy ZWdpc3RlcnMgYXQgbW9kdWxlCj4gbG9hZCB0aW1lLCBleHBlY3RpbmcgdGhlIHJlZ2lzdGVycyBo YXZlIGJlZW4gaW5pdGlhbGl6ZWQgYnkgdGhlIEJJT1MuIElmCj4gdGhpcyBpcyBub3QgdGhlIGNh c2UsIHdlIGZhaWwuCj4KPiBUaGUgVkJUIGNvbnRhaW5zIHRoZSBiYWNrbGlnaHQgbW9kdWxhdGlv biBmcmVxdWVuY3kgaW4gSHouIEFkZCBwbGF0Zm9ybQo+IHNwZWNpZmljIGZ1bmN0aW9ucyB0byBj b252ZXJ0IHRoZSBmcmVxdWVuY3kgaW4gSHogdG8gYmFja2xpZ2h0IFBXTQo+IG1vZHVsYXRpb24g ZnJlcXVlbmN5LCBhbmQgdXNlIHRoZW0gdG8gaW5pdGlhbGl6ZSB0aGUgYmFja2xpZ2h0IHdoZW4g dGhlCj4gcmVnaXN0ZXJzIGFyZSBub3QgaW5pdGlhbGl6ZWQgYnkgdGhlIEJJT1MuCj4KPiB2Mjog Rml4IFNQVCBhbmQgVkxWLiBUaGFua3MgdG8gQ2xpbnQgZm9yIHRoZSBWTFYgY29kZS4KPgo+IENj OiBDbGludCBUYXlsb3IgPGNsaW50b24uYS50YXlsb3JAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYt Ynk6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgIHwgICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggICAgfCAgIDMgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cGFuZWwuYyB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gICAz IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMTI4NzAwNzNkNThmLi41MDNkZmY1ZDc0N2QgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjcxLDYgKzY3MSw4IEBAIHN0cnVjdCBk cm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAgIAkJCSAgICAgIHVpbnQzMl90IGxldmVsKTsKPiAg IAl2b2lkICgqZGlzYWJsZV9iYWNrbGlnaHQpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3Rvcik7Cj4gICAJdm9pZCAoKmVuYWJsZV9iYWNrbGlnaHQpKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3Rvcik7Cj4gKwl1aW50MzJfdCAoKmJhY2tsaWdodF9oel90b19wd20pKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCQl1aW50MzJfdCBoeik7Cj4gICB9 Owo+Cj4gICBlbnVtIGZvcmNld2FrZV9kb21haW5faWQgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+IGluZGV4IDg0ZWQ5YWI0MWIwZi4uODEyYjdiMjExZmE4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4gQEAgLTQ2NDgsNiArNDY0OCw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2Vs bHMgewo+Cj4gICAjZGVmaW5lIENCUjFfVkxWCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDcwNDAw KQo+ICAgI2RlZmluZSAgQ0JSX1BORF9ERUFETElORV9ESVNBQkxFCSgxPDwzMSkKPiArI2RlZmlu ZSAgQ0JSX1BXTV9DTE9DS19NVVhfU0VMRUNUCSgxPDwzMCkKPgo+ICAgLyogRklGTyB3YXRlcm1h cmsgc2l6ZXMgZXRjICovCj4gICAjZGVmaW5lIEc0WF9GSUZPX0xJTkVfU0laRQk2NAo+IEBAIC02 MzI1LDkgKzYzMjYsMTEgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gICAjZGVmaW5l ICBGRElfUEhBU0VfU1lOQ19PVlIocGlwZSkgKDE8PChGRElBX1BIQVNFX1NZTkNfU0hJRlRfT1ZS IC0gKChwaXBlKSAqIDIpKSkKPiAgICNkZWZpbmUgIEZESV9QSEFTRV9TWU5DX0VOKHBpcGUpICgx PDwoRkRJQV9QSEFTRV9TWU5DX1NISUZUX0VOIC0gKChwaXBlKSAqIDIpKSkKPiAgICNkZWZpbmUg IEZESV9CQ19CSUZVUkNBVElPTl9TRUxFQ1QJKDEgPDwgMTIpCj4gKyNkZWZpbmUgIFNQVF9QV01f R1JBTlVMQVJJVFkJCSgxPDwwKQo+ICAgI2RlZmluZSBTT1VUSF9DSElDS0VOMgkJMHhjMjAwNAo+ ICAgI2RlZmluZSAgRkRJX01QSFlfSU9TRlNCX1JFU0VUX1NUQVRVUwkoMTw8MTMpCj4gICAjZGVm aW5lICBGRElfTVBIWV9JT1NGU0JfUkVTRVRfQ1RMCSgxPDwxMikKPiArI2RlZmluZSAgTFBUX1BX TV9HUkFOVUxBUklUWQkJKDE8PDUpCj4gICAjZGVmaW5lICBEUExTX0VEUF9QUFNfRklYX0RJUwkJ KDE8PDApCj4KPiAgICNkZWZpbmUgX0ZESV9SWEFfQ0hJQ0tFTiAgICAgICAgIDB4YzIwMGMKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBpbmRleCA2ODE2ODZlNWQ1NTAuLmQzYTMxMmM0 MDllYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0xMjI0LDEwICsx MjI0LDE0OSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICAgI2VuZGlmIC8qIENPTkZJR19C QUNLTElHSFRfQ0xBU1NfREVWSUNFICovCj4KPiAgIC8qCj4gLSAqIE5vdGU6IFRoZSBzZXR1cCBo b29rcyBjYW4ndCBhc3N1bWUgcGlwZSBpcyBzZXQhCj4gKyAqIFNQVDogVGhpcyB2YWx1ZSByZXBy ZXNlbnRzIHRoZSBwZXJpb2Qgb2YgdGhlIFBXTSBzdHJlYW0gaW4gY2xvY2sgcGVyaW9kcwo+ICsg KiBtdWx0aXBsaWVkIGJ5IDE2IChkZWZhdWx0IGluY3JlbWVudCkgb3IgMTI4IChhbHRlcm5hdGUg aW5jcmVtZW50IHNlbGVjdGVkIGluCj4gKyAqIFNDSElDS0VOXzEgYml0IDApLiBQV00gY2xvY2sg aXMgMjQgTUh6Lgo+ICsgKi8KPiArc3RhdGljIHUzMiBzcHRfaHpfdG9fcHdtKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwl1MzIgbXVsLCBjbG9j azsKPiArCj4gKwlpZiAoSTkxNV9SRUFEKFNPVVRIX0NISUNLRU4xKSAmIFNQVF9QV01fR1JBTlVM QVJJVFkpCj4gKwkJbXVsID0gMTI4Owo+ICsJZWxzZQo+ICsJCW11bCA9IDE2Owo+ICsKPiArCWNs b2NrID0gTUh6KDI0KTsKPiArCj4gKwlyZXR1cm4gY2xvY2sgLyAocHdtX2ZyZXFfaHogKiBtdWwp Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBMUFQ6IFRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGVy aW9kIG9mIHRoZSBQV00gc3RyZWFtIGluIGNsb2NrIHBlcmlvZHMKPiArICogbXVsdGlwbGllZCBi eSAxMjggKGRlZmF1bHQgaW5jcmVtZW50KSBvciAxNiAoYWx0ZXJuYXRlIGluY3JlbWVudCwgc2Vs ZWN0ZWQgaW4KPiArICogTFBUIFNPVVRIX0NISUNLRU4yIHJlZ2lzdGVyIGJpdCA1KS4KPiArICov Cj4gK3N0YXRpYyB1MzIgbHB0X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJdTMyIG11bCwgY2xvY2s7Cj4gKwo+ICsJaWYgKEk5 MTVfUkVBRChTT1VUSF9DSElDS0VOMikgJiBMUFRfUFdNX0dSQU5VTEFSSVRZKQo+ICsJCW11bCA9 IDE2Owo+ICsJZWxzZQo+ICsJCW11bCA9IDEyODsKPiArCj4gKwlpZiAoZGV2X3ByaXYtPnBjaF9p ZCA9PSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFKQo+ICsJCWNsb2NrID0gTUh6KDEzNSk7 IC8qIExQVDpIICovCj4gKwllbHNlCj4gKwkJY2xvY2sgPSBNSHooMjQpOyAvKiBMUFQ6TFAgKi8K PiArCj4gKwlyZXR1cm4gY2xvY2sgLyAocHdtX2ZyZXFfaHogKiBtdWwpOwo+ICt9Cj4gKwo+ICsv Kgo+ICsgKiBJTEsvU05CL0lWQjogVGhpcyB2YWx1ZSByZXByZXNlbnRzIHRoZSBwZXJpb2Qgb2Yg dGhlIFBXTSBzdHJlYW0gaW4gUENICj4gKyAqIGRpc3BsYXkgcmF3IGNsb2NrcyBtdWx0aXBsaWVk IGJ5IDEyOC4KPiArICovCj4gK3N0YXRpYyB1MzIgcGNoX2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiArewo+ICsJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlpbnQgY2xvY2sgPSBNSHoo aW50ZWxfcGNoX3Jhd2NsayhkZXYpKTsKPiArCj4gKwlyZXR1cm4gY2xvY2sgLyAocHdtX2ZyZXFf aHogKiAxMjgpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBHZW4yOiBUaGlzIGZpZWxkIGRldGVybWlu ZXMgdGhlIG51bWJlciBvZiB0aW1lIGJhc2UgZXZlbnRzIChkaXNwbGF5IGNvcmUKPiArICogY2xv Y2sgZnJlcXVlbmN5LzMyKSBpbiB0b3RhbCBmb3IgYSBjb21wbGV0ZSBjeWNsZSBvZiBtb2R1bGF0 ZWQgYmFja2xpZ2h0Cj4gKyAqIGNvbnRyb2wuCj4gICAgKgo+IC0gKiBYWFg6IFF1ZXJ5IG1vZGUg Y2xvY2sgb3IgaGFyZHdhcmUgY2xvY2sgYW5kIHByb2dyYW0gUFdNIG1vZHVsYXRpb24gZnJlcXVl bmN5Cj4gLSAqIGFwcHJvcHJpYXRlbHkgd2hlbiBpdCdzIDAuIFVzZSBWQlQgYW5kL29yIHNhbmUg ZGVmYXVsdHMuCj4gKyAqIEdlbjM6IEEgdGltZSBiYXNlIGV2ZW50IGVxdWFscyB0aGUgZGlzcGxh eSBjb3JlIGNsb2NrIChbRGV2UE5WXSBIUkFXIGNsb2NrKQo+ICsgKiBkaXZpZGVkIGJ5IDMyLgo+ ICsgKi8KPiArc3RhdGljIHUzMiBpOXh4X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IGNsb2NrOwo+ICsKPiArCWlmIChJ U19QSU5FVklFVyhkZXYpKQo+ICsJCWNsb2NrID0gaW50ZWxfaHJhd2NsayhkZXYpOwo+ICsJZWxz ZQo+ICsJCWNsb2NrID0gMTAwMCAqIGRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2Nr X3NwZWVkKGRldik7Cj4gKwo+ICsJcmV0dXJuIGNsb2NrIC8gKHB3bV9mcmVxX2h6ICogMzIpOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBHZW40OiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHBlcmlv ZCBvZiB0aGUgUFdNIHN0cmVhbSBpbiBkaXNwbGF5IGNvcmUKPiArICogY2xvY2tzIG11bHRpcGxp ZWQgYnkgMTI4Lgo+ICsgKi8KPiArc3RhdGljIHUzMiBpOTY1X2h6X3RvX3B3bShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiArewo+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IGNsb2NrID0g MTAwMCAqIGRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldik7Cj4g Kwo+ICsJcmV0dXJuIGNsb2NrIC8gKHB3bV9mcmVxX2h6ICogMTI4KTsKPiArfQo+ICsKPiArLyoK PiArICogVkxWOiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHBlcmlvZCBvZiB0aGUgUFdNIHN0 cmVhbSBpbiBkaXNwbGF5IGNvcmUKPiArICogY2xvY2tzIChbRGV2Q1RHXSAyMDBNSHogSFJBVyBj bG9ja3MpIG11bHRpcGxpZWQgYnkgMTI4IG9yIDI1TUh6IFMwSVggY2xvY2tzCj4gKyAqIG11bHRp cGxpZWQgYnkgMTYuIENIViB1c2VzIGEgMTkuMk1IeiBTMElYIGNsb2NrLgo+ICsgKi8KPiArc3Rh dGljIHUzMiB2bHZfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvciwg dTMyIHB3bV9mcmVxX2h6KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVj dG9yLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRl di0+ZGV2X3ByaXZhdGU7Cj4gKwlpbnQgY2xvY2s7Cj4gKwo+ICsJaWYgKChJOTE1X1JFQUQoQ0JS MV9WTFYpICYgQ0JSX1BXTV9DTE9DS19NVVhfU0VMRUNUKSA9PSAwKSB7Cj4gKwkJaWYgKElTX0NI RVJSWVZJRVcoZGV2KSkKPiArCQkJcmV0dXJuIEtIeigxOTIwMCkgLyAocHdtX2ZyZXFfaHogKiAx Nik7Cj4gKwkJZWxzZQo+ICsJCQlyZXR1cm4gTUh6KDI1KSAvIChwd21fZnJlcV9oeiAqIDE2KTsK PiArCX0gZWxzZSB7Cj4gKwkJY2xvY2sgPSBpbnRlbF9ocmF3Y2xrKGRldik7Cj4gKwkJcmV0dXJu IE1IeihjbG9jaykgLyAocHdtX2ZyZXFfaHogKiAxMjgpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0 aWMgdTMyIGdldF9iYWNrbGlnaHRfbWF4X3ZidChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2Uu ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiArCXUxNiBwd21fZnJlcV9oeiA9IGRldl9wcml2LT52YnQuYmFja2xpZ2h0LnB3bV9m cmVxX2h6Owo+ICsJdTMyIHB3bTsKPiArCj4gKwlpZiAoIXB3bV9mcmVxX2h6KSB7Cj4gKwkJRFJN X0RFQlVHX0tNUygiYmFja2xpZ2h0IGZyZXF1ZW5jeSBub3Qgc3BlY2lmaWVkIGluIFZCVFxuIik7 Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFkZXZfcHJpdi0+ZGlzcGxheS5iYWNr bGlnaHRfaHpfdG9fcHdtKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiYmFja2xpZ2h0IGZyZXF1ZW5j eSBzZXR0aW5nIGZyb20gVkJUIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZv cm1cbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCXB3bSA9IGRldl9wcml2LT5kaXNw bGF5LmJhY2tsaWdodF9oel90b19wd20oY29ubmVjdG9yLCBwd21fZnJlcV9oeik7Cj4gKwlpZiAo IXB3bSkgewo+ICsJCURSTV9ERUJVR19LTVMoImJhY2tsaWdodCBmcmVxdWVuY3kgY29udmVyc2lv biBmYWlsZWRcbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCURSTV9ERUJVR19LTVMo ImJhY2tsaWdodCBmcmVxdWVuY3kgJXUgSHogZnJvbSBWQlRcbiIsIHB3bV9mcmVxX2h6KTsKPiAr Cj4gKwlyZXR1cm4gcHdtOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBOb3RlOiBUaGUgc2V0dXAgaG9v a3MgY2FuJ3QgYXNzdW1lIHBpcGUgaXMgc2V0IQo+ICAgICovCj4gICBzdGF0aWMgdTMyIGdldF9i YWNrbGlnaHRfbWluX3ZidChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gICB7 Cj4gQEAgLTEyNjcsNiArMTQwNiwxMCBAQCBzdGF0aWMgaW50IGxwdF9zZXR1cF9iYWNrbGlnaHQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgdW51cwo+Cj4gICAJ cGNoX2N0bDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9QQ0hfQ1RMMik7Cj4gICAJcGFuZWwtPmJhY2ts aWdodC5tYXggPSBwY2hfY3RsMiA+PiAxNjsKPiArCj4gKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQu bWF4KQo+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gZ2V0X2JhY2tsaWdodF9tYXhfdmJ0KGNv bm5lY3Rvcik7Cj4gKwo+ICAgCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gICAJCXJldHVy biAtRU5PREVWOwo+Cj4gQEAgLTEyOTMsNiArMTQzNiwxMCBAQCBzdGF0aWMgaW50IHBjaF9zZXR1 cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUg dW51cwo+Cj4gICAJcGNoX2N0bDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9QQ0hfQ1RMMik7Cj4gICAJ cGFuZWwtPmJhY2tsaWdodC5tYXggPSBwY2hfY3RsMiA+PiAxNjsKPiArCj4gKwlpZiAoIXBhbmVs LT5iYWNrbGlnaHQubWF4KQo+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gZ2V0X2JhY2tsaWdo dF9tYXhfdmJ0KGNvbm5lY3Rvcik7Cj4gKwo+ICAgCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgp Cj4gICAJCXJldHVybiAtRU5PREVWOwo+Cj4gQEAgLTEzMjQsMTIgKzE0NzEsMTggQEAgc3RhdGlj IGludCBpOXh4X3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsIGVudW0gcGlwZSB1bnUKPiAgIAkJcGFuZWwtPmJhY2tsaWdodC5hY3RpdmVfbG93X3B3bSA9 IGN0bCAmIEJMTV9QT0xBUklUWV9QTlY7Cj4KPiAgIAlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IGN0 bCA+PiAxNzsKPiAtCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNvbWJpbmF0aW9uX21vZGUpCj4gLQkJ cGFuZWwtPmJhY2tsaWdodC5tYXggKj0gMHhmZjsKPiArCj4gKwlpZiAoIXBhbmVsLT5iYWNrbGln aHQubWF4KSB7Cj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92 YnQoY29ubmVjdG9yKTsKPiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA+Pj0gMTsKPiArCX0KPgo+ ICAgCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gICAJCXJldHVybiAtRU5PREVWOwo+Cj4g KwlpZiAocGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2RlKQo+ICsJCXBhbmVsLT5iYWNr bGlnaHQubWF4ICo9IDB4ZmY7Cj4gKwo+ICAgCXBhbmVsLT5iYWNrbGlnaHQubWluID0gZ2V0X2Jh Y2tsaWdodF9taW5fdmJ0KGNvbm5lY3Rvcik7Cj4KPiAgIAl2YWwgPSBpOXh4X2dldF9iYWNrbGln aHQoY29ubmVjdG9yKTsKPiBAQCAtMTM1MywxMiArMTUwNiwxNiBAQCBzdGF0aWMgaW50IGk5NjVf c2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBw aXBlIHVudQo+Cj4gICAJY3RsID0gSTkxNV9SRUFEKEJMQ19QV01fQ1RMKTsKPiAgIAlwYW5lbC0+ YmFja2xpZ2h0Lm1heCA9IGN0bCA+PiAxNjsKPiAtCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNvbWJp bmF0aW9uX21vZGUpCj4gLQkJcGFuZWwtPmJhY2tsaWdodC5tYXggKj0gMHhmZjsKPiArCj4gKwlp ZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gZ2V0 X2JhY2tsaWdodF9tYXhfdmJ0KGNvbm5lY3Rvcik7Cj4KPiAgIAlpZiAoIXBhbmVsLT5iYWNrbGln aHQubWF4KQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPgo+ICsJaWYgKHBhbmVsLT5iYWNrbGlnaHQu Y29tYmluYXRpb25fbW9kZSkKPiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCAqPSAweGZmOwo+ICsK PiAgIAlwYW5lbC0+YmFja2xpZ2h0Lm1pbiA9IGdldF9iYWNrbGlnaHRfbWluX3ZidChjb25uZWN0 b3IpOwo+Cj4gICAJdmFsID0gaTl4eF9nZXRfYmFja2xpZ2h0KGNvbm5lY3Rvcik7Cj4gQEAgLTEz OTgsNiArMTU1NSwxMCBAQCBzdGF0aWMgaW50IHZsdl9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgcGlwZQo+Cj4gICAJY3RsID0gSTkx NV9SRUFEKFZMVl9CTENfUFdNX0NUTChwaXBlKSk7Cj4gICAJcGFuZWwtPmJhY2tsaWdodC5tYXgg PSBjdGwgPj4gMTY7Cj4gKwo+ICsJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKPiArCQlwYW5l bC0+YmFja2xpZ2h0Lm1heCA9IGdldF9iYWNrbGlnaHRfbWF4X3ZidChjb25uZWN0b3IpOwo+ICsK PiAgIAlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPgo+ IEBAIC0xNDI0LDYgKzE1ODUsMTAgQEAgYnh0X3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0gcGlwZSB1bnVzZWQpCj4gICAJcGFuZWwtPmJhY2ts aWdodC5hY3RpdmVfbG93X3B3bSA9IHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9QT0xBUklUWTsKPgo+ ICAgCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gSTkxNV9SRUFEKEJYVF9CTENfUFdNX0ZSRVExKTsK PiArCj4gKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+ICsJCXBhbmVsLT5iYWNrbGlnaHQu bWF4ID0gZ2V0X2JhY2tsaWdodF9tYXhfdmJ0KGNvbm5lY3Rvcik7Cj4gKwo+ICAgCWlmICghcGFu ZWwtPmJhY2tsaWdodC5tYXgpCj4gICAJCXJldHVybiAtRU5PREVWOwo+Cj4gQEAgLTE1MzcsMTIg KzE3MDIsMTcgQEAgdm9pZCBpbnRlbF9wYW5lbF9pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5kaXNhYmxlX2JhY2tsaWdo dCA9IGxwdF9kaXNhYmxlX2JhY2tsaWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2Jh Y2tsaWdodCA9IGxwdF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRf YmFja2xpZ2h0ID0gbHB0X2dldF9iYWNrbGlnaHQ7Cj4gKwkJaWYgKEhBU19QQ0hfTFBUKGRldikp Cj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9oel90b19wd20gPSBscHRfaHpfdG9f cHdtOwo+ICsJCWVsc2UKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3 bSA9IHNwdF9oel90b19wd207Cj4gICAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpIHsK PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gcGNoX3NldHVwX2JhY2ts aWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodCA9IHBjaF9lbmFi bGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5kaXNhYmxlX2JhY2tsaWdodCA9 IHBjaF9kaXNhYmxlX2JhY2tsaWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2JhY2ts aWdodCA9IHBjaF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfYmFj a2xpZ2h0ID0gcGNoX2dldF9iYWNrbGlnaHQ7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xp Z2h0X2h6X3RvX3B3bSA9IHBjaF9oel90b19wd207Cj4gICAJfSBlbHNlIGlmIChJU19WQUxMRVlW SUVXKGRldikpIHsKPiAgIAkJaWYgKGRldl9wcml2LT52YnQuaGFzX21pcGkpIHsKPiAgIAkJCWRl dl9wcml2LT5kaXNwbGF5LnNldHVwX2JhY2tsaWdodCA9IHB3bV9zZXR1cF9iYWNrbGlnaHQ7Cj4g QEAgLTE1NTYsNiArMTcyNiw3IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVu Y3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmRpc2Fi bGVfYmFja2xpZ2h0ID0gdmx2X2Rpc2FibGVfYmFja2xpZ2h0Owo+ICAgCQkJZGV2X3ByaXYtPmRp c3BsYXkuc2V0X2JhY2tsaWdodCA9IHZsdl9zZXRfYmFja2xpZ2h0Owo+ICAgCQkJZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IHZsdl9nZXRfYmFja2xpZ2h0Owo+ICsJCQlkZXZfcHJp di0+ZGlzcGxheS5iYWNrbGlnaHRfaHpfdG9fcHdtID0gdmx2X2h6X3RvX3B3bTsKPiAgIAkJfQo+ ICAgCX0gZWxzZSBpZiAoSVNfR0VONChkZXYpKSB7Cj4gICAJCWRldl9wcml2LT5kaXNwbGF5LnNl dHVwX2JhY2tsaWdodCA9IGk5NjVfc2V0dXBfYmFja2xpZ2h0Owo+IEBAIC0xNTYzLDEyICsxNzM0 LDE0IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSBp OTY1X2Rpc2FibGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFja2xp Z2h0ID0gaTl4eF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfYmFj a2xpZ2h0ID0gaTl4eF9nZXRfYmFja2xpZ2h0Owo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmJhY2ts aWdodF9oel90b19wd20gPSBpOTY1X2h6X3RvX3B3bTsKPiAgIAl9IGVsc2Ugewo+ICAgCQlkZXZf cHJpdi0+ZGlzcGxheS5zZXR1cF9iYWNrbGlnaHQgPSBpOXh4X3NldHVwX2JhY2tsaWdodDsKPiAg IAkJZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodCA9IGk5eHhfZW5hYmxlX2JhY2ts aWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSBpOXh4X2Rp c2FibGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFja2xpZ2h0ID0g aTl4eF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfYmFja2xpZ2h0 ID0gaTl4eF9nZXRfYmFja2xpZ2h0Owo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9o el90b19wd20gPSBpOXh4X2h6X3RvX3B3bTsKPiAgIAl9Cj4gICB9Cj4KPgoKUmV2aWV3ZWQtYnk6 IENsaW50IFRheWxvciA8Q2xpbnRvbi5BLlRheWxvckBpbnRlbC5jb20+CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=