From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 1/5] drm/i915: Extract out gamma table and CSC to their own file Date: Mon, 22 Feb 2016 16:00:57 -0800 Message-ID: <20160223000057.GK22387@intel.com> References: <1456150691-20231-1-git-send-email-lionel.g.landwerlin@intel.com> <1456150691-20231-2-git-send-email-lionel.g.landwerlin@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: <1456150691-20231-2-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin Cc: intel-gfx@lists.freedesktop.org, kausalmalladi@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBGZWIgMjIsIDIwMTYgYXQgMDI6MTg6MDdQTSArMDAwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4gVGhlIG1vdmVzIGEgY291cGxlIG9mIGZ1bmN0aW9ucyBwcm9ncmFtbWluZyB0 aGUgZ2FtbWEgTFVUIGFuZCBDU0MKPiB1bml0cyBpbnRvIHRoZWlyIG93biBmaWxlLgo+IAo+IE9u IGdlbmVyYXRpb25zIHByaW9yIHRvIEhhc3dlbGwgdGhlcmUgaXMgb25seSBhIGdhbW1hIExVVC4g RnJvbQo+IGhhc3dlbGwgb24gdGhlcmUgaXMgYWxzbyBhIG5ldyBlbmhhbmNlZCBjb2xvciBjb3Jy ZWN0aW9uIHVuaXQgdGhhdAo+IGlzbid0IHVzZWQgeWV0LiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRv IHNldCB0aGUgR0FNTUFfTU9ERSByZWdpc3RlciwKPiBlaXRoZXIgd2UncmUgdXNpbmcgdGhlIGxl Z2FjeSA4Yml0cyBMVVQgb3IgZW5oYW5jZWQgTFVUcyAob2YgMTAgb3IKPiAxMmJpdHMpLgo+IAo+ IFRoZSBDU0MgdW5pdCBpcyBvbmx5IGF2YWlsYWJsZSBmcm9tIEhhc3dlbGwgb24uCj4gCj4gV2Ug YWxzbyBuZWVkIHRvIG1ha2UgYSBzcGVjaWFsIGNhc2UgZm9yIENoZXJyeVZpZXcgd2hpY2ggaXMg cmVjb2duaXplZAo+IGFzIGEgZ2VuIDggYnV0IGRvZXNuJ3QgaGF2ZSB0aGUgc2FtZSBlbmhhbmNl ZCBjb2xvciBjb3JyZWN0aW9uIHVuaXQKPiBmcm9tIEhhc3dlbGwgb24uCj4gCj4gdjI6IEZpeCBh Y2Nlc3MgdG8gR0FNTUFfTU9ERSByZWdpc3RlciBvbiBvbGRlciBnZW5lcmF0aW9ucyB0aGFuCj4g ICAgIEhhc3dlbGwgKGZyb20gTWF0dCBSb3BlcidzIGNvbW1lbnRzKQo+IAo+IFNpZ25lZC1vZmYt Ynk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KClJl dmlld2VkLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgoKPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY29sb3IuYyAgIHwgMTk1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE2MyArKyst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgMTAgKysKPiAgNSBmaWxlcyBjaGFuZ2VkLCAyMjAgaW5zZXJ0aW9ucygrKSwg MTUxIGRlbGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3IuYwo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggMDg1MWRlMDcu LjA1MTYzMDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC01NSw2ICs1NSw3IEBAIGk5 MTUteSArPSBpbnRlbF9hdWRpby5vIFwKPiAgCSAgaW50ZWxfYXRvbWljLm8gXAo+ICAJICBpbnRl bF9hdG9taWNfcGxhbmUubyBcCj4gIAkgIGludGVsX2Jpb3MubyBcCj4gKwkgIGludGVsX2NvbG9y Lm8gXAo+ICAJICBpbnRlbF9kaXNwbGF5Lm8gXAo+ICAJICBpbnRlbF9mYmMubyBcCj4gIAkgIGlu dGVsX2ZpZm9fdW5kZXJydW4ubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNjY0 NGMyZS4uNjYzNGMwOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC02NTksNiAr NjU5LDggQEAgc3RydWN0IGRybV9pOTE1X2Rpc3BsYXlfZnVuY3Mgewo+ICAJLyogcmVuZGVyIGNs b2NrIGluY3JlYXNlL2RlY3JlYXNlICovCj4gIAkvKiBkaXNwbGF5IGNsb2NrIGluY3JlYXNlL2Rl Y3JlYXNlICovCj4gIAkvKiBwbGwgY2xvY2sgaW5jcmVhc2UvZGVjcmVhc2UgKi8KPiArCj4gKwl2 b2lkICgqbG9hZF9sdXRzKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICB9Owo+ICAKPiAgZW51 bSBmb3JjZXdha2VfZG9tYWluX2lkIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmNjZTAxNTUKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+IEBAIC0wLDAg KzEsMTk1IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9u Cj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsg KiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg ImludGVsX2Rydi5oIgo+ICsKPiArLyoKPiArICogU2V0IHVwIHRoZSBwaXBlIENTQyB1bml0Lgo+ ICsgKgo+ICsgKiBDdXJyZW50bHkgb25seSBmdWxsIHJhbmdlIFJHQiB0byBsaW1pdGVkIHJhbmdl IFJHQiBjb252ZXJzaW9uCj4gKyAqIGlzIHN1cHBvcnRlZCwgYnV0IGV2ZW50dWFsbHkgdGhpcyBz aG91bGQgaGFuZGxlIHZhcmlvdXMKPiArICogUkdCPC0+WUNiQ3Igc2NlbmFyaW9zIGFzIHdlbGwu Cj4gKyAqLwo+ICtzdGF0aWMgdm9pZCBpOXh4X2xvYWRfY3NjX21hdHJpeChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ ICsJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICsJdWludDE2X3QgY29lZmYgPSAweDc4 MDA7IC8qIDEuMCAqLwo+ICsKPiArCS8qCj4gKwkgKiBUT0RPOiBDaGVjayB3aGF0IGtpbmQgb2Yg dmFsdWVzIGFjdHVhbGx5IGNvbWUgb3V0IG9mIHRoZSBwaXBlCj4gKwkgKiB3aXRoIHRoZXNlIGNv ZWZmL3Bvc3RvZmYgdmFsdWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZSBiZXN0Cj4gKwkgKiBhY2N1 cmFjeS4gUGVyaGFwcyB3ZSBldmVuIG5lZWQgdG8gdGFrZSB0aGUgYnBjIHZhbHVlIGludG8KPiAr CSAqIGNvbnNpZGVyYXRpb24uCj4gKwkgKi8KPiArCj4gKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmln LT5saW1pdGVkX2NvbG9yX3JhbmdlKQo+ICsJCWNvZWZmID0gKCgyMzUgLSAxNikgKiAoMSA8PCAx MikgLyAyNTUpICYgMHhmZjg7IC8qIDAueHh4Li4uICovCj4gKwo+ICsJLyoKPiArCSAqIEdZL0dV IGFuZCBSWS9SVSBzaG91bGQgYmUgdGhlIG90aGVyIHdheSBhcm91bmQgYWNjb3JkaW5nCj4gKwkg KiB0byBCU3BlYywgYnV0IHJlYWxpdHkgZG9lc24ndCBhZ3JlZS4gSnVzdCBzZXQgdGhlbSB1cCBp bgo+ICsJICogYSB3YXkgdGhhdCByZXN1bHRzIGluIHRoZSBjb3JyZWN0IHBpY3R1cmUuCj4gKwkg Ki8KPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUllfR1kocGlwZSksIGNvZWZmIDw8IDE2 KTsKPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlkocGlwZSksIDApOwo+ICsKPiArCUk5 MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUlVfR1UocGlwZSksIGNvZWZmKTsKPiArCUk5MTVfV1JJ VEUoUElQRV9DU0NfQ09FRkZfQlUocGlwZSksIDApOwo+ICsKPiArCUk5MTVfV1JJVEUoUElQRV9D U0NfQ09FRkZfUlZfR1YocGlwZSksIDApOwo+ICsJSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9C VihwaXBlKSwgY29lZmYgPDwgMTYpOwo+ICsKPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZG X0hJKHBpcGUpLCAwKTsKPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX01FKHBpcGUpLCAw KTsKPiArCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0xPKHBpcGUpLCAwKTsKPiArCj4gKwlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiA2KSB7Cj4gKwkJdWludDE2X3QgcG9zdG9mZiA9IDA7 Cj4gKwo+ICsJCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4g KwkJCXBvc3RvZmYgPSAoMTYgKiAoMSA8PCAxMikgLyAyNTUpICYgMHgxZmZmOwo+ICsKPiArCQlJ OTE1X1dSSVRFKFBJUEVfQ1NDX1BPU1RPRkZfSEkocGlwZSksIHBvc3RvZmYpOwo+ICsJCUk5MTVf V1JJVEUoUElQRV9DU0NfUE9TVE9GRl9NRShwaXBlKSwgcG9zdG9mZik7Cj4gKwkJSTkxNV9XUklU RShQSVBFX0NTQ19QT1NUT0ZGX0xPKHBpcGUpLCBwb3N0b2ZmKTsKPiArCj4gKwkJSTkxNV9XUklU RShQSVBFX0NTQ19NT0RFKHBpcGUpLCAwKTsKPiArCX0gZWxzZSB7Cj4gKwkJdWludDMyX3QgbW9k ZSA9IENTQ19NT0RFX1lVVl9UT19SR0I7Cj4gKwo+ICsJCWlmIChpbnRlbF9jcnRjLT5jb25maWct PmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gKwkJCW1vZGUgfD0gQ1NDX0JMQUNLX1NDUkVFTl9PRkZT RVQ7Cj4gKwo+ICsJCUk5MTVfV1JJVEUoUElQRV9DU0NfTU9ERShwaXBlKSwgbW9kZSk7Cj4gKwl9 Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfY29sb3Jfc2V0X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gK3sKPiArCWk5eHhfbG9hZF9jc2NfbWF0cml4KGNydGMpOwo+ICt9Cj4gKwo+ICsvKiBM b2FkcyB0aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRoZSBwcmVwYXJl ZCB2YWx1ZXMuICovCj4gK3N0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4g KwllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwlpbnQgaTsKPiArCj4gKwlp ZiAoSEFTX0dNQ0hfRElTUExBWShkZXYpKSB7Cj4gKwkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ aGFzX2RzaV9lbmNvZGVyKQo+ICsJCQlhc3NlcnRfZHNpX3BsbF9lbmFibGVkKGRldl9wcml2KTsK PiArCQllbHNlCj4gKwkJCWFzc2VydF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGlwZSk7Cj4gKwl9 Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Cj4gKwkJdWludDMyX3Qgd29yZCA9 IChpbnRlbF9jcnRjLT5sdXRfcltpXSA8PCAxNikgfAo+ICsJCQkoaW50ZWxfY3J0Yy0+bHV0X2db aV0gPDwgOCkgfAo+ICsJCQlpbnRlbF9jcnRjLT5sdXRfYltpXTsKPiArCQlpZiAoSEFTX0dNQ0hf RElTUExBWShkZXYpKQo+ICsJCQlJOTE1X1dSSVRFKFBBTEVUVEUocGlwZSwgaSksIHdvcmQpOwo+ ICsJCWVsc2UKPiArCQkJSTkxNV9XUklURShMR0NfUEFMRVRURShwaXBlLCBpKSwgd29yZCk7Cj4g Kwl9Cj4gK30KPiArCj4gKy8qIExvYWRzIHRoZSBsZWdhY3kgcGFsZXR0ZS9nYW1tYSB1bml0IGZv ciB0aGUgQ1JUQyBvbiBIYXN3ZWxsKy4gKi8KPiArc3RhdGljIHZvaWQgaGFzd2VsbF9sb2FkX2x1 dHMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjKTsKPiArCWJvb2wgcmVlbmFibGVfaXBzID0gZmFsc2U7Cj4gKwo+ICsJLyoK PiArCSAqIFdvcmthcm91bmQgOiBEbyBub3QgcmVhZCBvciB3cml0ZSB0aGUgcGlwZSBwYWxldHRl L2dhbW1hIGRhdGEgd2hpbGUKPiArCSAqIEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3Bs aXQgZ2FtbWEgYW5kIElQU19DVEwgaGFzIElQUyBlbmFibGVkLgo+ICsJICovCj4gKwlpZiAoSVNf SEFTV0VMTChkZXYpICYmIGludGVsX2NydGMtPmNvbmZpZy0+aXBzX2VuYWJsZWQgJiYKPiArCSAg ICAoKEk5MTVfUkVBRChHQU1NQV9NT0RFKGludGVsX2NydGMtPnBpcGUpKSAmIEdBTU1BX01PREVf TU9ERV9NQVNLKSA9PQo+ICsJICAgICBHQU1NQV9NT0RFX01PREVfU1BMSVQpKSB7Cj4gKwkJaHN3 X2Rpc2FibGVfaXBzKGludGVsX2NydGMpOwo+ICsJCXJlZW5hYmxlX2lwcyA9IHRydWU7Cj4gKwl9 Cj4gKwlJOTE1X1dSSVRFKEdBTU1BX01PREUoaW50ZWxfY3J0Yy0+cGlwZSksIEdBTU1BX01PREVf TU9ERV84QklUKTsKPiArCj4gKwlpOXh4X2xvYWRfbHV0cyhjcnRjKTsKPiArCj4gKwlpZiAocmVl bmFibGVfaXBzKQo+ICsJCWhzd19lbmFibGVfaXBzKGludGVsX2NydGMpOwo+ICt9Cj4gKwo+ICt2 b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiAr CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsKPiArCS8qIFRoZSBjbG9j a3MgaGF2ZSB0byBiZSBvbiB0byBsb2FkIHRoZSBwYWxldHRlLiAqLwo+ICsJaWYgKCFjcnRjLT5z dGF0ZS0+YWN0aXZlKQo+ICsJCXJldHVybjsKPiArCj4gKwlkZXZfcHJpdi0+ZGlzcGxheS5sb2Fk X2x1dHMoY3J0Yyk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3Nl dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUxNiAqcmVkLCB1MTYgKmdyZWVuLAo+ICsJCQkJICB1 MTYgKmJsdWUsIHVpbnQzMl90IHN0YXJ0LCB1aW50MzJfdCBzaXplKQo+ICt7Cj4gKwlpbnQgZW5k ID0gKHN0YXJ0ICsgc2l6ZSA+IDI1NikgPyAyNTYgOiBzdGFydCArIHNpemUsIGk7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICsJ Zm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgewo+ICsJCWludGVsX2NydGMtPmx1dF9yW2ld ID0gcmVkW2ldID4+IDg7Cj4gKwkJaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPSBncmVlbltpXSA+PiA4 Owo+ICsJCWludGVsX2NydGMtPmx1dF9iW2ldID0gYmx1ZVtpXSA+PiA4Owo+ICsJfQo+ICsKPiAr CWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9jb2xv cl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7Cj4gKwlpbnQgaTsKPiArCj4gKwlkcm1fbW9kZV9jcnRjX3NldF9n YW1tYV9zaXplKGNydGMsIDI1Nik7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKPiAr CQlpbnRlbF9jcnRjLT5sdXRfcltpXSA9IGk7Cj4gKwkJaW50ZWxfY3J0Yy0+bHV0X2dbaV0gPSBp Owo+ICsJCWludGVsX2NydGMtPmx1dF9iW2ldID0gaTsKPiArCX0KPiArCj4gKwlpZiAoSVNfSEFT V0VMTChkZXYpIHx8Cj4gKwkgICAgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDggJiYgIUlTX0NI RVJSWVZJRVcoZGV2KSkpCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0gaGFzd2Vs bF9sb2FkX2x1dHM7Cj4gKwllbHNlCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkubG9hZF9sdXRzID0g aTl4eF9sb2FkX2x1dHM7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g aW5kZXggZGVlZTU2MC4uYWNiYjFkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKPiBAQCAtMTAxLDcgKzEwMSw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2Nv ZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkJIHN0cnVjdCBpbnRl bF9saW5rX21fbiAqbTJfbjIpOwo+ICBzdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYo c3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNv bmYoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAtc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVf Y3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJlX3Bs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gIHN0YXRpYyB2b2lkIGNodl9wcmVwYXJlX3BsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiBAQCAtMTE2NSw3ICsxMTY0LDcgQEAgdm9pZCBhc3Nl cnRfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgfQo+ICAKPiAgLyog WFhYOiB0aGUgZHNpIHBsbCBpcyBzaGFyZWQgYmV0d2VlbiBNSVBJIERTSSBwb3J0cyAqLwo+IC1z dGF0aWMgdm9pZCBhc3NlcnRfZHNpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGJvb2wgc3RhdGUpCj4gK3ZvaWQgYXNzZXJ0X2RzaV9wbGwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBib29sIHN0YXRlKQo+ICB7Cj4gIAl1MzIgdmFsOwo+ICAJYm9vbCBj dXJfc3RhdGU7Cj4gQEAgLTExNzksOCArMTE3OCw2IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9kc2lf cGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0ZSkKPiAgCSAg ICAgIkRTSSBQTEwgc3RhdGUgYXNzZXJ0aW9uIGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50 ICVzKVxuIiwKPiAgCQkJb25vZmYoc3RhdGUpLCBvbm9mZihjdXJfc3RhdGUpKTsKPiAgfQo+IC0j ZGVmaW5lIGFzc2VydF9kc2lfcGxsX2VuYWJsZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgdHJ1ZSkK PiAtI2RlZmluZSBhc3NlcnRfZHNpX3BsbF9kaXNhYmxlZChkKSBhc3NlcnRfZHNpX3BsbChkLCBm YWxzZSkKPiAgCj4gIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqCj4gIGludGVsX2NydGNfdG9f c2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gQEAgLTMzMTUsNyArMzMxMiw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgCQkgICAgICBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdywgcGlwZV9jb25maWct PnBpcGVfc3JjX2gpOwo+ICAKPiAgCWlmIChIQVNfRERJKGRldikpCj4gLQkJaW50ZWxfc2V0X3Bp cGVfY3NjKCZjcnRjLT5iYXNlKTsKPiArCQlpbnRlbF9jb2xvcl9zZXRfY3NjKCZjcnRjLT5iYXNl KTsKPiAgCj4gIAkvKgo+ICAJICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0IGZpdHRlciBp ZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKPiBAQCAtNDYyNiw1NSArNDYyMyw2IEBA IHZvaWQgaHN3X2Rpc2FibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJaW50ZWxf d2FpdF9mb3JfdmJsYW5rKGRldiwgY3J0Yy0+cGlwZSk7Cj4gIH0KPiAgCj4gLS8qKiBMb2FkcyB0 aGUgcGFsZXR0ZS9nYW1tYSB1bml0IGZvciB0aGUgQ1JUQyB3aXRoIHRoZSBwcmVwYXJlZCB2YWx1 ZXMgKi8KPiAtc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0J c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0J ZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JaW50IGk7Cj4gLQlib29sIHJl ZW5hYmxlX2lwcyA9IGZhbHNlOwo+IC0KPiAtCS8qIFRoZSBjbG9ja3MgaGF2ZSB0byBiZSBvbiB0 byBsb2FkIHRoZSBwYWxldHRlLiAqLwo+IC0JaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZlKQo+IC0J CXJldHVybjsKPiAtCj4gLQlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdi0+ZGV2KSkgewo+ IC0JCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19kc2lfZW5jb2RlcikKPiAtCQkJYXNzZXJ0 X2RzaV9wbGxfZW5hYmxlZChkZXZfcHJpdik7Cj4gLQkJZWxzZQo+IC0JCQlhc3NlcnRfcGxsX2Vu YWJsZWQoZGV2X3ByaXYsIHBpcGUpOwo+IC0JfQo+IC0KPiAtCS8qIFdvcmthcm91bmQgOiBEbyBu b3QgcmVhZCBvciB3cml0ZSB0aGUgcGlwZSBwYWxldHRlL2dhbW1hIGRhdGEgd2hpbGUKPiAtCSAq IEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQgZ2FtbWEgYW5kIElQU19DVEwgaGFz IElQUyBlbmFibGVkLgo+IC0JICovCj4gLQlpZiAoSVNfSEFTV0VMTChkZXYpICYmIGludGVsX2Ny dGMtPmNvbmZpZy0+aXBzX2VuYWJsZWQgJiYKPiAtCSAgICAoKEk5MTVfUkVBRChHQU1NQV9NT0RF KHBpcGUpKSAmIEdBTU1BX01PREVfTU9ERV9NQVNLKSA9PQo+IC0JICAgICBHQU1NQV9NT0RFX01P REVfU1BMSVQpKSB7Cj4gLQkJaHN3X2Rpc2FibGVfaXBzKGludGVsX2NydGMpOwo+IC0JCXJlZW5h YmxlX2lwcyA9IHRydWU7Cj4gLQl9Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7 Cj4gLQkJaTkxNV9yZWdfdCBwYWxyZWc7Cj4gLQo+IC0JCWlmIChIQVNfR01DSF9ESVNQTEFZKGRl dikpCj4gLQkJCXBhbHJlZyA9IFBBTEVUVEUocGlwZSwgaSk7Cj4gLQkJZWxzZQo+IC0JCQlwYWxy ZWcgPSBMR0NfUEFMRVRURShwaXBlLCBpKTsKPiAtCj4gLQkJSTkxNV9XUklURShwYWxyZWcsCj4g LQkJCSAgIChpbnRlbF9jcnRjLT5sdXRfcltpXSA8PCAxNikgfAo+IC0JCQkgICAoaW50ZWxfY3J0 Yy0+bHV0X2dbaV0gPDwgOCkgfAo+IC0JCQkgICBpbnRlbF9jcnRjLT5sdXRfYltpXSk7Cj4gLQl9 Cj4gLQo+IC0JaWYgKHJlZW5hYmxlX2lwcykKPiAtCQloc3dfZW5hYmxlX2lwcyhpbnRlbF9jcnRj KTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kcG1zX292ZXJsYXlfZGlzYWJs ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKPiAgewo+ICAJaWYgKGludGVsX2NydGMt Pm92ZXJsYXkpIHsKPiBAQCAtNDkyMyw3ICs0ODcxLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vf Y3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJICogT24gSUxLKyBMVVQgbXVz dCBiZSBsb2FkZWQgYmVmb3JlIHRoZSBwaXBlIGlzIHJ1bm5pbmcgYnV0IHdpdGgKPiAgCSAqIGNs b2NrcyBlbmFibGVkCj4gIAkgKi8KPiAtCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7Cj4gKwlp bnRlbF9jb2xvcl9sb2FkX2x1dHMoY3J0Yyk7Cj4gIAo+ICAJaW50ZWxfdXBkYXRlX3dhdGVybWFy a3MoY3J0Yyk7Cj4gIAlpbnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKPiBAQCAtNDk4OSw3 ICs0OTM3LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCj4gIAo+ICAJaGFzd2VsbF9zZXRfcGlwZWNvbmYoY3J0Yyk7Cj4gIAo+IC0JaW50 ZWxfc2V0X3BpcGVfY3NjKGNydGMpOwo+ICsJaW50ZWxfY29sb3Jfc2V0X2NzYyhjcnRjKTsKPiAg Cj4gIAlpbnRlbF9jcnRjLT5hY3RpdmUgPSB0cnVlOwo+ICAKPiBAQCAtNTAxOCw3ICs0OTY2LDcg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gIAkgKiBPbiBJTEsrIExVVCBtdXN0IGJlIGxvYWRlZCBiZWZvcmUgdGhlIHBpcGUgaXMgcnVu bmluZyBidXQgd2l0aAo+ICAJICogY2xvY2tzIGVuYWJsZWQKPiAgCSAqLwo+IC0JaW50ZWxfY3J0 Y19sb2FkX2x1dChjcnRjKTsKPiArCWludGVsX2NvbG9yX2xvYWRfbHV0cyhjcnRjKTsKPiAgCj4g IAlpbnRlbF9kZGlfc2V0X3BpcGVfc2V0dGluZ3MoY3J0Yyk7Cj4gIAlpZiAoIWludGVsX2NydGMt PmNvbmZpZy0+aGFzX2RzaV9lbmNvZGVyKQo+IEBAIC02MjI5LDcgKzYxNzcsNyBAQCBzdGF0aWMg dm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4g IAlpOXh4X3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwo+ICAKPiAtCWludGVsX2NydGNfbG9hZF9s dXQoY3J0Yyk7Cj4gKwlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY3J0Yyk7Cj4gIAo+ICAJaW50ZWxf ZW5hYmxlX3BpcGUoaW50ZWxfY3J0Yyk7Cj4gIAo+IEBAIC02MjgyLDcgKzYyMzAsNyBAQCBzdGF0 aWMgdm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCj4gIAlp OXh4X3BmaXRfZW5hYmxlKGludGVsX2NydGMpOwo+ICAKPiAtCWludGVsX2NydGNfbG9hZF9sdXQo Y3J0Yyk7Cj4gKwlpbnRlbF9jb2xvcl9sb2FkX2x1dHMoY3J0Yyk7Cj4gIAo+ICAJaW50ZWxfdXBk YXRlX3dhdGVybWFya3MoY3J0Yyk7Cj4gIAlpbnRlbF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsK PiBAQCAtODczNyw3MCArODY4NSw2IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29u ZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlQT1NUSU5HX1JFQUQoUElQRUNPTkYocGlwZSkp Owo+ICB9Cj4gIAo+IC0vKgo+IC0gKiBTZXQgdXAgdGhlIHBpcGUgQ1NDIHVuaXQuCj4gLSAqCj4g LSAqIEN1cnJlbnRseSBvbmx5IGZ1bGwgcmFuZ2UgUkdCIHRvIGxpbWl0ZWQgcmFuZ2UgUkdCIGNv bnZlcnNpb24KPiAtICogaXMgc3VwcG9ydGVkLCBidXQgZXZlbnR1YWxseSB0aGlzIHNob3VsZCBo YW5kbGUgdmFyaW91cwo+IC0gKiBSR0I8LT5ZQ2JDciBzY2VuYXJpb3MgYXMgd2VsbC4KPiAtICov Cj4gLXN0YXRpYyB2b2lkIGludGVsX3NldF9waXBlX2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0JaW50IHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+IC0JdWludDE2X3QgY29lZmYgPSAweDc4MDA7IC8qIDEu MCAqLwo+IC0KPiAtCS8qCj4gLQkgKiBUT0RPOiBDaGVjayB3aGF0IGtpbmQgb2YgdmFsdWVzIGFj dHVhbGx5IGNvbWUgb3V0IG9mIHRoZSBwaXBlCj4gLQkgKiB3aXRoIHRoZXNlIGNvZWZmL3Bvc3Rv ZmYgdmFsdWVzIGFuZCBhZGp1c3QgdG8gZ2V0IHRoZSBiZXN0Cj4gLQkgKiBhY2N1cmFjeS4gUGVy aGFwcyB3ZSBldmVuIG5lZWQgdG8gdGFrZSB0aGUgYnBjIHZhbHVlIGludG8KPiAtCSAqIGNvbnNp ZGVyYXRpb24uCj4gLQkgKi8KPiAtCj4gLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5saW1pdGVk X2NvbG9yX3JhbmdlKQo+IC0JCWNvZWZmID0gKCgyMzUgLSAxNikgKiAoMSA8PCAxMikgLyAyNTUp ICYgMHhmZjg7IC8qIDAueHh4Li4uICovCj4gLQo+IC0JLyoKPiAtCSAqIEdZL0dVIGFuZCBSWS9S VSBzaG91bGQgYmUgdGhlIG90aGVyIHdheSBhcm91bmQgYWNjb3JkaW5nCj4gLQkgKiB0byBCU3Bl YywgYnV0IHJlYWxpdHkgZG9lc24ndCBhZ3JlZS4gSnVzdCBzZXQgdGhlbSB1cCBpbgo+IC0JICog YSB3YXkgdGhhdCByZXN1bHRzIGluIHRoZSBjb3JyZWN0IHBpY3R1cmUuCj4gLQkgKi8KPiAtCUk5 MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfUllfR1kocGlwZSksIGNvZWZmIDw8IDE2KTsKPiAtCUk5 MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZfQlkocGlwZSksIDApOwo+IC0KPiAtCUk5MTVfV1JJVEUo UElQRV9DU0NfQ09FRkZfUlVfR1UocGlwZSksIGNvZWZmKTsKPiAtCUk5MTVfV1JJVEUoUElQRV9D U0NfQ09FRkZfQlUocGlwZSksIDApOwo+IC0KPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfQ09FRkZf UlZfR1YocGlwZSksIDApOwo+IC0JSTkxNV9XUklURShQSVBFX0NTQ19DT0VGRl9CVihwaXBlKSwg Y29lZmYgPDwgMTYpOwo+IC0KPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0hJKHBpcGUp LCAwKTsKPiAtCUk5MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX01FKHBpcGUpLCAwKTsKPiAtCUk5 MTVfV1JJVEUoUElQRV9DU0NfUFJFT0ZGX0xPKHBpcGUpLCAwKTsKPiAtCj4gLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPiA2KSB7Cj4gLQkJdWludDE2X3QgcG9zdG9mZiA9IDA7Cj4gLQo+IC0J CWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCj4gLQkJCXBvc3Rv ZmYgPSAoMTYgKiAoMSA8PCAxMikgLyAyNTUpICYgMHgxZmZmOwo+IC0KPiAtCQlJOTE1X1dSSVRF KFBJUEVfQ1NDX1BPU1RPRkZfSEkocGlwZSksIHBvc3RvZmYpOwo+IC0JCUk5MTVfV1JJVEUoUElQ RV9DU0NfUE9TVE9GRl9NRShwaXBlKSwgcG9zdG9mZik7Cj4gLQkJSTkxNV9XUklURShQSVBFX0NT Q19QT1NUT0ZGX0xPKHBpcGUpLCBwb3N0b2ZmKTsKPiAtCj4gLQkJSTkxNV9XUklURShQSVBFX0NT Q19NT0RFKHBpcGUpLCAwKTsKPiAtCX0gZWxzZSB7Cj4gLQkJdWludDMyX3QgbW9kZSA9IENTQ19N T0RFX1lVVl9UT19SR0I7Cj4gLQo+IC0JCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxpbWl0ZWRf Y29sb3JfcmFuZ2UpCj4gLQkJCW1vZGUgfD0gQ1NDX0JMQUNLX1NDUkVFTl9PRkZTRVQ7Cj4gLQo+ IC0JCUk5MTVfV1JJVEUoUElQRV9DU0NfTU9ERShwaXBlKSwgbW9kZSk7Cj4gLQl9Cj4gLX0KPiAt Cj4gIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtODgy Myw5ICs4NzA3LDYgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJSTkxNV9XUklURShQSVBFQ09ORihjcHVfdHJhbnNjb2RlciksIHZh bCk7Cj4gIAlQT1NUSU5HX1JFQUQoUElQRUNPTkYoY3B1X3RyYW5zY29kZXIpKTsKPiAgCj4gLQlJ OTE1X1dSSVRFKEdBTU1BX01PREUoaW50ZWxfY3J0Yy0+cGlwZSksIEdBTU1BX01PREVfTU9ERV84 QklUKTsKPiAtCVBPU1RJTkdfUkVBRChHQU1NQV9NT0RFKGludGVsX2NydGMtPnBpcGUpKTsKPiAt Cj4gIAlpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkg ewo+ICAJCXZhbCA9IDA7Cj4gIAo+IEBAIC0xMDIzOCwyMSArMTAxMTksNiBAQCBzdGF0aWMgYm9v bCBjdXJzb3Jfc2l6ZV9vayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJcmV0dXJuIHRydWU7 Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX2NydGNfZ2FtbWFfc2V0KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywgdTE2ICpyZWQsIHUxNiAqZ3JlZW4sCj4gLQkJCQkgdTE2ICpibHVlLCB1aW50 MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSkKPiAtewo+IC0JaW50IGVuZCA9IChzdGFydCArIHNp emUgPiAyNTYpID8gMjU2IDogc3RhcnQgKyBzaXplLCBpOwo+IC0Jc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0KPiAtCWZvciAoaSA9IHN0YXJ0 OyBpIDwgZW5kOyBpKyspIHsKPiAtCQlpbnRlbF9jcnRjLT5sdXRfcltpXSA9IHJlZFtpXSA+PiA4 Owo+IC0JCWludGVsX2NydGMtPmx1dF9nW2ldID0gZ3JlZW5baV0gPj4gODsKPiAtCQlpbnRlbF9j cnRjLT5sdXRfYltpXSA9IGJsdWVbaV0gPj4gODsKPiAtCX0KPiAtCj4gLQlpbnRlbF9jcnRjX2xv YWRfbHV0KGNydGMpOwo+IC19Cj4gLQo+ICAvKiBWRVNBIDY0MHg0ODB4NzJIeiBtb2RlIHRvIHNl dCBvbiB0aGUgcGlwZSAqLwo+ICBzdGF0aWMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgbG9hZF9k ZXRlY3RfbW9kZSA9IHsKPiAgCURSTV9NT0RFKCI2NDB4NDgwIiwgRFJNX01PREVfVFlQRV9ERUZB VUxULCAzMTUwMCwgNjQwLCA2NjQsCj4gQEAgLTEyMDAxLDcgKzExODY3LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyBpbnRlbF9oZWxwZXJfZnVu Y3MgPSB7Cj4gIAkubW9kZV9zZXRfYmFzZV9hdG9taWMgPSBpbnRlbF9waXBlX3NldF9iYXNlX2F0 b21pYywKPiAtCS5sb2FkX2x1dCA9IGludGVsX2NydGNfbG9hZF9sdXQsCj4gKwkubG9hZF9sdXQg PSBpbnRlbF9jb2xvcl9sb2FkX2x1dHMsCj4gIAkuYXRvbWljX2JlZ2luID0gaW50ZWxfYmVnaW5f Y3J0Y19jb21taXQsCj4gIAkuYXRvbWljX2ZsdXNoID0gaW50ZWxfZmluaXNoX2NydGNfY29tbWl0 LAo+ICAJLmF0b21pY19jaGVjayA9IGludGVsX2NydGNfYXRvbWljX2NoZWNrLAo+IEBAIC0xMzYy MSw3ICsxMzQ4Nyw3IEBAIG91dDoKPiAgI3VuZGVmIGZvcl9lYWNoX2ludGVsX2NydGNfbWFza2Vk Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzIGludGVsX2NydGNfZnVu Y3MgPSB7Cj4gLQkuZ2FtbWFfc2V0ID0gaW50ZWxfY3J0Y19nYW1tYV9zZXQsCj4gKwkuZ2FtbWFf c2V0ID0gaW50ZWxfY29sb3JfbGVnYWN5X2dhbW1hX3NldCwKPiAgCS5zZXRfY29uZmlnID0gZHJt X2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPiAgCS5kZXN0cm95ID0gaW50ZWxfY3J0Y19kZXN0 cm95LAo+ICAJLnBhZ2VfZmxpcCA9IGludGVsX2NydGNfcGFnZV9mbGlwLAo+IEBAIC0xNDIyOCw3 ICsxNDA5NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBpbnQgcGlwZSkKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl ID0gTlVMTDsKPiAgCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBOVUxMOwo+ICAJc3RydWN0 IGRybV9wbGFuZSAqY3Vyc29yID0gTlVMTDsKPiAtCWludCBpLCByZXQ7Cj4gKwlpbnQgcmV0Owo+ ICAKPiAgCWludGVsX2NydGMgPSBremFsbG9jKHNpemVvZigqaW50ZWxfY3J0YyksIEdGUF9LRVJO RUwpOwo+ICAJaWYgKGludGVsX2NydGMgPT0gTlVMTCkKPiBAQCAtMTQyNjQsMTMgKzE0MTMwLDYg QEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBwaXBlKQo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGZhaWw7Cj4gIAo+IC0JZHJtX21vZGVfY3J0 Y19zZXRfZ2FtbWFfc2l6ZSgmaW50ZWxfY3J0Yy0+YmFzZSwgMjU2KTsKPiAtCWZvciAoaSA9IDA7 IGkgPCAyNTY7IGkrKykgewo+IC0JCWludGVsX2NydGMtPmx1dF9yW2ldID0gaTsKPiAtCQlpbnRl bF9jcnRjLT5sdXRfZ1tpXSA9IGk7Cj4gLQkJaW50ZWxfY3J0Yy0+bHV0X2JbaV0gPSBpOwo+IC0J fQo+IC0KPiAgCS8qCj4gIAkgKiBPbiBnZW4yLzMgb25seSBwbGFuZSBBIGNhbiBkbyBmYmMsIGJ1 dCB0aGUgcGFuZWwgZml0dGVyIGFuZCBsdmRzIHBvcnQKPiAgCSAqIGlzIGhvb2tlZCB0byBwaXBl IEIuIEhlbmNlIHdlIHdhbnQgcGxhbmUgQSBmZWVkaW5nIHBpcGUgQi4KPiBAQCAtMTQyOTUsNiAr MTQxNTQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IHBpcGUpCj4gIAo+ICAJZHJtX2NydGNfaGVscGVyX2FkZCgmaW50ZWxfY3J0Yy0+ YmFzZSwgJmludGVsX2hlbHBlcl9mdW5jcyk7Cj4gIAo+ICsJaW50ZWxfY29sb3JfaW5pdCgmaW50 ZWxfY3J0Yy0+YmFzZSk7Cj4gKwo+ICAJV0FSTl9PTihkcm1fY3J0Y19pbmRleCgmaW50ZWxfY3J0 Yy0+YmFzZSkgIT0gaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAlyZXR1cm47Cj4gIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gaW5kZXggMjg1YjA1Ny4uNDBmYzQ4NiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gQEAgLTExNjQsNiArMTE2NCw5IEBAIHZvaWQgYXNzZXJ0X3BsbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJZW51bSBwaXBlIHBpcGUsIGJv b2wgc3RhdGUpOwo+ICAjZGVmaW5lIGFzc2VydF9wbGxfZW5hYmxlZChkLCBwKSBhc3NlcnRfcGxs KGQsIHAsIHRydWUpCj4gICNkZWZpbmUgYXNzZXJ0X3BsbF9kaXNhYmxlZChkLCBwKSBhc3NlcnRf cGxsKGQsIHAsIGZhbHNlKQo+ICt2b2lkIGFzc2VydF9kc2lfcGxsKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0ZSk7Cj4gKyNkZWZpbmUgYXNzZXJ0X2RzaV9wbGxf ZW5hYmxlZChkKSBhc3NlcnRfZHNpX3BsbChkLCB0cnVlKQo+ICsjZGVmaW5lIGFzc2VydF9kc2lf cGxsX2Rpc2FibGVkKGQpIGFzc2VydF9kc2lfcGxsKGQsIGZhbHNlKQo+ICB2b2lkIGFzc2VydF9m ZGlfcnhfcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgICAgICAg ZW51bSBwaXBlIHBpcGUsIGJvb2wgc3RhdGUpOwo+ICAjZGVmaW5lIGFzc2VydF9mZGlfcnhfcGxs X2VuYWJsZWQoZCwgcCkgYXNzZXJ0X2ZkaV9yeF9wbGwoZCwgcCwgdHJ1ZSkKPiBAQCAtMTYxNiw0 ICsxNjE5LDExIEBAIHZvaWQgaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsK PiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGludGVsX3BsYW5l X2hlbHBlcl9mdW5jczsKPiAgCj4gKy8qIGludGVsX2NvbG9yLmMgKi8KPiArdm9pZCBpbnRlbF9j b2xvcl9pbml0KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gK3ZvaWQgaW50ZWxfY29sb3Jfc2V0 X2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICt2b2lkIGludGVsX2NvbG9yX2xvYWRfbHV0 cyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICt2b2lkIGludGVsX2NvbG9yX2xlZ2FjeV9nYW1t YV9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MTYgKnJlZCwgdTE2ICpncmVlbiwKPiArCQkJ CSAgdTE2ICpibHVlLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3Qgc2l6ZSk7Cj4gKwo+ICAjZW5k aWYgLyogX19JTlRFTF9EUlZfSF9fICovCj4gLS0gCj4gMi43LjAKPiAKPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApNYXR0IFJvcGVyCkdy YXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZlbG9w bWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK