From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH 09/12] drm/i915/uc: Move intel functions to intel_uc Date: Wed, 10 Jul 2019 20:26:33 +0200 Message-ID: References: <20190710005437.3496-1-daniele.ceraolospurio@intel.com> <20190710005437.3496-10-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3483A6E109 for ; Wed, 10 Jul 2019 18:26:37 +0000 (UTC) In-Reply-To: <20190710005437.3496-10-daniele.ceraolospurio@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Daniele Ceraolo Spurio List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxMCBKdWwgMjAxOSAwMjo1NDozNCArMDIwMCwgRGFuaWVsZSBDZXJhb2xvIFNwdXJp byAgCjxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPiB3cm90ZToKCj4gQWxsIHRoZSBp bnRlbF91Y18qIGNhbiBub3cgYmUgbW92ZWQgdG8gd29yayBvbiB0aGUgaW50ZWxfdWMgc3RydWN0 dXJlCj4gZm9yIGJldHRlciBlbmNhcHN1bGF0aW9uIG9mIHVjLXJlbGF0ZWQgYWN0aW9ucy4KPgo+ IE5vdGU6IEkndmUgaW50cm9kdWNlZCB1Y190b19ndCBpbnN0ZWFkIG9mIHVjX3RvX2k5MTUgYmVj YXVzZSB0aGUgYWltIGlzCj4gdG8gbW92ZSBldmVyeXRoaW5nIHRvIGJlIGd0LWZvY3VzZWQgaW4g dGhlIG1lZGl1bSB0ZXJtLCBzbyB3ZSB3b3VsZCd2ZQo+IGhhZCB0byByZXBsYWNlIGl0IHNvb24g YW55d2F5Lgo+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVs ZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiBDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFs LndhamRlY3prb0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9wbS5jIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0 LmggICAgIHwgICA1ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyAg fCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYyAgfCAxODQg KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Yy5oICB8ICAzNCArKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j ICAgICAgICB8ICAxNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAg ICB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8ICAx OCArLS0KPiAgOCBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgMTMyIGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9w bS5jICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wbS5jCj4gaW5kZXgg NGQ3NzQzNzZmNWI4Li4zYzY3NGM5NTJhNzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fcG0uYwo+IEBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5k KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+IAlpOTE1X2dlbV9kcmFpbl9mcmVlZF9v YmplY3RzKGk5MTUpOwo+IC0JaW50ZWxfdWNfc3VzcGVuZChpOTE1KTsKPiArCWludGVsX3VjX3N1 c3BlbmQoJmk5MTUtPmd0LnVjKTsKPiAgfQo+IHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqZmlyc3RfbW1fb2JqZWN0KHN0cnVjdCBsaXN0X2hlYWQgIAo+ICpsaXN0KQo+IEBAIC0y MzgsNyArMjM4LDcgQEAgdm9pZCBpOTE1X2dlbV9zdXNwZW5kX2xhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgIAo+ICppOTE1KQo+ICAJfQo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaTkx NS0+bW0ub2JqX2xvY2ssIGZsYWdzKTsKPiAtCWludGVsX3VjX3Nhbml0aXplKGk5MTUpOwo+ICsJ aW50ZWxfdWNfc2FuaXRpemUoJmk5MTUtPmd0LnVjKTsKPiAgCWk5MTVfZ2VtX3Nhbml0aXplKGk5 MTUpOwo+ICB9Cj4gQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3VtZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWlmIChpbnRlbF9ndF9yZXN1bWUoJmk5MTUt Pmd0KSkKPiAgCQlnb3RvIGVycl93ZWRnZWQ7Cj4gLQlpbnRlbF91Y19yZXN1bWUoaTkxNSk7Cj4g KwlpbnRlbF91Y19yZXN1bWUoJmk5MTUtPmd0LnVjKTsKPiAJLyogQWx3YXlzIHJlbG9hZCBhIGNv bnRleHQgZm9yIHBvd2Vyc2F2aW5nLiAqLwo+ICAJaWYgKCFpOTE1X2dlbV9sb2FkX3Bvd2VyX2Nv bnRleHQoaTkxNSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0LmggIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3QuaAo+IGluZGV4IDEw OTNkY2YzNmY2My4uODgwYmUwNWEzZjRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n dC5oCj4gQEAgLTExLDYgKzExLDExIEBACj4gc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gK3N0 YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2d0ICp1Y190b19ndChzdHJ1Y3QgaW50ZWxfdWMgKnVj KQo+ICt7Cj4gKwlyZXR1cm4gY29udGFpbmVyX29mKHVjLCBzdHJ1Y3QgaW50ZWxfZ3QsIHVjKTsK PiArfQo+ICsKPiAgdm9pZCBpbnRlbF9ndF9pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndCAqZ3Qs IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICAKPiAqaTkxNSk7Cj4gIHZvaWQgaW50ZWxfZ3RfaW5p dF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfcmVzZXQuYwo+IGluZGV4IGNjZWRlYTYzNmJhMy4uYmUyM2Y0NTU3MTExIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCj4gQEAgLTcyMCw3ICs3MjAs NyBAQCBzdGF0aWMgaW50ZWxfZW5naW5lX21hc2tfdCByZXNldF9wcmVwYXJlKHN0cnVjdCAgCj4g ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCQlyZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUp Owo+ICAJfQo+IC0JaW50ZWxfdWNfcmVzZXRfcHJlcGFyZShpOTE1KTsKPiArCWludGVsX3VjX3Jl c2V0X3ByZXBhcmUoJmk5MTUtPmd0LnVjKTsKPiAJcmV0dXJuIGF3YWtlOwo+ICB9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMgIAo+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWMuYwo+IGluZGV4IGUyMDgwZGEyZTFlNC4uMjA2 MmU3ZmYwNWU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X3VjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jCj4gQEAg LTIyLDE5ICsyMiwyMiBAQAo+ICAgKgo+ICAgKi8KPiArI2luY2x1ZGUgImd0L2ludGVsX2d0Lmgi Cj4gICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgo+IC0jaW5jbHVkZSAiaW50ZWxfdWMuaCIK PiAgI2luY2x1ZGUgImludGVsX2d1Yy5oIgoKd2UgZG9uJ3QgbmVlZCB0aGlzLCBpdCdzIGluY2x1 ZGVkIGJ5ICJpbnRlbF91Yy5oIgoKPiAgI2luY2x1ZGUgImludGVsX2d1Y19hZHMuaCIKPiAgI2lu Y2x1ZGUgImludGVsX2d1Y19zdWJtaXNzaW9uLmgiCj4gKyNpbmNsdWRlICJpbnRlbF91Yy5oIgo+ ICsKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gc3RhdGljIHZvaWQgZ3VjX2ZyZWVfbG9hZF9l cnJfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cj4gLyogUmVzZXQgR3VDIHByb3ZpZGluZyB1 cyB3aXRoIGZyZXNoIHN0YXRlIGZvciBib3RoIEd1QyBhbmQgSHVDLgo+ICAgKi8KPiAtc3RhdGlj IGludCBfX2ludGVsX3VjX3Jlc2V0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiArc3RhdGljIGludCBfX2ludGVsX3VjX3Jlc2V0X2h3KHN0cnVjdCBpbnRlbF91YyAqdWMp Cj4gIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHVjX3RvX2d0KHVj KS0+aTkxNTsKPiAgCWludCByZXQ7Cj4gIAl1MzIgZ3VjX3N0YXR1czsKPiBAQCAtNTIsMTAgKzU1 LDEwIEBAIHN0YXRpYyBpbnQgX19pbnRlbF91Y19yZXNldF9odyhzdHJ1Y3QgIAo+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IC1zdGF0aWMgaW50IF9f Z2V0X3BsYXRmb3JtX2VuYWJsZV9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g K3N0YXRpYyBpbnQgX19nZXRfcGxhdGZvcm1fZW5hYmxlX2d1YyhzdHJ1Y3QgaW50ZWxfdWMgKnVj KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZpOTE1LT5ndC51Yy5ndWMu Znc7Cj4gLQlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZpOTE1LT5ndC51Yy5odWMuZnc7 Cj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZ1Yy0+Z3VjLmZ3Owo+ICsJc3RydWN0 IGludGVsX3VjX2Z3ICpodWNfZncgPSAmdWMtPmh1Yy5mdzsKPiAgCWludCBlbmFibGVfZ3VjID0g MDsKPiAJLyogRGVmYXVsdCBpcyB0byB1c2UgSHVDIGlmIHdlIGtub3cgR3VDIGFuZCBIdUMgZmly bXdhcmVzICovCj4gQEAgLTY3LDEyICs3MCwxMSBAQCBzdGF0aWMgaW50IF9fZ2V0X3BsYXRmb3Jt X2VuYWJsZV9ndWMoc3RydWN0ICAKPiBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJcmV0dXJu IGVuYWJsZV9ndWM7Cj4gIH0KPiAtc3RhdGljIGludCBfX2dldF9kZWZhdWx0X2d1Y19sb2dfbGV2 ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0YXRpYyBpbnQgX19nZXRfZGVm YXVsdF9ndWNfbG9nX2xldmVsKHN0cnVjdCBpbnRlbF91YyAqdWMpCj4gIHsKPiAgCWludCBndWNf bG9nX2xldmVsOwo+IC0JaWYgKCFpbnRlbF91Y19md19zdXBwb3J0ZWQoJmk5MTUtPmd0LnVjLmd1 Yy5mdykgfHwKPiAtCSAgICAhaW50ZWxfdWNfaXNfdXNpbmdfZ3VjKGk5MTUpKQo+ICsJaWYgKCFp bnRlbF91Y19md19zdXBwb3J0ZWQoJnVjLT5ndWMuZncpIHx8ICFpbnRlbF91Y19pc191c2luZ19n dWModWMpKQo+ICAJCWd1Y19sb2dfbGV2ZWwgPSBHVUNfTE9HX0xFVkVMX0RJU0FCTEVEOwo+ICAJ ZWxzZSBpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUcpIHx8Cj4gIAkJIElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpCj4gQEAgLTg3LDcgKzg5LDcgQEAgc3Rh dGljIGludCBfX2dldF9kZWZhdWx0X2d1Y19sb2dfbGV2ZWwoc3RydWN0ICAKPiBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+IC8qKgo+ICAgKiBzYW5pdGl6ZV9vcHRpb25zX2Vhcmx5IC0gc2FuaXRp emUgdUMgcmVsYXRlZCBtb2RwYXJhbSBvcHRpb25zCj4gLSAqIEBpOTE1OiBkZXZpY2UgcHJpdmF0 ZQo+ICsgKiBAdWM6IHRoZSBpbnRlbF91YyBzdHJ1Y3R1cmUKPiAgICoKPiAgICogSW4gY2FzZSBv ZiAiZW5hYmxlX2d1YyIgb3B0aW9uIHRoaXMgZnVuY3Rpb24gd2lsbCBhdHRlbXB0IHRvIG1vZGlm eQo+ICAgKiBpdCBvbmx5IGlmIGl0IHdhcyBpbml0aWFsbHkgc2V0IHRvICJhdXRvKC0xKSIuIERl ZmF1bHQgdmFsdWUgZm9yIHRoaXMKPiBAQCAtMTAyLDIyICsxMDQsMjIgQEAgc3RhdGljIGludCBf X2dldF9kZWZhdWx0X2d1Y19sb2dfbGV2ZWwoc3RydWN0ICAKPiBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICAgKiB1bmxlc3MgR3VDIGlzIGVuYWJsZWQgb24gZ2l2ZW4gcGxhdGZvcm0gYW5kIHRo ZSBkcml2ZXIgaXMgY29tcGlsZWQgIAo+IHdpdGgKPiAgICogZGVidWcgY29uZmlnIHdoZW4gdGhp cyBtb2RwYXJhbSB3aWxsIGRlZmF1bHQgdG8gImVuYWJsZSgxLi40KSIuCj4gICAqLwo+IC1zdGF0 aWMgdm9pZCBzYW5pdGl6ZV9vcHRpb25zX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQo+ICtzdGF0aWMgdm9pZCBzYW5pdGl6ZV9vcHRpb25zX2Vhcmx5KHN0cnVjdCBpbnRlbF91 YyAqdWMpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmk5MTUtPmd0LnVj Lmd1Yy5mdzsKPiAtCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmk5MTUtPmd0LnVjLmh1 Yy5mdzsKPiArCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJnVjLT5ndWMuZnc7Cj4gKwlz dHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZ1Yy0+aHVjLmZ3Owo+IAkvKiBBIG5lZ2F0aXZl IHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIgKi8KPiAgCWlmIChpOTE1X21vZHBh cmFtcy5lbmFibGVfZ3VjIDwgMCkKPiAtCQlpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjID0gX19n ZXRfcGxhdGZvcm1fZW5hYmxlX2d1YyhpOTE1KTsKPiArCQlpOTE1X21vZHBhcmFtcy5lbmFibGVf Z3VjID0gX19nZXRfcGxhdGZvcm1fZW5hYmxlX2d1Yyh1Yyk7Cj4gCURSTV9ERUJVR19EUklWRVIo ImVuYWJsZV9ndWM9JWQgKHN1Ym1pc3Npb246JXMgaHVjOiVzKVxuIiwKPiAgCQkJIGk5MTVfbW9k cGFyYW1zLmVuYWJsZV9ndWMsCj4gLQkJCSB5ZXNubyhpbnRlbF91Y19pc191c2luZ19ndWNfc3Vi bWlzc2lvbihpOTE1KSksCj4gLQkJCSB5ZXNubyhpbnRlbF91Y19pc191c2luZ19odWMoaTkxNSkp KTsKPiArCQkJIHllc25vKGludGVsX3VjX2lzX3VzaW5nX2d1Y19zdWJtaXNzaW9uKHVjKSksCj4g KwkJCSB5ZXNubyhpbnRlbF91Y19pc191c2luZ19odWModWMpKSk7Cj4gCS8qIFZlcmlmeSBHdUMg ZmlybXdhcmUgYXZhaWxhYmlsaXR5ICovCj4gLQlpZiAoaW50ZWxfdWNfaXNfdXNpbmdfZ3VjKGk5 MTUpICYmICFpbnRlbF91Y19md19pc19zZWxlY3RlZChndWNfZncpKSB7Cj4gKwlpZiAoaW50ZWxf dWNfaXNfdXNpbmdfZ3VjKHVjKSAmJiAhaW50ZWxfdWNfZndfaXNfc2VsZWN0ZWQoZ3VjX2Z3KSkg ewo+ICAJCURSTV9XQVJOKCJJbmNvbXBhdGlibGUgb3B0aW9uIGRldGVjdGVkOiAlcz0lZCwgJXMh XG4iLAo+ICAJCQkgImVuYWJsZV9ndWMiLCBpOTE1X21vZHBhcmFtcy5lbmFibGVfZ3VjLAo+ICAJ CQkgIWludGVsX3VjX2Z3X3N1cHBvcnRlZChndWNfZncpID8KPiBAQCAtMTI1LDcgKzEyNyw3IEBA IHN0YXRpYyB2b2lkIHNhbml0aXplX29wdGlvbnNfZWFybHkoc3RydWN0ICAKPiBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAJfQo+IAkvKiBWZXJpZnkgSHVDIGZpcm13YXJlIGF2YWlsYWJpbGl0 eSAqLwo+IC0JaWYgKGludGVsX3VjX2lzX3VzaW5nX2h1YyhpOTE1KSAmJiAhaW50ZWxfdWNfZndf aXNfc2VsZWN0ZWQoaHVjX2Z3KSkgewo+ICsJaWYgKGludGVsX3VjX2lzX3VzaW5nX2h1Yyh1Yykg JiYgIWludGVsX3VjX2Z3X2lzX3NlbGVjdGVkKGh1Y19mdykpIHsKPiAgCQlEUk1fV0FSTigiSW5j b21wYXRpYmxlIG9wdGlvbiBkZXRlY3RlZDogJXM9JWQsICVzIVxuIiwKPiAgCQkJICJlbmFibGVf Z3VjIiwgaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1YywKPiAgCQkJICFpbnRlbF91Y19md19zdXBw b3J0ZWQoaHVjX2Z3KSA/Cj4gQEAgLTEzMyw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6 ZV9vcHRpb25zX2Vhcmx5KHN0cnVjdCAgCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCX0K PiAJLyogWFhYOiBHdUMgc3VibWlzc2lvbiBpcyB1bmF2YWlsYWJsZSBmb3Igbm93ICovCj4gLQlp ZiAoaW50ZWxfdWNfaXNfdXNpbmdfZ3VjX3N1Ym1pc3Npb24oaTkxNSkpIHsKPiArCWlmIChpbnRl bF91Y19pc191c2luZ19ndWNfc3VibWlzc2lvbih1YykpIHsKPiAgCQlEUk1fSU5GTygiSW5jb21w YXRpYmxlIG9wdGlvbiBkZXRlY3RlZDogJXM9JWQsICVzIVxuIiwKPiAgCQkJICJlbmFibGVfZ3Vj IiwgaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1YywKPiAgCQkJICJHdUMgc3VibWlzc2lvbiBub3Qg c3VwcG9ydGVkIik7Cj4gQEAgLTE0NCw5ICsxNDYsOSBAQCBzdGF0aWMgdm9pZCBzYW5pdGl6ZV9v cHRpb25zX2Vhcmx5KHN0cnVjdCAgCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCS8qIEEg bmVnYXRpdmUgdmFsdWUgbWVhbnMgInVzZSBwbGF0Zm9ybS9jb25maWcgZGVmYXVsdCIgKi8KPiAg CWlmIChpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsIDwgMCkKPiAgCQlpOTE1X21vZHBhcmFt cy5ndWNfbG9nX2xldmVsID0KPiAtCQkJX19nZXRfZGVmYXVsdF9ndWNfbG9nX2xldmVsKGk5MTUp Owo+ICsJCQlfX2dldF9kZWZhdWx0X2d1Y19sb2dfbGV2ZWwodWMpOwo+IC0JaWYgKGk5MTVfbW9k cGFyYW1zLmd1Y19sb2dfbGV2ZWwgPiAwICYmICFpbnRlbF91Y19pc191c2luZ19ndWMoaTkxNSkp IHsKPiArCWlmIChpOTE1X21vZHBhcmFtcy5ndWNfbG9nX2xldmVsID4gMCAmJiAhaW50ZWxfdWNf aXNfdXNpbmdfZ3VjKHVjKSkgewo+ICAJCURSTV9XQVJOKCJJbmNvbXBhdGlibGUgb3B0aW9uIGRl dGVjdGVkOiAlcz0lZCwgJXMhXG4iLAo+ICAJCQkgImd1Y19sb2dfbGV2ZWwiLCBpOTE1X21vZHBh cmFtcy5ndWNfbG9nX2xldmVsLAo+ICAJCQkgIWludGVsX3VjX2Z3X3N1cHBvcnRlZChndWNfZncp ID8KPiBAQCAtMTcyLDM0ICsxNzQsMjkgQEAgc3RhdGljIHZvaWQgc2FuaXRpemVfb3B0aW9uc19l YXJseShzdHJ1Y3QgIAo+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlHRU1fQlVHX09OKGk5 MTVfbW9kcGFyYW1zLmd1Y19sb2dfbGV2ZWwgPCAwKTsKPiAgfQo+IC12b2lkIGludGVsX3VjX2lu aXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3ZvaWQgaW50ZWxfdWNf aW5pdF9lYXJseShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMgPSAmaTkxNS0+Z3QudWMuZ3VjOwo+IC0Jc3RydWN0IGludGVsX2h1YyAqaHVjID0gJmk5 MTUtPmd0LnVjLmh1YzsKPiArCWludGVsX2d1Y19pbml0X2Vhcmx5KCZ1Yy0+Z3VjKTsKPiArCWlu dGVsX2h1Y19pbml0X2Vhcmx5KCZ1Yy0+aHVjKTsKPiAtCWludGVsX2d1Y19pbml0X2Vhcmx5KGd1 Yyk7Cj4gLQlpbnRlbF9odWNfaW5pdF9lYXJseShodWMpOwo+IC0KPiAtCXNhbml0aXplX29wdGlv bnNfZWFybHkoaTkxNSk7Cj4gKwlzYW5pdGl6ZV9vcHRpb25zX2Vhcmx5KHVjKTsKPiAgfQo+IC12 b2lkIGludGVsX3VjX2NsZWFudXBfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUp Cj4gK3ZvaWQgaW50ZWxfdWNfY2xlYW51cF9lYXJseShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICB7 Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmaTkxNS0+Z3QudWMuZ3VjOwo+IC0KPiAtCWd1 Y19mcmVlX2xvYWRfZXJyX2xvZyhndWMpOwo+ICsJZ3VjX2ZyZWVfbG9hZF9lcnJfbG9nKCZ1Yy0+ Z3VjKTsKPiAgfQo+IC8qKgo+ICAgKiBpbnRlbF91Y19pbml0X21taW8gLSBzZXR1cCB1QyBNTUlP IGFjY2Vzcwo+IC0gKiBAaTkxNTogZGV2aWNlIHByaXZhdGUKPiArICogQHVjOiB0aGUgaW50ZWxf dWMgc3RydWN0dXJlCj4gICAqCj4gICAqIFNldHVwIG1pbmltYWwgc3RhdGUgbmVjZXNzYXJ5IGZv ciBNTUlPIGFjY2Vzc2VzIGxhdGVyIGluIHRoZQo+ICAgKiBpbml0aWFsaXphdGlvbiBzZXF1ZW5j ZS4KPiAgICovCj4gLXZvaWQgaW50ZWxfdWNfaW5pdF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQo+ICt2b2lkIGludGVsX3VjX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdWMgKnVj KQo+ICB7Cj4gLQlpbnRlbF9ndWNfaW5pdF9zZW5kX3JlZ3MoJmk5MTUtPmd0LnVjLmd1Yyk7Cj4g KwlpbnRlbF9ndWNfaW5pdF9zZW5kX3JlZ3MoJnVjLT5ndWMpOwo+ICB9Cj4gc3RhdGljIHZvaWQg Z3VjX2NhcHR1cmVfbG9hZF9lcnJfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiBAQCAtMzQ2 LDU0ICszNDMsNTYgQEAgc3RhdGljIHZvaWQgZ3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbihzdHJ1 Y3QgIAo+IGludGVsX2d1YyAqZ3VjKQo+ICAJRFJNX0lORk8oIkd1QyBjb21tdW5pY2F0aW9uIGRp c2FibGVkXG4iKTsKPiAgfQo+IC12b2lkIGludGVsX3VjX2ZldGNoX2Zpcm13YXJlcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArdm9pZCBpbnRlbF91Y19mZXRjaF9maXJtd2FyZXMo c3RydWN0IGludGVsX3VjICp1YykKPiAgewo+IC0JaWYgKCFVU0VTX0dVQyhpOTE1KSkKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdWNfdG9fZ3QodWMpLT5pOTE1Owo+ICsKPiAr CWlmICghaW50ZWxfdWNfaXNfdXNpbmdfZ3VjKHVjKSkKPiAgCQlyZXR1cm47Cj4gLQlpbnRlbF91 Y19md19mZXRjaChpOTE1LCAmaTkxNS0+Z3QudWMuZ3VjLmZ3KTsKPiArCWludGVsX3VjX2Z3X2Zl dGNoKGk5MTUsICZ1Yy0+Z3VjLmZ3KTsKPiAtCWlmIChVU0VTX0hVQyhpOTE1KSkKPiAtCQlpbnRl bF91Y19md19mZXRjaChpOTE1LCAmaTkxNS0+Z3QudWMuaHVjLmZ3KTsKPiArCWlmIChpbnRlbF91 Y19pc191c2luZ19odWModWMpKQo+ICsJCWludGVsX3VjX2Z3X2ZldGNoKGk5MTUsICZ1Yy0+aHVj LmZ3KTsKPiAgfQo+IC12b2lkIGludGVsX3VjX2NsZWFudXBfZmlybXdhcmVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICt2b2lkIGludGVsX3VjX2NsZWFudXBfZmlybXdhcmVzKHN0 cnVjdCBpbnRlbF91YyAqdWMpCj4gIHsKPiAtCWlmICghVVNFU19HVUMoaTkxNSkpCj4gKwlpZiAo IWludGVsX3VjX2lzX3VzaW5nX2d1Yyh1YykpCj4gIAkJcmV0dXJuOwo+IC0JaWYgKFVTRVNfSFVD KGk5MTUpKQo+IC0JCWludGVsX3VjX2Z3X2NsZWFudXBfZmV0Y2goJmk5MTUtPmd0LnVjLmh1Yy5m dyk7Cj4gKwlpZiAoaW50ZWxfdWNfaXNfdXNpbmdfaHVjKHVjKSkKPiArCQlpbnRlbF91Y19md19j bGVhbnVwX2ZldGNoKCZ1Yy0+aHVjLmZ3KTsKPiAtCWludGVsX3VjX2Z3X2NsZWFudXBfZmV0Y2go Jmk5MTUtPmd0LnVjLmd1Yy5mdyk7Cj4gKwlpbnRlbF91Y19md19jbGVhbnVwX2ZldGNoKCZ1Yy0+ Z3VjLmZ3KTsKPiAgfQo+IC1pbnQgaW50ZWxfdWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAraW50IGludGVsX3VjX2luaXQoc3RydWN0IGludGVsX3VjICp1YykKPiAgewo+ IC0Jc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmk5MTUtPmd0LnVjLmd1YzsKPiAtCXN0cnVjdCBp bnRlbF9odWMgKmh1YyA9ICZpOTE1LT5ndC51Yy5odWM7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMgPSAmdWMtPmd1YzsKPiArCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZ1Yy0+aHVjOwo+ICAJ aW50IHJldDsKPiAtCWlmICghVVNFU19HVUMoaTkxNSkpCj4gKwlpZiAoIWludGVsX3VjX2lzX3Vz aW5nX2d1Yyh1YykpCj4gIAkJcmV0dXJuIDA7Cj4gCWlmICghaW50ZWxfdWNfZndfc3VwcG9ydGVk KCZndWMtPmZ3KSkKPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiAJLyogWFhYOiBHdUMgc3VibWlzc2lv biBpcyB1bmF2YWlsYWJsZSBmb3Igbm93ICovCj4gLQlHRU1fQlVHX09OKFVTRVNfR1VDX1NVQk1J U1NJT04oaTkxNSkpOwo+ICsJR0VNX0JVR19PTihpbnRlbF91Y19pc191c2luZ19ndWNfc3VibWlz c2lvbih1YykpOwo+IAlyZXQgPSBpbnRlbF9ndWNfaW5pdChndWMpOwo+ICAJaWYgKHJldCkKPiAg CQlyZXR1cm4gcmV0Owo+IC0JaWYgKFVTRVNfSFVDKGk5MTUpKSB7Cj4gKwlpZiAoaW50ZWxfdWNf aXNfdXNpbmdfaHVjKHVjKSkgewo+ICAJCXJldCA9IGludGVsX2h1Y19pbml0KGh1Yyk7Cj4gIAkJ aWYgKHJldCkKPiAgCQkJZ290byBlcnJfZ3VjOwo+ICAJfQo+IC0JaWYgKFVTRVNfR1VDX1NVQk1J U1NJT04oaTkxNSkpIHsKPiArCWlmIChpbnRlbF91Y19pc191c2luZ19ndWNfc3VibWlzc2lvbih1 YykpIHsKPiAgCQkvKgo+ICAJCSAqIFRoaXMgaXMgc3R1ZmYgd2UgbmVlZCB0byBoYXZlIGF2YWls YWJsZSBhdCBmdyBsb2FkIHRpbWUKPiAgCQkgKiBpZiB3ZSBhcmUgcGxhbm5pbmcgdG8gZW5hYmxl IHN1Ym1pc3Npb24gbGF0ZXIKPiBAQCAtNDA2LDU5ICs0MDUsNjAgQEAgaW50IGludGVsX3VjX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlyZXR1cm4gMDsKPiBlcnJfaHVj Ogo+IC0JaWYgKFVTRVNfSFVDKGk5MTUpKQo+ICsJaWYgKGludGVsX3VjX2lzX3VzaW5nX2h1Yyh1 YykpCj4gIAkJaW50ZWxfaHVjX2ZpbmkoaHVjKTsKPiAgZXJyX2d1YzoKPiAgCWludGVsX2d1Y19m aW5pKGd1Yyk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gLXZvaWQgaW50ZWxfdWNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArdm9pZCBpbnRlbF91Y19maW5pKHN0cnVjdCBp bnRlbF91YyAqdWMpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndC51 Yy5ndWM7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKPiAtCWlmICghVVNF U19HVUMoaTkxNSkpCj4gKwlpZiAoIWludGVsX3VjX2lzX3VzaW5nX2d1Yyh1YykpCj4gIAkJcmV0 dXJuOwo+IAlHRU1fQlVHX09OKCFpbnRlbF91Y19md19zdXBwb3J0ZWQoJmd1Yy0+ZncpKTsKPiAt CWlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKQo+ICsJaWYgKGludGVsX3VjX2lzX3VzaW5n X2d1Y19zdWJtaXNzaW9uKHVjKSkKPiAgCQlpbnRlbF9ndWNfc3VibWlzc2lvbl9maW5pKGd1Yyk7 Cj4gLQlpZiAoVVNFU19IVUMoaTkxNSkpCj4gLQkJaW50ZWxfaHVjX2ZpbmkoJmk5MTUtPmd0LnVj Lmh1Yyk7Cj4gKwlpZiAoaW50ZWxfdWNfaXNfdXNpbmdfaHVjKHVjKSkKPiArCQlpbnRlbF9odWNf ZmluaSgmdWMtPmh1Yyk7Cj4gCWludGVsX2d1Y19maW5pKGd1Yyk7Cj4gIH0KPiAtc3RhdGljIHZv aWQgX191Y19zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGlj IHZvaWQgX191Y19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMgPSAmaTkxNS0+Z3QudWMuZ3VjOwo+IC0Jc3RydWN0IGludGVsX2h1YyAq aHVjID0gJmk5MTUtPmd0LnVjLmh1YzsKPiArCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZ1Yy0+ Z3VjOwo+ICsJc3RydWN0IGludGVsX2h1YyAqaHVjID0gJnVjLT5odWM7Cj4gCUdFTV9CVUdfT04o IWludGVsX3VjX2Z3X3N1cHBvcnRlZCgmZ3VjLT5mdykpOwo+IAlpbnRlbF9odWNfc2FuaXRpemUo aHVjKTsKPiAgCWludGVsX2d1Y19zYW5pdGl6ZShndWMpOwo+IC0JX19pbnRlbF91Y19yZXNldF9o dyhpOTE1KTsKPiArCV9faW50ZWxfdWNfcmVzZXRfaHcodWMpOwo+ICB9Cj4gLXZvaWQgaW50ZWxf dWNfc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3ZvaWQgaW50ZWxf dWNfc2FuaXRpemUoc3RydWN0IGludGVsX3VjICp1YykKPiAgewo+IC0JaWYgKCFVU0VTX0dVQyhp OTE1KSkKPiArCWlmICghaW50ZWxfdWNfaXNfdXNpbmdfZ3VjKHVjKSkKPiAgCQlyZXR1cm47Cj4g LQlfX3VjX3Nhbml0aXplKGk5MTUpOwo+ICsJX191Y19zYW5pdGl6ZSh1Yyk7Cj4gIH0KPiAtaW50 IGludGVsX3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK2ludCBp bnRlbF91Y19pbml0X2h3KHN0cnVjdCBpbnRlbF91YyAqdWMpCj4gIHsKPiAtCXN0cnVjdCBpbnRl bF9ndWMgKmd1YyA9ICZpOTE1LT5ndC51Yy5ndWM7Cj4gLQlzdHJ1Y3QgaW50ZWxfaHVjICpodWMg PSAmaTkxNS0+Z3QudWMuaHVjOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB1 Y190b19ndCh1YyktPmk5MTU7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsK PiArCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZ1Yy0+aHVjOwo+ICAJaW50IHJldCwgYXR0ZW1w dHM7Cj4gLQlpZiAoIVVTRVNfR1VDKGk5MTUpKQo+ICsJaWYgKCFpbnRlbF91Y19pc191c2luZ19n dWModWMpKQo+ICAJCXJldHVybiAwOwo+IAlHRU1fQlVHX09OKCFpbnRlbF91Y19md19zdXBwb3J0 ZWQoJmd1Yy0+ZncpKTsKPiBAQCAtNDc3LDExICs0NzcsMTEgQEAgaW50IGludGVsX3VjX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkJICogQWx3YXlzIHJlc2V0IHRo ZSBHdUMganVzdCBiZWZvcmUgKHJlKWxvYWRpbmcsIHNvCj4gIAkJICogdGhhdCB0aGUgc3RhdGUg YW5kIHRpbWluZyBhcmUgZmFpcmx5IHByZWRpY3RhYmxlCj4gIAkJICovCj4gLQkJcmV0ID0gX19p bnRlbF91Y19yZXNldF9odyhpOTE1KTsKPiArCQlyZXQgPSBfX2ludGVsX3VjX3Jlc2V0X2h3KHVj KTsKPiAgCQlpZiAocmV0KQo+ICAJCQlnb3RvIGVycl9vdXQ7Cj4gLQkJaWYgKFVTRVNfSFVDKGk5 MTUpKSB7Cj4gKwkJaWYgKGludGVsX3VjX2lzX3VzaW5nX2h1Yyh1YykpIHsKPiAgCQkJcmV0ID0g aW50ZWxfaHVjX2Z3X3VwbG9hZChodWMpOwo+ICAJCQlpZiAocmV0KQo+ICAJCQkJZ290byBlcnJf b3V0Owo+IEBAIC01MDUsNyArNTA1LDcgQEAgaW50IGludGVsX3VjX2luaXRfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJyX2xvZ19jYXB0 dXJlOwo+IC0JaWYgKFVTRVNfSFVDKGk5MTUpKSB7Cj4gKwlpZiAoaW50ZWxfdWNfaXNfdXNpbmdf aHVjKHVjKSkgewo+ICAJCXJldCA9IGludGVsX2h1Y19hdXRoKGh1Yyk7Cj4gIAkJaWYgKHJldCkK PiAgCQkJZ290byBlcnJfY29tbXVuaWNhdGlvbjsKPiBAQCAtNTE1LDcgKzUxNSw3IEBAIGludCBp bnRlbF91Y19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAJaWYgKHJl dCkKPiAgCQlnb3RvIGVycl9jb21tdW5pY2F0aW9uOwo+IC0JaWYgKFVTRVNfR1VDX1NVQk1JU1NJ T04oaTkxNSkpIHsKPiArCWlmIChpbnRlbF91Y19pc191c2luZ19ndWNfc3VibWlzc2lvbih1Yykp IHsKPiAgCQlyZXQgPSBpbnRlbF9ndWNfc3VibWlzc2lvbl9lbmFibGUoZ3VjKTsKPiAgCQlpZiAo cmV0KQo+ICAJCQlnb3RvIGVycl9jb21tdW5pY2F0aW9uOwo+IEBAIC01MjQsOSArNTI0LDkgQEAg aW50IGludGVsX3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gIAlk ZXZfaW5mbyhpOTE1LT5kcm0uZGV2LCAiR3VDIGZpcm13YXJlIHZlcnNpb24gJXUuJXVcbiIsCj4g IAkJIGd1Yy0+ZncubWFqb3JfdmVyX2ZvdW5kLCBndWMtPmZ3Lm1pbm9yX3Zlcl9mb3VuZCk7Cj4g IAlkZXZfaW5mbyhpOTE1LT5kcm0uZGV2LCAiR3VDIHN1Ym1pc3Npb24gJXNcbiIsCj4gLQkJIGVu YWJsZWRkaXNhYmxlZChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKSk7Cj4gKwkJIGVuYWJsZWRk aXNhYmxlZChpbnRlbF91Y19pc191c2luZ19ndWNfc3VibWlzc2lvbih1YykpKTsKPiAgCWRldl9p bmZvKGk5MTUtPmRybS5kZXYsICJIdUMgJXNcbiIsCj4gLQkJIGVuYWJsZWRkaXNhYmxlZChVU0VT X0hVQyhpOTE1KSkpOwo+ICsJCSBlbmFibGVkZGlzYWJsZWQoaW50ZWxfdWNfaXNfdXNpbmdfaHVj KHVjKSkpOwo+IAlyZXR1cm4gMDsKPiBAQCAtNTM4LDcgKzUzOCw3IEBAIGludCBpbnRlbF91Y19p bml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICBlcnJfbG9nX2NhcHR1cmU6 Cj4gIAlndWNfY2FwdHVyZV9sb2FkX2Vycl9sb2coZ3VjKTsKPiAgZXJyX291dDoKPiAtCV9fdWNf c2FuaXRpemUoaTkxNSk7Cj4gKwlfX3VjX3Nhbml0aXplKHVjKTsKPiAJLyoKPiAgCSAqIE5vdGUg dGhhdCB0aGVyZSBpcyBubyBmYWxsYmFjayBhcyBlaXRoZXIgdXNlciBleHBsaWNpdGx5IGFza2Vk IGZvcgo+IEBAIC01NTEsNDIgKzU1MSw0MiBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAtdm9pZCBpbnRl bF91Y19maW5pX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt2b2lkIGludGVs X3VjX2ZpbmlfaHcoc3RydWN0IGludGVsX3VjICp1YykKPiAgewo+IC0Jc3RydWN0IGludGVsX2d1 YyAqZ3VjID0gJmk5MTUtPmd0LnVjLmd1YzsKPiArCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZ1 Yy0+Z3VjOwo+IAlpZiAoIWludGVsX2d1Y19pc19sb2FkZWQoZ3VjKSkKPiAgCQlyZXR1cm47Cj4g CUdFTV9CVUdfT04oIWludGVsX3VjX2Z3X3N1cHBvcnRlZCgmZ3VjLT5mdykpOwo+IC0JaWYgKFVT RVNfR1VDX1NVQk1JU1NJT04oaTkxNSkpCj4gKwlpZiAoaW50ZWxfdWNfaXNfdXNpbmdfZ3VjX3N1 Ym1pc3Npb24odWMpKQo+ICAJCWludGVsX2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZ3VjKTsKPiAJ Z3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbihndWMpOwo+IC0JX191Y19zYW5pdGl6ZShpOTE1KTsK PiArCV9fdWNfc2FuaXRpemUodWMpOwo+ICB9Cj4gLyoqCj4gICAqIGludGVsX3VjX3Jlc2V0X3By ZXBhcmUgLSBQcmVwYXJlIGZvciByZXNldAo+IC0gKiBAaTkxNTogZGV2aWNlIHByaXZhdGUKPiAr ICogQHVjOiB0aGUgaW50ZWxfdWMgc3RydWN0dXJlCj4gICAqCj4gICAqIFByZXBhcmluZyBmb3Ig ZnVsbCBncHUgcmVzZXQuCj4gICAqLwo+IC12b2lkIGludGVsX3VjX3Jlc2V0X3ByZXBhcmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3ZvaWQgaW50ZWxfdWNfcmVzZXRfcHJlcGFy ZShzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAm aTkxNS0+Z3QudWMuZ3VjOwo+ICsJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7Cj4g CWlmICghaW50ZWxfZ3VjX2lzX2xvYWRlZChndWMpKQo+ICAJCXJldHVybjsKPiAJZ3VjX3N0b3Bf Y29tbXVuaWNhdGlvbihndWMpOwo+IC0JX191Y19zYW5pdGl6ZShpOTE1KTsKPiArCV9fdWNfc2Fu aXRpemUodWMpOwo+ICB9Cj4gLXZvaWQgaW50ZWxfdWNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt2b2lkIGludGVsX3VjX3J1bnRpbWVfc3VzcGVuZChz dHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmaTkx NS0+Z3QudWMuZ3VjOwo+ICsJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJnVjLT5ndWM7Cj4gIAlp bnQgZXJyOwo+IAlpZiAoIWludGVsX2d1Y19pc19sb2FkZWQoZ3VjKSkKPiBAQCAtNTk5LDIxICs1 OTksMjEgQEAgdm9pZCBpbnRlbF91Y19ydW50aW1lX3N1c3BlbmQoc3RydWN0ICAKPiBkcm1faTkx NV9wcml2YXRlICppOTE1KQo+ICAJZ3VjX2Rpc2FibGVfY29tbXVuaWNhdGlvbihndWMpOwo+ICB9 Cj4gLXZvaWQgaW50ZWxfdWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiArdm9pZCBpbnRlbF91Y19zdXNwZW5kKHN0cnVjdCBpbnRlbF91YyAqdWMpCj4gIHsKPiAtCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndC51Yy5ndWM7Cj4gKwlzdHJ1Y3QgaW50ZWxf Z3VjICpndWMgPSAmdWMtPmd1YzsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IAlpZiAo IWludGVsX2d1Y19pc19sb2FkZWQoZ3VjKSkKPiAgCQlyZXR1cm47Cj4gLQl3aXRoX2ludGVsX3J1 bnRpbWVfcG0oJmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpCj4gLQkJaW50ZWxfdWNfcnVudGlt ZV9zdXNwZW5kKGk5MTUpOwo+ICsJd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZ1Y190b19ndCh1Yykt Pmk5MTUtPnJ1bnRpbWVfcG0sIHdha2VyZWYpCj4gKwkJaW50ZWxfdWNfcnVudGltZV9zdXNwZW5k KHVjKTsKPiAgfQo+IC1pbnQgaW50ZWxfdWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICtpbnQgaW50ZWxfdWNfcmVzdW1lKHN0cnVjdCBpbnRlbF91YyAqdWMpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZpOTE1LT5ndC51Yy5ndWM7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMgPSAmdWMtPmd1YzsKPiAgCWludCBlcnI7Cj4gCWlmICghaW50ZWxfZ3Vj X2lzX2xvYWRlZChndWMpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF91Yy5oICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmgK PiBpbmRleCBhMmZkYzg0YWZmZjIuLmZlMzM2MmZkNzcwNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfdWMuaAo+IEBAIC0zMywzNCArMzMsMzQgQEAgc3RydWN0IGludGVsX3Vj IHsKPiAgCXN0cnVjdCBpbnRlbF9odWMgaHVjOwo+ICB9Owo+IC12b2lkIGludGVsX3VjX2luaXRf ZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtdm9pZCBpbnRlbF91 Y19jbGVhbnVwX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXZv aWQgaW50ZWxfdWNfaW5pdF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gLXZvaWQgaW50ZWxfdWNfZmV0Y2hfZmlybXdhcmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7Cj4gLXZvaWQgaW50ZWxfdWNfY2xlYW51cF9maXJtd2FyZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtdm9pZCBpbnRlbF91Y19zYW5pdGl6ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC1pbnQgaW50ZWxfdWNfaW5pdF9odyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IC12b2lkIGludGVsX3VjX2Zpbmlf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtaW50IGludGVsX3VjX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAtdm9pZCBpbnRlbF91Y19m aW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gLXZvaWQgaW50ZWxfdWNf cmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gLXZvaWQgaW50 ZWxfdWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gLXZvaWQgaW50 ZWxfdWNfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAt aW50IGludGVsX3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ ICt2b2lkIGludGVsX3VjX2luaXRfZWFybHkoc3RydWN0IGludGVsX3VjICp1Yyk7Cj4gK3ZvaWQg aW50ZWxfdWNfY2xlYW51cF9lYXJseShzdHJ1Y3QgaW50ZWxfdWMgKnVjKTsKPiArdm9pZCBpbnRl bF91Y19pbml0X21taW8oc3RydWN0IGludGVsX3VjICp1Yyk7Cj4gK3ZvaWQgaW50ZWxfdWNfZmV0 Y2hfZmlybXdhcmVzKHN0cnVjdCBpbnRlbF91YyAqdWMpOwo+ICt2b2lkIGludGVsX3VjX2NsZWFu dXBfZmlybXdhcmVzKHN0cnVjdCBpbnRlbF91YyAqdWMpOwo+ICt2b2lkIGludGVsX3VjX3Nhbml0 aXplKHN0cnVjdCBpbnRlbF91YyAqdWMpOwo+ICtpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3Qg aW50ZWxfdWMgKnVjKTsKPiArdm9pZCBpbnRlbF91Y19maW5pX2h3KHN0cnVjdCBpbnRlbF91YyAq dWMpOwo+ICtpbnQgaW50ZWxfdWNfaW5pdChzdHJ1Y3QgaW50ZWxfdWMgKnVjKTsKPiArdm9pZCBp bnRlbF91Y19maW5pKHN0cnVjdCBpbnRlbF91YyAqdWMpOwo+ICt2b2lkIGludGVsX3VjX3Jlc2V0 X3ByZXBhcmUoc3RydWN0IGludGVsX3VjICp1Yyk7Cj4gK3ZvaWQgaW50ZWxfdWNfc3VzcGVuZChz dHJ1Y3QgaW50ZWxfdWMgKnVjKTsKPiArdm9pZCBpbnRlbF91Y19ydW50aW1lX3N1c3BlbmQoc3Ry dWN0IGludGVsX3VjICp1Yyk7Cj4gK2ludCBpbnRlbF91Y19yZXN1bWUoc3RydWN0IGludGVsX3Vj ICp1Yyk7Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19pc191c2luZ19ndWMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19p c191c2luZ19ndWMoc3RydWN0IGludGVsX3VjICp1YykKPiAgewo+ICAJR0VNX0JVR19PTihpOTE1 X21vZHBhcmFtcy5lbmFibGVfZ3VjIDwgMCk7Cj4gIAlyZXR1cm4gaTkxNV9tb2RwYXJhbXMuZW5h YmxlX2d1YyA+IDA7Cj4gIH0KPiAtc3RhdGljIGlubGluZSBib29sIGludGVsX3VjX2lzX3VzaW5n X2d1Y19zdWJtaXNzaW9uKHN0cnVjdCAgCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3Rh dGljIGlubGluZSBib29sIGludGVsX3VjX2lzX3VzaW5nX2d1Y19zdWJtaXNzaW9uKHN0cnVjdCBp bnRlbF91YyAqdWMpCj4gIHsKPiAgCUdFTV9CVUdfT04oaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2d1 YyA8IDApOwo+ICAJcmV0dXJuIGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWMgJiBFTkFCTEVfR1VD X1NVQk1JU1NJT047Cj4gIH0KPiAtc3RhdGljIGlubGluZSBib29sIGludGVsX3VjX2lzX3VzaW5n X2h1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiArc3RhdGljIGlubGluZSBib29s IGludGVsX3VjX2lzX3VzaW5nX2h1YyhzdHJ1Y3QgaW50ZWxfdWMgKnVjKQo+ICB7Cj4gIAlHRU1f QlVHX09OKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWMgPCAwKTsKPiAgCXJldHVybiBpOTE1X21v ZHBhcmFtcy5lbmFibGVfZ3VjICYgRU5BQkxFX0dVQ19MT0FEX0hVQzsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gaW5kZXggZTdjODlkMzIwMzc1Li5mNTk0ZTc0ZjA5N2QgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtOTM0LDcgKzkzNCw3IEBAIHN0YXRpYyBpbnQgaTkx NV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgIAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJaW50ZWxfZGV0ZWN0X3BjaChkZXZfcHJpdik7Cj4gCWludGVsX3dvcGNtX2luaXRfZWFy bHkoJmRldl9wcml2LT53b3BjbSk7Cj4gLQlpbnRlbF91Y19pbml0X2Vhcmx5KGRldl9wcml2KTsK PiArCWludGVsX3VjX2luaXRfZWFybHkoJmRldl9wcml2LT5ndC51Yyk7Cj4gIAlpbnRlbF9wbV9z ZXR1cChkZXZfcHJpdik7Cj4gIAlpbnRlbF9pbml0X2RwaW8oZGV2X3ByaXYpOwo+ICAJcmV0ID0g aW50ZWxfcG93ZXJfZG9tYWluc19pbml0KGRldl9wcml2KTsKPiBAQCAtOTUyLDcgKzk1Miw3IEBA IHN0YXRpYyBpbnQgaTkxNV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgIAo+IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAJcmV0dXJuIDA7Cj4gZXJyX3VjOgo+IC0JaW50ZWxfdWNfY2xl YW51cF9lYXJseShkZXZfcHJpdik7Cj4gKwlpbnRlbF91Y19jbGVhbnVwX2Vhcmx5KCZkZXZfcHJp di0+Z3QudWMpOwo+ICAJaTkxNV9nZW1fY2xlYW51cF9lYXJseShkZXZfcHJpdik7Cj4gIGVycl93 b3JrcXVldWVzOgo+ICAJaTkxNV93b3JrcXVldWVzX2NsZWFudXAoZGV2X3ByaXYpOwo+IEBAIC05 NjksNyArOTY5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfY2xlYW51cF9lYXJseShzdHJ1 Y3QgIAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlpbnRlbF9pcnFfZmlu aShkZXZfcHJpdik7Cj4gIAlpbnRlbF9wb3dlcl9kb21haW5zX2NsZWFudXAoZGV2X3ByaXYpOwo+ IC0JaW50ZWxfdWNfY2xlYW51cF9lYXJseShkZXZfcHJpdik7Cj4gKwlpbnRlbF91Y19jbGVhbnVw X2Vhcmx5KCZkZXZfcHJpdi0+Z3QudWMpOwo+ICAJaTkxNV9nZW1fY2xlYW51cF9lYXJseShkZXZf cHJpdik7Cj4gIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7Cj4gIAlpOTE1X2Vu Z2luZXNfY2xlYW51cChkZXZfcHJpdik7Cj4gQEAgLTEwMDgsNyArMTAwOCw3IEBAIHN0YXRpYyBp bnQgaTkxNV9kcml2ZXJfaW5pdF9tbWlvKHN0cnVjdCAgCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gCWludGVsX3VuY29yZV9wcnVuZV9tbWlvX2RvbWFpbnMoJmRldl9wcml2LT51bmNv cmUpOwo+IC0JaW50ZWxfdWNfaW5pdF9tbWlvKGRldl9wcml2KTsKPiArCWludGVsX3VjX2luaXRf bW1pbygmZGV2X3ByaXYtPmd0LnVjKTsKPiAJcmV0ID0gaW50ZWxfZW5naW5lc19pbml0X21taW8o ZGV2X3ByaXYpOwo+ICAJaWYgKHJldCkKPiBAQCAtMjkzMyw3ICsyOTMzLDcgQEAgc3RhdGljIGlu dCBpbnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAgCj4gKmtkZXYpCj4gIAkgKi8K PiAgCWk5MTVfZ2VtX3J1bnRpbWVfc3VzcGVuZChkZXZfcHJpdik7Cj4gLQlpbnRlbF91Y19ydW50 aW1lX3N1c3BlbmQoZGV2X3ByaXYpOwo+ICsJaW50ZWxfdWNfcnVudGltZV9zdXNwZW5kKCZkZXZf cHJpdi0+Z3QudWMpOwo+IAlpbnRlbF9ydW50aW1lX3BtX2Rpc2FibGVfaW50ZXJydXB0cyhkZXZf cHJpdik7Cj4gQEAgLTI5NTgsNyArMjk1OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9z dXNwZW5kKHN0cnVjdCBkZXZpY2UgIAo+ICprZGV2KQo+IAkJaW50ZWxfcnVudGltZV9wbV9lbmFi bGVfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gLQkJaW50ZWxfdWNfcmVzdW1lKGRldl9wcml2KTsK PiArCQlpbnRlbF91Y19yZXN1bWUoJmRldl9wcml2LT5ndC51Yyk7Cj4gCQlpbnRlbF9ndF9pbml0 X3N3aXp6bGluZygmZGV2X3ByaXYtPmd0KTsKPiAgCQlpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhk ZXZfcHJpdik7Cj4gQEAgLTMwNTYsNyArMzA1Niw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGlt ZV9yZXN1bWUoc3RydWN0IGRldmljZSAgCj4gKmtkZXYpCj4gCWludGVsX3J1bnRpbWVfcG1fZW5h YmxlX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+IC0JaW50ZWxfdWNfcmVzdW1lKGRldl9wcml2KTsK PiArCWludGVsX3VjX3Jlc3VtZSgmZGV2X3ByaXYtPmd0LnVjKTsKPiAJLyoKPiAgCSAqIE5vIHBv aW50IG9mIHJvbGxpbmcgYmFjayB0aGluZ3MgaW4gY2FzZSBvZiBhbiBlcnJvciwgYXMgdGhlIGJl c3QKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYzQ3NTdjYmY5YTMzLi45OTAw NGM4YjgzM2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjI5Myw5ICsyMjkz LDkgQEAgSVNfU1VCUExBVEZPUk0oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gICNkZWZpbmUgSEFTX0hVQ19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQo+ IC8qIEhhdmluZyBhIEd1QyBpcyBub3QgdGhlIHNhbWUgYXMgdXNpbmcgYSBHdUMgKi8KPiAtI2Rl ZmluZSBVU0VTX0dVQyhkZXZfcHJpdikJCWludGVsX3VjX2lzX3VzaW5nX2d1YyhkZXZfcHJpdikK PiAtI2RlZmluZSAgCj4gVVNFU19HVUNfU1VCTUlTU0lPTihkZXZfcHJpdikJaW50ZWxfdWNfaXNf dXNpbmdfZ3VjX3N1Ym1pc3Npb24oZGV2X3ByaXYpCj4gLSNkZWZpbmUgVVNFU19IVUMoZGV2X3By aXYpCQlpbnRlbF91Y19pc191c2luZ19odWMoZGV2X3ByaXYpCj4gKyNkZWZpbmUgVVNFU19HVUMo ZGV2X3ByaXYpCQlpbnRlbF91Y19pc191c2luZ19ndWMoJihkZXZfcHJpdiktPmd0LnVjKQo+ICsj ZGVmaW5lICAKPiBVU0VTX0dVQ19TVUJNSVNTSU9OKGRldl9wcml2KQlpbnRlbF91Y19pc191c2lu Z19ndWNfc3VibWlzc2lvbigmKGRldl9wcml2KS0+Z3QudWMpCj4gKyNkZWZpbmUgVVNFU19IVUMo ZGV2X3ByaXYpCQlpbnRlbF91Y19pc191c2luZ19odWMoJihkZXZfcHJpdiktPmd0LnVjKQo+ICNk ZWZpbmUgSEFTX1BPT0xFRF9FVShkZXZfcHJpdikJKElOVEVMX0lORk8oZGV2X3ByaXYpLT5oYXNf cG9vbGVkX2V1KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j ICAKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCBlNmU4ZTRkNWVi YjEuLmI3OTJlODViOGMyYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMjQ4 LDcgKzEyNDgsNyBAQCBpbnQgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiAgCX0KPiAJLyogV2UgY2FuJ3QgZW5hYmxlIGNvbnRleHRzIHVudGlsIGFsbCBm aXJtd2FyZSBpcyBsb2FkZWQgKi8KPiAtCXJldCA9IGludGVsX3VjX2luaXRfaHcoaTkxNSk7Cj4g KwlyZXQgPSBpbnRlbF91Y19pbml0X2h3KCZpOTE1LT5ndC51Yyk7Cj4gIAlpZiAocmV0KSB7Cj4g IAkJRFJNX0VSUk9SKCJFbmFibGluZyB1YyBmYWlsZWQgKCVkKVxuIiwgcmV0KTsKPiAgCQlnb3Rv IG91dDsKPiBAQCAtMTQzMyw3ICsxNDMzLDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgIAo+ICpkZXZfcHJpdikKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJl dDsKPiAtCWludGVsX3VjX2ZldGNoX2Zpcm13YXJlcyhkZXZfcHJpdik7Cj4gKwlpbnRlbF91Y19m ZXRjaF9maXJtd2FyZXMoJmRldl9wcml2LT5ndC51Yyk7Cj4gCXJldCA9IGludGVsX3dvcGNtX2lu aXQoJmRldl9wcml2LT53b3BjbSk7Cj4gIAlpZiAocmV0KQo+IEBAIC0xNDgxLDcgKzE0ODEsNyBA QCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmRldl9wcml2 KQo+IAlpbnRlbF9pbml0X2d0X3Bvd2Vyc2F2ZShkZXZfcHJpdik7Cj4gLQlyZXQgPSBpbnRlbF91 Y19pbml0KGRldl9wcml2KTsKPiArCXJldCA9IGludGVsX3VjX2luaXQoJmRldl9wcml2LT5ndC51 Yyk7Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJyX3BtOwo+IEBAIC0xNTQ1LDkgKzE1NDUsOSBA QCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmRldl9wcml2 KQo+IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIGVycl9pbml0 X2h3Ogo+IC0JaW50ZWxfdWNfZmluaV9odyhkZXZfcHJpdik7Cj4gKwlpbnRlbF91Y19maW5pX2h3 KCZkZXZfcHJpdi0+Z3QudWMpOwo+ICBlcnJfdWNfaW5pdDoKPiAtCWludGVsX3VjX2ZpbmkoZGV2 X3ByaXYpOwo+ICsJaW50ZWxfdWNfZmluaSgmZGV2X3ByaXYtPmd0LnVjKTsKPiAgZXJyX3BtOgo+ ICAJaWYgKHJldCAhPSAtRUlPKSB7Cj4gIAkJaW50ZWxfY2xlYW51cF9ndF9wb3dlcnNhdmUoZGV2 X3ByaXYpOwo+IEBAIC0xNTY0LDcgKzE1NjQsNyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmRldl9wcml2KQo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gZXJyX3VjX2Z3Ogo+IC0JaW50ZWxfdWNfY2xlYW51cF9m aXJtd2FyZXMoZGV2X3ByaXYpOwo+ICsJaW50ZWxfdWNfY2xlYW51cF9maXJtd2FyZXMoJmRldl9w cml2LT5ndC51Yyk7Cj4gCWlmIChyZXQgIT0gLUVJTykgewo+ICAJCWk5MTVfZ2VtX2NsZWFudXBf dXNlcnB0cihkZXZfcHJpdik7Cj4gQEAgLTE2MTEsOCArMTYxMSw4IEBAIHZvaWQgaTkxNV9nZW1f ZmluaV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmRldl9wcml2KQo+ICAJaTkxNV9n ZW1fZHJhaW5fd29ya3F1ZXVlKGRldl9wcml2KTsKPiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaW50ZWxfdWNfZmluaV9odyhkZXZfcHJpdik7Cj4gLQlpbnRl bF91Y19maW5pKGRldl9wcml2KTsKPiArCWludGVsX3VjX2ZpbmlfaHcoJmRldl9wcml2LT5ndC51 Yyk7Cj4gKwlpbnRlbF91Y19maW5pKCZkZXZfcHJpdi0+Z3QudWMpOwo+ICAJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gCWk5MTVfZ2VtX2RyYWluX2ZyZWVkX29i amVjdHMoZGV2X3ByaXYpOwo+IEBAIC0xNjMwLDcgKzE2MzAsNyBAQCB2b2lkIGk5MTVfZ2VtX2Zp bmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgIAo+ICpkZXZfcHJpdikKPiAJaW50ZWxfY2xlYW51 cF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+IC0JaW50ZWxfdWNfY2xlYW51cF9maXJtd2FyZXMo ZGV2X3ByaXYpOwo+ICsJaW50ZWxfdWNfY2xlYW51cF9maXJtd2FyZXMoJmRldl9wcml2LT5ndC51 Yyk7Cj4gIAlpOTE1X2dlbV9jbGVhbnVwX3VzZXJwdHIoZGV2X3ByaXYpOwo+ICAJaW50ZWxfdGlt ZWxpbmVzX2ZpbmkoZGV2X3ByaXYpOwo+CgpwYXRjaCB3aWxsIGxpa2VseSBiZSBmdXJ0aGVyIHNp bXBsaWZpZWQgYWZ0ZXIgYXBwbHlpbmcgbml0cyB0byA4LzEyLApidXQgaW4gdGhlIG1lYW50aW1l CgpBY2tlZC1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+ Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==