From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 09/12] drm/i915: Add pipe level Gamma correction for CHV/BSW Date: Tue, 7 Jul 2015 16:23:54 -0700 Message-ID: <20150707232354.GE9742@intel.com> References: <1435894307-5722-1-git-send-email-Kausal.Malladi@intel.com> <1435894307-5722-10-git-send-email-Kausal.Malladi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1435894307-5722-10-git-send-email-Kausal.Malladi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Kausal Malladi Cc: indranil.mukherjee@intel.com, dhanya.p.r@intel.com, annie.j.matheson@intel.com, jyoti.r.yadav@intel.com, avinash.reddy.palleti@intel.com, dri-devel@lists.freedesktop.org, vijay.a.purushothaman@intel.com, jesse.barnes@intel.com, daniel.vetter@intel.com, sunil.kamath@intel.com, intel-gfx@lists.freedesktop.org, shashank.sharma@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdWwgMDMsIDIwMTUgYXQgMDk6MDE6NDRBTSArMDUzMCwgS2F1c2FsIE1hbGxhZGkg d3JvdGU6Cj4gQ0hWL0JTVyBwbGF0Zm9ybSBzdXBwb3J0cyB2YXJpb3VzIEdhbW1hIGNvcnJlY3Rp b24gbW9kZXMsIHdoaWNoIGFyZToKPiAxLiBMZWdhY3kgOC1iaXQgbW9kZQo+IDIuIDEwLWJpdCBD R00gKENvbG9yIEdhbXV0IE1hcHBpbmcpIG1vZGUKPiAKPiBUaGlzIHBhdGNoIGRvZXMgdGhlIGZv bGxvd2luZzoKPiAxLiBBZGRzIHRoZSBjb3JlIGZ1bmN0aW9uIHRvIHByb2dyYW0gR2FtbWEgY29y cmVjdGlvbiB2YWx1ZXMgZm9yIENIVi9CU1cKPiAgICBwbGF0Zm9ybQo+IDIuIEFkZHMgR2FtbWEg Y29ycmVjdGlvbiBtYWNyb3MvZGVmaW5lcwo+IAo+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNo YXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBLYXVzYWwg TWFsbGFkaSA8S2F1c2FsLk1hbGxhZGlAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICAgfCAgMTAgKysKPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljLmMgICAgICAgIHwgICA2ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYyB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmggfCAgMTIg KysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICB8ICAgMiAr Cj4gIDUgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiBpbmRleCAzMTNiMWY5Li4zNjY3MmU3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gQEAgLTc5MDAsNCArNzkwMCwxNCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxz IHsKPiAgI2RlZmluZSBfUEFMRVRURV9BIChkZXZfcHJpdi0+aW5mby5kaXNwbGF5X21taW9fb2Zm c2V0ICsgMHhhMDAwKQo+ICAjZGVmaW5lIF9QQUxFVFRFX0IgKGRldl9wcml2LT5pbmZvLmRpc3Bs YXlfbW1pb19vZmZzZXQgKyAweGE4MDApCj4gIAo+ICsvKiBDb2xvciBNYW5hZ2VtZW50ICovCj4g KyNkZWZpbmUgUElQRUFfQ0dNX0NPTlRST0wJCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjdBMDAp Cj4gKyNkZWZpbmUgUElQRUFfQ0dNX0dBTU1BX01JTgkJCShWTFZfRElTUExBWV9CQVNFICsgMHg2 NzAwMCkKPiArI2RlZmluZSBDR01fT0ZGU0VUCQkJCTB4MjAwMAo+ICsjZGVmaW5lIEdBTU1BX09G RlNFVAkJCQkweDIwMDAKPiArI2RlZmluZSBfUElQRV9DR01fQ09OVFJPTChwaXBlKSBcCj4gKwko UElQRUFfQ0dNX0NPTlRST0wgKyAocGlwZSAqIENHTV9PRkZTRVQpKQo+ICsjZGVmaW5lIF9QSVBF X0dBTU1BX0JBU0UocGlwZSkgXAo+ICsJKFBJUEVBX0NHTV9HQU1NQV9NSU4gKyAocGlwZSAqIEdB TU1BX09GRlNFVCkpCj4gKwo+ICAjZW5kaWYgLyogX0k5MTVfUkVHX0hfICovCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljLmMKPiBpbmRleCBkMjY3NGE2Li4yMWYwYWMyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKPiBAQCAtNDczLDYgKzQ3MywxMiBAQCBpbnQgaW50 ZWxfY3J0Y19hdG9taWNfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJ CSAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAo+ICAJCQkJICAgdWludDY0X3QgdmFs KQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0 IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7Cj4gKwo+ICsJaWYg KHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9wYWxldHRlX2FmdGVyX2N0bSkKPiArCQlyZXR1cm4g aW50ZWxfY29sb3JfbWFuYWdlcl9zZXRfZ2FtbWEoZGV2LCAmY3J0Yy0+YmFzZSwgdmFsKTsKPiAr CgpJIHRoaW5rIHdlIGRpc2N1c3NlZCB0aGlzIG9uIGEgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRo ZSBwYXRjaCBzZXJpZXMsCmJ1dCAuYXRvbWljX3NldF9wcm9wZXJ0eSgpIGlzbid0IHN1cHBvc2Vk IHRvIGFjdHVhbGx5IHVwZGF0ZSB0aGUKaGFyZHdhcmUgYXQgYWxsIGl0c2VsZiAoYXMgeW91J3Jl IGRvaW5nIGhlcmUpOyBpdCdzIG9ubHkgc3VwcG9zZWQgdG8KdXBkYXRlIHRoZSAnc3RhdGUnIHBh cmFtZXRlciB0aGF0IHdhcyBwYXNzZWQgaGVyZS4gIEZ1cnRoZXIgZG93biB0aGUKYXRvbWljIHBp cGVsaW5lIHRoZSBkcml2ZXIgd2lsbCBkZWNpZGUgd2hldGhlciBpdCByZWFsbHkgd2FudHMgdG8K cHJvZ3JhbSBhbnkgb2YgdGhlIHN0YXRlIG9yIG5vdCBhbmQgdGhlbiB0aGUgQ1JUQydzIGF0b21p YyBjb21taXQKZnVuY3Rpb24gc2hvdWxkIHByb2dyYW0gdGhlIHJlZ2lzdGVycyBhY2NvcmRpbmcg dG8gd2hhdGV2ZXIgdmFsdWUgaXMgc2V0CmluIHRoZSBzdGF0ZSBvYmplY3QuCgo+ICAJRFJNX0RF QlVHX0tNUygiVW5rbm93biBjcnRjIHByb3BlcnR5ICclcydcbiIsIHByb3BlcnR5LT5uYW1lKTsK PiAgCXJldHVybiAtRUlOVkFMOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nv bG9yX21hbmFnZXIuYwo+IGluZGV4IDcxYjRjMDUuLjg0Y2MzZTQ3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuYwo+IEBAIC0yNyw2ICsyNywxNjAgQEAK PiAgCj4gICNpbmNsdWRlICJpbnRlbF9jb2xvcl9tYW5hZ2VyLmgiCj4gIAo+ICtpbnQgY2h2X3Nl dF9nYW1tYShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1aW50MzJfdCBibG9iX2lkLAo+ICsJCSAg c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3BhbGV0dGUgKmdhbW1h X2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iOwo+ICsJc3RydWN0IGRy bV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7Cj4gKwl1MzIgY2dtX2Nv bnRyb2xfcmVnID0gMDsKPiArCXUzMiBjZ21fZ2FtbWFfcmVnID0gMDsKPiArCXUzMiByZWcsIHZh bDsKPiArCWVudW0gcGlwZSBwaXBlOwo+ICsJdTE2IHJlZCwgZ3JlZW4sIGJsdWU7Cj4gKwl1MzIg Y291bnQgPSAwOwo+ICsJc3RydWN0IGRybV9yMzJnMzJiMzIgKmNvcnJlY3Rpb25fdmFsdWVzID0g TlVMTDsKPiArCXUzMiBudW1fc2FtcGxlczsKPiArCXUzMiB3b3JkOwo+ICsJdTMyIHBhbGV0dGU7 Cj4gKwlpbnQgcmV0ID0gMCwgbGVuZ3RoOwo+ICsKPiArCWJsb2IgPSBkcm1fcHJvcGVydHlfbG9v a3VwX2Jsb2IoZGV2LCBibG9iX2lkKTsKPiArCWlmICghYmxvYikgewo+ICsJCURSTV9FUlJPUigi SW52YWxpZCBCbG9iIElEXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwln YW1tYV9kYXRhID0gKHN0cnVjdCBkcm1fcGFsZXR0ZSAqKWJsb2ItPmRhdGE7CgpEbyB3ZSBuZWVk IHRvIHZhbGlkYXRlIHRoYXQgdGhlIGJsb2Igd2UgcmVjZWl2ZSBpcyBvZiB0aGUgZXhwZWN0ZWQg c2l6ZQpvciBkb2VzIHNvbWV0aGluZyBpbiB0aGUgRFJNIGNvcmUncyBibG9iIGhhbmRsaW5nIHRh a2UgY2FyZSBvZiB0aGF0IGZvcgp1cz8gIFdlIGRvbid0IHdhbnQgdXNlcnNwYWNlIHRvIGJlIGFi bGUgdG8gdHJpZ2dlciBhIHBhbmljIGJ5IHBhc3NpbmcgYQpzbWFsbGVyIHRoYW4gZXhwZWN0ZWQg YmxvYiBoZXJlLgoKCj4gKwo+ICsJaWYgKGdhbW1hX2RhdGEtPnZlcnNpb24gIT0gQ0hWX0dBTU1B X0RBVEFfU1RSVUNUX1ZFUlNJT04pIHsKPiArCQlEUk1fRVJST1IoIkludmFsaWQgR2FtbWEgRGF0 YSBzdHJ1Y3QgdmVyc2lvblxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJ cGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gKwludW1fc2FtcGxlcyA9IGdhbW1h X2RhdGEtPnBhbGV0dGVfbnVtX3NhbXBsZXM7Cj4gKwlsZW5ndGggPSBudW1fc2FtcGxlcyAqIHNp emVvZihzdHJ1Y3QgZHJtX3IzMmczMmIzMik7Cj4gKwo+ICsJaWYgKG51bV9zYW1wbGVzID09IDAp IHsKPiArCj4gKwkJLyogRGlzYWJsZSBHYW1tYSBmdW5jdGlvbmFsaXR5IG9uIFBpcGUgLSBDR00g QmxvY2sgKi8KPiArCQljZ21fY29udHJvbF9yZWcgPSBJOTE1X1JFQUQoX1BJUEVfQ0dNX0NPTlRS T0wocGlwZSkpOwo+ICsJCWNnbV9jb250cm9sX3JlZyAmPSB+Q0dNX0dBTU1BX0VOOwo+ICsJCUk5 MTVfV1JJVEUoX1BJUEVfQ0dNX0NPTlRST0wocGlwZSksIGNnbV9jb250cm9sX3JlZyk7Cj4gKwo+ ICsJCURSTV9ERUJVR19EUklWRVIoIkdhbW1hIGRpc2FibGVkIG9uIFBpcGUgJWNcbiIsCj4gKwkJ CQlwaXBlX25hbWUocGlwZSkpOwo+ICsJCXJldCA9IDA7Cj4gKwl9IGVsc2UgaWYgKG51bV9zYW1w bGVzID09IENIVl84QklUX0dBTU1BX01BWF9WQUxTKSB7Cj4gKwo+ICsJCS8qIERpc2FibGUgQ0dN IEdhbW1hLCBpZiBhbHJlYWR5IHNldCAqLwo+ICsJCWNnbV9jb250cm9sX3JlZyA9IEk5MTVfUkVB RChfUElQRV9DR01fQ09OVFJPTChwaXBlKSk7Cj4gKwkJY2dtX2NvbnRyb2xfcmVnICY9IH5DR01f R0FNTUFfRU47Cj4gKwkJSTkxNV9XUklURShfUElQRV9DR01fQ09OVFJPTChwaXBlKSwgY2dtX2Nv bnRyb2xfcmVnKTsKPiArCj4gKwkJLyogV3JpdGUgTFVUIHZhbHVlcyB0byByZWdpc3RlcnMgKi8K PiArCQlwYWxldHRlID0gX1BJUEVfR0FNTUFfQkFTRShwaXBlKTsKPiArCQljb3VudCA9IDA7Cj4g KwkJY29ycmVjdGlvbl92YWx1ZXMgPQo+ICsJCQkoc3RydWN0IGRybV9yMzJnMzJiMzIgKikmZ2Ft bWFfZGF0YS0+cGFsZXR0ZV9sdXQ7Cj4gKwkJd2hpbGUgKGNvdW50IDwgbnVtX3NhbXBsZXMpIHsK PiArCQkJYmx1ZSA9IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5iMzI7Cj4gKwkJCWdyZWVuID0g Y29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmczMjsKPiArCQkJcmVkID0gY29ycmVjdGlvbl92YWx1 ZXNbY291bnRdLnIzMjsKPiArCj4gKwkJCWJsdWUgPSBibHVlID4+IENIVl84QklUX0dBTU1BX01T Ql9TSElGVDsKPiArCQkJZ3JlZW4gPSBncmVlbiA+PiBDSFZfOEJJVF9HQU1NQV9NU0JfU0hJRlQ7 Cj4gKwkJCXJlZCA9IHJlZCA+PiBDSFZfOEJJVF9HQU1NQV9NU0JfU0hJRlQ7Cj4gKwo+ICsJCQkv KiBSZWQgKDIzOjE2KSwgR3JlZW4gKDE1OjgpLCBCbHVlICg3OjApICovCj4gKwkJCXdvcmQgPSAo cmVkIDw8IENIVl84QklUX0dBTU1BX1NISUZUX1JFRF9SRUcpIHwKPiArCQkJCShncmVlbiA8PAo+ ICsJCQkJIENIVl84QklUX0dBTU1BX1NISUZUX0dSRUVOX1JFRykgfAo+ICsJCQkJYmx1ZTsKPiAr CQkJSTkxNV9XUklURShwYWxldHRlLCB3b3JkKTsKPiArCj4gKwkJCXBhbGV0dGUgKz0gNDsKPiAr CQkJY291bnQrKzsKPiArCQl9Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiR2FtbWEgTFVUIGxvYWRl ZCBzdWNjZXNzZnVsbHkgZm9yIFBpcGUgJWNcbiIsCj4gKwkJCQlwaXBlX25hbWUocGlwZSkpOwo+ ICsKPiArCQkvKiBFbmFibGUgR2FtbWEgb24gUGlwZSAqLwo+ICsJCXJlZyA9IFBJUEVDT05GKHBp cGUpOwo+ICsJCXZhbCA9IEk5MTVfUkVBRChyZWcpIHwgUElQRUNPTkZfR0FNTUE7Cj4gKwkJSTkx NV9XUklURShyZWcsIHZhbCk7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiTGVnYWN5IEdhbW1hIGVu YWJsZWQgb24gUGlwZSAlY1xuIiwKPiArCQkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gKwo+ICsJCXJl dCA9IDA7Cj4gKwl9IGVsc2UgaWYgKG51bV9zYW1wbGVzID09IENIVl8xMEJJVF9HQU1NQV9NQVhf VkFMUykgewo+ICsJCWNnbV9nYW1tYV9yZWcgPSBfUElQRV9HQU1NQV9CQVNFKHBpcGUpOwo+ICsK PiArCQljb3VudCA9IDA7Cj4gKwkJY29ycmVjdGlvbl92YWx1ZXMgPQo+ICsJCQkoc3RydWN0IGRy bV9yMzJnMzJiMzIgKikmZ2FtbWFfZGF0YS0+cGFsZXR0ZV9sdXQ7Cj4gKwkJd2hpbGUgKGNvdW50 IDwgbnVtX3NhbXBsZXMpIHsKPiArCQkJYmx1ZSA9IGNvcnJlY3Rpb25fdmFsdWVzW2NvdW50XS5i MzI7Cj4gKwkJCWdyZWVuID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmczMjsKPiArCQkJcmVk ID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLnIzMjsKPiArCj4gKwkJCWJsdWUgPSBibHVlID4+ IENIVl8xMEJJVF9HQU1NQV9NU0JfU0hJRlQ7Cj4gKwkJCWdyZWVuID0gZ3JlZW4gPj4gQ0hWXzEw QklUX0dBTU1BX01TQl9TSElGVDsKPiArCQkJcmVkID0gcmVkID4+IENIVl8xMEJJVF9HQU1NQV9N U0JfU0hJRlQ7Cj4gKwo+ICsJCQkvKiBHcmVlbiAoMjU6MTYpIGFuZCBCbHVlICg5OjApIHRvIGJl IHdyaXR0ZW4gKi8KPiArCQkJd29yZCA9IChncmVlbiA8PCBDSFZfR0FNTUFfU0hJRlRfR1JFRU4p IHwgYmx1ZTsKPiArCQkJSTkxNV9XUklURShjZ21fZ2FtbWFfcmVnLCB3b3JkKTsKPiArCQkJY2dt X2dhbW1hX3JlZyArPSA0Owo+ICsKPiArCQkJLyogUmVkICg5OjApIHRvIGJlIHdyaXR0ZW4gKi8K PiArCQkJd29yZCA9IHJlZDsKPiArCQkJSTkxNV9XUklURShjZ21fZ2FtbWFfcmVnLCB3b3JkKTsK PiArCj4gKwkJCWNnbV9nYW1tYV9yZWcgKz0gNDsKPiArCQkJY291bnQrKzsKPiArCQl9Cj4gKwkJ RFJNX0RFQlVHX0RSSVZFUigiR2FtbWEgTFVUIGxvYWRlZCBzdWNjZXNzZnVsbHkgZm9yIFBpcGUg JWNcbiIsCj4gKwkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gKwo+ICsJCS8qIEVuYWJsZSAoQ0dNKSBH YW1tYSBvbiBQaXBlICovCj4gKwkJSTkxNV9XUklURShfUElQRV9DR01fQ09OVFJPTChwaXBlKSwK PiArCQkJSTkxNV9SRUFEKF9QSVBFX0NHTV9DT05UUk9MKHBpcGUpKQo+ICsJCQl8IENHTV9HQU1N QV9FTik7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiQ0dNIEdhbW1hIGVuYWJsZWQgb24gUGlwZSAl Y1xuIiwKPiArCQkJCXBpcGVfbmFtZShwaXBlKSk7Cj4gKwo+ICsJCXJldCA9IDA7Cj4gKwl9IGVs c2Ugewo+ICsJCURSTV9FUlJPUigiSW52YWxpZCBudW1iZXIgb2Ygc2FtcGxlcyBmb3IgR2FtbWEg TFVUXG4iKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXQgPSBkcm1fcHJv cGVydHlfcmVwbGFjZV9nbG9iYWxfYmxvYihkZXYsICZibG9iLCBsZW5ndGgsCj4gKwkJCSh2b2lk ICopIGdhbW1hX2RhdGEsICZjcnRjLT5iYXNlLAo+ICsJCQljb25maWctPnByb3BfcGFsZXR0ZV9h ZnRlcl9jdG0pOwo+ICsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1fRVJST1IoIkVycm9yIHVwZGF0 aW5nIEdhbW1hIGJsb2JcbiIpOwo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsJfQo+ICsKPiArCXJl dHVybiByZXQ7Cj4gK30KPiArCj4gK2ludCBpbnRlbF9jb2xvcl9tYW5hZ2VyX3NldF9nYW1tYShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm9iaiwg dWludDMyX3QgYmxvYl9pZCkKPiArewo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gb2JqX3Rv X2NydGMob2JqKTsKPiArCj4gKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICsJCXJldHVybiBj aHZfc2V0X2dhbW1hKGRldiwgYmxvYl9pZCwgY3J0Yyk7Cj4gKwo+ICsJcmV0dXJuIC1FSU5WQUw7 CgpBcyBub3RlZCBlYXJsaWVyLCBpdCBzZWVtcyBjb25mdXNpbmcgdG8gbWUgdG8gaGF2ZSB1c2Vy c3BhY2Ugc2VlIGEgQ1JUQwpwcm9wZXJ0eSBmb3IgZnVuY3Rpb25hbGl0eSB0aGF0IGlzbid0IHN1 cHBvcnRlZCBhdCBhbGwgb24gdGhlIHBsYXRmb3JtLApidXQgaWYgd2UncmUgZ29pbmcgdG8gcmVq ZWN0IGludmFsaWQgcGxhdGZvcm1zIGhlcmUsIHdlIHNob3VsZCBoYXZlIGF0CmxlYXN0IGEgRFJN X0RFQlVHIG1lc3NhZ2UgdG8gZ2l2ZSBzb21lIGNsdWVzIGFzIHRvIHdoeSB0aGUgLUVJTlZBTCB3 YXMKcmV0dXJuZWQuCgoKPiArfQo+ICsKPiAgaW50IGdldF9jaHZfcGlwZV9jYXBhYmlsaXRpZXMo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQlzdHJ1Y3QgZHJtX2NvbG9yX2NhcHMgKmNvbG9y X2NhcHMsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmgKPiBpbmRleCAzMjI2MmFjLi5kODM1NjdhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaAo+IEBAIC0zMSw2ICsz MSw4IEBACj4gICNkZWZpbmUgQ0hWX1BBTEVUVEVfU1RSVUNUX1ZFUlNJT04JCTEKPiAgI2RlZmlu ZSBDSFZfQ1RNX1NUUlVDVF9WRVJTSU9OCQkJMQo+ICAjZGVmaW5lIENIVl9QTEFURk9STV9TVFJV Q1RfVkVSU0lPTgkJMQo+ICsjZGVmaW5lIENIVl9HQU1NQV9EQVRBX1NUUlVDVF9WRVJTSU9OCQkx Cj4gKwo+ICAjZGVmaW5lIENIVl9NQVhfUEFMRVRURV9DQVBTX0JFRk9SRV9DVE0JCTEKPiAgI2Rl ZmluZSBDSFZfTUFYX1BBTEVUVEVfQ0FQU19BRlRFUl9DVE0JCTIKPiAgI2RlZmluZSBDSFZfREVH QU1NQV9QUkVDSVNJT04JCQkxNAo+IEBAIC00Myw2ICs0NSwxNiBAQAo+ICAjZGVmaW5lIENIVl8x MEJJVF9HQU1NQV9NQVhfVkFMUwkJMjU3Cj4gICNkZWZpbmUgQ0hWXzhCSVRfR0FNTUFfUFJFQ0lT SU9OCQk4Cj4gICNkZWZpbmUgQ0hWXzhCSVRfR0FNTUFfTUFYX1ZBTFMJCQkyNTYKPiArI2RlZmlu ZSBDSFZfOEJJVF9HQU1NQV9NU0JfU0hJRlQJCTgKPiArI2RlZmluZSBDSFZfOEJJVF9HQU1NQV9T SElGVF9SRURfUkVHCQkxNgo+ICsjZGVmaW5lIENIVl84QklUX0dBTU1BX1NISUZUX0dSRUVOX1JF RwkJOAo+ICsjZGVmaW5lIENIVl8xMEJJVF9HQU1NQV9NU0JfU0hJRlQJCTYKPiArI2RlZmluZSBD SFZfR0FNTUFfU0hJRlRfR1JFRU4JCQkxNgo+ICsKPiAgI2RlZmluZSBDSFZfQ1NDX0NPRUZGX01B WF9QUkVDSVNJT04JCTEyCj4gICNkZWZpbmUgQ0hWX0NTQ19DT0VGRl9NQVhfSU5UCQkJNwo+ICAj ZGVmaW5lIENIVl9DU0NfQ09FRkZfTUlOX0lOVAkJCS03Cj4gKwo+ICsvKiBDSFYgQ0dNIEJsb2Nr ICovCj4gKy8qIEJpdCAyIHRvIGJlIGVuYWJsZWQgaW4gQ0dNIGJsb2NrIGZvciBDSFYgKi8KPiAr I2RlZmluZSBDR01fR0FNTUFfRU4JCQkJNAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5k ZXggMDUzY2ViMC4uYTdhYWFkZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAg LTE0NTMsNSArMTQ1Myw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9m dW5jcyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3M7Cj4gIC8qIGludGVsX2NvbG9yX21hbmFnZXIu YyAqLwo+ICB2b2lkIGludGVsX2NvbG9yX21hbmFnZXJfYXR0YWNoKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gIAkJc3RydWN0IGRybV9tb2RlX29iamVjdCAqbW9kZV9vYmopOwo+ICtpbnQgaW50 ZWxfY29sb3JfbWFuYWdlcl9zZXRfZ2FtbWEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQlz dHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosIHVpbnQzMl90IGJsb2JfaWQpOwo+ICAKPiAgI2Vu ZGlmIC8qIF9fSU5URUxfRFJWX0hfXyAqLwo+IC0tIAo+IDIuNC41Cj4gCgotLSAKTWF0dCBSb3Bl cgpHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgpJb1RHIFBsYXRmb3JtIEVuYWJsaW5nICYgRGV2 ZWxvcG1lbnQKSW50ZWwgQ29ycG9yYXRpb24KKDkxNikgMzU2LTI3OTUKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK