From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 02/26] drm/i915: don't stop+start FBC at every flip Date: Thu, 29 Oct 2015 13:05:33 +0100 Message-ID: <56320B8D.1040508@linux.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> 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 831AF6E66A for ; Thu, 29 Oct 2015 05:05:40 -0700 (PDT) In-Reply-To: <20151028172012.GS4437@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , "Zanoni, Paulo R" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T3AgMjgtMTAtMTUgb20gMTg6MjAgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gV2VkLCBP Y3QgMjgsIDIwMTUgYXQgMDQ6NTY6MzlQTSArMDAwMCwgWmFub25pLCBQYXVsbyBSIHdyb3RlOgo+ PiBFbSBUZXIsIDIwMTUtMTAtMjcgw6BzIDIwOjMyICswMjAwLCBWaWxsZSBTeXJqw6Rsw6QgZXNj cmV2ZXU6Cj4+PiBPbiBUdWUsIE9jdCAyNywgMjAxNSBhdCAwMjo1MDowNFBNIC0wMjAwLCBQYXVs byBaYW5vbmkgd3JvdGU6Cj4+Pj4gVGhlIGhhcmR3YXJlIGFscmVhZHkgdGFrZXMgY2FyZSBvZiBk aXNhYmxpbmcgYW5kIHJlY29tcHJlc3NpbmcgRkJDCj4+Pj4gd2hlbiB3ZSBkbyBhIHBhZ2UgZmxp cCwgc28gYWxsIHdlIG5lZWQgdG8gZG8gaXMgdG8gdXBkYXRlIHRoZSBmZW5jZQo+Pj4+IHJlZ2lz dGVycyBhbmQgbW92ZSBvbi4KPj4+Pgo+Pj4+IE9uZSBvZiB0aGUgaW1wb3J0YW50IHRoaW5ncyB0 byBub3RpY2UgaXMgdGhhdCBvbiB0aGUgcHJlLWdlbjYKPj4+PiBwbGF0Zm9ybXMgdGhlIGZlbmNl IGlzIHByb2dyYW1tZWQgb24gdGhlIEZCQyBjb250cm9sIHJlZ2lzdGVyIGFuZAo+Pj4+IHRoZQo+ Pj4+IGRvY3VtZW50YXRpb24gc2F5cyB3ZSBjYW4ndCB1cGRhdGUgdGhlIGNvbnRyb2wgcmVnaXN0 ZXIgd2hpbGUgRkJDCj4+Pj4gaXMKPj4+PiBlbmFibGVkLiBUaGlzIHdvdWxkIGJhc2ljYWxseSBt ZWFuIHdlJ2QgaGF2ZSB0byB0byBkaXNhYmxlK2VuYWJsZQo+Pj4+IEZCQwo+Pj4+IGF0IGV2ZXJ5 IGZsaXAgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoZSBoYXJkd2FyZSB0cmFja2luZyBzdGlsbAo+ Pj4+IHdvcmtzLAo+Pj4+IHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHRvbyBtdWNoIHNlbnNl LiBTbyBJIHNlbnQgYW4gZW1haWwgdG8KPj4+PiB0aGUKPj4+PiBoYXJkd2FyZSB0ZWFtIHJlcXVl c3Rpbmcgc29tZSBjbGFyaWZpY2F0aW9uLiBUaGUgaW5mb3JtYXRpb24gSSBnb3QKPj4+PiB3YXMK Pj4+PiB0aGlzOgo+Pj4+Cj4+Pj4gIkkgZG9uJ3QgdGhpbmsgYW55IGhhcmR3YXJlIGlzIGxhdGNo aW5nIG9uIHRvIDB4MTAwMTAwLCAweDEwMDEwNCwKPj4+PiBvcgo+Pj4+IHRoZSBvbGQgZmVuY2Ug bnVtYmVyIGluIEZCQ19DVEwuIEluc3RydWN0aW9ucyBhZ2FpbnN0IGNoYW5naW5nIG9uCj4+Pj4g dGhlCj4+Pj4gZmx5IHdvdWxkIGJlIHRvIHNpbXBsaWZ5IHRlc3RpbmcgYW5kIGVuc3VyZSB5b3Ug ZG9uJ3QgbWlzcyBhbnkKPj4+PiBpbnZhbGlkYXRpb24gdGhhdCBoYXBwZW5lZCByaWdodCBhdCB0 aGF0IHRpbWUuIgo+Pj4+Cj4+Pj4gU28gSSBndWVzcyB3ZSdyZSBmaW5lIGZvciBmbGlwcy4gQnV0 IEkgY2FuJ3QgcmVhbGx5IHNheSBJIHRlc3RlZAo+Pj4+IEZCQwo+Pj4+IG9uIHRoZXNlIGFuY2ll bnQgcGxhdGZvcm1zIC0gbm9yIHRoYXQgSSdsbCBldmVyIHByb3Bvc2UgZW5hYmxpbmcKPj4+PiBG QkMKPj4+PiBieSBkZWZhdWx0IG9uIHRoZW0gZXhhY3RseSBiZWNhdXNlIG9mIHByb2JsZW1zIGxp a2UgdGhlc2UuCj4+PiBZZWFoLCBJIGRpZCB0aGlzIGluIG15IHBhdGNoZXMgdG9vLCBhbmQgSUlS QyBpdCBzZWVtZWQgdG8gd29yayBqdXN0Cj4+PiBmaW5lCj4+PiBiYWNrIHRoZW4uCj4+Pgo+Pj4+ IHYyOiBBZGQgY29tbWVudCBhdCBmbHVzaCgpIChDaHJpcykuCj4+Pj4KPj4+PiBUZXN0Y2FzZTog aWd0L2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy9mYmMqLWZsaXB0cmFjawo+Pj4+IFNpZ25lZC1v ZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+Pj4+IC0tLQo+ Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwgICAxICsKPj4+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICB8ICAgMyArCj4+Pj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgfCAgIDEgLQo+Pj4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgIHwgICAyICsKPj4+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgICAgICAgICB8IDEwMwo+Pj4+ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0KPj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZnJvbnRidWZmZXIuYyB8ICAgMSArCj4+Pj4gIDYgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+Pj4+IGluZGV4IGVlMTQ5NjIuLjc3ZGE1MDAgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4+PiBAQCAtOTI4LDYgKzkyOCw3IEBAIHN0cnVjdCBpOTE1X2ZiYyB7Cj4+Pj4g IAlib29sICgqZmJjX2VuYWJsZWQpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4+Pj4gIAl2b2lkICgqZW5hYmxlX2ZiYykoc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+Pj4+ ICAJdm9pZCAoKmRpc2FibGVfZmJjKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+Pj4+ICsJdm9pZCAoKmZsaXBfcHJlcGFyZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPj4+PiAgfTsKPj4+PiAgCj4+Pj4gIC8qKgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCj4+Pj4gaW5kZXggODk0MjUzMi4uM2Q1OThhMiAxMDA2NDQKPj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+Pj4+IEBAIC0yMDI4LDYgKzIwMjgsNyBAQCBlbnVtIHNrbF9kaXNw X3Bvd2VyX3dlbGxzIHsKPj4+PiAgI2RlZmluZSAgIEZCQ19DVExfQzNfSURMRQkoMTw8MTMpCj4+ Pj4gICNkZWZpbmUgICBGQkNfQ1RMX1NUUklERV9TSElGVAkoNSkKPj4+PiAgI2RlZmluZSAgIEZC Q19DVExfRkVOQ0VOT19TSElGVAkoMCkKPj4+PiArI2RlZmluZSAgIEZCQ19DVExfRkVOQ0VOT19N QVNLCTB4Rgo+Pj4gSXQncyBvbmx5IHRocmVlIGJpdHMgb24gZ2VuMi4gQnV0IGJpdCAzIGlzIE1C WiBhbmQgdGhlcmUgYXJlIG9ubHkgOAo+Pj4gZmVuY2UgcmVnaXN0ZXJzIG9uIHRob3NlIHBsYXRm b3Jtcywgc28gdGhpcyBpcyBPSy4KPj4+Cj4+Pj4gICNkZWZpbmUgRkJDX0NPTU1BTkQJCTB4MDMy MGMKPj4+PiAgI2RlZmluZSAgIEZCQ19DTURfQ09NUFJFU1MJKDE8PDApCj4+Pj4gICNkZWZpbmUg RkJDX1NUQVRVUwkJMHgwMzIxMAo+Pj4+IEBAIC0yMDY0LDYgKzIwNjUsNyBAQCBlbnVtIHNrbF9k aXNwX3Bvd2VyX3dlbGxzIHsKPj4+PiAgI2RlZmluZSAgIERQRkNfQ1RMX0xJTUlUXzFYCSgwPDw2 KQo+Pj4+ICAjZGVmaW5lICAgRFBGQ19DVExfTElNSVRfMlgJKDE8PDYpCj4+Pj4gICNkZWZpbmUg ICBEUEZDX0NUTF9MSU1JVF80WAkoMjw8NikKPj4+PiArI2RlZmluZSAgIERQRkNfQ1RMX0ZFTkNF X01BU0sJMHhGCj4+Pj4gICNkZWZpbmUgRFBGQ19SRUNPTVBfQ1RMCQkweDMyMGMKPj4+PiAgI2Rl ZmluZSAgIERQRkNfUkVDT01QX1NUQUxMX0VOCSgxPDwyNykKPj4+PiAgI2RlZmluZSAgIERQRkNf UkVDT01QX1NUQUxMX1dNX1NISUZUICgxNikKPj4+PiBAQCAtMjA4Niw2ICsyMDg4LDcgQEAgZW51 bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4+Pj4gICNkZWZpbmUgICBGQkNfQ1RMX0ZBTFNFX0NP TE9SCSgxPDwxMCkKPj4+PiAgLyogVGhlIGJpdCAyOC04IGlzIHJlc2VydmVkICovCj4+Pj4gICNk ZWZpbmUgICBEUEZDX1JFU0VSVkVECQkoMHgxRkZGRkYwMCkKPj4+PiArI2RlZmluZSAgIElMS19E UEZDX0ZFTkNFX01BU0sJMHhGCj4+Pj4gICNkZWZpbmUgSUxLX0RQRkNfUkVDT01QX0NUTAkweDQz MjBjCj4+Pj4gICNkZWZpbmUgSUxLX0RQRkNfU1RBVFVTCQkweDQzMjEwCj4+Pj4gICNkZWZpbmUg SUxLX0RQRkNfRkVOQ0VfWU9GRgkweDQzMjE4Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4+Pj4gaW5kZXggYmMxOTA3ZS4uZDkzNzhjMyAxMDA2NDQKPj4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4+PiBAQCAtMTE1MDIsNyArMTE1MDIsNiBA QCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdAo+Pj4+IGRybV9jcnRjICpj cnRjLAo+Pj4+ICAJCQkgIHRvX2ludGVsX3BsYW5lKHByaW1hcnkpLQo+Pj4+PiBmcm9udGJ1ZmZl cl9iaXQpOwo+Pj4+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4+Pj4gIAo+ Pj4+IC0JaW50ZWxfZmJjX2Rpc2FibGVfY3J0YyhpbnRlbF9jcnRjKTsKPj4+PiAgCWludGVsX2Zy b250YnVmZmVyX2ZsaXBfcHJlcGFyZShkZXYsCj4+Pj4gIAkJCQkgICAgICAgdG9faW50ZWxfcGxh bmUocHJpbWFyeSktCj4+Pj4+IGZyb250YnVmZmVyX2JpdCk7Cj4+Pj4gIAo+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBpbmRleCAwODg0N2QwLi45MDY1YThmIDEwMDY0NAo+ Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+PiBAQCAtMTMwNSw2ICsxMzA1LDggQEAg dm9pZCBpbnRlbF9mYmNfaW52YWxpZGF0ZShzdHJ1Y3QKPj4+PiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPj4+PiAgCQkJICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+Pj4+ICB2b2lk IGludGVsX2ZiY19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+Pj4g IAkJICAgICB1bnNpZ25lZCBpbnQgZnJvbnRidWZmZXJfYml0cywgZW51bQo+Pj4+IGZiX29wX29y aWdpbiBvcmlnaW4pOwo+Pj4+ICt2b2lkIGludGVsX2ZiY19mbGlwX3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+ICsJCQkgICAgdW5zaWduZWQgaW50IGZyb250 YnVmZmVyX2JpdHMpOwo+Pj4+ICB2b2lkIGludGVsX2ZiY19jbGVhbnVwX2NmYihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+Pj4+ICAKPj4+PiAgLyogaW50ZWxfaGRtaS5jICov Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4+Pj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+Pj4+IGluZGV4IGQ5ZDdlNTQuLjYy ZjE1OGIgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMK Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+Pj4+IEBAIC04Miw2 ICs4MiwyMiBAQCBzdGF0aWMgdm9pZCBpOHh4X2ZiY19kaXNhYmxlKHN0cnVjdAo+Pj4+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4+ICAJRFJNX0RFQlVHX0tNUygiZGlzYWJsZWQgRkJD XG4iKTsKPj4+PiAgfQo+Pj4+ICAKPj4+PiArc3RhdGljIHZvaWQgaTh4eF9mYmNfZmxpcF9wcmVw YXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+Pj4gKmRldl9wcml2KQo+Pj4+ICt7Cj4+Pj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2LT5mYmMuY3J0YzsKPj4+PiArCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKPj4+PiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+Pj4+ ICsJdWludDMyX3QgdmFsOwo+Pj4+ICsKPj4+PiArCS8qIEFsdGhvdWdoIHRoZSBkb2N1bWVudGF0 aW9uIHN1Z2dlc3RzIHdlIGNhbid0IGNoYW5nZQo+Pj4+IERQRkNfQ09OVFJPTAo+Pj4+ICsJICog d2hpbGUgY29tcHJlc3Npb24gaXMgZW5hYmxlZCwgdGhlIGhhcmR3YXJlIGd1eXMgc2FpZAo+Pj4+ IHRoYXQgdXBkYXRpbmcKPj4+PiArCSAqIHRoZSBmZW5jZSByZWdpc3RlciBiaXRzIGR1cmluZyBh IGZsaXAgaXMgZmluZS4gKi8KPj4+PiArCXZhbCA9IEk5MTVfUkVBRChGQkNfQ09OVFJPTCk7Cj4+ Pj4gKwl2YWwgJj0gfkZCQ19DVExfRkVOQ0VOT19NQVNLOwo+Pj4+ICsJdmFsIHw9IG9iai0+ZmVu Y2VfcmVnOwo+Pj4+ICsJSTkxNV9XUklURShGQkNfQ09OVFJPTCwgdmFsKTsKPj4+PiArfQo+Pj4g SUlSQyBJIGp1c3QgY2FsbGVkIHRoZSBlbmFibGUgZnVuY3Rpb24gdG8gcmVjb25zdHJ1Y3QgdGhl IGVudGlyZQo+Pj4gcmVnaXN0ZXIgY29udGVudHMgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4g QnV0IG1heWJlIHRoYXQncyBub3QKPj4+IHBvc3NpYmxlIHdpdGhvdXQgcmVvd3JraW5nIHRoZSBm YmMgc3RhdGUgaGFuZGxpbmcgZW50aXJlbHkKPj4+ICh3aGljaCBJIGhhZCBkb25lKS4KPj4+PiAr Cj4+Pj4gIHN0YXRpYyB2b2lkIGk4eHhfZmJjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKPj4+PiAgewo+Pj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gY3J0 Yy0+YmFzZS5kZXYtCj4+Pj4+IGRldl9wcml2YXRlOwo+Pj4+IEBAIC0xNjEsNiArMTc3LDIyIEBA IHN0YXRpYyB2b2lkIGc0eF9mYmNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjCj4+Pj4gKmNydGMp Cj4+Pj4gIAlEUk1fREVCVUdfS01TKCJlbmFibGVkIGZiYyBvbiBwbGFuZSAlY1xuIiwKPj4+PiBw bGFuZV9uYW1lKGNydGMtPnBsYW5lKSk7Cj4+Pj4gIH0KPj4+PiAgCj4+Pj4gK3N0YXRpYyB2b2lk IGc0eF9mYmNfZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+Pj4gKmRldl9w cml2KQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IGRldl9wcml2LT5m YmMuY3J0YzsKPj4+PiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gY3J0Yy0+YmFzZS5w cmltYXJ5LT5mYjsKPj4+PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRl bF9mYl9vYmooZmIpOwo+Pj4+ICsJdWludDMyX3QgdmFsOwo+Pj4+ICsKPj4+PiArCS8qIEFsdGhv dWdoIHRoZSBkb2N1bWVudGF0aW9uIHN1Z2dlc3RzIHdlIGNhbid0IGNoYW5nZQo+Pj4+IERQRkNf Q09OVFJPTAo+Pj4+ICsJICogd2hpbGUgY29tcHJlc3Npb24gaXMgZW5hYmxlZCwgdGhlIGhhcmR3 YXJlIGd1eXMgc2FpZAo+Pj4+IHRoYXQgdXBkYXRpbmcKPj4+PiArCSAqIHRoZSBmZW5jZSByZWdp c3RlciBiaXRzIGR1cmluZyBhIGZsaXAgaXMgZmluZS4gKi8KPj4+PiArCXZhbCA9IEk5MTVfUkVB RChEUEZDX0NPTlRST0wpOwo+Pj4+ICsJdmFsICY9IH5EUEZDX0NUTF9GRU5DRV9NQVNLOwo+Pj4+ ICsJdmFsIHw9IG9iai0+ZmVuY2VfcmVnOwo+Pj4+ICsJSTkxNV9XUklURShEUEZDX0NPTlRST0ws IHZhbCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gIHN0YXRpYyB2b2lkIGc0eF9mYmNfZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+Pj4gIHsKPj4+PiAgCXUzMiBkcGZj X2N0bDsKPj4+PiBAQCAtMjM2LDYgKzI2OCwzMSBAQCBzdGF0aWMgdm9pZCBpbGtfZmJjX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfY3J0Ywo+Pj4+ICpjcnRjKQo+Pj4+ICAJRFJNX0RFQlVHX0tNUygiZW5h YmxlZCBmYmMgb24gcGxhbmUgJWNcbiIsCj4+Pj4gcGxhbmVfbmFtZShjcnRjLT5wbGFuZSkpOwo+ Pj4+ICB9Cj4+Pj4gIAo+Pj4+ICtzdGF0aWMgdm9pZCBpbGtfZmJjX2ZsaXBfcHJlcGFyZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+Pj4+ICpkZXZfcHJpdikKPj4+PiArewo+Pj4+ICsJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+ZmJjLmNydGM7Cj4+Pj4gKwlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7Cj4+Pj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPj4+PiArCXVpbnQz Ml90IHZhbDsKPj4+PiArCj4+Pj4gKwkvKiBBbHRob3VnaCB0aGUgZG9jdW1lbnRhdGlvbiBzdWdn ZXN0cyB3ZSBjYW4ndCBjaGFuZ2UKPj4+PiBEUEZDX0NPTlRST0wKPj4+PiArCSAqIHdoaWxlIGNv bXByZXNzaW9uIGlzIGVuYWJsZWQsIHRoZSBoYXJkd2FyZSBndXlzIHNhaWQKPj4+PiB0aGF0IHVw ZGF0aW5nCj4+Pj4gKwkgKiB0aGUgZmVuY2UgcmVnaXN0ZXIgYml0cyBkdXJpbmcgYSBmbGlwIGlz IGZpbmUuICovCj4+Pj4gKwl2YWwgPSBJOTE1X1JFQUQoSUxLX0RQRkNfQ09OVFJPTCk7Cj4+Pj4g Kwl2YWwgJj0gfklMS19EUEZDX0ZFTkNFX01BU0s7Cj4+Pj4gKwl2YWwgfD0gb2JqLT5mZW5jZV9y ZWc7Cj4+Pj4gKwlJOTE1X1dSSVRFKElMS19EUEZDX0NPTlRST0wsIHZhbCk7Cj4+Pj4gK30KPj4+ PiArCj4+Pj4gK3N0YXRpYyB2b2lkIHNuYl9mYmNfZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlCj4+Pj4gKmRldl9wcml2KQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IGRldl9wcml2LT5mYmMuY3J0YzsKPj4+PiArCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKPj4+PiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+Pj4+ICsKPj4+PiArCUk5MTVfV1JJ VEUoU05CX0RQRkNfQ1RMX1NBLCBTTkJfQ1BVX0ZFTkNFX0VOQUJMRSB8IG9iai0KPj4+Pj4gZmVu Y2VfcmVnKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiAgc3RhdGljIHZvaWQgaWxrX2ZiY19kaXNhYmxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+PiAgewo+Pj4+ICAJdTMyIGRw ZmNfY3RsOwo+Pj4+IEBAIC0xMDIxLDEzICsxMDc4LDQ4IEBAIHZvaWQgaW50ZWxfZmJjX2ZsdXNo KHN0cnVjdAo+Pj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+Pj4+ICAJaWYgKG9yaWdp biA9PSBPUklHSU5fR1RUKQo+Pj4+ICAJCXJldHVybjsKPj4+PiAgCj4+Pj4gKwkvKiBIYXJkd2Fy ZSB0cmFja2luZyBhbHJlYWR5IHJlY29tcHJlc3NlcyB0aGUgQ0ZCIChudWtlKQo+Pj4+IGZvciB1 cyBpZiBGQkMKPj4+PiArCSAqIGlzIGVuYWJsZWQgYW5kIHdlIGRvIGEgcGFnZSBmbGlwLCBzbyB3 ZSBjYW4gc2FmZWx5Cj4+Pj4gaWdub3JlIGl0IGhlcmUuCj4+Pj4gKwkgKiBGQkMgbWF5IGJlIGRp c2FibGVkIGluIGNhc2Ugd2UgZ290IGFuIGludmFsaWRhdGUoKQo+Pj4+IGJlZm9yZSB0aGUKPj4+ PiArCSAqIGZsdXNoKCksIHNvIHdlJ2xsIHN0aWxsIGhhdmUgdG8gY2hlY2sgdGhhdCBjYXNlIGJl bG93Lgo+Pj4+ICovCj4+Pj4gKwlpZiAob3JpZ2luID09IE9SSUdJTl9GTElQICYmIGRldl9wcml2 LT5mYmMuZW5hYmxlZCkKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwo+Pj4+ICAJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmZiYy5sb2NrKTsKPj4+PiAgCj4+Pj4gIAlkZXZfcHJpdi0+ZmJjLmJ1c3lfYml0 cyAmPSB+ZnJvbnRidWZmZXJfYml0czsKPj4+PiAgCj4+Pj4gIAlpZiAoIWRldl9wcml2LT5mYmMu YnVzeV9iaXRzKSB7Cj4+Pj4gLQkJX19pbnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7Cj4+Pj4g LQkJX19pbnRlbF9mYmNfdXBkYXRlKGRldl9wcml2KTsKPj4+PiArCQlpZiAob3JpZ2luID09IE9S SUdJTl9GTElQKSB7Cj4+Pj4gKwkJCV9faW50ZWxfZmJjX3VwZGF0ZShkZXZfcHJpdik7Cj4+Pj4g KwkJfSBlbHNlIHsKPj4+PiArCQkJX19pbnRlbF9mYmNfZGlzYWJsZShkZXZfcHJpdik7Cj4+Pj4g KwkJCV9faW50ZWxfZmJjX3VwZGF0ZShkZXZfcHJpdik7Cj4+Pj4gKwkJfQo+Pj4+ICsJfQo+Pj4+ ICsKPj4+PiArCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKPj4+PiArfQo+Pj4+ ICsKPj4+PiArdm9pZCBpbnRlbF9mYmNfZmxpcF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPj4+PiArCQkJICAgIHVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRz KQo+Pj4+ICt7Cj4+Pj4gKwl1bnNpZ25lZCBpbnQgZmJjX2JpdHM7Cj4+Pj4gKwo+Pj4+ICsJaWYg KCFmYmNfc3VwcG9ydGVkKGRldl9wcml2KSkKPj4+PiArCQlyZXR1cm47Cj4+Pj4gKwo+Pj4+ICsJ bXV0ZXhfbG9jaygmZGV2X3ByaXYtPmZiYy5sb2NrKTsKPj4+PiArCj4+Pj4gKwlpZiAoZGV2X3By aXYtPmZiYy5lbmFibGVkKSB7Cj4+Pj4gKwkJZmJjX2JpdHMgPSBJTlRFTF9GUk9OVEJVRkZFUl9Q UklNQVJZKGRldl9wcml2LQo+Pj4+PiBmYmMuY3J0Yy0+cGlwZSk7Cj4+PiBwcmltYXJ5LT5mcm9u dGJ1ZmZlcl9iaXQgd291bGQgc2VlbSBiZXR0ZXIuCj4+IFdoeT8KPiBXaHkgbm90PyBJdCdzIHRo ZXJlIGFscmVhZHkgc3Rhc2hlZCBhd2F5IGZvciB5b3UgdG8gdXNlLiBObyBuZWVkIHRvCj4gc3By aW5rbGUgdGhlc2UgSU5URUxfRlJPTlRCVUZGRVIuLi4gdGhpbmdzIGFsbCBvdmVyIHRoZSBwbGFj ZS4KPgo+Pj4+ICsJCWlmIChmYmNfYml0cyAmIGZyb250YnVmZmVyX2JpdHMpCj4+Pj4gKwkJCWRl dl9wcml2LT5mYmMuZmxpcF9wcmVwYXJlKGRldl9wcml2KTsKPj4+IFlvdSB3b3VsZCBzdGlsbCBo YXZlIHRvIGRpc2FibGUrcmVlbmFibGUgaWYgeW91IG5lZWQgdG8gZWcuCj4+PiByZWFsbG9jYXRl Cj4+PiB0aGUgY29tcHJlc3NlZCBidWZmZXIsIG9mIGlmIHRoZSBuZXcgZmIgaXNuJ3Qgc3VpdGFi bGUgZm9yIGZiYywgb3IKPj4+IG1heWJlCj4+PiBpZiB5b3UgbmVlZCB0byBjaGFuZ2UgYW55dGhp bmcgZWxzZSBpbiB0aGUgY29udHJvbCByZWdpc3Rlci4KPj4gWWVzLCBidXQgYXMgZmFyIGFzIEkg dW5kZXJzdGFuZCB0aGUgZnJvbnRidWZmZXIgdHJhY2tpbmcsIHRoaXMgY2FzZQo+PiB3b24ndCBo YXBwZW4gaGVyZS4gSSdtIGFzc3VtaW5nIHdlJ2xsIGFsd2F5cyBnbyB0aHJvdWdoCj4+IGludGVs X2ZiY191cGRhdGUoKSBvbiB0aGVzZSBjYXNlcy4KPiBQZXJoYXBzLCBidXQgbW9yZSBieSBsdWNr IHRoYW4gYnkgZGVzaWduLiBXaXRoIHRoZSBzZXRwbGFuZSBhbmQgYXRvbWljCj4gQVBJcyB0aGVy ZSdzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiBhIHBhZ2UgZmxpcCBhbmQgb3RoZXIgcGxhbmUgdXBk YXRlcy4KPiBTbyBpZiB5b3Ugd2FudCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgaHcgZmxpcCBu dWtlLCB5b3Ugd291bGQgbmVlZCB0bwo+IGNoZWNrIGhvdyB0aGUgcGxhbmUgc3RhdGUgaXMgZ29p bmcgdG8gY2hhbmdlLCBhbmQgYmFzZWQgb24gdGhhdCBkZWNpZGUKPiB3aGV0aGVyIGEgZmVuY2Ug dXBkYXRlIGlzIGVub3VnaCBvciBkaXNhYmxlK3JlLWVuYWJsZSBpcyBuZWVkZWQuIEFuZCBpbgo+ IGZhY3QgSSBkb24ndCBzZWUgYW55IGZiY19kaXNhYmxlIGJlZm9yZSB0aGUgZmxpcCwganVzdCBh biBmYmNfdXBkYXRlCj4gYWZ0ZXIgdGhlIGZhY3QuIFNvIHNlZW1zIHRvIG1lIHRoZSBkaXNhYmxl IHJlYWxseSBzaG91bGQgYmUgaW4geW91cgo+IGZsaXBfcHJlcGFyZSBob29rIGluIHRoaXMgY2Fz ZS4gQW5kIGluIGZhY3QgdGhlIHdob2xlIGZsaXBfcHJlcGFyZQo+IHRoaW5nIGlzbid0IGV2ZW4g Y2FsbGVkIGZyb20gdGhlIHNldHBsYW5lL2F0b21pYyBwYXRoLgpJJ20gd29ya2luZyBvbiBmaXhp bmcgdGhhdCwgYnV0IHRoYXQgc3RpbGwgcmVxdWlyZXMgYSBmZXcgbW9yZSBwYXRjaGVzIHVudGls IHBhZ2VfZmxpcCBhbmQgYXRvbWljX2NvbW1pdCBhcmUgdW5pZmllZC4gOi0pCgpJZiBpdCdzIHVz ZWZ1bCB3ZSBjb3VsZCBkbyBhIHNpbXBsZSBwYXRjaCB0byBkbyB0aGUgc2FtZSBpbiBhdG9taWMg Y29tbWl0LiBJJ20gbW92aW5nIGZiX2JpdHMgdG8gY3J0Y19zdGF0ZSBhbnl3YXkuCgp+TWFhcnRl bgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=