From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v7] drm/i915: Enable second dbuf slice for ICL and TGL Date: Fri, 15 Nov 2019 22:19:44 +0200 Message-ID: <20191115201944.GO1208@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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA28E6E857 for ; Fri, 15 Nov 2019 20:19:48 +0000 (UTC) Content-Disposition: inline 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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDI6MjQ6NDlQTSArMDIwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBBbHNvIGltcGxlbWVudGVkIGFsZ29yaXRobSBmb3IgY2hvb3NpbmcgREJ1 ZiBzbGljZSBjb25maWd1cmF0aW9uCj4gYmFzZWQgb24gYWN0aXZlIHBpcGVzLCBwaXBlIHJhdGlv IGFzIHN0YXRlZCBpbiBCU3BlYyAxMjcxNi4KPiAKPiBOb3cgcGlwZSBhbGxvY2F0aW9uIHN0aWxs IHN0YXlzIHByb3BvcnRpb25hbCB0byBwaXBlIHdpZHRoIGFzIGJlZm9yZSwKPiBob3dldmVyIHdp dGhpbiBhbGxvd2VkIERCdWYgc2xpY2UgZm9yIHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9u Lgo+IAo+IHYyOiBSZW1vdmUgdW5uZWVkZWQgY2hlY2sgZnJvbSBjb21taXQgYXMgZGRiIGVuYWJs ZWQgc2xpY2VzIG1pZ2h0Cj4gICAgIG5vdyBkaWZmZXIgZnJvbSBodyBzdGF0ZS4KPiAKPiB2Mzog LSBBZGRlZCBuZXcgZmllbGQgInN1cHBvcnRlZF9zbGljZXMiIHRvIGRkYiB0byBzZXBhcmF0ZSBt YXgKPiAgICAgICBzdXBwb3J0ZWQgc2xpY2VzIHZzIGN1cnJlbnRseSBlbmFibGVkLCB0byBhdm9p ZCBjb25mdXNpb24uCj4gICAgIC0gUmVtb3ZlZCBvYnNvbGV0ZSBjb21tZW50cyBhbmQgY29kZSBy ZWxhdGVkIHRvIERCdWYoTWF0dGhldyBSb3BlcikuCj4gICAgIC0gU29tZSBjb2RlIHN0eWxlIGFu ZCBsb25nIGxpbmUgcmVtb3ZhbChNYXR0aGV3IFJvcGVyKS4KPiAgICAgLSBBZGRlZCBXQVJOX09O IHRvIG5ldyBkZGIgcmFuZ2Ugb2Zmc2V0IGNhbGMgZnVuY3Rpb24oTWF0dGhldyBSb3BlcikuCj4g ICAgIC0gUmVtb3ZlZCBwbGF0Zm9ybSBzcGVjaWZpYyBjYWxsIHRvIGNhbGMgcGlwZSByYXRpbyBm cm9tIGRkYgo+ICAgICAgIGFsbG9jYXRpb24gZnVuY3Rpb24gYW5kIGZpeGVkIHRoZSByZXR1cm4g dmFsdWUoTWF0dGhldyBSb3BlcikKPiAgICAgLSBSZWZhY3RvcmVkIERCVUYgc2xpY2UgYWxsb2Nh dGlvbiB0YWJsZSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5Cj4gICAgIC0gQWRkZWQgREJVRiBzbGlj ZSBhbGxvY2F0aW9uIGZvciBUR0wgYXMgd2VsbC4KPiAgICAgLSBJQ0woaG93ZXZlciBub3QgVEdM KSBzZWVtcyB0byB2b2x1bnRhcmlseSBlbmFibGUgc2Vjb25kIERCdWYgc2xpY2UKPiAgICAgICBh ZnRlciBwbSBzdXNwZW5kL3Jlc3VtZSBjYXVzaW5nIGEgbWlzbWF0Y2ggZmFpbHVyZSwgYmVjYXVz ZSB3ZQo+ICAgICAgIHVwZGF0ZSBEQnVmIHNsaWNlcyBvbmx5IGlmIHdlIGRvIGEgbW9kZXNldCwg aG93ZXZlciB0aGlzIGNoZWNrCj4gICAgICAgaXMgZG9uZSBhbHdheXMuIEZpeGVkIGl0IHRvIGJl IGRvbmUgb25seSB3aGVuIG1vZGVzZXQgZm9yIElDTC4KPiAKPiB2NDogLSBOb3cgZW5hYmxlZCBz bGljZXMgaXMgbm90IGFjdHVhbGx5IGEgbnVtYmVyLCBidXQgYSBiaXRtYXNrLAo+ICAgICAgIGJl Y2F1c2Ugd2UgbWlnaHQgbmVlZCB0byBlbmFibGUgc2Vjb25kIHNsaWNlIG9ubHkgYW5kIG51bWJl cgo+ICAgICAgIG9mIHNsaWNlcyB3b3VsZCBzdGlsbCAxIGFuZCB0aGF0IGN1cnJlbnQgY29kZSBk b2Vzbid0IGFsbG93Lgo+ICAgICAtIFJlbW92ZSByZWR1bmRhbnQgZHVwbGljYXRlIGNvZGUgdG8g aGF2ZSBzb21lIHVuaWZpZWQgd2F5IG9mCj4gICAgICAgZW5hYmxpbmcgZGJ1ZiBzbGljZXMgaW5z dGVhZCBvZiBoYXJkY29kaW5nLgo+IAo+IHY1OiAtIEZpeCBmYWlsaW5nIGdlbjlfYXNzZXJ0X2Ri dWZfZW5hYmxlZCBhcyBpdCB3YXMgbmFpdmVseSB0aGlua2luZwo+ICAgICAgIHRoYXQgd2UgaGF2 ZSBvbmx5IG9uZSBEQlVGX0NUTCBzbGljZS4gTm93IGFub3RoZXIgdmVyc2lvbiBmb3IKPiAgICAg ICBnZW4xMSB3aWxsIGNoZWNrIGJvdGggc2xpY2VzIGFzIG9ubHkgc2Vjb25kIG9uZSBjYW4gYmUg ZW5hYmxlZCwKPiAgICAgICB0byBrZWVwIENJIGhhcHB5Lgo+IAo+IHY2OiAtIFJlbW92ZWQgZW5h YmxlZCBkYnVmIGFzc2VydGlvbiBjb21wbGV0ZWx5LiBQcmV2aW91cyBjb2RlCj4gICAgICAgd2Fz IGtlZXBpbmcgZGJ1ZiBlbmFibGVkLCBldmVuKCEpIHdoZW4gX2RidWZfZGlzYWJsZSBpcyBjYWxs ZWQuCj4gICAgICAgQ3VycmVudGx5IHdlIGVuYWJsZS9kaXNhYmxlIGRidWYgc2xpY2VzIGJhc2Vk IG9uIHJlcXVyZW1lbnQKPiAgICAgICBzbyBubyBwb2ludCBpbiBhc3NlcnRpbmcgdGhpcyBoZXJl Lgo+ICAgICAtIFJlbW92ZWQgdW5uZWNlc3NhcnkgbW9kZXNldCBjaGVjayBmcm9tIHZlcmlmeV93 bV9zdGF0ZShNYXR0aGV3IFJvcGVyKQo+ICAgICAtIFNsaWNlcyBpbnRlcnNlY3Rpb24gYWZ0ZXIg dW5pb24gaXMgc2FtZSBhcyBmaW5hbCByZXN1bHQoTWF0dGhldyBSb3BlcikKPiAgICAgLSBNb3Zl ZCBEQnVmIHNsaWNlcyB0byBpbnRlbF9kZXZpY2VfaW5mbyhNYXR0aGV3IFJvcGVyKQo+ICAgICAt IFNvbWUgbWFjcm9zIGFkZGVkKE1hdHRoZXcgUm9wZXIpCj4gICAgIC0gZGRiIHJhbmdlIGlzIG5v dyBhbHdheXMgbGVzcyBvciBlcXVhbCB0byBkZGIgc2l6ZSAtIG5vIG5lZWQgZm9yIGFkZGl0aW9u YWwKPiAgICAgICBjaGVja3MocHJldmlvdXNseSBuZWVkZWQgYXMgd2UgaGFkIHNvbWUgYmFuZHdp ZHRoIGNoZWNrcyBpbiB0aGVyZSB3aGljaAo+ICAgICAgIGNvdWxkICJzdWRkZW5seSIgcmV0dXJu IGRkYl9zaXplIHNtYWxsZXIgdGhhbiBpdCBpcy4KPiAKPiB2NzogTWlub3IgY29zdGVtaWMgY2hh bmdlczoKPiAgICAgLSBDaGFuZ2VkIGljbF9kYnVmX3NsaWNlc19yZXN0b3JlIG5hbWUgdG8gaWNs X3Byb2dyYW1fZGJ1Zl9zbGljZXMKPiAgICAgICBhcyBpdCBtb3JlIGNvcnJlc3BvbmRzIHRvIHRo ZSBhY3R1YWwgZnVuY3Rpb25hbGl0eS4KPiAgICAgLSBTb21lIHNpbXBsaWZpY2F0aW9uIHdpdGgg c3VwcG9ydGVkIHNsaWNlcyBmb3IgQlhUIGFuZCBHTEsKPiAgICAgLSBza2xfcGlwZV9kb3duc2Nh bGVfYW1vdW50IC0+IGljbF9waXBlX2Rvd25zY2FsZV9hbW91bnQgYXMKPiAgICAgICB0aGlzIGlz IG5vdCB1c2VkIGZvciBza2wgYW55bW9yZS4KPiAgICAgLSBDaGFuZ2VkIERCdWYgc2xpY2UgYXNz aWdubWVudCBvcmRlciBmb3IgVEdMIGNhc2UKPiAKPiBSZXZpZXdlZC1ieTogTWF0dGhldyBSb3Bl ciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYg TGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiBDYzogTWF0dGhldyBS b3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGludGVsLmNvbT4KPiBDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5hdXNtdXNA aW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYyAgfCAgMjYgKy0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9w b3dlci5jICAgIHwgIDk4ICsrLS0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfcG93ZXIuaCAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg ICAgICAgICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5j ICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICAgICAgICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmggICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMgICAgICAgICAgICAgICB8IDM4NyArKysrKysrKysrKysrKysrLS0KPiAgOSBmaWxlcyBjaGFu Z2VkLCA0MzEgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggODc2ZmMyNTk2OGJm Li5iZDdhZmY2NzUxOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzM4Nyw3ICsxMzM4Nyw3IEBAIHN0YXRpYyB2b2lkIHZlcmlm eV93bV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMSAmJgo+ICAJICAgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMgIT0gc3df ZGRiLT5lbmFibGVkX3NsaWNlcykKPiAtCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIERCVUYgU2xp Y2VzIChleHBlY3RlZCAldSwgZ290ICV1KVxuIiwKPiArCQlEUk1fRVJST1IoIm1pc21hdGNoIGlu IERCVUYgU2xpY2VzIChleHBlY3RlZCAleCwgZ290ICV4KVxuIiwKPiAgCQkJICBzd19kZGItPmVu YWJsZWRfc2xpY2VzLAo+ICAJCQkgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMpOwo+ICAKPiBAQCAt MTQ2MTQsMTUgKzE0NjE0LDI0IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFi bGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJdTggaHdfZW5hYmxlZF9z bGljZXMgPSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlczsKPiAgCXU4IHJl cXVpcmVkX3NsaWNlcyA9IHN0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKPiAg CXN0cnVjdCBza2xfZGRiX2VudHJ5IGVudHJpZXNbSTkxNV9NQVhfUElQRVNdID0ge307Cj4gKwl1 OCBzbGljZXNfdW5pb24gPSBod19lbmFibGVkX3NsaWNlcyB8IHJlcXVpcmVkX3NsaWNlczsKPiAr CXU4IHNsaWNlc19pbnRlcnNlY3Rpb24gPSByZXF1aXJlZF9zbGljZXM7Cj4gIAo+ICAJZm9yX2Vh Y2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiAgCQkvKiBpZ25vcmUgYWxsb2NhdGlvbnMgZm9yIGNydGMn cyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2ZmLiAqLwo+ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ aHcuYWN0aXZlKQo+ICAJCQllbnRyaWVzW2ldID0gb2xkX2NydGNfc3RhdGUtPndtLnNrbC5kZGI7 Cj4gIAo+IC0JLyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJlICov Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgPiBo d19lbmFibGVkX3NsaWNlcykKPiAtCQlpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCBy ZXF1aXJlZF9zbGljZXMpOwo+ICsJRFJNX0RFQlVHX0tNUygiREJ1ZiByZXEgc2xpY2VzICVkIGh3 IHNsaWNlcyAlZFxuIiwKPiArCQkgICAgICByZXF1aXJlZF9zbGljZXMsIGh3X2VuYWJsZWRfc2xp Y2VzKTsKPiArCj4gKwkvKgo+ICsJICogSWYgc29tZSBvdGhlciBEQnVmIHNsaWNlIHJlcXVpcmVk LCBlbmFibGUgaXQgaGVyZSwKPiArCSAqIGFzIGhlcmUgd2Ugb25seSBhZGQgbW9yZSBzbGljZXMs IGJ1dCBub3QgcmVtb3ZlIHRvIHByZXZlbnQKPiArCSAqIGlzc3VlcyBpZiBzb21lYm9keSBzdGls bCB1c2VzIHRob3NlLgo+ICsJICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAm JiByZXF1aXJlZF9zbGljZXMgIT0gaHdfZW5hYmxlZF9zbGljZXMpCj4gKwkJaWNsX2RidWZfc2xp Y2VzX3VwZGF0ZShkZXZfcHJpdiwgc2xpY2VzX3VuaW9uKTsKPiAgCj4gIAkvKgo+ICAJICogV2hl bmV2ZXIgdGhlIG51bWJlciBvZiBhY3RpdmUgcGlwZXMgY2hhbmdlcywgd2UgbmVlZCB0byBtYWtl IHN1cmUgd2UKPiBAQCAtMTQ2ODEsOSArMTQ2OTAsMTIgQEAgc3RhdGljIHZvaWQgc2tsX2NvbW1p dF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJ fQo+ICAJfSB3aGlsZSAocHJvZ3Jlc3MpOwo+ICAKPiAtCS8qIElmIDJuZCBEQnVmIHNsaWNlIGlz IG5vIG1vcmUgcmVxdWlyZWQgZGlzYWJsZSBpdCAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzIDwgaHdfZW5hYmxlZF9zbGljZXMpCj4gLQkJaWNs X2RidWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKPiArCS8qCj4g KwkgKiBJZiBzb21lIG90aGVyIERCdWYgc2xpY2UgaXMgbm90IG5lZWRlZCwgZGlzYWJsZSBpdCBo ZXJlLAo+ICsJICogYXMgaGVyZSB3ZSBvbmx5IHJlbW92ZSBzbGljZXMsIHdoaWNoIGFyZSBub3Qg bmVlZGVkIGFueW1vcmUuCj4gKwkgKi8KPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx ICYmIHJlcXVpcmVkX3NsaWNlcyAhPSBod19lbmFibGVkX3NsaWNlcykKPiArCQlpY2xfZGJ1Zl9z bGljZXNfdXBkYXRlKGRldl9wcml2LCBzbGljZXNfaW50ZXJzZWN0aW9uKTsKClRoaXMgaXMgc3Rp bGwgYSB0b3RhbGx5IHdyb25nIHBsYWNlIGZvciB0aGlzLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhl CnBsYW5lcyBoYXZlIHN3aXRjaGVkIG92ZXIgdG8gdGhlIG5ldyBkZGIgbGF5b3V0IGJlZm9yZSB3 ZSBwb3dlciBvZmYKYW55dGhpbmcuCgo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9hdG9t aWNfaGVscGVyX2ZyZWVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf cG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dl ci5jCj4gaW5kZXggY2UxYjY0ZjRkZDQ0Li5hNzhiYzliNjE4NjIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwo+IEBAIC0x MDMxLDE1ICsxMDMxLDYgQEAgc3RhdGljIGJvb2wgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFi bGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkoSTkxNV9SRUFEKERD X1NUQVRFX0VOKSAmIERDX1NUQVRFX0VOX1VQVE9fREM1X0RDNl9NQVNLKSA9PSAwKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgZ2VuOV9hc3NlcnRfZGJ1Zl9lbmFibGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0JdTMyIHRtcCA9IEk5MTVfUkVBRChEQlVGX0NU TCk7Cj4gLQo+IC0JV0FSTigodG1wICYgKERCVUZfUE9XRVJfU1RBVEUgfCBEQlVGX1BPV0VSX1JF UVVFU1QpKSAhPQo+IC0JICAgICAoREJVRl9QT1dFUl9TVEFURSB8IERCVUZfUE9XRVJfUkVRVUVT VCksCj4gLQkgICAgICJVbmV4cGVjdGVkIERCdWYgcG93ZXIgcG93ZXIgc3RhdGUgKDB4JTA4eClc biIsIHRtcCk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9kY19zdGF0ZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgY2RjbGtfc3RhdGUgPSB7fTsKPiBAQCAtMTA1NSw4ICsxMDQ2LDYgQEAgc3Rh dGljIHZvaWQgZ2VuOV9kaXNhYmxlX2RjX3N0YXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkvKiBDYW4ndCByZWFkIG91dCB2b2x0YWdlX2xldmVsIHNvIGNhbid0IHVz ZSBpbnRlbF9jZGNsa19jaGFuZ2VkKCkgKi8KPiAgCVdBUk5fT04oaW50ZWxfY2RjbGtfbmVlZHNf bW9kZXNldCgmZGV2X3ByaXYtPmNkY2xrLmh3LCAmY2RjbGtfc3RhdGUpKTsKPiAgCj4gLQlnZW45 X2Fzc2VydF9kYnVmX2VuYWJsZWQoZGV2X3ByaXYpOwo+IC0KPiAgCWlmIChJU19HRU45X0xQKGRl dl9wcml2KSkKPiAgCQlieHRfdmVyaWZ5X2RkaV9waHlfcG93ZXJfd2VsbHMoZGV2X3ByaXYpOwo+ ICAKPiBAQCAtNDI1NCwzMSArNDI0Myw1MSBAQCBzdGF0aWMgdm9pZCBnZW45X2RidWZfZGlzYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpbnRlbF9kYnVmX3NsaWNl X3NldChkZXZfcHJpdiwgREJVRl9DVEwsIGZhbHNlKTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4IGlu dGVsX2RidWZfbWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g K2ludCBpbnRlbF9kYnVmX21heF9zbGljZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICB7Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+IC0JCXJldHVybiAx Owo+IC0JcmV0dXJuIDI7Cj4gKwlyZXR1cm4gSU5URUxfSU5GTyhkZXZfcHJpdiktPnN1cHBvcnRl ZF9zbGljZXM7Cj4gK30KCktpbmRhIHBvaW50bGVzcyBmdW5jdGlvbiBub3cuICdzdXBwb3J0ZWRf c2xpY2VzJyBpcyBub3QgYSB2ZXJ5IGdvb2QKbmFtZS4gU2hvdWxkIGJlICdudW1fZGJ1Zl9zbGlj ZXMnIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4KCj4gKwo+ICt2b2lkIGljbF9wcm9n cmFtX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ ICsJY29uc3QgdTggaHdfZW5hYmxlZF9zbGljZXMgPSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5l bmFibGVkX3NsaWNlczsKClNlZW1zIGEgcmF0aGVyIHBvaW50bGVzcyB2YXJpYWJsZS4gY29uc3Qg YXQgbGVhc3QgaXMgcG9pbnRsZXNzLgoKPiArCj4gKwlpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKGRl dl9wcml2LCBod19lbmFibGVkX3NsaWNlcyk7Cj4gIH0KPiAgCj4gIHZvaWQgaWNsX2RidWZfc2xp Y2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICB1 OCByZXFfc2xpY2VzKQo+ICB7Cj4gLQljb25zdCB1OCBod19lbmFibGVkX3NsaWNlcyA9IGRldl9w cml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwo+IC0JYm9vbCByZXQ7Cj4gKwlib29s IHJldCA9IHRydWU7Cj4gKwlpbnQgaTsKPiArCWludCBtYXhfc2xpY2VzID0gaW50ZWxfZGJ1Zl9t YXhfc2xpY2VzKGRldl9wcml2KTsKPiAgCj4gLQlpZiAocmVxX3NsaWNlcyA+IGludGVsX2RidWZf bWF4X3NsaWNlcyhkZXZfcHJpdikpIHsKPiArCWlmIChod2VpZ2h0OChyZXFfc2xpY2VzKSA+IGlu dGVsX2RidWZfbWF4X3NsaWNlcyhkZXZfcHJpdikpIHsKPiAgCQlEUk1fRVJST1IoIkludmFsaWQg bnVtYmVyIG9mIGRidWYgc2xpY2VzIHJlcXVlc3RlZFxuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWlmIChyZXFfc2xpY2VzID09IGh3X2VuYWJsZWRfc2xpY2VzIHx8IHJlcV9zbGljZXMg PT0gMCkKPiAtCQlyZXR1cm47Cj4gKwlEUk1fREVCVUdfS01TKCJVcGRhdGluZyBkYnVmIHNsaWNl cyB0byAleFxuIiwgcmVxX3NsaWNlcyk7Cj4gIAo+IC0JaWYgKHJlcV9zbGljZXMgPiBod19lbmFi bGVkX3NsaWNlcykKPiAtCQlyZXQgPSBpbnRlbF9kYnVmX3NsaWNlX3NldChkZXZfcHJpdiwgREJV Rl9DVExfUzIsIHRydWUpOwo+IC0JZWxzZQo+IC0JCXJldCA9IGludGVsX2RidWZfc2xpY2Vfc2V0 KGRldl9wcml2LCBEQlVGX0NUTF9TMiwgZmFsc2UpOwo+ICsJZm9yIChpID0gMDsgaSA8IG1heF9z bGljZXM7IGkrKykgewo+ICsJCWludCBzbGljZV9iaXQgPSBCSVQoaSk7Cj4gKwkJYm9vbCBzbGlj ZV9zZXQgPSAoc2xpY2VfYml0ICYgcmVxX3NsaWNlcykgIT0gMDsKPiArCj4gKwkJc3dpdGNoIChz bGljZV9iaXQpIHsKPiArCQljYXNlIERCVUZfUzFfQklUOgo+ICsJCQlyZXQgPSByZXQgJiYgaW50 ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3ByaXYsCj4gKwkJCQkJCQkgIERCVUZfQ1RMX1MxLAo+ICsJ CQkJCQkJICBzbGljZV9zZXQpOwo+ICsJCQlicmVhazsKPiArCQljYXNlIERCVUZfUzJfQklUOgo+ ICsJCQlyZXQgPSByZXQgJiYgaW50ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3ByaXYsCj4gKwkJCQkJ CQkgIERCVUZfQ1RMX1MyLAo+ICsJCQkJCQkJICBzbGljZV9zZXQpOwoKVGhlIHJldHVybiB2YWx1 ZSBvbiBpbnRlbF9kYnVmX3NsaWNlX3NldCgpIHNlZW1zIHBvaW50bGVzcy4gSSdkIG51a2UgaXQu CgpBbHNvIGFzIGxvbmcgeW91IGhhdmUgaW50ZWxfZGJ1Zl9zbGljZV9zZXQoKSBJJ2QgcHJvYmFi bHkganVzdCBwYXNzIHRoZQpzbGljZSBpbmRleCB0aGVyZSBhbmQgbGV0IGl0IGRlYWwgd2l0aCB0 aGUgcmVnaXN0ZXIgZGV0YWlscy4gREJVRl9DVEwKc2hvdWxkIHByb2JhYmx5IGJlIHBhcmFtZXRy aXplZCBhcyB3ZWxsIHNvIHlvdSBkb24ndCBuZWVkIGFubm95aW5nIHN3aXRjaApzdGF0ZW1lbnRz LgoKPiArCQkJYnJlYWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKHNsaWNlX2Jp dCk7Cj4gKwkJfQo+ICsJfQo+ICAKPiAgCWlmIChyZXQpCj4gIAkJZGV2X3ByaXYtPndtLnNrbF9o dy5kZGIuZW5hYmxlZF9zbGljZXMgPSByZXFfc2xpY2VzOwo+IEBAIC00Mjg2LDQwICs0Mjk1LDIx IEBAIHZvaWQgaWNsX2RidWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MxLCBJ OTE1X1JFQUQoREJVRl9DVExfUzEpIHwgREJVRl9QT1dFUl9SRVFVRVNUKTsKPiAtCUk5MTVfV1JJ VEUoREJVRl9DVExfUzIsIEk5MTVfUkVBRChEQlVGX0NUTF9TMikgfCBEQlVGX1BPV0VSX1JFUVVF U1QpOwo+IC0JUE9TVElOR19SRUFEKERCVUZfQ1RMX1MyKTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+ IC0KPiAtCWlmICghKEk5MTVfUkVBRChEQlVGX0NUTF9TMSkgJiBEQlVGX1BPV0VSX1NUQVRFKSB8 fAo+IC0JICAgICEoSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpKQo+ IC0JCURSTV9FUlJPUigiREJ1ZiBwb3dlciBlbmFibGUgdGltZW91dFxuIik7Cj4gLQllbHNlCj4g LQkJLyoKPiAtCQkgKiBGSVhNRTogZm9yIG5vdyBwcmV0ZW5kIHRoYXQgd2Ugb25seSBoYXZlIDEg c2xpY2UsIHNlZQo+IC0JCSAqIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCj4gLQkJ ICovCj4gLQkJZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXMgPSAxOwo+ICsJ LyoKPiArCSAqIEp1c3QgcG93ZXIgdXAgMSBzbGljZSwgd2Ugd2lsbAo+ICsJICogZmlndXJlIG91 dCBsYXRlciB3aGljaCBzbGljZXMgd2UgaGF2ZSBhbmQgd2hhdCB3ZSBuZWVkLgo+ICsJICovCj4g KwlkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IERCVUZfUzFfQklUOwoK VGhhdCBzdHVmZiByZWFsbHkgc2hvdWxkbid0IGJlIG1vZGlmaWVkIGJ5IGxvdyBsZXZlbCBmdW5j dGlvbnMuClRoZSBpbnRpYWwgdmFsdWUgc2hvdWxkIGNvbWUgZnJvbSByZWFkb3V0LCBhbmQgYWZ0 ZXIgdGhhdCBpdCBzaG91bGQKYmUgYWRqdXN0ZWQgYXMgcGFydCBvZiB0aGUgb3ZlcmFsbCBhdG9t aWMgc3RhdGUuCgo+ICsJaWNsX3Byb2dyYW1fZGJ1Zl9zbGljZXMoZGV2X3ByaXYpOwo+ICB9Cj4g IAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgewo+IC0JSTkxNV9XUklURShEQlVGX0NUTF9TMSwgSTkxNV9SRUFEKERC VUZfQ1RMX1MxKSAmIH5EQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0JSTkxNV9XUklURShEQlVGX0NU TF9TMiwgSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIH5EQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0J UE9TVElOR19SRUFEKERCVUZfQ1RMX1MyKTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+IC0KPiAtCWlm ICgoSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSAmIERCVUZfUE9XRVJfU1RBVEUpIHx8Cj4gLQkgICAg KEk5MTVfUkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkKPiAtCQlEUk1fRVJS T1IoIkRCdWYgcG93ZXIgZGlzYWJsZSB0aW1lb3V0IVxuIik7Cj4gLQllbHNlCj4gLQkJLyoKPiAt CQkgKiBGSVhNRTogZm9yIG5vdyBwcmV0ZW5kIHRoYXQgdGhlIGZpcnN0IHNsaWNlIGlzIGFsd2F5 cwo+IC0JCSAqIGVuYWJsZWQsIHNlZSBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX251bSgpLgo+ IC0JCSAqLwo+IC0JCWRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gMTsK PiArCS8qCj4gKwkgKiBEaXNhYmxlIGFsbCBzbGljZXMKPiArCSAqLwo+ICsJZGV2X3ByaXYtPndt LnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXMgPSAwOwo+ICsJaWNsX3Byb2dyYW1fZGJ1Zl9zbGlj ZXMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfbWJ1c19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaAo+IGluZGV4IDFkYTA0ZjNlMGZiMy4u YjcwNTdkNjhhZDc4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV9wb3dlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgKPiBAQCAtMzExLDggKzMxMSwxMCBAQCBpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dF9hc3luYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCWZv ciAoKHdmKSA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KChpOTE1KSwgKGRvbWFpbikpOyAod2Yp OyBcCj4gIAkgICAgIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKChpOTE1KSwgKGRvbWFp biksICh3ZikpLCAod2YpID0gMCkKPiAgCj4gK2ludCBpbnRlbF9kYnVmX21heF9zbGljZXMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpY2xfZGJ1Zl9zbGljZXNf dXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgIHU4IHJl cV9zbGljZXMpOwo+ICt2b2lkIGljbF9wcm9ncmFtX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+ICB2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVz KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgIGJvb2wgb3ZlcnJpZGUs IHVuc2lnbmVkIGludCBtYXNrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA4MmU0 ZTZiZjA4YzMuLjk2NzQxZTY4NjMzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBA IC01MSw2ICs1MSw3IEBACj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2J3LmgiCj4gICNpbmNs dWRlICJkaXNwbGF5L2ludGVsX2NkY2xrLmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaCIKPiArI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5o Igo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kcC5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9p bnRlbF9mYmRldi5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9ob3RwbHVnLmgiCj4gQEAg LTI1ODgsNiArMjU4OSwxMCBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmtkZXYpCj4gIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2 LCB0cnVlKTsKPiAgCj4gKwkvKiBXZWlyZCBoYWNrIHRvIGZpeCBJQ0wgaGFyZHdhcmUgYnVnLCBh cyBpdCByZXNldHMgREJVRiBzbGljZXMgcmVnICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA9PSAxMSkKPiArCQlpY2xfcHJvZ3JhbV9kYnVmX3NsaWNlcyhkZXZfcHJpdik7Cj4gKwo+ICAJ aW50ZWxfdW5jb3JlX3J1bnRpbWVfcmVzdW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiAgCj4gIAlp bnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA3ZTBmNjdiYWJlMjAuLmEzOTY5NzdjOWMyZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC04MDQsNyArODA0LDcgQEAgc3RhdGljIGlubGluZSBi b29sIHNrbF9kZGJfZW50cnlfZXF1YWwoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUxLAo+ ICB9Cj4gIAo+ICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKClRoaXMgc3RydWN0IGlzIHF1 aXRlIHBvaW50bGVzcy4gU2hvdWxkIGJlIGtpbGxlZCBvZmYuCgo+IC0JdTggZW5hYmxlZF9zbGlj ZXM7IC8qIEdFTjExIGhhcyBjb25maWd1cmFibGUgMiBzbGljZXMgKi8KPiArCXU4IGVuYWJsZWRf c2xpY2VzOyAgIC8qIEJpdG1hc2sgb2YgY3VycmVudGx5IGVuYWJsZWQgREJ1ZiBzbGljZXMgKi8K PiAgfTsKPiAgCj4gIHN0cnVjdCBza2xfZGRiX3ZhbHVlcyB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jCj4gaW5kZXggMWJiNzAxZDMyYTVkLi44ZTg2YWY1MDU3MzAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGNpLmMKPiBAQCAtNjE0LDcgKzYxNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2hlcnJ5dmlld19pbmZvID0gewo+ICAJLmhhc19ndF91YyA9 IDEsIFwKPiAgCS5kaXNwbGF5Lmhhc19oZGNwID0gMSwgXAo+ICAJLmRpc3BsYXkuaGFzX2lwYyA9 IDEsIFwKPiAtCS5kZGJfc2l6ZSA9IDg5Ngo+ICsJLmRkYl9zaXplID0gODk2LCBcCj4gKwkuc3Vw cG9ydGVkX3NsaWNlcyA9IDEKPiAgCj4gICNkZWZpbmUgU0tMX1BMQVRGT1JNIFwKPiAgCUdFTjlf RkVBVFVSRVMsIFwKPiBAQCAtNjUwLDYgKzY1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gaW50ZWxfc2t5bGFrZV9ndDRfaW5mbyA9IHsKPiAgCUdFTig5KSwgXAo+ ICAJLmlzX2xwID0gMSwgXAo+ICAJLmRpc3BsYXkuaGFzX2hvdHBsdWcgPSAxLCBcCj4gKwkuc3Vw cG9ydGVkX3NsaWNlcyA9IDEsIFwKPiAgCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSB8IEJJVChW Q1MwKSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCksIFwKPiAgCS5waXBlX21hc2sgPSBCSVQoUElQ RV9BKSB8IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQyksIFwKPiAgCS5oYXNfNjRiaXRfcmVsb2Mg PSAxLCBcCj4gQEAgLTczNyw2ICs3MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX2NvZmZlZWxha2VfZ3QzX2luZm8gPSB7Cj4gIAlHRU45X0ZFQVRVUkVT LCBcCj4gIAlHRU4oMTApLCBcCj4gIAkuZGRiX3NpemUgPSAxMDI0LCBcCj4gKwkuc3VwcG9ydGVk X3NsaWNlcyA9IDEsIFwKPiAgCS5kaXNwbGF5Lmhhc19kc2MgPSAxLCBcCj4gIAkuaGFzX2NvaGVy ZW50X2dndHQgPSBmYWxzZSwgXAo+ICAJR0xLX0NPTE9SUwo+IEBAIC03NzMsNiArNzc2LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jYW5ub25sYWtlX2lu Zm8gPSB7Cj4gIAl9LCBcCj4gIAlHRU4oMTEpLCBcCj4gIAkuZGRiX3NpemUgPSAyMDQ4LCBcCj4g Kwkuc3VwcG9ydGVkX3NsaWNlcyA9IDIsIFwKPiAgCS5oYXNfbG9naWNhbF9yaW5nX2Vsc3EgPSAx LCBcCj4gIAkuY29sb3IgPSB7IC5kZWdhbW1hX2x1dF9zaXplID0gMzMsIC5nYW1tYV9sdXRfc2l6 ZSA9IDI2MjE0NSB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGE2MDdlYTUy MDgyOS4uZmJhNTczMTA2M2Q4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTc3 MzQsOSArNzczNCwxMSBAQCBlbnVtIHsKPiAgI2RlZmluZSBESVNQX0FSQl9DVEwyCV9NTUlPKDB4 NDUwMDQpCj4gICNkZWZpbmUgIERJU1BfREFUQV9QQVJUSVRJT05fNV82CSgxIDw8IDYpCj4gICNk ZWZpbmUgIERJU1BfSVBDX0VOQUJMRQkJKDEgPDwgMykKPiAtI2RlZmluZSBEQlVGX0NUTAlfTU1J TygweDQ1MDA4KQo+IC0jZGVmaW5lIERCVUZfQ1RMX1MxCV9NTUlPKDB4NDUwMDgpCj4gLSNkZWZp bmUgREJVRl9DVExfUzIJX01NSU8oMHg0NEZFOCkKPiArI2RlZmluZSBEQlVGX1MxX0JJVAkJCUJJ VCgwKQo+ICsjZGVmaW5lIERCVUZfUzJfQklUCQkJQklUKDEpCgpUaGVzZSBhcmUgbm90IGJpdHMg aW5zaWRlIERCVUZfQ1RMIHNvIHRoZXkgc2hvdWxkIG5vdCBiZSBoZXJlLgpJJ2QganVzdCBudWtl IHRoZW0gZW50aXJlbHkuIElmIHlvdSB0aGluayB3ZSBuZWVkIG1vcmUgdGhhbiBhbgppbnQgdG8g cmVmZXIgdG8gYSBzbGljZSB0aGVuIElNTyBzb21ldGhpbmcgc2ltcGxlIGxpa2UKCmVudW0gZGJ1 Zl9zbGljZSB7CglEQlVGX1MxLAoJREJVRl9TMiwKfTsKCndvdWxkIG1hdGNoIHRoZSBnZW5lcmFs IGFwcG9yYWNoIHdlIHVzZSBmb3Igb3RoZXIgdGhpbmdzIG11Y2ggYmV0dGVyCnJhdGhlciB0aGFu IGRlZmluaW5nIHNvbWUgc2hpZnRlZCB2YWx1ZXMuCgo+ICsjZGVmaW5lIERCVUZfQ1RMCQkJX01N SU8oMHg0NTAwOCkKPiArI2RlZmluZSBEQlVGX0NUTF9TMQkJCV9NTUlPKDB4NDUwMDgpCj4gKyNk ZWZpbmUgREJVRl9DVExfUzIJCQlfTU1JTygweDQ0RkU4KQo+ICAjZGVmaW5lICBEQlVGX1BPV0VS X1JFUVVFU1QJCSgxIDw8IDMxKQo+ICAjZGVmaW5lICBEQlVGX1BPV0VSX1NUQVRFCQkoMSA8PCAz MCkKPiAgI2RlZmluZSBHRU43X01TR19DVEwJX01NSU8oMHg0NTAxMCkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmgKPiBpbmRleCA0YmRmOGE2Y2ZiNDcuLmJhMzRlMWE1 YzU5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5m by5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IEBA IC0xODAsNiArMTgwLDcgQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAgCX0gZGlzcGxh eTsKPiAgCj4gIAl1MTYgZGRiX3NpemU7IC8qIGluIGJsb2NrcyAqLwo+ICsJdTggc3VwcG9ydGVk X3NsaWNlczsgLyogbnVtYmVyIG9mIERCdWYgc2xpY2VzICovCj4gIAo+ICAJLyogUmVnaXN0ZXIg b2Zmc2V0cyBmb3IgdGhlIHZhcmlvdXMgZGlzcGxheSBwaXBlcyBhbmQgdHJhbnNjb2RlcnMgKi8K PiAgCWludCBwaXBlX29mZnNldHNbSTkxNV9NQVhfVFJBTlNDT0RFUlNdOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IGluZGV4IDJkMzg5ZTQzN2U4Ny4uMWVhODFhYjkyNDI5IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTM1ODYsMjQgKzM1ODYsMjAgQEAgYm9vbCBpbGtfZGlz YWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIF9pbGtfZGlzYWJs ZV9scF93bShkZXZfcHJpdiwgV01fRElSVFlfTFBfQUxMKTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4 IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArc3RhdGljIHU4IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQl1OCBlbmFibGVkX3NsaWNlczsKPiAt Cj4gLQkvKiBTbGljZSAxIHdpbGwgYWx3YXlzIGJlIGVuYWJsZWQgKi8KPiAtCWVuYWJsZWRfc2xp Y2VzID0gMTsKPiArCXU4IGVuYWJsZWRfc2xpY2VzID0gMDsKPiAgCj4gIAkvKiBHZW4gcHJpb3Ig dG8gR0VOMTEgaGF2ZSBvbmx5IG9uZSBEQnVmIHNsaWNlICovCj4gIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDExKQo+IC0JCXJldHVybiBlbmFibGVkX3NsaWNlczsKPiArCQlyZXR1cm4gREJV Rl9TMV9CSVQ7CgpJJ2QgbnVrZSB0aGlzIHNwZWNpYWwgY2FzZSBlbnRpcmVseSBhbmQganVzdCBy ZWFkIGV2ZXJ5dGhpbmcgZnJvbSB0aGUKaHcuIEFzc3VtaW5nIHdlIG5lZWQgcmVhZG91dCBzb21l d2hlcmUuCgo+ICAKPiAtCS8qCj4gLQkgKiBGSVhNRTogZm9yIG5vdyB3ZSdsbCBvbmx5IGV2ZXIg dXNlIDEgc2xpY2U7IHByZXRlbmQgdGhhdCB3ZSBoYXZlCj4gLQkgKiBvbmx5IHRoYXQgMSBzbGlj ZSBlbmFibGVkIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgd2F5IGZvciBvbi1kZW1hbmQKPiAtCSAq IHRvZ2dsaW5nIG9mIHRoZSBzZWNvbmQgc2xpY2UuCj4gLQkgKi8KPiAtCWlmICgwICYmIEk5MTVf UkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKQo+IC0JCWVuYWJsZWRfc2xpY2Vz Kys7Cj4gKwkvKiBDaGVjayBpZiBzZWNvbmQgREJ1ZiBzbGljZSBpcyBlbmFibGVkICovCj4gKwlp ZiAoSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSAmIERCVUZfUE9XRVJfU1RBVEUpCj4gKwkJZW5hYmxl ZF9zbGljZXMgfD0gREJVRl9TMV9CSVQ7Cj4gKwo+ICsJaWYgKEk5MTVfUkVBRChEQlVGX0NUTF9T MikgJiBEQlVGX1BPV0VSX1NUQVRFKQo+ICsJCWVuYWJsZWRfc2xpY2VzIHw9IERCVUZfUzJfQklU Owo+ICAKPiAgCXJldHVybiBlbmFibGVkX3NsaWNlczsKPiAgfQo+IEBAIC0zODEyLDM2ICszODA4 LDM4IEBAIHN0YXRpYyB1MTYgaW50ZWxfZ2V0X2RkYl9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgY29uc3QgaW50IG51bV9hY3RpdmUsCj4gIAkJCSAg ICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYikKPiAgewo+IC0JY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Cj4gLQl1NjQgdG90YWxfZGF0YV9idzsK PiAgCXUxNiBkZGJfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5kZGJfc2l6ZTsKPiAtCj4g IAlXQVJOX09OKGRkYl9zaXplID09IDApOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgMTEpCj4gIAkJcmV0dXJuIGRkYl9zaXplIC0gNDsgLyogNCBibG9ja3MgZm9yIGJ5cGFzcyBw YXRoIGFsbG9jYXRpb24gKi8KPiAgCj4gLQlhZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7Cj4gLQl0b3RhbF9kYXRhX2J3ID0gdG90YWxfZGF0YV9yYXRlICogZHJt X21vZGVfdnJlZnJlc2goYWRqdXN0ZWRfbW9kZSk7Cj4gKwlyZXR1cm4gZGRiX3NpemU7Cj4gK30K PiAgCj4gLQkvKgo+IC0JICogMTJHQi9zIGlzIG1heGltdW0gQlcgc3VwcG9ydGVkIGJ5IHNpbmds ZSBEQnVmIHNsaWNlLgo+IC0JICoKPiAtCSAqIEZJWE1FIGRidWYgc2xpY2UgY29kZSBpcyBicm9r ZW46Cj4gLQkgKiAtIG11c3Qgd2FpdCBmb3IgcGxhbmVzIHRvIHN0b3AgdXNpbmcgdGhlIHNsaWNl IGJlZm9yZSBwb3dlcmluZyBpdCBvZmYKPiAtCSAqIC0gcGxhbmUgc3RyYWRkbGluZyBib3RoIHNs aWNlcyBpcyBpbGxlZ2FsIGluIG11bHRpLXBpcGUgc2NlbmFyaW9zCj4gLQkgKiAtIHNob3VsZCB2 YWxpZGF0ZSB3ZSBzdGF5IHdpdGhpbiB0aGUgaHcgYmFuZHdpZHRoIGxpbWl0cwo+IC0JICovCj4g LQlpZiAoMCAmJiAobnVtX2FjdGl2ZSA+IDEgfHwgdG90YWxfZGF0YV9idyA+PSBHQnBzKDEyKSkp IHsKPiAtCQlkZGItPmVuYWJsZWRfc2xpY2VzID0gMjsKPiAtCX0gZWxzZSB7Cj4gLQkJZGRiLT5l bmFibGVkX3NsaWNlcyA9IDE7Cj4gLQkJZGRiX3NpemUgLz0gMjsKPiAtCX0KPiArLyoKPiArICog Q2FsY3VsYXRlIGluaXRpYWwgREJ1ZiBzbGljZSBvZmZzZXQsIGJhc2VkIG9uIHNsaWNlIHNpemUK PiArICogYW5kIG1hc2soaS5lIGlmIHNsaWNlIHNpemUgaXMgMTAyNCBhbmQgc2Vjb25kIHNsaWNl IGlzIGVuYWJsZWQKPiArICogb2Zmc2V0IHdvdWxkIGJlIDEwMjQpCj4gKyAqLwo+ICtzdGF0aWMg dTMyIHNrbF9nZXRfZmlyc3RfZGJ1Zl9zbGljZV9vZmZzZXQodTMyIGRidWZfc2xpY2VfbWFzaywK PiArCQkJCQkgICB1MzIgc2xpY2Vfc2l6ZSwgdTMyIGRkYl9zaXplKQo+ICt7Cj4gKwl1MzIgb2Zm c2V0ID0gMDsKPiAgCj4gLQlyZXR1cm4gZGRiX3NpemU7Cj4gKwlpZiAoIWRidWZfc2xpY2VfbWFz aykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlvZmZzZXQgPSAoZmZzKGRidWZfc2xpY2VfbWFzaykg LSAxKSAqIHNsaWNlX3NpemU7Cj4gKwo+ICsJV0FSTl9PTihvZmZzZXQgPj0gZGRiX3NpemUpOwo+ ICsJcmV0dXJuIG9mZnNldDsKPiAgfQo+ICAKPiArc3RhdGljIHUzMiBpOTE1X2dldF9hbGxvd2Vk X2RidWZfbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAg ICBpbnQgcGlwZSwgdTMyIGFjdGl2ZV9waXBlcywKPiArCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiArCj4gIHN0YXRpYyB2b2lkCj4gIHNrbF9k ZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gQEAgLTM4NTcsNyArMzg1NSwxNCBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25f bGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXUzMiBwaXBlX3dp ZHRoID0gMCwgdG90YWxfd2lkdGggPSAwLCB3aWR0aF9iZWZvcmVfcGlwZSA9IDA7Cj4gIAllbnVt IHBpcGUgZm9yX3BpcGUgPSB0b19pbnRlbF9jcnRjKGZvcl9jcnRjKS0+cGlwZTsKPiAgCXUxNiBk ZGJfc2l6ZTsKPiArCXUzMiBkZGJfcmFuZ2Vfc2l6ZTsKPiAgCXUzMiBpOwo+ICsJdTMyIGRidWZf c2xpY2VfbWFzazsKPiArCXUzMiBhY3RpdmVfcGlwZXM7Cj4gKwl1MzIgb2Zmc2V0Owo+ICsJdTMy IHNsaWNlX3NpemU7Cj4gKwl1MzIgdG90YWxfc2xpY2VfbWFzazsKPiArCXUzMiBzdGFydCwgZW5k Owo+ICAKPiAgCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkg ewo+ICAJCWFsbG9jLT5zdGFydCA9IDA7Cj4gQEAgLTM4NjYsMTQgKzM4NzEsMjMgQEAgc2tsX2Rk Yl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZl X3BpcGVfY2hhbmdlcykKPiArCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcykg ewo+ICAJCSpudW1fYWN0aXZlID0gaHdlaWdodDgoaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlcyk7 Cj4gLQllbHNlCj4gKwkJYWN0aXZlX3BpcGVzID0gaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlczsK PiArCX0gZWxzZSB7Cj4gIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZl X3BpcGVzKTsKPiArCQlhY3RpdmVfcGlwZXMgPSBkZXZfcHJpdi0+YWN0aXZlX3BpcGVzOwo+ICsJ fQo+ICAKPiAgCWRkYl9zaXplID0gaW50ZWxfZ2V0X2RkYl9zaXplKGRldl9wcml2LCBjcnRjX3N0 YXRlLCB0b3RhbF9kYXRhX3JhdGUsCj4gIAkJCQkgICAgICAqbnVtX2FjdGl2ZSwgZGRiKTsKPiAg Cj4gKwlEUk1fREVCVUdfS01TKCJHb3QgdG90YWwgZGRiIHNpemUgJWRcbiIsIGRkYl9zaXplKTsK PiArCj4gKwlzbGljZV9zaXplID0gZGRiX3NpemUgLyBJTlRFTF9JTkZPKGRldl9wcml2KS0+c3Vw cG9ydGVkX3NsaWNlczsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJHb3QgREJ1ZiBzbGljZSBzaXpl ICVkXG4iLCBzbGljZV9zaXplKTsKPiArCj4gIAkvKgo+ICAJICogSWYgdGhlIHN0YXRlIGRvZXNu J3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJlIGlzIG5vCj4gIAkgKiBtb2Rlc2V0 IHJlcXVlc3QsIHRoZW4gdGhlcmUncyBubyBuZWVkIHRvIHJlY2FsY3VsYXRlOwo+IEBAIC0zODkx LDIwICszOTA1LDcwIEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gKwkv Kgo+ICsJICogR2V0IGFsbG93ZWQgREJ1ZiBzbGljZXMgZm9yIGNvcnJlc3BvbmRlbnQgcGlwZSBh bmQgcGxhdGZvcm0uCj4gKwkgKi8KPiArCWRidWZfc2xpY2VfbWFzayA9IGk5MTVfZ2V0X2FsbG93 ZWRfZGJ1Zl9tYXNrKGRldl9wcml2LCBmb3JfcGlwZSwKPiArCQkJCQkJICAgICBhY3RpdmVfcGlw ZXMsIGNydGNfc3RhdGUpOwoKUXVpdGUgYSBmZXcgcmVkdW5kYW50IGFyZ3VtZW50cy4gVGhlIGZ1 bmN0aW9uIG5hbWUgbG9va3MgYWxpZW4uCgpza2xfY3J0Y19wb3NzaWJsZV9kYnVmX3NsaWNlcygp IG9yIHNvbWV0aGluZyBwZXJoYXBzPwoKPiArCj4gKwlEUk1fREVCVUdfS01TKCJEQnVmIHNsaWNl IG1hc2sgJXggcGlwZSAlZCBhY3RpdmUgcGlwZXMgJXhcbiIsCj4gKwkJICAgICAgZGJ1Zl9zbGlj ZV9tYXNrLAo+ICsJCSAgICAgIGZvcl9waXBlLCBhY3RpdmVfcGlwZXMpOwo+ICsKPiArCS8qCj4g KwkgKiBGaWd1cmUgb3V0IGF0IHdoaWNoIERCdWYgc2xpY2Ugd2Ugc3RhcnQsIGkuZSBpZiB3ZSBz dGFydCBhdCBEYnVmIFMyCj4gKwkgKiBhbmQgc2xpY2Ugc2l6ZSBpcyAxMDI0LCB0aGUgb2Zmc2V0 IHdvdWxkIGJlIDEwMjQKPiArCSAqLwo+ICsJb2Zmc2V0ID0gc2tsX2dldF9maXJzdF9kYnVmX3Ns aWNlX29mZnNldChkYnVmX3NsaWNlX21hc2ssCj4gKwkJCQkJCSBzbGljZV9zaXplLCBkZGJfc2l6 ZSk7Cj4gKwo+ICsJLyoKPiArCSAqIEZpZ3VyZSBvdXQgdG90YWwgc2l6ZSBvZiBhbGxvd2VkIERC dWYgc2xpY2VzLCB3aGljaCBpcyBiYXNpY2FsbHkKPiArCSAqIGEgbnVtYmVyIG9mIGFsbG93ZWQg c2xpY2VzIGZvciB0aGF0IHBpcGUgbXVsdGlwbGllZCBieSBzbGljZSBzaXplLgo+ICsJICogSW5z aWRlIG9mIHRoaXMKPiArCSAqIHJhbmdlIGRkYiBlbnRyaWVzIGFyZSBzdGlsbCBhbGxvY2F0ZWQg aW4gcHJvcG9ydGlvbiB0byBkaXNwbGF5IHdpZHRoLgo+ICsJICovCj4gKwlkZGJfcmFuZ2Vfc2l6 ZSA9IGh3ZWlnaHQ4KGRidWZfc2xpY2VfbWFzaykgKiBzbGljZV9zaXplOwo+ICsKPiAgCS8qCj4g IAkgKiBXYXRlcm1hcmsvZGRiIHJlcXVpcmVtZW50IGhpZ2hseSBkZXBlbmRzIHVwb24gd2lkdGgg b2YgdGhlCj4gIAkgKiBmcmFtZWJ1ZmZlciwgU28gaW5zdGVhZCBvZiBhbGxvY2F0aW5nIEREQiBl cXVhbGx5IGFtb25nIHBpcGVzCj4gIAkgKiBkaXN0cmlidXRlIEREQiBiYXNlZCBvbiByZXNvbHV0 aW9uL3dpZHRoIG9mIHRoZSBkaXNwbGF5Lgo+ICAJICovCj4gKwl0b3RhbF9zbGljZV9tYXNrID0g ZGJ1Zl9zbGljZV9tYXNrOwoKSXNuJ3QgdGhpcyBhbHJlYWR5IHRha2VuIGNhcmUgYnkgdGhlIGxv b3AgYmVsb3c/Cgo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3Rh dGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl Owo+ICAJCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCQlpbnQgaGRpc3BsYXksIHZk aXNwbGF5Owo+ICsJCXUzMiBwaXBlX2RidWZfc2xpY2VfbWFzayA9IFwKPiArCQkJaTkxNV9nZXRf YWxsb3dlZF9kYnVmX21hc2soZGV2X3ByaXYsCj4gKwkJCQkJCXBpcGUsCj4gKwkJCQkJCWFjdGl2 ZV9waXBlcywKPiArCQkJCQkJY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJCWlmICghY3J0Y19zdGF0ZS0+ aHcuZW5hYmxlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gKwkJLyoKPiArCQkgKiBBY2NvcmRpbmcg dG8gQlNwZWMgcGlwZSBjYW4gc2hhcmUgb25lIGRidWYgc2xpY2Ugd2l0aCBhbm90aGVyCj4gKwkJ ICogcGlwZXMgb3IgcGlwZSBjYW4gdXNlIG11bHRpcGxlIGRidWZzLCBpbiBib3RoIGNhc2VzIHdl Cj4gKwkJICogYWNjb3VudCBmb3Igb3RoZXIgcGlwZXMgb25seSBpZiB0aGV5IGhhdmUgZXhhY3Rs eSBzYW1lIG1hc2suCj4gKwkJICogSG93ZXZlciB3ZSBuZWVkIHRvIGFjY291bnQgaG93IG1hbnkg c2xpY2VzIHdlIHNob3VsZCBlbmFibGUKPiArCQkgKiBpbiB0b3RhbC4KPiArCQkgKi8KPiArCQl0 b3RhbF9zbGljZV9tYXNrIHw9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrOwoKdG90YWxfc2xpY2VfbWFz ayB3aWxsIG5vdyBhY2NvdW50IG9ubHkgdGhlIGNydGNzIGluIHRoZSBzdGF0ZS4gV2hhdApoYXBw ZW5zIHRvIHRoZSBvdGhlciBwaXBlcycgc2xpY2VzPwoKPiArCj4gKwkJLyoKPiArCQkgKiBEbyBu b3QgYWNjb3VudCBwaXBlcyB1c2luZyBvdGhlciBzbGljZSBzZXRzCj4gKwkJICogbHVja2lseSBh cyBvZiBjdXJyZW50IEJTcGVjIHNsaWNlIHNldHMgZG8gbm90IHBhcnRpYWxseQo+ICsJCSAqIGlu dGVyc2VjdChwaXBlcyBzaGFyZSBlaXRoZXIgc2FtZSBvbmUgc2xpY2Ugb3Igc2FtZSBzbGljZSBz ZXQKPiArCQkgKiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBlbm91Z2gg dG8gY2hlY2sgZm9yCj4gKwkJICogZXF1YWxpdHkgZm9yIG5vdy4KPiArCQkgKi8KPiArCQlpZiAo ZGJ1Zl9zbGljZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQo+ICsJCQljb250aW51ZTsK PiArCj4gIAkJZHJtX21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3BsYXks ICZ2ZGlzcGxheSk7Cj4gIAkJdG90YWxfd2lkdGggKz0gaGRpc3BsYXk7Cj4gIAo+IEBAIC0zOTE0 LDggKzM5NzgsMTkgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCXBpcGVfd2lkdGggPSBoZGlzcGxheTsK PiAgCX0KPiAgCj4gLQlhbGxvYy0+c3RhcnQgPSBkZGJfc2l6ZSAqIHdpZHRoX2JlZm9yZV9waXBl IC8gdG90YWxfd2lkdGg7Cj4gLQlhbGxvYy0+ZW5kID0gZGRiX3NpemUgKiAod2lkdGhfYmVmb3Jl X3BpcGUgKyBwaXBlX3dpZHRoKSAvIHRvdGFsX3dpZHRoOwo+ICsJZGRiLT5lbmFibGVkX3NsaWNl cyA9IHRvdGFsX3NsaWNlX21hc2s7Cj4gKwo+ICsJc3RhcnQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdp ZHRoX2JlZm9yZV9waXBlIC8gdG90YWxfd2lkdGg7Cj4gKwllbmQgPSBkZGJfcmFuZ2Vfc2l6ZSAq ICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxfd2lkdGg7Cj4gKwo+ICsJ YWxsb2MtPnN0YXJ0ID0gb2Zmc2V0ICsgc3RhcnQ7Cj4gKwlhbGxvYy0+ZW5kID0gb2Zmc2V0ICsg ZW5kOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIlBpcGUgJWQgZGRiICVkLSVkXG4iLCBmb3JfcGlw ZSwKPiArCQkgICAgICBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQpOwo+ICsJRFJNX0RFQlVHX0tN UygiRW5hYmxlZCBkZGIgc2xpY2VzIG1hc2sgJXggbnVtIHN1cHBvcnRlZCAlZFxuIiwKPiArCQkg ICAgICBkZGItPmVuYWJsZWRfc2xpY2VzLAo+ICsJCSAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYp LT5zdXBwb3J0ZWRfc2xpY2VzKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBza2xfY29tcHV0ZV93 bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAg LTQwMzYsNyArNDExMSw4IEBAIHZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlv biAqZGRiIC8qIG91dCAqLykKPiAgewo+IC0JZGRiLT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2Vu YWJsZWRfZGJ1Zl9zbGljZXNfbnVtKGRldl9wcml2KTsKPiArCWRkYi0+ZW5hYmxlZF9zbGljZXMg PSBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzKGRldl9wcml2KTsKPiArCURSTV9ERUJVR19LTVMo IkdvdCBodyBkYnVmIHNsaWNlcyBtYXNrICV4XG4iLCBkZGItPmVuYWJsZWRfc2xpY2VzKTsKPiAg fQo+ICAKPiAgLyoKPiBAQCAtNDE2NCw2ICs0MjQwLDI0MSBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0 aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJl dHVybiB0b3RhbF9kYXRhX3JhdGU7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1aW50X2ZpeGVkXzE2XzE2 X3QKPiAraWNsX3BpcGVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJdTMyIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9o Owo+ICsJdWludF9maXhlZF8xNl8xNl90IGZwX3dfcmF0aW8sIGZwX2hfcmF0aW87Cj4gKwl1aW50 X2ZpeGVkXzE2XzE2X3QgZG93bnNjYWxlX2gsIGRvd25zY2FsZV93Owo+ICsJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0 ZWRfbW9kZTsKPiArCj4gKwlzcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gKwlzcmNf aCA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX2g7Cj4gKwlkc3RfdyA9IGFkanVzdGVkX21vZGUtPmNy dGNfaGRpc3BsYXk7Cj4gKwlkc3RfaCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4g Kwo+ICsJZnBfd19yYXRpbyA9IGRpdl9maXhlZDE2KHNyY193LCBkc3Rfdyk7Cj4gKwlmcF9oX3Jh dGlvID0gZGl2X2ZpeGVkMTYoc3JjX2gsIGRzdF9oKTsKPiArCWRvd25zY2FsZV93ID0gbWF4X2Zp eGVkMTYoZnBfd19yYXRpbywgdTMyX3RvX2ZpeGVkMTYoMSkpOwo+ICsJZG93bnNjYWxlX2ggPSBt YXhfZml4ZWQxNihmcF9oX3JhdGlvLCB1MzJfdG9fZml4ZWQxNigxKSk7Cj4gKwo+ICsJcmV0dXJu IG11bF9maXhlZDE2KGRvd25zY2FsZV93LCBkb3duc2NhbGVfaCk7Cj4gK30KPiArCj4gK3VpbnRf Zml4ZWRfMTZfMTZfdAo+ICtpY2xfZ2V0X3BpcGVfcmF0aW8oY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ ICsJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqZHJtX3BsYW5lX3N0YXRlOwo+ICsJdWlu dF9maXhlZF8xNl8xNl90IHBpcGVfZG93bnNjYWxlLCBwaXBlX3JhdGlvOwo+ICsJdWludF9maXhl ZF8xNl8xNl90IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKPiArCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ ICsKPiArCWlmICghY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCj4gKwkJcmV0dXJuIG1heF9kb3du c2NhbGU7Cj4gKwo+ICsJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRl KHBsYW5lLCBkcm1fcGxhbmVfc3RhdGUsICZjcnRjX3N0YXRlLT51YXBpKSB7Cj4gKwkJdWludF9m aXhlZF8xNl8xNl90IHBsYW5lX2Rvd25zY2FsZTsKPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiArCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3Bs YW5lX3N0YXRlKTsKPiArCj4gKwkJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXBsYW5lX2Rvd25zY2Fs ZSA9IHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsK PiArCj4gKwkJRFJNX0RFQlVHX0tNUygiUGxhbmUgJWQgZG93bnNjYWxlIGFtb3VudCAlZC4lZFxu IiwKPiArCQkJICAgICAgdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZCwKPiArCQkJICAgICAgcGxh bmVfZG93bnNjYWxlLnZhbCA+PiAxNiwKPiArCQkJICAgICAgcGxhbmVfZG93bnNjYWxlLnZhbCAm IDB4ZmZmZik7Cj4gKwo+ICsJCW1heF9kb3duc2NhbGUgPSBtYXhfZml4ZWQxNihwbGFuZV9kb3du c2NhbGUsIG1heF9kb3duc2NhbGUpOwo+ICsJfQo+ICsKPiArCj4gKwlwaXBlX2Rvd25zY2FsZSA9 IGljbF9waXBlX2Rvd25zY2FsZV9hbW91bnQoY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJRFJNX0RFQlVH X0tNUygiUGlwZSAlZCBkb3duc2NhbGUgYW1vdW50ICVkLiVkXG4iLAo+ICsJCSAgICAgICBjcnRj LT5waXBlLCBwaXBlX2Rvd25zY2FsZS52YWwgPj4gMTYsCj4gKwkJICAgICAgIHBpcGVfZG93bnNj YWxlLnZhbCAmIDB4ZmZmZik7Cj4gKwo+ICsJcGlwZV9kb3duc2NhbGUgPSBtdWxfZml4ZWQxNihw aXBlX2Rvd25zY2FsZSwgbWF4X2Rvd25zY2FsZSk7Cj4gKwo+ICsJLyoKPiArCSAqIENvbnZlcnQg cmVzdWx0IHRvIHBlcmNlbnRhZ2U6IGdldCB0aGUgYWN0dWFsIHJhdGlvIGluc3RlYWQgb2YgcmF0 ZSwKPiArCSAqIHRoZW4gbXVsdGlwbHkgYnkgMTAwIHRvIGdldCBwZXJjZW50YWdlLgo+ICsJICov Cj4gKwlwaXBlX3JhdGlvID0gdTMyX3RvX2ZpeGVkMTYoMTAwICogZGl2X3JvdW5kX3VwX3UzMl9m aXhlZDE2KDEsIHBpcGVfZG93bnNjYWxlKSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUGlwZSAl ZCByYXRpbyAlZC4lZFxuIiwgY3J0Yy0+cGlwZSwKPiArCQkgICAgICBwaXBlX3JhdGlvLnZhbCA+ PiAxNiwgcGlwZV9yYXRpby52YWwgJiAweGZmZmYpOwo+ICsKPiArCXJldHVybiBwaXBlX3JhdGlv Owo+ICt9CgpZdWNrLiBJIGp1c3Qga2lsbGVkIHRoZXNlLgoKPiArCj4gK3N0cnVjdCBkYnVmX3Ns aWNlX2NvbmZfZW50cnkgewo+ICsJdTMyIGRidWZfbWFza1tJOTE1X01BWF9QSVBFU107Cj4gKwl1 MzIgYWN0aXZlX3BpcGVzOwo+ICt9Owo+ICsKPiArCj4gKyNkZWZpbmUgSUNMX1BJUEVfQV9EQlVG X1NMSUNFUyhEQnVmMSkgIFwKPiArCXsgeyBEQnVmMSwgMCwgMCwgMCB9LCBCSVQoUElQRV9BKSB9 Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhEQnVmMSkgIFwKPiArCXsgeyAwLCBE QnVmMSwgMCwgMCB9LCBCSVQoUElQRV9CKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQ19EQlVGX1NM SUNFUyhEQnVmMSkgIFwKPiArCXsgeyAwLCAwLCBEQnVmMSwgMCB9LCBCSVQoUElQRV9DKSB9Cj4g KyNkZWZpbmUgSUNMX1BJUEVfRF9EQlVGX1NMSUNFUyhEQnVmMSkgIFwKPiArCXsgeyAwLCAwLCAw LCBEQnVmMSB9LCBCSVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJfREJVRl9TTElD RVMoREJ1ZjEsIERCdWYyKSAgIFwKPiArCXsgeyBEQnVmMSwgREJ1ZjIsIDAsIDAgfSwgQklUKFBJ UEVfQSkgfCBCSVQoUElQRV9CKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQkNfREJVRl9TTElDRVMo REJ1ZjEsIERCdWYyKSAgIFwKPiArCXsgeyAwLCBEQnVmMSwgREJ1ZjIsIDAgfSwgQklUKFBJUEVf QikgfCBCSVQoUElQRV9DKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQkRfREJVRl9TTElDRVMoREJ1 ZjEsIERCdWYyKSAgIFwKPiArCXsgeyAwLCBEQnVmMSwgMCwgREJ1ZjIgfSwgQklUKFBJUEVfQikg fCBCSVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUNfREJVRl9TTElDRVMoREJ1ZjEs IERCdWYyKSAgIFwKPiArCXsgeyBEQnVmMSwgMCwgREJ1ZjIsIDAgfSwgQklUKFBJUEVfQSkgfCBC SVQoUElQRV9DKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQURfREJVRl9TTElDRVMoREJ1ZjEsIERC dWYyKSAgIFwKPiArCXsgeyBEQnVmMSwgMCwgMCwgREJ1ZjIgfSwgQklUKFBJUEVfQSkgfCBCSVQo UElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYy KSAgIFwKPiArCXsgeyAwLCAwLCBEQnVmMSwgREJ1ZjIgfSwgQklUKFBJUEVfQykgfCBCSVQoUElQ RV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJDX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMiwg REJ1ZjMpICBcCj4gKwl7IHsgREJ1ZjEsIERCdWYyLCBEQnVmMywgMCB9LCBCSVQoUElQRV9BKSB8 IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FDRF9EQlVG X1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCAwLCBEQnVmMiwg REJ1ZjMgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9DKSB8IEJJVChQSVBFX0QpIH0KPiArI2Rl ZmluZSBJQ0xfUElQRV9CQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyLCBEQnVmMykgIFwKPiAr CXsgeyAwLCBEQnVmMSwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQykg fCBCSVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJEX0RCVUZfU0xJQ0VTKERCdWYx LCBEQnVmMiwgREJ1ZjMpICBcCj4gKwl7IHsgREJ1ZjEsIERCdWYyLCAwLCBEQnVmMyB9LCBCSVQo UElQRV9BKSB8IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBF X0FCQ19EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCBE QnVmMiwgREJ1ZjMsIDAgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0Mp IH0KPiArI2RlZmluZSBJQ0xfUElQRV9BQkNEX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMiwgREJ1 ZjMsIERCdWY0KSAgXAo+ICsJeyB7IERCdWYxLCBEQnVmMiwgREJ1ZjMsIERCdWY0IH0sIEJJVChQ SVBFX0EpIHwgQklUKFBJUEVfQikgfCBcCj4gKwkJCQkJICBCSVQoUElQRV9DKSB8IEJJVChQSVBF X0QpIH0KPiArCj4gKy8qCj4gKyAqIFRhYmxlIHRha2VuIGZyb20gQnNwZWMgMTI3MTYKPiArICog UGlwZXMgZG8gaGF2ZSBzb21lIHByZWZlcnJlZCBEQnVmIHNsaWNlIGFmZmluaXR5LAo+ICsgKiBw bHVzIHRoZXJlIGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93Cj4gKyAqIHRo b3NlIHNob3VsZCBiZSBkaXN0cmlidXRlZCBmb3IgbXVsdGlwaXBlIHNjZW5hcmlvcy4KPiArICog Rm9yIG1vcmUgREJ1ZiBzbGljZXMgYWxnb3JpdGhtIGNhbiBnZXQgZXZlbiBtb3JlIG1lc3N5Cj4g KyAqIGFuZCBsZXNzIHJlYWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAo+ ICsgKiBhcyBpcyBmcm9tIEJTcGVjIGl0c2VsZiAtIHRoYXQgd2F5IGl0IGlzIGF0IGxlYXN0IGVh c2llcgo+ICsgKiB0byBjb21wYXJlLCBjaGFuZ2UgYW5kIGNoZWNrLgo+ICsgKi8KPiArc3RydWN0 IGRidWZfc2xpY2VfY29uZl9lbnRyeSBpY2xfYWxsb3dlZF9kYnVmc1tdID0gewo+ICt7IHsgMCwg MCwgMCwgMCB9LCAwIH0sCj4gK0lDTF9QSVBFX0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBE QlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLwo+ICtJQ0xfUElQRV9BX0RCVUZf U0xJQ0VTKERCVUZfUzFfQklUKSwgICAgICAgICAgICAgICAgLyogZm9yIHBpcGUgcmF0aW8gPj0g ODguOCAqLwo+ICtJQ0xfUElQRV9CX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklUIHwgREJVRl9TMl9C SVQpLCAgLyogcGlwZSByYXRpbyA8IDg4LjggKi8KPiArSUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhE QlVGX1MxX0JJVCksICAgICAgICAgICAgICAgIC8qIGZvciBwaXBlIHJhdGlvID49IDg4LjggKi8K PiArSUNMX1BJUEVfQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCB8IERCVUZfUzJfQklUKSwgIC8q IHBpcGUgcmF0aW8gPCA4OC44ICovCj4gK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMl9C SVQpLCAgICAgICAgICAgICAgICAvKiBmb3IgcGlwZSByYXRpbyA+PSA4OC44ICovCj4gK0lDTF9Q SVBFX0FCX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBF X0FDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0JD X0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0FCQ19E QlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJfQklUKSwKPiArfTsK PiArCj4gKy8qCj4gKyAqIFRhYmxlIHRha2VuIGZyb20gQnNwZWMgNDkyNTUKPiArICogUGlwZXMg ZG8gaGF2ZSBzb21lIHByZWZlcnJlZCBEQnVmIHNsaWNlIGFmZmluaXR5LAo+ICsgKiBwbHVzIHRo ZXJlIGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93Cj4gKyAqIHRob3NlIHNo b3VsZCBiZSBkaXN0cmlidXRlZCBmb3IgbXVsdGlwaXBlIHNjZW5hcmlvcy4KPiArICogRm9yIG1v cmUgREJ1ZiBzbGljZXMgYWxnb3JpdGhtIGNhbiBnZXQgZXZlbiBtb3JlIG1lc3N5Cj4gKyAqIGFu ZCBsZXNzIHJlYWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAo+ICsgKiBh cyBpcyBmcm9tIEJTcGVjIGl0c2VsZiAtIHRoYXQgd2F5IGl0IGlzIGF0IGxlYXN0IGVhc2llcgo+ ICsgKiB0byBjb21wYXJlLCBjaGFuZ2UgYW5kIGNoZWNrLgo+ICsgKi8KPiArc3RydWN0IGRidWZf c2xpY2VfY29uZl9lbnRyeSB0Z2xfYWxsb3dlZF9kYnVmc1tdID0gewo+ICt7IHsgMCwgMCwgMCwg MCB9LCAwIH0sCj4gK0lDTF9QSVBFX0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1My X0JJVCksCj4gK0lDTF9QSVBFX0JfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJ VCksCj4gK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCks Cj4gK0lDTF9QSVBFX0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksCj4g K0lDTF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCVUZfUzJfQklULCBEQlVGX1MxX0JJVCksCj4gK0lD TF9QSVBFX0FDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9Q SVBFX0JDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBF X0FEX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0JE X0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0NEX0RC VUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0FCRF9EQlVG X1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJfQklUKSwKPiArSUNMX1BJ UEVfQUJDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAo+ICtJQ0xfUElQRV9BQ0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzJfQklULCBE QlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0JDRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJV Rl9TMl9CSVQsIERCVUZfUzJfQklUKSwKPiArSUNMX1BJUEVfQUJDRF9EQlVGX1NMSUNFUyhEQlVG X1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCj4gK307CgpN eSBleWVzIQoKSSBoYXZlIHRvIHRoaW5rIHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlZHVjZSBhbGwg dGhhdCB0byBhIGhhbmRmdWwKb2YgbGluZXMgb2YgY29kZS4KCgo+ICsKPiArLyoKPiArICogVGhp cyBmdW5jdGlvbgoKIlRoaXMgZnVuY3Rpb24iIGlzIHRvdGFsbHkgcmVkdW5kYW50LiBEaXR0byBl bHNld2hlcmUuCgo+IGZpbmRzIGFuIGVudHJ5IHdpdGggc2FtZSBlbmFibGVkIHBpcGUgY29uZmln dXJhdGlvbiBhbmQKPiArICogcmV0dXJucyBjb3JyZXNwb25kZW50IERCdWYgc2xpY2UgbWFzayBh cyBzdGF0ZWQgaW4gQlNwZWMgZm9yIHBhcnRpY3VsYXIKPiArICogcGxhdGZvcm0uCj4gKyAqLwo+ ICtzdGF0aWMgdTMyIGljbF9nZXRfYWxsb3dlZF9kYnVmX21hc2soaW50IHBpcGUsCj4gKwkJCQkg ICAgIHUzMiBhY3RpdmVfcGlwZXMsCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpbnQgaTsKPiArCXVpbnRfZml4ZWRfMTZfMTZf dCBwaXBlX3JhdGlvOwo+ICsKPiArCS8qCj4gKwkgKiBDYWxjdWxhdGUgcGlwZSByYXRpbyBhcyBz dGF0ZWQgaW4gQlNwZWMgMjg2OTIKPiArCSAqLwo+ICsJcGlwZV9yYXRpbyA9IGljbF9nZXRfcGlw ZV9yYXRpbyhjcnRjX3N0YXRlKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShp Y2xfYWxsb3dlZF9kYnVmcyk7IGkrKykgewo+ICsJCWlmIChpY2xfYWxsb3dlZF9kYnVmc1tpXS5h Y3RpdmVfcGlwZXMgPT0gYWN0aXZlX3BpcGVzKSB7Cj4gKwkJCWlmIChod2VpZ2h0MzIoYWN0aXZl X3BpcGVzKSA9PSAxKSB7Cj4gKwkJCQkvKgo+ICsJCQkJICogQWNjb3JkaW5nIHRvIEJTcGVjIDEy NzE2OiBpZiByYXRpbyA+PSA4OC44Cj4gKwkJCQkgKiBhbHdheXMgdXNlIHNpbmdsZSBkYnVmIHNs aWNlLgo+ICsJCQkJICovCj4gKwkJCQlpZiAocGlwZV9yYXRpby52YWwgPj0gZGl2X2ZpeGVkMTYo ODg4LCAxMCkudmFsKQo+ICsJCQkJCSsraTsKPiArCQkJfQo+ICsJCQlyZXR1cm4gaWNsX2FsbG93 ZWRfZGJ1ZnNbaV0uZGJ1Zl9tYXNrW3BpcGVdOwo+ICsJCX0KPiArCX0KPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuIGVudHJ5IHdpdGggc2Ft ZSBlbmFibGVkIHBpcGUgY29uZmlndXJhdGlvbiBhbmQKPiArICogcmV0dXJucyBjb3JyZXNwb25k ZW50IERCdWYgc2xpY2UgbWFzayBhcyBzdGF0ZWQgaW4gQlNwZWMgZm9yIHBhcnRpY3VsYXIKPiAr ICogcGxhdGZvcm0uCj4gKyAqLwo+ICtzdGF0aWMgdTMyIHRnbF9nZXRfYWxsb3dlZF9kYnVmX21h c2soaW50IHBpcGUsCj4gKwkJCQkgICAgIHUzMiBhY3RpdmVfcGlwZXMsCj4gKwkJCQkgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpbnQgaTsK PiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0Z2xfYWxsb3dlZF9kYnVmcyk7IGkr Kykgewo+ICsJCWlmICh0Z2xfYWxsb3dlZF9kYnVmc1tpXS5hY3RpdmVfcGlwZXMgPT0gYWN0aXZl X3BpcGVzKQo+ICsJCQlyZXR1cm4gdGdsX2FsbG93ZWRfZGJ1ZnNbaV0uZGJ1Zl9tYXNrW3BpcGVd Owo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3UzMiBpOTE1X2dldF9hbGxvd2VkX2Ri dWZfbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgICBp bnQgcGlwZSwgdTMyIGFjdGl2ZV9waXBlcywKPiArCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAx MSkpCj4gKwkJcmV0dXJuIGljbF9nZXRfYWxsb3dlZF9kYnVmX21hc2socGlwZSwKPiArCQkJCQkJ IGFjdGl2ZV9waXBlcywKPiArCQkJCQkJIGNydGNfc3RhdGUpOwo+ICsJZWxzZSBpZiAoSVNfR0VO KGRldl9wcml2LCAxMikpCj4gKwkJcmV0dXJuIHRnbF9nZXRfYWxsb3dlZF9kYnVmX21hc2socGlw ZSwKPiArCQkJCQkJIGFjdGl2ZV9waXBlcywKPiArCQkJCQkJIGNydGNfc3RhdGUpOwo+ICsJLyoK PiArCSAqIEZvciBhbnl0aGluZyBlbHNlIGp1c3QgcmV0dXJuIG9uZSBzbGljZSB5ZXQuCj4gKwkg KiBTaG91bGQgYmUgZXh0ZW5kZWQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KPiArCSAqLwo+ICsJcmV0 dXJuIERCVUZfUzFfQklUOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdTY0Cj4gIGljbF9nZXRfdG90YWxf cmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAJCQkJIHU2NCAqcGxhbmVfZGF0YV9yYXRlKQo+IC0tIAo+IDIuMTcuMQoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n Zng= 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 50FF5C432C3 for ; Fri, 15 Nov 2019 20:19:50 +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 2E1F32073A for ; Fri, 15 Nov 2019 20:19:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2E1F32073A 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 D33C16E857; Fri, 15 Nov 2019 20:19:49 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id AA28E6E857 for ; Fri, 15 Nov 2019 20:19:48 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2019 12:19:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,309,1569308400"; d="scan'208";a="203481023" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by fmsmga008.fm.intel.com with SMTP; 15 Nov 2019 12:19:45 -0800 Received: by stinkbox (sSMTP sendmail emulation); Fri, 15 Nov 2019 22:19:44 +0200 Date: Fri, 15 Nov 2019 22:19:44 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Stanislav Lisovskiy Message-ID: <20191115201944.GO1208@intel.com> References: <20191114122449.26409-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191114122449.26409-1-stanislav.lisovskiy@intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) 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: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191115201944.BO32lI0TXL_IFHaTzSmSzyvdA0rFwv8JRSLQ757B8FM@z> T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDI6MjQ6NDlQTSArMDIwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBBbHNvIGltcGxlbWVudGVkIGFsZ29yaXRobSBmb3IgY2hvb3NpbmcgREJ1 ZiBzbGljZSBjb25maWd1cmF0aW9uCj4gYmFzZWQgb24gYWN0aXZlIHBpcGVzLCBwaXBlIHJhdGlv IGFzIHN0YXRlZCBpbiBCU3BlYyAxMjcxNi4KPiAKPiBOb3cgcGlwZSBhbGxvY2F0aW9uIHN0aWxs IHN0YXlzIHByb3BvcnRpb25hbCB0byBwaXBlIHdpZHRoIGFzIGJlZm9yZSwKPiBob3dldmVyIHdp dGhpbiBhbGxvd2VkIERCdWYgc2xpY2UgZm9yIHRoaXMgcGFydGljdWxhciBjb25maWd1cmF0aW9u Lgo+IAo+IHYyOiBSZW1vdmUgdW5uZWVkZWQgY2hlY2sgZnJvbSBjb21taXQgYXMgZGRiIGVuYWJs ZWQgc2xpY2VzIG1pZ2h0Cj4gICAgIG5vdyBkaWZmZXIgZnJvbSBodyBzdGF0ZS4KPiAKPiB2Mzog LSBBZGRlZCBuZXcgZmllbGQgInN1cHBvcnRlZF9zbGljZXMiIHRvIGRkYiB0byBzZXBhcmF0ZSBt YXgKPiAgICAgICBzdXBwb3J0ZWQgc2xpY2VzIHZzIGN1cnJlbnRseSBlbmFibGVkLCB0byBhdm9p ZCBjb25mdXNpb24uCj4gICAgIC0gUmVtb3ZlZCBvYnNvbGV0ZSBjb21tZW50cyBhbmQgY29kZSBy ZWxhdGVkIHRvIERCdWYoTWF0dGhldyBSb3BlcikuCj4gICAgIC0gU29tZSBjb2RlIHN0eWxlIGFu ZCBsb25nIGxpbmUgcmVtb3ZhbChNYXR0aGV3IFJvcGVyKS4KPiAgICAgLSBBZGRlZCBXQVJOX09O IHRvIG5ldyBkZGIgcmFuZ2Ugb2Zmc2V0IGNhbGMgZnVuY3Rpb24oTWF0dGhldyBSb3BlcikuCj4g ICAgIC0gUmVtb3ZlZCBwbGF0Zm9ybSBzcGVjaWZpYyBjYWxsIHRvIGNhbGMgcGlwZSByYXRpbyBm cm9tIGRkYgo+ICAgICAgIGFsbG9jYXRpb24gZnVuY3Rpb24gYW5kIGZpeGVkIHRoZSByZXR1cm4g dmFsdWUoTWF0dGhldyBSb3BlcikKPiAgICAgLSBSZWZhY3RvcmVkIERCVUYgc2xpY2UgYWxsb2Nh dGlvbiB0YWJsZSB0byBpbXByb3ZlIHJlYWRhYmlsaXR5Cj4gICAgIC0gQWRkZWQgREJVRiBzbGlj ZSBhbGxvY2F0aW9uIGZvciBUR0wgYXMgd2VsbC4KPiAgICAgLSBJQ0woaG93ZXZlciBub3QgVEdM KSBzZWVtcyB0byB2b2x1bnRhcmlseSBlbmFibGUgc2Vjb25kIERCdWYgc2xpY2UKPiAgICAgICBh ZnRlciBwbSBzdXNwZW5kL3Jlc3VtZSBjYXVzaW5nIGEgbWlzbWF0Y2ggZmFpbHVyZSwgYmVjYXVz ZSB3ZQo+ICAgICAgIHVwZGF0ZSBEQnVmIHNsaWNlcyBvbmx5IGlmIHdlIGRvIGEgbW9kZXNldCwg aG93ZXZlciB0aGlzIGNoZWNrCj4gICAgICAgaXMgZG9uZSBhbHdheXMuIEZpeGVkIGl0IHRvIGJl IGRvbmUgb25seSB3aGVuIG1vZGVzZXQgZm9yIElDTC4KPiAKPiB2NDogLSBOb3cgZW5hYmxlZCBz bGljZXMgaXMgbm90IGFjdHVhbGx5IGEgbnVtYmVyLCBidXQgYSBiaXRtYXNrLAo+ICAgICAgIGJl Y2F1c2Ugd2UgbWlnaHQgbmVlZCB0byBlbmFibGUgc2Vjb25kIHNsaWNlIG9ubHkgYW5kIG51bWJl cgo+ICAgICAgIG9mIHNsaWNlcyB3b3VsZCBzdGlsbCAxIGFuZCB0aGF0IGN1cnJlbnQgY29kZSBk b2Vzbid0IGFsbG93Lgo+ICAgICAtIFJlbW92ZSByZWR1bmRhbnQgZHVwbGljYXRlIGNvZGUgdG8g aGF2ZSBzb21lIHVuaWZpZWQgd2F5IG9mCj4gICAgICAgZW5hYmxpbmcgZGJ1ZiBzbGljZXMgaW5z dGVhZCBvZiBoYXJkY29kaW5nLgo+IAo+IHY1OiAtIEZpeCBmYWlsaW5nIGdlbjlfYXNzZXJ0X2Ri dWZfZW5hYmxlZCBhcyBpdCB3YXMgbmFpdmVseSB0aGlua2luZwo+ICAgICAgIHRoYXQgd2UgaGF2 ZSBvbmx5IG9uZSBEQlVGX0NUTCBzbGljZS4gTm93IGFub3RoZXIgdmVyc2lvbiBmb3IKPiAgICAg ICBnZW4xMSB3aWxsIGNoZWNrIGJvdGggc2xpY2VzIGFzIG9ubHkgc2Vjb25kIG9uZSBjYW4gYmUg ZW5hYmxlZCwKPiAgICAgICB0byBrZWVwIENJIGhhcHB5Lgo+IAo+IHY2OiAtIFJlbW92ZWQgZW5h YmxlZCBkYnVmIGFzc2VydGlvbiBjb21wbGV0ZWx5LiBQcmV2aW91cyBjb2RlCj4gICAgICAgd2Fz IGtlZXBpbmcgZGJ1ZiBlbmFibGVkLCBldmVuKCEpIHdoZW4gX2RidWZfZGlzYWJsZSBpcyBjYWxs ZWQuCj4gICAgICAgQ3VycmVudGx5IHdlIGVuYWJsZS9kaXNhYmxlIGRidWYgc2xpY2VzIGJhc2Vk IG9uIHJlcXVyZW1lbnQKPiAgICAgICBzbyBubyBwb2ludCBpbiBhc3NlcnRpbmcgdGhpcyBoZXJl Lgo+ICAgICAtIFJlbW92ZWQgdW5uZWNlc3NhcnkgbW9kZXNldCBjaGVjayBmcm9tIHZlcmlmeV93 bV9zdGF0ZShNYXR0aGV3IFJvcGVyKQo+ICAgICAtIFNsaWNlcyBpbnRlcnNlY3Rpb24gYWZ0ZXIg dW5pb24gaXMgc2FtZSBhcyBmaW5hbCByZXN1bHQoTWF0dGhldyBSb3BlcikKPiAgICAgLSBNb3Zl ZCBEQnVmIHNsaWNlcyB0byBpbnRlbF9kZXZpY2VfaW5mbyhNYXR0aGV3IFJvcGVyKQo+ICAgICAt IFNvbWUgbWFjcm9zIGFkZGVkKE1hdHRoZXcgUm9wZXIpCj4gICAgIC0gZGRiIHJhbmdlIGlzIG5v dyBhbHdheXMgbGVzcyBvciBlcXVhbCB0byBkZGIgc2l6ZSAtIG5vIG5lZWQgZm9yIGFkZGl0aW9u YWwKPiAgICAgICBjaGVja3MocHJldmlvdXNseSBuZWVkZWQgYXMgd2UgaGFkIHNvbWUgYmFuZHdp ZHRoIGNoZWNrcyBpbiB0aGVyZSB3aGljaAo+ICAgICAgIGNvdWxkICJzdWRkZW5seSIgcmV0dXJu IGRkYl9zaXplIHNtYWxsZXIgdGhhbiBpdCBpcy4KPiAKPiB2NzogTWlub3IgY29zdGVtaWMgY2hh bmdlczoKPiAgICAgLSBDaGFuZ2VkIGljbF9kYnVmX3NsaWNlc19yZXN0b3JlIG5hbWUgdG8gaWNs X3Byb2dyYW1fZGJ1Zl9zbGljZXMKPiAgICAgICBhcyBpdCBtb3JlIGNvcnJlc3BvbmRzIHRvIHRo ZSBhY3R1YWwgZnVuY3Rpb25hbGl0eS4KPiAgICAgLSBTb21lIHNpbXBsaWZpY2F0aW9uIHdpdGgg c3VwcG9ydGVkIHNsaWNlcyBmb3IgQlhUIGFuZCBHTEsKPiAgICAgLSBza2xfcGlwZV9kb3duc2Nh bGVfYW1vdW50IC0+IGljbF9waXBlX2Rvd25zY2FsZV9hbW91bnQgYXMKPiAgICAgICB0aGlzIGlz IG5vdCB1c2VkIGZvciBza2wgYW55bW9yZS4KPiAgICAgLSBDaGFuZ2VkIERCdWYgc2xpY2UgYXNz aWdubWVudCBvcmRlciBmb3IgVEdMIGNhc2UKPiAKPiBSZXZpZXdlZC1ieTogTWF0dGhldyBSb3Bl ciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBTdGFuaXNsYXYg TGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KPiBDYzogTWF0dGhldyBS b3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGludGVsLmNvbT4KPiBDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5hdXNtdXNA aW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYyAgfCAgMjYgKy0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9w b3dlci5jICAgIHwgIDk4ICsrLS0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfcG93ZXIuaCAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg ICAgICAgICAgICAgICB8ICAgNSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5j ICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgICAgICAgICAgICAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmggICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMgICAgICAgICAgICAgICB8IDM4NyArKysrKysrKysrKysrKysrLS0KPiAgOSBmaWxlcyBjaGFu Z2VkLCA0MzEgaW5zZXJ0aW9ucygrKSwgMTA0IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggODc2ZmMyNTk2OGJm Li5iZDdhZmY2NzUxOTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwo+IEBAIC0xMzM4Nyw3ICsxMzM4Nyw3IEBAIHN0YXRpYyB2b2lkIHZlcmlm eV93bV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMSAmJgo+ICAJICAgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMgIT0gc3df ZGRiLT5lbmFibGVkX3NsaWNlcykKPiAtCQlEUk1fRVJST1IoIm1pc21hdGNoIGluIERCVUYgU2xp Y2VzIChleHBlY3RlZCAldSwgZ290ICV1KVxuIiwKPiArCQlEUk1fRVJST1IoIm1pc21hdGNoIGlu IERCVUYgU2xpY2VzIChleHBlY3RlZCAleCwgZ290ICV4KVxuIiwKPiAgCQkJICBzd19kZGItPmVu YWJsZWRfc2xpY2VzLAo+ICAJCQkgIGh3LT5kZGIuZW5hYmxlZF9zbGljZXMpOwo+ICAKPiBAQCAt MTQ2MTQsMTUgKzE0NjE0LDI0IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFi bGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJdTggaHdfZW5hYmxlZF9z bGljZXMgPSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlczsKPiAgCXU4IHJl cXVpcmVkX3NsaWNlcyA9IHN0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKPiAg CXN0cnVjdCBza2xfZGRiX2VudHJ5IGVudHJpZXNbSTkxNV9NQVhfUElQRVNdID0ge307Cj4gKwl1 OCBzbGljZXNfdW5pb24gPSBod19lbmFibGVkX3NsaWNlcyB8IHJlcXVpcmVkX3NsaWNlczsKPiAr CXU4IHNsaWNlc19pbnRlcnNlY3Rpb24gPSByZXF1aXJlZF9zbGljZXM7Cj4gIAo+ICAJZm9yX2Vh Y2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiAgCQkvKiBpZ25vcmUgYWxsb2NhdGlvbnMgZm9yIGNydGMn cyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2ZmLiAqLwo+ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ aHcuYWN0aXZlKQo+ICAJCQllbnRyaWVzW2ldID0gb2xkX2NydGNfc3RhdGUtPndtLnNrbC5kZGI7 Cj4gIAo+IC0JLyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJlICov Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiByZXF1aXJlZF9zbGljZXMgPiBo d19lbmFibGVkX3NsaWNlcykKPiAtCQlpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LCBy ZXF1aXJlZF9zbGljZXMpOwo+ICsJRFJNX0RFQlVHX0tNUygiREJ1ZiByZXEgc2xpY2VzICVkIGh3 IHNsaWNlcyAlZFxuIiwKPiArCQkgICAgICByZXF1aXJlZF9zbGljZXMsIGh3X2VuYWJsZWRfc2xp Y2VzKTsKPiArCj4gKwkvKgo+ICsJICogSWYgc29tZSBvdGhlciBEQnVmIHNsaWNlIHJlcXVpcmVk LCBlbmFibGUgaXQgaGVyZSwKPiArCSAqIGFzIGhlcmUgd2Ugb25seSBhZGQgbW9yZSBzbGljZXMs IGJ1dCBub3QgcmVtb3ZlIHRvIHByZXZlbnQKPiArCSAqIGlzc3VlcyBpZiBzb21lYm9keSBzdGls bCB1c2VzIHRob3NlLgo+ICsJICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAm JiByZXF1aXJlZF9zbGljZXMgIT0gaHdfZW5hYmxlZF9zbGljZXMpCj4gKwkJaWNsX2RidWZfc2xp Y2VzX3VwZGF0ZShkZXZfcHJpdiwgc2xpY2VzX3VuaW9uKTsKPiAgCj4gIAkvKgo+ICAJICogV2hl bmV2ZXIgdGhlIG51bWJlciBvZiBhY3RpdmUgcGlwZXMgY2hhbmdlcywgd2UgbmVlZCB0byBtYWtl IHN1cmUgd2UKPiBAQCAtMTQ2ODEsOSArMTQ2OTAsMTIgQEAgc3RhdGljIHZvaWQgc2tsX2NvbW1p dF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJ fQo+ICAJfSB3aGlsZSAocHJvZ3Jlc3MpOwo+ICAKPiAtCS8qIElmIDJuZCBEQnVmIHNsaWNlIGlz IG5vIG1vcmUgcmVxdWlyZWQgZGlzYWJsZSBpdCAqLwo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTEgJiYgcmVxdWlyZWRfc2xpY2VzIDwgaHdfZW5hYmxlZF9zbGljZXMpCj4gLQkJaWNs X2RidWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwgcmVxdWlyZWRfc2xpY2VzKTsKPiArCS8qCj4g KwkgKiBJZiBzb21lIG90aGVyIERCdWYgc2xpY2UgaXMgbm90IG5lZWRlZCwgZGlzYWJsZSBpdCBo ZXJlLAo+ICsJICogYXMgaGVyZSB3ZSBvbmx5IHJlbW92ZSBzbGljZXMsIHdoaWNoIGFyZSBub3Qg bmVlZGVkIGFueW1vcmUuCj4gKwkgKi8KPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx ICYmIHJlcXVpcmVkX3NsaWNlcyAhPSBod19lbmFibGVkX3NsaWNlcykKPiArCQlpY2xfZGJ1Zl9z bGljZXNfdXBkYXRlKGRldl9wcml2LCBzbGljZXNfaW50ZXJzZWN0aW9uKTsKClRoaXMgaXMgc3Rp bGwgYSB0b3RhbGx5IHdyb25nIHBsYWNlIGZvciB0aGlzLiBXZSBuZWVkIHRvIGJlIHN1cmUgdGhl CnBsYW5lcyBoYXZlIHN3aXRjaGVkIG92ZXIgdG8gdGhlIG5ldyBkZGIgbGF5b3V0IGJlZm9yZSB3 ZSBwb3dlciBvZmYKYW55dGhpbmcuCgo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9hdG9t aWNfaGVscGVyX2ZyZWVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf cG93ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dl ci5jCj4gaW5kZXggY2UxYjY0ZjRkZDQ0Li5hNzhiYzliNjE4NjIgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwo+IEBAIC0x MDMxLDE1ICsxMDMxLDYgQEAgc3RhdGljIGJvb2wgZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9lbmFi bGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkoSTkxNV9SRUFEKERD X1NUQVRFX0VOKSAmIERDX1NUQVRFX0VOX1VQVE9fREM1X0RDNl9NQVNLKSA9PSAwKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgZ2VuOV9hc3NlcnRfZGJ1Zl9lbmFibGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAtewo+IC0JdTMyIHRtcCA9IEk5MTVfUkVBRChEQlVGX0NU TCk7Cj4gLQo+IC0JV0FSTigodG1wICYgKERCVUZfUE9XRVJfU1RBVEUgfCBEQlVGX1BPV0VSX1JF UVVFU1QpKSAhPQo+IC0JICAgICAoREJVRl9QT1dFUl9TVEFURSB8IERCVUZfUE9XRVJfUkVRVUVT VCksCj4gLQkgICAgICJVbmV4cGVjdGVkIERCdWYgcG93ZXIgcG93ZXIgc3RhdGUgKDB4JTA4eClc biIsIHRtcCk7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkIGdlbjlfZGlzYWJsZV9kY19zdGF0ZXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgY2RjbGtfc3RhdGUgPSB7fTsKPiBAQCAtMTA1NSw4ICsxMDQ2LDYgQEAgc3Rh dGljIHZvaWQgZ2VuOV9kaXNhYmxlX2RjX3N0YXRlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkvKiBDYW4ndCByZWFkIG91dCB2b2x0YWdlX2xldmVsIHNvIGNhbid0IHVz ZSBpbnRlbF9jZGNsa19jaGFuZ2VkKCkgKi8KPiAgCVdBUk5fT04oaW50ZWxfY2RjbGtfbmVlZHNf bW9kZXNldCgmZGV2X3ByaXYtPmNkY2xrLmh3LCAmY2RjbGtfc3RhdGUpKTsKPiAgCj4gLQlnZW45 X2Fzc2VydF9kYnVmX2VuYWJsZWQoZGV2X3ByaXYpOwo+IC0KPiAgCWlmIChJU19HRU45X0xQKGRl dl9wcml2KSkKPiAgCQlieHRfdmVyaWZ5X2RkaV9waHlfcG93ZXJfd2VsbHMoZGV2X3ByaXYpOwo+ ICAKPiBAQCAtNDI1NCwzMSArNDI0Myw1MSBAQCBzdGF0aWMgdm9pZCBnZW45X2RidWZfZGlzYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpbnRlbF9kYnVmX3NsaWNl X3NldChkZXZfcHJpdiwgREJVRl9DVEwsIGZhbHNlKTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4IGlu dGVsX2RidWZfbWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g K2ludCBpbnRlbF9kYnVmX21heF9zbGljZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICB7Cj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+IC0JCXJldHVybiAx Owo+IC0JcmV0dXJuIDI7Cj4gKwlyZXR1cm4gSU5URUxfSU5GTyhkZXZfcHJpdiktPnN1cHBvcnRl ZF9zbGljZXM7Cj4gK30KCktpbmRhIHBvaW50bGVzcyBmdW5jdGlvbiBub3cuICdzdXBwb3J0ZWRf c2xpY2VzJyBpcyBub3QgYSB2ZXJ5IGdvb2QKbmFtZS4gU2hvdWxkIGJlICdudW1fZGJ1Zl9zbGlj ZXMnIG9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5lcy4KCj4gKwo+ICt2b2lkIGljbF9wcm9n cmFtX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ ICsJY29uc3QgdTggaHdfZW5hYmxlZF9zbGljZXMgPSBkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5l bmFibGVkX3NsaWNlczsKClNlZW1zIGEgcmF0aGVyIHBvaW50bGVzcyB2YXJpYWJsZS4gY29uc3Qg YXQgbGVhc3QgaXMgcG9pbnRsZXNzLgoKPiArCj4gKwlpY2xfZGJ1Zl9zbGljZXNfdXBkYXRlKGRl dl9wcml2LCBod19lbmFibGVkX3NsaWNlcyk7Cj4gIH0KPiAgCj4gIHZvaWQgaWNsX2RidWZfc2xp Y2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICB1 OCByZXFfc2xpY2VzKQo+ICB7Cj4gLQljb25zdCB1OCBod19lbmFibGVkX3NsaWNlcyA9IGRldl9w cml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzOwo+IC0JYm9vbCByZXQ7Cj4gKwlib29s IHJldCA9IHRydWU7Cj4gKwlpbnQgaTsKPiArCWludCBtYXhfc2xpY2VzID0gaW50ZWxfZGJ1Zl9t YXhfc2xpY2VzKGRldl9wcml2KTsKPiAgCj4gLQlpZiAocmVxX3NsaWNlcyA+IGludGVsX2RidWZf bWF4X3NsaWNlcyhkZXZfcHJpdikpIHsKPiArCWlmIChod2VpZ2h0OChyZXFfc2xpY2VzKSA+IGlu dGVsX2RidWZfbWF4X3NsaWNlcyhkZXZfcHJpdikpIHsKPiAgCQlEUk1fRVJST1IoIkludmFsaWQg bnVtYmVyIG9mIGRidWYgc2xpY2VzIHJlcXVlc3RlZFxuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWlmIChyZXFfc2xpY2VzID09IGh3X2VuYWJsZWRfc2xpY2VzIHx8IHJlcV9zbGljZXMg PT0gMCkKPiAtCQlyZXR1cm47Cj4gKwlEUk1fREVCVUdfS01TKCJVcGRhdGluZyBkYnVmIHNsaWNl cyB0byAleFxuIiwgcmVxX3NsaWNlcyk7Cj4gIAo+IC0JaWYgKHJlcV9zbGljZXMgPiBod19lbmFi bGVkX3NsaWNlcykKPiAtCQlyZXQgPSBpbnRlbF9kYnVmX3NsaWNlX3NldChkZXZfcHJpdiwgREJV Rl9DVExfUzIsIHRydWUpOwo+IC0JZWxzZQo+IC0JCXJldCA9IGludGVsX2RidWZfc2xpY2Vfc2V0 KGRldl9wcml2LCBEQlVGX0NUTF9TMiwgZmFsc2UpOwo+ICsJZm9yIChpID0gMDsgaSA8IG1heF9z bGljZXM7IGkrKykgewo+ICsJCWludCBzbGljZV9iaXQgPSBCSVQoaSk7Cj4gKwkJYm9vbCBzbGlj ZV9zZXQgPSAoc2xpY2VfYml0ICYgcmVxX3NsaWNlcykgIT0gMDsKPiArCj4gKwkJc3dpdGNoIChz bGljZV9iaXQpIHsKPiArCQljYXNlIERCVUZfUzFfQklUOgo+ICsJCQlyZXQgPSByZXQgJiYgaW50 ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3ByaXYsCj4gKwkJCQkJCQkgIERCVUZfQ1RMX1MxLAo+ICsJ CQkJCQkJICBzbGljZV9zZXQpOwo+ICsJCQlicmVhazsKPiArCQljYXNlIERCVUZfUzJfQklUOgo+ ICsJCQlyZXQgPSByZXQgJiYgaW50ZWxfZGJ1Zl9zbGljZV9zZXQoZGV2X3ByaXYsCj4gKwkJCQkJ CQkgIERCVUZfQ1RMX1MyLAo+ICsJCQkJCQkJICBzbGljZV9zZXQpOwoKVGhlIHJldHVybiB2YWx1 ZSBvbiBpbnRlbF9kYnVmX3NsaWNlX3NldCgpIHNlZW1zIHBvaW50bGVzcy4gSSdkIG51a2UgaXQu CgpBbHNvIGFzIGxvbmcgeW91IGhhdmUgaW50ZWxfZGJ1Zl9zbGljZV9zZXQoKSBJJ2QgcHJvYmFi bHkganVzdCBwYXNzIHRoZQpzbGljZSBpbmRleCB0aGVyZSBhbmQgbGV0IGl0IGRlYWwgd2l0aCB0 aGUgcmVnaXN0ZXIgZGV0YWlscy4gREJVRl9DVEwKc2hvdWxkIHByb2JhYmx5IGJlIHBhcmFtZXRy aXplZCBhcyB3ZWxsIHNvIHlvdSBkb24ndCBuZWVkIGFubm95aW5nIHN3aXRjaApzdGF0ZW1lbnRz LgoKPiArCQkJYnJlYWs7Cj4gKwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKHNsaWNlX2Jp dCk7Cj4gKwkJfQo+ICsJfQo+ICAKPiAgCWlmIChyZXQpCj4gIAkJZGV2X3ByaXYtPndtLnNrbF9o dy5kZGIuZW5hYmxlZF9zbGljZXMgPSByZXFfc2xpY2VzOwo+IEBAIC00Mjg2LDQwICs0Mjk1LDIx IEBAIHZvaWQgaWNsX2RidWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlJOTE1X1dSSVRFKERCVUZfQ1RMX1MxLCBJ OTE1X1JFQUQoREJVRl9DVExfUzEpIHwgREJVRl9QT1dFUl9SRVFVRVNUKTsKPiAtCUk5MTVfV1JJ VEUoREJVRl9DVExfUzIsIEk5MTVfUkVBRChEQlVGX0NUTF9TMikgfCBEQlVGX1BPV0VSX1JFUVVF U1QpOwo+IC0JUE9TVElOR19SRUFEKERCVUZfQ1RMX1MyKTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+ IC0KPiAtCWlmICghKEk5MTVfUkVBRChEQlVGX0NUTF9TMSkgJiBEQlVGX1BPV0VSX1NUQVRFKSB8 fAo+IC0JICAgICEoSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIERCVUZfUE9XRVJfU1RBVEUpKQo+ IC0JCURSTV9FUlJPUigiREJ1ZiBwb3dlciBlbmFibGUgdGltZW91dFxuIik7Cj4gLQllbHNlCj4g LQkJLyoKPiAtCQkgKiBGSVhNRTogZm9yIG5vdyBwcmV0ZW5kIHRoYXQgd2Ugb25seSBoYXZlIDEg c2xpY2UsIHNlZQo+IC0JCSAqIGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKCkuCj4gLQkJ ICovCj4gLQkJZGV2X3ByaXYtPndtLnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXMgPSAxOwo+ICsJ LyoKPiArCSAqIEp1c3QgcG93ZXIgdXAgMSBzbGljZSwgd2Ugd2lsbAo+ICsJICogZmlndXJlIG91 dCBsYXRlciB3aGljaCBzbGljZXMgd2UgaGF2ZSBhbmQgd2hhdCB3ZSBuZWVkLgo+ICsJICovCj4g KwlkZXZfcHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlcyA9IERCVUZfUzFfQklUOwoK VGhhdCBzdHVmZiByZWFsbHkgc2hvdWxkbid0IGJlIG1vZGlmaWVkIGJ5IGxvdyBsZXZlbCBmdW5j dGlvbnMuClRoZSBpbnRpYWwgdmFsdWUgc2hvdWxkIGNvbWUgZnJvbSByZWFkb3V0LCBhbmQgYWZ0 ZXIgdGhhdCBpdCBzaG91bGQKYmUgYWRqdXN0ZWQgYXMgcGFydCBvZiB0aGUgb3ZlcmFsbCBhdG9t aWMgc3RhdGUuCgo+ICsJaWNsX3Byb2dyYW1fZGJ1Zl9zbGljZXMoZGV2X3ByaXYpOwo+ICB9Cj4g IAo+ICBzdGF0aWMgdm9pZCBpY2xfZGJ1Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgewo+IC0JSTkxNV9XUklURShEQlVGX0NUTF9TMSwgSTkxNV9SRUFEKERC VUZfQ1RMX1MxKSAmIH5EQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0JSTkxNV9XUklURShEQlVGX0NU TF9TMiwgSTkxNV9SRUFEKERCVUZfQ1RMX1MyKSAmIH5EQlVGX1BPV0VSX1JFUVVFU1QpOwo+IC0J UE9TVElOR19SRUFEKERCVUZfQ1RMX1MyKTsKPiAtCj4gLQl1ZGVsYXkoMTApOwo+IC0KPiAtCWlm ICgoSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSAmIERCVUZfUE9XRVJfU1RBVEUpIHx8Cj4gLQkgICAg KEk5MTVfUkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKSkKPiAtCQlEUk1fRVJS T1IoIkRCdWYgcG93ZXIgZGlzYWJsZSB0aW1lb3V0IVxuIik7Cj4gLQllbHNlCj4gLQkJLyoKPiAt CQkgKiBGSVhNRTogZm9yIG5vdyBwcmV0ZW5kIHRoYXQgdGhlIGZpcnN0IHNsaWNlIGlzIGFsd2F5 cwo+IC0JCSAqIGVuYWJsZWQsIHNlZSBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX251bSgpLgo+ IC0JCSAqLwo+IC0JCWRldl9wcml2LT53bS5za2xfaHcuZGRiLmVuYWJsZWRfc2xpY2VzID0gMTsK PiArCS8qCj4gKwkgKiBEaXNhYmxlIGFsbCBzbGljZXMKPiArCSAqLwo+ICsJZGV2X3ByaXYtPndt LnNrbF9ody5kZGIuZW5hYmxlZF9zbGljZXMgPSAwOwo+ICsJaWNsX3Byb2dyYW1fZGJ1Zl9zbGlj ZXMoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfbWJ1c19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuaAo+IGluZGV4IDFkYTA0ZjNlMGZiMy4u YjcwNTdkNjhhZDc4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGlzcGxheV9wb3dlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmgKPiBAQCAtMzExLDggKzMxMSwxMCBAQCBpbnRlbF9kaXNw bGF5X3Bvd2VyX3B1dF9hc3luYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgCWZv ciAoKHdmKSA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KChpOTE1KSwgKGRvbWFpbikpOyAod2Yp OyBcCj4gIAkgICAgIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0X2FzeW5jKChpOTE1KSwgKGRvbWFp biksICh3ZikpLCAod2YpID0gMCkKPiAgCj4gK2ludCBpbnRlbF9kYnVmX21heF9zbGljZXMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpY2xfZGJ1Zl9zbGljZXNf dXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgIHU4IHJl cV9zbGljZXMpOwo+ICt2b2lkIGljbF9wcm9ncmFtX2RidWZfc2xpY2VzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+ICB2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVz KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgIGJvb2wgb3ZlcnJpZGUs IHVuc2lnbmVkIGludCBtYXNrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCA4MmU0 ZTZiZjA4YzMuLjk2NzQxZTY4NjMzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBA IC01MSw2ICs1MSw3IEBACj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2J3LmgiCj4gICNpbmNs dWRlICJkaXNwbGF5L2ludGVsX2NkY2xrLmgiCj4gICNpbmNsdWRlICJkaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaCIKPiArI2luY2x1ZGUgImRpc3BsYXkvaW50ZWxfZGlzcGxheV9wb3dlci5o Igo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9kcC5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9p bnRlbF9mYmRldi5oIgo+ICAjaW5jbHVkZSAiZGlzcGxheS9pbnRlbF9ob3RwbHVnLmgiCj4gQEAg LTI1ODgsNiArMjU4OSwxMCBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmtkZXYpCj4gIAlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hF UlJZVklFVyhkZXZfcHJpdikpCj4gIAkJcmV0ID0gdmx2X3Jlc3VtZV9wcmVwYXJlKGRldl9wcml2 LCB0cnVlKTsKPiAgCj4gKwkvKiBXZWlyZCBoYWNrIHRvIGZpeCBJQ0wgaGFyZHdhcmUgYnVnLCBh cyBpdCByZXNldHMgREJVRiBzbGljZXMgcmVnICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA9PSAxMSkKPiArCQlpY2xfcHJvZ3JhbV9kYnVmX3NsaWNlcyhkZXZfcHJpdik7Cj4gKwo+ICAJ aW50ZWxfdW5jb3JlX3J1bnRpbWVfcmVzdW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiAgCj4gIAlp bnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCA3ZTBmNjdiYWJlMjAuLmEzOTY5NzdjOWMyZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC04MDQsNyArODA0LDcgQEAgc3RhdGljIGlubGluZSBi b29sIHNrbF9kZGJfZW50cnlfZXF1YWwoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmUxLAo+ ICB9Cj4gIAo+ICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKClRoaXMgc3RydWN0IGlzIHF1 aXRlIHBvaW50bGVzcy4gU2hvdWxkIGJlIGtpbGxlZCBvZmYuCgo+IC0JdTggZW5hYmxlZF9zbGlj ZXM7IC8qIEdFTjExIGhhcyBjb25maWd1cmFibGUgMiBzbGljZXMgKi8KPiArCXU4IGVuYWJsZWRf c2xpY2VzOyAgIC8qIEJpdG1hc2sgb2YgY3VycmVudGx5IGVuYWJsZWQgREJ1ZiBzbGljZXMgKi8K PiAgfTsKPiAgCj4gIHN0cnVjdCBza2xfZGRiX3ZhbHVlcyB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bj aS5jCj4gaW5kZXggMWJiNzAxZDMyYTVkLi44ZTg2YWY1MDU3MzAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcGNpLmMKPiBAQCAtNjE0LDcgKzYxNCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gaW50ZWxfY2hlcnJ5dmlld19pbmZvID0gewo+ICAJLmhhc19ndF91YyA9 IDEsIFwKPiAgCS5kaXNwbGF5Lmhhc19oZGNwID0gMSwgXAo+ICAJLmRpc3BsYXkuaGFzX2lwYyA9 IDEsIFwKPiAtCS5kZGJfc2l6ZSA9IDg5Ngo+ICsJLmRkYl9zaXplID0gODk2LCBcCj4gKwkuc3Vw cG9ydGVkX3NsaWNlcyA9IDEKPiAgCj4gICNkZWZpbmUgU0tMX1BMQVRGT1JNIFwKPiAgCUdFTjlf RkVBVFVSRVMsIFwKPiBAQCAtNjUwLDYgKzY1MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50 ZWxfZGV2aWNlX2luZm8gaW50ZWxfc2t5bGFrZV9ndDRfaW5mbyA9IHsKPiAgCUdFTig5KSwgXAo+ ICAJLmlzX2xwID0gMSwgXAo+ICAJLmRpc3BsYXkuaGFzX2hvdHBsdWcgPSAxLCBcCj4gKwkuc3Vw cG9ydGVkX3NsaWNlcyA9IDEsIFwKPiAgCS5lbmdpbmVfbWFzayA9IEJJVChSQ1MwKSB8IEJJVChW Q1MwKSB8IEJJVChCQ1MwKSB8IEJJVChWRUNTMCksIFwKPiAgCS5waXBlX21hc2sgPSBCSVQoUElQ RV9BKSB8IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQyksIFwKPiAgCS5oYXNfNjRiaXRfcmVsb2Mg PSAxLCBcCj4gQEAgLTczNyw2ICs3MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2Rl dmljZV9pbmZvIGludGVsX2NvZmZlZWxha2VfZ3QzX2luZm8gPSB7Cj4gIAlHRU45X0ZFQVRVUkVT LCBcCj4gIAlHRU4oMTApLCBcCj4gIAkuZGRiX3NpemUgPSAxMDI0LCBcCj4gKwkuc3VwcG9ydGVk X3NsaWNlcyA9IDEsIFwKPiAgCS5kaXNwbGF5Lmhhc19kc2MgPSAxLCBcCj4gIAkuaGFzX2NvaGVy ZW50X2dndHQgPSBmYWxzZSwgXAo+ICAJR0xLX0NPTE9SUwo+IEBAIC03NzMsNiArNzc2LDcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyBpbnRlbF9jYW5ub25sYWtlX2lu Zm8gPSB7Cj4gIAl9LCBcCj4gIAlHRU4oMTEpLCBcCj4gIAkuZGRiX3NpemUgPSAyMDQ4LCBcCj4g Kwkuc3VwcG9ydGVkX3NsaWNlcyA9IDIsIFwKPiAgCS5oYXNfbG9naWNhbF9yaW5nX2Vsc3EgPSAx LCBcCj4gIAkuY29sb3IgPSB7IC5kZWdhbW1hX2x1dF9zaXplID0gMzMsIC5nYW1tYV9sdXRfc2l6 ZSA9IDI2MjE0NSB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IGE2MDdlYTUy MDgyOS4uZmJhNTczMTA2M2Q4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTc3 MzQsOSArNzczNCwxMSBAQCBlbnVtIHsKPiAgI2RlZmluZSBESVNQX0FSQl9DVEwyCV9NTUlPKDB4 NDUwMDQpCj4gICNkZWZpbmUgIERJU1BfREFUQV9QQVJUSVRJT05fNV82CSgxIDw8IDYpCj4gICNk ZWZpbmUgIERJU1BfSVBDX0VOQUJMRQkJKDEgPDwgMykKPiAtI2RlZmluZSBEQlVGX0NUTAlfTU1J TygweDQ1MDA4KQo+IC0jZGVmaW5lIERCVUZfQ1RMX1MxCV9NTUlPKDB4NDUwMDgpCj4gLSNkZWZp bmUgREJVRl9DVExfUzIJX01NSU8oMHg0NEZFOCkKPiArI2RlZmluZSBEQlVGX1MxX0JJVAkJCUJJ VCgwKQo+ICsjZGVmaW5lIERCVUZfUzJfQklUCQkJQklUKDEpCgpUaGVzZSBhcmUgbm90IGJpdHMg aW5zaWRlIERCVUZfQ1RMIHNvIHRoZXkgc2hvdWxkIG5vdCBiZSBoZXJlLgpJJ2QganVzdCBudWtl IHRoZW0gZW50aXJlbHkuIElmIHlvdSB0aGluayB3ZSBuZWVkIG1vcmUgdGhhbiBhbgppbnQgdG8g cmVmZXIgdG8gYSBzbGljZSB0aGVuIElNTyBzb21ldGhpbmcgc2ltcGxlIGxpa2UKCmVudW0gZGJ1 Zl9zbGljZSB7CglEQlVGX1MxLAoJREJVRl9TMiwKfTsKCndvdWxkIG1hdGNoIHRoZSBnZW5lcmFs IGFwcG9yYWNoIHdlIHVzZSBmb3Igb3RoZXIgdGhpbmdzIG11Y2ggYmV0dGVyCnJhdGhlciB0aGFu IGRlZmluaW5nIHNvbWUgc2hpZnRlZCB2YWx1ZXMuCgo+ICsjZGVmaW5lIERCVUZfQ1RMCQkJX01N SU8oMHg0NTAwOCkKPiArI2RlZmluZSBEQlVGX0NUTF9TMQkJCV9NTUlPKDB4NDUwMDgpCj4gKyNk ZWZpbmUgREJVRl9DVExfUzIJCQlfTU1JTygweDQ0RkU4KQo+ICAjZGVmaW5lICBEQlVGX1BPV0VS X1JFUVVFU1QJCSgxIDw8IDMxKQo+ICAjZGVmaW5lICBEQlVGX1BPV0VSX1NUQVRFCQkoMSA8PCAz MCkKPiAgI2RlZmluZSBHRU43X01TR19DVEwJX01NSU8oMHg0NTAxMCkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmgKPiBpbmRleCA0YmRmOGE2Y2ZiNDcuLmJhMzRlMWE1 YzU5MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5m by5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+IEBA IC0xODAsNiArMTgwLDcgQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiAgCX0gZGlzcGxh eTsKPiAgCj4gIAl1MTYgZGRiX3NpemU7IC8qIGluIGJsb2NrcyAqLwo+ICsJdTggc3VwcG9ydGVk X3NsaWNlczsgLyogbnVtYmVyIG9mIERCdWYgc2xpY2VzICovCj4gIAo+ICAJLyogUmVnaXN0ZXIg b2Zmc2V0cyBmb3IgdGhlIHZhcmlvdXMgZGlzcGxheSBwaXBlcyBhbmQgdHJhbnNjb2RlcnMgKi8K PiAgCWludCBwaXBlX29mZnNldHNbSTkxNV9NQVhfVFJBTlNDT0RFUlNdOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+IGluZGV4IDJkMzg5ZTQzN2U4Ny4uMWVhODFhYjkyNDI5IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTM1ODYsMjQgKzM1ODYsMjAgQEAgYm9vbCBpbGtfZGlz YWJsZV9scF93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIF9pbGtfZGlzYWJs ZV9scF93bShkZXZfcHJpdiwgV01fRElSVFlfTFBfQUxMKTsKPiAgfQo+ICAKPiAtc3RhdGljIHU4 IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXNfbnVtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiArc3RhdGljIHU4IGludGVsX2VuYWJsZWRfZGJ1Zl9zbGljZXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQl1OCBlbmFibGVkX3NsaWNlczsKPiAt Cj4gLQkvKiBTbGljZSAxIHdpbGwgYWx3YXlzIGJlIGVuYWJsZWQgKi8KPiAtCWVuYWJsZWRfc2xp Y2VzID0gMTsKPiArCXU4IGVuYWJsZWRfc2xpY2VzID0gMDsKPiAgCj4gIAkvKiBHZW4gcHJpb3Ig dG8gR0VOMTEgaGF2ZSBvbmx5IG9uZSBEQnVmIHNsaWNlICovCj4gIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDExKQo+IC0JCXJldHVybiBlbmFibGVkX3NsaWNlczsKPiArCQlyZXR1cm4gREJV Rl9TMV9CSVQ7CgpJJ2QgbnVrZSB0aGlzIHNwZWNpYWwgY2FzZSBlbnRpcmVseSBhbmQganVzdCBy ZWFkIGV2ZXJ5dGhpbmcgZnJvbSB0aGUKaHcuIEFzc3VtaW5nIHdlIG5lZWQgcmVhZG91dCBzb21l d2hlcmUuCgo+ICAKPiAtCS8qCj4gLQkgKiBGSVhNRTogZm9yIG5vdyB3ZSdsbCBvbmx5IGV2ZXIg dXNlIDEgc2xpY2U7IHByZXRlbmQgdGhhdCB3ZSBoYXZlCj4gLQkgKiBvbmx5IHRoYXQgMSBzbGlj ZSBlbmFibGVkIHVudGlsIHdlIGhhdmUgYSBwcm9wZXIgd2F5IGZvciBvbi1kZW1hbmQKPiAtCSAq IHRvZ2dsaW5nIG9mIHRoZSBzZWNvbmQgc2xpY2UuCj4gLQkgKi8KPiAtCWlmICgwICYmIEk5MTVf UkVBRChEQlVGX0NUTF9TMikgJiBEQlVGX1BPV0VSX1NUQVRFKQo+IC0JCWVuYWJsZWRfc2xpY2Vz Kys7Cj4gKwkvKiBDaGVjayBpZiBzZWNvbmQgREJ1ZiBzbGljZSBpcyBlbmFibGVkICovCj4gKwlp ZiAoSTkxNV9SRUFEKERCVUZfQ1RMX1MxKSAmIERCVUZfUE9XRVJfU1RBVEUpCj4gKwkJZW5hYmxl ZF9zbGljZXMgfD0gREJVRl9TMV9CSVQ7Cj4gKwo+ICsJaWYgKEk5MTVfUkVBRChEQlVGX0NUTF9T MikgJiBEQlVGX1BPV0VSX1NUQVRFKQo+ICsJCWVuYWJsZWRfc2xpY2VzIHw9IERCVUZfUzJfQklU Owo+ICAKPiAgCXJldHVybiBlbmFibGVkX3NsaWNlczsKPiAgfQo+IEBAIC0zODEyLDM2ICszODA4 LDM4IEBAIHN0YXRpYyB1MTYgaW50ZWxfZ2V0X2RkYl9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgY29uc3QgaW50IG51bV9hY3RpdmUsCj4gIAkJCSAg ICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYikKPiAgewo+IC0JY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7Cj4gLQl1NjQgdG90YWxfZGF0YV9idzsK PiAgCXUxNiBkZGJfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5kZGJfc2l6ZTsKPiAtCj4g IAlXQVJOX09OKGRkYl9zaXplID09IDApOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgMTEpCj4gIAkJcmV0dXJuIGRkYl9zaXplIC0gNDsgLyogNCBibG9ja3MgZm9yIGJ5cGFzcyBw YXRoIGFsbG9jYXRpb24gKi8KPiAgCj4gLQlhZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7Cj4gLQl0b3RhbF9kYXRhX2J3ID0gdG90YWxfZGF0YV9yYXRlICogZHJt X21vZGVfdnJlZnJlc2goYWRqdXN0ZWRfbW9kZSk7Cj4gKwlyZXR1cm4gZGRiX3NpemU7Cj4gK30K PiAgCj4gLQkvKgo+IC0JICogMTJHQi9zIGlzIG1heGltdW0gQlcgc3VwcG9ydGVkIGJ5IHNpbmds ZSBEQnVmIHNsaWNlLgo+IC0JICoKPiAtCSAqIEZJWE1FIGRidWYgc2xpY2UgY29kZSBpcyBicm9r ZW46Cj4gLQkgKiAtIG11c3Qgd2FpdCBmb3IgcGxhbmVzIHRvIHN0b3AgdXNpbmcgdGhlIHNsaWNl IGJlZm9yZSBwb3dlcmluZyBpdCBvZmYKPiAtCSAqIC0gcGxhbmUgc3RyYWRkbGluZyBib3RoIHNs aWNlcyBpcyBpbGxlZ2FsIGluIG11bHRpLXBpcGUgc2NlbmFyaW9zCj4gLQkgKiAtIHNob3VsZCB2 YWxpZGF0ZSB3ZSBzdGF5IHdpdGhpbiB0aGUgaHcgYmFuZHdpZHRoIGxpbWl0cwo+IC0JICovCj4g LQlpZiAoMCAmJiAobnVtX2FjdGl2ZSA+IDEgfHwgdG90YWxfZGF0YV9idyA+PSBHQnBzKDEyKSkp IHsKPiAtCQlkZGItPmVuYWJsZWRfc2xpY2VzID0gMjsKPiAtCX0gZWxzZSB7Cj4gLQkJZGRiLT5l bmFibGVkX3NsaWNlcyA9IDE7Cj4gLQkJZGRiX3NpemUgLz0gMjsKPiAtCX0KPiArLyoKPiArICog Q2FsY3VsYXRlIGluaXRpYWwgREJ1ZiBzbGljZSBvZmZzZXQsIGJhc2VkIG9uIHNsaWNlIHNpemUK PiArICogYW5kIG1hc2soaS5lIGlmIHNsaWNlIHNpemUgaXMgMTAyNCBhbmQgc2Vjb25kIHNsaWNl IGlzIGVuYWJsZWQKPiArICogb2Zmc2V0IHdvdWxkIGJlIDEwMjQpCj4gKyAqLwo+ICtzdGF0aWMg dTMyIHNrbF9nZXRfZmlyc3RfZGJ1Zl9zbGljZV9vZmZzZXQodTMyIGRidWZfc2xpY2VfbWFzaywK PiArCQkJCQkgICB1MzIgc2xpY2Vfc2l6ZSwgdTMyIGRkYl9zaXplKQo+ICt7Cj4gKwl1MzIgb2Zm c2V0ID0gMDsKPiAgCj4gLQlyZXR1cm4gZGRiX3NpemU7Cj4gKwlpZiAoIWRidWZfc2xpY2VfbWFz aykKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlvZmZzZXQgPSAoZmZzKGRidWZfc2xpY2VfbWFzaykg LSAxKSAqIHNsaWNlX3NpemU7Cj4gKwo+ICsJV0FSTl9PTihvZmZzZXQgPj0gZGRiX3NpemUpOwo+ ICsJcmV0dXJuIG9mZnNldDsKPiAgfQo+ICAKPiArc3RhdGljIHUzMiBpOTE1X2dldF9hbGxvd2Vk X2RidWZfbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAg ICBpbnQgcGlwZSwgdTMyIGFjdGl2ZV9waXBlcywKPiArCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiArCj4gIHN0YXRpYyB2b2lkCj4gIHNrbF9k ZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gQEAgLTM4NTcsNyArMzg1NSwxNCBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25f bGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXUzMiBwaXBlX3dp ZHRoID0gMCwgdG90YWxfd2lkdGggPSAwLCB3aWR0aF9iZWZvcmVfcGlwZSA9IDA7Cj4gIAllbnVt IHBpcGUgZm9yX3BpcGUgPSB0b19pbnRlbF9jcnRjKGZvcl9jcnRjKS0+cGlwZTsKPiAgCXUxNiBk ZGJfc2l6ZTsKPiArCXUzMiBkZGJfcmFuZ2Vfc2l6ZTsKPiAgCXUzMiBpOwo+ICsJdTMyIGRidWZf c2xpY2VfbWFzazsKPiArCXUzMiBhY3RpdmVfcGlwZXM7Cj4gKwl1MzIgb2Zmc2V0Owo+ICsJdTMy IHNsaWNlX3NpemU7Cj4gKwl1MzIgdG90YWxfc2xpY2VfbWFzazsKPiArCXUzMiBzdGFydCwgZW5k Owo+ICAKPiAgCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkg ewo+ICAJCWFsbG9jLT5zdGFydCA9IDA7Cj4gQEAgLTM4NjYsMTQgKzM4NzEsMjMgQEAgc2tsX2Rk Yl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAtCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZl X3BpcGVfY2hhbmdlcykKPiArCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcykg ewo+ICAJCSpudW1fYWN0aXZlID0gaHdlaWdodDgoaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlcyk7 Cj4gLQllbHNlCj4gKwkJYWN0aXZlX3BpcGVzID0gaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlczsK PiArCX0gZWxzZSB7Cj4gIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZl X3BpcGVzKTsKPiArCQlhY3RpdmVfcGlwZXMgPSBkZXZfcHJpdi0+YWN0aXZlX3BpcGVzOwo+ICsJ fQo+ICAKPiAgCWRkYl9zaXplID0gaW50ZWxfZ2V0X2RkYl9zaXplKGRldl9wcml2LCBjcnRjX3N0 YXRlLCB0b3RhbF9kYXRhX3JhdGUsCj4gIAkJCQkgICAgICAqbnVtX2FjdGl2ZSwgZGRiKTsKPiAg Cj4gKwlEUk1fREVCVUdfS01TKCJHb3QgdG90YWwgZGRiIHNpemUgJWRcbiIsIGRkYl9zaXplKTsK PiArCj4gKwlzbGljZV9zaXplID0gZGRiX3NpemUgLyBJTlRFTF9JTkZPKGRldl9wcml2KS0+c3Vw cG9ydGVkX3NsaWNlczsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJHb3QgREJ1ZiBzbGljZSBzaXpl ICVkXG4iLCBzbGljZV9zaXplKTsKPiArCj4gIAkvKgo+ICAJICogSWYgdGhlIHN0YXRlIGRvZXNu J3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJlIGlzIG5vCj4gIAkgKiBtb2Rlc2V0 IHJlcXVlc3QsIHRoZW4gdGhlcmUncyBubyBuZWVkIHRvIHJlY2FsY3VsYXRlOwo+IEBAIC0zODkx LDIwICszOTA1LDcwIEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gKwkv Kgo+ICsJICogR2V0IGFsbG93ZWQgREJ1ZiBzbGljZXMgZm9yIGNvcnJlc3BvbmRlbnQgcGlwZSBh bmQgcGxhdGZvcm0uCj4gKwkgKi8KPiArCWRidWZfc2xpY2VfbWFzayA9IGk5MTVfZ2V0X2FsbG93 ZWRfZGJ1Zl9tYXNrKGRldl9wcml2LCBmb3JfcGlwZSwKPiArCQkJCQkJICAgICBhY3RpdmVfcGlw ZXMsIGNydGNfc3RhdGUpOwoKUXVpdGUgYSBmZXcgcmVkdW5kYW50IGFyZ3VtZW50cy4gVGhlIGZ1 bmN0aW9uIG5hbWUgbG9va3MgYWxpZW4uCgpza2xfY3J0Y19wb3NzaWJsZV9kYnVmX3NsaWNlcygp IG9yIHNvbWV0aGluZyBwZXJoYXBzPwoKPiArCj4gKwlEUk1fREVCVUdfS01TKCJEQnVmIHNsaWNl IG1hc2sgJXggcGlwZSAlZCBhY3RpdmUgcGlwZXMgJXhcbiIsCj4gKwkJICAgICAgZGJ1Zl9zbGlj ZV9tYXNrLAo+ICsJCSAgICAgIGZvcl9waXBlLCBhY3RpdmVfcGlwZXMpOwo+ICsKPiArCS8qCj4g KwkgKiBGaWd1cmUgb3V0IGF0IHdoaWNoIERCdWYgc2xpY2Ugd2Ugc3RhcnQsIGkuZSBpZiB3ZSBz dGFydCBhdCBEYnVmIFMyCj4gKwkgKiBhbmQgc2xpY2Ugc2l6ZSBpcyAxMDI0LCB0aGUgb2Zmc2V0 IHdvdWxkIGJlIDEwMjQKPiArCSAqLwo+ICsJb2Zmc2V0ID0gc2tsX2dldF9maXJzdF9kYnVmX3Ns aWNlX29mZnNldChkYnVmX3NsaWNlX21hc2ssCj4gKwkJCQkJCSBzbGljZV9zaXplLCBkZGJfc2l6 ZSk7Cj4gKwo+ICsJLyoKPiArCSAqIEZpZ3VyZSBvdXQgdG90YWwgc2l6ZSBvZiBhbGxvd2VkIERC dWYgc2xpY2VzLCB3aGljaCBpcyBiYXNpY2FsbHkKPiArCSAqIGEgbnVtYmVyIG9mIGFsbG93ZWQg c2xpY2VzIGZvciB0aGF0IHBpcGUgbXVsdGlwbGllZCBieSBzbGljZSBzaXplLgo+ICsJICogSW5z aWRlIG9mIHRoaXMKPiArCSAqIHJhbmdlIGRkYiBlbnRyaWVzIGFyZSBzdGlsbCBhbGxvY2F0ZWQg aW4gcHJvcG9ydGlvbiB0byBkaXNwbGF5IHdpZHRoLgo+ICsJICovCj4gKwlkZGJfcmFuZ2Vfc2l6 ZSA9IGh3ZWlnaHQ4KGRidWZfc2xpY2VfbWFzaykgKiBzbGljZV9zaXplOwo+ICsKPiAgCS8qCj4g IAkgKiBXYXRlcm1hcmsvZGRiIHJlcXVpcmVtZW50IGhpZ2hseSBkZXBlbmRzIHVwb24gd2lkdGgg b2YgdGhlCj4gIAkgKiBmcmFtZWJ1ZmZlciwgU28gaW5zdGVhZCBvZiBhbGxvY2F0aW5nIEREQiBl cXVhbGx5IGFtb25nIHBpcGVzCj4gIAkgKiBkaXN0cmlidXRlIEREQiBiYXNlZCBvbiByZXNvbHV0 aW9uL3dpZHRoIG9mIHRoZSBkaXNwbGF5Lgo+ICAJICovCj4gKwl0b3RhbF9zbGljZV9tYXNrID0g ZGJ1Zl9zbGljZV9tYXNrOwoKSXNuJ3QgdGhpcyBhbHJlYWR5IHRha2VuIGNhcmUgYnkgdGhlIGxv b3AgYmVsb3c/Cgo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3Rh dGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl Owo+ICAJCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCQlpbnQgaGRpc3BsYXksIHZk aXNwbGF5Owo+ICsJCXUzMiBwaXBlX2RidWZfc2xpY2VfbWFzayA9IFwKPiArCQkJaTkxNV9nZXRf YWxsb3dlZF9kYnVmX21hc2soZGV2X3ByaXYsCj4gKwkJCQkJCXBpcGUsCj4gKwkJCQkJCWFjdGl2 ZV9waXBlcywKPiArCQkJCQkJY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJCWlmICghY3J0Y19zdGF0ZS0+ aHcuZW5hYmxlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gKwkJLyoKPiArCQkgKiBBY2NvcmRpbmcg dG8gQlNwZWMgcGlwZSBjYW4gc2hhcmUgb25lIGRidWYgc2xpY2Ugd2l0aCBhbm90aGVyCj4gKwkJ ICogcGlwZXMgb3IgcGlwZSBjYW4gdXNlIG11bHRpcGxlIGRidWZzLCBpbiBib3RoIGNhc2VzIHdl Cj4gKwkJICogYWNjb3VudCBmb3Igb3RoZXIgcGlwZXMgb25seSBpZiB0aGV5IGhhdmUgZXhhY3Rs eSBzYW1lIG1hc2suCj4gKwkJICogSG93ZXZlciB3ZSBuZWVkIHRvIGFjY291bnQgaG93IG1hbnkg c2xpY2VzIHdlIHNob3VsZCBlbmFibGUKPiArCQkgKiBpbiB0b3RhbC4KPiArCQkgKi8KPiArCQl0 b3RhbF9zbGljZV9tYXNrIHw9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrOwoKdG90YWxfc2xpY2VfbWFz ayB3aWxsIG5vdyBhY2NvdW50IG9ubHkgdGhlIGNydGNzIGluIHRoZSBzdGF0ZS4gV2hhdApoYXBw ZW5zIHRvIHRoZSBvdGhlciBwaXBlcycgc2xpY2VzPwoKPiArCj4gKwkJLyoKPiArCQkgKiBEbyBu b3QgYWNjb3VudCBwaXBlcyB1c2luZyBvdGhlciBzbGljZSBzZXRzCj4gKwkJICogbHVja2lseSBh cyBvZiBjdXJyZW50IEJTcGVjIHNsaWNlIHNldHMgZG8gbm90IHBhcnRpYWxseQo+ICsJCSAqIGlu dGVyc2VjdChwaXBlcyBzaGFyZSBlaXRoZXIgc2FtZSBvbmUgc2xpY2Ugb3Igc2FtZSBzbGljZSBz ZXQKPiArCQkgKiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBlbm91Z2gg dG8gY2hlY2sgZm9yCj4gKwkJICogZXF1YWxpdHkgZm9yIG5vdy4KPiArCQkgKi8KPiArCQlpZiAo ZGJ1Zl9zbGljZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQo+ICsJCQljb250aW51ZTsK PiArCj4gIAkJZHJtX21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3BsYXks ICZ2ZGlzcGxheSk7Cj4gIAkJdG90YWxfd2lkdGggKz0gaGRpc3BsYXk7Cj4gIAo+IEBAIC0zOTE0 LDggKzM5NzgsMTkgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCXBpcGVfd2lkdGggPSBoZGlzcGxheTsK PiAgCX0KPiAgCj4gLQlhbGxvYy0+c3RhcnQgPSBkZGJfc2l6ZSAqIHdpZHRoX2JlZm9yZV9waXBl IC8gdG90YWxfd2lkdGg7Cj4gLQlhbGxvYy0+ZW5kID0gZGRiX3NpemUgKiAod2lkdGhfYmVmb3Jl X3BpcGUgKyBwaXBlX3dpZHRoKSAvIHRvdGFsX3dpZHRoOwo+ICsJZGRiLT5lbmFibGVkX3NsaWNl cyA9IHRvdGFsX3NsaWNlX21hc2s7Cj4gKwo+ICsJc3RhcnQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdp ZHRoX2JlZm9yZV9waXBlIC8gdG90YWxfd2lkdGg7Cj4gKwllbmQgPSBkZGJfcmFuZ2Vfc2l6ZSAq ICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxfd2lkdGg7Cj4gKwo+ICsJ YWxsb2MtPnN0YXJ0ID0gb2Zmc2V0ICsgc3RhcnQ7Cj4gKwlhbGxvYy0+ZW5kID0gb2Zmc2V0ICsg ZW5kOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIlBpcGUgJWQgZGRiICVkLSVkXG4iLCBmb3JfcGlw ZSwKPiArCQkgICAgICBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQpOwo+ICsJRFJNX0RFQlVHX0tN UygiRW5hYmxlZCBkZGIgc2xpY2VzIG1hc2sgJXggbnVtIHN1cHBvcnRlZCAlZFxuIiwKPiArCQkg ICAgICBkZGItPmVuYWJsZWRfc2xpY2VzLAo+ICsJCSAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYp LT5zdXBwb3J0ZWRfc2xpY2VzKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBza2xfY29tcHV0ZV93 bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAg LTQwMzYsNyArNDExMSw4IEBAIHZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlv biAqZGRiIC8qIG91dCAqLykKPiAgewo+IC0JZGRiLT5lbmFibGVkX3NsaWNlcyA9IGludGVsX2Vu YWJsZWRfZGJ1Zl9zbGljZXNfbnVtKGRldl9wcml2KTsKPiArCWRkYi0+ZW5hYmxlZF9zbGljZXMg PSBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzKGRldl9wcml2KTsKPiArCURSTV9ERUJVR19LTVMo IkdvdCBodyBkYnVmIHNsaWNlcyBtYXNrICV4XG4iLCBkZGItPmVuYWJsZWRfc2xpY2VzKTsKPiAg fQo+ICAKPiAgLyoKPiBAQCAtNDE2NCw2ICs0MjQwLDI0MSBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0 aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJl dHVybiB0b3RhbF9kYXRhX3JhdGU7Cj4gIH0KPiAgCj4gK3N0YXRpYyB1aW50X2ZpeGVkXzE2XzE2 X3QKPiAraWNsX3BpcGVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJdTMyIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9o Owo+ICsJdWludF9maXhlZF8xNl8xNl90IGZwX3dfcmF0aW8sIGZwX2hfcmF0aW87Cj4gKwl1aW50 X2ZpeGVkXzE2XzE2X3QgZG93bnNjYWxlX2gsIGRvd25zY2FsZV93Owo+ICsJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0 ZWRfbW9kZTsKPiArCj4gKwlzcmNfdyA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gKwlzcmNf aCA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX2g7Cj4gKwlkc3RfdyA9IGFkanVzdGVkX21vZGUtPmNy dGNfaGRpc3BsYXk7Cj4gKwlkc3RfaCA9IGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXk7Cj4g Kwo+ICsJZnBfd19yYXRpbyA9IGRpdl9maXhlZDE2KHNyY193LCBkc3Rfdyk7Cj4gKwlmcF9oX3Jh dGlvID0gZGl2X2ZpeGVkMTYoc3JjX2gsIGRzdF9oKTsKPiArCWRvd25zY2FsZV93ID0gbWF4X2Zp eGVkMTYoZnBfd19yYXRpbywgdTMyX3RvX2ZpeGVkMTYoMSkpOwo+ICsJZG93bnNjYWxlX2ggPSBt YXhfZml4ZWQxNihmcF9oX3JhdGlvLCB1MzJfdG9fZml4ZWQxNigxKSk7Cj4gKwo+ICsJcmV0dXJu IG11bF9maXhlZDE2KGRvd25zY2FsZV93LCBkb3duc2NhbGVfaCk7Cj4gK30KPiArCj4gK3VpbnRf Zml4ZWRfMTZfMTZfdAo+ICtpY2xfZ2V0X3BpcGVfcmF0aW8oY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ ICsJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqZHJtX3BsYW5lX3N0YXRlOwo+ICsJdWlu dF9maXhlZF8xNl8xNl90IHBpcGVfZG93bnNjYWxlLCBwaXBlX3JhdGlvOwo+ICsJdWludF9maXhl ZF8xNl8xNl90IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKPiArCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ ICsKPiArCWlmICghY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUpCj4gKwkJcmV0dXJuIG1heF9kb3du c2NhbGU7Cj4gKwo+ICsJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRl KHBsYW5lLCBkcm1fcGxhbmVfc3RhdGUsICZjcnRjX3N0YXRlLT51YXBpKSB7Cj4gKwkJdWludF9m aXhlZF8xNl8xNl90IHBsYW5lX2Rvd25zY2FsZTsKPiArCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiArCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUoZHJtX3Bs YW5lX3N0YXRlKTsKPiArCj4gKwkJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3Rh dGUsIHBsYW5lX3N0YXRlKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXBsYW5lX2Rvd25zY2Fs ZSA9IHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsK PiArCj4gKwkJRFJNX0RFQlVHX0tNUygiUGxhbmUgJWQgZG93bnNjYWxlIGFtb3VudCAlZC4lZFxu IiwKPiArCQkJICAgICAgdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZCwKPiArCQkJICAgICAgcGxh bmVfZG93bnNjYWxlLnZhbCA+PiAxNiwKPiArCQkJICAgICAgcGxhbmVfZG93bnNjYWxlLnZhbCAm IDB4ZmZmZik7Cj4gKwo+ICsJCW1heF9kb3duc2NhbGUgPSBtYXhfZml4ZWQxNihwbGFuZV9kb3du c2NhbGUsIG1heF9kb3duc2NhbGUpOwo+ICsJfQo+ICsKPiArCj4gKwlwaXBlX2Rvd25zY2FsZSA9 IGljbF9waXBlX2Rvd25zY2FsZV9hbW91bnQoY3J0Y19zdGF0ZSk7Cj4gKwo+ICsJRFJNX0RFQlVH X0tNUygiUGlwZSAlZCBkb3duc2NhbGUgYW1vdW50ICVkLiVkXG4iLAo+ICsJCSAgICAgICBjcnRj LT5waXBlLCBwaXBlX2Rvd25zY2FsZS52YWwgPj4gMTYsCj4gKwkJICAgICAgIHBpcGVfZG93bnNj YWxlLnZhbCAmIDB4ZmZmZik7Cj4gKwo+ICsJcGlwZV9kb3duc2NhbGUgPSBtdWxfZml4ZWQxNihw aXBlX2Rvd25zY2FsZSwgbWF4X2Rvd25zY2FsZSk7Cj4gKwo+ICsJLyoKPiArCSAqIENvbnZlcnQg cmVzdWx0IHRvIHBlcmNlbnRhZ2U6IGdldCB0aGUgYWN0dWFsIHJhdGlvIGluc3RlYWQgb2YgcmF0 ZSwKPiArCSAqIHRoZW4gbXVsdGlwbHkgYnkgMTAwIHRvIGdldCBwZXJjZW50YWdlLgo+ICsJICov Cj4gKwlwaXBlX3JhdGlvID0gdTMyX3RvX2ZpeGVkMTYoMTAwICogZGl2X3JvdW5kX3VwX3UzMl9m aXhlZDE2KDEsIHBpcGVfZG93bnNjYWxlKSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiUGlwZSAl ZCByYXRpbyAlZC4lZFxuIiwgY3J0Yy0+cGlwZSwKPiArCQkgICAgICBwaXBlX3JhdGlvLnZhbCA+ PiAxNiwgcGlwZV9yYXRpby52YWwgJiAweGZmZmYpOwo+ICsKPiArCXJldHVybiBwaXBlX3JhdGlv Owo+ICt9CgpZdWNrLiBJIGp1c3Qga2lsbGVkIHRoZXNlLgoKPiArCj4gK3N0cnVjdCBkYnVmX3Ns aWNlX2NvbmZfZW50cnkgewo+ICsJdTMyIGRidWZfbWFza1tJOTE1X01BWF9QSVBFU107Cj4gKwl1 MzIgYWN0aXZlX3BpcGVzOwo+ICt9Owo+ICsKPiArCj4gKyNkZWZpbmUgSUNMX1BJUEVfQV9EQlVG X1NMSUNFUyhEQnVmMSkgIFwKPiArCXsgeyBEQnVmMSwgMCwgMCwgMCB9LCBCSVQoUElQRV9BKSB9 Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhEQnVmMSkgIFwKPiArCXsgeyAwLCBE QnVmMSwgMCwgMCB9LCBCSVQoUElQRV9CKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQ19EQlVGX1NM SUNFUyhEQnVmMSkgIFwKPiArCXsgeyAwLCAwLCBEQnVmMSwgMCB9LCBCSVQoUElQRV9DKSB9Cj4g KyNkZWZpbmUgSUNMX1BJUEVfRF9EQlVGX1NMSUNFUyhEQnVmMSkgIFwKPiArCXsgeyAwLCAwLCAw LCBEQnVmMSB9LCBCSVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJfREJVRl9TTElD RVMoREJ1ZjEsIERCdWYyKSAgIFwKPiArCXsgeyBEQnVmMSwgREJ1ZjIsIDAsIDAgfSwgQklUKFBJ UEVfQSkgfCBCSVQoUElQRV9CKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQkNfREJVRl9TTElDRVMo REJ1ZjEsIERCdWYyKSAgIFwKPiArCXsgeyAwLCBEQnVmMSwgREJ1ZjIsIDAgfSwgQklUKFBJUEVf QikgfCBCSVQoUElQRV9DKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQkRfREJVRl9TTElDRVMoREJ1 ZjEsIERCdWYyKSAgIFwKPiArCXsgeyAwLCBEQnVmMSwgMCwgREJ1ZjIgfSwgQklUKFBJUEVfQikg fCBCSVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUNfREJVRl9TTElDRVMoREJ1ZjEs IERCdWYyKSAgIFwKPiArCXsgeyBEQnVmMSwgMCwgREJ1ZjIsIDAgfSwgQklUKFBJUEVfQSkgfCBC SVQoUElQRV9DKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQURfREJVRl9TTElDRVMoREJ1ZjEsIERC dWYyKSAgIFwKPiArCXsgeyBEQnVmMSwgMCwgMCwgREJ1ZjIgfSwgQklUKFBJUEVfQSkgfCBCSVQo UElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYy KSAgIFwKPiArCXsgeyAwLCAwLCBEQnVmMSwgREJ1ZjIgfSwgQklUKFBJUEVfQykgfCBCSVQoUElQ RV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJDX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMiwg REJ1ZjMpICBcCj4gKwl7IHsgREJ1ZjEsIERCdWYyLCBEQnVmMywgMCB9LCBCSVQoUElQRV9BKSB8 IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQykgfQo+ICsjZGVmaW5lIElDTF9QSVBFX0FDRF9EQlVG X1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCAwLCBEQnVmMiwg REJ1ZjMgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9DKSB8IEJJVChQSVBFX0QpIH0KPiArI2Rl ZmluZSBJQ0xfUElQRV9CQ0RfREJVRl9TTElDRVMoREJ1ZjEsIERCdWYyLCBEQnVmMykgIFwKPiAr CXsgeyAwLCBEQnVmMSwgREJ1ZjIsIERCdWYzIH0sIEJJVChQSVBFX0IpIHwgQklUKFBJUEVfQykg fCBCSVQoUElQRV9EKSB9Cj4gKyNkZWZpbmUgSUNMX1BJUEVfQUJEX0RCVUZfU0xJQ0VTKERCdWYx LCBEQnVmMiwgREJ1ZjMpICBcCj4gKwl7IHsgREJ1ZjEsIERCdWYyLCAwLCBEQnVmMyB9LCBCSVQo UElQRV9BKSB8IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfRCkgfQo+ICsjZGVmaW5lIElDTF9QSVBF X0FCQ19EQlVGX1NMSUNFUyhEQnVmMSwgREJ1ZjIsIERCdWYzKSAgXAo+ICsJeyB7IERCdWYxLCBE QnVmMiwgREJ1ZjMsIDAgfSwgQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0Mp IH0KPiArI2RlZmluZSBJQ0xfUElQRV9BQkNEX0RCVUZfU0xJQ0VTKERCdWYxLCBEQnVmMiwgREJ1 ZjMsIERCdWY0KSAgXAo+ICsJeyB7IERCdWYxLCBEQnVmMiwgREJ1ZjMsIERCdWY0IH0sIEJJVChQ SVBFX0EpIHwgQklUKFBJUEVfQikgfCBcCj4gKwkJCQkJICBCSVQoUElQRV9DKSB8IEJJVChQSVBF X0QpIH0KPiArCj4gKy8qCj4gKyAqIFRhYmxlIHRha2VuIGZyb20gQnNwZWMgMTI3MTYKPiArICog UGlwZXMgZG8gaGF2ZSBzb21lIHByZWZlcnJlZCBEQnVmIHNsaWNlIGFmZmluaXR5LAo+ICsgKiBw bHVzIHRoZXJlIGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93Cj4gKyAqIHRo b3NlIHNob3VsZCBiZSBkaXN0cmlidXRlZCBmb3IgbXVsdGlwaXBlIHNjZW5hcmlvcy4KPiArICog Rm9yIG1vcmUgREJ1ZiBzbGljZXMgYWxnb3JpdGhtIGNhbiBnZXQgZXZlbiBtb3JlIG1lc3N5Cj4g KyAqIGFuZCBsZXNzIHJlYWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAo+ ICsgKiBhcyBpcyBmcm9tIEJTcGVjIGl0c2VsZiAtIHRoYXQgd2F5IGl0IGlzIGF0IGxlYXN0IGVh c2llcgo+ICsgKiB0byBjb21wYXJlLCBjaGFuZ2UgYW5kIGNoZWNrLgo+ICsgKi8KPiArc3RydWN0 IGRidWZfc2xpY2VfY29uZl9lbnRyeSBpY2xfYWxsb3dlZF9kYnVmc1tdID0gewo+ICt7IHsgMCwg MCwgMCwgMCB9LCAwIH0sCj4gK0lDTF9QSVBFX0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBE QlVGX1MyX0JJVCksICAvKiBwaXBlIHJhdGlvIDwgODguOCAqLwo+ICtJQ0xfUElQRV9BX0RCVUZf U0xJQ0VTKERCVUZfUzFfQklUKSwgICAgICAgICAgICAgICAgLyogZm9yIHBpcGUgcmF0aW8gPj0g ODguOCAqLwo+ICtJQ0xfUElQRV9CX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklUIHwgREJVRl9TMl9C SVQpLCAgLyogcGlwZSByYXRpbyA8IDg4LjggKi8KPiArSUNMX1BJUEVfQl9EQlVGX1NMSUNFUyhE QlVGX1MxX0JJVCksICAgICAgICAgICAgICAgIC8qIGZvciBwaXBlIHJhdGlvID49IDg4LjggKi8K PiArSUNMX1BJUEVfQ19EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCB8IERCVUZfUzJfQklUKSwgIC8q IHBpcGUgcmF0aW8gPCA4OC44ICovCj4gK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMl9C SVQpLCAgICAgICAgICAgICAgICAvKiBmb3IgcGlwZSByYXRpbyA+PSA4OC44ICovCj4gK0lDTF9Q SVBFX0FCX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBF X0FDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0JD X0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0FCQ19E QlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJfQklUKSwKPiArfTsK PiArCj4gKy8qCj4gKyAqIFRhYmxlIHRha2VuIGZyb20gQnNwZWMgNDkyNTUKPiArICogUGlwZXMg ZG8gaGF2ZSBzb21lIHByZWZlcnJlZCBEQnVmIHNsaWNlIGFmZmluaXR5LAo+ICsgKiBwbHVzIHRo ZXJlIGFyZSBzb21lIGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93Cj4gKyAqIHRob3NlIHNo b3VsZCBiZSBkaXN0cmlidXRlZCBmb3IgbXVsdGlwaXBlIHNjZW5hcmlvcy4KPiArICogRm9yIG1v cmUgREJ1ZiBzbGljZXMgYWxnb3JpdGhtIGNhbiBnZXQgZXZlbiBtb3JlIG1lc3N5Cj4gKyAqIGFu ZCBsZXNzIHJlYWRhYmxlLCBzbyBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAo+ICsgKiBh cyBpcyBmcm9tIEJTcGVjIGl0c2VsZiAtIHRoYXQgd2F5IGl0IGlzIGF0IGxlYXN0IGVhc2llcgo+ ICsgKiB0byBjb21wYXJlLCBjaGFuZ2UgYW5kIGNoZWNrLgo+ICsgKi8KPiArc3RydWN0IGRidWZf c2xpY2VfY29uZl9lbnRyeSB0Z2xfYWxsb3dlZF9kYnVmc1tdID0gewo+ICt7IHsgMCwgMCwgMCwg MCB9LCAwIH0sCj4gK0lDTF9QSVBFX0FfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1My X0JJVCksCj4gK0lDTF9QSVBFX0JfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJ VCksCj4gK0lDTF9QSVBFX0NfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCks Cj4gK0lDTF9QSVBFX0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQgfCBEQlVGX1MyX0JJVCksCj4g K0lDTF9QSVBFX0FCX0RCVUZfU0xJQ0VTKERCVUZfUzJfQklULCBEQlVGX1MxX0JJVCksCj4gK0lD TF9QSVBFX0FDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9Q SVBFX0JDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBF X0FEX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0JE X0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0NEX0RC VUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0FCRF9EQlVG X1NMSUNFUyhEQlVGX1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJfQklUKSwKPiArSUNMX1BJ UEVfQUJDX0RCVUZfU0xJQ0VTKERCVUZfUzFfQklULCBEQlVGX1MxX0JJVCwgREJVRl9TMl9CSVQp LAo+ICtJQ0xfUElQRV9BQ0RfREJVRl9TTElDRVMoREJVRl9TMV9CSVQsIERCVUZfUzJfQklULCBE QlVGX1MyX0JJVCksCj4gK0lDTF9QSVBFX0JDRF9EQlVGX1NMSUNFUyhEQlVGX1MxX0JJVCwgREJV Rl9TMl9CSVQsIERCVUZfUzJfQklUKSwKPiArSUNMX1BJUEVfQUJDRF9EQlVGX1NMSUNFUyhEQlVG X1MxX0JJVCwgREJVRl9TMV9CSVQsIERCVUZfUzJfQklULCBEQlVGX1MyX0JJVCksCj4gK307CgpN eSBleWVzIQoKSSBoYXZlIHRvIHRoaW5rIHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlZHVjZSBhbGwg dGhhdCB0byBhIGhhbmRmdWwKb2YgbGluZXMgb2YgY29kZS4KCgo+ICsKPiArLyoKPiArICogVGhp cyBmdW5jdGlvbgoKIlRoaXMgZnVuY3Rpb24iIGlzIHRvdGFsbHkgcmVkdW5kYW50LiBEaXR0byBl bHNld2hlcmUuCgo+IGZpbmRzIGFuIGVudHJ5IHdpdGggc2FtZSBlbmFibGVkIHBpcGUgY29uZmln dXJhdGlvbiBhbmQKPiArICogcmV0dXJucyBjb3JyZXNwb25kZW50IERCdWYgc2xpY2UgbWFzayBh cyBzdGF0ZWQgaW4gQlNwZWMgZm9yIHBhcnRpY3VsYXIKPiArICogcGxhdGZvcm0uCj4gKyAqLwo+ ICtzdGF0aWMgdTMyIGljbF9nZXRfYWxsb3dlZF9kYnVmX21hc2soaW50IHBpcGUsCj4gKwkJCQkg ICAgIHUzMiBhY3RpdmVfcGlwZXMsCj4gKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpbnQgaTsKPiArCXVpbnRfZml4ZWRfMTZfMTZf dCBwaXBlX3JhdGlvOwo+ICsKPiArCS8qCj4gKwkgKiBDYWxjdWxhdGUgcGlwZSByYXRpbyBhcyBz dGF0ZWQgaW4gQlNwZWMgMjg2OTIKPiArCSAqLwo+ICsJcGlwZV9yYXRpbyA9IGljbF9nZXRfcGlw ZV9yYXRpbyhjcnRjX3N0YXRlKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShp Y2xfYWxsb3dlZF9kYnVmcyk7IGkrKykgewo+ICsJCWlmIChpY2xfYWxsb3dlZF9kYnVmc1tpXS5h Y3RpdmVfcGlwZXMgPT0gYWN0aXZlX3BpcGVzKSB7Cj4gKwkJCWlmIChod2VpZ2h0MzIoYWN0aXZl X3BpcGVzKSA9PSAxKSB7Cj4gKwkJCQkvKgo+ICsJCQkJICogQWNjb3JkaW5nIHRvIEJTcGVjIDEy NzE2OiBpZiByYXRpbyA+PSA4OC44Cj4gKwkJCQkgKiBhbHdheXMgdXNlIHNpbmdsZSBkYnVmIHNs aWNlLgo+ICsJCQkJICovCj4gKwkJCQlpZiAocGlwZV9yYXRpby52YWwgPj0gZGl2X2ZpeGVkMTYo ODg4LCAxMCkudmFsKQo+ICsJCQkJCSsraTsKPiArCQkJfQo+ICsJCQlyZXR1cm4gaWNsX2FsbG93 ZWRfZGJ1ZnNbaV0uZGJ1Zl9tYXNrW3BpcGVdOwo+ICsJCX0KPiArCX0KPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIGFuIGVudHJ5IHdpdGggc2Ft ZSBlbmFibGVkIHBpcGUgY29uZmlndXJhdGlvbiBhbmQKPiArICogcmV0dXJucyBjb3JyZXNwb25k ZW50IERCdWYgc2xpY2UgbWFzayBhcyBzdGF0ZWQgaW4gQlNwZWMgZm9yIHBhcnRpY3VsYXIKPiAr ICogcGxhdGZvcm0uCj4gKyAqLwo+ICtzdGF0aWMgdTMyIHRnbF9nZXRfYWxsb3dlZF9kYnVmX21h c2soaW50IHBpcGUsCj4gKwkJCQkgICAgIHUzMiBhY3RpdmVfcGlwZXMsCj4gKwkJCQkgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpbnQgaTsK PiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0Z2xfYWxsb3dlZF9kYnVmcyk7IGkr Kykgewo+ICsJCWlmICh0Z2xfYWxsb3dlZF9kYnVmc1tpXS5hY3RpdmVfcGlwZXMgPT0gYWN0aXZl X3BpcGVzKQo+ICsJCQlyZXR1cm4gdGdsX2FsbG93ZWRfZGJ1ZnNbaV0uZGJ1Zl9tYXNrW3BpcGVd Owo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3UzMiBpOTE1X2dldF9hbGxvd2VkX2Ri dWZfbWFzayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgICBp bnQgcGlwZSwgdTMyIGFjdGl2ZV9waXBlcywKPiArCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlpZiAoSVNfR0VOKGRldl9wcml2LCAx MSkpCj4gKwkJcmV0dXJuIGljbF9nZXRfYWxsb3dlZF9kYnVmX21hc2socGlwZSwKPiArCQkJCQkJ IGFjdGl2ZV9waXBlcywKPiArCQkJCQkJIGNydGNfc3RhdGUpOwo+ICsJZWxzZSBpZiAoSVNfR0VO KGRldl9wcml2LCAxMikpCj4gKwkJcmV0dXJuIHRnbF9nZXRfYWxsb3dlZF9kYnVmX21hc2socGlw ZSwKPiArCQkJCQkJIGFjdGl2ZV9waXBlcywKPiArCQkJCQkJIGNydGNfc3RhdGUpOwo+ICsJLyoK PiArCSAqIEZvciBhbnl0aGluZyBlbHNlIGp1c3QgcmV0dXJuIG9uZSBzbGljZSB5ZXQuCj4gKwkg KiBTaG91bGQgYmUgZXh0ZW5kZWQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KPiArCSAqLwo+ICsJcmV0 dXJuIERCVUZfUzFfQklUOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdTY0Cj4gIGljbF9nZXRfdG90YWxf cmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAJCQkJIHU2NCAqcGxhbmVfZGF0YV9yYXRlKQo+IC0tIAo+IDIuMTcuMQoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n Zng=