From mboxrd@z Thu Jan 1 00:00:00 1970 From: Clint Taylor Subject: Re: [PATCH 2/2] drm/i915: initialize backlight max from VBT Date: Wed, 26 Aug 2015 14:12:28 -0700 Message-ID: <55DE2BBC.6040104@intel.com> References: <89ea86274bf4c647aae0a2cb3770dfc8e10d578d.1440575833.git.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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 92C136E44B for ; Wed, 26 Aug 2015 14:15:05 -0700 (PDT) In-Reply-To: <89ea86274bf4c647aae0a2cb3770dfc8e10d578d.1440575833.git.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 T24gMDgvMjYvMjAxNSAxMjo1OCBBTSwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gTm9ybWFsbHkgd2Ug ZGV0ZXJtaW5lIHRoZSBiYWNrbGlnaHQgUFdNIG1vZHVsYXRpb24gZnJlcXVlbmN5ICh3aGljaCB3 ZQo+IGFsc28gdXNlIGFzIGJhY2tsaWdodCBtYXggdmFsdWUpIGZyb20gdGhlIGJhY2tsaWdodCBy ZWdpc3RlcnMgYXQgbW9kdWxlCj4gbG9hZCB0aW1lLCBleHBlY3RpbmcgdGhlIHJlZ2lzdGVycyBo YXZlIGJlZW4gaW5pdGlhbGl6ZWQgYnkgdGhlIEJJT1MuIElmCj4gdGhpcyBpcyBub3QgdGhlIGNh c2UsIHdlIGZhaWwuCj4KPiBUaGUgVkJUIGNvbnRhaW5zIHRoZSBiYWNrbGlnaHQgbW9kdWxhdGlv biBmcmVxdWVuY3kgaW4gSHouIEFkZCBwbGF0Zm9ybQo+IHNwZWNpZmljIGZ1bmN0aW9ucyB0byBj b252ZXJ0IHRoZSBmcmVxdWVuY3kgaW4gSHogdG8gYmFja2xpZ2h0IFBXTQo+IG1vZHVsYXRpb24g ZnJlcXVlbmN5LCBhbmQgdXNlIHRoZW0gdG8gaW5pdGlhbGl6ZSB0aGUgYmFja2xpZ2h0IHdoZW4g dGhlCj4gcmVnaXN0ZXJzIGFyZSBub3QgaW5pdGlhbGl6ZWQgYnkgdGhlIEJJT1MuCj4KPiBTaWdu ZWQtb2ZmLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IC0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICB8ICAgMiArCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BhbmVsLmMgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNTYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDVmNmZkMGI3MWJjOS4uZTlkZWYzMTYx OGI1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTY2NSw2ICs2NjUsOCBAQCBz dHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gICAJCQkgICAgICB1aW50MzJfdCBsZXZl bCk7Cj4gICAJdm9pZCAoKmRpc2FibGVfYmFja2xpZ2h0KShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpOwo+ICAgCXZvaWQgKCplbmFibGVfYmFja2xpZ2h0KShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICsJdWludDMyX3QgKCpiYWNrbGlnaHRfaHpfdG9fcHdt KShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkJdWludDMyX3QgaHop Owo+ICAgfTsKPgo+ICAgZW51bSBmb3JjZXdha2VfZG9tYWluX2lkIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiBpbmRleCA3MWY3YmE4ODZmYjEuLjVmMDdhZjQxYTYwMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+IEBAIC02MzE2LDYgKzYzMTYsNyBAQCBlbnVtIHNrbF9kaXNwX3Bv d2VyX3dlbGxzIHsKPiAgICNkZWZpbmUgU09VVEhfQ0hJQ0tFTjIJCTB4YzIwMDQKPiAgICNkZWZp bmUgIEZESV9NUEhZX0lPU0ZTQl9SRVNFVF9TVEFUVVMJKDE8PDEzKQo+ICAgI2RlZmluZSAgRkRJ X01QSFlfSU9TRlNCX1JFU0VUX0NUTAkoMTw8MTIpCj4gKyNkZWZpbmUgIFBXTV9HUkFOVUxBUklU WQkJKDE8PDUpCS8qIExQVCAqLwoKU2hvdWxkbid0IHdlIGJlIHVzaW5nIHRoZSBCTENfUFdNX0NU TCB2ZXJzaW9uIG9mIHRoZSBQV01fR1JBTlVMQVJJVFkgCmJpdCBvbiBIU1cgYW5kIGxhdGVyPwoK PiAgICNkZWZpbmUgIERQTFNfRURQX1BQU19GSVhfRElTCQkoMTw8MCkKPgo+ICAgI2RlZmluZSBf RkRJX1JYQV9DSElDS0VOICAgICAgICAgMHhjMjAwYwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYwo+IGluZGV4IGUyYWIzZjZlZDAyMi4uZWRmNTIzZmY0NjEwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jCj4gQEAgLTEyMTIsMTAgKzEyMTIsMTI1IEBAIHN0YXRpYyB2b2lk IGludGVsX2JhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gICAjZW5kaWYgLyogQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0Ug Ki8KPgo+ICAgLyoKPiAtICogTm90ZTogVGhlIHNldHVwIGhvb2tzIGNhbid0IGFzc3VtZSBwaXBl IGlzIHNldCEKPiArICogSFNXL0JEVzogVGhpcyB2YWx1ZSByZXByZXNlbnRzIHRoZSBwZXJpb2Qg b2YgdGhlIFBXTSBzdHJlYW0gaW4gY2xvY2sgcGVyaW9kcwo+ICsgKiBtdWx0aXBsaWVkIGJ5IDEy OCAoZGVmYXVsdCBpbmNyZW1lbnQpIG9yIDE2IChhbHRlcm5hdGUgaW5jcmVtZW50LCBzZWxlY3Rl ZCBpbgo+ICsgKiBMUFQgU09VVEhfQ0hJQ0tFTjIgcmVnaXN0ZXIgYml0IDUpLgo+ICAgICoKPiAt ICogWFhYOiBRdWVyeSBtb2RlIGNsb2NrIG9yIGhhcmR3YXJlIGNsb2NrIGFuZCBwcm9ncmFtIFBX TSBtb2R1bGF0aW9uIGZyZXF1ZW5jeQo+IC0gKiBhcHByb3ByaWF0ZWx5IHdoZW4gaXQncyAwLiBV c2UgVkJUIGFuZC9vciBzYW5lIGRlZmF1bHRzLgo+ICsgKiBYWFg6IFRoaXMgb25seSB3b3JrcyB3 aGVuIGRyaXZpbmcgdGhlIFBDSCBQV00uIFdoZW4gZHJpdmluZyB0aGUgQ1BVIFBXTSBvbgo+ICsg KiB0aGUgdXRpbGl0eSBwaW4sIHRoZSBncmFudWxhcml0eSBuZWVkcyB0byBiZSBkZXRlcm1pbmVk IGJ5IEJMQ19QV01fQ1RMIGJpdAo+ICsgKiAyNy4KPiArICovCj4gK3N0YXRpYyB1MzIgaHN3X2h6 X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9o eikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+ICsJdTMyIG11bCwgY2xvY2s7Cj4gKwo+ICsJaWYgKEk5MTVfUkVBRChTT1VUSF9DSElDS0VO MikgJiBQV01fR1JBTlVMQVJJVFkpCj4gKwkJbXVsID0gMTY7CgpBY2NvcmRpbmcgdG8gdGhlIEhT VywgQkRXLCBhbmQgU0tMIEJTUEVDcyB0aGUgaW5jcmVtZW50IGlzIDggYW5kIDEyOCAKYmFzZWQg b24gdGhlIFBXTSBHcmFudWxhcml0eSBiaXQuIFRoZSBCRFcgYW5kIFNLTCBDaHJvbWVPUyByZWZl cmVuY2UgCmRlc2lnbnMgdXNlcyB0aGUgZGVkaWNhdGVkIFBXTSBwaW4gYW5kIG5vdCB0aGUgdXRp bGl0eSBwaW4uIFNvIApCTENfUFdNX0NUUkwgYml0IDI3IHNob3VsZCBiZSB1c2VkIGZvciBQV01f R1JBTlVMQVJJVFkuIFdlIHByb2JhYmx5IG5lZWQgCmxvZ2ljIHRvIHN3aXRjaCBiZXR3ZWVuIFBD SCBhbmQgQ1BVIFBXTXMuCgo+ICsJZWxzZQo+ICsJCW11bCA9IDEyODsKPiArCj4gKwlpZiAoZGV2 X3ByaXYtPnBjaF9pZCA9PSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBFKQo+ICsJCWNsb2Nr ID0gTUh6KDEzNSk7IC8qIExQVDpIICovCj4gKwllbHNlCj4gKwkJY2xvY2sgPSBNSHooMjQpOyAv KiBMUFQ6TFAgKi8KPiArCj4gKwlyZXR1cm4gY2xvY2sgLyAocHdtX2ZyZXFfaHogKiBtdWwpOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBJTEsvU05CL0lWQjogVGhpcyB2YWx1ZSByZXByZXNlbnRzIHRo ZSBwZXJpb2Qgb2YgdGhlIFBXTSBzdHJlYW0gaW4gUENICj4gKyAqIGRpc3BsYXkgcmF3IGNsb2Nr cyBtdWx0aXBsaWVkIGJ5IDEyOC4KPiArICovCj4gK3N0YXRpYyB1MzIgcGNoX2h6X3RvX3B3bShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiArewo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlpbnQg Y2xvY2sgPSBNSHooaW50ZWxfcGNoX3Jhd2NsayhkZXYpKTsKPiArCj4gKwlyZXR1cm4gY2xvY2sg LyAocHdtX2ZyZXFfaHogKiAxMjgpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBHZW4yOiBUaGlzIGZp ZWxkIGRldGVybWluZXMgdGhlIG51bWJlciBvZiB0aW1lIGJhc2UgZXZlbnRzIChkaXNwbGF5IGNv cmUKPiArICogY2xvY2sgZnJlcXVlbmN5LzMyKSBpbiB0b3RhbCBmb3IgYSBjb21wbGV0ZSBjeWNs ZSBvZiBtb2R1bGF0ZWQgYmFja2xpZ2h0Cj4gKyAqIGNvbnRyb2wuCj4gKyAqCj4gKyAqIEdlbjM6 IEEgdGltZSBiYXNlIGV2ZW50IGVxdWFscyB0aGUgZGlzcGxheSBjb3JlIGNsb2NrIChbRGV2UE5W XSBIUkFXIGNsb2NrKQo+ICsgKiBkaXZpZGVkIGJ5IDMyLgo+ICsgKi8KPiArc3RhdGljIHUzMiBp OXh4X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21f ZnJlcV9oeikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ICsJaW50IGNsb2NrOwo+ICsKPiArCWlmIChJU19QSU5FVklFVyhkZXYpKQo+ICsJ CWNsb2NrID0gaW50ZWxfaHJhd2NsayhkZXYpOwo+ICsJZWxzZQo+ICsJCWNsb2NrID0gMTAwMCAq IGRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldik7Cj4gKwo+ICsJ cmV0dXJuIGNsb2NrIC8gKHB3bV9mcmVxX2h6ICogMzIpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBH ZW40OiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHBlcmlvZCBvZiB0aGUgUFdNIHN0cmVhbSBp biBkaXNwbGF5IGNvcmUKPiArICogY2xvY2tzIG11bHRpcGxpZWQgYnkgMTI4Lgo+ICsgKi8KPiAr c3RhdGljIHUzMiBpOTY1X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsIHUzMiBwd21fZnJlcV9oeikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNv bm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IGNsb2NrID0gMTAwMCAqIGRldl9wcml2LT5kaXNw bGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldik7Cj4gKwo+ICsJcmV0dXJuIGNsb2NrIC8g KHB3bV9mcmVxX2h6ICogMTI4KTsKPiArfQo+ICsKPiArLyoKPiArICogVkxWOiBUaGlzIHZhbHVl IHJlcHJlc2VudHMgdGhlIHBlcmlvZCBvZiB0aGUgUFdNIHN0cmVhbSBpbiBkaXNwbGF5IGNvcmUK PiArICogY2xvY2tzIChbRGV2Q1RHXSAxMDBNSHogSFJBVyBjbG9ja3MpIG11bHRpcGxpZWQgYnkg MTI4IG9yIDI1TUh6IFMwSVggY2xvY2tzCgpWTFYgYW5kIENIViB1c2UgYSAyMDAgTWh6IEhSQVcg Y2xvY2suIFNpbmNlIHBhdGNoIDEgaW4gdGhlIHNlcmllcyBtb3ZlZCAKaW50ZWxfaHJhd2Nsaygp IGludG8gaW50ZWxfZGlzcGxheS5jIGxldHMgdXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBpbnN0ZWFk IApvZiB0aGUgaGFyZGNvZGVkIHZhbHVlLgoKPiArICogbXVsdGlwbGllZCBieSAxNi4KPiArICoK PiArICogWFhYOiBXaGVyZSBpcyB0aGlzIHNlbGVjdGVkPz8/CgpUaGlzIGlzIGN1cnJlbnRseSBz ZWxlY3RlZCBpbiBCaXQgMzAgb2YgQ0JSMV9WTFYuIE9mIGNvdXJzZSBpbnRlbF9wbS5jIAp3cml0 ZXMgdGhpcyByZWdpc3RlciBhcyAweDAgZHVyaW5nIGluaXQgc28gaXQgZG9lc24ndCBzdXJwcmlz ZSBtZSB0aGF0IAp0aGlzIHRlc3Qgd291bGQgYWxzbyBiZSAweDAuCgo+ICsgKi8KPiArc3RhdGlj IHUzMiB2bHZfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMy IHB3bV9mcmVxX2h6KQo+ICt7Cj4gKwlpZiAoMSkKPiArCQlyZXR1cm4gTUh6KDI1KSAvIChwd21f ZnJlcV9oeiAqIDE2KTsKCkNIViBhY3R1YWxseSB1c2VzIGEgMTkuMiBNSHogUzBJWCBjbG9jayBh bmQgc2luY2UgdGhlIE1IeigpIG1hY3JvIApkb2Vzbid0IGFjY2VwdCBmbG9hdHMgd2UgbmVlZCB0 byB1c2UgS0h6KCkgbWFjcm8uCgo+ICsJZWxzZQo+ICsJCXJldHVybiBNSHooMTAwKSAvIChwd21f ZnJlcV9oeiAqIDEyOCk7Cj4gK30KCkhlcmUgaXMgdGhlIG5ldyBmdW5jdGlvbiBmb3IgdGhlIDMg cHJldmlvdXMgaXNzdWVzCgovKgogICogVkxWOiBUaGlzIHZhbHVlIHJlcHJlc2VudHMgdGhlIHBl cmlvZCBvZiB0aGUgUFdNIHN0cmVhbSBpbiBkaXNwbGF5IGNvcmUKICAqIGNsb2NrcyAoW0RldkNU R10gMjAwTUh6IEhSQVcgY2xvY2tzKSBtdWx0aXBsaWVkIGJ5IDEyOCBvciAyNU1IeiBTMElYIApj bG9ja3MKICAqIG11bHRpcGxpZWQgYnkgMTYuIENIViB1c2VzIGEgMTkuMk1IeiBTMElYIGNsb2Nr LgogICoKICAqLwpzdGF0aWMgdTMyIHZsdl9oel90b19wd20oc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLCB1MzIgcHdtX2ZyZXFfaHopCnsKCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmJhc2UuZGV2OwoJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKCWludCBjbG9jazsKCglpZiAoKEk5MTVfUkVBRChDQlIxX1ZM VikgJiBDQlJfUFdNX0NMT0NLX01VWF9TRUxFQ1QpID09IDApCgkJaWYgKElTX0NIRVJSWVZJRVco ZGV2KSkgewoJCQlyZXR1cm4gS0h6KDE5MjAwKSAvIChwd21fZnJlcV9oeiAqIDE2KTsKCQl9CgkJ ZWxzZSB7CgkJCXJldHVybiBNSHooMjUpIC8gKHB3bV9mcmVxX2h6ICogMTYpOwoJCX0KCWVsc2Ug ewoJCWNsb2NrID0gaW50ZWxfaHJhd2NsayhkZXYpOwoJCXJldHVybiBNSHooY2xvY2spIC8gKHB3 bV9mcmVxX2h6ICogMTI4KTsKCX0KfQoKPiArCj4gK3N0YXRpYyB1MzIgZ2V0X2JhY2tsaWdodF9t YXhfdmJ0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJdTE2IHB3bV9mcmVx X2h6ID0gZGV2X3ByaXYtPnZidC5iYWNrbGlnaHQucHdtX2ZyZXFfaHo7Cj4gKwl1MzIgcHdtOwo+ ICsKPiArCWlmICghcHdtX2ZyZXFfaHopIHsKPiArCQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQg ZnJlcXVlbmN5IG5vdCBzcGVjaWZpZWQgaW4gVkJUXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0K PiArCj4gKwlpZiAoIWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9oel90b19wd20pIHsKPiAr CQlEUk1fREVCVUdfS01TKCJiYWNrbGlnaHQgZnJlcXVlbmN5IHNldHRpbmcgZnJvbSBWQlQgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuIik7Cj4gKwkJcmV0dXJuIDA7 Cj4gKwl9Cj4gKwo+ICsJcHdtID0gZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3 bShjb25uZWN0b3IsIHB3bV9mcmVxX2h6KTsKPiArCWlmICghcHdtKSB7Cj4gKwkJRFJNX0RFQlVH X0tNUygiYmFja2xpZ2h0IGZyZXF1ZW5jeSBjb252ZXJzaW9uIGZhaWxlZFxuIik7Cj4gKwkJcmV0 dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiYmFja2xpZ2h0IGZyZXF1ZW5jeSAl dSBIeiBmcm9tIFZCVFxuIiwgcHdtX2ZyZXFfaHopOwo+ICsKPiArCXJldHVybiBwd207Cj4gK30K PiArCj4gKy8qCj4gKyAqIE5vdGU6IFRoZSBzZXR1cCBob29rcyBjYW4ndCBhc3N1bWUgcGlwZSBp cyBzZXQhCj4gICAgKi8KPiAgIHN0YXRpYyB1MzIgZ2V0X2JhY2tsaWdodF9taW5fdmJ0KHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgIHsKPiBAQCAtMTI1NSw2ICsxMzcwLDEw IEBAIHN0YXRpYyBpbnQgYmR3X3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsIGVudW0gcGlwZSB1bnVzCj4KPiAgIAlwY2hfY3RsMiA9IEk5MTVfUkVBRChC TENfUFdNX1BDSF9DVEwyKTsKPiAgIAlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IHBjaF9jdGwyID4+ IDE2Owo+ICsKPiArCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gKwkJcGFuZWwtPmJhY2ts aWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92YnQoY29ubmVjdG9yKTsKPiArCj4gICAJaWYg KCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKPiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4KPiBAQCAtMTI4 MSw2ICsxNDAwLDEwIEBAIHN0YXRpYyBpbnQgcGNoX3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0gcGlwZSB1bnVzCj4KPiAgIAlwY2hfY3RsMiA9 IEk5MTVfUkVBRChCTENfUFdNX1BDSF9DVEwyKTsKPiAgIAlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9 IHBjaF9jdGwyID4+IDE2Owo+ICsKPiArCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gKwkJ cGFuZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92YnQoY29ubmVjdG9yKTsK PiArCj4gICAJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKPiAgIAkJcmV0dXJuIC1FTk9ERVY7 Cj4KPiBAQCAtMTMxMiwxMiArMTQzNSwxOCBAQCBzdGF0aWMgaW50IGk5eHhfc2V0dXBfYmFja2xp Z2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVudQo+ICAg CQlwYW5lbC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3dfcHdtID0gY3RsICYgQkxNX1BPTEFSSVRZX1BO VjsKPgo+ICAgCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gY3RsID4+IDE3Owo+IC0JaWYgKHBhbmVs LT5iYWNrbGlnaHQuY29tYmluYXRpb25fbW9kZSkKPiAtCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCAq PSAweGZmOwo+ICsKPiArCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpIHsKPiArCQlwYW5lbC0+ YmFja2xpZ2h0Lm1heCA9IGdldF9iYWNrbGlnaHRfbWF4X3ZidChjb25uZWN0b3IpOwo+ICsJCXBh bmVsLT5iYWNrbGlnaHQubWF4ID4+PSAxOwo+ICsJfQo+Cj4gICAJaWYgKCFwYW5lbC0+YmFja2xp Z2h0Lm1heCkKPiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4KPiArCWlmIChwYW5lbC0+YmFja2xpZ2h0 LmNvbWJpbmF0aW9uX21vZGUpCj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggKj0gMHhmZjsKPiAr Cj4gICAJcGFuZWwtPmJhY2tsaWdodC5taW4gPSBnZXRfYmFja2xpZ2h0X21pbl92YnQoY29ubmVj dG9yKTsKPgo+ICAgCXZhbCA9IGk5eHhfZ2V0X2JhY2tsaWdodChjb25uZWN0b3IpOwo+IEBAIC0x MzQxLDEyICsxNDcwLDE2IEBAIHN0YXRpYyBpbnQgaTk2NV9zZXR1cF9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgdW51Cj4KPiAgIAljdGwgPSBJ OTE1X1JFQUQoQkxDX1BXTV9DVEwpOwo+ICAgCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gY3RsID4+ IDE2Owo+IC0JaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29tYmluYXRpb25fbW9kZSkKPiAtCQlwYW5l bC0+YmFja2xpZ2h0Lm1heCAqPSAweGZmOwo+ICsKPiArCWlmICghcGFuZWwtPmJhY2tsaWdodC5t YXgpCj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92YnQoY29u bmVjdG9yKTsKPgo+ICAgCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gICAJCXJldHVybiAt RU5PREVWOwo+Cj4gKwlpZiAocGFuZWwtPmJhY2tsaWdodC5jb21iaW5hdGlvbl9tb2RlKQo+ICsJ CXBhbmVsLT5iYWNrbGlnaHQubWF4ICo9IDB4ZmY7Cj4gKwo+ICAgCXBhbmVsLT5iYWNrbGlnaHQu bWluID0gZ2V0X2JhY2tsaWdodF9taW5fdmJ0KGNvbm5lY3Rvcik7Cj4KPiAgIAl2YWwgPSBpOXh4 X2dldF9iYWNrbGlnaHQoY29ubmVjdG9yKTsKPiBAQCAtMTM4Niw2ICsxNTE5LDEwIEBAIHN0YXRp YyBpbnQgdmx2X3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsIGVudW0gcGlwZSBwaXBlCj4KPiAgIAljdGwgPSBJOTE1X1JFQUQoVkxWX0JMQ19QV01fQ1RM KHBpcGUpKTsKPiAgIAlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IGN0bCA+PiAxNjsKPiArCgp0aGUg Zm9yX2VhY2hfcGlwZSgpIGFib3ZlIHRoaXMgY29kZSBoYXJkY29kZXMgdGhlIHVwcGVyIDE2IGJp dHMgb2YgClZMVl9CTENfUFdNX0NUTCB0byAweEY0MiAoMzA3LjQgSHopIHNvIHRoaXMgY29kZSBu ZXZlciBleGVjdXRlcy4gCnJlbW92aW5nIHRoZSBmb3JfZWFjaF9waXBlIGJsb2NrIGFib3ZlIHRo ZXNlIGFkZHMgcmVzb2x2ZXMgdGhpcyBpc3N1ZS4KCj4gKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQu bWF4KQo+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gZ2V0X2JhY2tsaWdodF9tYXhfdmJ0KGNv bm5lY3Rvcik7Cj4gKwo+ICAgCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gICAJCXJldHVy biAtRU5PREVWOwo+Cj4gQEAgLTE0MTIsNiArMTU0OSwxMCBAQCBieHRfc2V0dXBfYmFja2xpZ2h0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVudXNlZCkKPiAg IAlwYW5lbC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3dfcHdtID0gcHdtX2N0bCAmIEJYVF9CTENfUFdN X1BPTEFSSVRZOwo+Cj4gICAJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBJOTE1X1JFQUQoQlhUX0JM Q19QV01fRlJFUTEpOwo+ICsKPiArCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4gKwkJcGFu ZWwtPmJhY2tsaWdodC5tYXggPSBnZXRfYmFja2xpZ2h0X21heF92YnQoY29ubmVjdG9yKTsKPiAr Cj4gICAJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKPiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4K PiBAQCAtMTUyNSwxMiArMTY2NiwxNCBAQCB2b2lkIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0 X2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmRp c2FibGVfYmFja2xpZ2h0ID0gcGNoX2Rpc2FibGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ ZGlzcGxheS5zZXRfYmFja2xpZ2h0ID0gYmR3X3NldF9iYWNrbGlnaHQ7Cj4gICAJCWRldl9wcml2 LT5kaXNwbGF5LmdldF9iYWNrbGlnaHQgPSBiZHdfZ2V0X2JhY2tsaWdodDsKPiArCQlkZXZfcHJp di0+ZGlzcGxheS5iYWNrbGlnaHRfaHpfdG9fcHdtID0gaHN3X2h6X3RvX3B3bTsKCldlIG5lZWQg dG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGZvciBTS0wsIGFuZCBCWFQgdGhhdCBkb2Vzbid0IHVz ZSB0aGUgCnV0aWxpdHkgcGluLiBhbmQgeWVzIEkgdW5kZXJzdGFuZCB0aGF0IHRoaXMgcGF0Y2gg d2FzIHN1Ym1pdHRlZCAyMCAKbW9udGhzIGFnby4gSSdtIGludmVzdGlnYXRpbmcgY2hhbmdlcyBm b3IgQkRXIGFuZCBTS0wgc3VwcG9ydC4KCj4gICAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRl dikpIHsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gcGNoX3NldHVw X2JhY2tsaWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodCA9IHBj aF9lbmFibGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5kaXNhYmxlX2JhY2ts aWdodCA9IHBjaF9kaXNhYmxlX2JhY2tsaWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0 X2JhY2tsaWdodCA9IHBjaF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5n ZXRfYmFja2xpZ2h0ID0gcGNoX2dldF9iYWNrbGlnaHQ7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXku YmFja2xpZ2h0X2h6X3RvX3B3bSA9IHBjaF9oel90b19wd207Cj4gICAJfSBlbHNlIGlmIChJU19W QUxMRVlWSUVXKGRldikpIHsKPiAgIAkJaWYgKGRldl9wcml2LT52YnQuaGFzX21pcGkpIHsKPiAg IAkJCWRldl9wcml2LT5kaXNwbGF5LnNldHVwX2JhY2tsaWdodCA9IHB3bV9zZXR1cF9iYWNrbGln aHQ7Cj4gQEAgLTE1NDQsNiArMTY4Nyw3IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGln aHRfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJCWRldl9wcml2LT5kaXNwbGF5 LmRpc2FibGVfYmFja2xpZ2h0ID0gdmx2X2Rpc2FibGVfYmFja2xpZ2h0Owo+ICAgCQkJZGV2X3By aXYtPmRpc3BsYXkuc2V0X2JhY2tsaWdodCA9IHZsdl9zZXRfYmFja2xpZ2h0Owo+ICAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IHZsdl9nZXRfYmFja2xpZ2h0Owo+ICsJCQlk ZXZfcHJpdi0+ZGlzcGxheS5iYWNrbGlnaHRfaHpfdG9fcHdtID0gdmx2X2h6X3RvX3B3bTsKPiAg IAkJfQo+ICAgCX0gZWxzZSBpZiAoSVNfR0VONChkZXYpKSB7Cj4gICAJCWRldl9wcml2LT5kaXNw bGF5LnNldHVwX2JhY2tsaWdodCA9IGk5NjVfc2V0dXBfYmFja2xpZ2h0Owo+IEBAIC0xNTUxLDEy ICsxNjk1LDE0IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGln aHQgPSBpOTY1X2Rpc2FibGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRf YmFja2xpZ2h0ID0gaTl4eF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5n ZXRfYmFja2xpZ2h0ID0gaTl4eF9nZXRfYmFja2xpZ2h0Owo+ICsJCWRldl9wcml2LT5kaXNwbGF5 LmJhY2tsaWdodF9oel90b19wd20gPSBpOTY1X2h6X3RvX3B3bTsKPiAgIAl9IGVsc2Ugewo+ICAg CQlkZXZfcHJpdi0+ZGlzcGxheS5zZXR1cF9iYWNrbGlnaHQgPSBpOXh4X3NldHVwX2JhY2tsaWdo dDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZW5hYmxlX2JhY2tsaWdodCA9IGk5eHhfZW5hYmxl X2JhY2tsaWdodDsKPiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSBp OXh4X2Rpc2FibGVfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFja2xp Z2h0ID0gaTl4eF9zZXRfYmFja2xpZ2h0Owo+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfYmFj a2xpZ2h0ID0gaTl4eF9nZXRfYmFja2xpZ2h0Owo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmJhY2ts aWdodF9oel90b19wd20gPSBpOXh4X2h6X3RvX3B3bTsKPiAgIAl9Cj4gICB9Cj4KPgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK