From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 3/6] drm/i915: Implement split/10bit gamma for ivb/hsw Date: Thu, 28 Mar 2019 17:16:12 -0700 Message-ID: <20190329001612.GX4773@mdroper-desk.amr.corp.intel.com> References: <20190328210505.10429-1-ville.syrjala@linux.intel.com> <20190328210505.10429-4-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0CB9E6E4A3 for ; Fri, 29 Mar 2019 00:16:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190328210505.10429-4-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXIgMjgsIDIwMTkgYXQgMTE6MDU6MDJQTSArMDIwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IFJldXNlIHRoZSBiZHcrIGNvZGUgdG8gZ2V0IHNwbGl0LzEwYml0IGdhbW1hIGZv cgo+IGl2Yi9oc3cuIFRoZSBoYXJkd2FyZSBpcyBuZWFybHkgaWRlbnRpY2FsLiBUaGUKPiBvbmx5 IHNsaWdodCBzbmFnIGlzIHRoYXQgb24gaXZiL2hzdyB0aGUgcHJlY2lzaW9uCj4gcGFsZXR0ZSBh dXRvIGluY3JlbWVudCBtb2RlIGRvZXMgbm90IHdvcmsuIFNvIHdlCj4gbXVzdCBpbmNyZW1lbnQg dGhlIGluZGV4IG1hbnVhbGx5LiBXZSdsbCBwcm9iYWJseQo+IHdhbnQgdG8gc3RpY2sgdG8gdGhl IGF1dG8gaW5jcmVtZW50IG1vZGUgb24gYmR3Kwo+IGluIHRoZSBuYW1lIG9mIGVmZmljaWVuY3ku Cj4gCj4gQWxzbyB3ZSB3YW50IHRvIGF2b2lkIHVzaW5nIHRoZSBDU0MgZm9yIGxpbWl0ZWQgcmFu Z2UKPiBSR0Igb3V0cHV0IGFzIFBJUEVDT05GIHdpbGwgdGFrZSBjYXJlIG9mIHRoYXQgb24gSVZC Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+CgpSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGlu dGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgfCAg IDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyB8IDExMyArKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMo KyksIDI0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IGluZGV4IGE3 ZTE2MTFhZjI2ZC4uMzg1MDU2NzUyOTM5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4g QEAgLTExNiw3ICsxMTYsNyBAQAo+ICAJCVtQSVBFX0NdID0gSVZCX0NVUlNPUl9DX09GRlNFVCwg XAo+ICAJfQo+ICAKPiAtI2RlZmluZSBCRFdfQ09MT1JTIFwKPiArI2RlZmluZSBJVkJfQ09MT1JT IFwKPiAgCS5jb2xvciA9IHsgLmRlZ2FtbWFfbHV0X3NpemUgPSA1MTIsIC5nYW1tYV9sdXRfc2l6 ZSA9IDUxMiB9Cj4gICNkZWZpbmUgQ0hWX0NPTE9SUyBcCj4gIAkuY29sb3IgPSB7IC5kZWdhbW1h X2x1dF9zaXplID0gNjUsIC5nYW1tYV9sdXRfc2l6ZSA9IDI1NywgXAo+IEBAIC0zOTksNiArMzk5 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9zYW5keWJy aWRnZV9tX2d0Ml9pbmZvID0gewo+ICAJLnBwZ3R0X3NpemUgPSAzMSwgXAo+ICAJSVZCX1BJUEVf T0ZGU0VUUywgXAo+ICAJSVZCX0NVUlNPUl9PRkZTRVRTLCBcCj4gKwlJVkJfQ09MT1JTLCBcCj4g IAlHRU5fREVGQVVMVF9QQUdFX1NJWkVTCj4gIAo+ICAjZGVmaW5lIElWQl9EX1BMQVRGT1JNIFwK PiBAQCAtNDk0LDcgKzQ5NSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2lu Zm8gaW50ZWxfaGFzd2VsbF9ndDNfaW5mbyA9IHsKPiAgI2RlZmluZSBHRU44X0ZFQVRVUkVTIFwK PiAgCUc3NV9GRUFUVVJFUywgXAo+ICAJR0VOKDgpLCBcCj4gLQlCRFdfQ09MT1JTLCBcCj4gIAku cGFnZV9zaXplcyA9IEk5MTVfR1RUX1BBR0VfU0laRV80SyB8IFwKPiAgCQkgICAgICBJOTE1X0dU VF9QQUdFX1NJWkVfMk0sIFwKPiAgCS5oYXNfbG9naWNhbF9yaW5nX2NvbnRleHRzID0gMSwgXAo+ IEBAIC02MjksNyArNjI5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5m byBpbnRlbF9za3lsYWtlX2d0NF9pbmZvID0gewo+ICAJLmRpc3BsYXkuaGFzX2lwYyA9IDEsIFwK PiAgCUhTV19QSVBFX09GRlNFVFMsIFwKPiAgCUlWQl9DVVJTT1JfT0ZGU0VUUywgXAo+IC0JQkRX X0NPTE9SUywgXAo+ICsJSVZCX0NPTE9SUywgXAo+ICAJR0VOOV9ERUZBVUxUX1BBR0VfU0laRVMK PiAgCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfYnJveHRv bl9pbmZvID0gewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xv ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+IGluZGV4IGVkNGJkOWJk MTVmNS4uNzBhNzFjOTJlM2U1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2NvbG9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4g QEAgLTQyOCw2ICs0MjgsOCBAQCBzdGF0aWMgdm9pZCBpbGtfY29sb3JfY29tbWl0KGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJdmFsICY9IH5QSVBFQ09ORl9H QU1NQV9NT0RFX01BU0tfSUxLOwo+ICAJdmFsIHw9IFBJUEVDT05GX0dBTU1BX01PREUoY3J0Y19z dGF0ZS0+Z2FtbWFfbW9kZSk7Cj4gIAlJOTE1X1dSSVRFKFBJUEVDT05GKHBpcGUpLCB2YWwpOwo+ ICsKPiArCWlsa19sb2FkX2NzY19tYXRyaXgoY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRp YyB2b2lkIGhzd19jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4gQEAgLTQ2Niw2ICs0NjgsNDggQEAgc3RhdGljIHZvaWQgc2tsX2NvbG9yX2Nv bW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCQlpbGtf bG9hZF9jc2NfbWF0cml4KGNydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICsvKgo+ICsgKiBJVkIvSFNX IEJzcGVjIC8gUEFMX1BSRUNfSU5ERVg6Cj4gKyAqICJSZXN0cmljdGlvbiA6IEluZGV4IGF1dG8g aW5jcmVtZW50IG1vZGUgaXMgbm90Cj4gKyAqICBzdXBwb3J0ZWQgYW5kIG11c3Qgbm90IGJlIGVu YWJsZWQuIgo+ICsgKi8KPiArc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0XzEwKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICsJCQkgICAgY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpi bG9iLAo+ICsJCQkgICAgdTMyIHByZWNfaW5kZXgsIGJvb2wgZHVwbGljYXRlKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+ICsJ aW50IGksIGx1dF9zaXplID0gZHJtX2NvbG9yX2x1dF9zaXplKGJsb2IpOwo+ICsJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBhZHZlcnRpemUgdGhlIHNw bGl0IGdhbW1hIHNpemVzLiBXaGVuIG5vdCB1c2luZyBzcGxpdAo+ICsJICogZ2FtbWEgd2UganVz dCBkdXBsaWNhdGUgZWFjaCBlbnRyeS4KPiArCSAqCj4gKwkgKiBUT0RPOiBleHBvc2UgdGhlIGZ1 bGwgTFVUIHRvIHVzZXJzcGFjZQo+ICsJICovCj4gKwlpZiAoZHVwbGljYXRlKSB7Cj4gKwkJZm9y IChpID0gMDsgaSA8IGx1dF9zaXplOyBpKyspIHsKPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9J TkRFWChwaXBlKSwgcHJlY19pbmRleCsrKTsKPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRB KHBpcGUpLCBpbGtfbHV0XzEwKCZsdXRbaV0pKTsKPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9J TkRFWChwaXBlKSwgcHJlY19pbmRleCsrKTsKPiArCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRB KHBpcGUpLCBpbGtfbHV0XzEwKCZsdXRbaV0pKTsKPiArCQl9Cj4gKwl9IGVsc2Ugewo+ICsJCWZv ciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Cj4gKwkJCUk5MTVfV1JJVEUoUFJFQ19QQUxf SU5ERVgocGlwZSksIHByZWNfaW5kZXgrKyk7Cj4gKwkJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFU QShwaXBlKSwgaWxrX2x1dF8xMCgmbHV0W2ldKSk7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCS8qCj4g KwkgKiBSZXNldCB0aGUgaW5kZXgsIG90aGVyd2lzZSBpdCBwcmV2ZW50cyB0aGUgbGVnYWN5IHBh bGV0dGUgdG8gYmUKPiArCSAqIHdyaXR0ZW4gcHJvcGVybHkuCj4gKwkgKi8KPiArCUk5MTVfV1JJ VEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDApOwo+ICt9Cj4gKwo+ICsvKiBPbiBCRFcrIHRoZSBp bmRleCBhdXRvIGluY3JlbWVudCBtb2RlIGFjdHVhbGx5IHdvcmtzICovCj4gIHN0YXRpYyB2b2lk IGJkd19sb2FkX2x1dF8xMChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJICAgIGNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYiwKPiAgCQkJICAgIHUzMiBwcmVjX2luZGV4 LCBib29sIGR1cGxpY2F0ZSkKPiBAQCAtNTAxLDcgKzU0NSw3IEBAIHN0YXRpYyB2b2lkIGJkd19s b2FkX2x1dF8xMChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCUk5MTVfV1JJVEUoUFJFQ19Q QUxfSU5ERVgocGlwZSksIDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBiZHdfbG9hZF9sdXRf MTBfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICtzdGF0aWMgdm9pZCBpdmJfbG9hZF9s dXRfMTBfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpibG9iKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiBAQCAtNTE4LDYgKzU2MiwyOSBA QCBzdGF0aWMgdm9pZCBiZHdfbG9hZF9sdXRfMTBfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAo+ICAJCSAgIGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uYmx1ZSwgMTYpKTsKPiAgfQo+ ICAKPiArc3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3By b3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ICsJ Y29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUt PmJhc2UuZGVnYW1tYV9sdXQ7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21vZGUgPT0g R0FNTUFfTU9ERV9NT0RFXzhCSVQpIHsKPiArCQlpOXh4X2xvYWRfbHV0cyhjcnRjX3N0YXRlKTsK PiArCX0gZWxzZSBpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVf U1BMSVQpIHsKPiArCQlpdmJfbG9hZF9sdXRfMTAoY3J0YywgZGVnYW1tYV9sdXQsIFBBTF9QUkVD X1NQTElUX01PREUgfAo+ICsJCQkJUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCksIGZhbHNlKTsKPiAr CQlpdmJfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19TUExJVF9NT0RFIHwK PiArCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDUxMiksICBmYWxzZSk7Cj4gKwkJaXZiX2xvYWRf bHV0XzEwX21heChjcnRjLCBnYW1tYV9sdXQpOwo+ICsJfSBlbHNlIHsKPiArCQljb25zdCBzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBnYW1tYV9sdXQgPzogZGVnYW1tYV9sdXQ7Cj4g Kwo+ICsJCWl2Yl9sb2FkX2x1dF8xMChjcnRjLCBibG9iLAo+ICsJCQkJUEFMX1BSRUNfSU5ERVhf VkFMVUUoMCksIHRydWUpOwo+ICsJCWl2Yl9sb2FkX2x1dF8xMF9tYXgoY3J0YywgYmxvYik7Cj4g Kwl9Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGJkd19sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+IEBAIC01MzEsMTMg KzU5OCwxMyBAQCBzdGF0aWMgdm9pZCBiZHdfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCQkJUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCksIGZh bHNlKTsKPiAgCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19TUExJ VF9NT0RFIHwKPiAgCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVFKDUxMiksICBmYWxzZSk7Cj4gLQkJ YmR3X2xvYWRfbHV0XzEwX21heChjcnRjLCBnYW1tYV9sdXQpOwo+ICsJCWl2Yl9sb2FkX2x1dF8x MF9tYXgoY3J0YywgZ2FtbWFfbHV0KTsKPiAgCX0gZWxzZSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpibG9iID0gZ2FtbWFfbHV0ID86IGRlZ2FtbWFfbHV0Owo+ICAKPiAg CQliZHdfbG9hZF9sdXRfMTAoY3J0YywgYmxvYiwKPiAgCQkJCVBBTF9QUkVDX0lOREVYX1ZBTFVF KDApLCB0cnVlKTsKPiAtCQliZHdfbG9hZF9sdXRfMTBfbWF4KGNydGMsIGJsb2IpOwo+ICsJCWl2 Yl9sb2FkX2x1dF8xMF9tYXgoY3J0YywgYmxvYik7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTYyOSw3 ICs2OTYsNyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCWk5eHhfbG9hZF9sdXRzKGNydGNfc3RhdGUpOwo+ ICAJfSBlbHNlIHsKPiAgCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJF Q19JTkRFWF9WQUxVRSgwKSwgZmFsc2UpOwo+IC0JCWJkd19sb2FkX2x1dF8xMF9tYXgoY3J0Yywg Z2FtbWFfbHV0KTsKPiArCQlpdmJfbG9hZF9sdXRfMTBfbWF4KGNydGMsIGdhbW1hX2x1dCk7Cj4g IAl9Cj4gIH0KPiAgCj4gQEAgLTY0NSw3ICs3MTIsNyBAQCBzdGF0aWMgdm9pZCBpY2xfbG9hZF9s dXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCWk5eHhf bG9hZF9sdXRzKGNydGNfc3RhdGUpOwo+ICAJfSBlbHNlIHsKPiAgCQliZHdfbG9hZF9sdXRfMTAo Y3J0YywgZ2FtbWFfbHV0LCBQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSwgZmFsc2UpOwo+IC0JCWJk d19sb2FkX2x1dF8xMF9tYXgoY3J0YywgZ2FtbWFfbHV0KTsKPiArCQlpdmJfbG9hZF9sdXRfMTBf bWF4KGNydGMsIGdhbW1hX2x1dCk7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTkwNywxNCArOTc0LDEz IEBAIHN0YXRpYyBpbnQgaWxrX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ICAJCSFjcnRjX3N0YXRlLT5jOF9wbGFuZXM7Cj4gIAo+ICAJLyoKPiAtCSAq IFdlIGRvbid0IGV4cG9zZSB0aGUgY3RtIG9uIGlsay1oc3cgY3VycmVudGx5LAo+IC0JICogbm9y IGRvIHdlIGVuYWJsZSBZQ2JDciBvdXRwdXQuIE9ubHkgaHN3IHVzZXMKPiAtCSAqIHRoZSBjc2Mg Zm9yIFJHQiBsaW1pdGVkIHJhbmdlIG91dHB1dC4KPiArCSAqIFdlIGRvbid0IGV4cG9zZSB0aGUg Y3RtIG9uIGlsay9zbmIgY3VycmVudGx5LAo+ICsJICogbm9yIGRvIHdlIGVuYWJsZSBZQ2JDciBv dXRwdXQuIEFsc28gUkdCIGxpbWl0ZWQKPiArCSAqIHJhbmdlIG91dHB1dCBpcyBoYW5kbGVkIGJ5 IHRoZSBodyBhdXRvbWFnaWNhbGx5Lgo+ICAJICovCj4gLQljcnRjX3N0YXRlLT5jc2NfZW5hYmxl ID0KPiAtCQlpbGtfY3NjX2xpbWl0ZWRfcmFuZ2UoY3J0Y19zdGF0ZSk7Cj4gKwljcnRjX3N0YXRl LT5jc2NfZW5hYmxlID0gZmFsc2U7Cj4gIAo+IC0JLyogV2UgZG9uJ3QgZXhwb3NlIGZhbmN5IGdh bW1hIG1vZGVzIG9uIGlsay1oc3cgY3VycmVudGx5ICovCj4gKwkvKiBXZSBkb24ndCBleHBvc2Ug ZmFuY3kgZ2FtbWEgbW9kZXMgb24gaWxrL3NuYiBjdXJyZW50bHkgKi8KPiAgCWNydGNfc3RhdGUt PmdhbW1hX21vZGUgPSBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiAgCj4gIAljcnRjX3N0YXRlLT5j c2NfbW9kZSA9IDA7Cj4gQEAgLTkyNiw3ICs5OTIsNyBAQCBzdGF0aWMgaW50IGlsa19jb2xvcl9j aGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCXJldHVybiAwOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgdTMyIGJkd19nYW1tYV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICtzdGF0aWMgdTMyIGl2Yl9nYW1tYV9tb2RlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlpZiAoIWNydGNf c3RhdGUtPmdhbW1hX2VuYWJsZSB8fAo+ICAJICAgIGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1h KGNydGNfc3RhdGUpKQo+IEBAIC05MzgsMjIgKzEwMDQsMjUgQEAgc3RhdGljIHUzMiBiZHdfZ2Ft bWFfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCQly ZXR1cm4gR0FNTUFfTU9ERV9NT0RFXzEwQklUOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdTMyIGJkd19j c2NfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArc3Rh dGljIHUzMiBpdmJfY3NjX21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gIHsKPiArCWJvb2wgbGltaXRlZF9jb2xvcl9yYW5nZSA9IGlsa19jc2NfbGltaXRl ZF9yYW5nZShjcnRjX3N0YXRlKTsKPiArCj4gIAkvKgo+ICAJICogQ1NDIGNvbWVzIGFmdGVyIHRo ZSBMVVQgaW4gZGVnYW1tYSwgUkdCLT5ZQ2JDciwKPiAgCSAqIGFuZCBSR0IgZnVsbC0+bGltaXRl ZCByYW5nZSBtb2RlLgo+ICAJICovCj4gIAlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1 dCB8fAo+ICAJICAgIGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgIT0gSU5URUxfT1VUUFVUX0ZP Uk1BVF9SR0IgfHwKPiAtCSAgICBjcnRjX3N0YXRlLT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJ ICAgIGxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0dXJuIENT Q19QT1NJVElPTl9CRUZPUkVfR0FNTUE7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgYmR3X2NvbG9y X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICtzdGF0aWMgaW50 IGl2Yl9jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAg ewo+ICsJYm9vbCBsaW1pdGVkX2NvbG9yX3JhbmdlID0gaWxrX2NzY19saW1pdGVkX3JhbmdlKGNy dGNfc3RhdGUpOwo+ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBjaGVja19sdXRzKGNydGNfc3Rh dGUpOwo+IEBAIC05NjcsMTEgKzEwMzYsMTEgQEAgc3RhdGljIGludCBiZHdfY29sb3JfY2hlY2so c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICAJY3J0Y19zdGF0ZS0+ Y3NjX2VuYWJsZSA9Cj4gIAkJY3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCAhPSBJTlRFTF9PVVRQ VVRfRk9STUFUX1JHQiB8fAo+IC0JCWNydGNfc3RhdGUtPmJhc2UuY3RtIHx8IGNydGNfc3RhdGUt PmxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gKwkJY3J0Y19zdGF0ZS0+YmFzZS5jdG0gfHwgbGltaXRl ZF9jb2xvcl9yYW5nZTsKPiAgCj4gLQljcnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gYmR3X2dhbW1h X21vZGUoY3J0Y19zdGF0ZSk7Cj4gKwljcnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gaXZiX2dhbW1h X21vZGUoY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JY3J0Y19zdGF0ZS0+Y3NjX21vZGUgPSBiZHdfY3Nj X21vZGUoY3J0Y19zdGF0ZSk7Cj4gKwljcnRjX3N0YXRlLT5jc2NfbW9kZSA9IGl2Yl9jc2NfbW9k ZShjcnRjX3N0YXRlKTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jb2xvcl9hZGRfYWZmZWN0ZWRfcGxh bmVzKGNydGNfc3RhdGUpOwo+ICAJaWYgKHJldCkKPiBAQCAtMTA4OCw4ICsxMTU3LDggQEAgdm9p ZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJCQlkZXZfcHJp di0+ZGlzcGxheS5jb2xvcl9jaGVjayA9IGljbF9jb2xvcl9jaGVjazsKPiAgCQllbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKQo+ICAJ CQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jaGVjayA9IGdsa19jb2xvcl9jaGVjazsKPiAtCQll bHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gLQkJCWRldl9wcml2LT5kaXNwbGF5 LmNvbG9yX2NoZWNrID0gYmR3X2NvbG9yX2NoZWNrOwo+ICsJCWVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNykKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29sb3JfY2hlY2sgPSBpdmJf Y29sb3JfY2hlY2s7Cj4gIAkJZWxzZQo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb2xvcl9jaGVj ayA9IGlsa19jb2xvcl9jaGVjazsKPiAgCj4gQEAgLTExMDQsOCArMTE3MywxMCBAQCB2b2lkIGlu dGVsX2NvbG9yX2luaXQoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkJCWRldl9wcml2LT5k aXNwbGF5LmxvYWRfbHV0cyA9IGljbF9sb2FkX2x1dHM7Cj4gIAkJZWxzZSBpZiAoSVNfQ0FOTk9O TEFLRShkZXZfcHJpdikgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJCWRldl9wcml2 LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGdsa19sb2FkX2x1dHM7Cj4gLQkJZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gKwkJZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2x1dHMgPSBiZHdfbG9hZF9sdXRzOwo+ICsJCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gNykKPiArCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaXZiX2xvYWRfbHV0czsK PiAgCQllbHNlCj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGk5eHhfbG9hZF9s dXRzOwo+ICAJfQo+IC0tIAo+IDIuMTkuMgo+IAoKLS0gCk1hdHQgUm9wZXIKR3JhcGhpY3MgU29m dHdhcmUgRW5naW5lZXIKSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50CkludGVs IENvcnBvcmF0aW9uCig5MTYpIDM1Ni0yNzk1Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==