From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/6] drm/i915: Don't use split gamma when we don't have to Date: Fri, 29 Mar 2019 12:47:02 +0200 Message-ID: <20190329104702.GU3888@intel.com> References: <20190328210505.10429-1-ville.syrjala@linux.intel.com> <20190328210505.10429-3-ville.syrjala@linux.intel.com> <20190329001603.GW4773@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF1A56E8B2 for ; Fri, 29 Mar 2019 10:47:08 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190329001603.GW4773@mdroper-desk.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXIgMjgsIDIwMTkgYXQgMDU6MTY6MDNQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBUaHUsIE1hciAyOCwgMjAxOSBhdCAxMTowNTowMVBNICswMjAwLCBWaWxsZSBTeXJq YWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+IAo+ID4gVXNpbmcgdGhlIHNwbGl0IGdhbW1hIG1vZGUgd2hlbiB3ZSBk b24ndCBoYXZlIHRvIGhhcyB0aGUgYW5ub3lpbmcKPiA+IHJlcXVpcmVtZW50IG9mIGxvYWRpbmcg YSBsaW5lYXIgTFVUIHRvIHRoZSB1bnVzZWQgaGFsZi4gSW5zdGVhZAo+ID4gbGV0J3MgbWFrZSBs aWZlIHNpbXBsZXIgYnkgc3dpdGNoaW5nIHRvIHRoZSAxMGJpdCBnYW1tYSBtb2RlCj4gPiBhbmQg ZHVwbGljYXRpbmcgZWFjaCBlbnRyeS4KPiA+IAo+ID4gVGhpcyBhbHNvIGFsbG93cyB1cyB0byBs b2FkIHRoZSBzb2Z0d2FyZSBnYW1tYSBMVVQgaW50byB0aGUKPiA+IGhhcmR3YXJlIGRlZ2FtbWEg TFVULCB0aHVzIHJlbW92aW5nIHNvbWUgb2YgdGhlIGJ1Z2d5Cj4gPiBjb25maWd1cmF0aW9ucyB3 ZSBjdXJyZW50bHkgYWxsb3cgKFlDYkNyL2xpbWl0ZWQgcmFuZ2UgUkdCCj4gPiArIGdhbW1hIExV VCkuIFdlIGRvIHN0aWxsIGhhdmUgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUKPiA+IGFs c28gYnVnZ3ksIGJ1dCB0aG9zZSB3aWxsIG5lZWQgbW9yZSBjb21wbGljYXRlZCBmaXhlcwo+ID4g b3IgdGhleSBqdXN0IG5lZWQgdG8gYmUgcmVqZWN0ZWQuIFNhZGx5IEdMSyBkb2Vzbid0IGhhdmUK PiA+IHRoaXMgZmxleGliaWxpdHkgYW55bW9yZSBhbmQgdGhlIGRlZ2FtbWEgYW5kIGdhbW1hIExV VHMKPiA+IGFyZSB2ZXJ5IGRpZmZlcmVudCBzbyBubyBoZWxwIHRoZXJlLgo+ID4gCj4gPiBTaWdu ZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICB8ICAgMSAr Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYyB8IDE1OSArKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQo+ID4gIDIgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygr KSwgNzQgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gaW5k ZXggYzg2NjM3OWE1MjFiLi5lYjdlOTMzNTRjZmUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gPiBAQCAtMTAxMjcsNiArMTAxMjcsNyBAQCBlbnVtIHNrbF9wb3dlcl9nYXRlIHsK PiA+ICAjZGVmaW5lICAgUEFMX1BSRUNfU1BMSVRfTU9ERQkJKDEgPDwgMzEpCj4gPiAgI2RlZmlu ZSAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UCSgxIDw8IDE1KQo+ID4gICNkZWZpbmUgICBQQUxf UFJFQ19JTkRFWF9WQUxVRV9NQVNLCSgweDNmZiA8PCAwKQo+ID4gKyNkZWZpbmUgICBQQUxfUFJF Q19JTkRFWF9WQUxVRSh4KQkoKHgpIDw8IDApCj4gPiAgI2RlZmluZSBfUEFMX1BSRUNfREFUQV9B CTB4NEE0MDQKPiA+ICAjZGVmaW5lIF9QQUxfUFJFQ19EQVRBX0IJMHg0QUMwNAo+ID4gICNkZWZp bmUgX1BBTF9QUkVDX0RBVEFfQwkweDRCNDA0Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9y LmMKPiA+IGluZGV4IGQ3YzM4YTJiYmQ4Zi4uZWQ0YmQ5YmQxNWY1IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+ID4gQEAgLTQ2Niw3MiArNDY2LDMyIEBAIHN0YXRpYyB2 b2lkIHNrbF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gPiAgCQlpbGtfbG9hZF9jc2NfbWF0cml4KGNydGNfc3RhdGUpOwo+ID4gIH0KPiA+ ICAKPiA+IC1zdGF0aWMgdm9pZCBiZHdfbG9hZF9kZWdhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICtzdGF0aWMgdm9pZCBiZHdfbG9hZF9sdXRf MTAoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiArCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqYmxvYiwKPiA+ICsJCQkgICAgdTMyIHByZWNfaW5kZXgsIGJvb2wgZHVw bGljYXRlKQo+ID4gIHsKPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gLQljb25zdCBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1h X2x1dDsKPiA+IC0JdTMyIGksIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9y LmRlZ2FtbWFfbHV0X3NpemU7Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQg PSBibG9iLT5kYXRhOwo+ID4gKwlpbnQgaSwgbHV0X3NpemUgPSBkcm1fY29sb3JfbHV0X3NpemUo YmxvYik7Cj4gPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+ICAKPiA+IC0JSTkx NV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwKPiA+IC0JCSAgIFBBTF9QUkVDX1NQTElUX01P REUgfCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7Cj4gPiAtCj4gPiAtCWlmIChkZWdhbW1hX2x1 dCkgewo+ID4gLQkJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dCA9IGRlZ2FtbWFfbHV0 LT5kYXRhOwo+ID4gKwlJOTE1X1dSSVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCBwcmVjX2luZGV4 IHwKPiA+ICsJCSAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UKTsKPiA+ICAKPiA+IC0JCWZvciAo aSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKQo+ID4gLQkJCUk5MTVfV1JJVEUoUFJFQ19QQUxfREFU QShwaXBlKSwgaWxrX2x1dF8xMCgmbHV0W2ldKSk7Cj4gPiAtCX0gZWxzZSB7Cj4gPiArCS8qCj4g PiArCSAqIFdlIGFkdmVydGl6ZSB0aGUgc3BsaXQgZ2FtbWEgc2l6ZXMuIFdoZW4gbm90IHVzaW5n IHNwbGl0Cj4gPiArCSAqIGdhbW1hIHdlIGp1c3QgZHVwbGljYXRlIGVhY2ggZW50cnkuCj4gPiAr CSAqCj4gPiArCSAqIFRPRE86IGV4cG9zZSB0aGUgZnVsbCBMVVQgdG8gdXNlcnNwYWNlCj4gCj4g QW55IHJlYXNvbiBub3QgdG8ganVzdCBkbyB0aGlzIGltbWVkaWF0ZWx5PyAgVGhyb3dpbmcgYXdh eSBoYWxmIHRoZQo+IHRhYmxlIGVudHJpZXMgaWYgd2UgZGVjaWRlIHdlIG5lZWQgc3BsaXQgbW9k ZSBkb2Vzbid0IHNlZW0gYW55IGhhcmRlcgo+IHRoYW4gZHVwbGljYXRpbmcgdGhlIGVudHJpZXMg d2hlbiB3ZSBkZWNpZGUgd2UgZG9uJ3QuICBUaGUgY29sb3IKPiBtYW5hZ2VtZW50IGtlcm5lbGRv YyBhbHJlYWR5IGV4cGxpY2l0bHkgcmVjb21tZW5kcyB0aGlzIGFwcHJvYWNoIGZvcgo+IGhhcmR3 YXJlIHRoYXQgY2FuIHN1cHBvcnQgbXVsdGlwbGUgZ2FtbWEgbW9kZXMsIHNvIEkgZG9uJ3QgdGhp bmsgd2UgbmVlZAo+IGFueSBuZXcgQUJJIHRvIGhhbmRsZSBpdC4KCkhtbS4gSSBndWVzcyB0aGF0 IGFwcG9yYWNoIGNvdWxkIGJlIGRvYWJsZS4gSXQgbWlnaHQgYmUgYSBiaXQgYW5ub3lpbmcKZm9y IHVzZXJzcGFjZSB0aG91Z2ggaWYgaXQgZXhwZWN0cyBhIGRpcmVjdCBjb2xvciB2aXN1YWwuIEJ1 dCBhdCBsZWFzdApmb3IgWCB3ZSB3b24ndCB1c2UgZGVnYW1tYS9jdG0gYW55d2F5IHNvIHNlZW1z IGxpa2UgaXQgc2hvdWxkIHdvcmsgb3V0Cmp1c3QgZmluZS4KCj4gCj4gPiArCSAqLwo+ID4gKwlp ZiAoZHVwbGljYXRlKSB7Cj4gPiAgCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykgewo+ ID4gLQkJCXUzMiB2ID0gKGkgKiAoKDEgPDwgMTApIC0gMSkpIC8gKGx1dF9zaXplIC0gMSk7Cj4g PiAtCj4gPiAtCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRBKHBpcGUpLAo+ID4gLQkJCQkgICAo diA8PCAyMCkgfCAodiA8PCAxMCkgfCB2KTsKPiA+ICsJCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0RB VEEocGlwZSksIGlsa19sdXRfMTAoJmx1dFtpXSkpOwo+ID4gKwkJCUk5MTVfV1JJVEUoUFJFQ19Q QUxfREFUQShwaXBlKSwgaWxrX2x1dF8xMCgmbHV0W2ldKSk7Cj4gPiAgCQl9Cj4gPiAtCX0KPiA+ IC19Cj4gPiAtCj4gPiAtc3RhdGljIHZvaWQgYmR3X2xvYWRfZ2FtbWFfbHV0KGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCB1MzIgb2Zmc2V0KQo+ID4gLXsKPiA+IC0J c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2Uu Y3J0Yyk7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+ID4gLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdh bW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4gLQl1MzIgaSwgbHV0X3Np emUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7Cj4gPiAtCWVu dW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+IC0KPiA+IC0JV0FSTl9PTihvZmZzZXQgJiB+ UEFMX1BSRUNfSU5ERVhfVkFMVUVfTUFTSyk7Cj4gPiAtCj4gPiAtCUk5MTVfV1JJVEUoUFJFQ19Q QUxfSU5ERVgocGlwZSksCj4gPiAtCQkgICAob2Zmc2V0ID8gUEFMX1BSRUNfU1BMSVRfTU9ERSA6 IDApIHwKPiA+IC0JCSAgIFBBTF9QUkVDX0FVVE9fSU5DUkVNRU5UIHwKPiA+IC0JCSAgIG9mZnNl dCk7Cj4gPiAtCj4gPiAtCWlmIChnYW1tYV9sdXQpIHsKPiA+IC0JCWNvbnN0IHN0cnVjdCBkcm1f Y29sb3JfbHV0ICpsdXQgPSBnYW1tYV9sdXQtPmRhdGE7Cj4gPiAtCj4gPiArCX0gZWxzZSB7Cj4g PiAgCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3NpemU7IGkrKykKPiA+ICAJCQlJOTE1X1dSSVRFKFBS RUNfUEFMX0RBVEEocGlwZSksIGlsa19sdXRfMTAoJmx1dFtpXSkpOwo+ID4gLQo+ID4gLQkJLyog UHJvZ3JhbSB0aGUgbWF4IHJlZ2lzdGVyIHRvIGNsYW1wIHZhbHVlcyA+IDEuMC4gKi8KPiA+IC0J CWkgPSBsdXRfc2l6ZSAtIDE7Cj4gPiAtCQlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBl LCAwKSwKPiA+IC0JCQkgICBkcm1fY29sb3JfbHV0X2V4dHJhY3QobHV0W2ldLnJlZCwgMTYpKTsK PiA+IC0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLAo+ID4gLQkJCSAgIGRy bV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0uZ3JlZW4sIDE2KSk7Cj4gPiAtCQlJOTE1X1dSSVRF KFBSRUNfUEFMX0dDX01BWChwaXBlLCAyKSwKPiA+IC0JCQkgICBkcm1fY29sb3JfbHV0X2V4dHJh Y3QobHV0W2ldLmJsdWUsIDE2KSk7Cj4gPiAtCX0gZWxzZSB7Cj4gPiAtCQlmb3IgKGkgPSAwOyBp IDwgbHV0X3NpemU7IGkrKykgewo+ID4gLQkJCXUzMiB2ID0gKGkgKiAoKDEgPDwgMTApIC0gMSkp IC8gKGx1dF9zaXplIC0gMSk7Cj4gPiAtCj4gPiAtCQkJSTkxNV9XUklURShQUkVDX1BBTF9EQVRB KHBpcGUpLAo+ID4gLQkJCQkgICAodiA8PCAyMCkgfCAodiA8PCAxMCkgfCB2KTsKPiA+IC0JCX0K PiA+IC0KPiA+IC0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDApLCAoMSA8PCAx NikgLSAxKTsKPiA+IC0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDEpLCAoMSA8 PCAxNikgLSAxKTsKPiA+IC0JCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLCAo MSA8PCAxNikgLSAxKTsKPiA+ICAJfQo+ID4gIAo+ID4gIAkvKgo+ID4gQEAgLTU0MSwxOCArNTAx LDQzIEBAIHN0YXRpYyB2b2lkIGJkd19sb2FkX2dhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgdTMyIG9mCj4gPiAgCUk5MTVfV1JJVEUoUFJFQ19QQUxf SU5ERVgocGlwZSksIDApOwo+ID4gIH0KPiA+ICAKPiA+IC0vKiBMb2FkcyB0aGUgcGFsZXR0ZS9n YW1tYSB1bml0IGZvciB0aGUgQ1JUQyBvbiBCcm9hZHdlbGwrLiAqLwo+ID4gLXN0YXRpYyB2b2lk IGJyb2Fkd2VsbF9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gPiArc3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0XzEwX21heChzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiA+ICsJCQkJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9i KQo+ID4gIHsKPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gKwljb25zdCBzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKPiA+ICsJaW50IGkgPSBkcm1fY29sb3JfbHV0X3Np emUoYmxvYikgLSAxOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gPiAgCj4g PiAtCWlmIChjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRlKSkgewo+ID4gKwkv KiBQcm9ncmFtIHRoZSBtYXggcmVnaXN0ZXIgdG8gY2xhbXAgdmFsdWVzID4gMS4wLiAqLwo+ID4g KwlJOTE1X1dSSVRFKFBSRUNfUEFMX0dDX01BWChwaXBlLCAwKSwKPiA+ICsJCSAgIGRybV9jb2xv cl9sdXRfZXh0cmFjdChsdXRbaV0ucmVkLCAxNikpOwo+ID4gKwlJOTE1X1dSSVRFKFBSRUNfUEFM X0dDX01BWChwaXBlLCAxKSwKPiA+ICsJCSAgIGRybV9jb2xvcl9sdXRfZXh0cmFjdChsdXRbaV0u Z3JlZW4sIDE2KSk7Cj4gPiArCUk5MTVfV1JJVEUoUFJFQ19QQUxfR0NfTUFYKHBpcGUsIDIpLAo+ ID4gKwkJICAgZHJtX2NvbG9yX2x1dF9leHRyYWN0KGx1dFtpXS5ibHVlLCAxNikpOwo+IAo+IEFy ZSB0aGVzZSB0aGUgcmlnaHQgcmVnaXN0ZXJzIHRvIHVzZT8gIFRoZSAiUGlwZSBQYWxldHRlIGFu ZCBHYW1tYSIgcGFnZQo+IG9mIHRoZSBic3BlYyBpbmRpY2F0ZXMgd2Ugc2hvdWxkIGJlIHVzaW5n IFBBTF9FWFRfR0NfTUFYIChlLmcuLCAweDRBNDIwCj4gaW5zdGVhZCBvZiAweDRBNDEwKSBmb3Ig Ym90aCB0aGUgMTAtYml0IGFuZCBzcGxpdCBnYW1tYSBtb2Rlcy4gIEkgb25seQo+IHNlZSBQQUxf R0NfTUFYIG1lbnRpb25lZCBmb3IgdGhlIGludGVycG9sYXRlZCBnYW1tYSBtb2RlLgoKWWVhaCwg dGhlc2UgYXJlbid0IHRoZSByZWdpc3RlcnMgd2UncmUgbG9va2luZyBmb3IuIE1heWJlIFVtYSB3 aWxsIHNlbmQKYSBwYXRjaCB0byBmaXggdGhpcz8gSSdtIGFsc28gdGhpbmtpbmcgd2Ugc2hvdWxk IGp1c3QgcHJvZ3JhbSB0aGVzZSB0bwoxLjAuIFRoZXJlJ3MgYWxzbyBFWFRfR0NfTUFYMiBvbiBz b21lIG1vcmUgcmVjZW50IHBsYXRmb3Jtcy4KCj4gCj4gCj4gTWF0dAo+IAo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgdm9pZCBiZHdfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPiArCWNvbnN0IHN0cnVjdCBk cm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7 Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQgPSBjcnRj X3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0Owo+ID4gKwo+ID4gKwlpZiAoY3J0Y19zdGF0ZS0+Z2Ft bWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkgewo+ID4gIAkJaTl4eF9sb2FkX2x1dHMo Y3J0Y19zdGF0ZSk7Cj4gPiArCX0gZWxzZSBpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBH QU1NQV9NT0RFX01PREVfU1BMSVQpIHsKPiA+ICsJCWJkd19sb2FkX2x1dF8xMChjcnRjLCBkZWdh bW1hX2x1dCwgUEFMX1BSRUNfU1BMSVRfTU9ERSB8Cj4gPiArCQkJCVBBTF9QUkVDX0lOREVYX1ZB TFVFKDApLCBmYWxzZSk7Cj4gPiArCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0LCBQ QUxfUFJFQ19TUExJVF9NT0RFIHwKPiA+ICsJCQkJUEFMX1BSRUNfSU5ERVhfVkFMVUUoNTEyKSwg IGZhbHNlKTsKPiA+ICsJCWJkd19sb2FkX2x1dF8xMF9tYXgoY3J0YywgZ2FtbWFfbHV0KTsKPiA+ ICAJfSBlbHNlIHsKPiA+IC0JCWJkd19sb2FkX2RlZ2FtbWFfbHV0KGNydGNfc3RhdGUpOwo+ID4g LQkJYmR3X2xvYWRfZ2FtbWFfbHV0KGNydGNfc3RhdGUsCj4gPiAtCQkJCSAgIElOVEVMX0lORk8o ZGV2X3ByaXYpLT5jb2xvci5kZWdhbW1hX2x1dF9zaXplKTsKPiA+ICsJCWNvbnN0IHN0cnVjdCBk cm1fcHJvcGVydHlfYmxvYiAqYmxvYiA9IGdhbW1hX2x1dCA/OiBkZWdhbW1hX2x1dDsKPiA+ICsK PiA+ICsJCWJkd19sb2FkX2x1dF8xMChjcnRjLCBibG9iLAo+ID4gKwkJCQlQQUxfUFJFQ19JTkRF WF9WQUxVRSgwKSwgdHJ1ZSk7Cj4gPiArCQliZHdfbG9hZF9sdXRfMTBfbWF4KGNydGMsIGJsb2Ip Owo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTYyNCw2ICs2MDksOSBAQCBzdGF0aWMgdm9p ZCBnbGtfbG9hZF9kZWdhbW1hX2x1dF9saW5lYXIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdAo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1dHMoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiAgewo+ID4gKwljb25zdCBz dHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2Ft bWFfbHV0Owo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiA+ICsKPiA+ICAJLyoKPiA+ICAJICogT24gR0xLKyBib3Ro IHBpcGUgQ1NDIGFuZCBkZWdhbW1hIExVVCBhcmUgY29udHJvbGxlZAo+ID4gIAkgKiBieSBjc2Nf ZW5hYmxlLiBIZW5jZSBmb3IgdGhlIGNhc2VzIHdoZXJlIHRoZSBDU0MgaXMKPiA+IEBAIC02Mzcs MjIgKzYyNSwyOCBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gIAllbHNlCj4gPiAgCQlnbGtfbG9hZF9kZWdh bW1hX2x1dF9saW5lYXIoY3J0Y19zdGF0ZSk7Cj4gPiAgCj4gPiAtCWlmIChjcnRjX3N0YXRlX2lz X2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRlKSkKPiA+ICsJaWYgKGNydGNfc3RhdGUtPmdhbW1hX21v ZGUgPT0gR0FNTUFfTU9ERV9NT0RFXzhCSVQpIHsKPiA+ICAJCWk5eHhfbG9hZF9sdXRzKGNydGNf c3RhdGUpOwo+ID4gLQllbHNlCj4gPiAtCQliZHdfbG9hZF9nYW1tYV9sdXQoY3J0Y19zdGF0ZSwg MCk7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQliZHdfbG9hZF9sdXRfMTAoY3J0YywgZ2FtbWFfbHV0 LCBQQUxfUFJFQ19JTkRFWF9WQUxVRSgwKSwgZmFsc2UpOwo+ID4gKwkJYmR3X2xvYWRfbHV0XzEw X21heChjcnRjLCBnYW1tYV9sdXQpOwo+ID4gKwl9Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2 b2lkIGljbF9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gPiAgewo+ID4gKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1 dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiA+ICsKPiA+ICAJ aWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gPiAgCQlnbGtfbG9hZF9kZWdhbW1h X2x1dChjcnRjX3N0YXRlKTsKPiA+ICAKPiA+IC0JaWYgKGNydGNfc3RhdGVfaXNfbGVnYWN5X2dh bW1hKGNydGNfc3RhdGUpKQo+ID4gKwlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1N QV9NT0RFX01PREVfOEJJVCkgewo+ID4gIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4g PiAtCWVsc2UKPiA+IC0JCS8qIFRvRG86IEFkZCBzdXBwb3J0IGZvciBtdWx0aSBzZWdtZW50IGdh bW1hIExVVCAqLwo+ID4gLQkJYmR3X2xvYWRfZ2FtbWFfbHV0KGNydGNfc3RhdGUsIDApOwo+ID4g Kwl9IGVsc2Ugewo+ID4gKwkJYmR3X2xvYWRfbHV0XzEwKGNydGMsIGdhbW1hX2x1dCwgUEFMX1BS RUNfSU5ERVhfVkFMVUUoMCksIGZhbHNlKTsKPiA+ICsJCWJkd19sb2FkX2x1dF8xMF9tYXgoY3J0 YywgZ2FtbWFfbHV0KTsKPiA+ICsJfQo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBjaGVy cnl2aWV3X2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiA+IEBAIC05MzcsOCArOTMxLDI1IEBAIHN0YXRpYyB1MzIgYmR3X2dhbW1hX21vZGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiAgCWlmICghY3J0Y19z dGF0ZS0+Z2FtbWFfZW5hYmxlIHx8Cj4gPiAgCSAgICBjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1t YShjcnRjX3N0YXRlKSkKPiA+ICAJCXJldHVybiBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiA+IC0J ZWxzZQo+ID4gKwllbHNlIGlmIChjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgo+ID4gKwkJ IGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gPiAgCQlyZXR1cm4gR0FNTUFfTU9ERV9N T0RFX1NQTElUOwo+ID4gKwllbHNlCj4gPiArCQlyZXR1cm4gR0FNTUFfTU9ERV9NT0RFXzEwQklU Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdTMyIGJkd19jc2NfbW9kZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICt7Cj4gPiArCS8qCj4gPiArCSAqIENT QyBjb21lcyBhZnRlciB0aGUgTFVUIGluIGRlZ2FtbWEsIFJHQi0+WUNiQ3IsCj4gPiArCSAqIGFu ZCBSR0IgZnVsbC0+bGltaXRlZCByYW5nZSBtb2RlLgo+ID4gKwkgKi8KPiA+ICsJaWYgKGNydGNf c3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgfHwKPiA+ICsJICAgIGNydGNfc3RhdGUtPm91dHB1dF9m b3JtYXQgIT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9SR0IgfHwKPiA+ICsJICAgIGNydGNfc3RhdGUt PmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJcmV0dXJu IENTQ19QT1NJVElPTl9CRUZPUkVfR0FNTUE7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBpbnQg YmR3X2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4g QEAgLTk2MCw3ICs5NzEsNyBAQCBzdGF0aWMgaW50IGJkd19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiA+ICAKPiA+ICAJY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSA9IGJkd19nYW1tYV9tb2RlKGNydGNfc3RhdGUpOwo+ID4gIAo+ID4gLQljcnRjX3N0YXRl LT5jc2NfbW9kZSA9IDA7Cj4gPiArCWNydGNfc3RhdGUtPmNzY19tb2RlID0gYmR3X2NzY19tb2Rl KGNydGNfc3RhdGUpOwo+ID4gIAo+ID4gIAlyZXQgPSBpbnRlbF9jb2xvcl9hZGRfYWZmZWN0ZWRf cGxhbmVzKGNydGNfc3RhdGUpOwo+ID4gIAlpZiAocmV0KQo+ID4gQEAgLTEwOTQsNyArMTEwNSw3 IEBAIHZvaWQgaW50ZWxfY29sb3JfaW5pdChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ICAJ CWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpIHx8IElTX0dFTUlOSUxBS0UoZGV2X3By aXYpKQo+ID4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGdsa19sb2FkX2x1dHM7 Cj4gPiAgCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwgSVNfQlJPQURXRUxM KGRldl9wcml2KSkKPiA+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5sb2FkX2x1dHMgPSBicm9hZHdl bGxfbG9hZF9sdXRzOwo+ID4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmxvYWRfbHV0cyA9IGJkd19s b2FkX2x1dHM7Cj4gPiAgCQllbHNlCj4gPiAgCQkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRz ID0gaTl4eF9sb2FkX2x1dHM7Cj4gPiAgCX0KPiA+IC0tIAo+ID4gMi4xOS4yCj4gPiAKPiAKPiAt LSAKPiBNYXR0IFJvcGVyCj4gR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKPiBJb1RHIFBsYXRm b3JtIEVuYWJsaW5nICYgRGV2ZWxvcG1lbnQKPiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICg5MTYpIDM1 Ni0yNzk1CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==