From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH 02/26] drm/i915: don't stop+start FBC at every flip Date: Thu, 29 Oct 2015 17:52:26 +0000 Message-ID: <1446141144.2750.53.camel@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 586506E6EF for ; Thu, 29 Oct 2015 10:52:52 -0700 (PDT) In-Reply-To: <20151029173044.GV4437@intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "ville.syrjala@linux.intel.com" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE1LTEwLTI5IMOgcyAxOTozMCArMDIwMCwgVmlsbGUgU3lyasOkbMOkIGVzY3Jl dmV1Og0KPiBPbiBXZWQsIE9jdCAyOCwgMjAxNSBhdCAwNzoyMDoxMlBNICswMjAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6DQo+ID4gT24gV2VkLCBPY3QgMjgsIDIwMTUgYXQgMDQ6NTY6MzlQTSAr MDAwMCwgWmFub25pLCBQYXVsbyBSIHdyb3RlOg0KPiA+ID4gRW0gVGVyLCAyMDE1LTEwLTI3IMOg cyAyMDozMiArMDIwMCwgVmlsbGUgU3lyasOkbMOkIGVzY3JldmV1Og0KPiA+ID4gPiBPbiBUdWUs IE9jdCAyNywgMjAxNSBhdCAwMjo1MDowNFBNIC0wMjAwLCBQYXVsbyBaYW5vbmkgd3JvdGU6DQo+ ID4gPiA+ID4gVGhlIGhhcmR3YXJlIGFscmVhZHkgdGFrZXMgY2FyZSBvZiBkaXNhYmxpbmcgYW5k DQo+ID4gPiA+ID4gcmVjb21wcmVzc2luZyBGQkMNCj4gPiA+ID4gPiB3aGVuIHdlIGRvIGEgcGFn ZSBmbGlwLCBzbyBhbGwgd2UgbmVlZCB0byBkbyBpcyB0byB1cGRhdGUgdGhlDQo+ID4gPiA+ID4g ZmVuY2UNCj4gPiA+ID4gPiByZWdpc3RlcnMgYW5kIG1vdmUgb24uDQo+ID4gPiA+ID4gDQo+ID4g PiA+ID4gT25lIG9mIHRoZSBpbXBvcnRhbnQgdGhpbmdzIHRvIG5vdGljZSBpcyB0aGF0IG9uIHRo ZSBwcmUtZ2VuNg0KPiA+ID4gPiA+IHBsYXRmb3JtcyB0aGUgZmVuY2UgaXMgcHJvZ3JhbW1lZCBv biB0aGUgRkJDIGNvbnRyb2wgcmVnaXN0ZXINCj4gPiA+ID4gPiBhbmQNCj4gPiA+ID4gPiB0aGUN Cj4gPiA+ID4gPiBkb2N1bWVudGF0aW9uIHNheXMgd2UgY2FuJ3QgdXBkYXRlIHRoZSBjb250cm9s IHJlZ2lzdGVyIHdoaWxlDQo+ID4gPiA+ID4gRkJDDQo+ID4gPiA+ID4gaXMNCj4gPiA+ID4gPiBl bmFibGVkLiBUaGlzIHdvdWxkIGJhc2ljYWxseSBtZWFuIHdlJ2QgaGF2ZSB0byB0bw0KPiA+ID4g PiA+IGRpc2FibGUrZW5hYmxlDQo+ID4gPiA+ID4gRkJDDQo+ID4gPiA+ID4gYXQgZXZlcnkgZmxp cCBpbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlIGhhcmR3YXJlIHRyYWNraW5nDQo+ID4gPiA+ID4g c3RpbGwNCj4gPiA+ID4gPiB3b3JrcywNCj4gPiA+ID4gPiB3aGljaCBkb2Vzbid0IHNlZW0gdG8g bWFrZSB0b28gbXVjaCBzZW5zZS4gU28gSSBzZW50IGFuIGVtYWlsDQo+ID4gPiA+ID4gdG8NCj4g PiA+ID4gPiB0aGUNCj4gPiA+ID4gPiBoYXJkd2FyZSB0ZWFtIHJlcXVlc3Rpbmcgc29tZSBjbGFy aWZpY2F0aW9uLiBUaGUgaW5mb3JtYXRpb24NCj4gPiA+ID4gPiBJIGdvdA0KPiA+ID4gPiA+IHdh cw0KPiA+ID4gPiA+IHRoaXM6DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gIkkgZG9uJ3QgdGhpbmsg YW55IGhhcmR3YXJlIGlzIGxhdGNoaW5nIG9uIHRvIDB4MTAwMTAwLA0KPiA+ID4gPiA+IDB4MTAw MTA0LA0KPiA+ID4gPiA+IG9yDQo+ID4gPiA+ID4gdGhlIG9sZCBmZW5jZSBudW1iZXIgaW4gRkJD X0NUTC4gSW5zdHJ1Y3Rpb25zIGFnYWluc3QNCj4gPiA+ID4gPiBjaGFuZ2luZyBvbg0KPiA+ID4g PiA+IHRoZQ0KPiA+ID4gPiA+IGZseSB3b3VsZCBiZSB0byBzaW1wbGlmeSB0ZXN0aW5nIGFuZCBl bnN1cmUgeW91IGRvbid0IG1pc3MNCj4gPiA+ID4gPiBhbnkNCj4gPiA+ID4gPiBpbnZhbGlkYXRp b24gdGhhdCBoYXBwZW5lZCByaWdodCBhdCB0aGF0IHRpbWUuIg0KPiA+ID4gPiA+IA0KPiA+ID4g PiA+IFNvIEkgZ3Vlc3Mgd2UncmUgZmluZSBmb3IgZmxpcHMuIEJ1dCBJIGNhbid0IHJlYWxseSBz YXkgSQ0KPiA+ID4gPiA+IHRlc3RlZA0KPiA+ID4gPiA+IEZCQw0KPiA+ID4gPiA+IG9uIHRoZXNl IGFuY2llbnQgcGxhdGZvcm1zIC0gbm9yIHRoYXQgSSdsbCBldmVyIHByb3Bvc2UNCj4gPiA+ID4g PiBlbmFibGluZw0KPiA+ID4gPiA+IEZCQw0KPiA+ID4gPiA+IGJ5IGRlZmF1bHQgb24gdGhlbSBl eGFjdGx5IGJlY2F1c2Ugb2YgcHJvYmxlbXMgbGlrZSB0aGVzZS4NCj4gPiA+ID4gDQo+ID4gPiA+ IFllYWgsIEkgZGlkIHRoaXMgaW4gbXkgcGF0Y2hlcyB0b28sIGFuZCBJSVJDIGl0IHNlZW1lZCB0 byB3b3JrDQo+ID4gPiA+IGp1c3QNCj4gPiA+ID4gZmluZQ0KPiA+ID4gPiBiYWNrIHRoZW4uDQo+ ID4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IHYyOiBBZGQgY29tbWVudCBhdCBmbHVzaCgp IChDaHJpcykuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gVGVzdGNhc2U6IGlndC9rbXNfZnJvbnRi dWZmZXJfdHJhY2tpbmcvZmJjKi1mbGlwdHJhY2sNCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBQ YXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4NCj4gPiA+ID4gPiAtLS0NCj4g PiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjCoMKgwqDCoMKgwqDCoMKg wqDCoHzCoMKgwqAxICsNCj4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmjCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAzICsNCj4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuY8KgwqDCoMKgwqB8wqDCoMKgMSAtDQo+ID4gPiA+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKg wqAyICsNCj4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jwqDCoMKg wqDCoMKgwqDCoMKgfCAxMDMNCj4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KystDQo+ID4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5j IHzCoMKgwqAxICsNCj4gPiA+ID4gPiDCoDYgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ID4gPiBpbmRleCBlZTE0OTYyLi43N2RhNTAwIDEwMDY0 NA0KPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+ID4gQEAg LTkyOCw2ICs5MjgsNyBAQCBzdHJ1Y3QgaTkxNV9mYmMgew0KPiA+ID4gPiA+IMKgCWJvb2wgKCpm YmNfZW5hYmxlZCkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ID4gPiAqZGV2X3ByaXYp Ow0KPiA+ID4gPiA+IMKgCXZvaWQgKCplbmFibGVfZmJjKShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 Yyk7DQo+ID4gPiA+ID4gwqAJdm9pZCAoKmRpc2FibGVfZmJjKShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZQ0KPiA+ID4gPiA+ICpkZXZfcHJpdik7DQo+ID4gPiA+ID4gKwl2b2lkICgqZmxpcF9wcmVw YXJlKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gPiA+ICpkZXZfcHJpdik7DQo+ID4g PiA+ID4gwqB9Ow0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAvKioNCj4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+ID4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaA0KPiA+ID4gPiA+IGluZGV4IDg5NDI1MzIuLjNk NTk4YTIgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaA0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4g PiA+ID4gPiBAQCAtMjAyOCw2ICsyMDI4LDcgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7 DQo+ID4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgRkJDX0NUTF9DM19JRExFCSgxPDwxMykNCj4gPiA+ ID4gPiDCoCNkZWZpbmXCoMKgwqBGQkNfQ1RMX1NUUklERV9TSElGVAkoNSkNCj4gPiA+ID4gPiDC oCNkZWZpbmXCoMKgwqBGQkNfQ1RMX0ZFTkNFTk9fU0hJRlQJKDApDQo+ID4gPiA+ID4gKyNkZWZp bmXCoMKgwqBGQkNfQ1RMX0ZFTkNFTk9fTUFTSwkweEYNCj4gPiA+ID4gDQo+ID4gPiA+IEl0J3Mg b25seSB0aHJlZSBiaXRzIG9uIGdlbjIuIEJ1dCBiaXQgMyBpcyBNQlogYW5kIHRoZXJlIGFyZQ0K PiA+ID4gPiBvbmx5IDgNCj4gPiA+ID4gZmVuY2UgcmVnaXN0ZXJzIG9uIHRob3NlIHBsYXRmb3Jt cywgc28gdGhpcyBpcyBPSy4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gwqAjZGVmaW5lIEZCQ19DT01N QU5ECQkweDAzMjBjDQo+ID4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgRkJDX0NNRF9DT01QUkVTUwko MTw8MCkNCj4gPiA+ID4gPiDCoCNkZWZpbmUgRkJDX1NUQVRVUwkJMHgwMzIxMA0KPiA+ID4gPiA+ IEBAIC0yMDY0LDYgKzIwNjUsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsNCj4gPiA+ ID4gPiDCoCNkZWZpbmXCoMKgwqBEUEZDX0NUTF9MSU1JVF8xWAkoMDw8NikNCj4gPiA+ID4gPiDC oCNkZWZpbmXCoMKgwqBEUEZDX0NUTF9MSU1JVF8yWAkoMTw8NikNCj4gPiA+ID4gPiDCoCNkZWZp bmXCoMKgwqBEUEZDX0NUTF9MSU1JVF80WAkoMjw8NikNCj4gPiA+ID4gPiArI2RlZmluZcKgwqDC oERQRkNfQ1RMX0ZFTkNFX01BU0sJMHhGDQo+ID4gPiA+ID4gwqAjZGVmaW5lIERQRkNfUkVDT01Q X0NUTAkJMHgzMjBjDQo+ID4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgRFBGQ19SRUNPTVBfU1RBTExf RU4JKDE8PDI3KQ0KPiA+ID4gPiA+IMKgI2RlZmluZcKgwqDCoERQRkNfUkVDT01QX1NUQUxMX1dN X1NISUZUICgxNikNCj4gPiA+ID4gPiBAQCAtMjA4Niw2ICsyMDg4LDcgQEAgZW51bSBza2xfZGlz cF9wb3dlcl93ZWxscyB7DQo+ID4gPiA+ID4gwqAjZGVmaW5lwqDCoMKgRkJDX0NUTF9GQUxTRV9D T0xPUgkoMTw8MTApDQo+ID4gPiA+ID4gwqAvKiBUaGUgYml0IDI4LTggaXMgcmVzZXJ2ZWQgKi8N Cj4gPiA+ID4gPiDCoCNkZWZpbmXCoMKgwqBEUEZDX1JFU0VSVkVECQkoMHgxRkZGRkYwMCkNCj4g PiA+ID4gPiArI2RlZmluZcKgwqDCoElMS19EUEZDX0ZFTkNFX01BU0sJMHhGDQo+ID4gPiA+ID4g wqAjZGVmaW5lIElMS19EUEZDX1JFQ09NUF9DVEwJMHg0MzIwYw0KPiA+ID4gPiA+IMKgI2RlZmlu ZSBJTEtfRFBGQ19TVEFUVVMJCTB4NDMyMTANCj4gPiA+ID4gPiDCoCNkZWZpbmUgSUxLX0RQRkNf RkVOQ0VfWU9GRgkweDQzMjE4DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYw0KPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jDQo+ID4gPiA+ID4gaW5kZXggYmMxOTA3ZS4uZDkzNzhjMyAxMDA2NDQN Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMNCj4gPiA+ ID4gPiBAQCAtMTE1MDIsNyArMTE1MDIsNiBAQCBzdGF0aWMgaW50DQo+ID4gPiA+ID4gaW50ZWxf Y3J0Y19wYWdlX2ZsaXAoc3RydWN0DQo+ID4gPiA+ID4gZHJtX2NydGMgKmNydGMsDQo+ID4gPiA+ ID4gwqAJCQnCoMKgdG9faW50ZWxfcGxhbmUocHJpbWFyeSktDQo+ID4gPiA+ID4gPiBmcm9udGJ1 ZmZlcl9iaXQpOw0KPiA+ID4gPiA+IMKgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Ow0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gLQlpbnRlbF9mYmNfZGlzYWJsZV9jcnRjKGludGVs X2NydGMpOw0KPiA+ID4gPiA+IMKgCWludGVsX2Zyb250YnVmZmVyX2ZsaXBfcHJlcGFyZShkZXYs DQo+ID4gPiA+ID4gwqAJCQkJwqDCoMKgwqDCoMKgwqB0b19pbnRlbF9wbGFuZShwcmltYXINCj4g PiA+ID4gPiB5KS0NCj4gPiA+ID4gPiA+IGZyb250YnVmZmVyX2JpdCk7DQo+ID4gPiA+ID4gwqAN Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgN Cj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+ID4gPiA+ID4g aW5kZXggMDg4NDdkMC4uOTA2NWE4ZiAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oDQo+ID4gPiA+ID4gQEAgLTEzMDUsNiArMTMwNSw4IEBAIHZvaWQgaW50 ZWxfZmJjX2ludmFsaWRhdGUoc3RydWN0DQo+ID4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsDQo+ID4gPiA+ID4gwqAJCQnCoMKgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKTsNCj4g PiA+ID4gPiDCoHZvaWQgaW50ZWxfZmJjX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwNCj4gPiA+ID4gPiDCoAkJwqDCoMKgwqDCoHVuc2lnbmVkIGludCBmcm9udGJ1ZmZl cl9iaXRzLCBlbnVtDQo+ID4gPiA+ID4gZmJfb3Bfb3JpZ2luIG9yaWdpbik7DQo+ID4gPiA+ID4g K3ZvaWQgaW50ZWxfZmJjX2ZsaXBfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ ID4gPiA+ICpkZXZfcHJpdiwNCj4gPiA+ID4gPiArCQkJwqDCoMKgwqB1bnNpZ25lZCBpbnQgZnJv bnRidWZmZXJfYml0cyk7DQo+ID4gPiA+ID4gwqB2b2lkIGludGVsX2ZiY19jbGVhbnVwX2NmYihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gPiA+ICpkZXZfcHJpdik7DQo+ID4gPiA+ID4g wqANCj4gPiA+ID4gPiDCoC8qIGludGVsX2hkbWkuYyAqLw0KPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYw0KPiA+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMNCj4gPiA+ID4gPiBpbmRleCBkOWQ3ZTU0Li42MmYxNThi IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5j DQo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMNCj4gPiA+ ID4gPiBAQCAtODIsNiArODIsMjIgQEAgc3RhdGljIHZvaWQgaTh4eF9mYmNfZGlzYWJsZShzdHJ1 Y3QNCj4gPiA+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gPiA+ID4gPiDCoAlE Uk1fREVCVUdfS01TKCJkaXNhYmxlZCBGQkNcbiIpOw0KPiA+ID4gPiA+IMKgfQ0KPiA+ID4gPiA+ IMKgDQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGk4eHhfZmJjX2ZsaXBfcHJlcGFyZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gPiA+ICpkZXZfcHJpdikNCj4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+ZmJjLmNydGM7DQo+ ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFy eS0+ZmI7DQo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50 ZWxfZmJfb2JqKGZiKTsNCj4gPiA+ID4gPiArCXVpbnQzMl90IHZhbDsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKwkvKiBBbHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBzdWdnZXN0cyB3ZSBjYW4n dA0KPiA+ID4gPiA+IGNoYW5nZQ0KPiA+ID4gPiA+IERQRkNfQ09OVFJPTA0KPiA+ID4gPiA+ICsJ wqAqIHdoaWxlIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQsIHRoZSBoYXJkd2FyZSBndXlzDQo+ID4g PiA+ID4gc2FpZA0KPiA+ID4gPiA+IHRoYXQgdXBkYXRpbmcNCj4gPiA+ID4gPiArCcKgKiB0aGUg ZmVuY2UgcmVnaXN0ZXIgYml0cyBkdXJpbmcgYSBmbGlwIGlzIGZpbmUuICovDQo+ID4gPiA+ID4g Kwl2YWwgPSBJOTE1X1JFQUQoRkJDX0NPTlRST0wpOw0KPiA+ID4gPiA+ICsJdmFsICY9IH5GQkNf Q1RMX0ZFTkNFTk9fTUFTSzsNCj4gPiA+ID4gPiArCXZhbCB8PSBvYmotPmZlbmNlX3JlZzsNCj4g PiA+ID4gPiArCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIHZhbCk7DQo+ID4gPiA+ID4gK30NCj4g PiA+ID4gDQo+ID4gPiA+IElJUkMgSSBqdXN0IGNhbGxlZCB0aGUgZW5hYmxlIGZ1bmN0aW9uIHRv IHJlY29uc3RydWN0IHRoZQ0KPiA+ID4gPiBlbnRpcmUNCj4gPiA+ID4gcmVnaXN0ZXIgY29udGVu dHMgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4gQnV0IG1heWJlIHRoYXQncw0KPiA+ID4gPiBu b3QNCj4gPiA+ID4gcG9zc2libGUgd2l0aG91dCByZW93cmtpbmcgdGhlIGZiYyBzdGF0ZSBoYW5k bGluZyBlbnRpcmVseQ0KPiA+ID4gPiAod2hpY2ggSSBoYWQgZG9uZSkuDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+IMKgc3RhdGljIHZvaWQgaTh4eF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKQ0KPiA+ID4gPiA+IMKgew0KPiA+ID4gPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LQ0KPiA+ID4gPiA+ID4gZGV2X3ByaXZhdGU7 DQo+ID4gPiA+ID4gQEAgLTE2MSw2ICsxNzcsMjIgQEAgc3RhdGljIHZvaWQgZzR4X2ZiY19lbmFi bGUoc3RydWN0DQo+ID4gPiA+ID4gaW50ZWxfY3J0Yw0KPiA+ID4gPiA+ICpjcnRjKQ0KPiA+ID4g PiA+IMKgCURSTV9ERUJVR19LTVMoImVuYWJsZWQgZmJjIG9uIHBsYW5lICVjXG4iLA0KPiA+ID4g PiA+IHBsYW5lX25hbWUoY3J0Yy0+cGxhbmUpKTsNCj4gPiA+ID4gPiDCoH0NCj4gPiA+ID4gPiDC oA0KPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBnNHhfZmJjX2ZsaXBfcHJlcGFyZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZQ0KPiA+ID4gPiA+ICpkZXZfcHJpdikNCj4gPiA+ID4gPiArew0KPiA+ID4g PiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+ZmJjLmNydGM7DQo+ID4g PiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ ZmI7DQo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxf ZmJfb2JqKGZiKTsNCj4gPiA+ID4gPiArCXVpbnQzMl90IHZhbDsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKwkvKiBBbHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBzdWdnZXN0cyB3ZSBjYW4ndA0K PiA+ID4gPiA+IGNoYW5nZQ0KPiA+ID4gPiA+IERQRkNfQ09OVFJPTA0KPiA+ID4gPiA+ICsJwqAq IHdoaWxlIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQsIHRoZSBoYXJkd2FyZSBndXlzDQo+ID4gPiA+ ID4gc2FpZA0KPiA+ID4gPiA+IHRoYXQgdXBkYXRpbmcNCj4gPiA+ID4gPiArCcKgKiB0aGUgZmVu Y2UgcmVnaXN0ZXIgYml0cyBkdXJpbmcgYSBmbGlwIGlzIGZpbmUuICovDQo+ID4gPiA+ID4gKwl2 YWwgPSBJOTE1X1JFQUQoRFBGQ19DT05UUk9MKTsNCj4gPiA+ID4gPiArCXZhbCAmPSB+RFBGQ19D VExfRkVOQ0VfTUFTSzsNCj4gPiA+ID4gPiArCXZhbCB8PSBvYmotPmZlbmNlX3JlZzsNCj4gPiA+ ID4gPiArCUk5MTVfV1JJVEUoRFBGQ19DT05UUk9MLCB2YWwpOw0KPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+IMKgc3RhdGljIHZvaWQgZzR4X2ZiY19kaXNhYmxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlDQo+ID4gPiA+ID4gKmRldl9wcml2KQ0KPiA+ID4gPiA+IMKgew0KPiA+ ID4gPiA+IMKgCXUzMiBkcGZjX2N0bDsNCj4gPiA+ID4gPiBAQCAtMjM2LDYgKzI2OCwzMSBAQCBz dGF0aWMgdm9pZCBpbGtfZmJjX2VuYWJsZShzdHJ1Y3QNCj4gPiA+ID4gPiBpbnRlbF9jcnRjDQo+ ID4gPiA+ID4gKmNydGMpDQo+ID4gPiA+ID4gwqAJRFJNX0RFQlVHX0tNUygiZW5hYmxlZCBmYmMg b24gcGxhbmUgJWNcbiIsDQo+ID4gPiA+ID4gcGxhbmVfbmFtZShjcnRjLT5wbGFuZSkpOw0KPiA+ ID4gPiA+IMKgfQ0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGlsa19mYmNf ZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiA+ID4gKmRldl9wcml2 KQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRl dl9wcml2LT5mYmMuY3J0YzsNCj4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsNCj4gPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOw0KPiA+ID4gPiA+ICsJdWludDMyX3Qg dmFsOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCS8qIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0 aW9uIHN1Z2dlc3RzIHdlIGNhbid0DQo+ID4gPiA+ID4gY2hhbmdlDQo+ID4gPiA+ID4gRFBGQ19D T05UUk9MDQo+ID4gPiA+ID4gKwnCoCogd2hpbGUgY29tcHJlc3Npb24gaXMgZW5hYmxlZCwgdGhl IGhhcmR3YXJlIGd1eXMNCj4gPiA+ID4gPiBzYWlkDQo+ID4gPiA+ID4gdGhhdCB1cGRhdGluZw0K PiA+ID4gPiA+ICsJwqAqIHRoZSBmZW5jZSByZWdpc3RlciBiaXRzIGR1cmluZyBhIGZsaXAgaXMg ZmluZS4gKi8NCj4gPiA+ID4gPiArCXZhbCA9IEk5MTVfUkVBRChJTEtfRFBGQ19DT05UUk9MKTsN Cj4gPiA+ID4gPiArCXZhbCAmPSB+SUxLX0RQRkNfRkVOQ0VfTUFTSzsNCj4gPiA+ID4gPiArCXZh bCB8PSBvYmotPmZlbmNlX3JlZzsNCj4gPiA+ID4gPiArCUk5MTVfV1JJVEUoSUxLX0RQRkNfQ09O VFJPTCwgdmFsKTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArc3RhdGlj IHZvaWQgc25iX2ZiY19mbGlwX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ ID4gPiAqZGV2X3ByaXYpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gZGV2X3ByaXYtPmZiYy5jcnRjOw0KPiA+ID4gPiA+ICsJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPmZiOw0KPiA+ID4gPiA+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsJSTkxNV9XUklURShTTkJfRFBGQ19DVExfU0EsIFNOQl9DUFVfRkVO Q0VfRU5BQkxFIHwNCj4gPiA+ID4gPiBvYmotDQo+ID4gPiA+ID4gPiBmZW5jZV9yZWcpOw0KPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+IMKgc3RhdGljIHZvaWQgaWxrX2ZiY19k aXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ID4gPiA+ID4gKmRldl9wcml2KQ0KPiA+ ID4gPiA+IMKgew0KPiA+ID4gPiA+IMKgCXUzMiBkcGZjX2N0bDsNCj4gPiA+ID4gPiBAQCAtMTAy MSwxMyArMTA3OCw0OCBAQCB2b2lkIGludGVsX2ZiY19mbHVzaChzdHJ1Y3QNCj4gPiA+ID4gPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiA+ID4gPiDCoAlpZiAob3JpZ2luID09IE9S SUdJTl9HVFQpDQo+ID4gPiA+ID4gwqAJCXJldHVybjsNCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+ ICsJLyogSGFyZHdhcmUgdHJhY2tpbmcgYWxyZWFkeSByZWNvbXByZXNzZXMgdGhlIENGQg0KPiA+ ID4gPiA+IChudWtlKQ0KPiA+ID4gPiA+IGZvciB1cyBpZiBGQkMNCj4gPiA+ID4gPiArCcKgKiBp cyBlbmFibGVkIGFuZCB3ZSBkbyBhIHBhZ2UgZmxpcCwgc28gd2UgY2FuDQo+ID4gPiA+ID4gc2Fm ZWx5DQo+ID4gPiA+ID4gaWdub3JlIGl0IGhlcmUuDQo+ID4gPiA+ID4gKwnCoCogRkJDIG1heSBi ZSBkaXNhYmxlZCBpbiBjYXNlIHdlIGdvdCBhbg0KPiA+ID4gPiA+IGludmFsaWRhdGUoKQ0KPiA+ ID4gPiA+IGJlZm9yZSB0aGUNCj4gPiA+ID4gPiArCcKgKiBmbHVzaCgpLCBzbyB3ZSdsbCBzdGls bCBoYXZlIHRvIGNoZWNrIHRoYXQgY2FzZQ0KPiA+ID4gPiA+IGJlbG93Lg0KPiA+ID4gPiA+ICov DQo+ID4gPiA+ID4gKwlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQICYmIGRldl9wcml2LT5mYmMu ZW5hYmxlZCkNCj4gPiA+ID4gPiArCQlyZXR1cm47DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+IMKg CW11dGV4X2xvY2soJmRldl9wcml2LT5mYmMubG9jayk7DQo+ID4gPiA+ID4gwqANCj4gPiA+ID4g PiDCoAlkZXZfcHJpdi0+ZmJjLmJ1c3lfYml0cyAmPSB+ZnJvbnRidWZmZXJfYml0czsNCj4gPiA+ ID4gPiDCoA0KPiA+ID4gPiA+IMKgCWlmICghZGV2X3ByaXYtPmZiYy5idXN5X2JpdHMpIHsNCj4g PiA+ID4gPiAtCQlfX2ludGVsX2ZiY19kaXNhYmxlKGRldl9wcml2KTsNCj4gPiA+ID4gPiAtCQlf X2ludGVsX2ZiY191cGRhdGUoZGV2X3ByaXYpOw0KPiA+ID4gPiA+ICsJCWlmIChvcmlnaW4gPT0g T1JJR0lOX0ZMSVApIHsNCj4gPiA+ID4gPiArCQkJX19pbnRlbF9mYmNfdXBkYXRlKGRldl9wcml2 KTsNCj4gPiA+ID4gPiArCQl9IGVsc2Ugew0KPiA+ID4gPiA+ICsJCQlfX2ludGVsX2ZiY19kaXNh YmxlKGRldl9wcml2KTsNCj4gPiA+ID4gPiArCQkJX19pbnRlbF9mYmNfdXBkYXRlKGRldl9wcml2 KTsNCj4gPiA+ID4gPiArCQl9DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOw0KPiA+ID4gPiA+ICt9DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICt2b2lkIGludGVsX2ZiY19mbGlwX3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUNCj4gPiA+ID4gPiAqZGV2X3ByaXYsDQo+ID4gPiA+ID4gKwkJCcKgwqDC oMKgdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2JpdHMpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4g PiArCXVuc2lnbmVkIGludCBmYmNfYml0czsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlpZiAo IWZiY19zdXBwb3J0ZWQoZGV2X3ByaXYpKQ0KPiA+ID4gPiA+ICsJCXJldHVybjsNCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZmJjLmxvY2spOw0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArCWlmIChkZXZfcHJpdi0+ZmJjLmVuYWJsZWQpIHsNCj4gPiA+ID4g PiArCQlmYmNfYml0cyA9DQo+ID4gPiA+ID4gSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShkZXZf cHJpdi0NCj4gPiA+ID4gPiA+IGZiYy5jcnRjLT5waXBlKTsNCj4gPiA+ID4gDQo+ID4gPiA+IHBy aW1hcnktPmZyb250YnVmZmVyX2JpdCB3b3VsZCBzZWVtIGJldHRlci4NCj4gPiA+IA0KPiA+ID4g V2h5Pw0KPiA+IA0KPiA+IFdoeSBub3Q/IEl0J3MgdGhlcmUgYWxyZWFkeSBzdGFzaGVkIGF3YXkg Zm9yIHlvdSB0byB1c2UuIE5vIG5lZWQgdG8NCj4gPiBzcHJpbmtsZSB0aGVzZSBJTlRFTF9GUk9O VEJVRkZFUi4uLiB0aGluZ3MgYWxsIG92ZXIgdGhlIHBsYWNlLg0KPiA+IA0KPiA+ID4gDQo+ID4g PiA+IA0KPiA+ID4gPiA+ICsJCWlmIChmYmNfYml0cyAmIGZyb250YnVmZmVyX2JpdHMpDQo+ID4g PiA+ID4gKwkJCWRldl9wcml2LQ0KPiA+ID4gPiA+ID5mYmMuZmxpcF9wcmVwYXJlKGRldl9wcml2 KTsNCj4gPiA+ID4gDQo+ID4gPiA+IFlvdSB3b3VsZCBzdGlsbCBoYXZlIHRvIGRpc2FibGUrcmVl bmFibGUgaWYgeW91IG5lZWQgdG8gZWcuDQo+ID4gPiA+IHJlYWxsb2NhdGUNCj4gPiA+ID4gdGhl IGNvbXByZXNzZWQgYnVmZmVyLCBvZiBpZiB0aGUgbmV3IGZiIGlzbid0IHN1aXRhYmxlIGZvciBm YmMsDQo+ID4gPiA+IG9yDQo+ID4gPiA+IG1heWJlDQo+ID4gPiA+IGlmIHlvdSBuZWVkIHRvIGNo YW5nZSBhbnl0aGluZyBlbHNlIGluIHRoZSBjb250cm9sIHJlZ2lzdGVyLg0KPiA+ID4gDQo+ID4g PiBZZXMsIGJ1dCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kIHRoZSBmcm9udGJ1ZmZlciB0cmFja2lu ZywgdGhpcw0KPiA+ID4gY2FzZQ0KPiA+ID4gd29uJ3QgaGFwcGVuIGhlcmUuIEknbSBhc3N1bWlu ZyB3ZSdsbCBhbHdheXMgZ28gdGhyb3VnaA0KPiA+ID4gaW50ZWxfZmJjX3VwZGF0ZSgpIG9uIHRo ZXNlIGNhc2VzLg0KPiA+IA0KPiA+IFBlcmhhcHMsIGJ1dCBtb3JlIGJ5IGx1Y2sgdGhhbiBieSBk ZXNpZ24uIFdpdGggdGhlIHNldHBsYW5lIGFuZA0KPiA+IGF0b21pYw0KPiA+IEFQSXMgdGhlcmUn cyBubyBkaWZmZXJlbmNlIGJldHdlZW4gYSBwYWdlIGZsaXAgYW5kIG90aGVyIHBsYW5lDQo+ID4g dXBkYXRlcy4NCg0KSSBhbSBhd2FyZSB0aGF0IHNvbWUgY29kZSBwYXRocyBhcmUgbm90IHRoZSBz YW1lIGFzIHRoZSBmdWxsIG1vZGVzZXQNCnBhdGgsIGJ1dCB0aGVyZSBpcyBzdGlsbCBkaWZmZXJl bmNlIGZyb20gdGhlIHBsYWluIHBhZ2VmbGlwIElPQ1RMLiBBbmQNCnNvIGZhciBJIGhhdmUgc2Vl biBpbnRlbF9mYmNfdXBkYXRlKCkgYmVpbmcgY2FsbGVkIGV2ZXJ5d2hlcmUsIHNvIHRoaXMNCnNo b3VsZCBwcmV2ZW50IHRoZSBwcm9ibGVtcyB5b3Ugc2VlbSB0byBiZSBwb2ludGluZy4gQ2FuIHlv dSBwbGVhc2UNCnBvaW50IGEgc3BlY2lmaWMgY2FzZSB0aGF0IHdvdWxkIGJyZWFrIGhlcmUgaW52 b2x2aW5nIGEgc2luZ2xlIHBpcGU/DQpNdWx0aXBsZSBwaXBlcyBhcmUgZGlzY3Vzc2VkIGJlbG93 LsKgDQoNCkkndmUgYmVlbiB0cnlpbmcgdG8gYW5hbHl6ZSB3aGF0IHlvdSBzYWlkIGFuZCBjb252 ZXJ0IHRoaXMgdG8gYSBwcm9wZXINCklHVCBzdWJ0ZXN0LCBidXQgSSBqdXN0IGNhbid0IHNlZSB0 aGUgYnVnIGhlcmUuIFBsZWFzZSBiZSBhIGxpdHRsZSBtb3JlDQpzcGVjaWZpYyBvbiB5b3VyIGRl c2NyaXB0aW9uLCBsaWtlIHlvdSBqdXN0IGRpZCBmb3IgdGhlIG11bHRpLXBpcGUNCmNhc2UuDQoN Cj4gPiBTbyBpZiB5b3Ugd2FudCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgaHcgZmxpcCBudWtl LCB5b3Ugd291bGQNCj4gPiBuZWVkIHRvDQo+ID4gY2hlY2sgaG93IHRoZSBwbGFuZSBzdGF0ZSBp cyBnb2luZyB0byBjaGFuZ2UsIGFuZCBiYXNlZCBvbiB0aGF0DQo+ID4gZGVjaWRlDQo+ID4gd2hl dGhlciBhIGZlbmNlIHVwZGF0ZSBpcyBlbm91Z2ggb3IgZGlzYWJsZStyZS1lbmFibGUgaXMgbmVl ZGVkLg0KPiA+IEFuZCBpbg0KPiA+IGZhY3QgSSBkb24ndCBzZWUgYW55IGZiY19kaXNhYmxlIGJl Zm9yZSB0aGUgZmxpcCwganVzdCBhbg0KPiA+IGZiY191cGRhdGUNCj4gPiBhZnRlciB0aGUgZmFj dC4gU28gc2VlbXMgdG8gbWUgdGhlIGRpc2FibGUgcmVhbGx5IHNob3VsZCBiZSBpbiB5b3VyDQo+ ID4gZmxpcF9wcmVwYXJlIGhvb2sgaW4gdGhpcyBjYXNlDQoNClRoZSBmbGlwX3ByZXBhcmUgaG9v ayBpcyBvbmx5IGZvciBjYXNlcyB3aGVyZSB0aGUgZGlzYWJsZSt1cGRhdGUgaXMgbm90DQpuZWVk ZWQgc2luY2Ugd2UncmUgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgSFcgdHJhY2tpbmcuDQoNCkJl c2lkZXMsIHVwZGF0ZSgpIHdpdGhvdXQgYSBwcmV2aW91cyBkaXNhYmxlKCkgaXMgZmluZS4NCg0K PiA+IC4gQW5kIGluIGZhY3QgdGhlIHdob2xlIGZsaXBfcHJlcGFyZQ0KPiA+IHRoaW5nIGlzbid0 IGV2ZW4gY2FsbGVkIGZyb20gdGhlIHNldHBsYW5lL2F0b21pYyBwYXRoLg0KDQpJZiB1cGRhdGUo KSBpcyBjYWxsZWQgd2UgZG9uJ3QgbmVlZCBmbGlwX3ByZXBhcmUoKSBzaW5jZSBmbGlwX3ByZXBh cmUoKQ0KaXMgb25seSBmb3IgdGhlIGZhc3QgcGF0aCB3aGVyZSB3ZSBqdXN0IHVwZGF0ZSB0aGUg ZmVuY2UuDQoNCj4gDQo+IE9oIGFuZCBhbm90aGVyIHJlbGF0ZWQgc2NlbmFyaW8gYWxzbyBjYW1l IHRvIG1pbmQuIENvbnNpZGVyIGZvcg0KPiBleGFtcGxlDQo+IHRoZSBmb2xsb3cgc2VxdWVuY2Ug b2YgZXZlbnRzOg0KPiANCj4gMS4gZmJjIGVuYWJsZWQgb24gcGlwZSBBDQo+IDIuIGZsaXAgc2No ZWR1bGVkIG9uIHBpcGUgQSB3aGljaCByZXF1aXJlcyBmYmMgdG8gYmUgZGlzYWJsZWQNCj4gwqDC oMKgLT4gZmJjIGdldHMgZGlzYWJsZWQNCj4gNC4gbW9kZXNldCBvbiBwaXBlIEIgY2FsbHMgZmJj X3VwZGF0ZQ0KPiDCoMKgwqAtPiBmYmMgZ2V0cyByZS1lbmFibGVkIG9uIHBpcGUgQSBiZWZvcmUg dGhlIGZsaXAgaGFzIGZpbmlzaGVkLA0KPiBvb3BzIQ0KDQpJZiB3ZSBoYXZlIEZCQyBkaXNhYmxl ZCBvbiBwaXBlIEEgYmVmb3JlIHRoZSBwaXBlIEIgbW9kZXNldCwgdGhlbiBwaXBlDQpCIGNhbGxz IGZiY191cGRhdGUoKSwgSSBqdXN0IGNhbid0IHNlZSBob3cgRkJDIG1heSBnZXQgcmUtZW5hYmxl ZCBvbg0KcGlwZSBBLiBDYW4geW91IHBsZWFzZSBlbGFib3JhdGUgbW9yZT8NCg0KDQpJIGtub3cg d2Ugc2hvdWxkIGF2b2lkIHJlZ3Jlc3Npb25zIGluIHRoZSBtaWRkbGUgb2YgdGhlIHNlcmllcywg YnV0IGFzDQphIHNpZGUtY29tbWVudCwgdGhlIG11bHRpLXBpcGUgc2NlbmFyaW8gY2hhbmdlcyBl dmVuIG1vcmUgbGF0ZXIgaW4gdGhlDQpzZXJpZXMgYXQgdGhlIHBvaW50IHdoZXJlIHdlIGludHJv ZHVjZQ0KZW5hYmxlL2Rpc2FibGUrYWN0aXZhdGUvZGVhY3RpdmF0ZS4gU28gd2UnZCBvbmx5IGdl dCBGQkMgb24gcGlwZSBCIGlmDQp3ZSBnZXQgYSBpbGtfY3J0Y19kaXNhYmxlKHBpcGVfYSkgZmly c3QuDQoNCkJlc2lkZXMsIG15IHBsYW4gaGVyZSBpcyB0byBlbmFibGUgRkJDIG9ubHkgb24gSFNX KywgYW5kIHRoZXNlDQpwbGF0Zm9ybXMgcmVzdHJpY3QgRkJDIHRvIHBpcGUgQS4gT2YgY291cnNl IEknbSB0cnlpbmcgdG8gbm90IGludHJvZHVjZQ0KYW55IG5ldyBidWdzLCBidXQgSSBhbHNvIHRo aW5rIHdlIHNob3VsZG4ndCBibG9jayBwYXRjaGVzIGp1c3QgYmVjYXVzZQ0Kc29tZSBJTEstSVZC IGJ1ZyB3YXMgbm90IGFkZHJlc3NlZC4NCg0KPiANCj4gU28gd2UgYWxzbyBuZWVkIHNvbWV0aGlu ZyB0byBrZWVwIGZiYyByZWxpYWJseSBkaXNhYmxlZCB1bnRpbCB0aGUNCj4gZmxpcCBoYXMgb2Nj dXJlZC4NCj4gDQo+ID4gDQo+ID4gPiANCj4gPiA+ID4gDQo+ID4gPiA+IFdoYXQgSSBoYWQgd2Fz Og0KPiA+ID4gPiAiDQo+ID4gPiA+IHN0YXRpYyBib29sIGludGVsX2ZiY19uZWVkX3JlaW5pdChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykNCj4gPiA+ID4gew0KPiA+ID4gPiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYtDQo+ID4gPiA+ID4gZGV2X3By aXZhdGU7DQo+ID4gPiA+IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2Uu cHJpbWFyeS0+ZmI7DQo+ID4gPiA+IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0N Cj4gPiA+ID4gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLQ0KPiA+ID4gPiA+IG9iajsNCj4gPiA+ ID4gDQo+ID4gPiA+IAlyZXR1cm4gY3J0YyAhPSBkZXZfcHJpdi0+ZmJjLmNydGMgfHwNCj4gPiA+ ID4gCcKgwqDCoMKgwqDCoMKgb2JqLT5iYXNlLnNpemUgPiBkZXZfcHJpdi0+ZmJjLnNpemUgfHwN Cj4gPiA+ID4gCcKgwqDCoMKgwqDCoMKgZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zv cm1hdCwgMCkgIT0NCj4gPiA+ID4gCcKgwqDCoMKgwqDCoMKgZHJtX2Zvcm1hdF9wbGFuZV9jcHAo ZGV2X3ByaXYtPmZiYy5waXhlbF9mb3JtYXQsIA0KPiA+ID4gPiAwKSB8fA0KPiA+ID4gPiAJwqDC oMKgwqDCoMKgwqBmYi0+cGl0Y2hlc1swXSAhPSBkZXZfcHJpdi0+ZmJjLnBpdGNoOw0KPiA+ID4g PiB9DQo+ID4gPiA+IGludGVsX2ZiY19wcmVfcGFnZV9mbGlwKCkNCj4gPiA+ID4gew0KPiA+ID4g PiAJLi4uDQo+ID4gPiA+IAlpbnRlbF9mYmNfdXBkYXRlX3BlbmRpbmdfc2NvcmUoY3J0Yyk7DQo+ ID4gPiA+IA0KPiA+ID4gPiAJLyoNCj4gPiA+ID4gCSAqIElmIGZiYyB3YXMgYWxyZWFkeSBwb3Nz aWJsZSB3ZSBjYW4gdXBkYXRlDQo+ID4gPiA+IGltbWVkaWF0ZWx5LA0KPiA+ID4gPiAJICogb3Ro ZXJ3aXNlIHdlIHdpbGwgd2FpdCB1bnRpbCB0aGUgZmxpcCBpcyBmaW5pc2hlZC4NCj4gPiA+ID4g CSAqLw0KPiA+ID4gPiAJaWYgKGNydGMtPmZiYy5zY29yZSAhPSAwKQ0KPiA+ID4gPiAJCWNydGMt PmZiYy5zY29yZSA9IGNydGMtPmZiYy5wZW5kaW5nX3Njb3JlOw0KPiA+ID4gPiANCj4gPiA+ID4g CS8qDQo+ID4gPiA+IAkgKiBEaXNhYmxlIGZiYyBpZiB3ZSdyZSBub3QgKHlldCkgY2FwYWJsZSwg b3IgaWYNCj4gPiA+ID4gCSAqIHdlIGp1c3QgbmVlZCBhIGZ1bGwgZGlzYWJsZStlbmFibGUgcmVp bml0Lg0KPiA+ID4gPiAJICovDQo+ID4gPiA+IAlpZiAoY3J0Yy0+ZmJjLnNjb3JlID09IDAgfHwN Cj4gPiA+ID4gaW50ZWxfZmJjX25lZWRfcmVpbml0KGNydGMpKQ0KPiA+ID4gPiAJCV9faW50ZWxf ZmJjX2Rpc2FibGUoY3J0Yyk7DQo+ID4gPiA+IAkuLi4NCj4gPiA+ID4gfQ0KPiA+ID4gPiAiDQo+ ID4gPiA+IA0KPiA+ID4gPiA+ICsJfSBlbHNlIGlmIChkZXZfcHJpdi0+ZmJjLmZiY193b3JrKSB7 DQo+ID4gPiA+ID4gKwkJZmJjX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKA0KPiA+ ID4gPiA+ICsJCQkJZGV2X3ByaXYtPmZiYy5mYmNfd29yay0NCj4gPiA+ID4gPiA+Y3J0Yy0NCj4g PiA+ID4gPiA+IHBpcGUpOw0KPiA+ID4gPiA+ICsJCWlmIChmYmNfYml0cyAmIGZyb250YnVmZmVy X2JpdHMpDQo+ID4gPiA+ID4gKwkJCV9faW50ZWxfZmJjX2Rpc2FibGUoZGV2X3ByaXYpOw0KPiA+ ID4gPiA+IMKgCX0NCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+IMKgCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPmZiYy5sb2NrKTsNCj4gPiA+ID4gPiBAQCAtMTA2MywxOCArMTE1NSwyNSBAQCB2b2lk IGludGVsX2ZiY19pbml0KHN0cnVjdA0KPiA+ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUNCj4gPiA+ ID4gPiAqZGV2X3ByaXYpDQo+ID4gPiA+ID4gwqAJCWRldl9wcml2LT5mYmMuZmJjX2VuYWJsZWQg PSBpbGtfZmJjX2VuYWJsZWQ7DQo+ID4gPiA+ID4gwqAJCWRldl9wcml2LT5mYmMuZW5hYmxlX2Zi YyA9IGdlbjdfZmJjX2VuYWJsZTsNCj4gPiA+ID4gPiDCoAkJZGV2X3ByaXYtPmZiYy5kaXNhYmxl X2ZiYyA9IGlsa19mYmNfZGlzYWJsZTsNCj4gPiA+ID4gPiArCQlkZXZfcHJpdi0+ZmJjLmZsaXBf cHJlcGFyZSA9DQo+ID4gPiA+ID4gc25iX2ZiY19mbGlwX3ByZXBhcmU7DQo+ID4gPiA+ID4gwqAJ fSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpIHsNCj4gPiA+ID4gPiDC oAkJZGV2X3ByaXYtPmZiYy5mYmNfZW5hYmxlZCA9IGlsa19mYmNfZW5hYmxlZDsNCj4gPiA+ID4g PiDCoAkJZGV2X3ByaXYtPmZiYy5lbmFibGVfZmJjID0gaWxrX2ZiY19lbmFibGU7DQo+ID4gPiA+ ID4gwqAJCWRldl9wcml2LT5mYmMuZGlzYWJsZV9mYmMgPSBpbGtfZmJjX2Rpc2FibGU7DQo+ID4g PiA+ID4gKwkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPT0gNSkNCj4gPiA+ID4gPiAr CQkJZGV2X3ByaXYtPmZiYy5mbGlwX3ByZXBhcmUgPQ0KPiA+ID4gPiA+IGlsa19mYmNfZmxpcF9w cmVwYXJlOw0KPiA+ID4gPiA+ICsJCWVsc2UNCj4gPiA+ID4gPiArCQkJZGV2X3ByaXYtPmZiYy5m bGlwX3ByZXBhcmUgPQ0KPiA+ID4gPiA+IHNuYl9mYmNfZmxpcF9wcmVwYXJlOw0KPiA+ID4gPiA+ IMKgCX0gZWxzZSBpZiAoSVNfR000NShkZXZfcHJpdikpIHsNCj4gPiA+ID4gPiDCoAkJZGV2X3By aXYtPmZiYy5mYmNfZW5hYmxlZCA9IGc0eF9mYmNfZW5hYmxlZDsNCj4gPiA+ID4gPiDCoAkJZGV2 X3ByaXYtPmZiYy5lbmFibGVfZmJjID0gZzR4X2ZiY19lbmFibGU7DQo+ID4gPiA+ID4gwqAJCWRl dl9wcml2LT5mYmMuZGlzYWJsZV9mYmMgPSBnNHhfZmJjX2Rpc2FibGU7DQo+ID4gPiA+ID4gKwkJ ZGV2X3ByaXYtPmZiYy5mbGlwX3ByZXBhcmUgPQ0KPiA+ID4gPiA+IGc0eF9mYmNfZmxpcF9wcmVw YXJlOw0KPiA+ID4gPiA+IMKgCX0gZWxzZSB7DQo+ID4gPiA+ID4gwqAJCWRldl9wcml2LT5mYmMu ZmJjX2VuYWJsZWQgPQ0KPiA+ID4gPiA+IGk4eHhfZmJjX2VuYWJsZWQ7DQo+ID4gPiA+ID4gwqAJ CWRldl9wcml2LT5mYmMuZW5hYmxlX2ZiYyA9IGk4eHhfZmJjX2VuYWJsZTsNCj4gPiA+ID4gPiDC oAkJZGV2X3ByaXYtPmZiYy5kaXNhYmxlX2ZiYyA9DQo+ID4gPiA+ID4gaTh4eF9mYmNfZGlzYWJs ZTsNCj4gPiA+ID4gPiArCQlkZXZfcHJpdi0+ZmJjLmZsaXBfcHJlcGFyZSA9DQo+ID4gPiA+ID4g aTh4eF9mYmNfZmxpcF9wcmVwYXJlOw0KPiA+ID4gPiA+IMKgDQo+ID4gPiA+ID4gwqAJCS8qIFRo aXMgdmFsdWUgd2FzIHB1bGxlZCBvdXQgb2Ygc29tZW9uZSdzDQo+ID4gPiA+ID4gaGF0ICovDQo+ ID4gPiA+ID4gwqAJCUk5MTVfV1JJVEUoRkJDX0NPTlRST0wsIDUwMCA8PA0KPiA+ID4gPiA+IEZC Q19DVExfSU5URVJWQUxfU0hJRlQpOw0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jDQo+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9mcm9udGJ1ZmZlci5jDQo+ID4gPiA+ID4gaW5kZXggYWM4NTM1Ny4uMzFh MWFkMyAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m cm9udGJ1ZmZlci5jDQo+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZnJvbnRidWZmZXIuYw0KPiA+ID4gPiA+IEBAIC0xOTIsNiArMTkyLDcgQEAgdm9pZA0KPiA+ID4g PiA+IGludGVsX2Zyb250YnVmZmVyX2ZsaXBfcHJlcGFyZShzdHJ1Y3QNCj4gPiA+ID4gPiBkcm1f ZGV2aWNlICpkZXYsDQo+ID4gPiA+ID4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZmJfdHJh Y2tpbmcubG9jayk7DQo+ID4gPiA+ID4gwqANCj4gPiA+ID4gPiDCoAlpbnRlbF9wc3Jfc2luZ2xl X2ZyYW1lX3VwZGF0ZShkZXYsDQo+ID4gPiA+ID4gZnJvbnRidWZmZXJfYml0cyk7DQo+ID4gPiA+ ID4gKwlpbnRlbF9mYmNfZmxpcF9wcmVwYXJlKGRldl9wcml2LCBmcm9udGJ1ZmZlcl9iaXRzKTsN Cj4gPiA+ID4gPiDCoH0NCj4gPiA+ID4gPiDCoA0KPiA+ID4gPiA+IMKgLyoqDQo+ID4gPiA+ID4g LS0gDQo+ID4gPiA+ID4gMi42LjENCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4gPiA+IEludGVsLWdmeCBt YWlsaW5nIGxpc3QNCj4gPiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ ID4gPiA+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeA0KPiA+ID4gPiANCj4gPiANCj4gPiAtLSANCj4gPiBWaWxsZSBTeXJqw6Rsw6QNCj4g PiBJbnRlbCBPVEMNCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QNCj4gPiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnDQo+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA0KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK