From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH 2/3] drm/i915: fix CFB size calculation Date: Thu, 1 Oct 2015 22:54:43 +0000 Message-ID: <1443740082.2442.27.camel@intel.com> References: <1443023547-19896-1-git-send-email-paulo.r.zanoni@intel.com> <1443643545-3603-1-git-send-email-paulo.r.zanoni@intel.com> <1443643545-3603-2-git-send-email-paulo.r.zanoni@intel.com> <20151001121413.GE26517@intel.com> <20151001122308.GG26517@intel.com> <1443721629.2442.14.camel@intel.com> <20151001181150.GM26517@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id E45446ED4D for ; Thu, 1 Oct 2015 15:54:44 -0700 (PDT) In-Reply-To: <20151001181150.GM26517@intel.com> Content-Language: en-US Content-ID: <0376EDD6D9329849A35F39D9C247C9E6@intel.com> 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 RW0gUXVpLCAyMDE1LTEwLTAxIMOgcyAyMToxMSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIGVzY3Jl dmV1Og0KPiBPbiBUaHUsIE9jdCAwMSwgMjAxNSBhdCAwNTo0NzoxMVBNICswMDAwLCBaYW5vbmks IFBhdWxvIFIgd3JvdGU6DQo+ID4gRW0gUXVpLCAyMDE1LTEwLTAxIMOgcyAxNToyMyArMDMwMCwg VmlsbGUgU3lyasOkbMOkIGVzY3JldmV1Og0KPiA+ID4gT24gVGh1LCBPY3QgMDEsIDIwMTUgYXQg MDM6MTQ6MTNQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOg0KPiA+ID4gPiBPbiBXZWQs IFNlcCAzMCwgMjAxNSBhdCAwNTowNTo0NFBNIC0wMzAwLCBQYXVsbyBaYW5vbmkgd3JvdGU6DQo+ ID4gPiA+ID4gV2Ugd2VyZSBjb25zaWRlcmluZyB0aGUgd2hvbGUgZnJhbWVidWZmZXIgaGVpZ2h0 LCBidXQgdGhlDQo+ID4gPiA+ID4gc3BlYw0KPiA+ID4gPiA+IHNheXMgd2UNCj4gPiA+ID4gPiBz aG91bGQgb25seSBjb25zaWRlciB0aGUgYWN0aXZlIGRpc3BsYXkgaGVpZ2h0IHNpemUuIFRoZXJl DQo+ID4gPiA+ID4gd2VyZQ0KPiA+ID4gPiA+IHN0aWxsDQo+ID4gPiA+ID4gc29tZSB1bmNsZWFy IHF1ZXN0aW9ucyBiYXNlZCBvbiB0aGUgc3BlYywgYnV0IHRoZSBoYXJkd2FyZQ0KPiA+ID4gPiA+ IGd1eXMNCj4gPiA+ID4gPiBjbGFyaWZpZWQgdGhlbSBmb3IgdXMuIEFjY29yZGluZyB0byB0aGVt Og0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IC0gQ0ZCIHNpemUgPSBDRkIgc3RyaWRlICogTnVtYmVy IG9mIGxpbmVzIEZCQyB3cml0ZXMgdG8gQ0ZCDQo+ID4gPiA+ID4gLSBDRkIgc3RyaWRlID0gcGxh bmUgc3RyaWRlIC8gY29tcHJlc3Npb24gbGltaXQNCj4gPiA+ID4gPiAtIE51bWJlciBvZiBsaW5l cyBGQkMgd3JpdGVzIHRvIENGQiA9IE1JTihwbGFuZSBzb3VyY2UNCj4gPiA+ID4gPiBoZWlnaHQs DQo+ID4gPiA+ID4gbWF4aW11bQ0KPiA+ID4gPiA+ICAgbnVtYmVyIG9mIGxpbmVzIEZCQyB3cml0 ZXMgdG8gQ0ZCKQ0KPiA+ID4gPiA+IC0gUGxhbmUgc291cmNlIGhlaWdodCA9DQo+ID4gPiA+ID4g ICAtIHBpcGUgc291cmNlIGhlaWdodCAoUElQRV9TUkNTWiByZWdpc3RlcikgKGJlZm9yZSBTS0wp DQo+ID4gPiA+ID4gICAtIHBsYW5lIHNpemUgcmVnaXN0ZXIgaGVpZ2h0IChQTEFORV9TSVpFIHJl Z2lzdGVyKSAoU0tMKykNCj4gPiA+ID4gPiAtIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIEZCQyB3 cml0ZXMgdG8gQ0ZCID0NCj4gPiA+ID4gPiAgIC0gcGxhbmUgc291cmNlIGhlaWdodCAoYmVmb3Jl IEhTVykNCj4gPiA+ID4gPiAgIC0gMjA0OCAoSFNXKykNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBG b3IgdGhlIHBsYW5lIHNvdXJjZSBoZWlnaHQsIEkgY291bGQganVzdCBoYXZlIG1hZGUgb3VyIGNv ZGUNCj4gPiA+ID4gPiBkbw0KPiA+ID4gPiA+IEk5MTVfUkVBRCgpIGluIG9yZGVyIHRvIGJlIG1v cmUgZnV0dXJlIHByb29mLCBidXQgc2luY2UgaXQncw0KPiA+ID4gPiA+IG5vdA0KPiA+ID4gPiA+ IGNvb2wNCj4gPiA+ID4gPiB0byBkbyByZWdpc3RlciByZWFkcyBJIGRlY2lkZWQgdG8ganVzdCBy ZWNhbGN1bGF0ZSB0aGUgdmFsdWVzDQo+ID4gPiA+ID4gd2UNCj4gPiA+ID4gPiB1c2UNCj4gPiA+ ID4gPiB3aGVuIHdlIGFjdHVhbGx5IHdyaXRlIHRvIHRob3NlIHJlZ2lzdGVycy4NCj4gPiA+ID4g PiANCj4gPiA+ID4gPiBXaXRoIHRoaXMgcGF0Y2gsIGRlcGVuZGluZyBvbiB5b3VyIG1hY2hpbmUg Y29uZmlndXJhdGlvbiwgYQ0KPiA+ID4gPiA+IGxvdA0KPiA+ID4gPiA+IG9mIHRoZQ0KPiA+ID4g PiA+IGttc19mcm9udGJ1ZmZlcl90cmFja2luZyBzdWJ0ZXN0cyB0aGF0IHVzZWQgdG8gcmVzdWx0 IGluIGENCj4gPiA+ID4gPiBTS0lQDQo+ID4gPiA+ID4gZHVlIHRvDQo+ID4gPiA+ID4gbm90IGVu b3VnaCBzdG9sZW4gbWVtb3J5IHN0aWxsIHN0YXJ0IHJlc3VsdGluZyBpbiBhIFBBU1MuDQo+ID4g PiA+ID4gDQo+ID4gPiA+ID4gdjI6IFVzZSB0aGUgY2xpcHBlZCBzcmMgc2l6ZSBpbnN0ZWFkIG9m IHBpcGVfc3JjX2ggKFZpbGxlKS4NCj4gPiA+ID4gPiB2MzogVXNlIHRoZSBhcHByb3ByaWF0ZSBp bmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGUgaGFyZHdhcmUNCj4gPiA+ID4gPiBndXlzLg0KPiA+ ID4gPiA+IA0KPiA+ID4gPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1 bG8uci56YW5vbmlAaW50ZWwuY29tPg0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyB8IDU4DQo+ID4gPiA+ID4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQ0KPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNTQg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMNCj4gPiA+ID4gPiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jDQo+ID4gPiA+ID4gaW5kZXggMWIyZWJiMi4u ZDUzZjczZiAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYw0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5j DQo+ID4gPiA+ID4gQEAgLTY5OCw5ICs2OTgsNjAgQEAgdm9pZCBpbnRlbF9mYmNfY2xlYW51cF9j ZmIoc3RydWN0DQo+ID4gPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ID4gPiA+ ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5mYmMubG9jayk7DQo+ID4gPiA+ID4gIH0NCj4g PiA+ID4gPiAgDQo+ID4gPiA+ID4gLXN0YXRpYyBpbnQgaW50ZWxfZmJjX3NldHVwX2NmYihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiA+ID4gPiA+ICpkZXZfcHJpdiwgaW50IHNpemUsDQo+ID4g PiA+ID4gLQkJCSAgICAgICBpbnQgZmJfY3BwKQ0KPiA+ID4gPiA+ICsvKg0KPiA+ID4gPiA+ICsg KiBGb3IgU0tMKywgdGhlIHBsYW5lIHNvdXJjZSBzaXplIHVzZWQgYnkgdGhlIGhhcmR3YXJlIGlz DQo+ID4gPiA+ID4gYmFzZWQNCj4gPiA+ID4gPiBvbiB0aGUgdmFsdWUgd2UNCj4gPiA+ID4gPiAr ICogd3JpdGUgdG8gdGhlIFBJUEVfU0laRSByZWdpc3Rlci4gRm9yIEJEVy0sIHRoZSBoYXJkd2Fy ZQ0KPiA+ID4gPiA+IGxvb2tzDQo+ID4gPiA+ID4gYXQgdGhlIHZhbHVlIHdlDQo+ID4gPiA+ID4g KyAqIHdyb3RlIHRvIFBJUEVTUkMuDQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtzdGF0aWMg dm9pZCBpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplcyhzdHJ1Y3QNCj4gPiA+ID4gPiBp bnRlbF9jcnRjDQo+ID4gPiA+ID4gKmNydGMsDQo+ID4gPiA+ID4gKwkJCQkJICAgICBpbnQgKndp ZHRoLCBpbnQNCj4gPiA+ID4gPiAqaGVpZ2h0KQ0KPiA+ID4gPiANCj4gPiA+ID4gc2l6ZSBpbiBt eSBtaW5kIGFscmVhZHkgaW5jbHVkZXMgd2lkdGggYW5kIGhlaWdodCwgc28gcGx1cmFsDQo+ID4g PiA+IF9zaXplcw0KPiA+ID4gPiBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSB0byBtZS4NCj4gPiA+ ID4gDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2DQo+ID4gPiA+ID4gLT5kZXZfcHJpdmF0ZTsNCj4gPiA+ ID4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQ0KPiA+ID4gPiA+ ICsJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjDQo+ID4gPiA+ID4gLT5iYXNlLnByaW1hcnkN Cj4gPiA+ID4gPiAtPnN0YXRlKTsNCj4gPiA+ID4gPiArCWludCB3LCBoOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsNCj4gPiA+ ID4gPiArCQlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlDQo+ID4gPiA+ ID4gLT5iYXNlLnJvdGF0aW9uKSkgew0KPiA+ID4gPiA+ICsJCQl3ID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZQ0KPiA+ID4gPiA+IC0+c3JjKQ0KPiA+ID4gPiA+ID4gPiAxNjsNCj4gPiA+ ID4gPiArCQkJaCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZQ0KPiA+ID4gPiA+IC0+c3Jj KSA+Pg0KPiA+ID4gPiA+IDE2Ow0KPiA+ID4gPiA+ICsJCX0gZWxzZSB7DQo+ID4gPiA+ID4gKwkJ CXcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUNCj4gPiA+ID4gPiAtPnNyYykgPj4NCj4g PiA+ID4gPiAxNjsNCj4gPiA+ID4gPiArCQkJaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3Rh dGUNCj4gPiA+ID4gPiAtPnNyYykNCj4gPiA+ID4gPiA+ID4gMTY7DQo+ID4gPiA+ID4gKwkJfQ0K PiA+ID4gPiANCj4gPiA+ID4gWW91IGNhbiBqdXN0IHVzZSB0aGlzIHNhbWUgY29kZSBmb3IgYWxs IHBsYXRmb3Jtcy4NCj4gPiANCj4gPiBUaGlzIGNvZGUgaXMgdHJ5aW5nIHRvIHJlY2FsY3VsYXRl IHRoZSB2YWx1ZXMgd2UgdXNlIHRvIHdyaXRlIHRvDQo+ID4gUElQRVNSQyBhbmQgUElQRV9TSVpF IGJlY2F1c2UgdGhhdCdzIHdoYXQgdGhlIEhXIGlzIHVzaW5nLiBTaW5jZSBvbg0KPiA+IHRoZQ0K PiA+IG9sZGVyIHBsYXRmb3JtcyB3ZSB1c2UgY3J0Yy0+cGlwZV9zcmNfeCBmb3IgUElQRVNSQywg SSB0aGluayB0aGUNCj4gPiBjb3JyZWN0IHRoaW5nIHRvIGRvIGlzIHRvIGNoZWNrIHRob3NlIHZh bHVlcy4NCj4gDQo+IFRoZSBwbGFuZSBzcmMgc2l6ZSBpcyBzdGlsbCB3aGF0IG1hdHRlcnMuIE9s ZGVyIHBsYXRmb3JtcyBqdXN0IGRpZG4ndA0KPiBzdXBwb3J0IHdpbmRvd2luZyBvciBzY2FsaW5n IG9uIHRoZSBwcmltYXJ5IHBsYW5lLiBBbmQgc28gdGhlcmUgd2FzDQo+IG5vDQo+IG5lZWQgdG8g aGF2ZSBhIGRlZGljYXRlZCByZWdpc3RlciBmb3IgcGxhbmUgc2l6ZSBzaW5jZSBQSVBFU1JDIHdv dWxkDQo+IGFueXdheSBjb250YWluIHRoZSBzYW1lIG51bWJlcnMuDQoNCkkgc3RpbGwgdGhpbmsg dGhlIGZhY3QgdGhhdCB3ZSB3ZSB1c2UgcGlwZV9zcmNfeCB0byBzZXQgUElQRVNSQyBpcyB0aGUN Cm1vc3QgcmVsZXZhbnQgYXJndW1lbnQuIEFueXdheSwgc2luY2UgeW91J3JlIHN1cmUgY2hhbmdp bmcgdGhlIHZhbHVlDQp3b24ndCBjYXVzZSBwcm9ibGVtcywgSSdsbCBkbyBpdDogd2UgaGF2ZSB3 YXkgdG9vIG1hbnkgcGxhbmUgc2l6ZQ0KZmllbGRzIGluIG91ciBzdHJ1Y3RzIGFuZCBJJ20gYWx3 YXlzIGNvbmZ1c2VkIGJ5IHRoZWlyIHVuZG9jdW1lbnRlZA0KZGlmZmVyZW5jZXMuDQoNCj4gDQo+ IEkgY2FuJ3QgcmVjYWxsIG9mZiB0aGUgdG9wIG9mIG15IGhlYWQgd2hldGhlciBnZW4yLzMgc3Vw cG9ydGVkIEZCQyBvbg0KPiB0aGUgcGxhbmVzIHRoYXQgaGFkIHdpbmRvd2luZyAocGxhbmUgIT0g QSkuIFBlcmhhcHMgbm90Lg0KPiANCj4gPiA+ID4gDQo+ID4gPiA+IEFjdHVhbGx5IEknbSBub3Qg c3VyZSB3aGF0IHdlIHNob3VsZCBkbyB3cnQuIHJvdGF0aW9uLiBEbyB3ZQ0KPiA+ID4gPiBzdXBw b3J0DQo+ID4gPiA+IEZCQyB3aXRoIDkwLzI3MCBkZWdyZWUgcm90YXRpb24/IFRoZSBzY2Fub3V0 IGhhcHBlbnMgaW4gYQ0KPiA+ID4gPiByb3RhdGVkDQo+ID4gPiA+IGZhc2hpb24sIHNvIHN3YXBw aW5nIHRoZSBkaW1lbnNpb25zIGxpa2UgeW91IGRvIHdvdWxkIHNlZW0gbGlrZQ0KPiA+ID4gPiB0 aGUNCj4gPiA+ID4gcmlnaHQgdGhpbmcuIEJ1dCBub3Qgc3VyZS4NCj4gPiA+IA0KPiA+ID4gV2hp bGUgd3JpdGluZyBteSByZXBseSB0b3RoZSBHVFQgdHJhY2tpbmcgb2Zmc2V0IHBhdGNoLCBJDQo+ ID4gPiByZWFsaXplZA0KPiA+ID4gdGhhdA0KPiA+ID4gOTAvMjcwIGRlZ3JlZSByb3RhdGlvbiBy ZXF1aXJlcyBZLXRpbGluZywgc28gc2luY2Ugd2UncmUNCj4gPiA+IGN1cnJlbnRseQ0KPiA+ID4g bGltaXRpbmcgRkJDIHRvIFgtdGlsaW5nIHdlIGNhbiBuZXZlciBnZXQgaGVyZSB3aXRoIDkwLzI3 MCBkZWdyZWUNCj4gPiA+IHJvdGF0aW9uLg0KPiA+IA0KPiA+IEJ1dCBTS0wgRkJDIGRvZXMgc3Vw cG9ydCBZIHRpbGluZyAoZXZlbiB0aG91Z2ggb3VyIGNvZGUgZG9lc24ndCksDQo+ID4gc28NCj4g PiBrZWVwaW5nIHRoZSBjaGVja3MgYXMgdGhleSBhcmUgd291bGQgaGVscCBwcmV2ZW50aW5nIGZ1 dHVyZQ0KPiA+IHByb2JsZW1zLg0KPiANCj4gSSBzdXBwb3NlLiBBbHRob3VnaCByZW1vdmluZyB0 aGUgZGVwZW5kZW5jeSBvbiBodyB0cmFja2luZyB3b3VsZCBiZQ0KPiByZXF1aXJlZCBpbiBhbnkg Y2FzZSBmb3IgWSB0aWxpbmcuDQo+IA0KPiA+IA0KPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiA+ ICsJfSBlbHNlIHsNCj4gPiA+ID4gPiArCQl3ID0gY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193Ow0K PiA+ID4gPiA+ICsJCWggPSBjcnRjLT5jb25maWctPnBpcGVfc3JjX2g7DQo+ID4gPiA+ID4gKwl9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJaWYgKHdpZHRoKQ0KPiA+ID4gPiA+ICsJCSp3aWR0 aCA9IHc7DQo+ID4gPiA+ID4gKwlpZiAoaGVpZ2h0KQ0KPiA+ID4gPiA+ICsJCSpoZWlnaHQgPSBo Ow0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgaW50IGludGVs X2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoc3RydWN0IGludGVsX2NydGMNCj4gPiA+ID4gPiAqY3J0 YykNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gY3J0Yy0+YmFzZS5kZXYNCj4gPiA+ID4gPiAtPmRldl9wcml2YXRlOw0KPiA+ID4g PiA+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPmZi Ow0KPiA+ID4gPiA+ICsJaW50IGxpbmVzOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWludGVs X2ZiY19nZXRfcGxhbmVfc291cmNlX3NpemVzKGNydGMsIE5VTEwsDQo+ID4gPiA+ID4gJmxpbmVz KTsNCj4gPiA+ID4gPiArCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpDQo+ID4g PiA+ID4gKwkJbGluZXMgPSBtaW4obGluZXMsIDIwNDgpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArCXJldHVybiBsaW5lcyAqIGZiLT5waXRjaGVzWzBdOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgaW50IGludGVsX2ZiY19zZXR1cF9jZmIoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2DQo+ID4gPiA+ID4gLT5kZXZfcHJp dmF0ZTsNCj4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gY3J0Yy0+YmFz ZS5wcmltYXJ5LT5mYjsNCj4gPiA+ID4gPiArCWludCBzaXplLCBmYl9jcHA7DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsJc2l6ZSA9IGludGVsX2ZiY19jYWxjdWxhdGVfY2ZiX3NpemUoY3J0Yyk7 DQo+ID4gPiA+ID4gKwlmYl9jcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9y bWF0LCAwKTsNCj4gPiA+ID4gDQo+ID4gPiA+IENhbiB3ZSBqdXN0IGFsbCBpdCAnY3BwJyBwbGVh c2UuIFdlIGFscmVhZHkgaGF2ZSB0b28gbWFueSBuYW1lcw0KPiA+ID4gPiBmb3INCj4gPiA+ID4g dGhlDQo+ID4gDQo+ID4gSSB3YXMganVzdCBtb3ZpbmcgdGhpbmdzIGFyb3VuZC4uLiANCj4gPiAN Cj4gPiA+ID4gc2FtZSB0aGluZy4gU29tZW9uZSBjb3VsZCBhbHNvIGRvIGEgc21hbGwgc2VhcmNo JnJlcGxhY2UgdG8NCj4gPiA+ID4gdW5pZnkNCj4gPiA+ID4gdGhlDQo+ID4gPiA+IHdoYXRldmVy IHdlIGhhdmUgY3VycmVudGx5Lg0KPiA+IA0KPiA+IA0KPiA+IFNvbWVvbmUgY291bGQgcGF0Y2gg dGhlIGRybV9mb3JtYXRfcGxhbmVfY3BwKCkgZnVuY3Rpb24gc28gdGhhdCBpdA0KPiA+IGF0DQo+ ID4gbGVhc3QgZXhwbGFpbnMgd2hhdCBDUFAgaXMgc3VwcG9zZWQgdG8gbWVhbiBpbiB0aGlzIGNv bnRleHQgKENvbG9ycw0KPiA+IFBlcg0KPiA+IFBpeGVsPyBDb3VudG9mYnl0ZXMgUGVyIFBpeGVs PykuIE9yIHJlbmFtZSB0aGUgZnVuY3Rpb24gdG8NCj4gPiBkcm1fZm9ybWF0X3BhbmVfYnBwKCkg dG8gbWFrZSB0aGUgbmFtZSBtYXRjaCB0aGUgZGVzY3JpcHRpb24uDQo+IA0KPiAiY2hhcnMgcGVy IHBpeGVsIiBJIHN1cHBvc2UuIE9yIG1heWJlICJicHAiIHdhcyBhbHJlYWR5IHRha2VuDQo+IGFu ZCAnYycgd2FzIGp1c3QgdGhlIG5leHQgbGV0dGVyIGZyb20gJ2InLiBObyBvbmUga25vd3MgZm9y IHN1cmUNCj4gcGVyaGFwcyA7KQ0KPiANCj4gQnV0IGluIGFueSBjYXNlLCBzdGlsbCBhIGZhaXJs eSBzdGFuZGFyZCB3YXkgdG8gY2FsbCBpdC4NCj4gDQo+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiAgCWlmIChzaXplIDw9IGRldl9wcml2LT5mYmMudW5jb21wcmVzc2VkX3Np emUpDQo+ID4gPiA+ID4gIAkJcmV0dXJuIDA7DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+IEBAIC04 OTcsOCArOTQ4LDcgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9mYmNfdXBkYXRlKHN0cnVjdA0KPiA+ ID4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiA+ID4gPiA+ICAJCWdvdG8gb3V0 X2Rpc2FibGU7DQo+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4gIA0KPiA+ID4gPiA+IC0JaWYgKGlu dGVsX2ZiY19zZXR1cF9jZmIoZGV2X3ByaXYsIG9iai0+YmFzZS5zaXplLA0KPiA+ID4gPiA+IC0J CQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmINCj4gPiA+ID4gPiAtPnBpeGVsX2Zvcm1hdCwgMCkp KSB7DQo+ID4gPiA+ID4gKwlpZiAoaW50ZWxfZmJjX3NldHVwX2NmYihpbnRlbF9jcnRjKSkgew0K PiA+ID4gPiA+ICAJCXNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LA0KPiA+ID4gPiA+IEZCQ19T VE9MRU5fVE9PX1NNQUxMKTsNCj4gPiA+ID4gPiAgCQlnb3RvIG91dF9kaXNhYmxlOw0KPiA+ID4g PiA+ICAJfQ0KPiA+ID4gPiA+IC0tIA0KPiA+ID4gPiA+IDIuNS4zDQo+ID4gPiA+IA0KPiA+ID4g PiAtLSANCj4gPiA+ID4gVmlsbGUgU3lyasOkbMOkDQo+ID4gPiA+IEludGVsIE9UQw0KPiA+ID4g PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4g PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcNCj4gPiA+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA0KPiA+ID4gDQo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=