From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH 19/22] drm/i915: BDW: Pipe level Gamma correction Date: Tue, 13 Oct 2015 16:26:48 +0530 Message-ID: <561CE370.2030707@intel.com> References: <1444418952-5671-1-git-send-email-shashank.sharma@intel.com> <1444418952-5671-20-git-send-email-shashank.sharma@intel.com> <1444673344.1331.79.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1444673344.1331.79.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rob Bradford , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, jim.bish@intel.com, matthew.d.roper@intel.com, daniel.vetter@intel.com Cc: annie.j.matheson@intel.com, kausalmalladi@gmail.com, jesse.barnes@intel.com List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwpTaGFzaGFuawoKT24gMTAvMTIvMjAxNSAxMTozOSBQTSwgUm9iIEJyYWRmb3JkIHdy b3RlOgo+IE9uIFNhdCwgMjAxNS0xMC0xMCBhdCAwMDo1OSArMDUzMCwgU2hhc2hhbmsgU2hhcm1h IHdyb3RlOgo+PiBCRFcvU0tML0JYVCBwbGF0Zm9ybXMgc3VwcG9ydCB2YXJpb3VzIEdhbW1hIGNv cnJlY3Rpb24gbW9kZXMKPj4gd2hpY2ggYXJlOgo+PiAxLiBMZWdhY3kgOC1iaXQgbW9kZQo+PiAy LiAxMC1iaXQgU3BsaXQgR2FtbWEgbW9kZQo+PiAzLiAxMi1iaXQgbW9kZQo+Pgo+PiBUaGlzIHBh dGNoIGRvZXMgdGhlIGZvbGxvd2luZzoKPj4gMS4gQWRkcyB0aGUgY29yZSBmdW5jdGlvbiB0byBw cm9ncmFtIEdhbW1hIGNvcnJlY3Rpb24gdmFsdWVzCj4+ICAgICBmb3IgQkRXL1NLTC9CWFQgcGxh dGZvcm1zCj4+IDIuIEFkZHMgR2FtbWEgY29ycmVjdGlvbiBtYWNyb3MvZGVmaW5lcwo+Pgo+PiBT aWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+ Cj4+IFNpZ25lZC1vZmYtYnk6IEthdXNhbCBNYWxsYWRpIDxrYXVzYWxtYWxsYWRpQGdtYWlsLmNv bT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAg IHwgIDI1ICsrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIu YyB8IDI0OAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaCB8ICAgNiArCj4+ICAgMyBmaWxlcyBjaGFu Z2VkLCAyNzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4+IGluZGV4IDU4MjVhYjIuLmVkNTBmNzUgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+PiBAQCAtNTY0NywxMSArNTY0NywxNSBAQCBlbnVtIHNrbF9kaXNwX3Bv d2VyX3dlbGxzIHsKPj4gICAvKiBsZWdhY3kgcGFsZXR0ZSAqLwo+PiAgICNkZWZpbmUgX0xHQ19Q QUxFVFRFX0EgICAgICAgICAgIDB4NGEwMDAKPj4gICAjZGVmaW5lIF9MR0NfUEFMRVRURV9CICAg ICAgICAgICAweDRhODAwCj4+IC0jZGVmaW5lIExHQ19QQUxFVFRFKHBpcGUsIGkpIChfUElQRShw aXBlLCBfTEdDX1BBTEVUVEVfQSwKPj4gX0xHQ19QQUxFVFRFX0IpICsgKGkpICogNCkKPj4gKyNk ZWZpbmUgX0xHQ19QQUxFVFRFX0MgICAgICAgICAgIDB4NGIwMDAKPj4gKyNkZWZpbmUgTEdDX1BB TEVUVEUocGlwZSwgaSkgKF9QSVBFMyhwaXBlLCBfTEdDX1BBTEVUVEVfQSwKPj4gX0xHQ19QQUxF VFRFX0IsIFwKPj4gKwkJCSBfTEdDX1BBTEVUVEVfQykgKyAoaSkgKiA0KQo+Pgo+PiAgICNkZWZp bmUgX0dBTU1BX01PREVfQQkJMHg0YTQ4MAo+PiAgICNkZWZpbmUgX0dBTU1BX01PREVfQgkJMHg0 YWM4MAo+PiAtI2RlZmluZSBHQU1NQV9NT0RFKHBpcGUpIF9QSVBFKHBpcGUsIF9HQU1NQV9NT0RF X0EsIF9HQU1NQV9NT0RFX0IpCj4+ICsjZGVmaW5lIF9HQU1NQV9NT0RFX0MJCTB4NGI0ODAKPj4g KyNkZWZpbmUgR0FNTUFfTU9ERShwaXBlKSBcCj4+ICsJX1BJUEUzKHBpcGUsIF9HQU1NQV9NT0RF X0EsIF9HQU1NQV9NT0RFX0IsIF9HQU1NQV9NT0RFX0MpCj4+ICAgI2RlZmluZSBHQU1NQV9NT0RF X01PREVfTUFTSwkoMyA8PCAwKQo+PiAgICNkZWZpbmUgR0FNTUFfTU9ERV9NT0RFXzhCSVQJKDAg PDwgMCkKPj4gICAjZGVmaW5lIEdBTU1BX01PREVfTU9ERV8xMEJJVAkoMSA8PCAwKQo+PiBAQCAt ODA2Miw2ICs4MDY2LDIzIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+PiAgICNkZWZp bmUgX1BJUEVfQ1NDX0JBU0UocGlwZSkgXAo+PiAgIAkoX1BJUEUzKHBpcGUsIFBJUEVBX0NHTV9D U0MsIFBJUEVCX0NHTV9DU0MsIFBJUEVDX0NHTV9DU0MpKQo+Pgo+PiArLyogQkRXIGdhbW1hIGNv cnJlY3Rpb24gKi8KPj4gKyNkZWZpbmUgUEFMX1BSRUNfSU5ERVhfQSAgICAgICAgICAgICAgICAg ICAgICAgMHg0QTQwMAo+PiArI2RlZmluZSBQQUxfUFJFQ19JTkRFWF9CICAgICAgICAgICAgICAg ICAgICAgICAweDRBQzAwCj4+ICsjZGVmaW5lIFBBTF9QUkVDX0lOREVYX0MgICAgICAgICAgICAg ICAgICAgICAgIDB4NEI0MDAKPj4gKyNkZWZpbmUgUEFMX1BSRUNfREFUQV9BICAgICAgICAgICAg ICAgICAgICAgICAgMHg0QTQwNAo+PiArI2RlZmluZSBQQUxfUFJFQ19EQVRBX0IgICAgICAgICAg ICAgICAgICAgICAgICAweDRBQzA0Cj4+ICsjZGVmaW5lIFBBTF9QUkVDX0RBVEFfQyAgICAgICAg ICAgICAgICAgICAgICAgIDB4NEI0MDQKPj4gKyNkZWZpbmUgUEFMX1BSRUNfR0NNQVhfQQkJCTB4 NEE0MTAKPj4gKyNkZWZpbmUgUEFMX1BSRUNfR0NNQVhfQgkJCTB4NEFDMTAKPj4gKyNkZWZpbmUg UEFMX1BSRUNfR0NNQVhfQwkJCTB4NEI0MTAKPj4gKwo+PiArI2RlZmluZSBfUFJFQ19QQUxfSU5E RVgocGlwZSkgXAo+PiArCShfUElQRTMocGlwZSwgUEFMX1BSRUNfSU5ERVhfQSwgUEFMX1BSRUNf SU5ERVhfQiwKPj4gUEFMX1BSRUNfSU5ERVhfQykpCj4+ICsjZGVmaW5lIF9QUkVDX1BBTF9EQVRB KHBpcGUpIFwKPj4gKwkoX1BJUEUzKHBpcGUsIFBBTF9QUkVDX0RBVEFfQSwgUEFMX1BSRUNfREFU QV9CLAo+PiBQQUxfUFJFQ19EQVRBX0MpKQo+PiArI2RlZmluZSBfUFJFQ19QQUxfR0NNQVgocGlw ZSkgXAo+PiArCShfUElQRTMocGlwZSwgUEFMX1BSRUNfR0NNQVhfQSwgUEFMX1BSRUNfR0NNQVhf QiwKPj4gUEFMX1BSRUNfR0NNQVhfQykpCj4+Cj4+Cj4+ICAgI2VuZGlmIC8qIF9JOTE1X1JFR19I XyAqLwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFu YWdlci5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdlci5jCj4+ IGluZGV4IGQ1MzE1YjIuLjc0ZjhmYzMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jb2xvcl9tYW5hZ2VyLmMKPj4gQEAgLTI2LDYgKzI2LDI1MiBAQAo+PiAgICAqLwo+Pgo+ PiAgICNpbmNsdWRlICJpbnRlbF9jb2xvcl9tYW5hZ2VyLmgiCj4+ICtzdGF0aWMgdm9pZCBiZHdf d3JpdGVfMTBiaXRfZ2FtbWFfcHJlY2lzaW9uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICsJ c3RydWN0IGRybV9yMzJnMzJiMzIgKmNvcnJlY3Rpb25fdmFsdWVzLCB1MzIgcGFsX3ByZWNfZGF0 YSwKPj4gKwkJCXUzMiBub19vZl9jb2VmZikKPj4gK3sKPj4gKwl1MTYgYmx1ZV9mcmFjdCwgZ3Jl ZW5fZnJhY3QsIHJlZF9mcmFjdDsKPj4gKwl1MzIgd29yZCA9IDA7Cj4+ICsJdTMyIGNvdW50ID0g MDsKPj4gKwl1MzIgYmx1ZSwgZ3JlZW4sIHJlZDsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCj4+ICsJd2hpbGUgKGNvdW50IDwg bm9fb2ZfY29lZmYpIHsKPj4gKwo+PiArCQlibHVlID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRd LmIzMjsKPj4gKwkJZ3JlZW4gPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uZzMyOwo+PiArCQly ZWQgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0ucjMyOwo+PiArCj4+ICsJCS8qCj4+ICsJCSog TWF4aW11bSBwb3NzaWJsZSBnYW1tYSBjb3JyZWN0aW9uIHZhbHVlIHN1cHBvcnRlZAo+PiArCQkq IGZvciBCRFcgaXMgMHhGRkZGRkZGRiwgc28gY2xpcCB0aGUgdmFsdWVzCj4+IGFjY29yZGluZ2x5 Cj4+ICsJCSovCj4KPiBJIHRoaW5rIHlvdSBtZWFuIGNsYW1wIG5vdCBjbGlwLgpZZXMsIHdpbGwg Zml4IHRoaXMuCj4KPj4gKwkJaWYgKGJsdWUgPj0gQkRXX01BWF9HQU1NQSkKPj4gKwkJCWJsdWUg PSBCRFdfTUFYX0dBTU1BOwo+PiArCQlpZiAoZ3JlZW4gPj0gQkRXX01BWF9HQU1NQSkKPj4gKwkJ CWdyZWVuID0gQkRXX01BWF9HQU1NQTsKPj4gKwkJaWYgKHJlZCA+PSBCRFdfTUFYX0dBTU1BKQo+ PiArCQkJcmVkID0gQkRXX01BWF9HQU1NQTsKPgo+IFNvIHRoaXMgaGFuZGxlcyB0aGUgaXNzdWUg dGhhdCB3YXMgcmFpc2VkIGJlZm9yZSB0aGF0IDEuMCBpbiA4LjI0Cj4gc2hvdWxkIG1hcCB0byAx MDIzLgpZZXMuCj4KPj4gKwo+PiArCQkvKgo+PiArCQkqIEdhbW1hIGNvcnJlY3Rpb24gdmFsdWVz IGFyZSBzZW50IGluIDguMjQgZm9ybWF0Cj4+ICsJCSogd2l0aCA4IGludCBhbmQgMjQgZnJhY3Rp b24gYml0cy4gQkRXIDEwIGJpdCBnYW1tYQo+PiArCQkqIHVuaXQgZXhwZWN0cyBjb3JyZWN0aW9u IHJlZ2lzdGVycyB0byBiZSBwcm9ncmFtbWVkCj4+IGluCj4+ICsJCSogMC4xMCBmb3JtYXQsIHdp dGggMCBpbnQgYW5kIDE2IGZyYWN0aW9uIGJpdHMuIFNvCj4+IHRha2UKPj4gKwkJKiBNU0IgMTAg Yml0IHZhbHVlcyhiaXRzIDIzLTE0KSBmcm9tIHRoZSBmcmFjdGlvbgo+PiBwYXJ0IGFuZAo+PiAr CQkqIHByZXBhcmUgdGhlIGNvcnJlY3Rpb24gcmVnaXN0ZXJzLgo+PiArCQkqLwo+PiArCQlibHVl X2ZyYWN0ID0gR0VUX0JJVFMoYmx1ZSwgMTQsIDEwKTsKPj4gKwkJZ3JlZW5fZnJhY3QgPSBHRVRf QklUUyhncmVlbiwgMTQsIDEwKTsKPj4gKwkJcmVkX2ZyYWN0ID0gR0VUX0JJVFMocmVkLCAxNCwg MTApOwo+PiArCj4KPiBJIHRoaW5rIHRoaXMgc2hvdWxkIHJvdW5kIHRvIHRoZSBuZWFyZXN0IHJh dGhlciB0aGFuIGZsb29yLgo+CldoeSA/IHdlIGFyZSBnZXR0aW5nIHRoZSBleGFjdCB2YWx1ZXMg YWxyZWFkeS4KPj4gKwkJLyogQXJyYW5nZTogUmVkICgyOToyMCkgR3JlZW4gKDE5OjEwKSBhbmQg Qmx1ZSAoOTowKQo+PiAqLwo+PiArCQlTRVRfQklUUyh3b3JkLCByZWRfZnJhY3QsIDIwLCAxMCk7 Cj4+ICsJCVNFVF9CSVRTKHdvcmQsIHJlZF9mcmFjdCwgMTAsIDEwKTsKPj4gKwkJU0VUX0JJVFMo d29yZCwgcmVkX2ZyYWN0LCAwLCAxMCk7Cj4KPiBSZWQgaXMgbXkgZmF2b3VyaXRlIGNvbG91ciB0 b28sIGlzIHRoYXQgd2h5IHlvdSBwcm9ncmFtbWVkIGFsbCB0aGUKPiBjaGFubmVscyB0byB0aGUg cmVkIGJpdHM/IDotKQpHdWlsdHkgOikuIFdoaWxlIHRlc3RpbmcsIGFsbCB0aGUgY2hhbm5lbHMg aGF2ZSB0aGUgc2FtZSB2YWx1ZXMsIHNvIGl0IApkaW50IG1hdHRlci4gSSB3aWxsIGZpeCB0aGlz Lgo+Cj4+ICsJCUk5MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgd29yZCk7Cj4+ICsJCWNvdW50Kys7 Cj4+ICsJfQo+PiArCURSTV9ERUJVR19EUklWRVIoIkdhbW1hIGNvcnJlY3Rpb24gcHJvZ3JhbW1l ZFxuIik7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgYmR3X3dyaXRlXzEyYml0X2dhbW1hX3ByZWNpc2lv bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiArCXN0cnVjdCBkcm1fcjMyZzMyYjMyICpjb3Jy ZWN0aW9uX3ZhbHVlcywgdTMyIHBhbF9wcmVjX2RhdGEsCj4+ICsJCWVudW0gcGlwZSBwaXBlKQo+ PiArewo+PiArCXVpbnQxNl90IGJsdWVfZnJhY3QsIGdyZWVuX2ZyYWN0LCByZWRfZnJhY3Q7Cj4+ ICsJdWludDMyX3QgZ2NtYXg7Cj4+ICsJdWludDMyX3Qgd29yZCA9IDA7Cj4+ICsJdWludDMyX3Qg Y291bnQgPSAwOwo+PiArCXVpbnQzMl90IGdjbWF4X3JlZzsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiArCj4+ICsJLyogUHJvZ3Jh bSBmaXJzdCA1MTIgdmFsdWVzIGluIHByZWNpc2lvbiBwYWxldHRlICovCj4+ICsJd2hpbGUgKGNv dW50IDwgQkRXXzEyQklUX0dBTU1BX01BWF9WQUxTIC0gMSkgewo+PiArCQkvKgo+PiArCQkqIEZy YW1ld29yaydzIGdlbmVyYWwgZ2FtbWEgZm9ybWF0IGlzIDguMjQgKDggaW50IDE2Cj4+IGZyYWN0 aW9uKQo+PiArCQkqIEJEVyBQbGF0Zm9ybSdzIHN1cHBvcnRlZCBnYW1tYSBmb3JtYXQgaXMgMTYg Yml0Cj4+IGNvcnJlY3Rpb24KPj4gKwkJKiB2YWx1ZXMgaW4gMC4xNiBmb3JtYXQuIFNvIGV4dHJh Y3QgaGlnaGVyIDE2Cj4+IGZyYWN0aW9uIGJpdHMKPj4gKwkJKiBmcm9tIDguMjQgZ2FtbWEgY29y cmVjdGlvbiB2YWx1ZXMuCj4+ICsJCSovCj4+ICsJCXJlZF9mcmFjdCA9IEdFVF9CSVRTKGNvcnJl Y3Rpb25fdmFsdWVzW2NvdW50XS5yMzIsCj4+IDgsIDE2KTsKPj4gKwkJZ3JlZW5fZnJhY3QgPSBH RVRfQklUUyhjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uZzMyLAo+PiA4LCAxNik7Cj4+ICsJCWJs dWVfZnJhY3QgPSBHRVRfQklUUyhjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uYjMyLAo+PiA4LCAx Nik7Cj4KPiBBZ2FpbiwgMS4wIGluIDguMjQgd2lsbCByZXN1bHQgaW4geW91IHByb2dyYW1taW5n IHplcm9zIHJhdGhlciB0aGFuCj4gbWF4LgpXaWxsIGFkZCB0aGUgbWF4IGNoZWNrIGFuZCBjb252 ZXJzaW9uIGhlcmUgYWxzby4KPgo+PiArCQkvKgo+PiArCQkqIEZyb20gdGhlIGJzcGVjOgo+PiAr CQkqIEZvciAxMiBiaXQgZ2FtbWEgY29ycmVjdGlvbiwgcHJvZ3JhbSBwcmVjaXNpb24KPj4gcGFs ZXR0ZQo+PiArCQkqIHdpdGggMTYgYml0cyBwZXIgY29sb3IgaW4gYSAwLjE2IGZvcm1hdCB3aXRo IDAKPj4gaW50ZWdlciBhbmQKPj4gKwkJKiAxNiBmcmFjdGlvbmFsIGJpdHMgKHVwcGVyIDEwIGJp dHMgaW4gb2RkIGluZGV4ZXMsCj4+IGxvd2VyIDYKPj4gKwkJKiBiaXRzIGluIGV2ZW4gaW5kZXhl cykKPj4gKwkJKi8KPj4gKwo+PiArCQkvKiBFdmVuIGluZGV4OiBMb3dlciA2IGJpdHMgZnJvbSBj b3JyZWN0aW9uIHNob3VsZAo+PiBnbyBhcyBNU0IgKi8KPj4gKwkJU0VUX0JJVFMod29yZCwgR0VU X0JJVFMocmVkX2ZyYWN0LCAwLCA2KSwgMjQsIDYpOwo+PiArCQlTRVRfQklUUyh3b3JkLCBHRVRf QklUUyhncmVlbl9mcmFjdCwgMCwgNiksIDE0LCA2KTsKPj4gKwkJU0VUX0JJVFMod29yZCwgR0VU X0JJVFMoYmx1ZV9mcmFjdCwgMCwgNiksIDQsIDYpOwo+PiArCQlJOTE1X1dSSVRFKHBhbF9wcmVj X2RhdGEsIHdvcmQpOwo+PiArCj4+ICsJCXdvcmQgPSAweDA7Cj4+ICsJCS8qIE9kZCBpbmRleDog VXBwZXIgMTAgYml0cyBvZiBjb3JyZWN0aW9uIHNob3VsZCBnbwo+PiBhcyBNU0IgKi8KPj4gKwkJ U0VUX0JJVFMod29yZCwgR0VUX0JJVFMocmVkX2ZyYWN0LCA2LCAxMCksIDIwLCAxMCk7Cj4+ICsJ CVNFVF9CSVRTKHdvcmQsIEdFVF9CSVRTKGdyZWVuX2ZyYWN0LCA2LCAxMCksIDEwLAo+PiAxMCk7 Cj4+ICsJCVNFVF9CSVRTKHdvcmQsIEdFVF9CSVRTKGJsdWVfZnJhY3QsIDYsIDEwKSwgMCwgMTAp Owo+PiArCj4+ICsJCUk5MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgd29yZCk7Cj4+ICsJCWNvdW50 Kys7Cj4+ICsJfQo+PiArCj4+ICsJLyogTm93IHByb2dyYW0gdGhlIDUxM3RoIHZhbHVlIGluIEdD TUFYIHJlZ3MgKi8KPj4gKwl3b3JkID0gMDsKPj4gKwlnY21heF9yZWcgPSBfUFJFQ19QQUxfR0NN QVgocGlwZSk7Cj4+ICsJZ2NtYXggPSBtaW5fdCh1MzIsIEdFVF9CSVRTKGNvcnJlY3Rpb25fdmFs dWVzW2NvdW50XS5yMzIsIDgsCj4+IDE3KSwKPj4gKwkJCQlCRFdfTUFYX0dBTU1BKTsKPj4gKwlT RVRfQklUUyh3b3JkLCBnY21heCwgMCwgMTcpOwo+PiArCUk5MTVfV1JJVEUoZ2NtYXhfcmVnLCB3 b3JkKTsKPj4gKwlnY21heF9yZWcgKz0gNDsKPj4gKwo+PiArCXdvcmQgPSAwOwo+PiArCWdjbWF4 ID0gbWluX3QodTMyLCBHRVRfQklUUyhjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0uZzMyLCA4LAo+ PiAxNyksCj4+ICsJCQkJQkRXX01BWF9HQU1NQSk7Cj4+ICsJU0VUX0JJVFMod29yZCwgZ2NtYXgs IDAsIDE3KTsKPj4gKwlJOTE1X1dSSVRFKGdjbWF4X3JlZywgd29yZCk7Cj4+ICsJZ2NtYXhfcmVn ICs9IDQ7Cj4+ICsKPj4gKwl3b3JkID0gMDsKPj4gKwlnY21heCA9IG1pbl90KHUzMiwgR0VUX0JJ VFMoY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmIzMiwgOCwKPj4gMTcpLAo+PiArCQkJCUJEV19N QVhfR0FNTUEpOwo+PiArCVNFVF9CSVRTKHdvcmQsIGdjbWF4LCAwLCAxNyk7Cj4+ICsJSTkxNV9X UklURShnY21heF9yZWcsIHdvcmQpOwo+PiArfQo+PiArCj4+ICsvKiBBcHBseSB1bml0eSBnYW1t YSBmb3IgZ2FtbWEgcmVzZXQgKi8KPj4gK3N0YXRpYyB2b2lkIGJkd19yZXNldF9nYW1tYShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICsJCQllbnVtIHBpcGUgcGlwZSkKPj4g K3sKPj4gKwl1MTYgY291bnQgPSAwOwo+PiArCXUzMiB2YWw7Cj4+ICsJdTMyIHBhbF9wcmVjX2Rh dGEgPSBMR0NfUEFMRVRURShwaXBlLCAwKTsKPj4gKwo+PiArCURSTV9ERUJVR19EUklWRVIoIlxu Iik7Cj4+ICsKPj4gKwkvKiBSZXNldCB0aGUgcGFsZXR0ZSBmb3IgdW5pdCBnYW1tYSAqLwo+PiAr CXdoaWxlIChjb3VudCA8IEJEV184QklUX0dBTU1BX01BWF9WQUxTKSB7Cj4+ICsJCS8qIFJlZCAo MjM6MTYpIEdyZWVuICgxNTo4KSBhbmQgQmx1ZSAoNzowKSAqLwo+PiArCQl2YWwgPSAoY291bnQg PDwgMTYpIHwgKGNvdW50IDw8IDgpIHwgY291bnQ7Cj4+ICsJCUk5MTVfV1JJVEUocGFsX3ByZWNf ZGF0YSwgdmFsKTsKPj4gKwkJcGFsX3ByZWNfZGF0YSArPSA0Owo+PiArCQljb3VudCsrOwo+PiAr CX0KPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBiZHdfc2V0X2dhbW1hKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdAo+PiBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiwKPj4gKwkJCXN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPj4gK3sKPj4gKwl1MTYgYmx1ZV9mcmFjdCwgZ3JlZW5fZnJhY3Qs IHJlZF9mcmFjdDsKPj4gKwllbnVtIHBpcGUgcGlwZTsKPj4gKwlpbnQgY291bnQsIG51bV9zYW1w bGVzOwo+PiArCXUzMiBibHVlLCBncmVlbiwgcmVkOwo+PiArCXUzMiBtb2RlLCBwYWxfcHJlY19p bmRleCwgcGFsX3ByZWNfZGF0YTsKPj4gKwl1MzIgaW5kZXg7Cj4+ICsJdTMyIHdvcmQgPSAwOwo+ PiArCXN0cnVjdCBkcm1fcGFsZXR0ZSAqZ2FtbWFfZGF0YTsKPj4gKwlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlID0gY3J0Yy0+c3RhdGU7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzdHJ1Y3QgZHJtX3IzMmczMmIzMiAq Y29ycmVjdGlvbl92YWx1ZXMgPSBOVUxMOwo+PiArCj4+ICsJaWYgKFdBUk5fT04oIWJsb2IpKQo+ PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCWdhbW1hX2RhdGEgPSAoc3RydWN0IGRybV9w YWxldHRlICopYmxvYi0+ZGF0YTsKPj4gKwlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlw ZTsKPj4gKwludW1fc2FtcGxlcyA9IGdhbW1hX2RhdGEtPm51bV9zYW1wbGVzOwo+PiArCj4+ICsJ cGFsX3ByZWNfaW5kZXggPSBfUFJFQ19QQUxfSU5ERVgocGlwZSk7Cj4+ICsJcGFsX3ByZWNfZGF0 YSA9IF9QUkVDX1BBTF9EQVRBKHBpcGUpOwo+PiArCj4+ICsJY29ycmVjdGlvbl92YWx1ZXMgPSAo c3RydWN0IGRybV9yMzJnMzJiMzIgKikmZ2FtbWFfZGF0YQo+PiAtPmx1dDsKPj4gKwlpbmRleCA9 IEk5MTVfUkVBRChwYWxfcHJlY19pbmRleCk7Cj4+ICsKPj4gKwlzd2l0Y2ggKG51bV9zYW1wbGVz KSB7Cj4+ICsJY2FzZSBHQU1NQV9ESVNBQkxFX1ZBTFM6Cj4+ICsKPj4gKwkJLyogRGlzYWJsZSBH YW1tYSBmdW5jdGlvbmFsaXR5IG9uIFBpcGUgKi8KPj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiRGlz YWJsaW5nIGdhbW1hIG9uIFBpcGUgJWNcbiIsCj4+ICsJCXBpcGVfbmFtZShwaXBlKSk7Cj4+ICsJ CW1vZGUgPSBJOTE1X1JFQUQoR0FNTUFfTU9ERShwaXBlKSk7Cj4+ICsJCWlmICgobW9kZSAmIEdB TU1BX01PREVfTU9ERV9NQVNLKSA9PQo+PiBHQU1NQV9NT0RFX01PREVfMTJCSVQpCj4+ICsJCQli ZHdfcmVzZXRfZ2FtbWEoZGV2X3ByaXYsIHBpcGUpOwo+Cj4gV2h5IG9ubHkgY2FsbCBiZHdfcmVz ZXRfZ2FtbWEoKSBpZiB3ZSB3ZXJlIGluIDEyLWJpdCBtb2RlPyBXaGF0IGFib3V0Cj4gdGhlIG90 aGVyIG1vZGVzPyBXaGF0IGFib3V0IGlmIHNvbWVib2R5IGhhcyBwcm9ncmFtbWVkIHRoZSB2YWx1 ZQo+IHRocm91Z2ggdGhlIGxlZ2FjeSBpb2N0bD8KV2UgdGVzdGVkIHRoaXMgcGFydCwgaXRzIG9u bHkgcmVxdWlyZWQgZm9yIDEyIGJpdCBnYW1tYS4gVGhlIGxlZ2FjeSAKSU9DVEwgb25seSBwcm9n cmFtcyA4Yml0IGdhbW1hLCB3aGljaCBkb2VzbnQgbmVlZCB0aGlzIGFueXdheXMsIGNveiB3ZSAK YXJlIG92ZXJ3cml0aW5nIGxlZ2FjeSBwYWxldHRlIHRvIGdhbW1hID0gMSwgd2hpbGUgZGlzYWJs aW5nIGdhbW1hLiBJZiAKd2UgZG9udCBkbyB0aGlzIGZvciAxMiBiaXQgZ2FtbWEsIHNjcmVlbiBn b2VzIGFsbCBibGFjay4KPgo+PiArCQlzdGF0ZS0+cGFsZXR0ZV9hZnRlcl9jdG1fYmxvYiA9IE5V TEw7Cj4+ICsJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVfOEJJVDsKPj4gKwkJYnJlYWs7Cj4+ICsK Pj4gKwljYXNlIEJEV184QklUX0dBTU1BX01BWF9WQUxTOgo+PiArCj4+ICsJCS8qIExlZ2FjeSBw YWxldHRlICovCj4+ICsJCXBhbF9wcmVjX2RhdGEgPSBMR0NfUEFMRVRURShwaXBlLCAwKTsKPj4g KwkJY291bnQgPSAwOwo+PiArCQl3aGlsZSAoY291bnQgPCBCRFdfOEJJVF9HQU1NQV9NQVhfVkFM Uykgewo+PiArCQkJYmx1ZSA9IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5iMzI7Cj4+ICsJCQln cmVlbiA9IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5nMzI7Cj4+ICsJCQlyZWQgPSBjb3JyZWN0 aW9uX3ZhbHVlc1tjb3VudF0ucjMyOwo+PiArCj4+ICsJCQlibHVlX2ZyYWN0ID0gR0VUX0JJVFMo Ymx1ZSwgMTYsIDgpOwo+PiArCQkJZ3JlZW5fZnJhY3QgPSBHRVRfQklUUyhncmVlbiwgMTYsIDgp Owo+PiArCQkJcmVkX2ZyYWN0ID0gR0VUX0JJVFMocmVkLCAxNiwgOCk7Cj4KPiBTaG91bGRuJ3Qg dGhlc2Ugcm91bmQ/IFJhdGhlciB0aGFuIGFsd2F5cyBmbG9vci4KV2h5ID8gVGhpcyBpcyBleGFj dCB2YWx1ZS4KID4gQWxzbyAxLjAgaW4gOC4yNAo+IGZvcm1hdCB3aWxsIHJlc3VsdCBpbiB5b3Ug cHJvZ3JhbW1pbmcgemVybyBpbnRvIHRoZSBwYWxldHRlLiBZb3UgbmVlZAo+IHRvIGRvIHRoZSBt YXggY2xhbXBpbmcgYWdhaW4uCldpbGwgZml4IHRoaXMgcGFydC4KPgo+PiArCj4+ICsJCQkvKiBC bHVlICg3OjApIEdyZWVuICgxNTo4KSBhbmQgUmVkICgyMzoxNikKPj4gKi8KPj4gKwkJCVNFVF9C SVRTKHdvcmQsIGJsdWVfZnJhY3QsIDAsIDgpOwo+PiArCQkJU0VUX0JJVFMod29yZCwgZ3JlZW5f ZnJhY3QsIDgsIDgpOwo+PiArCQkJU0VUX0JJVFMod29yZCwgYmx1ZV9mcmFjdCwgMTYsIDgpOwo+ PiArCQkJSTkxNV9XUklURShwYWxfcHJlY19kYXRhLCB3b3JkKTsKPj4gKwkJCXBhbF9wcmVjX2Rh dGEgKz0gNDsKPj4gKwkJCWNvdW50Kys7Cj4KPiBUaGlzIGNvZGUgYWxzbyBuZWVkcyB0byBiZSBt YWRlIHRvIHdvcmsgbmljZWx5IHdpdGggb3RoZXIgdXNlcnMgb2YKPiBMR0NfUEFMRVRURS4KVGhp cyBpcyBhbnl3YXlzIHdvcmtpbmcgd2l0aCBMR0MgSU9DVEwsIGJ1dCB3aWxsIGNsZWFuIGl0IHVw IGZ1cnRoZXIuCj4KPj4gKwkJfQo+PiArCQl3b3JkID0gR0FNTUFfTU9ERV9NT0RFXzhCSVQ7Cj4+ ICsJCWJyZWFrOwo+PiArCj4+ICsJY2FzZSBCRFdfU1BMSVRHQU1NQV9NQVhfVkFMUzoKPj4gKwo+ PiArCQlpbmRleCB8PSBCRFdfSU5ERVhfQVVUT19JTkNSRU1FTlQgfAo+PiBCRFdfSU5ERVhfU1BM SVRfTU9ERTsKPj4gKwkJSTkxNV9XUklURShwYWxfcHJlY19pbmRleCwgaW5kZXgpOwo+PiArCQli ZHdfd3JpdGVfMTBiaXRfZ2FtbWFfcHJlY2lzaW9uKGRldiwKPj4gY29ycmVjdGlvbl92YWx1ZXMs Cj4+ICsJCQlwYWxfcHJlY19kYXRhLCBCRFdfU1BMSVRHQU1NQV9NQVhfVkFMUyk7Cj4+ICsJCXdv cmQgPSBHQU1NQV9NT0RFX01PREVfU1BMSVQ7Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICsJY2FzZSBC RFdfMTJCSVRfR0FNTUFfTUFYX1ZBTFM6Cj4+ICsKPj4gKwkJaW5kZXggfD0gQkRXX0lOREVYX0FV VE9fSU5DUkVNRU5UOwo+PiArCQlpbmRleCAmPSB+QkRXX0lOREVYX1NQTElUX01PREU7Cj4+ICsJ CUk5MTVfV1JJVEUocGFsX3ByZWNfaW5kZXgsIGluZGV4KTsKPj4gKwkJYmR3X3dyaXRlXzEyYml0 X2dhbW1hX3ByZWNpc2lvbihkZXYsCj4+IGNvcnJlY3Rpb25fdmFsdWVzLAo+PiArCQkJcGFsX3By ZWNfZGF0YSwgcGlwZSk7Cj4+ICsJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVfMTJCSVQ7Cj4+ICsJ CWJyZWFrOwo+PiArCj4+ICsJY2FzZSBCRFdfMTBCSVRfR0FNTUFfTUFYX1ZBTFM6Cj4+ICsJCWlu ZGV4IHw9IEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVDsKPj4gKwkJaW5kZXggJj0gfkJEV19JTkRF WF9TUExJVF9NT0RFOwo+PiArCQlJOTE1X1dSSVRFKHBhbF9wcmVjX2luZGV4LCBpbmRleCk7Cj4+ ICsJCWJkd193cml0ZV8xMGJpdF9nYW1tYV9wcmVjaXNpb24oZGV2LAo+PiBjb3JyZWN0aW9uX3Zh bHVlcywKPj4gKwkJCXBhbF9wcmVjX2RhdGEsIEJEV18xMEJJVF9HQU1NQV9NQVhfVkFMUyk7Cj4+ ICsJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVfMTBCSVQ7Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICsJ ZGVmYXVsdDoKPj4gKwkJRFJNX0VSUk9SKCJJbnZhbGlkIG51bWJlciBvZiBzYW1wbGVzXG4iKTsK Pj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsJfQo+PiArCj4+ICsJLyogU2V0IGdhbW1hIG1vZGUg b24gcGlwZSBjb250cm9sIHJlZyAqLwo+PiArCW1vZGUgPSBJOTE1X1JFQUQoR0FNTUFfTU9ERShw aXBlKSk7Cj4+ICsJbW9kZSAmPSB+R0FNTUFfTU9ERV9NT0RFX01BU0s7Cj4+ICsJSTkxNV9XUklU RShHQU1NQV9NT0RFKHBpcGUpLCBtb2RlIHwgd29yZCk7Cj4+ICsJRFJNX0RFQlVHX0RSSVZFUigi R2FtbWEgYXBwbGllZCBvbiBwaXBlICVjXG4iLAo+PiArCXBpcGVfbmFtZShwaXBlKSk7Cj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+Cj4+ICAgc3RhdGljIHMxNiBjaHZfcHJlcGFyZV9jc2NfY29lZmYo czY0IGNzY192YWx1ZSkKPj4gICB7Cj4+IEBAIC0zMTksNiArNTY1LDggQEAgdm9pZCBpbnRlbF9j b2xvcl9tYW5hZ2VyX2NydGNfY29tbWl0KHN0cnVjdAo+PiBkcm1fZGV2aWNlICpkZXYsCj4+ICAg CQkvKiBHYW1tYSBjb3JyZWN0aW9uIGlzIHBsYXRmb3JtIHNwZWNpZmljICovCj4+ICAgCQlpZiAo SVNfQ0hFUlJZVklFVyhkZXYpKQo+PiAgIAkJCXJldCA9IGNodl9zZXRfZ2FtbWEoZGV2LCBibG9i LCBjcnRjKTsKPj4gKwkJZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSVNfR0VOOShkZXYp KQo+PiArCQkJcmV0ID0gYmR3X3NldF9nYW1tYShkZXYsIGJsb2IsIGNydGMpOwo+Pgo+PiAgIAkJ aWYgKHJldCkKPj4gICAJCQlEUk1fRVJST1IoInNldCBHYW1tYSBjb3JyZWN0aW9uIGZhaWxlZFxu Iik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5h Z2VyLmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmgKPj4g aW5kZXggMjcxMjQ2YS4uNmM3Y2IwOCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3JfbWFuYWdlci5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yX21hbmFnZXIuaAo+PiBAQCAtOTIsMyArOTIsOSBAQAo+Pgo+PiAgIC8qIEdhbW1h IG9uIEJEVyAqLwo+PiAgICNkZWZpbmUgQkRXX1NQTElUR0FNTUFfTUFYX1ZBTFMgICAgICAgICAg ICAgICAgNTEyCj4+ICsjZGVmaW5lIEJEV184QklUX0dBTU1BX01BWF9WQUxTCQkyNTYKPj4gKyNk ZWZpbmUgQkRXXzEwQklUX0dBTU1BX01BWF9WQUxTCQkxMDI0Cj4+ICsjZGVmaW5lIEJEV18xMkJJ VF9HQU1NQV9NQVhfVkFMUwkJNTEzCj4+ICsjZGVmaW5lIEJEV19NQVhfR0FNTUEgICAgICAgICAg ICAgICAgICAgICAgICAgKCgxIDw8IDI0KSAtIDEpCj4+ICsjZGVmaW5lIEJEV19JTkRFWF9BVVRP X0lOQ1JFTUVOVCAgICAgICAgICAgICAgICgxIDw8IDE1KQo+PiArI2RlZmluZSBCRFdfSU5ERVhf U1BMSVRfTU9ERSAgICAgICAgICAgICAgICAgICAoMSA8PCAzMSkKPgo+IFJvYgo+Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==