From mboxrd@z Thu Jan 1 00:00:00 1970 From: Damien Lespiau Subject: Re: [PATCH v2 07/10] drm/i915: Add pipe level Gamma correction for CHV/BSW Date: Tue, 9 Jun 2015 12:51:41 +0100 Message-ID: <20150609115141.GA8729@strange.amr.corp.intel.com> References: <1433425361-17864-1-git-send-email-Kausal.Malladi@intel.com> <1433425361-17864-8-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: <1433425361-17864-8-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: annie.j.matheson@intel.com, dhanya.p.r@intel.com, avinash.reddy.palleti@intel.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, vijay.a.purushothaman@intel.com, indranil.mukherjee@intel.com, jesse.barnes@intel.com, daniel.vetter@intel.com, sunil.kamath@intel.com, shashank.sharma@intel.com List-Id: intel-gfx@lists.freedesktop.org KE5vdGUgSSBoYXZlbid0IGFjdHVhbGx5IGxvb2tlZCBhdCB0aGUgQ0hWIHNwZWNpZmljIGRldGFp bHMganVzdCB5ZXQsCnRoYXQnbGwgYmUgZm9yIGFub3RoZXIgcGFzcykuCgpPbiBUaHUsIEp1biAw NCwgMjAxNSBhdCAwNzoxMjozOFBNICswNTMwLCBLYXVzYWwgTWFsbGFkaSB3cm90ZToKPiAraW50 IGNodl9zZXRfZ2FtbWEoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3QgYmxvYl9pZCwK PiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fZ2FtbWEgKmdh bW1hX2RhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iOwo+ICsJc3RydWN0 IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7Cj4gKwl1MzIgY2dt X2NvbnRyb2xfcmVnID0gMDsKPiArCXUzMiBjZ21fZ2FtbWFfcmVnID0gMDsKPiArCXUzMiByZWcs IHZhbDsKPiArCWVudW0gcGlwZSBwaXBlOwo+ICsJdTE2IHJlZCwgZ3JlZW4sIGJsdWU7Cj4gKwlz dHJ1Y3QgcmdiX3BpeGVsIGNvcnJlY3RfcmdiOwo+ICsJdTMyIGNvdW50ID0gMDsKPiArCXN0cnVj dCByZ2JfcGl4ZWwgKmNvcnJlY3Rpb25fdmFsdWVzID0gTlVMTDsKPiArCXUzMiBudW1fc2FtcGxl czsKPiArCXUzMiB3b3JkOwo+ICsJdTMyIHBhbGV0dGU7Cj4gKwlpbnQgcmV0ID0gMCwgbGVuZ3Ro Owo+ICsKPiArCWJsb2IgPSBkcm1fcHJvcGVydHlfbG9va3VwX2Jsb2IoZGV2LCBibG9iX2lkKTsK PiArCWlmICghYmxvYikgewo+ICsJCURSTV9FUlJPUigiSW52YWxpZCBCbG9iIElEXG4iKTsKCk5v dCBEUk1fRVJST1IuIFdlIGRvIGdpdmUgLUVJTlZBTCBoaW50IGZvciBwZW9wbGUgZGV2ZWxvcHBp bmcgdXNlcgpzcGFjZSwgYnV0IHdpdGggRFJNX0RFQlVHX0tNUygpLgoKPiArCQlyZXR1cm4gLUVJ TlZBTDsKPiArCX0KPiArCj4gKwlnYW1tYV9kYXRhID0gKHN0cnVjdCBkcm1fZ2FtbWEgKilibG9i LT5kYXRhOwo+ICsJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gKwludW1fc2Ft cGxlcyA9IGdhbW1hX2RhdGEtPm51bV9zYW1wbGVzOwo+ICsJbGVuZ3RoID0gbnVtX3NhbXBsZXMg KiBzaXplb2Yoc3RydWN0IHJnYl9waXhlbCk7Cj4gKwo+ICsJaWYgKGdhbW1hX2RhdGEtPmdhbW1h X3ByZWNpc2lvbiA9PSBJOTE1X0dBTU1BX1BSRUNJU0lPTl9VTktOT1dOKSB7Cj4gKwo+ICsJCS8q IERpc2FibGUgR2FtbWEgZnVuY3Rpb25hbGl0eSBvbiBQaXBlIC0gQ0dNIEJsb2NrICovCj4gKwkJ Y2dtX2NvbnRyb2xfcmVnID0gSTkxNV9SRUFEKF9QSVBFX0NHTV9DT05UUk9MKHBpcGUpKTsKPiAr CQljZ21fY29udHJvbF9yZWcgJj0gfkNHTV9HQU1NQV9FTjsKPiArCQlJOTE1X1dSSVRFKF9QSVBF X0NHTV9DT05UUk9MKHBpcGUpLCBjZ21fY29udHJvbF9yZWcpOwo+ICsKPiArCQlEUk1fREVCVUdf RFJJVkVSKCJHYW1tYSBkaXNhYmxlZCBvbiBQaXBlICVjXG4iLAo+ICsJCQkJcGlwZV9uYW1lKHBp cGUpKTsKPiArCQlyZXQgPSAwOwo+ICsJfSBlbHNlIGlmIChnYW1tYV9kYXRhLT5nYW1tYV9wcmVj aXNpb24gPT0gSTkxNV9HQU1NQV9QUkVDSVNJT05fTEVHQUNZKSB7Cj4gKwo+ICsJCWlmIChudW1f c2FtcGxlcyAhPSBDSFZfOEJJVF9HQU1NQV9NQVhfVkFMUykgewo+ICsJCQlEUk1fRVJST1IoIklu Y29ycmVjdCBudW1iZXIgb2Ygc2FtcGxlcyByZWNlaXZlZFxuIik7CgpOb3QgRFJNX0VSUk9SLiBX ZSBkbyBnaXZlIC1FSU5WQUwgaGludCBmb3IgcGVvcGxlIGRldmVsb3BwaW5nIHVzZXIKc3BhY2Us IGJ1dCB3aXRoIERSTV9ERUJVR19LTVMoKS4KCj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0K ClRoaXMgbWVhbnMgdGhlIGN1cnJlbnQgY29kZSBkb2Vzbid0IGFsbG93IHVzIHRvIGxvYWQgTFVU cyB3aXRoIDI1Ngp2YWx1ZXMgKGxpa2UgdG9kYXkpLiBUaGF0J3Mgbm90IHdoYXQgd2Ugd2FudC4K CkhhdmUgeW91IGxvb2tlZCBhdCB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhpcyBwcm9wZXJ0 eSBhbmQgdGhlIGxlZ2FjeQpnYW1tYSBpb2N0bCgpPwoKPiArCj4gKwkJLyogRmlyc3QsIGRpc2Fi bGUgQ0dNIEdhbW1hLCBpZiBhbHJlYWR5IHNldCAqLwo+ICsJCWNnbV9jb250cm9sX3JlZyA9IEk5 MTVfUkVBRChfUElQRV9DR01fQ09OVFJPTChwaXBlKSk7Cj4gKwkJY2dtX2NvbnRyb2xfcmVnICY9 IH5DR01fR0FNTUFfRU47Cj4gKwkJSTkxNV9XUklURShfUElQRV9DR01fQ09OVFJPTChwaXBlKSwg Y2dtX2NvbnRyb2xfcmVnKTsKPiArCj4gKwkJLyogRW5hYmxlIChMZWdhY3kpIEdhbW1hIG9uIFBp cGUgKi8KPiArCQlwYWxldHRlID0gX1BJUEVfR0FNTUFfQkFTRShwaXBlKTsKPiArCj4gKwkJY291 bnQgPSAwOwo+ICsJCWNvcnJlY3Rpb25fdmFsdWVzID0gKHN0cnVjdCByZ2JfcGl4ZWwgKikmZ2Ft bWFfZGF0YS0+dmFsdWVzOwo+ICsJCXdoaWxlIChjb3VudCA8IG51bV9zYW1wbGVzKSB7Cj4gKwkJ CWNvcnJlY3RfcmdiID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdOwo+ICsJCQlibHVlID0gY29y cmVjdGlvbl92YWx1ZXNbY291bnRdLmJsdWU7Cj4gKwkJCWdyZWVuID0gY29ycmVjdGlvbl92YWx1 ZXNbY291bnRdLmdyZWVuOwo+ICsJCQlyZWQgPSBjb3JyZWN0aW9uX3ZhbHVlc1tjb3VudF0ucmVk Owo+ICsKPiArCQkJYmx1ZSA9IGJsdWUgPj4gQ0hWXzhCSVRfR0FNTUFfTVNCX1NISUZUOwo+ICsJ CQlncmVlbiA9IGdyZWVuID4+IENIVl84QklUX0dBTU1BX01TQl9TSElGVDsKPiArCQkJcmVkID0g cmVkID4+IENIVl84QklUX0dBTU1BX01TQl9TSElGVDsKPiArCj4gKwkJCS8qIFJlZCAoMjM6MTYp LCBHcmVlbiAoMTU6OCksIEJsdWUgKDc6MCkgKi8KPiArCQkJd29yZCA9IChyZWQgPDwgQ0hWXzhC SVRfR0FNTUFfU0hJRlRfUkVEX1JFRykgfAo+ICsJCQkJKGdyZWVuIDw8Cj4gKwkJCQkgQ0hWXzhC SVRfR0FNTUFfU0hJRlRfR1JFRU5fUkVHKSB8Cj4gKwkJCQlibHVlOwo+ICsJCQlJOTE1X1dSSVRF KHBhbGV0dGUsIHdvcmQpOwo+ICsKPiArCQkJcGFsZXR0ZSArPSA0Owo+ICsJCQljb3VudCsrOwo+ ICsJCX0KPiArCQlyZWcgPSBQSVBFQ09ORihwaXBlKTsKPiArCQl2YWwgPSBJOTE1X1JFQUQocmVn KSB8IFBJUEVDT05GX0dBTU1BOwo+ICsJCUk5MTVfV1JJVEUocmVnLCB2YWwpOwo+ICsKPiArCQlE Uk1fREVCVUdfRFJJVkVSKCJHYW1tYSBMVVQgbG9hZGVkIHN1Y2Nlc3NmdWxseSBmb3IgUGlwZSAl Y1xuIiwKPiArCQkJcGlwZV9uYW1lKHBpcGUpKTsKPiArCQlyZXQgPSAwOwo+ICsJfSBlbHNlIGlm IChnYW1tYV9kYXRhLT5nYW1tYV9wcmVjaXNpb24gPT0gSTkxNV9HQU1NQV9QUkVDSVNJT05fMTBC SVQpIHsKPiArCj4gKwkJaWYgKG51bV9zYW1wbGVzICE9IENIVl8xMEJJVF9HQU1NQV9NQVhfVkFM Uykgewo+ICsJCQlEUk1fRVJST1IoIkluY29ycmVjdCBudW1iZXIgb2Ygc2FtcGxlcyByZWNlaXZl ZFxuIik7CgpOb3QgRFJNX0VSUk9SLiBXZSBkbyBnaXZlIC1FSU5WQUwgaGludCBmb3IgcGVvcGxl IGRldmVsb3BwaW5nIHVzZXIKc3BhY2UsIGJ1dCB3aXRoIERSTV9ERUJVR19LTVMoKS4KCj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCj4gKwkJLyogRW5hYmxlIChDR00pIEdhbW1hIG9u IFBpcGUgKi8KPiArCQljZ21fZ2FtbWFfcmVnID0gX1BJUEVfR0FNTUFfQkFTRShwaXBlKTsKPiAr Cj4gKwkJY291bnQgPSAwOwo+ICsJCWNvcnJlY3Rpb25fdmFsdWVzID0gKHN0cnVjdCByZ2JfcGl4 ZWwgKikmZ2FtbWFfZGF0YS0+dmFsdWVzOwo+ICsJCXdoaWxlIChjb3VudCA8IG51bV9zYW1wbGVz KSB7Cj4gKwkJCWNvcnJlY3RfcmdiID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdOwo+ICsJCQli bHVlID0gY29ycmVjdGlvbl92YWx1ZXNbY291bnRdLmJsdWU7Cj4gKwkJCWdyZWVuID0gY29ycmVj dGlvbl92YWx1ZXNbY291bnRdLmdyZWVuOwo+ICsJCQlyZWQgPSBjb3JyZWN0aW9uX3ZhbHVlc1tj b3VudF0ucmVkOwo+ICsKPiArCQkJYmx1ZSA9IGJsdWUgPj4gQ0hWXzEwQklUX0dBTU1BX01TQl9T SElGVDsKPiArCQkJZ3JlZW4gPSBncmVlbiA+PiBDSFZfMTBCSVRfR0FNTUFfTVNCX1NISUZUOwo+ ICsJCQlyZWQgPSByZWQgPj4gQ0hWXzEwQklUX0dBTU1BX01TQl9TSElGVDsKPiArCj4gKwkJCS8q IEdyZWVuICgyNToxNikgYW5kIEJsdWUgKDk6MCkgdG8gYmUgd3JpdHRlbiAqLwo+ICsJCQl3b3Jk ID0gKGdyZWVuIDw8IENIVl9HQU1NQV9TSElGVF9HUkVFTikgfCBibHVlOwo+ICsJCQlJOTE1X1dS SVRFKGNnbV9nYW1tYV9yZWcsIHdvcmQpOwo+ICsJCQljZ21fZ2FtbWFfcmVnICs9IDQ7Cj4gKwo+ ICsJCQkvKiBSZWQgKDk6MCkgdG8gYmUgd3JpdHRlbiAqLwo+ICsJCQl3b3JkID0gcmVkOwo+ICsJ CQlJOTE1X1dSSVRFKGNnbV9nYW1tYV9yZWcsIHdvcmQpOwo+ICsKPiArCQkJY2dtX2dhbW1hX3Jl ZyArPSA0Owo+ICsJCQljb3VudCsrOwo+ICsJCX0KPiArCj4gKwkJSTkxNV9XUklURShfUElQRV9D R01fQ09OVFJPTChwaXBlKSwKPiArCQkJSTkxNV9SRUFEKF9QSVBFX0NHTV9DT05UUk9MKHBpcGUp KQo+ICsJCQl8IENHTV9HQU1NQV9FTik7Cj4gKwo+ICsJCURSTV9ERUJVR19EUklWRVIoIkdhbW1h IExVVCBsb2FkZWQgc3VjY2Vzc2Z1bGx5IGZvciBQaXBlICVjXG4iLAo+ICsJCQlwaXBlX25hbWUo cGlwZSkpOwo+ICsKPiArCQlyZXQgPSAwOwo+ICsJfSBlbHNlIHsKPiArCQlEUk1fRVJST1IoIklu dmFsaWQgZ2FtbWFfbGV2ZWwgcmVjZWl2ZWRcbiIpOwoKTm90IERSTV9FUlJPUi4gV2UgZG8gZ2l2 ZSAtRUlOVkFMIGhpbnQgZm9yIHBlb3BsZSBkZXZlbG9wcGluZyB1c2VyCnNwYWNlLCBidXQgd2l0 aCBEUk1fREVCVUdfS01TKCkuCgo+ICsJCXJldHVybiAtRUZBVUxUOwo+ICsJfQo+ICsKPiArCXJl dCA9IGRybV9tb2RlX2NydGNfdXBkYXRlX2NvbG9yX3Byb3BlcnR5KCZibG9iLCBsZW5ndGgsCj4g KwkJCSh2b2lkICopIGdhbW1hX2RhdGEsICZjcnRjLT5iYXNlLAo+ICsJCQljb25maWctPmdhbW1h X3Byb3BlcnR5KTsKPiArCj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJNX0VSUk9SKCJFcnJvciB1cGRh dGluZyBHYW1tYSBibG9iXG4iKTsKCk5vdCBEUk1fRVJST1IuIFdlIGRvIGdpdmUgLUVJTlZBTCBo aW50IGZvciBwZW9wbGUgZGV2ZWxvcHBpbmcgdXNlcgpzcGFjZSwgYnV0IHdpdGggRFJNX0RFQlVH X0tNUygpLgoKPiArCQljcnRjLT5nYW1tYV9ibG9iX2lkID0gSU5WQUxJRF9CTE9CX0lEOwo+ICsJ CXJldHVybiAtRUZBVUxUOwo+ICsJfQo+ICsKPiArCS8qIFNhdmUgYmxvYiBJRCBmb3IgZnV0dXJl IHVzZSAqLwo+ICsJY3J0Yy0+Z2FtbWFfYmxvYl9pZCA9IGJsb2ItPmJhc2UuaWQ7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgaW50ZWxfY29sb3JfbWFuYWdlcl9zZXRfZ2FtbWEoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICpvYmosIHVp bnQzMl90IGJsb2JfaWQpCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IG9ial90b19j cnRjKG9iaik7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiXG4iKTsKClRvbyB2ZXJib3NlLgoK PiArCj4gKwlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQo+ICsJCXJldHVybiBjaHZfc2V0X2dhbW1h KGRldiwgYmxvYl9pZCwgY3J0Yyk7Cj4gKwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4gK30KPiArCj4g IHZvaWQgaW50ZWxfY29sb3JfbWFuYWdlcl9hdHRhY2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCQlzdHJ1Y3QgZHJtX21vZGVfb2JqZWN0ICptb2RlX29iaikKPiAgewo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvcl9tYW5hZ2VyLmgKPiBpbmRleCBhNTVjZTIzLi4wYWNmOGU5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yX21hbmFnZXIuaAo+IEBA IC0yNyw4ICsyNyw3MCBAQAo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gICNpbmNsdWRl IDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICsKPiAr LyogQ29sb3IgTWFuYWdlbWVudCBtYWNyb3MgZm9yIEdhbW1hICovCj4gKyNkZWZpbmUgSTkxNV9H QU1NQV9GTEFHX0RFR0FNTUEJCQkoMSA8PCAwKQo+ICsjZGVmaW5lIEk5MTVfUElQRV9HQU1NQQkJ CQkoMSA8PCAwKQo+ICsjZGVmaW5lIEk5MTVfUExBTkVfR0FNTUEJCQkoMSA8PCAxKQo+ICsjZGVm aW5lIEk5MTVfR0FNTUFfUFJFQ0lTSU9OX1VOS05PV04JCTAKPiArI2RlZmluZSBJOTE1X0dBTU1B X1BSRUNJU0lPTl9DVVJSRU5UCQkweEZGRkZGRkZGCj4gKyNkZWZpbmUgSTkxNV9HQU1NQV9QUkVD SVNJT05fTEVHQUNZCQkoMSA8PCAwKQo+ICsjZGVmaW5lIEk5MTVfR0FNTUFfUFJFQ0lTSU9OXzEw QklUCQkoMSA8PCAxKQo+ICsjZGVmaW5lIEk5MTVfR0FNTUFfUFJFQ0lTSU9OXzEyQklUCQkoMSA8 PCAyKQo+ICsjZGVmaW5lIEk5MTVfR0FNTUFfUFJFQ0lTSU9OXzE0QklUCQkoMSA8PCAzKQo+ICsj ZGVmaW5lIEk5MTVfR0FNTUFfUFJFQ0lTSU9OXzE2QklUCQkoMSA8PCA0KQo+ICsKPiArI2RlZmlu ZSBDSFZfTUFYX1BJUEVTCQkJCTMKCndlIGhhdmUgdGhlIG51bWJlciBvZiBwaXBlcyBpbiB0aGUg ZGV2aWNlIGluZm8gaW4gZGV2X3ByaXYuCgo+ICsjZGVmaW5lIENIVl9ESVNQTEFZX0JBU0UJCQkw eDE4MDAwMAoKV2UgYWxzbyBoYXZlIHRoZSBkaXNwbGF5IGJhc2UgdGhlci4KCj4gKyNkZWZpbmUg SU5WQUxJRF9CTE9CX0lECQkJCTk5OTkKClRoaXMgbG9va3Mgd2VpcmQuIElmIHJlYWxseSBuZWVk ZWQsIGl0IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBnZW5lcmljCmJsb2IgaW50ZXJmYWNlLgoKPiAr c3RydWN0IHJnYl9waXhlbCB7Cj4gKwl1MTYgcmVkOwo+ICsJdTE2IGdyZWVuOwo+ICsJdTE2IGJs dWU7Cj4gK307CgpUaGF0IHNob3VsZG4ndCBiZSBleHBvc2VkIGluIHRoaXMgaGVhZGVyLiBJZiB0 aGlzIGlzIGhvdyB1c2Vyc3BhY2Ugd2lsbApnaXZlIHVzIHZhbHVlcywgaG93IGFib3V0IGluY2x1 ZGluZyBpdCBpbiB0aGUgaW50ZXJmYWNlIGl0c2VsZj8gQ2FuJ3QgYmUKYXMgZ2VuZXJpYyBhcyAi cmdiX3BpeGVsIiB0aG91Z2gsIHN0cnVjdCBkcm1fbHV0X2VudHJ5IGNvdWxkIGJlIGEKY29udGVu ZGVyLgoKPiArCj4gKy8qIENIViBDR00gQmxvY2sgKi8KPiArLyogQml0IDIgdG8gYmUgZW5hYmxl ZCBpbiBDR00gYmxvY2sgZm9yIENIViAqLwo+ICsjZGVmaW5lIENHTV9HQU1NQV9FTgkJCQk0CgpU aGlzIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIGRlZmluZXMg KHdlIGdyb3VwCmRlZmluZXMgcGVyLXJlZ2lzdGVyKQoKPiArCj4gKy8qIEdhbW1hICovCj4gKyNk ZWZpbmUgQ0hWX0dBTU1BX1ZBTFMJCQkJMjU3CgpUaGlzIGRlZmluZSBpcyB1bnVzZWQgaW4gdGhp cyBwYXRjaCBhbmQgZHVwbGljYXRlcyB3aXRoCkNIVl84QklUX0dBTU1BX01BWF9WQUxTLgoKPiAr I2RlZmluZSBDSFZfMTBCSVRfR0FNTUFfTUFYX0lOREVYCQkyNTYKPiArI2RlZmluZSBDSFZfOEJJ VF9HQU1NQV9NQVhfSU5ERVgJCTI1NQo+ICsjZGVmaW5lIENIVl8xMEJJVF9HQU1NQV9NU0JfU0hJ RlQJCTYKPiArI2RlZmluZSBDSFZfR0FNTUFfRVZFTl9NQVNLCQkJMHhGRgoKTm90IHVzZWQgaW4g dGhpcyBwYXRjaC4KCj4gKyNkZWZpbmUgQ0hWX0dBTU1BX1NISUZUX0JMVUUJCQkwCj4gKyNkZWZp bmUgQ0hWX0dBTU1BX1NISUZUX0dSRUVOCQkJMTYKPiArI2RlZmluZSBDSFZfR0FNTUFfU0hJRlRf UkVECQkJMAo+ICsjZGVmaW5lIENIVl9HQU1NQV9PRERfU0hJRlQJCQk4CgpOb3QgdXNlZCBpbiB0 aGlzIHBhdGNoLgoKPiArI2RlZmluZSBDSFZfQ0xSTUdSX0dBTU1BX0dDTUFYX1NISUZUCQkxNwoK Tm90IHVzZWQgaW4gdGhpcyBwYXRjaC4KCj4gKyNkZWZpbmUgQ0hWX0dBTU1BX0dDTUFYX01BU0sJ CQkweDFGRkZGCgpOb3QgdXNlZCBpbiB0aGlzIHBhdGNoLgoKPiArI2RlZmluZSBDSFZfR0FNTUFf R0NNQVhfTUFYCQkJMHg0MDAKCk5vdCB1c2VkIGluIHRoaXMgcGF0Y2guCgo+ICsjZGVmaW5lIENI Vl8xMEJJVF9HQU1NQV9NQVhfVkFMUwkJKENIVl8xMEJJVF9HQU1NQV9NQVhfSU5ERVggKyAxKQo+ ICsjZGVmaW5lIENIVl84QklUX0dBTU1BX01BWF9WQUxTCQkJKENIVl84QklUX0dBTU1BX01BWF9J TkRFWCArIDEpCj4gKyNkZWZpbmUgQ0hWXzhCSVRfR0FNTUFfTVNCX1NISUZUCQk4Cj4gKyNkZWZp bmUgQ0hWXzhCSVRfR0FNTUFfU0hJRlRfR1JFRU5fUkVHCQk4Cj4gKyNkZWZpbmUgQ0hWXzhCSVRf R0FNTUFfU0hJRlRfUkVEX1JFRwkJMTYKPiArCj4gKy8qIENHTSBSZWdpc3RlcnMgKi8KPiArI2Rl ZmluZSBDR01fT0ZGU0VUCQkJCTB4MjAwMAo+ICsjZGVmaW5lIEdBTU1BX09GRlNFVAkJCQkweDIw MDAKPiArI2RlZmluZSBQSVBFQV9DR01fQ09OVFJPTAkJCShDSFZfRElTUExBWV9CQVNFICsgMHg2 N0EwMCkKPiArI2RlZmluZSBQSVBFQV9DR01fR0FNTUFfTUlOCQkJKENIVl9ESVNQTEFZX0JBU0Ug KyAweDY3MDAwKQo+ICsjZGVmaW5lIF9QSVBFX0NHTV9DT05UUk9MKHBpcGUpIFwKPiArCShQSVBF QV9DR01fQ09OVFJPTCArIChwaXBlICogQ0dNX09GRlNFVCkpCj4gKyNkZWZpbmUgX1BJUEVfR0FN TUFfQkFTRShwaXBlKSBcCj4gKwkoUElQRUFfQ0dNX0dBTU1BX01JTiArIChwaXBlICogR0FNTUFf T0ZGU0VUKSkKClVzZSB0aGUgX1BJUEUoKSBtYWNyby4gVGhlICdfJyBpcywgYnkgY29udmVudGlv biwgZm9yIHN5bWJvbHMgY29uc2lkZXJlZApwcml2YXRlLCBzbyB0aGUgUElQRUFfKiBkZWZpbmVz IHNob3VsZCBoYXZlIGl0LCBub3QgdGhlIGRlZmluZSB1c2VkIGluCmNvZGUuCgo+ICAKPiAgLyog R2VuZXJpYyBGdW5jdGlvbiBwcm90b3R5cGVzICovCj4gIHZvaWQgaW50ZWxfY29sb3JfbWFuYWdl cl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGludGVsX2NvbG9yX21hbmFn ZXJfYXR0YWNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJc3RydWN0IGRybV9tb2RlX29i amVjdCAqbW9kZV9vYmopOwo+ICtleHRlcm4gaW50IGludGVsX2NvbG9yX21hbmFnZXJfc2V0X2dh bW1hKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJc3RydWN0IGRybV9tb2RlX29iamVjdCAq b2JqLCB1aW50MzJfdCBibG9iX2lkKTsKCmV4dGVybiBvciBub3Q/IG9uZSBtdXN0IGNob29zZSAo d2UgZ28gd2l0aG91dCBleHRlcm4gdGhlc2UgZGF5cykuCgo+ICsKPiArLyogUGxhdGZvcm0gc3Bl Y2lmaWMgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwo+ICtleHRlcm4gaW50IGNodl9zZXRfZ2FtbWEo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQl1aW50MzJfdCBibG9iX2lkLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMpOwo+IC0tIAo+IDIuNC4yCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==