From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 2/2] drm/i915: Switch to level-based DDB allocation algorithm (v3) Date: Tue, 11 Dec 2018 18:28:45 +0200 Message-ID: <20181211162845.GU9144@intel.com> References: <20181211010543.13309-1-matthew.d.roper@intel.com> <20181211010543.13309-2-matthew.d.roper@intel.com> <20181211155956.GS9144@intel.com> <20181211161116.GD20196@mdroper-desk.amr.corp.intel.com> <20181211162129.GT9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id AAF3B89FE8 for ; Tue, 11 Dec 2018 16:28:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181211162129.GT9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMTEsIDIwMTggYXQgMDY6MjE6MjlQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgRGVjIDExLCAyMDE4IGF0IDA4OjExOjE2QU0gLTA4MDAsIE1hdHQg Um9wZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIERlYyAxMSwgMjAxOCBhdCAwNTo1OTo1NlBNICswMjAw LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIE1vbiwgRGVjIDEwLCAyMDE4IGF0IDA1 OjA1OjQzUE0gLTA4MDAsIE1hdHQgUm9wZXIgd3JvdGU6Cj4gPiAuLi5zbmlwLi4uCj4gPiA+ID4g IAo+ID4gPiA+IC0JYWxsb2Nfc2l6ZSAtPSB0b3RhbF9taW5fYmxvY2tzOwo+ID4gPiA+IC0JY3N0 YXRlLT53bS5za2wucGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQg LSBtaW5pbXVtW1BMQU5FX0NVUlNPUl07Cj4gPiA+ID4gLQljc3RhdGUtPndtLnNrbC5wbGFuZV9k ZGJfeVtQTEFORV9DVVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7Cj4gPiA+ID4gLQo+ID4gPiA+ICAJ LyoKPiA+ID4gPiAtCSAqIDIuIERpc3RyaWJ1dGUgdGhlIHJlbWFpbmluZyBzcGFjZSBpbiBwcm9w b3J0aW9uIHRvIHRoZSBhbW91bnQgb2YKPiA+ID4gPiAtCSAqIGRhdGEgZWFjaCBwbGFuZSBuZWVk cyB0byBmZXRjaCBmcm9tIG1lbW9yeS4KPiA+ID4gPiAtCSAqCj4gPiA+ID4gLQkgKiBGSVhNRTog d2UgbWF5IG5vdCBhbGxvY2F0ZSBldmVyeSBzaW5nbGUgYmxvY2sgaGVyZS4KPiA+ID4gPiArCSAq IEdyYW50IGVhY2ggcGxhbmUgdGhlIGJsb2NrcyBpdCByZXF1aXJlcyBhdCB0aGUgaGlnaGVzdCBh Y2hpZXZhYmxlCj4gPiA+ID4gKwkgKiB3YXRlcm1hcmsgbGV2ZWwsIHBsdXMgYW4gZXh0cmEgc2hh cmUgb2YgdGhlIGxlZnRvdmVyIGJsb2Nrcwo+ID4gPiA+ICsJICogcHJvcG9ydGlvbmFsIHRvIGl0 cyByZWxhdGl2ZSBkYXRhIHJhdGUuCj4gPiA+ID4gIAkgKi8KPiA+ID4gPiAtCWlmICh0b3RhbF9k YXRhX3JhdGUgPT0gMCkKPiA+ID4gPiAtCQlyZXR1cm4gMDsKPiA+ID4gPiAtCj4gPiA+ID4gLQlz dGFydCA9IGFsbG9jLT5zdGFydDsKPiA+ID4gPiAgCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMo aW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKPiA+ID4gPiAtCQl1NjQgZGF0YV9yYXRlLCB1dl9kYXRh X3JhdGU7Cj4gPiA+ID4gLQkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB1dl9wbGFuZV9ibG9ja3M7 Cj4gPiA+ID4gKwkJdTY0IHJhdGU7Cj4gPiA+ID4gKwkJdTE2IGV4dHJhOwo+ID4gPiA+ICAKPiA+ ID4gPiAgCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+ID4gPiA+ICAJCQljb250aW51 ZTsKPiA+ID4gPiArCQlpZiAoYWxsb2Nfc2l6ZSA9PSAwKQo+ID4gPiA+ICsJCQljb250aW51ZTsK PiA+ID4gCj4gPiA+IFRoaXMgc2VlbXMgd3JvbmcuIFdlIHdvdWxkbid0IGFzc2lnbiBhbnl0aGlu ZyB0byB0b3RhbC91dl90b3RhbCBmb3IgdGhlCj4gPiA+IHBsYW5lIGluIHRoaXMgY2FzZS4gSSBn dWVzcyB5b3UgY291bGQgbW92ZSB0aG9zZSBhc3NpZ25tZW50cyB0byB0aGUKPiA+ID4gZWFybGll ciBsb29wIGFuZCB0aGVuIHMvY29udGludWUvYnJlYWsvIGhlcmU/IE9yIHdlIGp1c3QgcmVtb3Zl IHRoZQo+ID4gPiBjb250aW51ZSBlbnRpcmVseSBhbmQgbGV0IHRoZSBjYWxjdWxhdGlvbnMgZ28g dGhyb3VnaCBldmVuIGlmCj4gPiA+IGFsbG9jX3NpemU9PTAuCj4gPiAKPiA+IEl0IHNob3VsZCBw cm9iYWJseSBiZSBhIGJyZWFrLCBzaW5jZSB3ZSdsbCBvbmx5IGhpdCB0aGlzIG9uIGEgbG9vcAo+ ID4gaXRlcmF0aW9uIHdoZXJlIHdlJ3ZlIGhhbmRlZCB0aGUgd2hvbGUgcGlwZSBhbGxvY2F0aW9u IGFuZCBhbGwgcmVtYWluaW5nCj4gPiBwbGFuZXMgYXJlIGRpc2FibGVkLiBUaGUgdG90YWwgYW5k IHV2X3RvdGFsIHdlcmUgaW5pdGlhbGl6ZWQgdG8gMCBhdAo+ID4gaW5pdGlhbGl6YXRpb24gdGlt ZSwgc28gdGhhdCBzaG91bGQgYmUgY29ycmVjdCBmb3IgYWxsIHJlbWFpbmluZyBwbGFuZXMuCj4g Cj4gTm90IHN1cmUgd2UgY2FuIHRydXN0IGFsbCB0aGUgcmVtYWluaW5nIHBsYW5lcyB0byBiZSBy ZWFsbHkgb2ZmIGR1ZSB0bwo+IHRoZSByb3VuZF91cC4KPiAKPiA+IAo+ID4gQWxzbywgd2UgY2Fu J3QgbGV0IHRoZSBjYWxjdWxhdGlvbiBwcm9jZWVkIGhlcmUsIG90aGVyd2lzZSB3ZSdsbCBkaXZp ZGUKPiA+IGJ5IDAgKHRvdGFsX2RhdGFfcmF0ZSkgZmFydGhlciBkb3duIHNpbmNlIHRoYXQgdmFs dWUgYWxzbyBkZWNyZWFzZXMgd2l0aAo+ID4gZWFjaCBsb29wIGl0ZXJhdGlvbi4KCk9oIGFuZCB0 aGVyZSdzIGFjdHVhbGx5IG5vIGd1YXJhbnRlZSB0aGF0IHdlIGhhdmUgYW55IGV4dHJhIGJsb2Nr cyBsZWZ0CmFmdGVyIGFjY291bnRpbmcgZm9yIHRoZSB3YXRlcm1hcmtzIGFueXdheS4KCj4gCj4g SnVzdCBrZWVwIHRoZSAnaWYgKHRvdGFsX2RhdGFfcmF0ZT09MCkgcmV0dXJuIDA7JyBiZWZvcmUg dGhlIGxvb3A/Cj4gCj4gPiAKPiA+IAo+ID4gTWF0dAo+ID4gCj4gPiA+IAo+ID4gPiA+ICAKPiA+ ID4gPiAtCQlkYXRhX3JhdGUgPSBwbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdOwo+ID4gPiA+ICsJ CXdtID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiA+ID4gPiAg Cj4gPiA+ID4gLQkJLyoKPiA+ID4gPiAtCQkgKiBhbGxvY2F0aW9uIGZvciAocGFja2VkIGZvcm1h dHMpIG9yICh1di1wbGFuZSBwYXJ0IG9mIHBsYW5hciBmb3JtYXQpOgo+ID4gPiA+IC0JCSAqIHBy b21vdGUgdGhlIGV4cHJlc3Npb24gdG8gNjQgYml0cyB0byBhdm9pZCBvdmVyZmxvd2luZywgdGhl Cj4gPiA+ID4gLQkJICogcmVzdWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvIHRvdGFs X2RhdGFfcmF0ZSA8IDEKPiA+ID4gPiAtCQkgKi8KPiA+ID4gPiAtCQlwbGFuZV9ibG9ja3MgPSBt aW5pbXVtW3BsYW5lX2lkXTsKPiA+ID4gPiAtCQlwbGFuZV9ibG9ja3MgKz0gZGl2NjRfdTY0KGFs bG9jX3NpemUgKiBkYXRhX3JhdGUsIHRvdGFsX2RhdGFfcmF0ZSk7Cj4gPiA+ID4gKwkJcmF0ZSA9 IHBsYW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gPiA+ID4gKwkJZXh0cmEgPSBtaW5fdCh1MTYs IGFsbG9jX3NpemUsCj4gPiA+ID4gKwkJCSAgICAgIERJVl9ST1VORF9VUChhbGxvY19zaXplICog cmF0ZSwgdG90YWxfZGF0YV9yYXRlKSk7Cj4gCj4gTmVlZHMgRElWNjRfVTY0X1JPVU5EX1VQKCkg b24gMzJiaXQuCj4gCj4gPiA+ID4gKwkJdG90YWxbcGxhbmVfaWRdID0gd20tPndtW2xldmVsXS5w bGFuZV9yZXNfYiArIGV4dHJhOwo+ID4gPiA+ICsJCWFsbG9jX3NpemUgLT0gZXh0cmE7Cj4gPiA+ ID4gKwkJdG90YWxfZGF0YV9yYXRlIC09IHJhdGU7Cj4gPiA+ID4gIAo+ID4gPiA+IC0JCS8qIExl YXZlIGRpc2FibGVkIHBsYW5lcyBhdCAoMCwwKSAqLwo+ID4gPiA+IC0JCWlmIChkYXRhX3JhdGUp IHsKPiA+ID4gPiAtCQkJY3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3lbcGxhbmVfaWRdLnN0YXJ0 ID0gc3RhcnQ7Cj4gPiA+ID4gLQkJCWNzdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W3BsYW5lX2lk XS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKPiA+ID4gPiAtCQl9Cj4gPiA+ID4gKwkJaWYg KGFsbG9jX3NpemUgPT0gMCkKPiA+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ID4gIAo+ID4gPiA+ IC0JCXN0YXJ0ICs9IHBsYW5lX2Jsb2NrczsKPiA+ID4gPiArCQlyYXRlID0gdXZfcGxhbmVfZGF0 YV9yYXRlW3BsYW5lX2lkXTsKPiA+ID4gPiArCQlleHRyYSA9IG1pbl90KHUxNiwgYWxsb2Nfc2l6 ZSwKPiA+ID4gPiArCQkJICAgICAgRElWX1JPVU5EX1VQKGFsbG9jX3NpemUgKiByYXRlLCB0b3Rh bF9kYXRhX3JhdGUpKTsKPiA+ID4gPiArCQl1dl90b3RhbFtwbGFuZV9pZF0gPSB3bS0+dXZfd21b bGV2ZWxdLnBsYW5lX3Jlc19iICsgZXh0cmE7Cj4gPiA+ID4gKwkJYWxsb2Nfc2l6ZSAtPSBleHRy YTsKPiA+ID4gPiArCQl0b3RhbF9kYXRhX3JhdGUgLT0gcmF0ZTsKPiA+ID4gPiArCX0KPiA+ID4g PiArCVdBUk5fT04oYWxsb2Nfc2l6ZSAhPSAwIHx8IHRvdGFsX2RhdGFfcmF0ZSAhPSAwKTsKPiA+ ID4gPiAgCj4gPiA+ID4gLQkJLyogQWxsb2NhdGUgRERCIGZvciBVViBwbGFuZSBmb3IgcGxhbmFy IGZvcm1hdC9OVjEyICovCj4gPiA+ID4gLQkJdXZfZGF0YV9yYXRlID0gdXZfcGxhbmVfZGF0YV9y YXRlW3BsYW5lX2lkXTsKPiA+ID4gPiArCS8qIFNldCB0aGUgYWN0dWFsIEREQiBzdGFydC9lbmQg cG9pbnRzIGZvciBlYWNoIHBsYW5lICovCj4gPiA+ID4gKwlzdGFydCA9IGFsbG9jLT5zdGFydDsK PiA+ID4gPiArCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQp IHsKPiA+ID4gPiArCQlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqcGxhbmVfYWxsb2MsICp1dl9wbGFu ZV9hbGxvYzsKPiA+ID4gPiAgCj4gPiA+ID4gLQkJdXZfcGxhbmVfYmxvY2tzID0gdXZfbWluaW11 bVtwbGFuZV9pZF07Cj4gPiA+ID4gLQkJdXZfcGxhbmVfYmxvY2tzICs9IGRpdjY0X3U2NChhbGxv Y19zaXplICogdXZfZGF0YV9yYXRlLCB0b3RhbF9kYXRhX3JhdGUpOwo+ID4gPiA+ICsJCWlmIChw bGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCj4gPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiA+ICsK PiA+ID4gPiArCQlwbGFuZV9hbGxvYyA9ICZjc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfeVtwbGFu ZV9pZF07Cj4gPiA+ID4gKwkJdXZfcGxhbmVfYWxsb2MgPSAmY3N0YXRlLT53bS5za2wucGxhbmVf ZGRiX3V2W3BsYW5lX2lkXTsKPiA+ID4gPiAgCj4gPiA+ID4gIAkJLyogR2VuMTErIHVzZXMgYSBz ZXBhcmF0ZSBwbGFuZSBmb3IgVVYgd2F0ZXJtYXJrcyAqLwo+ID4gPiA+IC0JCVdBUk5fT04oSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiB1dl9wbGFuZV9ibG9ja3MpOwo+ID4gPiA+ICsJCVdB Uk5fT04oSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJiB1dl90b3RhbFtwbGFuZV9pZF0pOwo+ ID4gPiA+ICsKPiA+ID4gPiArCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkgKi8K PiA+ID4gPiArCQlpZiAodG90YWxbcGxhbmVfaWRdKSB7Cj4gPiA+ID4gKwkJCXBsYW5lX2FsbG9j LT5zdGFydCA9IHN0YXJ0Owo+ID4gPiA+ICsJCQlwbGFuZV9hbGxvYy0+ZW5kID0gc3RhcnQgKz0g dG90YWxbcGxhbmVfaWRdOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiAgCj4gPiA+ID4gLQkJaWYgKHV2 X2RhdGFfcmF0ZSkgewo+ID4gPiA+IC0JCQljc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfdXZbcGxh bmVfaWRdLnN0YXJ0ID0gc3RhcnQ7Cj4gPiA+ID4gLQkJCWNzdGF0ZS0+d20uc2tsLnBsYW5lX2Rk Yl91dltwbGFuZV9pZF0uZW5kID0KPiA+ID4gPiAtCQkJCXN0YXJ0ICsgdXZfcGxhbmVfYmxvY2tz Owo+ID4gPiA+ICsJCWlmICh1dl90b3RhbFtwbGFuZV9pZF0pIHsKPiA+ID4gPiArCQkJdXZfcGxh bmVfYWxsb2MtPnN0YXJ0ID0gc3RhcnQ7Cj4gPiA+ID4gKwkJCXV2X3BsYW5lX2FsbG9jLT5lbmQg PSBzdGFydCArIHV2X3RvdGFsW3BsYW5lX2lkXTsKPiA+ID4gPiAgCQl9Cj4gPiA+ID4gKwl9Cj4g PiA+ID4gIAo+ID4gPiA+IC0JCXN0YXJ0ICs9IHV2X3BsYW5lX2Jsb2NrczsKPiA+ID4gPiArCS8q Cj4gPiA+ID4gKwkgKiBXaGVuIHdlIGNhbGN1bGF0ZWQgd2F0ZXJtYXJrIHZhbHVlcyB3ZSBkaWRu J3Qga25vdyBob3cgaGlnaAo+ID4gPiA+ICsJICogb2YgYSBsZXZlbCB3ZSdkIGFjdHVhbGx5IGJl IGFibGUgdG8gaGl0LCBzbyB3ZSBqdXN0IG1hcmtlZAo+ID4gPiA+ICsJICogYWxsIGxldmVscyBh cyAiZW5hYmxlZC4iICBHbyBiYWNrIG5vdyBhbmQgZGlzYWJsZSB0aGUgb25lcwo+ID4gPiA+ICsJ ICogdGhhdCBhcmVuJ3QgYWN0dWFsbHkgcG9zc2libGUuCj4gPiA+ID4gKwkgKi8KPiA+ID4gPiAr CWZvciAobGV2ZWwrKzsgbGV2ZWwgPD0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7IGxldmVs KyspIHsKPiA+ID4gPiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBs YW5lX2lkKSB7Cj4gPiA+ID4gKwkJCXdtID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVz W3BsYW5lX2lkXTsKPiA+ID4gPiArCQkJbWVtc2V0KCZ3bS0+d21bbGV2ZWxdLCAwLCBzaXplb2Yo d20tPndtW2xldmVsXSkpOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ ID4gKwkvKgo+ID4gPiA+ICsJICogR28gYmFjayBhbmQgZGlzYWJsZSB0aGUgdHJhbnNpdGlvbiB3 YXRlcm1hcmsgaWYgaXQgdHVybnMgb3V0IHdlCj4gPiA+ID4gKwkgKiBkb24ndCBoYXZlIGVub3Vn aCBEREIgYmxvY2tzIGZvciBpdC4KPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJZm9yX2VhY2hfcGxh bmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ID4gPiA+ICsJCXdtID0gJmNz dGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiA+ID4gPiArCQlpZiAod20t PnRyYW5zX3dtLnBsYW5lX3Jlc19iID4gdG90YWxbcGxhbmVfaWRdKQo+ID4gPiA+ICsJCQltZW1z ZXQoJndtLT50cmFuc193bSwgMCwgc2l6ZW9mKHdtLT50cmFuc193bSkpOwo+ID4gPiA+ICAJfQo+ ID4gPiA+ICAKPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+IEBAIC00NzE1LDE3ICs0NjY1LDE1 IEBAIHNrbF9jb21wdXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlLAo+ID4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4g PiA+ID4gLXN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ID4gPiAtCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqaW50ZWxfcHN0YXRlLAo+ID4gPiA+IC0JCQkJdWludDE2X3QgZGRiX2FsbG9jYXRp b24sCj4gPiA+ID4gLQkJCQlpbnQgbGV2ZWwsCj4gPiA+ID4gLQkJCQljb25zdCBzdHJ1Y3Qgc2ts X3dtX3BhcmFtcyAqd3AsCj4gPiA+ID4gLQkJCQljb25zdCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpy ZXN1bHRfcHJldiwKPiA+ID4gPiAtCQkJCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBv dXQgKi8pCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCj4gPiA+ID4gKwkJCQkgaW50IGxldmVs LAo+ID4gPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3cCwKPiA+ID4gPiAr CQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHRfcHJldiwKPiA+ID4gPiArCQkJ CSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgLyogb3V0ICovKQo+ID4gPiA+ICB7Cj4gPiA+ ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ID4gPiA+ICAJCXRvX2k5 MTUoaW50ZWxfcHN0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ID4gPiA+IC0JY29uc3Qgc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gJmludGVsX3BzdGF0ZS0+YmFzZTsKPiA+ID4gPiAg CXVpbnQzMl90IGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwo+ID4g PiA+ICAJdWludF9maXhlZF8xNl8xNl90IG1ldGhvZDEsIG1ldGhvZDI7Cj4gPiA+ID4gIAl1aW50 X2ZpeGVkXzE2XzE2X3Qgc2VsZWN0ZWRfcmVzdWx0Owo+ID4gPiA+IEBAIC00NzMzLDEwICs0Njgx LDYgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiA+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUgPQo+ID4gPiA+ICAJCXRvX2ludGVsX2F0b21pY19zdGF0ZShjc3RhdGUtPmJhc2Uuc3Rh dGUpOwo+ID4gPiA+ICAJYm9vbCBhcHBseV9tZW1vcnlfYndfd2EgPSBza2xfbmVlZHNfbWVtb3J5 X2J3X3dhKHN0YXRlKTsKPiA+ID4gPiAtCXVpbnQzMl90IG1pbl9kaXNwX2J1Zl9uZWVkZWQ7Cj4g PiA+ID4gLQo+ID4gPiA+IC0JaWYgKGxhdGVuY3kgPT0gMCkKPiA+ID4gPiAtCQlyZXR1cm4gbGV2 ZWwgPT0gMCA/IC1FSU5WQUwgOiAwOwo+ID4gPiA+ICAKPiA+ID4gPiAgCS8qIERpc3BsYXkgV0Eg IzExNDE6IGtibCxjZmwgKi8KPiA+ID4gPiAgCWlmICgoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8 IElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpIHx8Cj4gPiA+ID4gQEAgLTQ4MDAsNjEgKzQ3NDQsMjQg QEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiA+ICAJCQlyZXNfYmxvY2tzID0gcmVzdWx0X3ByZXYtPnBs YW5lX3Jlc19iOwo+ID4gPiA+ICAJfQo+ID4gPiA+ICAKPiA+ID4gPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExKSB7Cj4gPiA+ID4gLQkJaWYgKHdwLT55X3RpbGVkKSB7Cj4gPiA+ID4g LQkJCXVpbnQzMl90IGV4dHJhX2xpbmVzOwo+ID4gPiA+IC0JCQl1aW50X2ZpeGVkXzE2XzE2X3Qg ZnBfbWluX2Rpc3BfYnVmX25lZWRlZDsKPiA+ID4gPiAtCj4gPiA+ID4gLQkJCWlmIChyZXNfbGlu ZXMgJSB3cC0+eV9taW5fc2NhbmxpbmVzID09IDApCj4gPiA+ID4gLQkJCQlleHRyYV9saW5lcyA9 IHdwLT55X21pbl9zY2FubGluZXM7Cj4gPiA+ID4gLQkJCWVsc2UKPiA+ID4gPiAtCQkJCWV4dHJh X2xpbmVzID0gd3AtPnlfbWluX3NjYW5saW5lcyAqIDIgLQo+ID4gPiA+IC0JCQkJCSAgICAgIHJl c19saW5lcyAlIHdwLT55X21pbl9zY2FubGluZXM7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JCQlmcF9t aW5fZGlzcF9idWZfbmVlZGVkID0gbXVsX3UzMl9maXhlZDE2KHJlc19saW5lcyArCj4gPiA+ID4g LQkJCQkJCWV4dHJhX2xpbmVzLAo+ID4gPiA+IC0JCQkJCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9s aW5lKTsKPiA+ID4gPiAtCQkJbWluX2Rpc3BfYnVmX25lZWRlZCA9IGZpeGVkMTZfdG9fdTMyX3Jv dW5kX3VwKAo+ID4gPiA+IC0JCQkJCQlmcF9taW5fZGlzcF9idWZfbmVlZGVkKTsKPiA+ID4gPiAt CQl9IGVsc2Ugewo+ID4gPiA+IC0JCQltaW5fZGlzcF9idWZfbmVlZGVkID0gRElWX1JPVU5EX1VQ KHJlc19ibG9ja3MgKiAxMSwgMTApOwo+ID4gPiA+IC0JCX0KPiA+ID4gPiAtCX0gZWxzZSB7Cj4g PiA+ID4gLQkJbWluX2Rpc3BfYnVmX25lZWRlZCA9IHJlc19ibG9ja3M7Cj4gPiA+ID4gLQl9Cj4g PiA+ID4gLQo+ID4gPiA+IC0JaWYgKChsZXZlbCA+IDAgJiYgcmVzX2xpbmVzID4gMzEpIHx8Cj4g PiA+ID4gLQkgICAgcmVzX2Jsb2NrcyA+PSBkZGJfYWxsb2NhdGlvbiB8fAo+ID4gPiA+IC0JICAg IG1pbl9kaXNwX2J1Zl9uZWVkZWQgPj0gZGRiX2FsbG9jYXRpb24pIHsKPiA+ID4gPiAtCQkvKgo+ ID4gPiA+IC0JCSAqIElmIHRoZXJlIGFyZSBubyB2YWxpZCBsZXZlbCAwIHdhdGVybWFya3MsIHRo ZW4gd2UgY2FuJ3QKPiA+ID4gPiAtCQkgKiBzdXBwb3J0IHRoaXMgZGlzcGxheSBjb25maWd1cmF0 aW9uLgo+ID4gPiA+IC0JCSAqLwo+ID4gPiA+IC0JCWlmIChsZXZlbCkgewo+ID4gPiA+IC0JCQly ZXR1cm4gMDsKPiA+ID4gPiAtCQl9IGVsc2Ugewo+ID4gPiA+IC0JCQlzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSA9IHBzdGF0ZS0+cGxhbmU7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JCQlEUk1fREVCVUdf S01TKCJSZXF1ZXN0ZWQgZGlzcGxheSBjb25maWd1cmF0aW9uIGV4Y2VlZHMgc3lzdGVtIHdhdGVy bWFyayBsaW1pdGF0aW9uc1xuIik7Cj4gPiA+ID4gLQkJCURSTV9ERUJVR19LTVMoIltQTEFORTol ZDolc10gYmxvY2tzIHJlcXVpcmVkID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIs Cj4gPiA+ID4gLQkJCQkgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCj4gPiA+ID4g LQkJCQkgICAgICByZXNfYmxvY2tzLCBkZGJfYWxsb2NhdGlvbiwgcmVzX2xpbmVzKTsKPiA+ID4g PiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gLQkJfQo+ID4gPiA+IC0JfQo+ID4gPiA+IC0K PiA+ID4gPiAgCS8qIFRoZSBudW1iZXIgb2YgbGluZXMgYXJlIGlnbm9yZWQgZm9yIHRoZSBsZXZl bCAwIHdhdGVybWFyay4gKi8KPiA+ID4gPiArCWlmIChsZXZlbCA+IDAgJiYgcmVzX2xpbmVzID4g MzEpCj4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ICsKPiA+ID4gPiArCS8qCj4gPiA+ID4gKwkg KiBJZiByZXNfbGluZXMgaXMgdmFsaWQsIGFzc3VtZSB3ZSBjYW4gdXNlIHRoaXMgd2F0ZXJtYXJr IGxldmVsCj4gPiA+ID4gKwkgKiBmb3Igbm93LiAgV2UnbGwgY29tZSBiYWNrIGFuZCBkaXNhYmxl IGl0IGFmdGVyIHdlIGNhbGN1bGF0ZSB0aGUKPiA+ID4gPiArCSAqIEREQiBhbGxvY2F0aW9uIGlm IGl0IHR1cm5zIG91dCB3ZSBkb24ndCBhY3R1YWxseSBoYXZlIGVub3VnaAo+ID4gPiA+ICsJICog YmxvY2tzIHRvIHNhdGlzZnkgaXQuCj4gPiA+ID4gKwkgKi8KPiA+ID4gPiAgCXJlc3VsdC0+cGxh bmVfcmVzX2IgPSByZXNfYmxvY2tzOwo+ID4gPiA+ICAJcmVzdWx0LT5wbGFuZV9yZXNfbCA9IHJl c19saW5lczsKPiA+ID4gPiAgCXJlc3VsdC0+cGxhbmVfZW4gPSB0cnVlOwo+ID4gPiA+IC0KPiA+ ID4gPiAtCXJldHVybiAwOwo+ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+IC1zdGF0aWMgaW50 Cj4gPiA+ID4gK3N0YXRpYyB2b2lkCj4gPiA+ID4gIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiA+ICAJCSAgICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlLAo+ID4gPiA+IC0JCSAgICAg IHVpbnQxNl90IGRkYl9ibG9ja3MsCj4gPiA+ID4gIAkJICAgICAgY29uc3Qgc3RydWN0IHNrbF93 bV9wYXJhbXMgKndtX3BhcmFtcywKPiA+ID4gPiAgCQkgICAgICBzdHJ1Y3Qgc2tsX3dtX2xldmVs ICpsZXZlbHMpCj4gPiA+ID4gIHsKPiA+ID4gPiBAQCAtNDg2MiwyNSArNDc2OSwxNSBAQCBza2xf Y29tcHV0ZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwK PiA+ID4gPiAgCQl0b19pOTE1KGludGVsX3BzdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiA+ID4g PiAgCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4g PiA+ID4gIAlzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHRfcHJldiA9ICZsZXZlbHNbMF07Cj4g PiA+ID4gLQlpbnQgcmV0Owo+ID4gPiA+ICAKPiA+ID4gPiAgCWZvciAobGV2ZWwgPSAwOyBsZXZl bCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiA+ID4gPiAgCQlzdHJ1Y3Qgc2tsX3dtX2xldmVs ICpyZXN1bHQgPSAmbGV2ZWxzW2xldmVsXTsKPiA+ID4gPiAgCj4gPiA+ID4gLQkJcmV0ID0gc2ts X2NvbXB1dGVfcGxhbmVfd20oY3N0YXRlLAo+ID4gPiA+IC0JCQkJCSAgIGludGVsX3BzdGF0ZSwK PiA+ID4gPiAtCQkJCQkgICBkZGJfYmxvY2tzLAo+ID4gPiA+IC0JCQkJCSAgIGxldmVsLAo+ID4g PiA+IC0JCQkJCSAgIHdtX3BhcmFtcywKPiA+ID4gPiAtCQkJCQkgICByZXN1bHRfcHJldiwKPiA+ ID4gPiAtCQkJCQkgICByZXN1bHQpOwo+ID4gPiA+IC0JCWlmIChyZXQpCj4gPiA+ID4gLQkJCXJl dHVybiByZXQ7Cj4gPiA+ID4gKwkJc2tsX2NvbXB1dGVfcGxhbmVfd20oY3N0YXRlLCBpbnRlbF9w c3RhdGUsIGxldmVsLCB3bV9wYXJhbXMsCj4gPiA+ID4gKwkJCQkgICAgIHJlc3VsdF9wcmV2LCBy ZXN1bHQpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCQlyZXN1bHRfcHJldiA9IHJlc3VsdDsKPiA+ID4g PiAgCX0KPiA+ID4gPiAtCj4gPiA+ID4gLQlyZXR1cm4gMDsKPiA+ID4gPiAgfQo+ID4gPiA+ICAK PiA+ID4gPiAgc3RhdGljIHVpbnQzMl90Cj4gPiA+ID4gQEAgLTQ5MDgsOCArNDgwNSw3IEBAIHNr bF9jb21wdXRlX2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUpCj4gPiA+ID4gIAo+ID4gPiA+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0aW9u X3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+ID4gIAkJCQkg ICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsCj4gPiA+ID4gLQkJCQkgICAgICBz dHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSwKPiA+ID4gPiAtCQkJCSAgICAgIHVpbnQxNl90IGRkYl9h bGxvY2F0aW9uKQo+ID4gPiA+ICsJCQkJICAgICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20pCj4g PiA+ID4gIHsKPiA+ID4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjc3RhdGUtPmJhc2Uu Y3J0Yy0+ZGV2Owo+ID4gPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiA+IEBAIC00OTU3LDEyICs0ODUzLDEzIEBAIHN0YXRp YyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPiA+ID4gPiAgCj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+IC0J cmVzX2Jsb2NrcyArPSAxOwo+ID4gPiA+IC0KPiA+ID4gPiAtCWlmIChyZXNfYmxvY2tzIDwgZGRi X2FsbG9jYXRpb24pIHsKPiA+ID4gPiAtCQl3bS0+dHJhbnNfd20ucGxhbmVfcmVzX2IgPSByZXNf YmxvY2tzOwo+ID4gPiA+IC0JCXdtLT50cmFuc193bS5wbGFuZV9lbiA9IHRydWU7Cj4gPiA+ID4g LQl9Cj4gPiA+ID4gKwkvKgo+ID4gPiA+ICsJICogSnVzdCBhc3N1bWUgd2UgY2FuIGVuYWJsZSB0 aGUgdHJhbnNpdGlvbiB3YXRlcm1hcmsuICBBZnRlcgo+ID4gPiA+ICsJICogY29tcHV0aW5nIHRo ZSBEREIgd2UnbGwgY29tZSBiYWNrIGFuZCBkaXNhYmxlIGl0IGlmIHRoYXQKPiA+ID4gPiArCSAq IGFzc3VtcHRpb24gdHVybnMgb3V0IHRvIGJlIGZhbHNlLgo+ID4gPiA+ICsJICovCj4gPiA+ID4g Kwl3bS0+dHJhbnNfd20ucGxhbmVfcmVzX2IgPSByZXNfYmxvY2tzICsgMTsKPiA+ID4gPiArCXdt LT50cmFuc193bS5wbGFuZV9lbiA9IHRydWU7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4g IHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4gPiBAQCAtNDk3MCw3ICs0ODY3LDYgQEAgc3RhdGljIGlu dCBza2xfYnVpbGRfcGxhbmVfd21fc2luZ2xlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ID4gPiA+ICAJCQkJICAgICBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkLCBpbnQgY29s b3JfcGxhbmUpCj4gPiA+ID4gIHsKPiA+ID4gPiAgCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0g JmNydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07Cj4gPiA+ID4gLQl1 MTYgZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmY3J0Y19zdGF0ZS0+d20uc2tsLnBs YW5lX2RkYl95W3BsYW5lX2lkXSk7Cj4gPiA+ID4gIAlzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyB3bV9w YXJhbXM7Cj4gPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiA+ICAKPiA+ID4gPiBAQCAtNDk3OSwxMiAr NDg3NSw4IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4gPiAgCWlmIChyZXQpCj4gPiA+ID4gIAkJ cmV0dXJuIHJldDsKPiA+ID4gPiAgCj4gPiA+ID4gLQlyZXQgPSBza2xfY29tcHV0ZV93bV9sZXZl bHMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4gPiA+ID4gLQkJCQkgICAgZGRiX2Jsb2Nrcywg JndtX3BhcmFtcywgd20tPndtKTsKPiA+ID4gPiAtCWlmIChyZXQpCj4gPiA+ID4gLQkJcmV0dXJu IHJldDsKPiA+ID4gPiAtCj4gPiA+ID4gLQlza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNydGNf c3RhdGUsICZ3bV9wYXJhbXMsIHdtLCBkZGJfYmxvY2tzKTsKPiA+ID4gPiArCXNrbF9jb21wdXRl X3dtX2xldmVscyhjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwgJndtX3BhcmFtcywgd20tPndtKTsK PiA+ID4gPiArCXNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY3J0Y19zdGF0ZSwgJndtX3BhcmFt cywgd20pOwo+ID4gPiA+ICAKPiA+ID4gPiAgCXJldHVybiAwOwo+ID4gPiA+ICB9Cj4gPiA+ID4g QEAgLTQ5OTQsNyArNDg4Niw2IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2KHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gPiA+ICAJCQkJIGVudW0gcGxh bmVfaWQgcGxhbmVfaWQpCj4gPiA+ID4gIHsKPiA+ID4gPiAgCXN0cnVjdCBza2xfcGxhbmVfd20g KndtID0gJmNydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07Cj4gPiA+ ID4gLQl1MTYgZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmY3J0Y19zdGF0ZS0+d20u c2tsLnBsYW5lX2RkYl91dltwbGFuZV9pZF0pOwo+ID4gPiA+ICAJc3RydWN0IHNrbF93bV9wYXJh bXMgd21fcGFyYW1zOwo+ID4gPiA+ICAJaW50IHJldDsKPiA+ID4gPiAgCj4gPiA+ID4gQEAgLTUw MDYsMTAgKzQ4OTcsNyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV91dihzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ID4gPiAgCWlmIChyZXQpCj4gPiA+ID4g IAkJcmV0dXJuIHJldDsKPiA+ID4gPiAgCj4gPiA+ID4gLQlyZXQgPSBza2xfY29tcHV0ZV93bV9s ZXZlbHMoY3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUsCj4gPiA+ID4gLQkJCQkgICAgZGRiX2Jsb2Nr cywgJndtX3BhcmFtcywgd20tPnV2X3dtKTsKPiA+ID4gPiAtCWlmIChyZXQpCj4gPiA+ID4gLQkJ cmV0dXJuIHJldDsKPiA+ID4gPiArCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCBw bGFuZV9zdGF0ZSwgJndtX3BhcmFtcywgd20tPnV2X3dtKTsKPiA+ID4gPiAgCj4gPiA+ID4gIAly ZXR1cm4gMDsKPiA+ID4gPiAgfQo+ID4gPiA+IEBAIC01NTIxLDEzICs1NDA5LDkgQEAgc2tsX2Nv bXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+ID4gIAlpZiAo cmV0IHx8ICFjaGFuZ2VkKQo+ID4gPiA+ICAJCXJldHVybiByZXQ7Cj4gPiA+ID4gIAo+ID4gPiA+ IC0JcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRlKTsKPiA+ID4gPiAtCWlmIChyZXQpCj4gPiA+ ID4gLQkJcmV0dXJuIHJldDsKPiA+ID4gPiAtCj4gPiA+ID4gIAkvKgo+ID4gPiA+ICAJICogQ2Fs Y3VsYXRlIFdNJ3MgZm9yIGFsbCBwaXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgdHJhbnNhY3Rp b24uCj4gPiA+ID4gLQkgKiBOb3RlIHRoYXQgdGhlIEREQiBhbGxvY2F0aW9uIGFib3ZlIG1heSBo YXZlIGFkZGVkIG1vcmUgQ1JUQydzIHRoYXQKPiA+ID4gPiArCSAqIE5vdGUgdGhhdCBza2xfZGRi X2FkZF9hZmZlY3RlZF9waXBlcyBtYXkgaGF2ZSBhZGRlZCBtb3JlIENSVEMncyB0aGF0Cj4gPiA+ ID4gIAkgKiB3ZXJlbid0IG90aGVyd2lzZSBiZWluZyBtb2RpZmllZCAoYW5kIHNldCBiaXRzIGlu IGRpcnR5X3BpcGVzKSBpZgo+ID4gPiA+ICAJICogcGlwZSBhbGxvY2F0aW9ucyBoYWQgdG8gY2hh bmdlLgo+ID4gPiA+ICAJICovCj4gPiA+ID4gQEAgLTU1NDksNiArNTQzMywxMCBAQCBza2xfY29t cHV0ZV93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gPiAgCQkJcmVz dWx0cy0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7Cj4gPiA+ID4g IAl9Cj4gPiA+ID4gIAo+ID4gPiA+ICsJcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRlKTsKPiA+ ID4gPiArCWlmIChyZXQpCj4gPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gPiArCj4gPiA+ID4g IAlza2xfcHJpbnRfd21fY2hhbmdlcyhzdGF0ZSk7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJcmV0dXJu IDA7Cj4gPiA+ID4gLS0gCj4gPiA+ID4gMi4xNC40Cj4gPiA+IAo+ID4gPiAtLSAKPiA+ID4gVmls bGUgU3lyasOkbMOkCj4gPiA+IEludGVsCj4gPiAKPiA+IC0tIAo+ID4gTWF0dCBSb3Blcgo+ID4g R3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKPiA+IElvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBE ZXZlbG9wbWVudAo+ID4gSW50ZWwgQ29ycG9yYXRpb24KPiA+ICg5MTYpIDM1Ni0yNzk1Cj4gCj4g LS0gCj4gVmlsbGUgU3lyasOkbMOkCj4gSW50ZWwKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==