From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v7] drm/i915: Enable second dbuf slice for ICL and TGL Date: Mon, 18 Nov 2019 16:22:31 +0200 Message-ID: <87h831z2l4.fsf@intel.com> References: <20191114122449.26409-1-stanislav.lisovskiy@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 19A8E899D5 for ; Mon, 18 Nov 2019 14:22:37 +0000 (UTC) In-Reply-To: <20191114122449.26409-1-stanislav.lisovskiy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stanislav Lisovskiy , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxNCBOb3YgMjAxOSwgU3RhbmlzbGF2IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292 c2tpeUBpbnRlbC5jb20+IHdyb3RlOgo+IEFsc28gaW1wbGVtZW50ZWQgYWxnb3JpdGhtIGZvciBj aG9vc2luZyBEQnVmIHNsaWNlIGNvbmZpZ3VyYXRpb24KPiBiYXNlZCBvbiBhY3RpdmUgcGlwZXMs IHBpcGUgcmF0aW8gYXMgc3RhdGVkIGluIEJTcGVjIDEyNzE2Lgo+Cj4gTm93IHBpcGUgYWxsb2Nh dGlvbiBzdGlsbCBzdGF5cyBwcm9wb3J0aW9uYWwgdG8gcGlwZSB3aWR0aCBhcyBiZWZvcmUsCj4g aG93ZXZlciB3aXRoaW4gYWxsb3dlZCBEQnVmIHNsaWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgY29u ZmlndXJhdGlvbi4KPgo+IHYyOiBSZW1vdmUgdW5uZWVkZWQgY2hlY2sgZnJvbSBjb21taXQgYXMg ZGRiIGVuYWJsZWQgc2xpY2VzIG1pZ2h0Cj4gICAgIG5vdyBkaWZmZXIgZnJvbSBodyBzdGF0ZS4K Pgo+IHYzOiAtIEFkZGVkIG5ldyBmaWVsZCAic3VwcG9ydGVkX3NsaWNlcyIgdG8gZGRiIHRvIHNl cGFyYXRlIG1heAo+ICAgICAgIHN1cHBvcnRlZCBzbGljZXMgdnMgY3VycmVudGx5IGVuYWJsZWQs IHRvIGF2b2lkIGNvbmZ1c2lvbi4KPiAgICAgLSBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnRzIGFu ZCBjb2RlIHJlbGF0ZWQgdG8gREJ1ZihNYXR0aGV3IFJvcGVyKS4KPiAgICAgLSBTb21lIGNvZGUg c3R5bGUgYW5kIGxvbmcgbGluZSByZW1vdmFsKE1hdHRoZXcgUm9wZXIpLgo+ICAgICAtIEFkZGVk IFdBUk5fT04gdG8gbmV3IGRkYiByYW5nZSBvZmZzZXQgY2FsYyBmdW5jdGlvbihNYXR0aGV3IFJv cGVyKS4KPiAgICAgLSBSZW1vdmVkIHBsYXRmb3JtIHNwZWNpZmljIGNhbGwgdG8gY2FsYyBwaXBl IHJhdGlvIGZyb20gZGRiCj4gICAgICAgYWxsb2NhdGlvbiBmdW5jdGlvbiBhbmQgZml4ZWQgdGhl IHJldHVybiB2YWx1ZShNYXR0aGV3IFJvcGVyKQo+ICAgICAtIFJlZmFjdG9yZWQgREJVRiBzbGlj ZSBhbGxvY2F0aW9uIHRhYmxlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkKPiAgICAgLSBBZGRlZCBE QlVGIHNsaWNlIGFsbG9jYXRpb24gZm9yIFRHTCBhcyB3ZWxsLgo+ICAgICAtIElDTChob3dldmVy IG5vdCBUR0wpIHNlZW1zIHRvIHZvbHVudGFyaWx5IGVuYWJsZSBzZWNvbmQgREJ1ZiBzbGljZQo+ ICAgICAgIGFmdGVyIHBtIHN1c3BlbmQvcmVzdW1lIGNhdXNpbmcgYSBtaXNtYXRjaCBmYWlsdXJl LCBiZWNhdXNlIHdlCj4gICAgICAgdXBkYXRlIERCdWYgc2xpY2VzIG9ubHkgaWYgd2UgZG8gYSBt b2Rlc2V0LCBob3dldmVyIHRoaXMgY2hlY2sKPiAgICAgICBpcyBkb25lIGFsd2F5cy4gRml4ZWQg aXQgdG8gYmUgZG9uZSBvbmx5IHdoZW4gbW9kZXNldCBmb3IgSUNMLgo+Cj4gdjQ6IC0gTm93IGVu YWJsZWQgc2xpY2VzIGlzIG5vdCBhY3R1YWxseSBhIG51bWJlciwgYnV0IGEgYml0bWFzaywKPiAg ICAgICBiZWNhdXNlIHdlIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIHNlY29uZCBzbGljZSBvbmx5IGFu ZCBudW1iZXIKPiAgICAgICBvZiBzbGljZXMgd291bGQgc3RpbGwgMSBhbmQgdGhhdCBjdXJyZW50 IGNvZGUgZG9lc24ndCBhbGxvdy4KPiAgICAgLSBSZW1vdmUgcmVkdW5kYW50IGR1cGxpY2F0ZSBj b2RlIHRvIGhhdmUgc29tZSB1bmlmaWVkIHdheSBvZgo+ICAgICAgIGVuYWJsaW5nIGRidWYgc2xp Y2VzIGluc3RlYWQgb2YgaGFyZGNvZGluZy4KPgo+IHY1OiAtIEZpeCBmYWlsaW5nIGdlbjlfYXNz ZXJ0X2RidWZfZW5hYmxlZCBhcyBpdCB3YXMgbmFpdmVseSB0aGlua2luZwo+ICAgICAgIHRoYXQg d2UgaGF2ZSBvbmx5IG9uZSBEQlVGX0NUTCBzbGljZS4gTm93IGFub3RoZXIgdmVyc2lvbiBmb3IK PiAgICAgICBnZW4xMSB3aWxsIGNoZWNrIGJvdGggc2xpY2VzIGFzIG9ubHkgc2Vjb25kIG9uZSBj YW4gYmUgZW5hYmxlZCwKPiAgICAgICB0byBrZWVwIENJIGhhcHB5Lgo+Cj4gdjY6IC0gUmVtb3Zl ZCBlbmFibGVkIGRidWYgYXNzZXJ0aW9uIGNvbXBsZXRlbHkuIFByZXZpb3VzIGNvZGUKPiAgICAg ICB3YXMga2VlcGluZyBkYnVmIGVuYWJsZWQsIGV2ZW4oISkgd2hlbiBfZGJ1Zl9kaXNhYmxlIGlz IGNhbGxlZC4KPiAgICAgICBDdXJyZW50bHkgd2UgZW5hYmxlL2Rpc2FibGUgZGJ1ZiBzbGljZXMg YmFzZWQgb24gcmVxdXJlbWVudAo+ICAgICAgIHNvIG5vIHBvaW50IGluIGFzc2VydGluZyB0aGlz IGhlcmUuCj4gICAgIC0gUmVtb3ZlZCB1bm5lY2Vzc2FyeSBtb2Rlc2V0IGNoZWNrIGZyb20gdmVy aWZ5X3dtX3N0YXRlKE1hdHRoZXcgUm9wZXIpCj4gICAgIC0gU2xpY2VzIGludGVyc2VjdGlvbiBh ZnRlciB1bmlvbiBpcyBzYW1lIGFzIGZpbmFsIHJlc3VsdChNYXR0aGV3IFJvcGVyKQo+ICAgICAt IE1vdmVkIERCdWYgc2xpY2VzIHRvIGludGVsX2RldmljZV9pbmZvKE1hdHRoZXcgUm9wZXIpCj4g ICAgIC0gU29tZSBtYWNyb3MgYWRkZWQoTWF0dGhldyBSb3BlcikKPiAgICAgLSBkZGIgcmFuZ2Ug aXMgbm93IGFsd2F5cyBsZXNzIG9yIGVxdWFsIHRvIGRkYiBzaXplIC0gbm8gbmVlZCBmb3IgYWRk aXRpb25hbAo+ICAgICAgIGNoZWNrcyhwcmV2aW91c2x5IG5lZWRlZCBhcyB3ZSBoYWQgc29tZSBi YW5kd2lkdGggY2hlY2tzIGluIHRoZXJlIHdoaWNoCj4gICAgICAgY291bGQgInN1ZGRlbmx5IiBy ZXR1cm4gZGRiX3NpemUgc21hbGxlciB0aGFuIGl0IGlzLgo+Cj4gdjc6IE1pbm9yIGNvc3RlbWlj IGNoYW5nZXM6Cj4gICAgIC0gQ2hhbmdlZCBpY2xfZGJ1Zl9zbGljZXNfcmVzdG9yZSBuYW1lIHRv IGljbF9wcm9ncmFtX2RidWZfc2xpY2VzCj4gICAgICAgYXMgaXQgbW9yZSBjb3JyZXNwb25kcyB0 byB0aGUgYWN0dWFsIGZ1bmN0aW9uYWxpdHkuCj4gICAgIC0gU29tZSBzaW1wbGlmaWNhdGlvbiB3 aXRoIHN1cHBvcnRlZCBzbGljZXMgZm9yIEJYVCBhbmQgR0xLCj4gICAgIC0gc2tsX3BpcGVfZG93 bnNjYWxlX2Ftb3VudCAtPiBpY2xfcGlwZV9kb3duc2NhbGVfYW1vdW50IGFzCj4gICAgICAgdGhp cyBpcyBub3QgdXNlZCBmb3Igc2tsIGFueW1vcmUuCj4gICAgIC0gQ2hhbmdlZCBEQnVmIHNsaWNl IGFzc2lnbm1lbnQgb3JkZXIgZm9yIFRHTCBjYXNlCj4KPiBSZXZpZXdlZC1ieTogTWF0dGhldyBS b3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNs YXYgTGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiBDYzogTWF0dGhl dyBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGludGVsLmNvbT4KPiBDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5hdXNt dXNAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYyAgfCAgMjYgKy0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV9wb3dlci5jICAgIHwgIDk4ICsrLS0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfcG93ZXIuaCAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgICAgICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCAgICAgICAgICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmggICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgICAgICAgICAgICAgICB8IDM4NyArKysrKysrKysrKysrKysrLS0KPiAgOSBmaWxlcyBj aGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQoKVGhpcyBpcyBhIHJh dGhlciBiaWcgcGF0Y2gsIGFuZCB0aGF0J3Mgb25lIG9mIHRoZSBmZXcgdGhpbmdzIHdlIGNhbid0 CmZpeCBhZnRlciBjb21taXR0aW5nLgoKSWYgdGhlcmUncyBhIGJ1ZywgYnkgb3VyIHJhdGUgb2Yg Y2hhbmdlIHRoaXMgdHVybnMgcHJhY3RpY2FsbHkKdW4tcmV2ZXJ0aWJsZSBpbiBhIG1hdHRlciBv ZiB3ZWVrcyBkdWUgdG8gY29uZmxpY3RzLiBJZiB0aGVyZSdzIGEKYmlzZWN0ZWQgcmVncmVzc2lv biwgYW5kIHRoaXMgaXMgdGhlIHJlZ3Jlc3NpbmcgY29tbWl0LCB3aGF0IGFyZSBvdXIKY2hhbmNl cyBvZiBpZGVudGlmeWluZyB0aGUgYnVnIGJhc2VkIG9uIHRoZSBzaGExIGFsb25lPyBDYW4ndCBy ZXZlcnQgYW5kCmNhbid0IGltbWVkaWF0ZWx5IHNwb3QgdGhlIGJ1Zy9maXggaXMgYSBiYWQgY29t YmluYXRpb24gdG8gaGF2ZS4KCkFsc28gd2UgaGF2ZSB0aGlzIG5pY2UgQ0kgaW5mcmFzdHJ1Y3R1 cmUgcmVwb3J0aW5nIGFib3V0IHZhbGlkCmNoZWNrcGF0Y2ggYW5kIHNwYXJzZSBpc3N1ZXMgZm9y IHNldmVyYWwgdmVyc2lvbnMgb2YgdGhlIHBhdGNoLiBQbGVhc2UKZml4LgoKCkJSLApKYW5pLgoK Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IDg3NmZjMjU5NjhiZi4uYmQ3YWZmNjc1MTk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTMzODcsNyArMTMzODcsNyBAQCBz dGF0aWMgdm9pZCB2ZXJpZnlfd21fc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYKPiAgCSAgICBody0+ZGRiLmVuYWJs ZWRfc2xpY2VzICE9IHN3X2RkYi0+ZW5hYmxlZF9zbGljZXMpCj4gLQkJRFJNX0VSUk9SKCJtaXNt YXRjaCBpbiBEQlVGIFNsaWNlcyAoZXhwZWN0ZWQgJXUsIGdvdCAldSlcbiIsCj4gKwkJRFJNX0VS Uk9SKCJtaXNtYXRjaCBpbiBEQlVGIFNsaWNlcyAoZXhwZWN0ZWQgJXgsIGdvdCAleClcbiIsCj4g IAkJCSAgc3dfZGRiLT5lbmFibGVkX3NsaWNlcywKPiAgCQkJICBody0+ZGRiLmVuYWJsZWRfc2xp Y2VzKTsKPiAgCj4gQEAgLTE0NjE0LDE1ICsxNDYxNCwyNCBAQCBzdGF0aWMgdm9pZCBza2xfY29t bWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg CXU4IGh3X2VuYWJsZWRfc2xpY2VzID0gZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9z bGljZXM7Cj4gIAl1OCByZXF1aXJlZF9zbGljZXMgPSBzdGF0ZS0+d21fcmVzdWx0cy5kZGIuZW5h YmxlZF9zbGljZXM7Cj4gIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJ UEVTXSA9IHt9Owo+ICsJdTggc2xpY2VzX3VuaW9uID0gaHdfZW5hYmxlZF9zbGljZXMgfCByZXF1 aXJlZF9zbGljZXM7Cj4gKwl1OCBzbGljZXNfaW50ZXJzZWN0aW9uID0gcmVxdWlyZWRfc2xpY2Vz Owo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpCj4gIAkJLyogaWdub3JlIGFsbG9j YXRpb25zIGZvciBjcnRjJ3MgdGhhdCBoYXZlIGJlZW4gdHVybmVkIG9mZi4gKi8KPiAgCQlpZiAo bmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQkJZW50cmllc1tpXSA9IG9sZF9jcnRjX3N0 YXRlLT53bS5za2wuZGRiOwo+ICAKPiAtCS8qIElmIDJuZCBEQnVmIHNsaWNlIHJlcXVpcmVkLCBl bmFibGUgaXQgaGVyZSAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVx dWlyZWRfc2xpY2VzID4gaHdfZW5hYmxlZF9zbGljZXMpCj4gLQkJaWNsX2RidWZfc2xpY2VzX3Vw ZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKPiArCURSTV9ERUJVR19LTVMoIkRCdWYg cmVxIHNsaWNlcyAlZCBodyBzbGljZXMgJWRcbiIsCj4gKwkJICAgICAgcmVxdWlyZWRfc2xpY2Vz LCBod19lbmFibGVkX3NsaWNlcyk7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHNvbWUgb3RoZXIgREJ1 ZiBzbGljZSByZXF1aXJlZCwgZW5hYmxlIGl0IGhlcmUsCj4gKwkgKiBhcyBoZXJlIHdlIG9ubHkg YWRkIG1vcmUgc2xpY2VzLCBidXQgbm90IHJlbW92ZSB0byBwcmV2ZW50Cj4gKwkgKiBpc3N1ZXMg aWYgc29tZWJvZHkgc3RpbGwgdXNlcyB0aG9zZS4KPiArCSAqLwo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzICE9IGh3X2VuYWJsZWRfc2xpY2VzKQo+ ICsJCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHNsaWNlc191bmlvbik7Cj4gIAo+ ICAJLyoKPiAgCSAqIFdoZW5ldmVyIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBpcGVzIGNoYW5nZXMs IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlCj4gQEAgLTE0NjgxLDkgKzE0NjkwLDEyIEBAIHN0YXRp YyB2b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICAJCX0KPiAgCX0gd2hpbGUgKHByb2dyZXNzKTsKPiAgCj4gLQkvKiBJZiAy bmQgREJ1ZiBzbGljZSBpcyBubyBtb3JlIHJlcXVpcmVkIGRpc2FibGUgaXQgKi8KPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDExICYmIHJlcXVpcmVkX3NsaWNlcyA8IGh3X2VuYWJsZWRf c2xpY2VzKQo+IC0JCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHJlcXVpcmVkX3Ns aWNlcyk7Cj4gKwkvKgo+ICsJICogSWYgc29tZSBvdGhlciBEQnVmIHNsaWNlIGlzIG5vdCBuZWVk ZWQsIGRpc2FibGUgaXQgaGVyZSwKPiArCSAqIGFzIGhlcmUgd2Ugb25seSByZW1vdmUgc2xpY2Vz LCB3aGljaCBhcmUgbm90IG5lZWRlZCBhbnltb3JlLgo+ICsJICovCj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgIT0gaHdfZW5hYmxlZF9zbGljZXMp Cj4gKwkJaWNsX2RidWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgc2xpY2VzX2ludGVyc2VjdGlv bik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19oZWxwZXJfZnJlZV9zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiBpbmRleCBjZTFiNjRm NGRkNDQuLmE3OGJjOWI2MTg2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jCj4gQEAgLTEwMzEsMTUgKzEwMzEsNiBAQCBz dGF0aWMgYm9vbCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCShJOTE1X1JFQUQoRENfU1RBVEVfRU4pICYgRENfU1RB VEVfRU5fVVBUT19EQzVfREM2X01BU0spID09IDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBn ZW45X2Fzc2VydF9kYnVmX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IC17Cj4gLQl1MzIgdG1wID0gSTkxNV9SRUFEKERCVUZfQ1RMKTsKPiAtCj4gLQlXQVJOKCh0 bXAgJiAoREJVRl9QT1dFUl9TVEFURSB8IERCVUZfUE9XRVJfUkVRVUVTVCkpICE9Cj4gLQkgICAg IChEQlVGX1BPV0VSX1NUQVRFIHwgREJVRl9QT1dFUl9SRVFVRVNUKSwKPiAtCSAgICAgIlVuZXhw ZWN0ZWQgREJ1ZiBwb3dlciBwb3dlciBzdGF0ZSAoMHglMDh4KVxuIiwgdG1wKTsKPiAtfQo+IC0K PiAgc3RhdGljIHZvaWQgZ2VuOV9kaXNhYmxlX2RjX3N0YXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19z dGF0ZSA9IHt9Owo+IEBAIC0xMDU1LDggKzEwNDYsNiBAQCBzdGF0aWMgdm9pZCBnZW45X2Rpc2Fi bGVfZGNfc3RhdGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIENh bid0IHJlYWQgb3V0IHZvbHRhZ2VfbGV2ZWwgc28gY2FuJ3QgdXNlIGludGVsX2NkY2xrX2NoYW5n ZWQoKSAqLwo+ICAJV0FSTl9PTihpbnRlbF9jZGNsa19uZWVkc19tb2Rlc2V0KCZkZXZfcHJpdi0+ Y2RjbGsuaHcsICZjZGNsa19zdGF0ZSkpOwo+ICAKPiAtCWdlbjlfYXNzZXJ0X2RidWZfZW5hYmxl ZChkZXZfcHJpdik7Cj4gLQo+ICAJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF92 ZXJpZnlfZGRpX3BoeV9wb3dlcl93ZWxscyhkZXZfcHJpdik7Cj4gIAo+IEBAIC00MjU0LDMxICs0 MjQzLDUxIEBAIHN0YXRpYyB2b2lkIGdlbjlfZGJ1Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCWludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LCBEQlVG X0NUTCwgZmFsc2UpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdTggaW50ZWxfZGJ1Zl9tYXhfc2xpY2Vz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAraW50IGludGVsX2RidWZfbWF4 X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gLQkJcmV0dXJuIDE7Cj4gLQlyZXR1cm4gMjsKPiAr CXJldHVybiBJTlRFTF9JTkZPKGRldl9wcml2KS0+c3VwcG9ydGVkX3NsaWNlczsKPiArfQo+ICsK PiArdm9pZCBpY2xfcHJvZ3JhbV9kYnVmX3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gK3sKPiArCWNvbnN0IHU4IGh3X2VuYWJsZWRfc2xpY2VzID0gZGV2X3ByaXYt PndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7Cj4gKwo+ICsJaWNsX2RidWZfc2xpY2VzX3Vw ZGF0ZShkZXZfcHJpdiwgaHdfZW5hYmxlZF9zbGljZXMpOwo+ICB9Cj4gIAo+ICB2b2lkIGljbF9k YnVmX3NsaWNlc191cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkgICAgdTggcmVxX3NsaWNlcykKPiAgewo+IC0JY29uc3QgdTggaHdfZW5hYmxlZF9zbGljZXMg PSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlczsKPiAtCWJvb2wgcmV0Owo+ ICsJYm9vbCByZXQgPSB0cnVlOwo+ICsJaW50IGk7Cj4gKwlpbnQgbWF4X3NsaWNlcyA9IGludGVs X2RidWZfbWF4X3NsaWNlcyhkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKHJlcV9zbGljZXMgPiBpbnRl bF9kYnVmX21heF9zbGljZXMoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoaHdlaWdodDgocmVxX3NsaWNl cykgPiBpbnRlbF9kYnVmX21heF9zbGljZXMoZGV2X3ByaXYpKSB7Cj4gIAkJRFJNX0VSUk9SKCJJ bnZhbGlkIG51bWJlciBvZiBkYnVmIHNsaWNlcyByZXF1ZXN0ZWRcbiIpOwo+ICAJCXJldHVybjsK PiAgCX0KPiAgCj4gLQlpZiAocmVxX3NsaWNlcyA9PSBod19lbmFibGVkX3NsaWNlcyB8fCByZXFf c2xpY2VzID09IDApCj4gLQkJcmV0dXJuOwo+ICsJRFJNX0RFQlVHX0tNUygiVXBkYXRpbmcgZGJ1 ZiBzbGljZXMgdG8gJXhcbiIsIHJlcV9zbGljZXMpOwo+ICAKPiAtCWlmIChyZXFfc2xpY2VzID4g aHdfZW5hYmxlZF9zbGljZXMpCj4gLQkJcmV0ID0gaW50ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3By aXYsIERCVUZfQ1RMX1MyLCB0cnVlKTsKPiAtCWVsc2UKPiAtCQlyZXQgPSBpbnRlbF9kYnVmX3Ns aWNlX3NldChkZXZfcHJpdiwgREJVRl9DVExfUzIsIGZhbHNlKTsKPiArCWZvciAoaSA9IDA7IGkg PCBtYXhfc2xpY2VzOyBpKyspIHsKPiArCQlpbnQgc2xpY2VfYml0ID0gQklUKGkpOwo+ICsJCWJv b2wgc2xpY2Vfc2V0ID0gKHNsaWNlX2JpdCAmIHJlcV9zbGljZXMpICE9IDA7Cj4gKwo+ICsJCXN3 aXRjaCAoc2xpY2VfYml0KSB7Cj4gKwkJY2FzZSBEQlVGX1MxX0JJVDoKPiArCQkJcmV0ID0gcmV0 ICYmIGludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LAo+ICsJCQkJCQkJICBEQlVGX0NUTF9T MSwKPiArCQkJCQkJCSAgc2xpY2Vfc2V0KTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBEQlVGX1My X0JJVDoKPiArCQkJcmV0ID0gcmV0ICYmIGludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LAo+ ICsJCQkJCQkJICBEQlVGX0NUTF9TMiwKPiArCQkJCQkJCSAgc2xpY2Vfc2V0KTsKPiArCQkJYnJl YWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKHNsaWNlX2JpdCk7Cj4gKwkJfQo+ ICsJfQo+ICAKPiAgCWlmIChyZXQpCj4gIAkJZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxl ZF9zbGljZXMgPSByZXFfc2xpY2VzOwo+IEBAIC00Mjg2LDQwICs0Mjk1LDIxIEBAIHZvaWQgaWNs X2RidWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gLQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MxLCBJOTE1X1JFQUQoREJV Rl9DVExfUzEpIHwgREJVRl9QT1dFUl9SRVFVRVNUKTsKPiAtCUk5MTVfV1JJVEUoREJVRl9DVExf UzIsIEk5MTVfUkVBRChEQlVGX0NUTF9TMikgfCBEQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0JUE9T VElOR19SRUFEKERCVUZfQ1RMX1MyKTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+IC0KPiAtCWlmICgh KEk5MTVfUkVBRChEQlVGX0NUTF9TMSkgJiBEQlVGX1BPV0VSX1NUQVRFKSB8fAo+IC0JICAgICEo STkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpKQo+IC0JCURSTV9FUlJP UigiREJ1ZiBwb3dlciBlbmFibGUgdGltZW91dFxuIik7Cj4gLQllbHNlCj4gLQkJLyoKPiAtCQkg KiBGSVhNRTogZm9yIG5vdyBwcmV0ZW5kIHRoYXQgd2Ugb25seSBoYXZlIDEgc2xpY2UsIHNlZQo+ IC0JCSAqIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCj4gLQkJICovCj4gLQkJZGV2 X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXMgPSAxOwo+ICsJLyoKPiArCSAqIEp1 c3QgcG93ZXIgdXAgMSBzbGljZSwgd2Ugd2lsbAo+ICsJICogZmlndXJlIG91dCBsYXRlciB3aGlj aCBzbGljZXMgd2UgaGF2ZSBhbmQgd2hhdCB3ZSBuZWVkLgo+ICsJICovCj4gKwlkZXZfcHJpdi0+ d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IERCVUZfUzFfQklUOwo+ICsJaWNsX3Byb2dy YW1fZGJ1Zl9zbGljZXMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1 Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JSTkx NV9XUklURShEQlVGX0NUTF9TMSwgSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSAmIH5EQlVGX1BPV0VS X1JFUVVFU1QpOwo+IC0JSTkxNV9XUklURShEQlVGX0NUTF9TMiwgSTkxNV9SRUFEKERCVUZfQ1RM X1MyKSAmIH5EQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0JUE9TVElOR19SRUFEKERCVUZfQ1RMX1My KTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+IC0KPiAtCWlmICgoSTkxNV9SRUFEKERCVUZfQ1RMX1Mx KSAmIERCVUZfUE9XRVJfU1RBVEUpIHx8Cj4gLQkgICAgKEk5MTVfUkVBRChEQlVGX0NUTF9TMikg JiBEQlVGX1BPV0VSX1NUQVRFKSkKPiAtCQlEUk1fRVJST1IoIkRCdWYgcG93ZXIgZGlzYWJsZSB0 aW1lb3V0IVxuIik7Cj4gLQllbHNlCj4gLQkJLyoKPiAtCQkgKiBGSVhNRTogZm9yIG5vdyBwcmV0 ZW5kIHRoYXQgdGhlIGZpcnN0IHNsaWNlIGlzIGFsd2F5cwo+IC0JCSAqIGVuYWJsZWQsIHNlZSBp bnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX251bSgpLgo+IC0JCSAqLwo+IC0JCWRldl9wcml2LT53 bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gMTsKPiArCS8qCj4gKwkgKiBEaXNhYmxlIGFs bCBzbGljZXMKPiArCSAqLwo+ICsJZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGlj ZXMgPSAwOwo+ICsJaWNsX3Byb2dyYW1fZGJ1Zl9zbGljZXMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBpY2xfbWJ1c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3Bvd2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfcG93ZXIuaAo+IGluZGV4IDFkYTA0ZjNlMGZiMy4uYjcwNTdkNjhhZDc4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgK PiBAQCAtMzExLDggKzMxMSwxMCBAQCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCWZvciAoKHdmKSA9IGludGVsX2Rpc3BsYXlf cG93ZXJfZ2V0KChpOTE1KSwgKGRvbWFpbikpOyAod2YpOyBcCj4gIAkgICAgIGludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0X2FzeW5jKChpOTE1KSwgKGRvbWFpbiksICh3ZikpLCAod2YpID0gMCkKPiAg Cj4gK2ludCBpbnRlbF9kYnVmX21heF9zbGljZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiAgdm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgIHU4IHJlcV9zbGljZXMpOwo+ICt2b2lkIGljbF9w cm9ncmFtX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g IAo+ICB2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQkgICAgIGJvb2wgb3ZlcnJpZGUsIHVuc2lnbmVkIGludCBtYXNrKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA4MmU0ZTZiZjA4YzMuLjk2NzQxZTY4NjMzYSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC01MSw2ICs1MSw3IEBACj4gICNpbmNs dWRlICJkaXNwbGF5L2ludGVsX2J3LmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2NkY2xr LmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCIKPiArI2luY2x1 ZGUgImRpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9p bnRlbF9kcC5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9mYmRldi5oIgo+ICAjaW5jbHVk ZSAiZGlzcGxheS9pbnRlbF9ob3RwbHVnLmgiCj4gQEAgLTI1ODgsNiArMjU4OSwxMCBAQCBzdGF0 aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gIAlpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJ cmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2LCB0cnVlKTsKPiAgCj4gKwkvKiBXZWly ZCBoYWNrIHRvIGZpeCBJQ0wgaGFyZHdhcmUgYnVnLCBhcyBpdCByZXNldHMgREJVRiBzbGljZXMg cmVnICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiArCQlpY2xfcHJvZ3Jh bV9kYnVmX3NsaWNlcyhkZXZfcHJpdik7Cj4gKwo+ICAJaW50ZWxfdW5jb3JlX3J1bnRpbWVfcmVz dW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9p bnRlcnJ1cHRzKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA3ZTBm NjdiYWJlMjAuLmEzOTY5NzdjOWMyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBA IC04MDQsNyArODA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNrbF9kZGJfZW50cnlfZXF1YWwo Y29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUxLAo+ICB9Cj4gIAo+ICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uIHsKPiAtCXU4IGVuYWJsZWRfc2xpY2VzOyAvKiBHRU4xMSBoYXMgY29uZmln dXJhYmxlIDIgc2xpY2VzICovCj4gKwl1OCBlbmFibGVkX3NsaWNlczsgICAvKiBCaXRtYXNrIG9m IGN1cnJlbnRseSBlbmFibGVkIERCdWYgc2xpY2VzICovCj4gIH07Cj4gIAo+ICBzdHJ1Y3Qgc2ts X2RkYl92YWx1ZXMgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IGluZGV4IDFiYjcwMWQzMmE1 ZC4uOGU4NmFmNTA1NzMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gQEAgLTYxNCw3 ICs2MTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2No ZXJyeXZpZXdfaW5mbyA9IHsKPiAgCS5oYXNfZ3RfdWMgPSAxLCBcCj4gIAkuZGlzcGxheS5oYXNf aGRjcCA9IDEsIFwKPiAgCS5kaXNwbGF5Lmhhc19pcGMgPSAxLCBcCj4gLQkuZGRiX3NpemUgPSA4 OTYKPiArCS5kZGJfc2l6ZSA9IDg5NiwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAxCj4gIAo+ ICAjZGVmaW5lIFNLTF9QTEFURk9STSBcCj4gIAlHRU45X0ZFQVRVUkVTLCBcCj4gQEAgLTY1MCw2 ICs2NTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX3Nr eWxha2VfZ3Q0X2luZm8gPSB7Cj4gIAlHRU4oOSksIFwKPiAgCS5pc19scCA9IDEsIFwKPiAgCS5k aXNwbGF5Lmhhc19ob3RwbHVnID0gMSwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAxLCBcCj4g IAkuZW5naW5lX21hc2sgPSBCSVQoUkNTMCkgfCBCSVQoVkNTMCkgfCBCSVQoQkNTMCkgfCBCSVQo VkVDUzApLCBcCj4gIAkucGlwZV9tYXNrID0gQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJ VChQSVBFX0MpLCBcCj4gIAkuaGFzXzY0Yml0X3JlbG9jID0gMSwgXAo+IEBAIC03MzcsNiArNzM5 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jb2ZmZWVs YWtlX2d0M19pbmZvID0gewo+ICAJR0VOOV9GRUFUVVJFUywgXAo+ICAJR0VOKDEwKSwgXAo+ICAJ LmRkYl9zaXplID0gMTAyNCwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAxLCBcCj4gIAkuZGlz cGxheS5oYXNfZHNjID0gMSwgXAo+ICAJLmhhc19jb2hlcmVudF9nZ3R0ID0gZmFsc2UsIFwKPiAg CUdMS19DT0xPUlMKPiBAQCAtNzczLDYgKzc3Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2Fubm9ubGFrZV9pbmZvID0gewo+ICAJfSwgXAo+ICAJR0VO KDExKSwgXAo+ICAJLmRkYl9zaXplID0gMjA0OCwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAy LCBcCj4gIAkuaGFzX2xvZ2ljYWxfcmluZ19lbHNxID0gMSwgXAo+ICAJLmNvbG9yID0geyAuZGVn YW1tYV9sdXRfc2l6ZSA9IDMzLCAuZ2FtbWFfbHV0X3NpemUgPSAyNjIxNDUgfQo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBhNjA3ZWE1MjA4MjkuLmZiYTU3MzEwNjNkOCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03NzM0LDkgKzc3MzQsMTEgQEAgZW51bSB7 Cj4gICNkZWZpbmUgRElTUF9BUkJfQ1RMMglfTU1JTygweDQ1MDA0KQo+ICAjZGVmaW5lICBESVNQ X0RBVEFfUEFSVElUSU9OXzVfNgkoMSA8PCA2KQo+ICAjZGVmaW5lICBESVNQX0lQQ19FTkFCTEUJ CSgxIDw8IDMpCj4gLSNkZWZpbmUgREJVRl9DVEwJX01NSU8oMHg0NTAwOCkKPiAtI2RlZmluZSBE QlVGX0NUTF9TMQlfTU1JTygweDQ1MDA4KQo+IC0jZGVmaW5lIERCVUZfQ1RMX1MyCV9NTUlPKDB4 NDRGRTgpCj4gKyNkZWZpbmUgREJVRl9TMV9CSVQJCQlCSVQoMCkKPiArI2RlZmluZSBEQlVGX1My X0JJVAkJCUJJVCgxKQo+ICsjZGVmaW5lIERCVUZfQ1RMCQkJX01NSU8oMHg0NTAwOCkKPiArI2Rl ZmluZSBEQlVGX0NUTF9TMQkJCV9NTUlPKDB4NDUwMDgpCj4gKyNkZWZpbmUgREJVRl9DVExfUzIJ CQlfTU1JTygweDQ0RkU4KQo+ICAjZGVmaW5lICBEQlVGX1BPV0VSX1JFUVVFU1QJCSgxIDw8IDMx KQo+ICAjZGVmaW5lICBEQlVGX1BPV0VSX1NUQVRFCQkoMSA8PCAzMCkKPiAgI2RlZmluZSBHRU43 X01TR19DVEwJX01NSU8oMHg0NTAxMCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rldmlj ZV9pbmZvLmgKPiBpbmRleCA0YmRmOGE2Y2ZiNDcuLmJhMzRlMWE1YzU5MSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IEBAIC0xODAsNiArMTgwLDcgQEAg c3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAgCX0gZGlzcGxheTsKPiAgCj4gIAl1MTYgZGRi X3NpemU7IC8qIGluIGJsb2NrcyAqLwo+ICsJdTggc3VwcG9ydGVkX3NsaWNlczsgLyogbnVtYmVy IG9mIERCdWYgc2xpY2VzICovCj4gIAo+ICAJLyogUmVnaXN0ZXIgb2Zmc2V0cyBmb3IgdGhlIHZh cmlvdXMgZGlzcGxheSBwaXBlcyBhbmQgdHJhbnNjb2RlcnMgKi8KPiAgCWludCBwaXBlX29mZnNl dHNbSTkxNV9NQVhfVFJBTlNDT0RFUlNdOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4 IDJkMzg5ZTQzN2U4Ny4uMWVhODFhYjkyNDI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gQEAgLTM1ODYsMjQgKzM1ODYsMjAgQEAgYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIF9pbGtfZGlzYWJsZV9scF93bShkZXZfcHJpdiwg V01fRElSVFlfTFBfQUxMKTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4IGludGVsX2VuYWJsZWRfZGJ1 Zl9zbGljZXNfbnVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGlj IHU4IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gLQl1OCBlbmFibGVkX3NsaWNlczsKPiAtCj4gLQkvKiBTbGljZSAxIHdp bGwgYWx3YXlzIGJlIGVuYWJsZWQgKi8KPiAtCWVuYWJsZWRfc2xpY2VzID0gMTsKPiArCXU4IGVu YWJsZWRfc2xpY2VzID0gMDsKPiAgCj4gIAkvKiBHZW4gcHJpb3IgdG8gR0VOMTEgaGF2ZSBvbmx5 IG9uZSBEQnVmIHNsaWNlICovCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+IC0J CXJldHVybiBlbmFibGVkX3NsaWNlczsKPiArCQlyZXR1cm4gREJVRl9TMV9CSVQ7Cj4gIAo+IC0J LyoKPiAtCSAqIEZJWE1FOiBmb3Igbm93IHdlJ2xsIG9ubHkgZXZlciB1c2UgMSBzbGljZTsgcHJl dGVuZCB0aGF0IHdlIGhhdmUKPiAtCSAqIG9ubHkgdGhhdCAxIHNsaWNlIGVuYWJsZWQgdW50aWwg d2UgaGF2ZSBhIHByb3BlciB3YXkgZm9yIG9uLWRlbWFuZAo+IC0JICogdG9nZ2xpbmcgb2YgdGhl IHNlY29uZCBzbGljZS4KPiAtCSAqLwo+IC0JaWYgKDAgJiYgSTkxNV9SRUFEKERCVUZfQ1RMX1My KSAmIERCVUZfUE9XRVJfU1RBVEUpCj4gLQkJZW5hYmxlZF9zbGljZXMrKzsKPiArCS8qIENoZWNr IGlmIHNlY29uZCBEQnVmIHNsaWNlIGlzIGVuYWJsZWQgKi8KPiArCWlmIChJOTE1X1JFQUQoREJV Rl9DVExfUzEpICYgREJVRl9QT1dFUl9TVEFURSkKPiArCQllbmFibGVkX3NsaWNlcyB8PSBEQlVG X1MxX0JJVDsKPiArCj4gKwlpZiAoSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJf U1RBVEUpCj4gKwkJZW5hYmxlZF9zbGljZXMgfD0gREJVRl9TMl9CSVQ7Cj4gIAo+ICAJcmV0dXJu IGVuYWJsZWRfc2xpY2VzOwo+ICB9Cj4gQEAgLTM4MTIsMzYgKzM4MDgsMzggQEAgc3RhdGljIHUx NiBpbnRlbF9nZXRfZGRiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJCQkgICAgICBjb25zdCBpbnQgbnVtX2FjdGl2ZSwKPiAgCQkJICAgICAgc3RydWN0IHNrbF9k ZGJfYWxsb2NhdGlvbiAqZGRiKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZTsKPiAtCXU2NCB0b3RhbF9kYXRhX2J3Owo+ICAJdTE2IGRkYl9zaXpl ID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmRkYl9zaXplOwo+IC0KPiAgCVdBUk5fT04oZGRiX3Np emUgPT0gMCk7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKPiAgCQlyZXR1 cm4gZGRiX3NpemUgLSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlwYXNzIHBhdGggYWxsb2NhdGlvbiAq Lwo+ICAKPiAtCWFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsK PiAtCXRvdGFsX2RhdGFfYncgPSB0b3RhbF9kYXRhX3JhdGUgKiBkcm1fbW9kZV92cmVmcmVzaChh ZGp1c3RlZF9tb2RlKTsKPiArCXJldHVybiBkZGJfc2l6ZTsKPiArfQo+ICAKPiAtCS8qCj4gLQkg KiAxMkdCL3MgaXMgbWF4aW11bSBCVyBzdXBwb3J0ZWQgYnkgc2luZ2xlIERCdWYgc2xpY2UuCj4g LQkgKgo+IC0JICogRklYTUUgZGJ1ZiBzbGljZSBjb2RlIGlzIGJyb2tlbjoKPiAtCSAqIC0gbXVz dCB3YWl0IGZvciBwbGFuZXMgdG8gc3RvcCB1c2luZyB0aGUgc2xpY2UgYmVmb3JlIHBvd2VyaW5n IGl0IG9mZgo+IC0JICogLSBwbGFuZSBzdHJhZGRsaW5nIGJvdGggc2xpY2VzIGlzIGlsbGVnYWwg aW4gbXVsdGktcGlwZSBzY2VuYXJpb3MKPiAtCSAqIC0gc2hvdWxkIHZhbGlkYXRlIHdlIHN0YXkg d2l0aGluIHRoZSBodyBiYW5kd2lkdGggbGltaXRzCj4gLQkgKi8KPiAtCWlmICgwICYmIChudW1f YWN0aXZlID4gMSB8fCB0b3RhbF9kYXRhX2J3ID49IEdCcHMoMTIpKSkgewo+IC0JCWRkYi0+ZW5h YmxlZF9zbGljZXMgPSAyOwo+IC0JfSBlbHNlIHsKPiAtCQlkZGItPmVuYWJsZWRfc2xpY2VzID0g MTsKPiAtCQlkZGJfc2l6ZSAvPSAyOwo+IC0JfQo+ICsvKgo+ICsgKiBDYWxjdWxhdGUgaW5pdGlh bCBEQnVmIHNsaWNlIG9mZnNldCwgYmFzZWQgb24gc2xpY2Ugc2l6ZQo+ICsgKiBhbmQgbWFzayhp LmUgaWYgc2xpY2Ugc2l6ZSBpcyAxMDI0IGFuZCBzZWNvbmQgc2xpY2UgaXMgZW5hYmxlZAo+ICsg KiBvZmZzZXQgd291bGQgYmUgMTAyNCkKPiArICovCj4gK3N0YXRpYyB1MzIgc2tsX2dldF9maXJz dF9kYnVmX3NsaWNlX29mZnNldCh1MzIgZGJ1Zl9zbGljZV9tYXNrLAo+ICsJCQkJCSAgIHUzMiBz bGljZV9zaXplLCB1MzIgZGRiX3NpemUpCj4gK3sKPiArCXUzMiBvZmZzZXQgPSAwOwo+ICAKPiAt CXJldHVybiBkZGJfc2l6ZTsKPiArCWlmICghZGJ1Zl9zbGljZV9tYXNrKQo+ICsJCXJldHVybiAw Owo+ICsKPiArCW9mZnNldCA9IChmZnMoZGJ1Zl9zbGljZV9tYXNrKSAtIDEpICogc2xpY2Vfc2l6 ZTsKPiArCj4gKwlXQVJOX09OKG9mZnNldCA+PSBkZGJfc2l6ZSk7Cj4gKwlyZXR1cm4gb2Zmc2V0 Owo+ICB9Cj4gIAo+ICtzdGF0aWMgdTMyIGk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICAgIGludCBwaXBlLCB1MzIg YWN0aXZlX3BpcGVzLAo+ICsJCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+ICsKPiAgc3RhdGljIHZvaWQKPiAgc2tsX2RkYl9nZXRfcGlwZV9hbGxv Y2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMzg1Nyw3 ICszODU1LDE0IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJdTMyIHBpcGVfd2lkdGggPSAwLCB0b3RhbF93 aWR0aCA9IDAsIHdpZHRoX2JlZm9yZV9waXBlID0gMDsKPiAgCWVudW0gcGlwZSBmb3JfcGlwZSA9 IHRvX2ludGVsX2NydGMoZm9yX2NydGMpLT5waXBlOwo+ICAJdTE2IGRkYl9zaXplOwo+ICsJdTMy IGRkYl9yYW5nZV9zaXplOwo+ICAJdTMyIGk7Cj4gKwl1MzIgZGJ1Zl9zbGljZV9tYXNrOwo+ICsJ dTMyIGFjdGl2ZV9waXBlczsKPiArCXUzMiBvZmZzZXQ7Cj4gKwl1MzIgc2xpY2Vfc2l6ZTsKPiAr CXUzMiB0b3RhbF9zbGljZV9tYXNrOwo+ICsJdTMyIHN0YXJ0LCBlbmQ7Cj4gIAo+ICAJaWYgKFdB Uk5fT04oIXN0YXRlKSB8fCAhY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJYWxsb2MtPnN0 YXJ0ID0gMDsKPiBAQCAtMzg2NiwxNCArMzg3MSwyMyBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9j YXRpb25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlyZXR1 cm47Cj4gIAl9Cj4gIAo+IC0JaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKQo+ ICsJaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKSB7Cj4gIAkJKm51bV9hY3Rp dmUgPSBod2VpZ2h0OChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKPiAtCWVsc2UKPiArCQlh Y3RpdmVfcGlwZXMgPSBpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVzOwo+ICsJfSBlbHNlIHsKPiAg CQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQ4KGRldl9wcml2LT5hY3RpdmVfcGlwZXMpOwo+ICsJCWFj dGl2ZV9waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfcGlwZXM7Cj4gKwl9Cj4gIAo+ICAJZGRiX3Np emUgPSBpbnRlbF9nZXRfZGRiX3NpemUoZGV2X3ByaXYsIGNydGNfc3RhdGUsIHRvdGFsX2RhdGFf cmF0ZSwKPiAgCQkJCSAgICAgICpudW1fYWN0aXZlLCBkZGIpOwo+ICAKPiArCURSTV9ERUJVR19L TVMoIkdvdCB0b3RhbCBkZGIgc2l6ZSAlZFxuIiwgZGRiX3NpemUpOwo+ICsKPiArCXNsaWNlX3Np emUgPSBkZGJfc2l6ZSAvIElOVEVMX0lORk8oZGV2X3ByaXYpLT5zdXBwb3J0ZWRfc2xpY2VzOwo+ ICsKPiArCURSTV9ERUJVR19LTVMoIkdvdCBEQnVmIHNsaWNlIHNpemUgJWRcbiIsIHNsaWNlX3Np emUpOwo+ICsKPiAgCS8qCj4gIAkgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2UgdGhlIGFj dGl2ZSBDUlRDJ3Mgb3IgdGhlcmUgaXMgbm8KPiAgCSAqIG1vZGVzZXQgcmVxdWVzdCwgdGhlbiB0 aGVyZSdzIG5vIG5lZWQgdG8gcmVjYWxjdWxhdGU7Cj4gQEAgLTM4OTEsMjAgKzM5MDUsNzAgQEAg c2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiArCS8qCj4gKwkgKiBHZXQgYWxs b3dlZCBEQnVmIHNsaWNlcyBmb3IgY29ycmVzcG9uZGVudCBwaXBlIGFuZCBwbGF0Zm9ybS4KPiAr CSAqLwo+ICsJZGJ1Zl9zbGljZV9tYXNrID0gaTkxNV9nZXRfYWxsb3dlZF9kYnVmX21hc2soZGV2 X3ByaXYsIGZvcl9waXBlLAo+ICsJCQkJCQkgICAgIGFjdGl2ZV9waXBlcywgY3J0Y19zdGF0ZSk7 Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiREJ1ZiBzbGljZSBtYXNrICV4IHBpcGUgJWQgYWN0aXZl IHBpcGVzICV4XG4iLAo+ICsJCSAgICAgIGRidWZfc2xpY2VfbWFzaywKPiArCQkgICAgICBmb3Jf cGlwZSwgYWN0aXZlX3BpcGVzKTsKPiArCj4gKwkvKgo+ICsJICogRmlndXJlIG91dCBhdCB3aGlj aCBEQnVmIHNsaWNlIHdlIHN0YXJ0LCBpLmUgaWYgd2Ugc3RhcnQgYXQgRGJ1ZiBTMgo+ICsJICog YW5kIHNsaWNlIHNpemUgaXMgMTAyNCwgdGhlIG9mZnNldCB3b3VsZCBiZSAxMDI0Cj4gKwkgKi8K PiArCW9mZnNldCA9IHNrbF9nZXRfZmlyc3RfZGJ1Zl9zbGljZV9vZmZzZXQoZGJ1Zl9zbGljZV9t YXNrLAo+ICsJCQkJCQkgc2xpY2Vfc2l6ZSwgZGRiX3NpemUpOwo+ICsKPiArCS8qCj4gKwkgKiBG aWd1cmUgb3V0IHRvdGFsIHNpemUgb2YgYWxsb3dlZCBEQnVmIHNsaWNlcywgd2hpY2ggaXMgYmFz aWNhbGx5Cj4gKwkgKiBhIG51bWJlciBvZiBhbGxvd2VkIHNsaWNlcyBmb3IgdGhhdCBwaXBlIG11 bHRpcGxpZWQgYnkgc2xpY2Ugc2l6ZS4KPiArCSAqIEluc2lkZSBvZiB0aGlzCj4gKwkgKiByYW5n ZSBkZGIgZW50cmllcyBhcmUgc3RpbGwgYWxsb2NhdGVkIGluIHByb3BvcnRpb24gdG8gZGlzcGxh eSB3aWR0aC4KPiArCSAqLwo+ICsJZGRiX3JhbmdlX3NpemUgPSBod2VpZ2h0OChkYnVmX3NsaWNl X21hc2spICogc2xpY2Vfc2l6ZTsKPiArCj4gIAkvKgo+ICAJICogV2F0ZXJtYXJrL2RkYiByZXF1 aXJlbWVudCBoaWdobHkgZGVwZW5kcyB1cG9uIHdpZHRoIG9mIHRoZQo+ICAJICogZnJhbWVidWZm ZXIsIFNvIGluc3RlYWQgb2YgYWxsb2NhdGluZyBEREIgZXF1YWxseSBhbW9uZyBwaXBlcwo+ICAJ ICogZGlzdHJpYnV0ZSBEREIgYmFzZWQgb24gcmVzb2x1dGlvbi93aWR0aCBvZiB0aGUgZGlzcGxh eS4KPiAgCSAqLwo+ICsJdG90YWxfc2xpY2VfbWFzayA9IGRidWZfc2xpY2VfbWFzazsKPiAgCWZv cl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBjcnRjX3N0 YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQo+ICAJCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCQllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7Cj4gIAkJaW50IGhkaXNwbGF5LCB2ZGlzcGxheTsKPiArCQl1MzIg cGlwZV9kYnVmX3NsaWNlX21hc2sgPSBcCj4gKwkJCWk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNr KGRldl9wcml2LAo+ICsJCQkJCQlwaXBlLAo+ICsJCQkJCQlhY3RpdmVfcGlwZXMsCj4gKwkJCQkJ CWNydGNfc3RhdGUpOwo+ICAKPiAgCQlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKPiAgCQkJ Y29udGludWU7Cj4gIAo+ICsJCS8qCj4gKwkJICogQWNjb3JkaW5nIHRvIEJTcGVjIHBpcGUgY2Fu IHNoYXJlIG9uZSBkYnVmIHNsaWNlIHdpdGggYW5vdGhlcgo+ICsJCSAqIHBpcGVzIG9yIHBpcGUg Y2FuIHVzZSBtdWx0aXBsZSBkYnVmcywgaW4gYm90aCBjYXNlcyB3ZQo+ICsJCSAqIGFjY291bnQg Zm9yIG90aGVyIHBpcGVzIG9ubHkgaWYgdGhleSBoYXZlIGV4YWN0bHkgc2FtZSBtYXNrLgo+ICsJ CSAqIEhvd2V2ZXIgd2UgbmVlZCB0byBhY2NvdW50IGhvdyBtYW55IHNsaWNlcyB3ZSBzaG91bGQg ZW5hYmxlCj4gKwkJICogaW4gdG90YWwuCj4gKwkJICovCj4gKwkJdG90YWxfc2xpY2VfbWFzayB8 PSBwaXBlX2RidWZfc2xpY2VfbWFzazsKPiArCj4gKwkJLyoKPiArCQkgKiBEbyBub3QgYWNjb3Vu dCBwaXBlcyB1c2luZyBvdGhlciBzbGljZSBzZXRzCj4gKwkJICogbHVja2lseSBhcyBvZiBjdXJy ZW50IEJTcGVjIHNsaWNlIHNldHMgZG8gbm90IHBhcnRpYWxseQo+ICsJCSAqIGludGVyc2VjdChw aXBlcyBzaGFyZSBlaXRoZXIgc2FtZSBvbmUgc2xpY2Ugb3Igc2FtZSBzbGljZSBzZXQKPiArCQkg KiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBlbm91Z2ggdG8gY2hlY2sg Zm9yCj4gKwkJICogZXF1YWxpdHkgZm9yIG5vdy4KPiArCQkgKi8KPiArCQlpZiAoZGJ1Zl9zbGlj ZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQo+ICsJCQljb250aW51ZTsKPiArCj4gIAkJ ZHJtX21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxh eSk7Cj4gIAkJdG90YWxfd2lkdGggKz0gaGRpc3BsYXk7Cj4gIAo+IEBAIC0zOTE0LDggKzM5Nzgs MTkgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCXBpcGVfd2lkdGggPSBoZGlzcGxheTsKPiAgCX0KPiAg Cj4gLQlhbGxvYy0+c3RhcnQgPSBkZGJfc2l6ZSAqIHdpZHRoX2JlZm9yZV9waXBlIC8gdG90YWxf d2lkdGg7Cj4gLQlhbGxvYy0+ZW5kID0gZGRiX3NpemUgKiAod2lkdGhfYmVmb3JlX3BpcGUgKyBw aXBlX3dpZHRoKSAvIHRvdGFsX3dpZHRoOwo+ICsJZGRiLT5lbmFibGVkX3NsaWNlcyA9IHRvdGFs X3NsaWNlX21hc2s7Cj4gKwo+ICsJc3RhcnQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdpZHRoX2JlZm9y ZV9waXBlIC8gdG90YWxfd2lkdGg7Cj4gKwllbmQgPSBkZGJfcmFuZ2Vfc2l6ZSAqICh3aWR0aF9i ZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxfd2lkdGg7Cj4gKwo+ICsJYWxsb2MtPnN0 YXJ0ID0gb2Zmc2V0ICsgc3RhcnQ7Cj4gKwlhbGxvYy0+ZW5kID0gb2Zmc2V0ICsgZW5kOwo+ICsK PiArCURSTV9ERUJVR19LTVMoIlBpcGUgJWQgZGRiICVkLSVkXG4iLCBmb3JfcGlwZSwKPiArCQkg ICAgICBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQpOwo+ICsJRFJNX0RFQlVHX0tNUygiRW5hYmxl ZCBkZGIgc2xpY2VzIG1hc2sgJXggbnVtIHN1cHBvcnRlZCAlZFxuIiwKPiArCQkgICAgICBkZGIt PmVuYWJsZWRfc2xpY2VzLAo+ICsJCSAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5zdXBwb3J0 ZWRfc2xpY2VzKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBza2xfY29tcHV0ZV93bV9wYXJhbXMo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAgLTQwMzYsNyAr NDExMSw4IEBAIHZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8q IG91dCAqLykKPiAgewo+IC0JZGRiLT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2VuYWJsZWRfZGJ1 Zl9zbGljZXNfbnVtKGRldl9wcml2KTsKPiArCWRkYi0+ZW5hYmxlZF9zbGljZXMgPSBpbnRlbF9l bmFibGVkX2RidWZfc2xpY2VzKGRldl9wcml2KTsKPiArCURSTV9ERUJVR19LTVMoIkdvdCBodyBk YnVmIHNsaWNlcyBtYXNrICV4XG4iLCBkZGItPmVuYWJsZWRfc2xpY2VzKTsKPiAgfQo+ICAKPiAg LyoKPiBAQCAtNDE2NCw2ICs0MjQwLDI0MSBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFf cmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJldHVybiB0b3Rh bF9kYXRhX3JhdGU7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1aW50X2ZpeGVkXzE2XzE2X3QKPiAraWNs X3BpcGVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiArewo+ICsJdTMyIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oOwo+ICsJdWlu dF9maXhlZF8xNl8xNl90IGZwX3dfcmF0aW8sIGZwX2hfcmF0aW87Cj4gKwl1aW50X2ZpeGVkXzE2 XzE2X3QgZG93bnNjYWxlX2gsIGRvd25zY2FsZV93Owo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsK PiArCj4gKwlzcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gKwlzcmNfaCA9IGNydGNf c3RhdGUtPnBpcGVfc3JjX2g7Cj4gKwlkc3RfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3Bs YXk7Cj4gKwlkc3RfaCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4gKwo+ICsJZnBf d19yYXRpbyA9IGRpdl9maXhlZDE2KHNyY193LCBkc3Rfdyk7Cj4gKwlmcF9oX3JhdGlvID0gZGl2 X2ZpeGVkMTYoc3JjX2gsIGRzdF9oKTsKPiArCWRvd25zY2FsZV93ID0gbWF4X2ZpeGVkMTYoZnBf d19yYXRpbywgdTMyX3RvX2ZpeGVkMTYoMSkpOwo+ICsJZG93bnNjYWxlX2ggPSBtYXhfZml4ZWQx NihmcF9oX3JhdGlvLCB1MzJfdG9fZml4ZWQxNigxKSk7Cj4gKwo+ICsJcmV0dXJuIG11bF9maXhl ZDE2KGRvd25zY2FsZV93LCBkb3duc2NhbGVfaCk7Cj4gK30KPiArCj4gK3VpbnRfZml4ZWRfMTZf MTZfdAo+ICtpY2xfZ2V0X3BpcGVfcmF0aW8oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICsJY29uc3Qg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqZHJtX3BsYW5lX3N0YXRlOwo+ICsJdWludF9maXhlZF8x Nl8xNl90IHBpcGVfZG93bnNjYWxlLCBwaXBlX3JhdGlvOwo+ICsJdWludF9maXhlZF8xNl8xNl90 IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICsKPiArCWlm ICghY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCj4gKwkJcmV0dXJuIG1heF9kb3duc2NhbGU7Cj4g Kwo+ICsJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBk cm1fcGxhbmVfc3RhdGUsICZjcnRjX3N0YXRlLT51YXBpKSB7Cj4gKwkJdWludF9maXhlZF8xNl8x Nl90IHBsYW5lX2Rvd25zY2FsZTsKPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlID0KPiArCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3BsYW5lX3N0YXRl KTsKPiArCj4gKwkJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5l X3N0YXRlKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXBsYW5lX2Rvd25zY2FsZSA9IHNrbF9w bGFuZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsKPiArCj4gKwkJ RFJNX0RFQlVHX0tNUygiUGxhbmUgJWQgZG93bnNjYWxlIGFtb3VudCAlZC4lZFxuIiwKPiArCQkJ ICAgICAgdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZCwKPiArCQkJICAgICAgcGxhbmVfZG93bnNj YWxlLnZhbCA+PiAxNiwKPiArCQkJICAgICAgcGxhbmVfZG93bnNjYWxlLnZhbCAmIDB4ZmZmZik7 Cj4gKwo+ICsJCW1heF9kb3duc2NhbGUgPSBtYXhfZml4ZWQxNihwbGFuZV9kb3duc2NhbGUsIG1h eF9kb3duc2NhbGUpOwo+ICsJfQo+ICsKPiArCj4gKwlwaXBlX2Rvd25zY2FsZSA9IGljbF9waXBl X2Rvd25zY2FsZV9hbW91bnQoY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUGlw ZSAlZCBkb3duc2NhbGUgYW1vdW50ICVkLiVkXG4iLAo+ICsJCSAgICAgICBjcnRjLT5waXBlLCBw aXBlX2Rvd25zY2FsZS52YWwgPj4gMTYsCj4gKwkJICAgICAgIHBpcGVfZG93bnNjYWxlLnZhbCAm IDB4ZmZmZik7Cj4gKwo+ICsJcGlwZV9kb3duc2NhbGUgPSBtdWxfZml4ZWQxNihwaXBlX2Rvd25z Y2FsZSwgbWF4X2Rvd25zY2FsZSk7Cj4gKwo+ICsJLyoKPiArCSAqIENvbnZlcnQgcmVzdWx0IHRv IHBlcmNlbnRhZ2U6IGdldCB0aGUgYWN0dWFsIHJhdGlvIGluc3RlYWQgb2YgcmF0ZSwKPiArCSAq IHRoZW4gbXVsdGlwbHkgYnkgMTAwIHRvIGdldCBwZXJjZW50YWdlLgo+ICsJICovCj4gKwlwaXBl X3JhdGlvID0gdTMyX3RvX2ZpeGVkMTYoMTAwICogZGl2X3JvdW5kX3VwX3UzMl9maXhlZDE2KDEs IHBpcGVfZG93bnNjYWxlKSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUGlwZSAlZCByYXRpbyAl ZC4lZFxuIiwgY3J0Yy0+cGlwZSwKPiArCQkgICAgICBwaXBlX3JhdGlvLnZhbCA+PiAxNiwgcGlw ZV9yYXRpby52YWwgJiAweGZmZmYpOwo+ICsKPiArCXJldHVybiBwaXBlX3JhdGlvOwo+ICt9Cj4g Kwo+ICtzdHJ1Y3QgZGJ1Zl9zbGljZV9jb25mX2VudHJ5IHsKPiArCXUzMiBkYnVmX21hc2tbSTkx NV9NQVhfUElQRVNdOwo+ICsJdTMyIGFjdGl2ZV9waXBlczsKPiArfTsKPiArCj4gKwo+ICsjZGVm aW5lIElDTF9QSVBFX0FfREJVRl9TTElDRVMoREJ1ZjEpICBcCj4gKwl7IHsgREJ1ZjEsIDAsIDAs IDAgfSwgQklUKFBJUEVfQSkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0JfREJVRl9TTElDRVMoREJ1 ZjEpICBcCj4gKwl7IHsgMCwgREJ1ZjEsIDAsIDAgfSwgQklUKFBJUEVfQikgfQo+ICsjZGVmaW5l IElDTF9QSVBFX0NfREJVRl9TTElDRVMoREJ1ZjEpICBcCj4gKwl7IHsgMCwgMCwgREJ1ZjEsIDAg fSwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0RfREJVRl9TTElDRVMoREJ1ZjEp ICBcCj4gKwl7IHsgMCwgMCwgMCwgREJ1ZjEgfSwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElD TF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgREJ1ZjEsIERC dWYyLCAwLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfQo+ICsjZGVmaW5lIElDTF9Q SVBFX0JDX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgMCwgREJ1ZjEsIERC dWYyLCAwIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBF X0JEX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgMCwgREJ1ZjEsIDAsIERC dWYyIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FD X0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgREJ1ZjEsIDAsIERCdWYyLCAw IH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FEX0RC VUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgREJ1ZjEsIDAsIDAsIERCdWYyIH0s IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0NEX0RCVUZf U0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgMCwgMCwgREJ1ZjEsIERCdWYyIH0sIEJJ VChQSVBFX0MpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FCQ19EQlVGX1NM SUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCBEQnVmMiwgREJ1ZjMs IDAgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0MpIH0KPiArI2RlZmlu ZSBJQ0xfUElQRV9BQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyLCBEQnVmMykgIFwKPiArCXsg eyBEQnVmMSwgMCwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQykgfCBC SVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQkNEX0RCVUZfU0xJQ0VTKERCdWYxLCBE QnVmMiwgREJ1ZjMpICBcCj4gKwl7IHsgMCwgREJ1ZjEsIERCdWYyLCBEQnVmMyB9LCBCSVQoUElQ RV9CKSB8IEJJVChQSVBFX0MpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FC RF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCBEQnVm MiwgMCwgREJ1ZjMgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0QpIH0K PiArI2RlZmluZSBJQ0xfUElQRV9BQkNfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyLCBEQnVmMykg IFwKPiArCXsgeyBEQnVmMSwgREJ1ZjIsIERCdWYzLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJ UEVfQikgfCBCSVQoUElQRV9DKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJDRF9EQlVGX1NMSUNF UyhEQnVmMSwgREJ1ZjIsIERCdWYzLCBEQnVmNCkgIFwKPiArCXsgeyBEQnVmMSwgREJ1ZjIsIERC dWYzLCBEQnVmNCB9LCBCSVQoUElQRV9BKSB8IEJJVChQSVBFX0IpIHwgXAo+ICsJCQkJCSAgQklU KFBJUEVfQykgfCBCSVQoUElQRV9EKSB9Cj4gKwo+ICsvKgo+ICsgKiBUYWJsZSB0YWtlbiBmcm9t IEJzcGVjIDEyNzE2Cj4gKyAqIFBpcGVzIGRvIGhhdmUgc29tZSBwcmVmZXJyZWQgREJ1ZiBzbGlj ZSBhZmZpbml0eSwKPiArICogcGx1cyB0aGVyZSBhcmUgc29tZSBoYXJkY29kZWQgcmVxdWlyZW1l bnRzIG9uIGhvdwo+ICsgKiB0aG9zZSBzaG91bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlw ZSBzY2VuYXJpb3MuCj4gKyAqIEZvciBtb3JlIERCdWYgc2xpY2VzIGFsZ29yaXRobSBjYW4gZ2V0 IGV2ZW4gbW9yZSBtZXNzeQo+ICsgKiBhbmQgbGVzcyByZWFkYWJsZSwgc28gZGVjaWRlZCB0byB1 c2UgYSB0YWJsZSBhbG1vc3QKPiArICogYXMgaXMgZnJvbSBCU3BlYyBpdHNlbGYgLSB0aGF0IHdh eSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKPiArICogdG8gY29tcGFyZSwgY2hhbmdlIGFuZCBjaGVj ay4KPiArICovCj4gK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkgaWNsX2FsbG93ZWRfZGJ1 ZnNbXSA9IHsKPiAreyB7IDAsIDAsIDAsIDAgfSwgMCB9LAo+ICtJQ0xfUElQRV9BX0RCVUZfU0xJ Q0VTKERCVUZfUzFfQklUIHwgREJVRl9TMl9CSVQpLCAgLyogcGlwZSByYXRpbyA8IDg4LjggKi8K PiArSUNMX1BJUEVfQV9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCksICAgICAgICAgICAgICAgIC8q IGZvciBwaXBlIHJhdGlvID49IDg4LjggKi8KPiArSUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhEQlVG X1MxX0JJVCB8IERCVUZfUzJfQklUKSwgIC8qIHBpcGUgcmF0aW8gPCA4OC44ICovCj4gK0lDTF9Q SVBFX0JfREJVRl9TTElDRVMoREJVRl9TMV9CSVQpLCAgICAgICAgICAgICAgICAvKiBmb3IgcGlw ZSByYXRpbyA+PSA4OC44ICovCj4gK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMV9CSVQg fCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLwo+ICtJQ0xfUElQRV9DX0RC VUZfU0xJQ0VTKERCVUZfUzJfQklUKSwgICAgICAgICAgICAgICAgLyogZm9yIHBpcGUgcmF0aW8g Pj0gODguOCAqLwo+ICtJQ0xfUElQRV9BQl9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9T Ml9CSVQpLAo+ICtJQ0xfUElQRV9BQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9C SVQpLAo+ICtJQ0xfUElQRV9CQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAo+ICtJQ0xfUElQRV9BQkNfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBE QlVGX1MyX0JJVCksCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVj IDQ5MjU1Cj4gKyAqIFBpcGVzIGRvIGhhdmUgc29tZSBwcmVmZXJyZWQgREJ1ZiBzbGljZSBhZmZp bml0eSwKPiArICogcGx1cyB0aGVyZSBhcmUgc29tZSBoYXJkY29kZWQgcmVxdWlyZW1lbnRzIG9u IGhvdwo+ICsgKiB0aG9zZSBzaG91bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlwZSBzY2Vu YXJpb3MuCj4gKyAqIEZvciBtb3JlIERCdWYgc2xpY2VzIGFsZ29yaXRobSBjYW4gZ2V0IGV2ZW4g bW9yZSBtZXNzeQo+ICsgKiBhbmQgbGVzcyByZWFkYWJsZSwgc28gZGVjaWRlZCB0byB1c2UgYSB0 YWJsZSBhbG1vc3QKPiArICogYXMgaXMgZnJvbSBCU3BlYyBpdHNlbGYgLSB0aGF0IHdheSBpdCBp cyBhdCBsZWFzdCBlYXNpZXIKPiArICogdG8gY29tcGFyZSwgY2hhbmdlIGFuZCBjaGVjay4KPiAr ICovCj4gK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkgdGdsX2FsbG93ZWRfZGJ1ZnNbXSA9 IHsKPiAreyB7IDAsIDAsIDAsIDAgfSwgMCB9LAo+ICtJQ0xfUElQRV9BX0RCVUZfU0xJQ0VTKERC VUZfUzFfQklUIHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9CX0RCVUZfU0xJQ0VTKERCVUZf UzFfQklUIHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9DX0RCVUZfU0xJQ0VTKERCVUZfUzFf QklUIHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9EX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklU IHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9BQl9EQlVGX1NMSUNFUyhEQlVGX1MyX0JJVCwg REJVRl9TMV9CSVQpLAo+ICtJQ0xfUElQRV9BQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJV Rl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9CQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9T Ml9CSVQpLAo+ICtJQ0xfUElQRV9BRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9C SVQpLAo+ICtJQ0xfUElQRV9CRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAo+ICtJQ0xfUElQRV9DRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQpLAo+ ICtJQ0xfUElQRV9BQkRfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBEQlVG X1MyX0JJVCksCj4gK0lDTF9QSVBFX0FCQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9T MV9CSVQsIERCVUZfUzJfQklUKSwKPiArSUNMX1BJUEVfQUNEX0RCVUZfU0xJQ0VTKERCVUZfUzFf QklULCBEQlVGX1MyX0JJVCwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9CQ0RfREJVRl9TTElD RVMoREJVRl9TMV9CSVQsIERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0FC Q0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCwgREJV Rl9TMl9CSVQpLAo+ICt9Owo+ICsKPiArLyoKPiArICogVGhpcyBmdW5jdGlvbiBmaW5kcyBhbiBl bnRyeSB3aXRoIHNhbWUgZW5hYmxlZCBwaXBlIGNvbmZpZ3VyYXRpb24gYW5kCj4gKyAqIHJldHVy bnMgY29ycmVzcG9uZGVudCBEQnVmIHNsaWNlIG1hc2sgYXMgc3RhdGVkIGluIEJTcGVjIGZvciBw YXJ0aWN1bGFyCj4gKyAqIHBsYXRmb3JtLgo+ICsgKi8KPiArc3RhdGljIHUzMiBpY2xfZ2V0X2Fs bG93ZWRfZGJ1Zl9tYXNrKGludCBwaXBlLAo+ICsJCQkJICAgICB1MzIgYWN0aXZlX3BpcGVzLAo+ ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAr ewo+ICsJaW50IGk7Cj4gKwl1aW50X2ZpeGVkXzE2XzE2X3QgcGlwZV9yYXRpbzsKPiArCj4gKwkv Kgo+ICsJICogQ2FsY3VsYXRlIHBpcGUgcmF0aW8gYXMgc3RhdGVkIGluIEJTcGVjIDI4NjkyCj4g KwkgKi8KPiArCXBpcGVfcmF0aW8gPSBpY2xfZ2V0X3BpcGVfcmF0aW8oY3J0Y19zdGF0ZSk7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaWNsX2FsbG93ZWRfZGJ1ZnMpOyBpKysp IHsKPiArCQlpZiAoaWNsX2FsbG93ZWRfZGJ1ZnNbaV0uYWN0aXZlX3BpcGVzID09IGFjdGl2ZV9w aXBlcykgewo+ICsJCQlpZiAoaHdlaWdodDMyKGFjdGl2ZV9waXBlcykgPT0gMSkgewo+ICsJCQkJ LyoKPiArCQkJCSAqIEFjY29yZGluZyB0byBCU3BlYyAxMjcxNjogaWYgcmF0aW8gPj0gODguOAo+ ICsJCQkJICogYWx3YXlzIHVzZSBzaW5nbGUgZGJ1ZiBzbGljZS4KPiArCQkJCSAqLwo+ICsJCQkJ aWYgKHBpcGVfcmF0aW8udmFsID49IGRpdl9maXhlZDE2KDg4OCwgMTApLnZhbCkKPiArCQkJCQkr K2k7Cj4gKwkJCX0KPiArCQkJcmV0dXJuIGljbF9hbGxvd2VkX2RidWZzW2ldLmRidWZfbWFza1tw aXBlXTsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogVGhp cyBmdW5jdGlvbiBmaW5kcyBhbiBlbnRyeSB3aXRoIHNhbWUgZW5hYmxlZCBwaXBlIGNvbmZpZ3Vy YXRpb24gYW5kCj4gKyAqIHJldHVybnMgY29ycmVzcG9uZGVudCBEQnVmIHNsaWNlIG1hc2sgYXMg c3RhdGVkIGluIEJTcGVjIGZvciBwYXJ0aWN1bGFyCj4gKyAqIHBsYXRmb3JtLgo+ICsgKi8KPiAr c3RhdGljIHUzMiB0Z2xfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGludCBwaXBlLAo+ICsJCQkJICAg ICB1MzIgYWN0aXZlX3BpcGVzLAo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUodGdsX2FsbG93ZWRfZGJ1ZnMpOyBpKyspIHsKPiArCQlpZiAodGdsX2FsbG93 ZWRfZGJ1ZnNbaV0uYWN0aXZlX3BpcGVzID09IGFjdGl2ZV9waXBlcykKPiArCQkJcmV0dXJuIHRn bF9hbGxvd2VkX2RidWZzW2ldLmRidWZfbWFza1twaXBlXTsKPiArCX0KPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICt1MzIgaTkxNV9nZXRfYWxsb3dlZF9kYnVmX21hc2soc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICAgaW50IHBpcGUsIHUzMiBhY3RpdmVfcGlw ZXMsCj4gKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiArewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMTEpKQo+ICsJCXJldHVybiBpY2xfZ2V0 X2FsbG93ZWRfZGJ1Zl9tYXNrKHBpcGUsCj4gKwkJCQkJCSBhY3RpdmVfcGlwZXMsCj4gKwkJCQkJ CSBjcnRjX3N0YXRlKTsKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTIpKQo+ICsJCXJl dHVybiB0Z2xfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKHBpcGUsCj4gKwkJCQkJCSBhY3RpdmVfcGlw ZXMsCj4gKwkJCQkJCSBjcnRjX3N0YXRlKTsKPiArCS8qCj4gKwkgKiBGb3IgYW55dGhpbmcgZWxz ZSBqdXN0IHJldHVybiBvbmUgc2xpY2UgeWV0Lgo+ICsJICogU2hvdWxkIGJlIGV4dGVuZGVkIGZv ciBvdGhlciBwbGF0Zm9ybXMuCj4gKwkgKi8KPiArCXJldHVybiBEQlVGX1MxX0JJVDsKPiArfQo+ ICsKPiAgc3RhdGljIHU2NAo+ICBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSB1NjQgKnBsYW5lX2RhdGFf cmF0ZSkKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVy Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00E5DC432C0 for ; Mon, 18 Nov 2019 14:22:41 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CE3FE20748 for ; Mon, 18 Nov 2019 14:22:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CE3FE20748 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 67E0089A5E; Mon, 18 Nov 2019 14:22:39 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 19A8E899D5 for ; Mon, 18 Nov 2019 14:22:37 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Nov 2019 06:22:37 -0800 X-IronPort-AV: E=Sophos;i="5.68,320,1569308400"; d="scan'208";a="199982594" Received: from jnikula-mobl3.fi.intel.com (HELO localhost) ([10.237.66.161]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Nov 2019 06:22:34 -0800 From: Jani Nikula To: Stanislav Lisovskiy , intel-gfx@lists.freedesktop.org In-Reply-To: <20191114122449.26409-1-stanislav.lisovskiy@intel.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20191114122449.26409-1-stanislav.lisovskiy@intel.com> Date: Mon, 18 Nov 2019 16:22:31 +0200 Message-ID: <87h831z2l4.fsf@intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v7] drm/i915: Enable second dbuf slice for ICL and TGL X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191118142231.WlhcWDdhcDtqTMfYib9FzKfR1qMqpgYl7XRRNWTcY2Q@z> T24gVGh1LCAxNCBOb3YgMjAxOSwgU3RhbmlzbGF2IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292 c2tpeUBpbnRlbC5jb20+IHdyb3RlOgo+IEFsc28gaW1wbGVtZW50ZWQgYWxnb3JpdGhtIGZvciBj aG9vc2luZyBEQnVmIHNsaWNlIGNvbmZpZ3VyYXRpb24KPiBiYXNlZCBvbiBhY3RpdmUgcGlwZXMs IHBpcGUgcmF0aW8gYXMgc3RhdGVkIGluIEJTcGVjIDEyNzE2Lgo+Cj4gTm93IHBpcGUgYWxsb2Nh dGlvbiBzdGlsbCBzdGF5cyBwcm9wb3J0aW9uYWwgdG8gcGlwZSB3aWR0aCBhcyBiZWZvcmUsCj4g aG93ZXZlciB3aXRoaW4gYWxsb3dlZCBEQnVmIHNsaWNlIGZvciB0aGlzIHBhcnRpY3VsYXIgY29u ZmlndXJhdGlvbi4KPgo+IHYyOiBSZW1vdmUgdW5uZWVkZWQgY2hlY2sgZnJvbSBjb21taXQgYXMg ZGRiIGVuYWJsZWQgc2xpY2VzIG1pZ2h0Cj4gICAgIG5vdyBkaWZmZXIgZnJvbSBodyBzdGF0ZS4K Pgo+IHYzOiAtIEFkZGVkIG5ldyBmaWVsZCAic3VwcG9ydGVkX3NsaWNlcyIgdG8gZGRiIHRvIHNl cGFyYXRlIG1heAo+ICAgICAgIHN1cHBvcnRlZCBzbGljZXMgdnMgY3VycmVudGx5IGVuYWJsZWQs IHRvIGF2b2lkIGNvbmZ1c2lvbi4KPiAgICAgLSBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnRzIGFu ZCBjb2RlIHJlbGF0ZWQgdG8gREJ1ZihNYXR0aGV3IFJvcGVyKS4KPiAgICAgLSBTb21lIGNvZGUg c3R5bGUgYW5kIGxvbmcgbGluZSByZW1vdmFsKE1hdHRoZXcgUm9wZXIpLgo+ICAgICAtIEFkZGVk IFdBUk5fT04gdG8gbmV3IGRkYiByYW5nZSBvZmZzZXQgY2FsYyBmdW5jdGlvbihNYXR0aGV3IFJv cGVyKS4KPiAgICAgLSBSZW1vdmVkIHBsYXRmb3JtIHNwZWNpZmljIGNhbGwgdG8gY2FsYyBwaXBl IHJhdGlvIGZyb20gZGRiCj4gICAgICAgYWxsb2NhdGlvbiBmdW5jdGlvbiBhbmQgZml4ZWQgdGhl IHJldHVybiB2YWx1ZShNYXR0aGV3IFJvcGVyKQo+ICAgICAtIFJlZmFjdG9yZWQgREJVRiBzbGlj ZSBhbGxvY2F0aW9uIHRhYmxlIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkKPiAgICAgLSBBZGRlZCBE QlVGIHNsaWNlIGFsbG9jYXRpb24gZm9yIFRHTCBhcyB3ZWxsLgo+ICAgICAtIElDTChob3dldmVy IG5vdCBUR0wpIHNlZW1zIHRvIHZvbHVudGFyaWx5IGVuYWJsZSBzZWNvbmQgREJ1ZiBzbGljZQo+ ICAgICAgIGFmdGVyIHBtIHN1c3BlbmQvcmVzdW1lIGNhdXNpbmcgYSBtaXNtYXRjaCBmYWlsdXJl LCBiZWNhdXNlIHdlCj4gICAgICAgdXBkYXRlIERCdWYgc2xpY2VzIG9ubHkgaWYgd2UgZG8gYSBt b2Rlc2V0LCBob3dldmVyIHRoaXMgY2hlY2sKPiAgICAgICBpcyBkb25lIGFsd2F5cy4gRml4ZWQg aXQgdG8gYmUgZG9uZSBvbmx5IHdoZW4gbW9kZXNldCBmb3IgSUNMLgo+Cj4gdjQ6IC0gTm93IGVu YWJsZWQgc2xpY2VzIGlzIG5vdCBhY3R1YWxseSBhIG51bWJlciwgYnV0IGEgYml0bWFzaywKPiAg ICAgICBiZWNhdXNlIHdlIG1pZ2h0IG5lZWQgdG8gZW5hYmxlIHNlY29uZCBzbGljZSBvbmx5IGFu ZCBudW1iZXIKPiAgICAgICBvZiBzbGljZXMgd291bGQgc3RpbGwgMSBhbmQgdGhhdCBjdXJyZW50 IGNvZGUgZG9lc24ndCBhbGxvdy4KPiAgICAgLSBSZW1vdmUgcmVkdW5kYW50IGR1cGxpY2F0ZSBj b2RlIHRvIGhhdmUgc29tZSB1bmlmaWVkIHdheSBvZgo+ICAgICAgIGVuYWJsaW5nIGRidWYgc2xp Y2VzIGluc3RlYWQgb2YgaGFyZGNvZGluZy4KPgo+IHY1OiAtIEZpeCBmYWlsaW5nIGdlbjlfYXNz ZXJ0X2RidWZfZW5hYmxlZCBhcyBpdCB3YXMgbmFpdmVseSB0aGlua2luZwo+ICAgICAgIHRoYXQg d2UgaGF2ZSBvbmx5IG9uZSBEQlVGX0NUTCBzbGljZS4gTm93IGFub3RoZXIgdmVyc2lvbiBmb3IK PiAgICAgICBnZW4xMSB3aWxsIGNoZWNrIGJvdGggc2xpY2VzIGFzIG9ubHkgc2Vjb25kIG9uZSBj YW4gYmUgZW5hYmxlZCwKPiAgICAgICB0byBrZWVwIENJIGhhcHB5Lgo+Cj4gdjY6IC0gUmVtb3Zl ZCBlbmFibGVkIGRidWYgYXNzZXJ0aW9uIGNvbXBsZXRlbHkuIFByZXZpb3VzIGNvZGUKPiAgICAg ICB3YXMga2VlcGluZyBkYnVmIGVuYWJsZWQsIGV2ZW4oISkgd2hlbiBfZGJ1Zl9kaXNhYmxlIGlz IGNhbGxlZC4KPiAgICAgICBDdXJyZW50bHkgd2UgZW5hYmxlL2Rpc2FibGUgZGJ1ZiBzbGljZXMg YmFzZWQgb24gcmVxdXJlbWVudAo+ICAgICAgIHNvIG5vIHBvaW50IGluIGFzc2VydGluZyB0aGlz IGhlcmUuCj4gICAgIC0gUmVtb3ZlZCB1bm5lY2Vzc2FyeSBtb2Rlc2V0IGNoZWNrIGZyb20gdmVy aWZ5X3dtX3N0YXRlKE1hdHRoZXcgUm9wZXIpCj4gICAgIC0gU2xpY2VzIGludGVyc2VjdGlvbiBh ZnRlciB1bmlvbiBpcyBzYW1lIGFzIGZpbmFsIHJlc3VsdChNYXR0aGV3IFJvcGVyKQo+ICAgICAt IE1vdmVkIERCdWYgc2xpY2VzIHRvIGludGVsX2RldmljZV9pbmZvKE1hdHRoZXcgUm9wZXIpCj4g ICAgIC0gU29tZSBtYWNyb3MgYWRkZWQoTWF0dGhldyBSb3BlcikKPiAgICAgLSBkZGIgcmFuZ2Ug aXMgbm93IGFsd2F5cyBsZXNzIG9yIGVxdWFsIHRvIGRkYiBzaXplIC0gbm8gbmVlZCBmb3IgYWRk aXRpb25hbAo+ICAgICAgIGNoZWNrcyhwcmV2aW91c2x5IG5lZWRlZCBhcyB3ZSBoYWQgc29tZSBi YW5kd2lkdGggY2hlY2tzIGluIHRoZXJlIHdoaWNoCj4gICAgICAgY291bGQgInN1ZGRlbmx5IiBy ZXR1cm4gZGRiX3NpemUgc21hbGxlciB0aGFuIGl0IGlzLgo+Cj4gdjc6IE1pbm9yIGNvc3RlbWlj IGNoYW5nZXM6Cj4gICAgIC0gQ2hhbmdlZCBpY2xfZGJ1Zl9zbGljZXNfcmVzdG9yZSBuYW1lIHRv IGljbF9wcm9ncmFtX2RidWZfc2xpY2VzCj4gICAgICAgYXMgaXQgbW9yZSBjb3JyZXNwb25kcyB0 byB0aGUgYWN0dWFsIGZ1bmN0aW9uYWxpdHkuCj4gICAgIC0gU29tZSBzaW1wbGlmaWNhdGlvbiB3 aXRoIHN1cHBvcnRlZCBzbGljZXMgZm9yIEJYVCBhbmQgR0xLCj4gICAgIC0gc2tsX3BpcGVfZG93 bnNjYWxlX2Ftb3VudCAtPiBpY2xfcGlwZV9kb3duc2NhbGVfYW1vdW50IGFzCj4gICAgICAgdGhp cyBpcyBub3QgdXNlZCBmb3Igc2tsIGFueW1vcmUuCj4gICAgIC0gQ2hhbmdlZCBEQnVmIHNsaWNl IGFzc2lnbm1lbnQgb3JkZXIgZm9yIFRHTCBjYXNlCj4KPiBSZXZpZXdlZC1ieTogTWF0dGhldyBS b3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNs YXYgTGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiBDYzogTWF0dGhl dyBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGludGVsLmNvbT4KPiBDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5hdXNt dXNAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYyAgfCAgMjYgKy0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV9wb3dlci5jICAgIHwgIDk4ICsrLS0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfcG93ZXIuaCAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgICAgICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCAgICAgICAgICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RldmljZV9pbmZvLmggICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgICAgICAgICAgICAgICB8IDM4NyArKysrKysrKysrKysrKysrLS0KPiAgOSBmaWxlcyBj aGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQoKVGhpcyBpcyBhIHJh dGhlciBiaWcgcGF0Y2gsIGFuZCB0aGF0J3Mgb25lIG9mIHRoZSBmZXcgdGhpbmdzIHdlIGNhbid0 CmZpeCBhZnRlciBjb21taXR0aW5nLgoKSWYgdGhlcmUncyBhIGJ1ZywgYnkgb3VyIHJhdGUgb2Yg Y2hhbmdlIHRoaXMgdHVybnMgcHJhY3RpY2FsbHkKdW4tcmV2ZXJ0aWJsZSBpbiBhIG1hdHRlciBv ZiB3ZWVrcyBkdWUgdG8gY29uZmxpY3RzLiBJZiB0aGVyZSdzIGEKYmlzZWN0ZWQgcmVncmVzc2lv biwgYW5kIHRoaXMgaXMgdGhlIHJlZ3Jlc3NpbmcgY29tbWl0LCB3aGF0IGFyZSBvdXIKY2hhbmNl cyBvZiBpZGVudGlmeWluZyB0aGUgYnVnIGJhc2VkIG9uIHRoZSBzaGExIGFsb25lPyBDYW4ndCBy ZXZlcnQgYW5kCmNhbid0IGltbWVkaWF0ZWx5IHNwb3QgdGhlIGJ1Zy9maXggaXMgYSBiYWQgY29t YmluYXRpb24gdG8gaGF2ZS4KCkFsc28gd2UgaGF2ZSB0aGlzIG5pY2UgQ0kgaW5mcmFzdHJ1Y3R1 cmUgcmVwb3J0aW5nIGFib3V0IHZhbGlkCmNoZWNrcGF0Y2ggYW5kIHNwYXJzZSBpc3N1ZXMgZm9y IHNldmVyYWwgdmVyc2lvbnMgb2YgdGhlIHBhdGNoLiBQbGVhc2UKZml4LgoKCkJSLApKYW5pLgoK Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IDg3NmZjMjU5NjhiZi4uYmQ3YWZmNjc1MTk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTMzODcsNyArMTMzODcsNyBAQCBz dGF0aWMgdm9pZCB2ZXJpZnlfd21fc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYKPiAgCSAgICBody0+ZGRiLmVuYWJs ZWRfc2xpY2VzICE9IHN3X2RkYi0+ZW5hYmxlZF9zbGljZXMpCj4gLQkJRFJNX0VSUk9SKCJtaXNt YXRjaCBpbiBEQlVGIFNsaWNlcyAoZXhwZWN0ZWQgJXUsIGdvdCAldSlcbiIsCj4gKwkJRFJNX0VS Uk9SKCJtaXNtYXRjaCBpbiBEQlVGIFNsaWNlcyAoZXhwZWN0ZWQgJXgsIGdvdCAleClcbiIsCj4g IAkJCSAgc3dfZGRiLT5lbmFibGVkX3NsaWNlcywKPiAgCQkJICBody0+ZGRiLmVuYWJsZWRfc2xp Y2VzKTsKPiAgCj4gQEAgLTE0NjE0LDE1ICsxNDYxNCwyNCBAQCBzdGF0aWMgdm9pZCBza2xfY29t bWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg CXU4IGh3X2VuYWJsZWRfc2xpY2VzID0gZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9z bGljZXM7Cj4gIAl1OCByZXF1aXJlZF9zbGljZXMgPSBzdGF0ZS0+d21fcmVzdWx0cy5kZGIuZW5h YmxlZF9zbGljZXM7Cj4gIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBlbnRyaWVzW0k5MTVfTUFYX1BJ UEVTXSA9IHt9Owo+ICsJdTggc2xpY2VzX3VuaW9uID0gaHdfZW5hYmxlZF9zbGljZXMgfCByZXF1 aXJlZF9zbGljZXM7Cj4gKwl1OCBzbGljZXNfaW50ZXJzZWN0aW9uID0gcmVxdWlyZWRfc2xpY2Vz Owo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRj LCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpCj4gIAkJLyogaWdub3JlIGFsbG9j YXRpb25zIGZvciBjcnRjJ3MgdGhhdCBoYXZlIGJlZW4gdHVybmVkIG9mZi4gKi8KPiAgCQlpZiAo bmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQkJZW50cmllc1tpXSA9IG9sZF9jcnRjX3N0 YXRlLT53bS5za2wuZGRiOwo+ICAKPiAtCS8qIElmIDJuZCBEQnVmIHNsaWNlIHJlcXVpcmVkLCBl bmFibGUgaXQgaGVyZSAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYgcmVx dWlyZWRfc2xpY2VzID4gaHdfZW5hYmxlZF9zbGljZXMpCj4gLQkJaWNsX2RidWZfc2xpY2VzX3Vw ZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKPiArCURSTV9ERUJVR19LTVMoIkRCdWYg cmVxIHNsaWNlcyAlZCBodyBzbGljZXMgJWRcbiIsCj4gKwkJICAgICAgcmVxdWlyZWRfc2xpY2Vz LCBod19lbmFibGVkX3NsaWNlcyk7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHNvbWUgb3RoZXIgREJ1 ZiBzbGljZSByZXF1aXJlZCwgZW5hYmxlIGl0IGhlcmUsCj4gKwkgKiBhcyBoZXJlIHdlIG9ubHkg YWRkIG1vcmUgc2xpY2VzLCBidXQgbm90IHJlbW92ZSB0byBwcmV2ZW50Cj4gKwkgKiBpc3N1ZXMg aWYgc29tZWJvZHkgc3RpbGwgdXNlcyB0aG9zZS4KPiArCSAqLwo+ICsJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzICE9IGh3X2VuYWJsZWRfc2xpY2VzKQo+ ICsJCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHNsaWNlc191bmlvbik7Cj4gIAo+ ICAJLyoKPiAgCSAqIFdoZW5ldmVyIHRoZSBudW1iZXIgb2YgYWN0aXZlIHBpcGVzIGNoYW5nZXMs IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlCj4gQEAgLTE0NjgxLDkgKzE0NjkwLDEyIEBAIHN0YXRp YyB2b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICAJCX0KPiAgCX0gd2hpbGUgKHByb2dyZXNzKTsKPiAgCj4gLQkvKiBJZiAy bmQgREJ1ZiBzbGljZSBpcyBubyBtb3JlIHJlcXVpcmVkIGRpc2FibGUgaXQgKi8KPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDExICYmIHJlcXVpcmVkX3NsaWNlcyA8IGh3X2VuYWJsZWRf c2xpY2VzKQo+IC0JCWljbF9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3ByaXYsIHJlcXVpcmVkX3Ns aWNlcyk7Cj4gKwkvKgo+ICsJICogSWYgc29tZSBvdGhlciBEQnVmIHNsaWNlIGlzIG5vdCBuZWVk ZWQsIGRpc2FibGUgaXQgaGVyZSwKPiArCSAqIGFzIGhlcmUgd2Ugb25seSByZW1vdmUgc2xpY2Vz LCB3aGljaCBhcmUgbm90IG5lZWRlZCBhbnltb3JlLgo+ICsJICovCj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgIT0gaHdfZW5hYmxlZF9zbGljZXMp Cj4gKwkJaWNsX2RidWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgc2xpY2VzX2ludGVyc2VjdGlv bik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19oZWxwZXJfZnJlZV9zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiBpbmRleCBjZTFiNjRm NGRkNDQuLmE3OGJjOWI2MTg2MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5jCj4gQEAgLTEwMzEsMTUgKzEwMzEsNiBAQCBz dGF0aWMgYm9vbCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCShJOTE1X1JFQUQoRENfU1RBVEVfRU4pICYgRENfU1RB VEVfRU5fVVBUT19EQzVfREM2X01BU0spID09IDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBn ZW45X2Fzc2VydF9kYnVmX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IC17Cj4gLQl1MzIgdG1wID0gSTkxNV9SRUFEKERCVUZfQ1RMKTsKPiAtCj4gLQlXQVJOKCh0 bXAgJiAoREJVRl9QT1dFUl9TVEFURSB8IERCVUZfUE9XRVJfUkVRVUVTVCkpICE9Cj4gLQkgICAg IChEQlVGX1BPV0VSX1NUQVRFIHwgREJVRl9QT1dFUl9SRVFVRVNUKSwKPiAtCSAgICAgIlVuZXhw ZWN0ZWQgREJ1ZiBwb3dlciBwb3dlciBzdGF0ZSAoMHglMDh4KVxuIiwgdG1wKTsKPiAtfQo+IC0K PiAgc3RhdGljIHZvaWQgZ2VuOV9kaXNhYmxlX2RjX3N0YXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSBjZGNsa19z dGF0ZSA9IHt9Owo+IEBAIC0xMDU1LDggKzEwNDYsNiBAQCBzdGF0aWMgdm9pZCBnZW45X2Rpc2Fi bGVfZGNfc3RhdGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCS8qIENh bid0IHJlYWQgb3V0IHZvbHRhZ2VfbGV2ZWwgc28gY2FuJ3QgdXNlIGludGVsX2NkY2xrX2NoYW5n ZWQoKSAqLwo+ICAJV0FSTl9PTihpbnRlbF9jZGNsa19uZWVkc19tb2Rlc2V0KCZkZXZfcHJpdi0+ Y2RjbGsuaHcsICZjZGNsa19zdGF0ZSkpOwo+ICAKPiAtCWdlbjlfYXNzZXJ0X2RidWZfZW5hYmxl ZChkZXZfcHJpdik7Cj4gLQo+ICAJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF92 ZXJpZnlfZGRpX3BoeV9wb3dlcl93ZWxscyhkZXZfcHJpdik7Cj4gIAo+IEBAIC00MjU0LDMxICs0 MjQzLDUxIEBAIHN0YXRpYyB2b2lkIGdlbjlfZGJ1Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCWludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LCBEQlVG X0NUTCwgZmFsc2UpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdTggaW50ZWxfZGJ1Zl9tYXhfc2xpY2Vz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAraW50IGludGVsX2RidWZfbWF4 X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gLQkJcmV0dXJuIDE7Cj4gLQlyZXR1cm4gMjsKPiAr CXJldHVybiBJTlRFTF9JTkZPKGRldl9wcml2KS0+c3VwcG9ydGVkX3NsaWNlczsKPiArfQo+ICsK PiArdm9pZCBpY2xfcHJvZ3JhbV9kYnVmX3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gK3sKPiArCWNvbnN0IHU4IGh3X2VuYWJsZWRfc2xpY2VzID0gZGV2X3ByaXYt PndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXM7Cj4gKwo+ICsJaWNsX2RidWZfc2xpY2VzX3Vw ZGF0ZShkZXZfcHJpdiwgaHdfZW5hYmxlZF9zbGljZXMpOwo+ICB9Cj4gIAo+ICB2b2lkIGljbF9k YnVmX3NsaWNlc191cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CQkgICAgdTggcmVxX3NsaWNlcykKPiAgewo+IC0JY29uc3QgdTggaHdfZW5hYmxlZF9zbGljZXMg PSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlczsKPiAtCWJvb2wgcmV0Owo+ ICsJYm9vbCByZXQgPSB0cnVlOwo+ICsJaW50IGk7Cj4gKwlpbnQgbWF4X3NsaWNlcyA9IGludGVs X2RidWZfbWF4X3NsaWNlcyhkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKHJlcV9zbGljZXMgPiBpbnRl bF9kYnVmX21heF9zbGljZXMoZGV2X3ByaXYpKSB7Cj4gKwlpZiAoaHdlaWdodDgocmVxX3NsaWNl cykgPiBpbnRlbF9kYnVmX21heF9zbGljZXMoZGV2X3ByaXYpKSB7Cj4gIAkJRFJNX0VSUk9SKCJJ bnZhbGlkIG51bWJlciBvZiBkYnVmIHNsaWNlcyByZXF1ZXN0ZWRcbiIpOwo+ICAJCXJldHVybjsK PiAgCX0KPiAgCj4gLQlpZiAocmVxX3NsaWNlcyA9PSBod19lbmFibGVkX3NsaWNlcyB8fCByZXFf c2xpY2VzID09IDApCj4gLQkJcmV0dXJuOwo+ICsJRFJNX0RFQlVHX0tNUygiVXBkYXRpbmcgZGJ1 ZiBzbGljZXMgdG8gJXhcbiIsIHJlcV9zbGljZXMpOwo+ICAKPiAtCWlmIChyZXFfc2xpY2VzID4g aHdfZW5hYmxlZF9zbGljZXMpCj4gLQkJcmV0ID0gaW50ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3By aXYsIERCVUZfQ1RMX1MyLCB0cnVlKTsKPiAtCWVsc2UKPiAtCQlyZXQgPSBpbnRlbF9kYnVmX3Ns aWNlX3NldChkZXZfcHJpdiwgREJVRl9DVExfUzIsIGZhbHNlKTsKPiArCWZvciAoaSA9IDA7IGkg PCBtYXhfc2xpY2VzOyBpKyspIHsKPiArCQlpbnQgc2xpY2VfYml0ID0gQklUKGkpOwo+ICsJCWJv b2wgc2xpY2Vfc2V0ID0gKHNsaWNlX2JpdCAmIHJlcV9zbGljZXMpICE9IDA7Cj4gKwo+ICsJCXN3 aXRjaCAoc2xpY2VfYml0KSB7Cj4gKwkJY2FzZSBEQlVGX1MxX0JJVDoKPiArCQkJcmV0ID0gcmV0 ICYmIGludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LAo+ICsJCQkJCQkJICBEQlVGX0NUTF9T MSwKPiArCQkJCQkJCSAgc2xpY2Vfc2V0KTsKPiArCQkJYnJlYWs7Cj4gKwkJY2FzZSBEQlVGX1My X0JJVDoKPiArCQkJcmV0ID0gcmV0ICYmIGludGVsX2RidWZfc2xpY2Vfc2V0KGRldl9wcml2LAo+ ICsJCQkJCQkJICBEQlVGX0NUTF9TMiwKPiArCQkJCQkJCSAgc2xpY2Vfc2V0KTsKPiArCQkJYnJl YWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKHNsaWNlX2JpdCk7Cj4gKwkJfQo+ ICsJfQo+ICAKPiAgCWlmIChyZXQpCj4gIAkJZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxl ZF9zbGljZXMgPSByZXFfc2xpY2VzOwo+IEBAIC00Mjg2LDQwICs0Mjk1LDIxIEBAIHZvaWQgaWNs X2RidWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gLQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MxLCBJOTE1X1JFQUQoREJV Rl9DVExfUzEpIHwgREJVRl9QT1dFUl9SRVFVRVNUKTsKPiAtCUk5MTVfV1JJVEUoREJVRl9DVExf UzIsIEk5MTVfUkVBRChEQlVGX0NUTF9TMikgfCBEQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0JUE9T VElOR19SRUFEKERCVUZfQ1RMX1MyKTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+IC0KPiAtCWlmICgh KEk5MTVfUkVBRChEQlVGX0NUTF9TMSkgJiBEQlVGX1BPV0VSX1NUQVRFKSB8fAo+IC0JICAgICEo STkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpKQo+IC0JCURSTV9FUlJP UigiREJ1ZiBwb3dlciBlbmFibGUgdGltZW91dFxuIik7Cj4gLQllbHNlCj4gLQkJLyoKPiAtCQkg KiBGSVhNRTogZm9yIG5vdyBwcmV0ZW5kIHRoYXQgd2Ugb25seSBoYXZlIDEgc2xpY2UsIHNlZQo+ IC0JCSAqIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCj4gLQkJICovCj4gLQkJZGV2 X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXMgPSAxOwo+ICsJLyoKPiArCSAqIEp1 c3QgcG93ZXIgdXAgMSBzbGljZSwgd2Ugd2lsbAo+ICsJICogZmlndXJlIG91dCBsYXRlciB3aGlj aCBzbGljZXMgd2UgaGF2ZSBhbmQgd2hhdCB3ZSBuZWVkLgo+ICsJICovCj4gKwlkZXZfcHJpdi0+ d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IERCVUZfUzFfQklUOwo+ICsJaWNsX3Byb2dy YW1fZGJ1Zl9zbGljZXMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1 Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+IC0JSTkx NV9XUklURShEQlVGX0NUTF9TMSwgSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSAmIH5EQlVGX1BPV0VS X1JFUVVFU1QpOwo+IC0JSTkxNV9XUklURShEQlVGX0NUTF9TMiwgSTkxNV9SRUFEKERCVUZfQ1RM X1MyKSAmIH5EQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0JUE9TVElOR19SRUFEKERCVUZfQ1RMX1My KTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+IC0KPiAtCWlmICgoSTkxNV9SRUFEKERCVUZfQ1RMX1Mx KSAmIERCVUZfUE9XRVJfU1RBVEUpIHx8Cj4gLQkgICAgKEk5MTVfUkVBRChEQlVGX0NUTF9TMikg JiBEQlVGX1BPV0VSX1NUQVRFKSkKPiAtCQlEUk1fRVJST1IoIkRCdWYgcG93ZXIgZGlzYWJsZSB0 aW1lb3V0IVxuIik7Cj4gLQllbHNlCj4gLQkJLyoKPiAtCQkgKiBGSVhNRTogZm9yIG5vdyBwcmV0 ZW5kIHRoYXQgdGhlIGZpcnN0IHNsaWNlIGlzIGFsd2F5cwo+IC0JCSAqIGVuYWJsZWQsIHNlZSBp bnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX251bSgpLgo+IC0JCSAqLwo+IC0JCWRldl9wcml2LT53 bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gMTsKPiArCS8qCj4gKwkgKiBEaXNhYmxlIGFs bCBzbGljZXMKPiArCSAqLwo+ICsJZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGlj ZXMgPSAwOwo+ICsJaWNsX3Byb2dyYW1fZGJ1Zl9zbGljZXMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBpY2xfbWJ1c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3Bvd2VyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfcG93ZXIuaAo+IGluZGV4IDFkYTA0ZjNlMGZiMy4uYjcwNTdkNjhhZDc4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgK PiBAQCAtMzExLDggKzMxMSwxMCBAQCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dF9hc3luYyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCWZvciAoKHdmKSA9IGludGVsX2Rpc3BsYXlf cG93ZXJfZ2V0KChpOTE1KSwgKGRvbWFpbikpOyAod2YpOyBcCj4gIAkgICAgIGludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0X2FzeW5jKChpOTE1KSwgKGRvbWFpbiksICh3ZikpLCAod2YpID0gMCkKPiAg Cj4gK2ludCBpbnRlbF9kYnVmX21heF9zbGljZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiAgdm9pZCBpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgIHU4IHJlcV9zbGljZXMpOwo+ICt2b2lkIGljbF9w cm9ncmFtX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g IAo+ICB2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQkgICAgIGJvb2wgb3ZlcnJpZGUsIHVuc2lnbmVkIGludCBtYXNrKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA4MmU0ZTZiZjA4YzMuLjk2NzQxZTY4NjMzYSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC01MSw2ICs1MSw3IEBACj4gICNpbmNs dWRlICJkaXNwbGF5L2ludGVsX2J3LmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2NkY2xr LmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCIKPiArI2luY2x1 ZGUgImRpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9p bnRlbF9kcC5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9mYmRldi5oIgo+ICAjaW5jbHVk ZSAiZGlzcGxheS9pbnRlbF9ob3RwbHVnLmgiCj4gQEAgLTI1ODgsNiArMjU4OSwxMCBAQCBzdGF0 aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gIAlpZiAo SVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gIAkJ cmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2LCB0cnVlKTsKPiAgCj4gKwkvKiBXZWly ZCBoYWNrIHRvIGZpeCBJQ0wgaGFyZHdhcmUgYnVnLCBhcyBpdCByZXNldHMgREJVRiBzbGljZXMg cmVnICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiArCQlpY2xfcHJvZ3Jh bV9kYnVmX3NsaWNlcyhkZXZfcHJpdik7Cj4gKwo+ICAJaW50ZWxfdW5jb3JlX3J1bnRpbWVfcmVz dW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9p bnRlcnJ1cHRzKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA3ZTBm NjdiYWJlMjAuLmEzOTY5NzdjOWMyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBA IC04MDQsNyArODA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNrbF9kZGJfZW50cnlfZXF1YWwo Y29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUxLAo+ICB9Cj4gIAo+ICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uIHsKPiAtCXU4IGVuYWJsZWRfc2xpY2VzOyAvKiBHRU4xMSBoYXMgY29uZmln dXJhYmxlIDIgc2xpY2VzICovCj4gKwl1OCBlbmFibGVkX3NsaWNlczsgICAvKiBCaXRtYXNrIG9m IGN1cnJlbnRseSBlbmFibGVkIERCdWYgc2xpY2VzICovCj4gIH07Cj4gIAo+ICBzdHJ1Y3Qgc2ts X2RkYl92YWx1ZXMgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+IGluZGV4IDFiYjcwMWQzMmE1 ZC4uOGU4NmFmNTA1NzMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gQEAgLTYxNCw3 ICs2MTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX2No ZXJyeXZpZXdfaW5mbyA9IHsKPiAgCS5oYXNfZ3RfdWMgPSAxLCBcCj4gIAkuZGlzcGxheS5oYXNf aGRjcCA9IDEsIFwKPiAgCS5kaXNwbGF5Lmhhc19pcGMgPSAxLCBcCj4gLQkuZGRiX3NpemUgPSA4 OTYKPiArCS5kZGJfc2l6ZSA9IDg5NiwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAxCj4gIAo+ ICAjZGVmaW5lIFNLTF9QTEFURk9STSBcCj4gIAlHRU45X0ZFQVRVUkVTLCBcCj4gQEAgLTY1MCw2 ICs2NTEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvIGludGVsX3Nr eWxha2VfZ3Q0X2luZm8gPSB7Cj4gIAlHRU4oOSksIFwKPiAgCS5pc19scCA9IDEsIFwKPiAgCS5k aXNwbGF5Lmhhc19ob3RwbHVnID0gMSwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAxLCBcCj4g IAkuZW5naW5lX21hc2sgPSBCSVQoUkNTMCkgfCBCSVQoVkNTMCkgfCBCSVQoQkNTMCkgfCBCSVQo VkVDUzApLCBcCj4gIAkucGlwZV9tYXNrID0gQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJ VChQSVBFX0MpLCBcCj4gIAkuaGFzXzY0Yml0X3JlbG9jID0gMSwgXAo+IEBAIC03MzcsNiArNzM5 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jb2ZmZWVs YWtlX2d0M19pbmZvID0gewo+ICAJR0VOOV9GRUFUVVJFUywgXAo+ICAJR0VOKDEwKSwgXAo+ICAJ LmRkYl9zaXplID0gMTAyNCwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAxLCBcCj4gIAkuZGlz cGxheS5oYXNfZHNjID0gMSwgXAo+ICAJLmhhc19jb2hlcmVudF9nZ3R0ID0gZmFsc2UsIFwKPiAg CUdMS19DT0xPUlMKPiBAQCAtNzczLDYgKzc3Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2Fubm9ubGFrZV9pbmZvID0gewo+ICAJfSwgXAo+ICAJR0VO KDExKSwgXAo+ICAJLmRkYl9zaXplID0gMjA0OCwgXAo+ICsJLnN1cHBvcnRlZF9zbGljZXMgPSAy LCBcCj4gIAkuaGFzX2xvZ2ljYWxfcmluZ19lbHNxID0gMSwgXAo+ICAJLmNvbG9yID0geyAuZGVn YW1tYV9sdXRfc2l6ZSA9IDMzLCAuZ2FtbWFfbHV0X3NpemUgPSAyNjIxNDUgfQo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBhNjA3ZWE1MjA4MjkuLmZiYTU3MzEwNjNkOCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03NzM0LDkgKzc3MzQsMTEgQEAgZW51bSB7 Cj4gICNkZWZpbmUgRElTUF9BUkJfQ1RMMglfTU1JTygweDQ1MDA0KQo+ICAjZGVmaW5lICBESVNQ X0RBVEFfUEFSVElUSU9OXzVfNgkoMSA8PCA2KQo+ICAjZGVmaW5lICBESVNQX0lQQ19FTkFCTEUJ CSgxIDw8IDMpCj4gLSNkZWZpbmUgREJVRl9DVEwJX01NSU8oMHg0NTAwOCkKPiAtI2RlZmluZSBE QlVGX0NUTF9TMQlfTU1JTygweDQ1MDA4KQo+IC0jZGVmaW5lIERCVUZfQ1RMX1MyCV9NTUlPKDB4 NDRGRTgpCj4gKyNkZWZpbmUgREJVRl9TMV9CSVQJCQlCSVQoMCkKPiArI2RlZmluZSBEQlVGX1My X0JJVAkJCUJJVCgxKQo+ICsjZGVmaW5lIERCVUZfQ1RMCQkJX01NSU8oMHg0NTAwOCkKPiArI2Rl ZmluZSBEQlVGX0NUTF9TMQkJCV9NTUlPKDB4NDUwMDgpCj4gKyNkZWZpbmUgREJVRl9DVExfUzIJ CQlfTU1JTygweDQ0RkU4KQo+ICAjZGVmaW5lICBEQlVGX1BPV0VSX1JFUVVFU1QJCSgxIDw8IDMx KQo+ICAjZGVmaW5lICBEQlVGX1BPV0VSX1NUQVRFCQkoMSA8PCAzMCkKPiAgI2RlZmluZSBHRU43 X01TR19DVEwJX01NSU8oMHg0NTAxMCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rldmlj ZV9pbmZvLmgKPiBpbmRleCA0YmRmOGE2Y2ZiNDcuLmJhMzRlMWE1YzU5MSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IEBAIC0xODAsNiArMTgwLDcgQEAg c3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAgCX0gZGlzcGxheTsKPiAgCj4gIAl1MTYgZGRi X3NpemU7IC8qIGluIGJsb2NrcyAqLwo+ICsJdTggc3VwcG9ydGVkX3NsaWNlczsgLyogbnVtYmVy IG9mIERCdWYgc2xpY2VzICovCj4gIAo+ICAJLyogUmVnaXN0ZXIgb2Zmc2V0cyBmb3IgdGhlIHZh cmlvdXMgZGlzcGxheSBwaXBlcyBhbmQgdHJhbnNjb2RlcnMgKi8KPiAgCWludCBwaXBlX29mZnNl dHNbSTkxNV9NQVhfVFJBTlNDT0RFUlNdOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4 IDJkMzg5ZTQzN2U4Ny4uMWVhODFhYjkyNDI5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gQEAgLTM1ODYsMjQgKzM1ODYsMjAgQEAgYm9vbCBpbGtfZGlzYWJsZV9scF93bShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIF9pbGtfZGlzYWJsZV9scF93bShkZXZfcHJpdiwg V01fRElSVFlfTFBfQUxMKTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4IGludGVsX2VuYWJsZWRfZGJ1 Zl9zbGljZXNfbnVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGlj IHU4IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gLQl1OCBlbmFibGVkX3NsaWNlczsKPiAtCj4gLQkvKiBTbGljZSAxIHdp bGwgYWx3YXlzIGJlIGVuYWJsZWQgKi8KPiAtCWVuYWJsZWRfc2xpY2VzID0gMTsKPiArCXU4IGVu YWJsZWRfc2xpY2VzID0gMDsKPiAgCj4gIAkvKiBHZW4gcHJpb3IgdG8gR0VOMTEgaGF2ZSBvbmx5 IG9uZSBEQnVmIHNsaWNlICovCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+IC0J CXJldHVybiBlbmFibGVkX3NsaWNlczsKPiArCQlyZXR1cm4gREJVRl9TMV9CSVQ7Cj4gIAo+IC0J LyoKPiAtCSAqIEZJWE1FOiBmb3Igbm93IHdlJ2xsIG9ubHkgZXZlciB1c2UgMSBzbGljZTsgcHJl dGVuZCB0aGF0IHdlIGhhdmUKPiAtCSAqIG9ubHkgdGhhdCAxIHNsaWNlIGVuYWJsZWQgdW50aWwg d2UgaGF2ZSBhIHByb3BlciB3YXkgZm9yIG9uLWRlbWFuZAo+IC0JICogdG9nZ2xpbmcgb2YgdGhl IHNlY29uZCBzbGljZS4KPiAtCSAqLwo+IC0JaWYgKDAgJiYgSTkxNV9SRUFEKERCVUZfQ1RMX1My KSAmIERCVUZfUE9XRVJfU1RBVEUpCj4gLQkJZW5hYmxlZF9zbGljZXMrKzsKPiArCS8qIENoZWNr IGlmIHNlY29uZCBEQnVmIHNsaWNlIGlzIGVuYWJsZWQgKi8KPiArCWlmIChJOTE1X1JFQUQoREJV Rl9DVExfUzEpICYgREJVRl9QT1dFUl9TVEFURSkKPiArCQllbmFibGVkX3NsaWNlcyB8PSBEQlVG X1MxX0JJVDsKPiArCj4gKwlpZiAoSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJf U1RBVEUpCj4gKwkJZW5hYmxlZF9zbGljZXMgfD0gREJVRl9TMl9CSVQ7Cj4gIAo+ICAJcmV0dXJu IGVuYWJsZWRfc2xpY2VzOwo+ICB9Cj4gQEAgLTM4MTIsMzYgKzM4MDgsMzggQEAgc3RhdGljIHUx NiBpbnRlbF9nZXRfZGRiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJCQkgICAgICBjb25zdCBpbnQgbnVtX2FjdGl2ZSwKPiAgCQkJICAgICAgc3RydWN0IHNrbF9k ZGJfYWxsb2NhdGlvbiAqZGRiKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZTsKPiAtCXU2NCB0b3RhbF9kYXRhX2J3Owo+ICAJdTE2IGRkYl9zaXpl ID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmRkYl9zaXplOwo+IC0KPiAgCVdBUk5fT04oZGRiX3Np emUgPT0gMCk7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKPiAgCQlyZXR1 cm4gZGRiX3NpemUgLSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlwYXNzIHBhdGggYWxsb2NhdGlvbiAq Lwo+ICAKPiAtCWFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsK PiAtCXRvdGFsX2RhdGFfYncgPSB0b3RhbF9kYXRhX3JhdGUgKiBkcm1fbW9kZV92cmVmcmVzaChh ZGp1c3RlZF9tb2RlKTsKPiArCXJldHVybiBkZGJfc2l6ZTsKPiArfQo+ICAKPiAtCS8qCj4gLQkg KiAxMkdCL3MgaXMgbWF4aW11bSBCVyBzdXBwb3J0ZWQgYnkgc2luZ2xlIERCdWYgc2xpY2UuCj4g LQkgKgo+IC0JICogRklYTUUgZGJ1ZiBzbGljZSBjb2RlIGlzIGJyb2tlbjoKPiAtCSAqIC0gbXVz dCB3YWl0IGZvciBwbGFuZXMgdG8gc3RvcCB1c2luZyB0aGUgc2xpY2UgYmVmb3JlIHBvd2VyaW5n IGl0IG9mZgo+IC0JICogLSBwbGFuZSBzdHJhZGRsaW5nIGJvdGggc2xpY2VzIGlzIGlsbGVnYWwg aW4gbXVsdGktcGlwZSBzY2VuYXJpb3MKPiAtCSAqIC0gc2hvdWxkIHZhbGlkYXRlIHdlIHN0YXkg d2l0aGluIHRoZSBodyBiYW5kd2lkdGggbGltaXRzCj4gLQkgKi8KPiAtCWlmICgwICYmIChudW1f YWN0aXZlID4gMSB8fCB0b3RhbF9kYXRhX2J3ID49IEdCcHMoMTIpKSkgewo+IC0JCWRkYi0+ZW5h YmxlZF9zbGljZXMgPSAyOwo+IC0JfSBlbHNlIHsKPiAtCQlkZGItPmVuYWJsZWRfc2xpY2VzID0g MTsKPiAtCQlkZGJfc2l6ZSAvPSAyOwo+IC0JfQo+ICsvKgo+ICsgKiBDYWxjdWxhdGUgaW5pdGlh bCBEQnVmIHNsaWNlIG9mZnNldCwgYmFzZWQgb24gc2xpY2Ugc2l6ZQo+ICsgKiBhbmQgbWFzayhp LmUgaWYgc2xpY2Ugc2l6ZSBpcyAxMDI0IGFuZCBzZWNvbmQgc2xpY2UgaXMgZW5hYmxlZAo+ICsg KiBvZmZzZXQgd291bGQgYmUgMTAyNCkKPiArICovCj4gK3N0YXRpYyB1MzIgc2tsX2dldF9maXJz dF9kYnVmX3NsaWNlX29mZnNldCh1MzIgZGJ1Zl9zbGljZV9tYXNrLAo+ICsJCQkJCSAgIHUzMiBz bGljZV9zaXplLCB1MzIgZGRiX3NpemUpCj4gK3sKPiArCXUzMiBvZmZzZXQgPSAwOwo+ICAKPiAt CXJldHVybiBkZGJfc2l6ZTsKPiArCWlmICghZGJ1Zl9zbGljZV9tYXNrKQo+ICsJCXJldHVybiAw Owo+ICsKPiArCW9mZnNldCA9IChmZnMoZGJ1Zl9zbGljZV9tYXNrKSAtIDEpICogc2xpY2Vfc2l6 ZTsKPiArCj4gKwlXQVJOX09OKG9mZnNldCA+PSBkZGJfc2l6ZSk7Cj4gKwlyZXR1cm4gb2Zmc2V0 Owo+ICB9Cj4gIAo+ICtzdGF0aWMgdTMyIGk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJCSAgICAgIGludCBwaXBlLCB1MzIg YWN0aXZlX3BpcGVzLAo+ICsJCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+ICsKPiAgc3RhdGljIHZvaWQKPiAgc2tsX2RkYl9nZXRfcGlwZV9hbGxv Y2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBAQCAtMzg1Nyw3 ICszODU1LDE0IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJdTMyIHBpcGVfd2lkdGggPSAwLCB0b3RhbF93 aWR0aCA9IDAsIHdpZHRoX2JlZm9yZV9waXBlID0gMDsKPiAgCWVudW0gcGlwZSBmb3JfcGlwZSA9 IHRvX2ludGVsX2NydGMoZm9yX2NydGMpLT5waXBlOwo+ICAJdTE2IGRkYl9zaXplOwo+ICsJdTMy IGRkYl9yYW5nZV9zaXplOwo+ICAJdTMyIGk7Cj4gKwl1MzIgZGJ1Zl9zbGljZV9tYXNrOwo+ICsJ dTMyIGFjdGl2ZV9waXBlczsKPiArCXUzMiBvZmZzZXQ7Cj4gKwl1MzIgc2xpY2Vfc2l6ZTsKPiAr CXUzMiB0b3RhbF9zbGljZV9tYXNrOwo+ICsJdTMyIHN0YXJ0LCBlbmQ7Cj4gIAo+ICAJaWYgKFdB Uk5fT04oIXN0YXRlKSB8fCAhY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJYWxsb2MtPnN0 YXJ0ID0gMDsKPiBAQCAtMzg2NiwxNCArMzg3MSwyMyBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9j YXRpb25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlyZXR1 cm47Cj4gIAl9Cj4gIAo+IC0JaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKQo+ ICsJaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKSB7Cj4gIAkJKm51bV9hY3Rp dmUgPSBod2VpZ2h0OChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKPiAtCWVsc2UKPiArCQlh Y3RpdmVfcGlwZXMgPSBpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVzOwo+ICsJfSBlbHNlIHsKPiAg CQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQ4KGRldl9wcml2LT5hY3RpdmVfcGlwZXMpOwo+ICsJCWFj dGl2ZV9waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfcGlwZXM7Cj4gKwl9Cj4gIAo+ICAJZGRiX3Np emUgPSBpbnRlbF9nZXRfZGRiX3NpemUoZGV2X3ByaXYsIGNydGNfc3RhdGUsIHRvdGFsX2RhdGFf cmF0ZSwKPiAgCQkJCSAgICAgICpudW1fYWN0aXZlLCBkZGIpOwo+ICAKPiArCURSTV9ERUJVR19L TVMoIkdvdCB0b3RhbCBkZGIgc2l6ZSAlZFxuIiwgZGRiX3NpemUpOwo+ICsKPiArCXNsaWNlX3Np emUgPSBkZGJfc2l6ZSAvIElOVEVMX0lORk8oZGV2X3ByaXYpLT5zdXBwb3J0ZWRfc2xpY2VzOwo+ ICsKPiArCURSTV9ERUJVR19LTVMoIkdvdCBEQnVmIHNsaWNlIHNpemUgJWRcbiIsIHNsaWNlX3Np emUpOwo+ICsKPiAgCS8qCj4gIAkgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2UgdGhlIGFj dGl2ZSBDUlRDJ3Mgb3IgdGhlcmUgaXMgbm8KPiAgCSAqIG1vZGVzZXQgcmVxdWVzdCwgdGhlbiB0 aGVyZSdzIG5vIG5lZWQgdG8gcmVjYWxjdWxhdGU7Cj4gQEAgLTM4OTEsMjAgKzM5MDUsNzAgQEAg c2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiArCS8qCj4gKwkgKiBHZXQgYWxs b3dlZCBEQnVmIHNsaWNlcyBmb3IgY29ycmVzcG9uZGVudCBwaXBlIGFuZCBwbGF0Zm9ybS4KPiAr CSAqLwo+ICsJZGJ1Zl9zbGljZV9tYXNrID0gaTkxNV9nZXRfYWxsb3dlZF9kYnVmX21hc2soZGV2 X3ByaXYsIGZvcl9waXBlLAo+ICsJCQkJCQkgICAgIGFjdGl2ZV9waXBlcywgY3J0Y19zdGF0ZSk7 Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiREJ1ZiBzbGljZSBtYXNrICV4IHBpcGUgJWQgYWN0aXZl IHBpcGVzICV4XG4iLAo+ICsJCSAgICAgIGRidWZfc2xpY2VfbWFzaywKPiArCQkgICAgICBmb3Jf cGlwZSwgYWN0aXZlX3BpcGVzKTsKPiArCj4gKwkvKgo+ICsJICogRmlndXJlIG91dCBhdCB3aGlj aCBEQnVmIHNsaWNlIHdlIHN0YXJ0LCBpLmUgaWYgd2Ugc3RhcnQgYXQgRGJ1ZiBTMgo+ICsJICog YW5kIHNsaWNlIHNpemUgaXMgMTAyNCwgdGhlIG9mZnNldCB3b3VsZCBiZSAxMDI0Cj4gKwkgKi8K PiArCW9mZnNldCA9IHNrbF9nZXRfZmlyc3RfZGJ1Zl9zbGljZV9vZmZzZXQoZGJ1Zl9zbGljZV9t YXNrLAo+ICsJCQkJCQkgc2xpY2Vfc2l6ZSwgZGRiX3NpemUpOwo+ICsKPiArCS8qCj4gKwkgKiBG aWd1cmUgb3V0IHRvdGFsIHNpemUgb2YgYWxsb3dlZCBEQnVmIHNsaWNlcywgd2hpY2ggaXMgYmFz aWNhbGx5Cj4gKwkgKiBhIG51bWJlciBvZiBhbGxvd2VkIHNsaWNlcyBmb3IgdGhhdCBwaXBlIG11 bHRpcGxpZWQgYnkgc2xpY2Ugc2l6ZS4KPiArCSAqIEluc2lkZSBvZiB0aGlzCj4gKwkgKiByYW5n ZSBkZGIgZW50cmllcyBhcmUgc3RpbGwgYWxsb2NhdGVkIGluIHByb3BvcnRpb24gdG8gZGlzcGxh eSB3aWR0aC4KPiArCSAqLwo+ICsJZGRiX3JhbmdlX3NpemUgPSBod2VpZ2h0OChkYnVmX3NsaWNl X21hc2spICogc2xpY2Vfc2l6ZTsKPiArCj4gIAkvKgo+ICAJICogV2F0ZXJtYXJrL2RkYiByZXF1 aXJlbWVudCBoaWdobHkgZGVwZW5kcyB1cG9uIHdpZHRoIG9mIHRoZQo+ICAJICogZnJhbWVidWZm ZXIsIFNvIGluc3RlYWQgb2YgYWxsb2NhdGluZyBEREIgZXF1YWxseSBhbW9uZyBwaXBlcwo+ICAJ ICogZGlzdHJpYnV0ZSBEREIgYmFzZWQgb24gcmVzb2x1dGlvbi93aWR0aCBvZiB0aGUgZGlzcGxh eS4KPiAgCSAqLwo+ICsJdG90YWxfc2xpY2VfbWFzayA9IGRidWZfc2xpY2VfbWFzazsKPiAgCWZv cl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjLCBjcnRjX3N0 YXRlLCBpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQo+ICAJCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCQllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7Cj4gIAkJaW50IGhkaXNwbGF5LCB2ZGlzcGxheTsKPiArCQl1MzIg cGlwZV9kYnVmX3NsaWNlX21hc2sgPSBcCj4gKwkJCWk5MTVfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNr KGRldl9wcml2LAo+ICsJCQkJCQlwaXBlLAo+ICsJCQkJCQlhY3RpdmVfcGlwZXMsCj4gKwkJCQkJ CWNydGNfc3RhdGUpOwo+ICAKPiAgCQlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKPiAgCQkJ Y29udGludWU7Cj4gIAo+ICsJCS8qCj4gKwkJICogQWNjb3JkaW5nIHRvIEJTcGVjIHBpcGUgY2Fu IHNoYXJlIG9uZSBkYnVmIHNsaWNlIHdpdGggYW5vdGhlcgo+ICsJCSAqIHBpcGVzIG9yIHBpcGUg Y2FuIHVzZSBtdWx0aXBsZSBkYnVmcywgaW4gYm90aCBjYXNlcyB3ZQo+ICsJCSAqIGFjY291bnQg Zm9yIG90aGVyIHBpcGVzIG9ubHkgaWYgdGhleSBoYXZlIGV4YWN0bHkgc2FtZSBtYXNrLgo+ICsJ CSAqIEhvd2V2ZXIgd2UgbmVlZCB0byBhY2NvdW50IGhvdyBtYW55IHNsaWNlcyB3ZSBzaG91bGQg ZW5hYmxlCj4gKwkJICogaW4gdG90YWwuCj4gKwkJICovCj4gKwkJdG90YWxfc2xpY2VfbWFzayB8 PSBwaXBlX2RidWZfc2xpY2VfbWFzazsKPiArCj4gKwkJLyoKPiArCQkgKiBEbyBub3QgYWNjb3Vu dCBwaXBlcyB1c2luZyBvdGhlciBzbGljZSBzZXRzCj4gKwkJICogbHVja2lseSBhcyBvZiBjdXJy ZW50IEJTcGVjIHNsaWNlIHNldHMgZG8gbm90IHBhcnRpYWxseQo+ICsJCSAqIGludGVyc2VjdChw aXBlcyBzaGFyZSBlaXRoZXIgc2FtZSBvbmUgc2xpY2Ugb3Igc2FtZSBzbGljZSBzZXQKPiArCQkg KiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBlbm91Z2ggdG8gY2hlY2sg Zm9yCj4gKwkJICogZXF1YWxpdHkgZm9yIG5vdy4KPiArCQkgKi8KPiArCQlpZiAoZGJ1Zl9zbGlj ZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQo+ICsJCQljb250aW51ZTsKPiArCj4gIAkJ ZHJtX21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3BsYXksICZ2ZGlzcGxh eSk7Cj4gIAkJdG90YWxfd2lkdGggKz0gaGRpc3BsYXk7Cj4gIAo+IEBAIC0zOTE0LDggKzM5Nzgs MTkgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCXBpcGVfd2lkdGggPSBoZGlzcGxheTsKPiAgCX0KPiAg Cj4gLQlhbGxvYy0+c3RhcnQgPSBkZGJfc2l6ZSAqIHdpZHRoX2JlZm9yZV9waXBlIC8gdG90YWxf d2lkdGg7Cj4gLQlhbGxvYy0+ZW5kID0gZGRiX3NpemUgKiAod2lkdGhfYmVmb3JlX3BpcGUgKyBw aXBlX3dpZHRoKSAvIHRvdGFsX3dpZHRoOwo+ICsJZGRiLT5lbmFibGVkX3NsaWNlcyA9IHRvdGFs X3NsaWNlX21hc2s7Cj4gKwo+ICsJc3RhcnQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdpZHRoX2JlZm9y ZV9waXBlIC8gdG90YWxfd2lkdGg7Cj4gKwllbmQgPSBkZGJfcmFuZ2Vfc2l6ZSAqICh3aWR0aF9i ZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxfd2lkdGg7Cj4gKwo+ICsJYWxsb2MtPnN0 YXJ0ID0gb2Zmc2V0ICsgc3RhcnQ7Cj4gKwlhbGxvYy0+ZW5kID0gb2Zmc2V0ICsgZW5kOwo+ICsK PiArCURSTV9ERUJVR19LTVMoIlBpcGUgJWQgZGRiICVkLSVkXG4iLCBmb3JfcGlwZSwKPiArCQkg ICAgICBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQpOwo+ICsJRFJNX0RFQlVHX0tNUygiRW5hYmxl ZCBkZGIgc2xpY2VzIG1hc2sgJXggbnVtIHN1cHBvcnRlZCAlZFxuIiwKPiArCQkgICAgICBkZGIt PmVuYWJsZWRfc2xpY2VzLAo+ICsJCSAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5zdXBwb3J0 ZWRfc2xpY2VzKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBza2xfY29tcHV0ZV93bV9wYXJhbXMo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAgLTQwMzYsNyAr NDExMSw4IEBAIHZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8q IG91dCAqLykKPiAgewo+IC0JZGRiLT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2VuYWJsZWRfZGJ1 Zl9zbGljZXNfbnVtKGRldl9wcml2KTsKPiArCWRkYi0+ZW5hYmxlZF9zbGljZXMgPSBpbnRlbF9l bmFibGVkX2RidWZfc2xpY2VzKGRldl9wcml2KTsKPiArCURSTV9ERUJVR19LTVMoIkdvdCBodyBk YnVmIHNsaWNlcyBtYXNrICV4XG4iLCBkZGItPmVuYWJsZWRfc2xpY2VzKTsKPiAgfQo+ICAKPiAg LyoKPiBAQCAtNDE2NCw2ICs0MjQwLDI0MSBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFf cmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJldHVybiB0b3Rh bF9kYXRhX3JhdGU7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1aW50X2ZpeGVkXzE2XzE2X3QKPiAraWNs X3BpcGVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiArewo+ICsJdTMyIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oOwo+ICsJdWlu dF9maXhlZF8xNl8xNl90IGZwX3dfcmF0aW8sIGZwX2hfcmF0aW87Cj4gKwl1aW50X2ZpeGVkXzE2 XzE2X3QgZG93bnNjYWxlX2gsIGRvd25zY2FsZV93Owo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsK PiArCj4gKwlzcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gKwlzcmNfaCA9IGNydGNf c3RhdGUtPnBpcGVfc3JjX2g7Cj4gKwlkc3RfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3Bs YXk7Cj4gKwlkc3RfaCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4gKwo+ICsJZnBf d19yYXRpbyA9IGRpdl9maXhlZDE2KHNyY193LCBkc3Rfdyk7Cj4gKwlmcF9oX3JhdGlvID0gZGl2 X2ZpeGVkMTYoc3JjX2gsIGRzdF9oKTsKPiArCWRvd25zY2FsZV93ID0gbWF4X2ZpeGVkMTYoZnBf d19yYXRpbywgdTMyX3RvX2ZpeGVkMTYoMSkpOwo+ICsJZG93bnNjYWxlX2ggPSBtYXhfZml4ZWQx NihmcF9oX3JhdGlvLCB1MzJfdG9fZml4ZWQxNigxKSk7Cj4gKwo+ICsJcmV0dXJuIG11bF9maXhl ZDE2KGRvd25zY2FsZV93LCBkb3duc2NhbGVfaCk7Cj4gK30KPiArCj4gK3VpbnRfZml4ZWRfMTZf MTZfdAo+ICtpY2xfZ2V0X3BpcGVfcmF0aW8oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICsJY29uc3Qg c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqZHJtX3BsYW5lX3N0YXRlOwo+ICsJdWludF9maXhlZF8x Nl8xNl90IHBpcGVfZG93bnNjYWxlLCBwaXBlX3JhdGlvOwo+ICsJdWludF9maXhlZF8xNl8xNl90 IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICsKPiArCWlm ICghY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCj4gKwkJcmV0dXJuIG1heF9kb3duc2NhbGU7Cj4g Kwo+ICsJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKHBsYW5lLCBk cm1fcGxhbmVfc3RhdGUsICZjcnRjX3N0YXRlLT51YXBpKSB7Cj4gKwkJdWludF9maXhlZF8xNl8x Nl90IHBsYW5lX2Rvd25zY2FsZTsKPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlID0KPiArCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3BsYW5lX3N0YXRl KTsKPiArCj4gKwkJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5l X3N0YXRlKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXBsYW5lX2Rvd25zY2FsZSA9IHNrbF9w bGFuZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsKPiArCj4gKwkJ RFJNX0RFQlVHX0tNUygiUGxhbmUgJWQgZG93bnNjYWxlIGFtb3VudCAlZC4lZFxuIiwKPiArCQkJ ICAgICAgdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZCwKPiArCQkJICAgICAgcGxhbmVfZG93bnNj YWxlLnZhbCA+PiAxNiwKPiArCQkJICAgICAgcGxhbmVfZG93bnNjYWxlLnZhbCAmIDB4ZmZmZik7 Cj4gKwo+ICsJCW1heF9kb3duc2NhbGUgPSBtYXhfZml4ZWQxNihwbGFuZV9kb3duc2NhbGUsIG1h eF9kb3duc2NhbGUpOwo+ICsJfQo+ICsKPiArCj4gKwlwaXBlX2Rvd25zY2FsZSA9IGljbF9waXBl X2Rvd25zY2FsZV9hbW91bnQoY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUGlw ZSAlZCBkb3duc2NhbGUgYW1vdW50ICVkLiVkXG4iLAo+ICsJCSAgICAgICBjcnRjLT5waXBlLCBw aXBlX2Rvd25zY2FsZS52YWwgPj4gMTYsCj4gKwkJICAgICAgIHBpcGVfZG93bnNjYWxlLnZhbCAm IDB4ZmZmZik7Cj4gKwo+ICsJcGlwZV9kb3duc2NhbGUgPSBtdWxfZml4ZWQxNihwaXBlX2Rvd25z Y2FsZSwgbWF4X2Rvd25zY2FsZSk7Cj4gKwo+ICsJLyoKPiArCSAqIENvbnZlcnQgcmVzdWx0IHRv IHBlcmNlbnRhZ2U6IGdldCB0aGUgYWN0dWFsIHJhdGlvIGluc3RlYWQgb2YgcmF0ZSwKPiArCSAq IHRoZW4gbXVsdGlwbHkgYnkgMTAwIHRvIGdldCBwZXJjZW50YWdlLgo+ICsJICovCj4gKwlwaXBl X3JhdGlvID0gdTMyX3RvX2ZpeGVkMTYoMTAwICogZGl2X3JvdW5kX3VwX3UzMl9maXhlZDE2KDEs IHBpcGVfZG93bnNjYWxlKSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUGlwZSAlZCByYXRpbyAl ZC4lZFxuIiwgY3J0Yy0+cGlwZSwKPiArCQkgICAgICBwaXBlX3JhdGlvLnZhbCA+PiAxNiwgcGlw ZV9yYXRpby52YWwgJiAweGZmZmYpOwo+ICsKPiArCXJldHVybiBwaXBlX3JhdGlvOwo+ICt9Cj4g Kwo+ICtzdHJ1Y3QgZGJ1Zl9zbGljZV9jb25mX2VudHJ5IHsKPiArCXUzMiBkYnVmX21hc2tbSTkx NV9NQVhfUElQRVNdOwo+ICsJdTMyIGFjdGl2ZV9waXBlczsKPiArfTsKPiArCj4gKwo+ICsjZGVm aW5lIElDTF9QSVBFX0FfREJVRl9TTElDRVMoREJ1ZjEpICBcCj4gKwl7IHsgREJ1ZjEsIDAsIDAs IDAgfSwgQklUKFBJUEVfQSkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0JfREJVRl9TTElDRVMoREJ1 ZjEpICBcCj4gKwl7IHsgMCwgREJ1ZjEsIDAsIDAgfSwgQklUKFBJUEVfQikgfQo+ICsjZGVmaW5l IElDTF9QSVBFX0NfREJVRl9TTElDRVMoREJ1ZjEpICBcCj4gKwl7IHsgMCwgMCwgREJ1ZjEsIDAg fSwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0RfREJVRl9TTElDRVMoREJ1ZjEp ICBcCj4gKwl7IHsgMCwgMCwgMCwgREJ1ZjEgfSwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElD TF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgREJ1ZjEsIERC dWYyLCAwLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfQo+ICsjZGVmaW5lIElDTF9Q SVBFX0JDX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgMCwgREJ1ZjEsIERC dWYyLCAwIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBF X0JEX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgMCwgREJ1ZjEsIDAsIERC dWYyIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FD X0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgREJ1ZjEsIDAsIERCdWYyLCAw IH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FEX0RC VUZfU0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgREJ1ZjEsIDAsIDAsIERCdWYyIH0s IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0NEX0RCVUZf U0xJQ0VTKERCdWYxLCBEQnVmMikgICBcCj4gKwl7IHsgMCwgMCwgREJ1ZjEsIERCdWYyIH0sIEJJ VChQSVBFX0MpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FCQ19EQlVGX1NM SUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCBEQnVmMiwgREJ1ZjMs IDAgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0MpIH0KPiArI2RlZmlu ZSBJQ0xfUElQRV9BQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyLCBEQnVmMykgIFwKPiArCXsg eyBEQnVmMSwgMCwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQykgfCBC SVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQkNEX0RCVUZfU0xJQ0VTKERCdWYxLCBE QnVmMiwgREJ1ZjMpICBcCj4gKwl7IHsgMCwgREJ1ZjEsIERCdWYyLCBEQnVmMyB9LCBCSVQoUElQ RV9CKSB8IEJJVChQSVBFX0MpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FC RF9EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCBEQnVm MiwgMCwgREJ1ZjMgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0QpIH0K PiArI2RlZmluZSBJQ0xfUElQRV9BQkNfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyLCBEQnVmMykg IFwKPiArCXsgeyBEQnVmMSwgREJ1ZjIsIERCdWYzLCAwIH0sIEJJVChQSVBFX0EpIHwgQklUKFBJ UEVfQikgfCBCSVQoUElQRV9DKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJDRF9EQlVGX1NMSUNF UyhEQnVmMSwgREJ1ZjIsIERCdWYzLCBEQnVmNCkgIFwKPiArCXsgeyBEQnVmMSwgREJ1ZjIsIERC dWYzLCBEQnVmNCB9LCBCSVQoUElQRV9BKSB8IEJJVChQSVBFX0IpIHwgXAo+ICsJCQkJCSAgQklU KFBJUEVfQykgfCBCSVQoUElQRV9EKSB9Cj4gKwo+ICsvKgo+ICsgKiBUYWJsZSB0YWtlbiBmcm9t IEJzcGVjIDEyNzE2Cj4gKyAqIFBpcGVzIGRvIGhhdmUgc29tZSBwcmVmZXJyZWQgREJ1ZiBzbGlj ZSBhZmZpbml0eSwKPiArICogcGx1cyB0aGVyZSBhcmUgc29tZSBoYXJkY29kZWQgcmVxdWlyZW1l bnRzIG9uIGhvdwo+ICsgKiB0aG9zZSBzaG91bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlw ZSBzY2VuYXJpb3MuCj4gKyAqIEZvciBtb3JlIERCdWYgc2xpY2VzIGFsZ29yaXRobSBjYW4gZ2V0 IGV2ZW4gbW9yZSBtZXNzeQo+ICsgKiBhbmQgbGVzcyByZWFkYWJsZSwgc28gZGVjaWRlZCB0byB1 c2UgYSB0YWJsZSBhbG1vc3QKPiArICogYXMgaXMgZnJvbSBCU3BlYyBpdHNlbGYgLSB0aGF0IHdh eSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKPiArICogdG8gY29tcGFyZSwgY2hhbmdlIGFuZCBjaGVj ay4KPiArICovCj4gK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkgaWNsX2FsbG93ZWRfZGJ1 ZnNbXSA9IHsKPiAreyB7IDAsIDAsIDAsIDAgfSwgMCB9LAo+ICtJQ0xfUElQRV9BX0RCVUZfU0xJ Q0VTKERCVUZfUzFfQklUIHwgREJVRl9TMl9CSVQpLCAgLyogcGlwZSByYXRpbyA8IDg4LjggKi8K PiArSUNMX1BJUEVfQV9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCksICAgICAgICAgICAgICAgIC8q IGZvciBwaXBlIHJhdGlvID49IDg4LjggKi8KPiArSUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhEQlVG X1MxX0JJVCB8IERCVUZfUzJfQklUKSwgIC8qIHBpcGUgcmF0aW8gPCA4OC44ICovCj4gK0lDTF9Q SVBFX0JfREJVRl9TTElDRVMoREJVRl9TMV9CSVQpLCAgICAgICAgICAgICAgICAvKiBmb3IgcGlw ZSByYXRpbyA+PSA4OC44ICovCj4gK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMV9CSVQg fCBEQlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLwo+ICtJQ0xfUElQRV9DX0RC VUZfU0xJQ0VTKERCVUZfUzJfQklUKSwgICAgICAgICAgICAgICAgLyogZm9yIHBpcGUgcmF0aW8g Pj0gODguOCAqLwo+ICtJQ0xfUElQRV9BQl9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9T Ml9CSVQpLAo+ICtJQ0xfUElQRV9BQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9C SVQpLAo+ICtJQ0xfUElQRV9CQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAo+ICtJQ0xfUElQRV9BQkNfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBE QlVGX1MyX0JJVCksCj4gK307Cj4gKwo+ICsvKgo+ICsgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVj IDQ5MjU1Cj4gKyAqIFBpcGVzIGRvIGhhdmUgc29tZSBwcmVmZXJyZWQgREJ1ZiBzbGljZSBhZmZp bml0eSwKPiArICogcGx1cyB0aGVyZSBhcmUgc29tZSBoYXJkY29kZWQgcmVxdWlyZW1lbnRzIG9u IGhvdwo+ICsgKiB0aG9zZSBzaG91bGQgYmUgZGlzdHJpYnV0ZWQgZm9yIG11bHRpcGlwZSBzY2Vu YXJpb3MuCj4gKyAqIEZvciBtb3JlIERCdWYgc2xpY2VzIGFsZ29yaXRobSBjYW4gZ2V0IGV2ZW4g bW9yZSBtZXNzeQo+ICsgKiBhbmQgbGVzcyByZWFkYWJsZSwgc28gZGVjaWRlZCB0byB1c2UgYSB0 YWJsZSBhbG1vc3QKPiArICogYXMgaXMgZnJvbSBCU3BlYyBpdHNlbGYgLSB0aGF0IHdheSBpdCBp cyBhdCBsZWFzdCBlYXNpZXIKPiArICogdG8gY29tcGFyZSwgY2hhbmdlIGFuZCBjaGVjay4KPiAr ICovCj4gK3N0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkgdGdsX2FsbG93ZWRfZGJ1ZnNbXSA9 IHsKPiAreyB7IDAsIDAsIDAsIDAgfSwgMCB9LAo+ICtJQ0xfUElQRV9BX0RCVUZfU0xJQ0VTKERC VUZfUzFfQklUIHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9CX0RCVUZfU0xJQ0VTKERCVUZf UzFfQklUIHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9DX0RCVUZfU0xJQ0VTKERCVUZfUzFf QklUIHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9EX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklU IHwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9BQl9EQlVGX1NMSUNFUyhEQlVGX1MyX0JJVCwg REJVRl9TMV9CSVQpLAo+ICtJQ0xfUElQRV9BQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJV Rl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9CQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9T Ml9CSVQpLAo+ICtJQ0xfUElQRV9BRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9C SVQpLAo+ICtJQ0xfUElQRV9CRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAo+ICtJQ0xfUElQRV9DRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQpLAo+ ICtJQ0xfUElQRV9BQkRfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBEQlVG X1MyX0JJVCksCj4gK0lDTF9QSVBFX0FCQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9T MV9CSVQsIERCVUZfUzJfQklUKSwKPiArSUNMX1BJUEVfQUNEX0RCVUZfU0xJQ0VTKERCVUZfUzFf QklULCBEQlVGX1MyX0JJVCwgREJVRl9TMl9CSVQpLAo+ICtJQ0xfUElQRV9CQ0RfREJVRl9TTElD RVMoREJVRl9TMV9CSVQsIERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0FC Q0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCwgREJV Rl9TMl9CSVQpLAo+ICt9Owo+ICsKPiArLyoKPiArICogVGhpcyBmdW5jdGlvbiBmaW5kcyBhbiBl bnRyeSB3aXRoIHNhbWUgZW5hYmxlZCBwaXBlIGNvbmZpZ3VyYXRpb24gYW5kCj4gKyAqIHJldHVy bnMgY29ycmVzcG9uZGVudCBEQnVmIHNsaWNlIG1hc2sgYXMgc3RhdGVkIGluIEJTcGVjIGZvciBw YXJ0aWN1bGFyCj4gKyAqIHBsYXRmb3JtLgo+ICsgKi8KPiArc3RhdGljIHUzMiBpY2xfZ2V0X2Fs bG93ZWRfZGJ1Zl9tYXNrKGludCBwaXBlLAo+ICsJCQkJICAgICB1MzIgYWN0aXZlX3BpcGVzLAo+ ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAr ewo+ICsJaW50IGk7Cj4gKwl1aW50X2ZpeGVkXzE2XzE2X3QgcGlwZV9yYXRpbzsKPiArCj4gKwkv Kgo+ICsJICogQ2FsY3VsYXRlIHBpcGUgcmF0aW8gYXMgc3RhdGVkIGluIEJTcGVjIDI4NjkyCj4g KwkgKi8KPiArCXBpcGVfcmF0aW8gPSBpY2xfZ2V0X3BpcGVfcmF0aW8oY3J0Y19zdGF0ZSk7Cj4g Kwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaWNsX2FsbG93ZWRfZGJ1ZnMpOyBpKysp IHsKPiArCQlpZiAoaWNsX2FsbG93ZWRfZGJ1ZnNbaV0uYWN0aXZlX3BpcGVzID09IGFjdGl2ZV9w aXBlcykgewo+ICsJCQlpZiAoaHdlaWdodDMyKGFjdGl2ZV9waXBlcykgPT0gMSkgewo+ICsJCQkJ LyoKPiArCQkJCSAqIEFjY29yZGluZyB0byBCU3BlYyAxMjcxNjogaWYgcmF0aW8gPj0gODguOAo+ ICsJCQkJICogYWx3YXlzIHVzZSBzaW5nbGUgZGJ1ZiBzbGljZS4KPiArCQkJCSAqLwo+ICsJCQkJ aWYgKHBpcGVfcmF0aW8udmFsID49IGRpdl9maXhlZDE2KDg4OCwgMTApLnZhbCkKPiArCQkJCQkr K2k7Cj4gKwkJCX0KPiArCQkJcmV0dXJuIGljbF9hbGxvd2VkX2RidWZzW2ldLmRidWZfbWFza1tw aXBlXTsKPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyoKPiArICogVGhp cyBmdW5jdGlvbiBmaW5kcyBhbiBlbnRyeSB3aXRoIHNhbWUgZW5hYmxlZCBwaXBlIGNvbmZpZ3Vy YXRpb24gYW5kCj4gKyAqIHJldHVybnMgY29ycmVzcG9uZGVudCBEQnVmIHNsaWNlIG1hc2sgYXMg c3RhdGVkIGluIEJTcGVjIGZvciBwYXJ0aWN1bGFyCj4gKyAqIHBsYXRmb3JtLgo+ICsgKi8KPiAr c3RhdGljIHUzMiB0Z2xfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKGludCBwaXBlLAo+ICsJCQkJICAg ICB1MzIgYWN0aXZlX3BpcGVzLAo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUodGdsX2FsbG93ZWRfZGJ1ZnMpOyBpKyspIHsKPiArCQlpZiAodGdsX2FsbG93 ZWRfZGJ1ZnNbaV0uYWN0aXZlX3BpcGVzID09IGFjdGl2ZV9waXBlcykKPiArCQkJcmV0dXJuIHRn bF9hbGxvd2VkX2RidWZzW2ldLmRidWZfbWFza1twaXBlXTsKPiArCX0KPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICt1MzIgaTkxNV9nZXRfYWxsb3dlZF9kYnVmX21hc2soc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgICAgaW50IHBpcGUsIHUzMiBhY3RpdmVfcGlw ZXMsCj4gKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiArewo+ICsJaWYgKElTX0dFTihkZXZfcHJpdiwgMTEpKQo+ICsJCXJldHVybiBpY2xfZ2V0 X2FsbG93ZWRfZGJ1Zl9tYXNrKHBpcGUsCj4gKwkJCQkJCSBhY3RpdmVfcGlwZXMsCj4gKwkJCQkJ CSBjcnRjX3N0YXRlKTsKPiArCWVsc2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTIpKQo+ICsJCXJl dHVybiB0Z2xfZ2V0X2FsbG93ZWRfZGJ1Zl9tYXNrKHBpcGUsCj4gKwkJCQkJCSBhY3RpdmVfcGlw ZXMsCj4gKwkJCQkJCSBjcnRjX3N0YXRlKTsKPiArCS8qCj4gKwkgKiBGb3IgYW55dGhpbmcgZWxz ZSBqdXN0IHJldHVybiBvbmUgc2xpY2UgeWV0Lgo+ICsJICogU2hvdWxkIGJlIGV4dGVuZGVkIGZv ciBvdGhlciBwbGF0Zm9ybXMuCj4gKwkgKi8KPiArCXJldHVybiBEQlVGX1MxX0JJVDsKPiArfQo+ ICsKPiAgc3RhdGljIHU2NAo+ICBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSB1NjQgKnBsYW5lX2RhdGFf cmF0ZSkKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVy Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==