From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Bradford Subject: Re: [PATCH 19/22] drm/i915: BDW: Pipe level Gamma correction Date: Mon, 12 Oct 2015 19:09:04 +0100 Message-ID: <1444673344.1331.79.camel@intel.com> References: <1444418952-5671-1-git-send-email-shashank.sharma@intel.com> <1444418952-5671-20-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1444418952-5671-20-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Shashank Sharma , 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 T24gU2F0LCAyMDE1LTEwLTEwIGF0IDAwOjU5ICswNTMwLCBTaGFzaGFuayBTaGFybWEgd3JvdGU6 Cj4gQkRXL1NLTC9CWFQgcGxhdGZvcm1zIHN1cHBvcnQgdmFyaW91cyBHYW1tYSBjb3JyZWN0aW9u IG1vZGVzCj4gd2hpY2ggYXJlOgo+IDEuIExlZ2FjeSA4LWJpdCBtb2RlCj4gMi4gMTAtYml0IFNw bGl0IEdhbW1hIG1vZGUKPiAzLiAxMi1iaXQgbW9kZQo+IAo+IFRoaXMgcGF0Y2ggZG9lcyB0aGUg Zm9sbG93aW5nOgo+IDEuIEFkZHMgdGhlIGNvcmUgZnVuY3Rpb24gdG8gcHJvZ3JhbSBHYW1tYSBj b3JyZWN0aW9uIHZhbHVlcwo+ICAgIGZvciBCRFcvU0tML0JYVCBwbGF0Zm9ybXMKPiAyLiBBZGRz IEdhbW1hIGNvcnJlY3Rpb24gbWFjcm9zL2RlZmluZXMKPiAKPiBTaWduZWQtb2ZmLWJ5OiBTaGFz aGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog S2F1c2FsIE1hbGxhZGkgPGthdXNhbG1hbGxhZGlAZ21haWwuY29tPgo+IC0tLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICAgfCAgMjUgKystCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYyB8IDI0OAo+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFn ZXIuaCB8ICAgNiArCj4gIDMgZmlsZXMgY2hhbmdlZCwgMjc3IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA1ODI1YWIyLi5l ZDUwZjc1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTU2NDcsMTEgKzU2NDcs MTUgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gIC8qIGxlZ2FjeSBwYWxldHRlICov Cj4gICNkZWZpbmUgX0xHQ19QQUxFVFRFX0EgICAgICAgICAgIDB4NGEwMDAKPiAgI2RlZmluZSBf TEdDX1BBTEVUVEVfQiAgICAgICAgICAgMHg0YTgwMAo+IC0jZGVmaW5lIExHQ19QQUxFVFRFKHBp cGUsIGkpIChfUElQRShwaXBlLCBfTEdDX1BBTEVUVEVfQSwKPiBfTEdDX1BBTEVUVEVfQikgKyAo aSkgKiA0KQo+ICsjZGVmaW5lIF9MR0NfUEFMRVRURV9DICAgICAgICAgICAweDRiMDAwCj4gKyNk ZWZpbmUgTEdDX1BBTEVUVEUocGlwZSwgaSkgKF9QSVBFMyhwaXBlLCBfTEdDX1BBTEVUVEVfQSwK PiBfTEdDX1BBTEVUVEVfQiwgXAo+ICsJCQkgX0xHQ19QQUxFVFRFX0MpICsgKGkpICogNCkKPiAg Cj4gICNkZWZpbmUgX0dBTU1BX01PREVfQQkJMHg0YTQ4MAo+ICAjZGVmaW5lIF9HQU1NQV9NT0RF X0IJCTB4NGFjODAKPiAtI2RlZmluZSBHQU1NQV9NT0RFKHBpcGUpIF9QSVBFKHBpcGUsIF9HQU1N QV9NT0RFX0EsIF9HQU1NQV9NT0RFX0IpCj4gKyNkZWZpbmUgX0dBTU1BX01PREVfQwkJMHg0YjQ4 MAo+ICsjZGVmaW5lIEdBTU1BX01PREUocGlwZSkgXAo+ICsJX1BJUEUzKHBpcGUsIF9HQU1NQV9N T0RFX0EsIF9HQU1NQV9NT0RFX0IsIF9HQU1NQV9NT0RFX0MpCj4gICNkZWZpbmUgR0FNTUFfTU9E RV9NT0RFX01BU0sJKDMgPDwgMCkKPiAgI2RlZmluZSBHQU1NQV9NT0RFX01PREVfOEJJVAkoMCA8 PCAwKQo+ICAjZGVmaW5lIEdBTU1BX01PREVfTU9ERV8xMEJJVAkoMSA8PCAwKQo+IEBAIC04MDYy LDYgKzgwNjYsMjMgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gICNkZWZpbmUgX1BJ UEVfQ1NDX0JBU0UocGlwZSkgXAo+ICAJKF9QSVBFMyhwaXBlLCBQSVBFQV9DR01fQ1NDLCBQSVBF Ql9DR01fQ1NDLCBQSVBFQ19DR01fQ1NDKSkKPiAgCj4gKy8qIEJEVyBnYW1tYSBjb3JyZWN0aW9u ICovCj4gKyNkZWZpbmUgUEFMX1BSRUNfSU5ERVhfQSAgICAgICAgICAgICAgICAgICAgICAgMHg0 QTQwMAo+ICsjZGVmaW5lIFBBTF9QUkVDX0lOREVYX0IgICAgICAgICAgICAgICAgICAgICAgIDB4 NEFDMDAKPiArI2RlZmluZSBQQUxfUFJFQ19JTkRFWF9DICAgICAgICAgICAgICAgICAgICAgICAw eDRCNDAwCj4gKyNkZWZpbmUgUEFMX1BSRUNfREFUQV9BICAgICAgICAgICAgICAgICAgICAgICAg MHg0QTQwNAo+ICsjZGVmaW5lIFBBTF9QUkVDX0RBVEFfQiAgICAgICAgICAgICAgICAgICAgICAg IDB4NEFDMDQKPiArI2RlZmluZSBQQUxfUFJFQ19EQVRBX0MgICAgICAgICAgICAgICAgICAgICAg ICAweDRCNDA0Cj4gKyNkZWZpbmUgUEFMX1BSRUNfR0NNQVhfQQkJCTB4NEE0MTAKPiArI2RlZmlu ZSBQQUxfUFJFQ19HQ01BWF9CCQkJMHg0QUMxMAo+ICsjZGVmaW5lIFBBTF9QUkVDX0dDTUFYX0MJ CQkweDRCNDEwCj4gKwo+ICsjZGVmaW5lIF9QUkVDX1BBTF9JTkRFWChwaXBlKSBcCj4gKwkoX1BJ UEUzKHBpcGUsIFBBTF9QUkVDX0lOREVYX0EsIFBBTF9QUkVDX0lOREVYX0IsCj4gUEFMX1BSRUNf SU5ERVhfQykpCj4gKyNkZWZpbmUgX1BSRUNfUEFMX0RBVEEocGlwZSkgXAo+ICsJKF9QSVBFMyhw aXBlLCBQQUxfUFJFQ19EQVRBX0EsIFBBTF9QUkVDX0RBVEFfQiwKPiBQQUxfUFJFQ19EQVRBX0Mp KQo+ICsjZGVmaW5lIF9QUkVDX1BBTF9HQ01BWChwaXBlKSBcCj4gKwkoX1BJUEUzKHBpcGUsIFBB TF9QUkVDX0dDTUFYX0EsIFBBTF9QUkVDX0dDTUFYX0IsCj4gUEFMX1BSRUNfR0NNQVhfQykpCj4g IAo+ICAKPiAgI2VuZGlmIC8qIF9JOTE1X1JFR19IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYwo+IGluZGV4IGQ1MzE1YjIuLjc0ZjhmYzMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdlci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdlci5jCj4gQEAgLTI2LDYg KzI2LDI1MiBAQAo+ICAgKi8KPiAgCj4gICNpbmNsdWRlICJpbnRlbF9jb2xvcl9tYW5hZ2VyLmgi Cj4gK3N0YXRpYyB2b2lkIGJkd193cml0ZV8xMGJpdF9nYW1tYV9wcmVjaXNpb24oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiArCXN0cnVjdCBkcm1fcjMyZzMyYjMyICpjb3JyZWN0aW9uX3ZhbHVl cywgdTMyIHBhbF9wcmVjX2RhdGEsCj4gKwkJCXUzMiBub19vZl9jb2VmZikKPiArewo+ICsJdTE2 IGJsdWVfZnJhY3QsIGdyZWVuX2ZyYWN0LCByZWRfZnJhY3Q7Cj4gKwl1MzIgd29yZCA9IDA7Cj4g Kwl1MzIgY291bnQgPSAwOwo+ICsJdTMyIGJsdWUsIGdyZWVuLCByZWQ7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsKPiArCXdoaWxl IChjb3VudCA8IG5vX29mX2NvZWZmKSB7Cj4gKwo+ICsJCWJsdWUgPSBjb3JyZWN0aW9uX3ZhbHVl c1tjb3VudF0uYjMyOwo+ICsJCWdyZWVuID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmczMjsK PiArCQlyZWQgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0ucjMyOwo+ICsKPiArCQkvKgo+ICsJ CSogTWF4aW11bSBwb3NzaWJsZSBnYW1tYSBjb3JyZWN0aW9uIHZhbHVlIHN1cHBvcnRlZAo+ICsJ CSogZm9yIEJEVyBpcyAweEZGRkZGRkZGLCBzbyBjbGlwIHRoZSB2YWx1ZXMKPiBhY2NvcmRpbmds eQo+ICsJCSovCgpJIHRoaW5rIHlvdSBtZWFuIGNsYW1wIG5vdCBjbGlwLgoKPiArCQlpZiAoYmx1 ZSA+PSBCRFdfTUFYX0dBTU1BKQo+ICsJCQlibHVlID0gQkRXX01BWF9HQU1NQTsKPiArCQlpZiAo Z3JlZW4gPj0gQkRXX01BWF9HQU1NQSkKPiArCQkJZ3JlZW4gPSBCRFdfTUFYX0dBTU1BOwo+ICsJ CWlmIChyZWQgPj0gQkRXX01BWF9HQU1NQSkKPiArCQkJcmVkID0gQkRXX01BWF9HQU1NQTsKClNv IHRoaXMgaGFuZGxlcyB0aGUgaXNzdWUgdGhhdCB3YXMgcmFpc2VkIGJlZm9yZSB0aGF0IDEuMCBp biA4LjI0CnNob3VsZCBtYXAgdG8gMTAyMy4KCj4gKwo+ICsJCS8qCj4gKwkJKiBHYW1tYSBjb3Jy ZWN0aW9uIHZhbHVlcyBhcmUgc2VudCBpbiA4LjI0IGZvcm1hdAo+ICsJCSogd2l0aCA4IGludCBh bmQgMjQgZnJhY3Rpb24gYml0cy4gQkRXIDEwIGJpdCBnYW1tYQo+ICsJCSogdW5pdCBleHBlY3Rz IGNvcnJlY3Rpb24gcmVnaXN0ZXJzIHRvIGJlIHByb2dyYW1tZWQKPiBpbgo+ICsJCSogMC4xMCBm b3JtYXQsIHdpdGggMCBpbnQgYW5kIDE2IGZyYWN0aW9uIGJpdHMuIFNvCj4gdGFrZQo+ICsJCSog TVNCIDEwIGJpdCB2YWx1ZXMoYml0cyAyMy0xNCkgZnJvbSB0aGUgZnJhY3Rpb24KPiBwYXJ0IGFu ZAo+ICsJCSogcHJlcGFyZSB0aGUgY29ycmVjdGlvbiByZWdpc3RlcnMuCj4gKwkJKi8KPiArCQli bHVlX2ZyYWN0ID0gR0VUX0JJVFMoYmx1ZSwgMTQsIDEwKTsKPiArCQlncmVlbl9mcmFjdCA9IEdF VF9CSVRTKGdyZWVuLCAxNCwgMTApOwo+ICsJCXJlZF9mcmFjdCA9IEdFVF9CSVRTKHJlZCwgMTQs IDEwKTsKPiArCgpJIHRoaW5rIHRoaXMgc2hvdWxkIHJvdW5kIHRvIHRoZSBuZWFyZXN0IHJhdGhl ciB0aGFuIGZsb29yLgoKPiArCQkvKiBBcnJhbmdlOiBSZWQgKDI5OjIwKSBHcmVlbiAoMTk6MTAp IGFuZCBCbHVlICg5OjApCj4gKi8KPiArCQlTRVRfQklUUyh3b3JkLCByZWRfZnJhY3QsIDIwLCAx MCk7Cj4gKwkJU0VUX0JJVFMod29yZCwgcmVkX2ZyYWN0LCAxMCwgMTApOwo+ICsJCVNFVF9CSVRT KHdvcmQsIHJlZF9mcmFjdCwgMCwgMTApOwoKUmVkIGlzIG15IGZhdm91cml0ZSBjb2xvdXIgdG9v LCBpcyB0aGF0IHdoeSB5b3UgcHJvZ3JhbW1lZCBhbGwgdGhlCmNoYW5uZWxzIHRvIHRoZSByZWQg Yml0cz8gOi0pCgo+ICsJCUk5MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgd29yZCk7Cj4gKwkJY291 bnQrKzsKPiArCX0KPiArCURSTV9ERUJVR19EUklWRVIoIkdhbW1hIGNvcnJlY3Rpb24gcHJvZ3Jh bW1lZFxuIik7Cj4gK30KPiArCj4gK3ZvaWQgYmR3X3dyaXRlXzEyYml0X2dhbW1hX3ByZWNpc2lv bihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJc3RydWN0IGRybV9yMzJnMzJiMzIgKmNvcnJl Y3Rpb25fdmFsdWVzLCB1MzIgcGFsX3ByZWNfZGF0YSwKPiArCQllbnVtIHBpcGUgcGlwZSkKPiAr ewo+ICsJdWludDE2X3QgYmx1ZV9mcmFjdCwgZ3JlZW5fZnJhY3QsIHJlZF9mcmFjdDsKPiArCXVp bnQzMl90IGdjbWF4Owo+ICsJdWludDMyX3Qgd29yZCA9IDA7Cj4gKwl1aW50MzJfdCBjb3VudCA9 IDA7Cj4gKwl1aW50MzJfdCBnY21heF9yZWc7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsKPiArCS8qIFByb2dyYW0gZmlyc3QgNTEy IHZhbHVlcyBpbiBwcmVjaXNpb24gcGFsZXR0ZSAqLwo+ICsJd2hpbGUgKGNvdW50IDwgQkRXXzEy QklUX0dBTU1BX01BWF9WQUxTIC0gMSkgewo+ICsJCS8qCj4gKwkJKiBGcmFtZXdvcmsncyBnZW5l cmFsIGdhbW1hIGZvcm1hdCBpcyA4LjI0ICg4IGludCAxNgo+IGZyYWN0aW9uKQo+ICsJCSogQkRX IFBsYXRmb3JtJ3Mgc3VwcG9ydGVkIGdhbW1hIGZvcm1hdCBpcyAxNiBiaXQKPiBjb3JyZWN0aW9u Cj4gKwkJKiB2YWx1ZXMgaW4gMC4xNiBmb3JtYXQuIFNvIGV4dHJhY3QgaGlnaGVyIDE2Cj4gZnJh Y3Rpb24gYml0cwo+ICsJCSogZnJvbSA4LjI0IGdhbW1hIGNvcnJlY3Rpb24gdmFsdWVzLgo+ICsJ CSovCj4gKwkJcmVkX2ZyYWN0ID0gR0VUX0JJVFMoY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLnIz MiwKPiA4LCAxNik7Cj4gKwkJZ3JlZW5fZnJhY3QgPSBHRVRfQklUUyhjb3JyZWN0aW9uX3ZhbHVl c1tjb3VudF0uZzMyLAo+IDgsIDE2KTsKPiArCQlibHVlX2ZyYWN0ID0gR0VUX0JJVFMoY29ycmVj dGlvbl92YWx1ZXNbY291bnRdLmIzMiwKPiA4LCAxNik7CgpBZ2FpbiwgMS4wIGluIDguMjQgd2ls bCByZXN1bHQgaW4geW91IHByb2dyYW1taW5nIHplcm9zIHJhdGhlciB0aGFuCm1heC4KCj4gKwkJ LyoKPiArCQkqIEZyb20gdGhlIGJzcGVjOgo+ICsJCSogRm9yIDEyIGJpdCBnYW1tYSBjb3JyZWN0 aW9uLCBwcm9ncmFtIHByZWNpc2lvbgo+IHBhbGV0dGUKPiArCQkqIHdpdGggMTYgYml0cyBwZXIg Y29sb3IgaW4gYSAwLjE2IGZvcm1hdCB3aXRoIDAKPiBpbnRlZ2VyIGFuZAo+ICsJCSogMTYgZnJh Y3Rpb25hbCBiaXRzICh1cHBlciAxMCBiaXRzIGluIG9kZCBpbmRleGVzLAo+IGxvd2VyIDYKPiAr CQkqIGJpdHMgaW4gZXZlbiBpbmRleGVzKQo+ICsJCSovCj4gKwo+ICsJCS8qIEV2ZW4gaW5kZXg6 IExvd2VyIDYgYml0cyBmcm9tIGNvcnJlY3Rpb24gc2hvdWxkCj4gZ28gYXMgTVNCICovCj4gKwkJ U0VUX0JJVFMod29yZCwgR0VUX0JJVFMocmVkX2ZyYWN0LCAwLCA2KSwgMjQsIDYpOwo+ICsJCVNF VF9CSVRTKHdvcmQsIEdFVF9CSVRTKGdyZWVuX2ZyYWN0LCAwLCA2KSwgMTQsIDYpOwo+ICsJCVNF VF9CSVRTKHdvcmQsIEdFVF9CSVRTKGJsdWVfZnJhY3QsIDAsIDYpLCA0LCA2KTsKPiArCQlJOTE1 X1dSSVRFKHBhbF9wcmVjX2RhdGEsIHdvcmQpOwo+ICsKPiArCQl3b3JkID0gMHgwOwo+ICsJCS8q IE9kZCBpbmRleDogVXBwZXIgMTAgYml0cyBvZiBjb3JyZWN0aW9uIHNob3VsZCBnbwo+IGFzIE1T QiAqLwo+ICsJCVNFVF9CSVRTKHdvcmQsIEdFVF9CSVRTKHJlZF9mcmFjdCwgNiwgMTApLCAyMCwg MTApOwo+ICsJCVNFVF9CSVRTKHdvcmQsIEdFVF9CSVRTKGdyZWVuX2ZyYWN0LCA2LCAxMCksIDEw LAo+IDEwKTsKPiArCQlTRVRfQklUUyh3b3JkLCBHRVRfQklUUyhibHVlX2ZyYWN0LCA2LCAxMCks IDAsIDEwKTsKPiArCj4gKwkJSTkxNV9XUklURShwYWxfcHJlY19kYXRhLCB3b3JkKTsKPiArCQlj b3VudCsrOwo+ICsJfQo+ICsKPiArCS8qIE5vdyBwcm9ncmFtIHRoZSA1MTN0aCB2YWx1ZSBpbiBH Q01BWCByZWdzICovCj4gKwl3b3JkID0gMDsKPiArCWdjbWF4X3JlZyA9IF9QUkVDX1BBTF9HQ01B WChwaXBlKTsKPiArCWdjbWF4ID0gbWluX3QodTMyLCBHRVRfQklUUyhjb3JyZWN0aW9uX3ZhbHVl c1tjb3VudF0ucjMyLCA4LAo+IDE3KSwKPiArCQkJCUJEV19NQVhfR0FNTUEpOwo+ICsJU0VUX0JJ VFMod29yZCwgZ2NtYXgsIDAsIDE3KTsKPiArCUk5MTVfV1JJVEUoZ2NtYXhfcmVnLCB3b3JkKTsK PiArCWdjbWF4X3JlZyArPSA0Owo+ICsKPiArCXdvcmQgPSAwOwo+ICsJZ2NtYXggPSBtaW5fdCh1 MzIsIEdFVF9CSVRTKGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5nMzIsIDgsCj4gMTcpLAo+ICsJ CQkJQkRXX01BWF9HQU1NQSk7Cj4gKwlTRVRfQklUUyh3b3JkLCBnY21heCwgMCwgMTcpOwo+ICsJ STkxNV9XUklURShnY21heF9yZWcsIHdvcmQpOwo+ICsJZ2NtYXhfcmVnICs9IDQ7Cj4gKwo+ICsJ d29yZCA9IDA7Cj4gKwlnY21heCA9IG1pbl90KHUzMiwgR0VUX0JJVFMoY29ycmVjdGlvbl92YWx1 ZXNbY291bnRdLmIzMiwgOCwKPiAxNyksCj4gKwkJCQlCRFdfTUFYX0dBTU1BKTsKPiArCVNFVF9C SVRTKHdvcmQsIGdjbWF4LCAwLCAxNyk7Cj4gKwlJOTE1X1dSSVRFKGdjbWF4X3JlZywgd29yZCk7 Cj4gK30KPiArCj4gKy8qIEFwcGx5IHVuaXR5IGdhbW1hIGZvciBnYW1tYSByZXNldCAqLwo+ICtz dGF0aWMgdm9pZCBiZHdfcmVzZXRfZ2FtbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICsJCQllbnVtIHBpcGUgcGlwZSkKPiArewo+ICsJdTE2IGNvdW50ID0gMDsKPiArCXUz MiB2YWw7Cj4gKwl1MzIgcGFsX3ByZWNfZGF0YSA9IExHQ19QQUxFVFRFKHBpcGUsIDApOwo+ICsK PiArCURSTV9ERUJVR19EUklWRVIoIlxuIik7Cj4gKwo+ICsJLyogUmVzZXQgdGhlIHBhbGV0dGUg Zm9yIHVuaXQgZ2FtbWEgKi8KPiArCXdoaWxlIChjb3VudCA8IEJEV184QklUX0dBTU1BX01BWF9W QUxTKSB7Cj4gKwkJLyogUmVkICgyMzoxNikgR3JlZW4gKDE1OjgpIGFuZCBCbHVlICg3OjApICov Cj4gKwkJdmFsID0gKGNvdW50IDw8IDE2KSB8IChjb3VudCA8PCA4KSB8IGNvdW50Owo+ICsJCUk5 MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgdmFsKTsKPiArCQlwYWxfcHJlY19kYXRhICs9IDQ7Cj4g KwkJY291bnQrKzsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIGludCBiZHdfc2V0X2dhbW1hKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdAo+IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iLAo+ ICsJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXUxNiBibHVlX2ZyYWN0LCBncmVl bl9mcmFjdCwgcmVkX2ZyYWN0Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gKwlpbnQgY291bnQsIG51 bV9zYW1wbGVzOwo+ICsJdTMyIGJsdWUsIGdyZWVuLCByZWQ7Cj4gKwl1MzIgbW9kZSwgcGFsX3By ZWNfaW5kZXgsIHBhbF9wcmVjX2RhdGE7Cj4gKwl1MzIgaW5kZXg7Cj4gKwl1MzIgd29yZCA9IDA7 Cj4gKwlzdHJ1Y3QgZHJtX3BhbGV0dGUgKmdhbW1hX2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKnN0YXRlID0gY3J0Yy0+c3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9yMzJnMzJiMzIgKmNv cnJlY3Rpb25fdmFsdWVzID0gTlVMTDsKPiArCj4gKwlpZiAoV0FSTl9PTighYmxvYikpCj4gKwkJ cmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJZ2FtbWFfZGF0YSA9IChzdHJ1Y3QgZHJtX3BhbGV0dGUg KilibG9iLT5kYXRhOwo+ICsJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gKwlu dW1fc2FtcGxlcyA9IGdhbW1hX2RhdGEtPm51bV9zYW1wbGVzOwo+ICsKPiArCXBhbF9wcmVjX2lu ZGV4ID0gX1BSRUNfUEFMX0lOREVYKHBpcGUpOwo+ICsJcGFsX3ByZWNfZGF0YSA9IF9QUkVDX1BB TF9EQVRBKHBpcGUpOwo+ICsKPiArCWNvcnJlY3Rpb25fdmFsdWVzID0gKHN0cnVjdCBkcm1fcjMy ZzMyYjMyICopJmdhbW1hX2RhdGEKPiAtPmx1dDsKPiArCWluZGV4ID0gSTkxNV9SRUFEKHBhbF9w cmVjX2luZGV4KTsKPiArCj4gKwlzd2l0Y2ggKG51bV9zYW1wbGVzKSB7Cj4gKwljYXNlIEdBTU1B X0RJU0FCTEVfVkFMUzoKPiArCj4gKwkJLyogRGlzYWJsZSBHYW1tYSBmdW5jdGlvbmFsaXR5IG9u IFBpcGUgKi8KPiArCQlEUk1fREVCVUdfRFJJVkVSKCJEaXNhYmxpbmcgZ2FtbWEgb24gUGlwZSAl Y1xuIiwKPiArCQlwaXBlX25hbWUocGlwZSkpOwo+ICsJCW1vZGUgPSBJOTE1X1JFQUQoR0FNTUFf TU9ERShwaXBlKSk7Cj4gKwkJaWYgKChtb2RlICYgR0FNTUFfTU9ERV9NT0RFX01BU0spID09Cj4g R0FNTUFfTU9ERV9NT0RFXzEyQklUKQo+ICsJCQliZHdfcmVzZXRfZ2FtbWEoZGV2X3ByaXYsIHBp cGUpOwoKV2h5IG9ubHkgY2FsbCBiZHdfcmVzZXRfZ2FtbWEoKSBpZiB3ZSB3ZXJlIGluIDEyLWJp dCBtb2RlPyBXaGF0IGFib3V0CnRoZSBvdGhlciBtb2Rlcz8gV2hhdCBhYm91dCBpZiBzb21lYm9k eSBoYXMgcHJvZ3JhbW1lZCB0aGUgdmFsdWUKdGhyb3VnaCB0aGUgbGVnYWN5IGlvY3RsPyAKCj4g KwkJc3RhdGUtPnBhbGV0dGVfYWZ0ZXJfY3RtX2Jsb2IgPSBOVUxMOwo+ICsJCXdvcmQgPSBHQU1N QV9NT0RFX01PREVfOEJJVDsKPiArCQlicmVhazsKPiArCj4gKwljYXNlIEJEV184QklUX0dBTU1B X01BWF9WQUxTOgo+ICsKPiArCQkvKiBMZWdhY3kgcGFsZXR0ZSAqLwo+ICsJCXBhbF9wcmVjX2Rh dGEgPSBMR0NfUEFMRVRURShwaXBlLCAwKTsKPiArCQljb3VudCA9IDA7Cj4gKwkJd2hpbGUgKGNv dW50IDwgQkRXXzhCSVRfR0FNTUFfTUFYX1ZBTFMpIHsKPiArCQkJYmx1ZSA9IGNvcnJlY3Rpb25f dmFsdWVzW2NvdW50XS5iMzI7Cj4gKwkJCWdyZWVuID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRd LmczMjsKPiArCQkJcmVkID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLnIzMjsKPiArCj4gKwkJ CWJsdWVfZnJhY3QgPSBHRVRfQklUUyhibHVlLCAxNiwgOCk7Cj4gKwkJCWdyZWVuX2ZyYWN0ID0g R0VUX0JJVFMoZ3JlZW4sIDE2LCA4KTsKPiArCQkJcmVkX2ZyYWN0ID0gR0VUX0JJVFMocmVkLCAx NiwgOCk7CgpTaG91bGRuJ3QgdGhlc2Ugcm91bmQ/IFJhdGhlciB0aGFuIGFsd2F5cyBmbG9vci4g QWxzbyAxLjAgaW4gOC4yNApmb3JtYXQgd2lsbCByZXN1bHQgaW4geW91IHByb2dyYW1taW5nIHpl cm8gaW50byB0aGUgcGFsZXR0ZS4gWW91IG5lZWQKdG8gZG8gdGhlIG1heCBjbGFtcGluZyBhZ2Fp bi4KCj4gKwo+ICsJCQkvKiBCbHVlICg3OjApIEdyZWVuICgxNTo4KSBhbmQgUmVkICgyMzoxNikK PiAqLwo+ICsJCQlTRVRfQklUUyh3b3JkLCBibHVlX2ZyYWN0LCAwLCA4KTsKPiArCQkJU0VUX0JJ VFMod29yZCwgZ3JlZW5fZnJhY3QsIDgsIDgpOwo+ICsJCQlTRVRfQklUUyh3b3JkLCBibHVlX2Zy YWN0LCAxNiwgOCk7Cj4gKwkJCUk5MTVfV1JJVEUocGFsX3ByZWNfZGF0YSwgd29yZCk7Cj4gKwkJ CXBhbF9wcmVjX2RhdGEgKz0gNDsKPiArCQkJY291bnQrKzsKClRoaXMgY29kZSBhbHNvIG5lZWRz IHRvIGJlIG1hZGUgdG8gd29yayBuaWNlbHkgd2l0aCBvdGhlciB1c2VycyBvZgpMR0NfUEFMRVRU RS4KCj4gKwkJfQo+ICsJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiArCQlicmVhazsK PiArCj4gKwljYXNlIEJEV19TUExJVEdBTU1BX01BWF9WQUxTOgo+ICsKPiArCQlpbmRleCB8PSBC RFdfSU5ERVhfQVVUT19JTkNSRU1FTlQgfAo+IEJEV19JTkRFWF9TUExJVF9NT0RFOwo+ICsJCUk5 MTVfV1JJVEUocGFsX3ByZWNfaW5kZXgsIGluZGV4KTsKPiArCQliZHdfd3JpdGVfMTBiaXRfZ2Ft bWFfcHJlY2lzaW9uKGRldiwKPiBjb3JyZWN0aW9uX3ZhbHVlcywKPiArCQkJcGFsX3ByZWNfZGF0 YSwgQkRXX1NQTElUR0FNTUFfTUFYX1ZBTFMpOwo+ICsJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVf U1BMSVQ7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBCRFdfMTJCSVRfR0FNTUFfTUFYX1ZBTFM6 Cj4gKwo+ICsJCWluZGV4IHw9IEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVDsKPiArCQlpbmRleCAm PSB+QkRXX0lOREVYX1NQTElUX01PREU7Cj4gKwkJSTkxNV9XUklURShwYWxfcHJlY19pbmRleCwg aW5kZXgpOwo+ICsJCWJkd193cml0ZV8xMmJpdF9nYW1tYV9wcmVjaXNpb24oZGV2LAo+IGNvcnJl Y3Rpb25fdmFsdWVzLAo+ICsJCQlwYWxfcHJlY19kYXRhLCBwaXBlKTsKPiArCQl3b3JkID0gR0FN TUFfTU9ERV9NT0RFXzEyQklUOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgQkRXXzEwQklUX0dB TU1BX01BWF9WQUxTOgo+ICsJCWluZGV4IHw9IEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVDsKPiAr CQlpbmRleCAmPSB+QkRXX0lOREVYX1NQTElUX01PREU7Cj4gKwkJSTkxNV9XUklURShwYWxfcHJl Y19pbmRleCwgaW5kZXgpOwo+ICsJCWJkd193cml0ZV8xMGJpdF9nYW1tYV9wcmVjaXNpb24oZGV2 LAo+IGNvcnJlY3Rpb25fdmFsdWVzLAo+ICsJCQlwYWxfcHJlY19kYXRhLCBCRFdfMTBCSVRfR0FN TUFfTUFYX1ZBTFMpOwo+ICsJCXdvcmQgPSBHQU1NQV9NT0RFX01PREVfMTBCSVQ7Cj4gKwkJYnJl YWs7Cj4gKwo+ICsJZGVmYXVsdDoKPiArCQlEUk1fRVJST1IoIkludmFsaWQgbnVtYmVyIG9mIHNh bXBsZXNcbiIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCS8qIFNldCBnYW1t YSBtb2RlIG9uIHBpcGUgY29udHJvbCByZWcgKi8KPiArCW1vZGUgPSBJOTE1X1JFQUQoR0FNTUFf TU9ERShwaXBlKSk7Cj4gKwltb2RlICY9IH5HQU1NQV9NT0RFX01PREVfTUFTSzsKPiArCUk5MTVf V1JJVEUoR0FNTUFfTU9ERShwaXBlKSwgbW9kZSB8IHdvcmQpOwo+ICsJRFJNX0RFQlVHX0RSSVZF UigiR2FtbWEgYXBwbGllZCBvbiBwaXBlICVjXG4iLAo+ICsJcGlwZV9uYW1lKHBpcGUpKTsKPiAr CXJldHVybiAwOwo+ICt9Cj4gIAo+ICBzdGF0aWMgczE2IGNodl9wcmVwYXJlX2NzY19jb2VmZihz NjQgY3NjX3ZhbHVlKQo+ICB7Cj4gQEAgLTMxOSw2ICs1NjUsOCBAQCB2b2lkIGludGVsX2NvbG9y X21hbmFnZXJfY3J0Y19jb21taXQoc3RydWN0Cj4gZHJtX2RldmljZSAqZGV2LAo+ICAJCS8qIEdh bW1hIGNvcnJlY3Rpb24gaXMgcGxhdGZvcm0gc3BlY2lmaWMgKi8KPiAgCQlpZiAoSVNfQ0hFUlJZ VklFVyhkZXYpKQo+ICAJCQlyZXQgPSBjaHZfc2V0X2dhbW1hKGRldiwgYmxvYiwgY3J0Yyk7Cj4g KwkJZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSVNfR0VOOShkZXYpKQo+ICsJCQlyZXQg PSBiZHdfc2V0X2dhbW1hKGRldiwgYmxvYiwgY3J0Yyk7Cj4gIAo+ICAJCWlmIChyZXQpCj4gIAkJ CURSTV9FUlJPUigic2V0IEdhbW1hIGNvcnJlY3Rpb24gZmFpbGVkXG4iKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3JfbWFuYWdlci5oCj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmgKPiBpbmRleCAyNzEyNDZhLi42Yzdj YjA4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFn ZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaAo+ IEBAIC05MiwzICs5Miw5IEBACj4gIAo+ICAvKiBHYW1tYSBvbiBCRFcgKi8KPiAgI2RlZmluZSBC RFdfU1BMSVRHQU1NQV9NQVhfVkFMUyAgICAgICAgICAgICAgICA1MTIKPiArI2RlZmluZSBCRFdf OEJJVF9HQU1NQV9NQVhfVkFMUwkJMjU2Cj4gKyNkZWZpbmUgQkRXXzEwQklUX0dBTU1BX01BWF9W QUxTCQkxMDI0Cj4gKyNkZWZpbmUgQkRXXzEyQklUX0dBTU1BX01BWF9WQUxTCQk1MTMKPiArI2Rl ZmluZSBCRFdfTUFYX0dBTU1BICAgICAgICAgICAgICAgICAgICAgICAgICgoMSA8PCAyNCkgLSAx KQo+ICsjZGVmaW5lIEJEV19JTkRFWF9BVVRPX0lOQ1JFTUVOVCAgICAgICAgICAgICAgICgxIDw8 IDE1KQo+ICsjZGVmaW5lIEJEV19JTkRFWF9TUExJVF9NT0RFICAgICAgICAgICAgICAgICAgICgx IDw8IDMxKQoKUm9iCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==