From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 02/26] drm/i915: don't stop+start FBC at every flip Date: Thu, 29 Oct 2015 20:14:11 +0200 Message-ID: <20151029181411.GW4437@intel.com> References: <1445964628-30226-1-git-send-email-paulo.r.zanoni@intel.com> <1445964628-30226-3-git-send-email-paulo.r.zanoni@intel.com> <20151027183231.GN4437@intel.com> <1446051398.2750.3.camel@intel.com> <20151028172012.GS4437@intel.com> <20151029173044.GV4437@intel.com> <1446141144.2750.53.camel@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 ESMTP id 1B3896E498 for ; Thu, 29 Oct 2015 11:14:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1446141144.2750.53.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgMDU6NTI6MjZQTSArMDAwMCwgWmFub25pLCBQYXVsbyBS IHdyb3RlOgo+IEVtIFF1aSwgMjAxNS0xMC0yOSDDoHMgMTk6MzAgKzAyMDAsIFZpbGxlIFN5cmrD pGzDpCBlc2NyZXZldToKPiA+IE9uIFdlZCwgT2N0IDI4LCAyMDE1IGF0IDA3OjIwOjEyUE0gKzAy MDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gT24gV2VkLCBPY3QgMjgsIDIwMTUgYXQg MDQ6NTY6MzlQTSArMDAwMCwgWmFub25pLCBQYXVsbyBSIHdyb3RlOgo+ID4gPiA+IEVtIFRlciwg MjAxNS0xMC0yNyDDoHMgMjA6MzIgKzAyMDAsIFZpbGxlIFN5cmrDpGzDpCBlc2NyZXZldToKPiA+ ID4gPiA+IE9uIFR1ZSwgT2N0IDI3LCAyMDE1IGF0IDAyOjUwOjA0UE0gLTAyMDAsIFBhdWxvIFph bm9uaSB3cm90ZToKPiA+ID4gPiA+ID4gVGhlIGhhcmR3YXJlIGFscmVhZHkgdGFrZXMgY2FyZSBv ZiBkaXNhYmxpbmcgYW5kCj4gPiA+ID4gPiA+IHJlY29tcHJlc3NpbmcgRkJDCj4gPiA+ID4gPiA+ IHdoZW4gd2UgZG8gYSBwYWdlIGZsaXAsIHNvIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIHRvIHVwZGF0 ZSB0aGUKPiA+ID4gPiA+ID4gZmVuY2UKPiA+ID4gPiA+ID4gcmVnaXN0ZXJzIGFuZCBtb3ZlIG9u Lgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gT25lIG9mIHRoZSBpbXBvcnRhbnQgdGhpbmdzIHRv IG5vdGljZSBpcyB0aGF0IG9uIHRoZSBwcmUtZ2VuNgo+ID4gPiA+ID4gPiBwbGF0Zm9ybXMgdGhl IGZlbmNlIGlzIHByb2dyYW1tZWQgb24gdGhlIEZCQyBjb250cm9sIHJlZ2lzdGVyCj4gPiA+ID4g PiA+IGFuZAo+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gZG9jdW1lbnRhdGlvbiBzYXlzIHdl IGNhbid0IHVwZGF0ZSB0aGUgY29udHJvbCByZWdpc3RlciB3aGlsZQo+ID4gPiA+ID4gPiBGQkMK PiA+ID4gPiA+ID4gaXMKPiA+ID4gPiA+ID4gZW5hYmxlZC4gVGhpcyB3b3VsZCBiYXNpY2FsbHkg bWVhbiB3ZSdkIGhhdmUgdG8gdG8KPiA+ID4gPiA+ID4gZGlzYWJsZStlbmFibGUKPiA+ID4gPiA+ ID4gRkJDCj4gPiA+ID4gPiA+IGF0IGV2ZXJ5IGZsaXAgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRo ZSBoYXJkd2FyZSB0cmFja2luZwo+ID4gPiA+ID4gPiBzdGlsbAo+ID4gPiA+ID4gPiB3b3JrcywK PiA+ID4gPiA+ID4gd2hpY2ggZG9lc24ndCBzZWVtIHRvIG1ha2UgdG9vIG11Y2ggc2Vuc2UuIFNv IEkgc2VudCBhbiBlbWFpbAo+ID4gPiA+ID4gPiB0bwo+ID4gPiA+ID4gPiB0aGUKPiA+ID4gPiA+ ID4gaGFyZHdhcmUgdGVhbSByZXF1ZXN0aW5nIHNvbWUgY2xhcmlmaWNhdGlvbi4gVGhlIGluZm9y bWF0aW9uCj4gPiA+ID4gPiA+IEkgZ290Cj4gPiA+ID4gPiA+IHdhcwo+ID4gPiA+ID4gPiB0aGlz Ogo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gIkkgZG9uJ3QgdGhpbmsgYW55IGhhcmR3YXJlIGlz IGxhdGNoaW5nIG9uIHRvIDB4MTAwMTAwLAo+ID4gPiA+ID4gPiAweDEwMDEwNCwKPiA+ID4gPiA+ ID4gb3IKPiA+ID4gPiA+ID4gdGhlIG9sZCBmZW5jZSBudW1iZXIgaW4gRkJDX0NUTC4gSW5zdHJ1 Y3Rpb25zIGFnYWluc3QKPiA+ID4gPiA+ID4gY2hhbmdpbmcgb24KPiA+ID4gPiA+ID4gdGhlCj4g PiA+ID4gPiA+IGZseSB3b3VsZCBiZSB0byBzaW1wbGlmeSB0ZXN0aW5nIGFuZCBlbnN1cmUgeW91 IGRvbid0IG1pc3MKPiA+ID4gPiA+ID4gYW55Cj4gPiA+ID4gPiA+IGludmFsaWRhdGlvbiB0aGF0 IGhhcHBlbmVkIHJpZ2h0IGF0IHRoYXQgdGltZS4iCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBT byBJIGd1ZXNzIHdlJ3JlIGZpbmUgZm9yIGZsaXBzLiBCdXQgSSBjYW4ndCByZWFsbHkgc2F5IEkK PiA+ID4gPiA+ID4gdGVzdGVkCj4gPiA+ID4gPiA+IEZCQwo+ID4gPiA+ID4gPiBvbiB0aGVzZSBh bmNpZW50IHBsYXRmb3JtcyAtIG5vciB0aGF0IEknbGwgZXZlciBwcm9wb3NlCj4gPiA+ID4gPiA+ IGVuYWJsaW5nCj4gPiA+ID4gPiA+IEZCQwo+ID4gPiA+ID4gPiBieSBkZWZhdWx0IG9uIHRoZW0g ZXhhY3RseSBiZWNhdXNlIG9mIHByb2JsZW1zIGxpa2UgdGhlc2UuCj4gPiA+ID4gPiAKPiA+ID4g PiA+IFllYWgsIEkgZGlkIHRoaXMgaW4gbXkgcGF0Y2hlcyB0b28sIGFuZCBJSVJDIGl0IHNlZW1l ZCB0byB3b3JrCj4gPiA+ID4gPiBqdXN0Cj4gPiA+ID4gPiBmaW5lCj4gPiA+ID4gPiBiYWNrIHRo ZW4uCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IHYyOiBBZGQgY29tbWVudCBh dCBmbHVzaCgpIChDaHJpcykuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBUZXN0Y2FzZTogaWd0 L2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy9mYmMqLWZsaXB0cmFjawo+ID4gPiA+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+ID4g PiA+ID4gLS0tCj4gPiA+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKg wqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDEgKwo+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmjCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAzICsKPiA+ID4gPiA+ ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmPCoMKgwqDCoMKgfMKgwqDC oDEgLQo+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKg wqDCoMKgwqDCoMKgfMKgwqDCoDIgKwo+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jwqDCoMKgwqDCoMKgwqDCoMKgfCAxMDMKPiA+ID4gPiA+ID4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQo+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Zyb250YnVmZmVyLmMgfMKgwqDCoDEgKwo+ID4gPiA+ID4gPiDCoDYgZmlsZXMgY2hh bmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4g PiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gPiA+ID4gaW5k ZXggZWUxNDk2Mi4uNzdkYTUwMCAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gPiA+ID4gPiA+IEBAIC05MjgsNiArOTI4LDcgQEAgc3RydWN0IGk5MTVf ZmJjIHsKPiA+ID4gPiA+ID4gwqAJYm9vbCAoKmZiY19lbmFibGVkKShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZQo+ID4gPiA+ID4gPiAqZGV2X3ByaXYpOwo+ID4gPiA+ID4gPiDCoAl2b2lkICgqZW5h YmxlX2ZiYykoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4gPiA+ID4gPiDCoAl2b2lkICgq ZGlzYWJsZV9mYmMpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gPiA+ICpkZXZfcHJp dik7Cj4gPiA+ID4gPiA+ICsJdm9pZCAoKmZsaXBfcHJlcGFyZSkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUKPiA+ID4gPiA+ID4gKmRldl9wcml2KTsKPiA+ID4gPiA+ID4gwqB9Owo+ID4gPiA+ID4g PiDCoAo+ID4gPiA+ID4gPiDCoC8qKgo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKPiA+ID4gPiA+ID4gaW5kZXggODk0MjUzMi4uM2Q1OThhMiAxMDA2NDQKPiA+ ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiA+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ID4gPiA+IEBAIC0y MDI4LDYgKzIwMjgsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+ID4gPiA+ID4g wqAjZGVmaW5lwqDCoMKgRkJDX0NUTF9DM19JRExFCSgxPDwxMykKPiA+ID4gPiA+ID4gwqAjZGVm aW5lwqDCoMKgRkJDX0NUTF9TVFJJREVfU0hJRlQJKDUpCj4gPiA+ID4gPiA+IMKgI2RlZmluZcKg wqDCoEZCQ19DVExfRkVOQ0VOT19TSElGVAkoMCkKPiA+ID4gPiA+ID4gKyNkZWZpbmXCoMKgwqBG QkNfQ1RMX0ZFTkNFTk9fTUFTSwkweEYKPiA+ID4gPiA+IAo+ID4gPiA+ID4gSXQncyBvbmx5IHRo cmVlIGJpdHMgb24gZ2VuMi4gQnV0IGJpdCAzIGlzIE1CWiBhbmQgdGhlcmUgYXJlCj4gPiA+ID4g PiBvbmx5IDgKPiA+ID4gPiA+IGZlbmNlIHJlZ2lzdGVycyBvbiB0aG9zZSBwbGF0Zm9ybXMsIHNv IHRoaXMgaXMgT0suCj4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gwqAjZGVmaW5lIEZCQ19DT01NQU5E CQkweDAzMjBjCj4gPiA+ID4gPiA+IMKgI2RlZmluZcKgwqDCoEZCQ19DTURfQ09NUFJFU1MJKDE8 PDApCj4gPiA+ID4gPiA+IMKgI2RlZmluZSBGQkNfU1RBVFVTCQkweDAzMjEwCj4gPiA+ID4gPiA+ IEBAIC0yMDY0LDYgKzIwNjUsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+ID4g PiA+ID4gwqAjZGVmaW5lwqDCoMKgRFBGQ19DVExfTElNSVRfMVgJKDA8PDYpCj4gPiA+ID4gPiA+ IMKgI2RlZmluZcKgwqDCoERQRkNfQ1RMX0xJTUlUXzJYCSgxPDw2KQo+ID4gPiA+ID4gPiDCoCNk ZWZpbmXCoMKgwqBEUEZDX0NUTF9MSU1JVF80WAkoMjw8NikKPiA+ID4gPiA+ID4gKyNkZWZpbmXC oMKgwqBEUEZDX0NUTF9GRU5DRV9NQVNLCTB4Rgo+ID4gPiA+ID4gPiDCoCNkZWZpbmUgRFBGQ19S RUNPTVBfQ1RMCQkweDMyMGMKPiA+ID4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgRFBGQ19SRUNPTVBf U1RBTExfRU4JKDE8PDI3KQo+ID4gPiA+ID4gPiDCoCNkZWZpbmXCoMKgwqBEUEZDX1JFQ09NUF9T VEFMTF9XTV9TSElGVCAoMTYpCj4gPiA+ID4gPiA+IEBAIC0yMDg2LDYgKzIwODgsNyBAQCBlbnVt IHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiA+ID4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgRkJDX0NU TF9GQUxTRV9DT0xPUgkoMTw8MTApCj4gPiA+ID4gPiA+IMKgLyogVGhlIGJpdCAyOC04IGlzIHJl c2VydmVkICovCj4gPiA+ID4gPiA+IMKgI2RlZmluZcKgwqDCoERQRkNfUkVTRVJWRUQJCSgweDFG RkZGRjAwKQo+ID4gPiA+ID4gPiArI2RlZmluZcKgwqDCoElMS19EUEZDX0ZFTkNFX01BU0sJMHhG Cj4gPiA+ID4gPiA+IMKgI2RlZmluZSBJTEtfRFBGQ19SRUNPTVBfQ1RMCTB4NDMyMGMKPiA+ID4g PiA+ID4gwqAjZGVmaW5lIElMS19EUEZDX1NUQVRVUwkJMHg0MzIxMAo+ID4gPiA+ID4gPiDCoCNk ZWZpbmUgSUxLX0RQRkNfRkVOQ0VfWU9GRgkweDQzMjE4Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gaW5kZXggYmMxOTA3 ZS4uZDkzNzhjMyAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiBAQCAtMTE1MDIsNyArMTE1MDIsNiBAQCBzdGF0aWMg aW50Cj4gPiA+ID4gPiA+IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdAo+ID4gPiA+ID4gPiBk cm1fY3J0YyAqY3J0YywKPiA+ID4gPiA+ID4gwqAJCQnCoMKgdG9faW50ZWxfcGxhbmUocHJpbWFy eSktCj4gPiA+ID4gPiA+ID4gZnJvbnRidWZmZXJfYml0KTsKPiA+ID4gPiA+ID4gwqAJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+IC0J aW50ZWxfZmJjX2Rpc2FibGVfY3J0YyhpbnRlbF9jcnRjKTsKPiA+ID4gPiA+ID4gwqAJaW50ZWxf ZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKGRldiwKPiA+ID4gPiA+ID4gwqAJCQkJwqDCoMKgwqDC oMKgwqB0b19pbnRlbF9wbGFuZShwcmltYXIKPiA+ID4gPiA+ID4geSktCj4gPiA+ID4gPiA+ID4g ZnJvbnRidWZmZXJfYml0KTsKPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiA+ID4gaW5kZXggMDg4NDdkMC4uOTA2NWE4 ZiAxMDA2NDQKPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ ID4gPiA+ID4gQEAgLTEzMDUsNiArMTMwNSw4IEBAIHZvaWQgaW50ZWxfZmJjX2ludmFsaWRhdGUo c3RydWN0Cj4gPiA+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4g PiDCoAkJCcKgwqBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ID4gPiA+ID4gPiDCoHZvaWQg aW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4g PiA+ID4gwqAJCcKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cywgZW51bQo+ ID4gPiA+ID4gPiBmYl9vcF9vcmlnaW4gb3JpZ2luKTsKPiA+ID4gPiA+ID4gK3ZvaWQgaW50ZWxf ZmJjX2ZsaXBfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiA+ID4gPiAqZGV2 X3ByaXYsCj4gPiA+ID4gPiA+ICsJCQnCoMKgwqDCoHVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9i aXRzKTsKPiA+ID4gPiA+ID4gwqB2b2lkIGludGVsX2ZiY19jbGVhbnVwX2NmYihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQo+ID4gPiA+ID4gPiAqZGV2X3ByaXYpOwo+ID4gPiA+ID4gPiDCoAo+ID4g PiA+ID4gPiDCoC8qIGludGVsX2hkbWkuYyAqLwo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiA+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gPiA+ID4gPiBpbmRleCBkOWQ3ZTU0Li42MmYxNThiIDEw MDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ ID4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+ID4gPiA+ ID4gPiBAQCAtODIsNiArODIsMjIgQEAgc3RhdGljIHZvaWQgaTh4eF9mYmNfZGlzYWJsZShzdHJ1 Y3QKPiA+ID4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ID4gPiA+IMKg CURSTV9ERUJVR19LTVMoImRpc2FibGVkIEZCQ1xuIik7Cj4gPiA+ID4gPiA+IMKgfQo+ID4gPiA+ ID4gPiDCoAo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgaTh4eF9mYmNfZmxpcF9wcmVwYXJlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gPiA+ICpkZXZfcHJpdikKPiA+ID4gPiA+ID4g K3sKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2LT5mYmMu Y3J0YzsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJh c2UucHJpbWFyeS0+ZmI7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gPiA+ID4gPiA+ICsJdWludDMyX3QgdmFsOwo+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJLyogQWx0aG91Z2ggdGhlIGRvY3VtZW50YXRpb24gc3Vn Z2VzdHMgd2UgY2FuJ3QKPiA+ID4gPiA+ID4gY2hhbmdlCj4gPiA+ID4gPiA+IERQRkNfQ09OVFJP TAo+ID4gPiA+ID4gPiArCcKgKiB3aGlsZSBjb21wcmVzc2lvbiBpcyBlbmFibGVkLCB0aGUgaGFy ZHdhcmUgZ3V5cwo+ID4gPiA+ID4gPiBzYWlkCj4gPiA+ID4gPiA+IHRoYXQgdXBkYXRpbmcKPiA+ ID4gPiA+ID4gKwnCoCogdGhlIGZlbmNlIHJlZ2lzdGVyIGJpdHMgZHVyaW5nIGEgZmxpcCBpcyBm aW5lLiAqLwo+ID4gPiA+ID4gPiArCXZhbCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7Cj4gPiA+ ID4gPiA+ICsJdmFsICY9IH5GQkNfQ1RMX0ZFTkNFTk9fTUFTSzsKPiA+ID4gPiA+ID4gKwl2YWwg fD0gb2JqLT5mZW5jZV9yZWc7Cj4gPiA+ID4gPiA+ICsJSTkxNV9XUklURShGQkNfQ09OVFJPTCwg dmFsKTsKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSUlSQyBJIGp1c3QgY2Fs bGVkIHRoZSBlbmFibGUgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3QgdGhlCj4gPiA+ID4gPiBlbnRp cmUKPiA+ID4gPiA+IHJlZ2lzdGVyIGNvbnRlbnRzIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24u IEJ1dCBtYXliZSB0aGF0J3MKPiA+ID4gPiA+IG5vdAo+ID4gPiA+ID4gcG9zc2libGUgd2l0aG91 dCByZW93cmtpbmcgdGhlIGZiYyBzdGF0ZSBoYW5kbGluZyBlbnRpcmVseQo+ID4gPiA+ID4gKHdo aWNoIEkgaGFkIGRvbmUpLgo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+IMKgc3RhdGljIHZvaWQg aTh4eF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gPiA+ID4gPiDCoHsK PiA+ID4gPiA+ID4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+ YmFzZS5kZXYtCj4gPiA+ID4gPiA+ID4gZGV2X3ByaXZhdGU7Cj4gPiA+ID4gPiA+IEBAIC0xNjEs NiArMTc3LDIyIEBAIHN0YXRpYyB2b2lkIGc0eF9mYmNfZW5hYmxlKHN0cnVjdAo+ID4gPiA+ID4g PiBpbnRlbF9jcnRjCj4gPiA+ID4gPiA+ICpjcnRjKQo+ID4gPiA+ID4gPiDCoAlEUk1fREVCVUdf S01TKCJlbmFibGVkIGZiYyBvbiBwbGFuZSAlY1xuIiwKPiA+ID4gPiA+ID4gcGxhbmVfbmFtZShj cnRjLT5wbGFuZSkpOwo+ID4gPiA+ID4gPiDCoH0KPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4g K3N0YXRpYyB2b2lkIGc0eF9mYmNfZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gPiA+ID4gPiA+ICpkZXZfcHJpdikKPiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2LT5mYmMuY3J0YzsKPiA+ID4gPiA+ID4gKwlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4gPiA+ ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihm Yik7Cj4gPiA+ID4gPiA+ICsJdWludDMyX3QgdmFsOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICsJLyogQWx0aG91Z2ggdGhlIGRvY3VtZW50YXRpb24gc3VnZ2VzdHMgd2UgY2FuJ3QKPiA+ID4g PiA+ID4gY2hhbmdlCj4gPiA+ID4gPiA+IERQRkNfQ09OVFJPTAo+ID4gPiA+ID4gPiArCcKgKiB3 aGlsZSBjb21wcmVzc2lvbiBpcyBlbmFibGVkLCB0aGUgaGFyZHdhcmUgZ3V5cwo+ID4gPiA+ID4g PiBzYWlkCj4gPiA+ID4gPiA+IHRoYXQgdXBkYXRpbmcKPiA+ID4gPiA+ID4gKwnCoCogdGhlIGZl bmNlIHJlZ2lzdGVyIGJpdHMgZHVyaW5nIGEgZmxpcCBpcyBmaW5lLiAqLwo+ID4gPiA+ID4gPiAr CXZhbCA9IEk5MTVfUkVBRChEUEZDX0NPTlRST0wpOwo+ID4gPiA+ID4gPiArCXZhbCAmPSB+RFBG Q19DVExfRkVOQ0VfTUFTSzsKPiA+ID4gPiA+ID4gKwl2YWwgfD0gb2JqLT5mZW5jZV9yZWc7Cj4g PiA+ID4gPiA+ICsJSTkxNV9XUklURShEUEZDX0NPTlRST0wsIHZhbCk7Cj4gPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gwqBzdGF0aWMgdm9pZCBnNHhfZmJjX2Rpc2FibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gPiA+ID4gKmRldl9wcml2KQo+ID4gPiA+ID4g PiDCoHsKPiA+ID4gPiA+ID4gwqAJdTMyIGRwZmNfY3RsOwo+ID4gPiA+ID4gPiBAQCAtMjM2LDYg KzI2OCwzMSBAQCBzdGF0aWMgdm9pZCBpbGtfZmJjX2VuYWJsZShzdHJ1Y3QKPiA+ID4gPiA+ID4g aW50ZWxfY3J0Ywo+ID4gPiA+ID4gPiAqY3J0YykKPiA+ID4gPiA+ID4gwqAJRFJNX0RFQlVHX0tN UygiZW5hYmxlZCBmYmMgb24gcGxhbmUgJWNcbiIsCj4gPiA+ID4gPiA+IHBsYW5lX25hbWUoY3J0 Yy0+cGxhbmUpKTsKPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+ICtz dGF0aWMgdm9pZCBpbGtfZmJjX2ZsaXBfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ ID4gPiA+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+ZmJjLmNydGM7Cj4gPiA+ID4gPiA+ICsJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPmZiOwo+ID4gPiA+ ID4gPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIp Owo+ID4gPiA+ID4gPiArCXVpbnQzMl90IHZhbDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAr CS8qIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHdlIGNhbid0Cj4gPiA+ID4g PiA+IGNoYW5nZQo+ID4gPiA+ID4gPiBEUEZDX0NPTlRST0wKPiA+ID4gPiA+ID4gKwnCoCogd2hp bGUgY29tcHJlc3Npb24gaXMgZW5hYmxlZCwgdGhlIGhhcmR3YXJlIGd1eXMKPiA+ID4gPiA+ID4g c2FpZAo+ID4gPiA+ID4gPiB0aGF0IHVwZGF0aW5nCj4gPiA+ID4gPiA+ICsJwqAqIHRoZSBmZW5j ZSByZWdpc3RlciBiaXRzIGR1cmluZyBhIGZsaXAgaXMgZmluZS4gKi8KPiA+ID4gPiA+ID4gKwl2 YWwgPSBJOTE1X1JFQUQoSUxLX0RQRkNfQ09OVFJPTCk7Cj4gPiA+ID4gPiA+ICsJdmFsICY9IH5J TEtfRFBGQ19GRU5DRV9NQVNLOwo+ID4gPiA+ID4gPiArCXZhbCB8PSBvYmotPmZlbmNlX3JlZzsK PiA+ID4gPiA+ID4gKwlJOTE1X1dSSVRFKElMS19EUEZDX0NPTlRST0wsIHZhbCk7Cj4gPiA+ID4g PiA+ICt9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHNuYl9mYmNfZmxp cF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gPiA+ICpkZXZfcHJpdikK PiA+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRl dl9wcml2LT5mYmMuY3J0YzsKPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gPiA+ID4gPiA+ICsKPiA+ID4g PiA+ID4gKwlJOTE1X1dSSVRFKFNOQl9EUEZDX0NUTF9TQSwgU05CX0NQVV9GRU5DRV9FTkFCTEUg fAo+ID4gPiA+ID4gPiBvYmotCj4gPiA+ID4gPiA+ID4gZmVuY2VfcmVnKTsKPiA+ID4gPiA+ID4g K30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiDCoHN0YXRpYyB2b2lkIGlsa19mYmNfZGlzYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiA+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ID4g PiA+IMKgewo+ID4gPiA+ID4gPiDCoAl1MzIgZHBmY19jdGw7Cj4gPiA+ID4gPiA+IEBAIC0xMDIx LDEzICsxMDc4LDQ4IEBAIHZvaWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdAo+ID4gPiA+ID4gPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gPiA+ID4gwqAJaWYgKG9yaWdpbiA9PSBP UklHSU5fR1RUKQo+ID4gPiA+ID4gPiDCoAkJcmV0dXJuOwo+ID4gPiA+ID4gPiDCoAo+ID4gPiA+ ID4gPiArCS8qIEhhcmR3YXJlIHRyYWNraW5nIGFscmVhZHkgcmVjb21wcmVzc2VzIHRoZSBDRkIK PiA+ID4gPiA+ID4gKG51a2UpCj4gPiA+ID4gPiA+IGZvciB1cyBpZiBGQkMKPiA+ID4gPiA+ID4g KwnCoCogaXMgZW5hYmxlZCBhbmQgd2UgZG8gYSBwYWdlIGZsaXAsIHNvIHdlIGNhbgo+ID4gPiA+ ID4gPiBzYWZlbHkKPiA+ID4gPiA+ID4gaWdub3JlIGl0IGhlcmUuCj4gPiA+ID4gPiA+ICsJwqAq IEZCQyBtYXkgYmUgZGlzYWJsZWQgaW4gY2FzZSB3ZSBnb3QgYW4KPiA+ID4gPiA+ID4gaW52YWxp ZGF0ZSgpCj4gPiA+ID4gPiA+IGJlZm9yZSB0aGUKPiA+ID4gPiA+ID4gKwnCoCogZmx1c2goKSwg c28gd2UnbGwgc3RpbGwgaGF2ZSB0byBjaGVjayB0aGF0IGNhc2UKPiA+ID4gPiA+ID4gYmVsb3cu Cj4gPiA+ID4gPiA+ICovCj4gPiA+ID4gPiA+ICsJaWYgKG9yaWdpbiA9PSBPUklHSU5fRkxJUCAm JiBkZXZfcHJpdi0+ZmJjLmVuYWJsZWQpCj4gPiA+ID4gPiA+ICsJCXJldHVybjsKPiA+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOwo+ID4g PiA+ID4gPiDCoAo+ID4gPiA+ID4gPiDCoAlkZXZfcHJpdi0+ZmJjLmJ1c3lfYml0cyAmPSB+ZnJv bnRidWZmZXJfYml0czsKPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4gwqAJaWYgKCFkZXZfcHJp di0+ZmJjLmJ1c3lfYml0cykgewo+ID4gPiA+ID4gPiAtCQlfX2ludGVsX2ZiY19kaXNhYmxlKGRl dl9wcml2KTsKPiA+ID4gPiA+ID4gLQkJX19pbnRlbF9mYmNfdXBkYXRlKGRldl9wcml2KTsKPiA+ ID4gPiA+ID4gKwkJaWYgKG9yaWdpbiA9PSBPUklHSU5fRkxJUCkgewo+ID4gPiA+ID4gPiArCQkJ X19pbnRlbF9mYmNfdXBkYXRlKGRldl9wcml2KTsKPiA+ID4gPiA+ID4gKwkJfSBlbHNlIHsKPiA+ ID4gPiA+ID4gKwkJCV9faW50ZWxfZmJjX2Rpc2FibGUoZGV2X3ByaXYpOwo+ID4gPiA+ID4gPiAr CQkJX19pbnRlbF9mYmNfdXBkYXRlKGRldl9wcml2KTsKPiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ ID4gPiArCX0KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArCW11dGV4X3VubG9jaygmZGV2X3By aXYtPmZiYy5sb2NrKTsKPiA+ID4gPiA+ID4gK30KPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAr dm9pZCBpbnRlbF9mYmNfZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ ID4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gPiA+ID4gKwkJCcKgwqDCoMKgdW5zaWduZWQgaW50IGZy b250YnVmZmVyX2JpdHMpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsJdW5zaWduZWQgaW50 IGZiY19iaXRzOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsJaWYgKCFmYmNfc3VwcG9ydGVk KGRldl9wcml2KSkKPiA+ID4gPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKPiA+ID4gPiA+ID4gKwo+ID4g PiA+ID4gPiArCWlmIChkZXZfcHJpdi0+ZmJjLmVuYWJsZWQpIHsKPiA+ID4gPiA+ID4gKwkJZmJj X2JpdHMgPQo+ID4gPiA+ID4gPiBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKGRldl9wcml2LQo+ ID4gPiA+ID4gPiA+IGZiYy5jcnRjLT5waXBlKTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gcHJpbWFy eS0+ZnJvbnRidWZmZXJfYml0IHdvdWxkIHNlZW0gYmV0dGVyLgo+ID4gPiA+IAo+ID4gPiA+IFdo eT8KPiA+ID4gCj4gPiA+IFdoeSBub3Q/IEl0J3MgdGhlcmUgYWxyZWFkeSBzdGFzaGVkIGF3YXkg Zm9yIHlvdSB0byB1c2UuIE5vIG5lZWQgdG8KPiA+ID4gc3ByaW5rbGUgdGhlc2UgSU5URUxfRlJP TlRCVUZGRVIuLi4gdGhpbmdzIGFsbCBvdmVyIHRoZSBwbGFjZS4KPiA+ID4gCj4gPiA+ID4gCj4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gKwkJaWYgKGZiY19iaXRzICYgZnJvbnRidWZmZXJfYml0cykK PiA+ID4gPiA+ID4gKwkJCWRldl9wcml2LQo+ID4gPiA+ID4gPiA+ZmJjLmZsaXBfcHJlcGFyZShk ZXZfcHJpdik7Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IFlvdSB3b3VsZCBzdGlsbCBoYXZlIHRvIGRp c2FibGUrcmVlbmFibGUgaWYgeW91IG5lZWQgdG8gZWcuCj4gPiA+ID4gPiByZWFsbG9jYXRlCj4g PiA+ID4gPiB0aGUgY29tcHJlc3NlZCBidWZmZXIsIG9mIGlmIHRoZSBuZXcgZmIgaXNuJ3Qgc3Vp dGFibGUgZm9yIGZiYywKPiA+ID4gPiA+IG9yCj4gPiA+ID4gPiBtYXliZQo+ID4gPiA+ID4gaWYg eW91IG5lZWQgdG8gY2hhbmdlIGFueXRoaW5nIGVsc2UgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIu Cj4gPiA+ID4gCj4gPiA+ID4gWWVzLCBidXQgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCB0aGUgZnJv bnRidWZmZXIgdHJhY2tpbmcsIHRoaXMKPiA+ID4gPiBjYXNlCj4gPiA+ID4gd29uJ3QgaGFwcGVu IGhlcmUuIEknbSBhc3N1bWluZyB3ZSdsbCBhbHdheXMgZ28gdGhyb3VnaAo+ID4gPiA+IGludGVs X2ZiY191cGRhdGUoKSBvbiB0aGVzZSBjYXNlcy4KPiA+ID4gCj4gPiA+IFBlcmhhcHMsIGJ1dCBt b3JlIGJ5IGx1Y2sgdGhhbiBieSBkZXNpZ24uIFdpdGggdGhlIHNldHBsYW5lIGFuZAo+ID4gPiBh dG9taWMKPiA+ID4gQVBJcyB0aGVyZSdzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiBhIHBhZ2UgZmxp cCBhbmQgb3RoZXIgcGxhbmUKPiA+ID4gdXBkYXRlcy4KPiAKPiBJIGFtIGF3YXJlIHRoYXQgc29t ZSBjb2RlIHBhdGhzIGFyZSBub3QgdGhlIHNhbWUgYXMgdGhlIGZ1bGwgbW9kZXNldAo+IHBhdGgs IGJ1dCB0aGVyZSBpcyBzdGlsbCBkaWZmZXJlbmNlIGZyb20gdGhlIHBsYWluIHBhZ2VmbGlwIElP Q1RMLiBBbmQKPiBzbyBmYXIgSSBoYXZlIHNlZW4gaW50ZWxfZmJjX3VwZGF0ZSgpIGJlaW5nIGNh bGxlZCBldmVyeXdoZXJlLCBzbyB0aGlzCj4gc2hvdWxkIHByZXZlbnQgdGhlIHByb2JsZW1zIHlv dSBzZWVtIHRvIGJlIHBvaW50aW5nLiBDYW4geW91IHBsZWFzZQo+IHBvaW50IGEgc3BlY2lmaWMg Y2FzZSB0aGF0IHdvdWxkIGJyZWFrIGhlcmUgaW52b2x2aW5nIGEgc2luZ2xlIHBpcGU/Cj4gTXVs dGlwbGUgcGlwZXMgYXJlIGRpc2N1c3NlZCBiZWxvdy7CoAo+IAo+IEkndmUgYmVlbiB0cnlpbmcg dG8gYW5hbHl6ZSB3aGF0IHlvdSBzYWlkIGFuZCBjb252ZXJ0IHRoaXMgdG8gYSBwcm9wZXIKPiBJ R1Qgc3VidGVzdCwgYnV0IEkganVzdCBjYW4ndCBzZWUgdGhlIGJ1ZyBoZXJlLiBQbGVhc2UgYmUg YSBsaXR0bGUgbW9yZQo+IHNwZWNpZmljIG9uIHlvdXIgZGVzY3JpcHRpb24sIGxpa2UgeW91IGp1 c3QgZGlkIGZvciB0aGUgbXVsdGktcGlwZQo+IGNhc2UuCj4gCj4gPiA+IFNvIGlmIHlvdSB3YW50 IHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBodyBmbGlwIG51a2UsIHlvdSB3b3VsZAo+ID4gPiBu ZWVkIHRvCj4gPiA+IGNoZWNrIGhvdyB0aGUgcGxhbmUgc3RhdGUgaXMgZ29pbmcgdG8gY2hhbmdl LCBhbmQgYmFzZWQgb24gdGhhdAo+ID4gPiBkZWNpZGUKPiA+ID4gd2hldGhlciBhIGZlbmNlIHVw ZGF0ZSBpcyBlbm91Z2ggb3IgZGlzYWJsZStyZS1lbmFibGUgaXMgbmVlZGVkLgo+ID4gPiBBbmQg aW4KPiA+ID4gZmFjdCBJIGRvbid0IHNlZSBhbnkgZmJjX2Rpc2FibGUgYmVmb3JlIHRoZSBmbGlw LCBqdXN0IGFuCj4gPiA+IGZiY191cGRhdGUKPiA+ID4gYWZ0ZXIgdGhlIGZhY3QuIFNvIHNlZW1z IHRvIG1lIHRoZSBkaXNhYmxlIHJlYWxseSBzaG91bGQgYmUgaW4geW91cgo+ID4gPiBmbGlwX3By ZXBhcmUgaG9vayBpbiB0aGlzIGNhc2UKPiAKPiBUaGUgZmxpcF9wcmVwYXJlIGhvb2sgaXMgb25s eSBmb3IgY2FzZXMgd2hlcmUgdGhlIGRpc2FibGUrdXBkYXRlIGlzIG5vdAo+IG5lZWRlZCBzaW5j ZSB3ZSdyZSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZSBIVyB0cmFja2luZy4KClRoYXQgbWF5IGJl IE9LIGZvciB0aGUgbGVnYWN5IHBhZ2UgZmxpcCBwYXRoIHNpbmNlIHdlIGFydGlmaWNhbGx5CnJl c3RyaWN0IHdoYXQgaXQgY2FuIGNoYW5nZS4gVGhlIHNldHBsYW5lL2F0b21pYyBwYXRoIGNhbiBj aGFuZ2UKYW55dGhpbmcsIHNvIG1vcmUgY2hlY2tzIGFyZSBuZWVkZWQgdGhlcmUgdG8gc2VlIGlm IGZiYyBuZWVkcyB0byBiZQpkaXNhYmxlZCBvciBpZiB0aGUgZmVuY2UgdXBkYXRlIGlzIGVub3Vn aC4KCk9oLCBhY3R1YWxseSB3ZSBkbyBhbGxvdyB0aGUgcGFnZSBmbGlwIGlvY3RsIHRvIGNoYW5n ZSB0aGUgdGlsaW5nCm1vZGUsIHNvIHlvdSBkbyBuZWVkIHRvIHRha2UgdGhpcyBpbnRvIGFjY291 bnQgZXZlbiB0aGVyZS4KCj4gCj4gQmVzaWRlcywgdXBkYXRlKCkgd2l0aG91dCBhIHByZXZpb3Vz IGRpc2FibGUoKSBpcyBmaW5lLgoKTm90IGlmIHRoZSBmbGlwIGFscmVhZHkgaGFwcGVuZWQgd2hp bGUgZmJjIHdhcyBzdGlsbCBlbmFibGVkIGFuZApjb25maWd1cmVkIGJhc2VkIG9uIHRoZSBvbGQg cGxhbmUgc3RhdGUuCgo+IAo+ID4gPiAuIEFuZCBpbiBmYWN0IHRoZSB3aG9sZSBmbGlwX3ByZXBh cmUKPiA+ID4gdGhpbmcgaXNuJ3QgZXZlbiBjYWxsZWQgZnJvbSB0aGUgc2V0cGxhbmUvYXRvbWlj IHBhdGguCj4gCj4gSWYgdXBkYXRlKCkgaXMgY2FsbGVkIHdlIGRvbid0IG5lZWQgZmxpcF9wcmVw YXJlKCkgc2luY2UgZmxpcF9wcmVwYXJlKCkKPiBpcyBvbmx5IGZvciB0aGUgZmFzdCBwYXRoIHdo ZXJlIHdlIGp1c3QgdXBkYXRlIHRoZSBmZW5jZS4KPiAKPiA+IAo+ID4gT2ggYW5kIGFub3RoZXIg cmVsYXRlZCBzY2VuYXJpbyBhbHNvIGNhbWUgdG8gbWluZC4gQ29uc2lkZXIgZm9yCj4gPiBleGFt cGxlCj4gPiB0aGUgZm9sbG93IHNlcXVlbmNlIG9mIGV2ZW50czoKPiA+IAo+ID4gMS4gZmJjIGVu YWJsZWQgb24gcGlwZSBBCj4gPiAyLiBmbGlwIHNjaGVkdWxlZCBvbiBwaXBlIEEgd2hpY2ggcmVx dWlyZXMgZmJjIHRvIGJlIGRpc2FibGVkCj4gPiDCoMKgwqAtPiBmYmMgZ2V0cyBkaXNhYmxlZAo+ ID4gNC4gbW9kZXNldCBvbiBwaXBlIEIgY2FsbHMgZmJjX3VwZGF0ZQo+ID4gwqDCoMKgLT4gZmJj IGdldHMgcmUtZW5hYmxlZCBvbiBwaXBlIEEgYmVmb3JlIHRoZSBmbGlwIGhhcyBmaW5pc2hlZCwK PiA+IG9vcHMhCj4gCj4gSWYgd2UgaGF2ZSBGQkMgZGlzYWJsZWQgb24gcGlwZSBBIGJlZm9yZSB0 aGUgcGlwZSBCIG1vZGVzZXQsIHRoZW4gcGlwZQo+IEIgY2FsbHMgZmJjX3VwZGF0ZSgpLCBJIGp1 c3QgY2FuJ3Qgc2VlIGhvdyBGQkMgbWF5IGdldCByZS1lbmFibGVkIG9uCj4gcGlwZSBBLiBDYW4g eW91IHBsZWFzZSBlbGFib3JhdGUgbW9yZT8KCkxhc3QgdGltZSBJIGxvb2tlZCBmYmNfdXBkYXRl KCkganVzdCB3ZW50IHJ1bW1hZ2luZyB0aHJvdWdoIGFsbCBjcnRjcwphbmQgcGlja2VkIG9uZSBv ZiB0aGVtLiBNYXliZSBpdCBubyBsb25nZXIgZG9lcyB0aGF0PyBPciBtYXliZSBpdCBzdGlsbApk aXNhYmxlcyBmYmMgZW50aXJlbHkgd2hlbiBtdWx0aXBsZSBwaXBlcyBhcmUgYWN0aXZlPwoKPiAK PiAKPiBJIGtub3cgd2Ugc2hvdWxkIGF2b2lkIHJlZ3Jlc3Npb25zIGluIHRoZSBtaWRkbGUgb2Yg dGhlIHNlcmllcywgYnV0IGFzCj4gYSBzaWRlLWNvbW1lbnQsIHRoZSBtdWx0aS1waXBlIHNjZW5h cmlvIGNoYW5nZXMgZXZlbiBtb3JlIGxhdGVyIGluIHRoZQo+IHNlcmllcyBhdCB0aGUgcG9pbnQg d2hlcmUgd2UgaW50cm9kdWNlCj4gZW5hYmxlL2Rpc2FibGUrYWN0aXZhdGUvZGVhY3RpdmF0ZS4g U28gd2UnZCBvbmx5IGdldCBGQkMgb24gcGlwZSBCIGlmCj4gd2UgZ2V0IGEgaWxrX2NydGNfZGlz YWJsZShwaXBlX2EpIGZpcnN0Lgo+IAo+IEJlc2lkZXMsIG15IHBsYW4gaGVyZSBpcyB0byBlbmFi bGUgRkJDIG9ubHkgb24gSFNXKywgYW5kIHRoZXNlCj4gcGxhdGZvcm1zIHJlc3RyaWN0IEZCQyB0 byBwaXBlIEEuIE9mIGNvdXJzZSBJJ20gdHJ5aW5nIHRvIG5vdCBpbnRyb2R1Y2UKPiBhbnkgbmV3 IGJ1Z3MsIGJ1dCBJIGFsc28gdGhpbmsgd2Ugc2hvdWxkbid0IGJsb2NrIHBhdGNoZXMganVzdCBi ZWNhdXNlCj4gc29tZSBJTEstSVZCIGJ1ZyB3YXMgbm90IGFkZHJlc3NlZC4KPiAKPiA+IAo+ID4g U28gd2UgYWxzbyBuZWVkIHNvbWV0aGluZyB0byBrZWVwIGZiYyByZWxpYWJseSBkaXNhYmxlZCB1 bnRpbCB0aGUKPiA+IGZsaXAgaGFzIG9jY3VyZWQuCj4gPiAKPiA+ID4gCj4gPiA+ID4gCj4gPiA+ ID4gPiAKPiA+ID4gPiA+IFdoYXQgSSBoYWQgd2FzOgo+ID4gPiA+ID4gIgo+ID4gPiA+ID4gc3Rh dGljIGJvb2wgaW50ZWxfZmJjX25lZWRfcmVpbml0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ID4gPiA+ID4gewo+ID4gPiA+ID4gCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGNydGMtPmJhc2UuZGV2LQo+ID4gPiA+ID4gPiBkZXZfcHJpdmF0ZTsKPiA+ID4gPiA+IAlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4gPiA+ID4g PiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9Cj4gPiA+ID4gPiB0b19pbnRlbF9m cmFtZWJ1ZmZlcihmYiktCj4gPiA+ID4gPiA+IG9iajsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gCXJl dHVybiBjcnRjICE9IGRldl9wcml2LT5mYmMuY3J0YyB8fAo+ID4gPiA+ID4gCcKgwqDCoMKgwqDC oMKgb2JqLT5iYXNlLnNpemUgPiBkZXZfcHJpdi0+ZmJjLnNpemUgfHwKPiA+ID4gPiA+IAnCoMKg wqDCoMKgwqDCoGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApICE9Cj4g PiA+ID4gPiAJwqDCoMKgwqDCoMKgwqBkcm1fZm9ybWF0X3BsYW5lX2NwcChkZXZfcHJpdi0+ZmJj LnBpeGVsX2Zvcm1hdCwgCj4gPiA+ID4gPiAwKSB8fAo+ID4gPiA+ID4gCcKgwqDCoMKgwqDCoMKg ZmItPnBpdGNoZXNbMF0gIT0gZGV2X3ByaXYtPmZiYy5waXRjaDsKPiA+ID4gPiA+IH0KPiA+ID4g PiA+IGludGVsX2ZiY19wcmVfcGFnZV9mbGlwKCkKPiA+ID4gPiA+IHsKPiA+ID4gPiA+IAkuLi4K PiA+ID4gPiA+IAlpbnRlbF9mYmNfdXBkYXRlX3BlbmRpbmdfc2NvcmUoY3J0Yyk7Cj4gPiA+ID4g PiAKPiA+ID4gPiA+IAkvKgo+ID4gPiA+ID4gCSAqIElmIGZiYyB3YXMgYWxyZWFkeSBwb3NzaWJs ZSB3ZSBjYW4gdXBkYXRlCj4gPiA+ID4gPiBpbW1lZGlhdGVseSwKPiA+ID4gPiA+IAkgKiBvdGhl cndpc2Ugd2Ugd2lsbCB3YWl0IHVudGlsIHRoZSBmbGlwIGlzIGZpbmlzaGVkLgo+ID4gPiA+ID4g CSAqLwo+ID4gPiA+ID4gCWlmIChjcnRjLT5mYmMuc2NvcmUgIT0gMCkKPiA+ID4gPiA+IAkJY3J0 Yy0+ZmJjLnNjb3JlID0gY3J0Yy0+ZmJjLnBlbmRpbmdfc2NvcmU7Cj4gPiA+ID4gPiAKPiA+ID4g PiA+IAkvKgo+ID4gPiA+ID4gCSAqIERpc2FibGUgZmJjIGlmIHdlJ3JlIG5vdCAoeWV0KSBjYXBh YmxlLCBvciBpZgo+ID4gPiA+ID4gCSAqIHdlIGp1c3QgbmVlZCBhIGZ1bGwgZGlzYWJsZStlbmFi bGUgcmVpbml0Lgo+ID4gPiA+ID4gCSAqLwo+ID4gPiA+ID4gCWlmIChjcnRjLT5mYmMuc2NvcmUg PT0gMCB8fAo+ID4gPiA+ID4gaW50ZWxfZmJjX25lZWRfcmVpbml0KGNydGMpKQo+ID4gPiA+ID4g CQlfX2ludGVsX2ZiY19kaXNhYmxlKGNydGMpOwo+ID4gPiA+ID4gCS4uLgo+ID4gPiA+ID4gfQo+ ID4gPiA+ID4gIgo+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICsJfSBlbHNlIGlmIChkZXZfcHJpdi0+ ZmJjLmZiY193b3JrKSB7Cj4gPiA+ID4gPiA+ICsJCWZiY19iaXRzID0gSU5URUxfRlJPTlRCVUZG RVJfUFJJTUFSWSgKPiA+ID4gPiA+ID4gKwkJCQlkZXZfcHJpdi0+ZmJjLmZiY193b3JrLQo+ID4g PiA+ID4gPiA+Y3J0Yy0KPiA+ID4gPiA+ID4gPiBwaXBlKTsKPiA+ID4gPiA+ID4gKwkJaWYgKGZi Y19iaXRzICYgZnJvbnRidWZmZXJfYml0cykKPiA+ID4gPiA+ID4gKwkJCV9faW50ZWxfZmJjX2Rp c2FibGUoZGV2X3ByaXYpOwo+ID4gPiA+ID4gPiDCoAl9Cj4gPiA+ID4gPiA+IMKgCj4gPiA+ID4g PiA+IMKgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKPiA+ID4gPiA+ID4gQEAg LTEwNjMsMTggKzExNTUsMjUgQEAgdm9pZCBpbnRlbF9mYmNfaW5pdChzdHJ1Y3QKPiA+ID4gPiA+ ID4gZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiA+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ID4gPiA+IMKg CQlkZXZfcHJpdi0+ZmJjLmZiY19lbmFibGVkID0gaWxrX2ZiY19lbmFibGVkOwo+ID4gPiA+ID4g PiDCoAkJZGV2X3ByaXYtPmZiYy5lbmFibGVfZmJjID0gZ2VuN19mYmNfZW5hYmxlOwo+ID4gPiA+ ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5kaXNhYmxlX2ZiYyA9IGlsa19mYmNfZGlzYWJsZTsKPiA+ ID4gPiA+ID4gKwkJZGV2X3ByaXYtPmZiYy5mbGlwX3ByZXBhcmUgPQo+ID4gPiA+ID4gPiBzbmJf ZmJjX2ZsaXBfcHJlcGFyZTsKPiA+ID4gPiA+ID4gwqAJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuID49IDUpIHsKPiA+ID4gPiA+ID4gwqAJCWRldl9wcml2LT5mYmMuZmJjX2Vu YWJsZWQgPSBpbGtfZmJjX2VuYWJsZWQ7Cj4gPiA+ID4gPiA+IMKgCQlkZXZfcHJpdi0+ZmJjLmVu YWJsZV9mYmMgPSBpbGtfZmJjX2VuYWJsZTsKPiA+ID4gPiA+ID4gwqAJCWRldl9wcml2LT5mYmMu ZGlzYWJsZV9mYmMgPSBpbGtfZmJjX2Rpc2FibGU7Cj4gPiA+ID4gPiA+ICsJCWlmIChJTlRFTF9J TkZPKGRldl9wcml2KS0+Z2VuID09IDUpCj4gPiA+ID4gPiA+ICsJCQlkZXZfcHJpdi0+ZmJjLmZs aXBfcHJlcGFyZSA9Cj4gPiA+ID4gPiA+IGlsa19mYmNfZmxpcF9wcmVwYXJlOwo+ID4gPiA+ID4g PiArCQllbHNlCj4gPiA+ID4gPiA+ICsJCQlkZXZfcHJpdi0+ZmJjLmZsaXBfcHJlcGFyZSA9Cj4g PiA+ID4gPiA+IHNuYl9mYmNfZmxpcF9wcmVwYXJlOwo+ID4gPiA+ID4gPiDCoAl9IGVsc2UgaWYg KElTX0dNNDUoZGV2X3ByaXYpKSB7Cj4gPiA+ID4gPiA+IMKgCQlkZXZfcHJpdi0+ZmJjLmZiY19l bmFibGVkID0gZzR4X2ZiY19lbmFibGVkOwo+ID4gPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5l bmFibGVfZmJjID0gZzR4X2ZiY19lbmFibGU7Cj4gPiA+ID4gPiA+IMKgCQlkZXZfcHJpdi0+ZmJj LmRpc2FibGVfZmJjID0gZzR4X2ZiY19kaXNhYmxlOwo+ID4gPiA+ID4gPiArCQlkZXZfcHJpdi0+ ZmJjLmZsaXBfcHJlcGFyZSA9Cj4gPiA+ID4gPiA+IGc0eF9mYmNfZmxpcF9wcmVwYXJlOwo+ID4g PiA+ID4gPiDCoAl9IGVsc2Ugewo+ID4gPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5mYmNfZW5h YmxlZCA9Cj4gPiA+ID4gPiA+IGk4eHhfZmJjX2VuYWJsZWQ7Cj4gPiA+ID4gPiA+IMKgCQlkZXZf cHJpdi0+ZmJjLmVuYWJsZV9mYmMgPSBpOHh4X2ZiY19lbmFibGU7Cj4gPiA+ID4gPiA+IMKgCQlk ZXZfcHJpdi0+ZmJjLmRpc2FibGVfZmJjID0KPiA+ID4gPiA+ID4gaTh4eF9mYmNfZGlzYWJsZTsK PiA+ID4gPiA+ID4gKwkJZGV2X3ByaXYtPmZiYy5mbGlwX3ByZXBhcmUgPQo+ID4gPiA+ID4gPiBp OHh4X2ZiY19mbGlwX3ByZXBhcmU7Cj4gPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+IMKgCQkvKiBU aGlzIHZhbHVlIHdhcyBwdWxsZWQgb3V0IG9mIHNvbWVvbmUncwo+ID4gPiA+ID4gPiBoYXQgKi8K PiA+ID4gPiA+ID4gwqAJCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIDUwMCA8PAo+ID4gPiA+ID4g PiBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUKTsKPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPiA+ID4gPiA+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jCj4gPiA+ID4gPiA+IGluZGV4IGFjODUz NTcuLjMxYTFhZDMgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Zyb250YnVmZmVyLmMKPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+ID4gPiA+ID4gPiBAQCAtMTkyLDYgKzE5Miw3IEBAIHZv aWQKPiA+ID4gPiA+ID4gaW50ZWxfZnJvbnRidWZmZXJfZmxpcF9wcmVwYXJlKHN0cnVjdAo+ID4g PiA+ID4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ID4gPiA+IMKgCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmZiX3RyYWNraW5nLmxvY2spOwo+ID4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gPiDCoAlp bnRlbF9wc3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShkZXYsCj4gPiA+ID4gPiA+IGZyb250YnVmZmVy X2JpdHMpOwo+ID4gPiA+ID4gPiArCWludGVsX2ZiY19mbGlwX3ByZXBhcmUoZGV2X3ByaXYsIGZy b250YnVmZmVyX2JpdHMpOwo+ID4gPiA+ID4gPiDCoH0KPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ ID4gwqAvKioKPiA+ID4gPiA+ID4gLS0gCj4gPiA+ID4gPiA+IDIuNi4xCj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+ID4gPiA+ID4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiA+ID4gPiA+IEludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4gPiA+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ID4gPiA+ID4gCj4gPiA+IAo+ID4g PiAtLSAKPiA+ID4gVmlsbGUgU3lyasOkbMOkCj4gPiA+IEludGVsIE9UQwo+ID4gPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+ID4g aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+ ID4gCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=