From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 254C889D43 for ; Fri, 10 May 2019 12:31:04 +0000 (UTC) Date: Fri, 10 May 2019 15:31:00 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20190510123100.GL24299@intel.com> References: <20190508162906.20808-1-ville.syrjala@linux.intel.com> <20190510085351.GJ17751@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190510085351.GJ17751@phenom.ffwll.local> Subject: Re: [igt-dev] [PATCH i-g-t v3] tests/kms_big_fb: Make sure huge fbs work correctly List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Daniel Vetter Cc: igt-dev@lists.freedesktop.org List-ID: T24gRnJpLCBNYXkgMTAsIDIwMTkgYXQgMTA6NTM6NTFBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBXZWQsIE1heSAwOCwgMjAxOSBhdCAwNzoyOTowNlBNICswMzAwLCBWaWxsZSBT eXJqYWxhIHdyb3RlOgo+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiA+IAo+ID4gQWRkIHZhcmlvdXMgdGVzdHMgdG8gZXhjZXJjaXNlIGh1 Z2UgZnJhbWVidWZmZXJzLiBGaXJzdCBzb21lIGJhc2ljCj4gPiBzYW5pdHkgY2hlY2tzIHRoYXQg dGhlIGtlcm5lbCBhY2NlcHRzL3JlamVjdHMgZ29vZC9iYWQgYWRkZmIyIGlvY3RscywKPiA+IGFu ZCBmaW5hbGx5IGFjdHVhbCBzY2Fub3V0IHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBzY2FuIG91dCB0 aGUgY29ycmVjdAo+ID4gdGhpbmcgd2hlbiBwYW5uaW5nIGFyb3VuZCBpbnNpZGUgbGFyZ2UgZnJh bWVidWZmZXJzLgo+ID4gCj4gPiBUaGUgaW1wbGVtZW50YXRpb24gaXMgaTkxNSBzcGVjaWZpYyBm b3Igbm93IHNpbmNlIEkgY2hvc2UgdG8gdXNlCj4gPiByZW5kZXJjb3B5L2JsaXR0ZXIgd2hlbiBn ZW5lcmF0aW5nIHRoZSBmcmFtZWJ1ZmZlciBjb250ZW50cy4gVXNpbmcKPiA+IHRoZSBub3JtYWwg Y2Fpcm8gc3R1ZmYgd2FzIGp1c3QgdG9vIHNsb3cgd2hlbiBkZWFsaW5nIHdpdGggMUdpQisKPiA+ IGZyYW1lYnVmZmVycy4gSXQgc2hvdWxkbid0IGJlIHRvbyBoYXJkIHRvIHBsdWcgaW4gc29tZSBv dGhlciBtZWNoYW5pc21zCj4gPiBpZiBzb21lb25lIGVsc2Ugd2FudHMgdG8gcmV1c2UgdGhpcyB0 ZXN0Lgo+ID4gCj4gPiB2MjogQWRkIGlndF9yZXF1aXJlKGZvcm1hdCttb2QpIGZvciB0aGUgYWRk ZmIvb3ZlcmZsb3cgdGVzdHMKPiA+ICAgICBVbnNldCBwbGFuZSBmYiBhZnRlciBURVNUX09OTFkg ZmFpbAo+ID4gICAgIExpbWl0IG1heCBmYiB0byBhdCBtb3N0IDEvMiBSQU0gb3IgR1BVIGFkZHJl c3Mgc3BhY2UKPiA+ICAgICBUd2VhayBjb29yZHMgdG8gYXZvaWQgZmFpbHMgd2l0aCA2NGJwcCBs aW5lYXIgd2l0aCA0ayBzY3JlZW4KPiA+ICAgICBNYWtlIGNvb3JkcyBldmVuIGZvciA5MC8yNzAg cm90YXRlZCAxNmJwcAo+ID4gICAgIFN0b3JlIGJwcCBhcyB1aW50OF90IGluc3RlYWQgb2Ygd2Fz dGluZyBhbiBlbnRpcmUgY2hhcioKPiA+IHYzOiBBZGQgYmxpdHRlciBwYXRoIGZvciBnZW4zIChy ZW5kZXIgZW5naW5lIGlzIG5vdCBjYXBhYmxlIG9mCj4gPiAgICAgaGFuZGxpbmcgYmlnIGZicyku Cj4gPiAgICAgU2V0IGZlbmNlIHRpbGluZyBvbiBnZW4yLzMgaW4gcmF3IGFkZGZiIHRlc3RzLgo+ ID4gICAgIERlYWwgd2l0aCB3ZWFrIG1heCBmZW5jZSBzdHJpZGUgb24gZ2VuMy4KPiA+ICAgICBE b24ndCB0cnkgdG8gdXNlIHJvdGF0aW9uIHdoZW4gdGhlIHByb3AgaXNuJ3QgcHJlc2VudC4KPiA+ ICAgICBTa2lwIDkwLzI3MCB0ZXN0IGZvciBnZW40IChubyBhdG9taWMgb24gdGhvc2UgeWV0IHNv IHdlCj4gPiAgICAgY2FuJ3QgbmVhdGx5IGNoZWNrIHdoYXQncyBzdXBwb3J0ZWQpLgo+ID4gICAg IEtlcm5lbCByZXN0cmljdHMgc2Nhbm91dCB0byBtYXBwYWJsZSBwb3J0aW9uIG9mIGdndHQgb24K PiA+ICAgICBnbWNoIHBsYXRmb3Jtcywgc28gY2hlY2sgaXRzIHNpemUgYXMgd2VsbAo+ID4gICAg IFVzZSB0aGUgY29ycmVjdCBmYiBmb3IgdGhlIGxlZ2FjeSBzZXRjcnRjCj4gPiAKPiA+IFNpZ25l ZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gPiAtLS0KPiA+ICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPiA+ICB0ZXN0cy9r bXNfYmlnX2ZiLmMgICAgIHwgNjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCj4gPiAgMyBmaWxlcyBj aGFuZ2VkLCA2NjggaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9r bXNfYmlnX2ZiLmMKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMg Yi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiBpbmRleCA3ZjkyMWY2YzU5ODguLjJkNWM5Mjll MzJmYyAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+ICsrKyBiL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+IEBAIC0yNyw2ICsyNyw3IEBAIFRFU1RTX3Byb2dzID0g XAo+ID4gIAlrbXNfYXRvbWljX2ludGVycnVwdGlibGUgXAo+ID4gIAlrbXNfYXRvbWljX3RyYW5z aXRpb24gXAo+ID4gIAlrbXNfYXZhaWxhYmxlX21vZGVzX2NyYyBcCj4gPiArCWttc19iaWdfZmIg XAo+ID4gIAlrbXNfYnVzeSBcCj4gPiAgCWttc19jY3MgXAo+ID4gIAlrbXNfY29sb3IgXAo+ID4g ZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19iaWdfZmIuYyBiL3Rlc3RzL2ttc19iaWdfZmIuYwo+ID4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTIzNTk1NGUyZDhj Cj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi90ZXN0cy9rbXNfYmlnX2ZiLmMKPiA+IEBAIC0w LDAgKzEsNjY2IEBACj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jw b3JhdGlvbgo+ID4gKyAqCj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK PiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAo+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ICsgKiBTb2Z0d2Fy ZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiA+ICsgKiBJ TiBUSEUgU09GVFdBUkUuCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImlndC5oIgo+ID4g KyNpbmNsdWRlIDxlcnJuby5oPgo+ID4gKyNpbmNsdWRlIDxzdGRib29sLmg+Cj4gPiArI2luY2x1 ZGUgPHN0ZGlvLmg+Cj4gPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ID4gKwo+ID4gK0lHVF9URVNU X0RFU0NSSVBUSU9OKCJUZXN0IGJpZyBmcmFtZWJ1ZmZlcnMiKTsKPiA+ICsKPiA+ICt0eXBlZGVm IHN0cnVjdCB7Cj4gPiArCWludCBkcm1fZmQ7Cj4gPiArCXVpbnQzMl90IGRldmlkOwo+ID4gKwlp Z3RfZGlzcGxheV90IGRpc3BsYXk7Cj4gPiArCWVudW0gcGlwZSBwaXBlOwo+ID4gKwlpZ3Rfb3V0 cHV0X3QgKm91dHB1dDsKPiA+ICsJaWd0X3BsYW5lX3QgKnBsYW5lOwo+ID4gKwlpZ3RfcGlwZV9j cmNfdCAqcGlwZV9jcmM7Cj4gPiArCXN0cnVjdCBpZ3RfZmIgc21hbGxfZmIsIGJpZ19mYjsKPiA+ ICsJdWludDMyX3QgZm9ybWF0Owo+ID4gKwl1aW50NjRfdCBtb2RpZmllcjsKPiA+ICsJaW50IHdp ZHRoLCBoZWlnaHQ7Cj4gPiArCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwo+ID4gKwlpbnQgbWF4 X2ZiX3dpZHRoLCBtYXhfZmJfaGVpZ2h0Owo+ID4gKwl1aW50NjRfdCByYW1fc2l6ZSwgYXBlcl9z aXplLCBtYXBwYWJsZV9zaXplOwo+ID4gKwlpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2Nv cHk7Cj4gPiArCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKPiA+ICsJc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaDsKPiA+ICt9IGRhdGFfdDsKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBp bml0X2J1ZihkYXRhX3QgKmRhdGEsCj4gPiArCQkgICAgIHN0cnVjdCBpZ3RfYnVmICpidWYsCj4g PiArCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLAo+ID4gKwkJICAgICBjb25zdCBjaGFy ICpuYW1lKQo+ID4gK3sKPiA+ICsJaWd0X2Fzc2VydF9lcShmYi0+b2Zmc2V0c1swXSwgMCk7Cj4g PiArCj4gPiArCWJ1Zi0+Ym8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhkYXRhLT5idWZtZ3Is IGRhdGEtPmRybV9mZCwKPiA+ICsJCQkJCSAgbmFtZSwgZmItPmdlbV9oYW5kbGUpOwo+ID4gKwli dWYtPnRpbGluZyA9IGlndF9mYl9tb2RfdG9fdGlsaW5nKGZiLT5tb2RpZmllcik7Cj4gPiArCWJ1 Zi0+c3RyaWRlID0gZmItPnN0cmlkZXNbMF07Cj4gPiArCWJ1Zi0+YnBwID0gZmItPnBsYW5lX2Jw cFswXTsKPiA+ICsJYnVmLT5zaXplID0gZmItPnNpemU7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyB2b2lkIGZpbmlfYnVmKHN0cnVjdCBpZ3RfYnVmICpidWYpCj4gPiArewo+ID4gKwlkcm1faW50 ZWxfYm9fdW5yZWZlcmVuY2UoYnVmLT5ibyk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lk IGNvcHlfcGF0dGVybihkYXRhX3QgKmRhdGEsCj4gPiArCQkJIHN0cnVjdCBpZ3RfZmIgKmRzdF9m YiwgaW50IGR4LCBpbnQgZHksCj4gPiArCQkJIHN0cnVjdCBpZ3RfZmIgKnNyY19mYiwgaW50IHN4 LCBpbnQgc3ksCj4gPiArCQkJIGludCB3LCBpbnQgaCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpZ3Rf YnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKPiA+ICsKPiA+ICsJaW5pdF9idWYoZGF0YSwgJnNyYywg c3JjX2ZiLCAiYmlnIGZiIHNyYyIpOwo+ID4gKwlpbml0X2J1ZihkYXRhLCAmZHN0LCBkc3RfZmIs ICJiaWcgZmIgZHN0Iik7Cj4gPiArCj4gPiArCWdlbV9zZXRfZG9tYWluKGRhdGEtPmRybV9mZCwg ZHN0X2ZiLT5nZW1faGFuZGxlLAo+ID4gKwkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5 MTVfR0VNX0RPTUFJTl9HVFQpOwo+ID4gKwlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNy Y19mYi0+Z2VtX2hhbmRsZSwKPiA+ICsJCSAgICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsK PiA+ICsKPiAKPiBNYXliZSBhIGNvbW1lbnQgaGVyZSB0aGF0IHdlIHJlbHkgb24gdGhlIGtlcm5l bCBub3QgYnVtcGluZyB0aGUgZmIgbGltaXRzCj4gcGFzdCB3aGF0IHdlIGNhbiByZW5kZXIgaW50 bz8KClN1cmUuCgo+IAo+ID4gKwlpZiAoZGF0YS0+cmVuZGVyX2NvcHkpIHsKPiA+ICsJCWRhdGEt PnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLCAmc3JjLCBzeCwgc3ksIHcsIGgsICZkc3Qs IGR4LCBkeSk7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQl3ID0gbWluKHcsIHNyY19mYi0+d2lkdGgg LSBzeCk7Cj4gPiArCQl3ID0gbWluKHcsIGRzdF9mYi0+d2lkdGggLSBkeCk7Cj4gPiArCj4gPiAr CQloID0gbWluKGgsIHNyY19mYi0+aGVpZ2h0IC0gc3kpOwo+ID4gKwkJaCA9IG1pbihoLCBkc3Rf ZmItPmhlaWdodCAtIGR5KTsKPiA+ICsKPiA+ICsJCWludGVsX2JsdF9jb3B5KGRhdGEtPmJhdGNo LCBzcmMuYm8sIHN4LCBzeSwgc3JjLnN0cmlkZSwKPiA+ICsJCQkgICAgICAgZHN0LmJvLCBkeCwg ZHksIGRzdC5zdHJpZGUsIHcsIGgsIGRzdC5icHApOwo+ID4gKwl9Cj4gPiArCj4gPiArCWZpbmlf YnVmKCZkc3QpOwo+ID4gKwlmaW5pX2J1Zigmc3JjKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IHZvaWQgZ2VuZXJhdGVfcGF0dGVybihkYXRhX3QgKmRhdGEsCj4gPiArCQkJICAgICBzdHJ1Y3Qg aWd0X2ZiICpmYiwKPiA+ICsJCQkgICAgIGludCB3LCBpbnQgaCkKPiA+ICt7Cj4gPiArCXN0cnVj dCBpZ3RfZmIgcGF0X2ZiOwo+ID4gKwo+ID4gKwlpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZGF0YS0+ ZHJtX2ZkLCB3LCBoLAo+ID4gKwkJCSAgICAgIGRhdGEtPmZvcm1hdCwgZGF0YS0+bW9kaWZpZXIs Cj4gPiArCQkJICAgICAgJnBhdF9mYik7Cj4gPiArCj4gPiArCWZvciAoaW50IHkgPSAwOyB5IDwg ZmItPmhlaWdodDsgeSArPSBoKSB7Cj4gPiArCQlmb3IgKGludCB4ID0gMDsgeCA8IGZiLT53aWR0 aDsgeCArPSB3KSB7Cj4gPiArCQkJY29weV9wYXR0ZXJuKGRhdGEsIGZiLCB4LCB5LAo+ID4gKwkJ CQkgICAgICZwYXRfZmIsIDAsIDAsCj4gPiArCQkJCSAgICAgcGF0X2ZiLndpZHRoLCBwYXRfZmIu aGVpZ2h0KTsKPiA+ICsJCQl3Kys7Cj4gPiArCQkJaCsrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiAr Cj4gPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmcGF0X2ZiKTsKPiA+ICt9Cj4gPiAr Cj4gPiArc3RhdGljIGJvb2wgc2l6ZV9vayhkYXRhX3QgKmRhdGEsIHVpbnQ2NF90IHNpemUpCj4g PiArewo+ID4gKwkvKgo+ID4gKwkgKiBUaGUga2VybmVsIGxpbWl0cyBzY2Fub3V0IHRvIHRoZQo+ ID4gKwkgKiBtYXBwYWJsZSBwb3J0aW9uIG9mIGdndHQgb24gZ21jaCBwbGF0Zm9ybXMuCj4gPiAr CSAqLwo+ID4gKwlpZiAoKGludGVsX2dlbihkYXRhLT5kZXZpZCkgPCA1IHx8Cj4gPiArCSAgICAg SVNfVkFMTEVZVklFVyhkYXRhLT5kZXZpZCkgfHwKPiA+ICsJICAgICBJU19DSEVSUllWSUVXKGRh dGEtPmRldmlkKSkgJiYKPiA+ICsJICAgIHNpemUgPiBkYXRhLT5tYXBwYWJsZV9zaXplIC8gMikK PiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogTGltaXQgdGhlIGJp ZyBmYiBzaXplIHRvIGF0IG1vc3QgaGFsZiB0aGUgUkFNIG9yIGhhbGYKPiA+ICsJICogdGhlIGFw ZXJ0dXJlIHNpemUuIENvdWxkIGdvIGEgYml0IGhpZ2hlciBJIHN1cHBvc2Ugc2luY2UKPiA+ICsJ ICogd2Ugc2hvdWxkbid0IG5lZWQgbW9yZSB0aGFuIG9uZSBiaWcgZmIgYXQgYSB0aW1lLgo+ID4g KwkgKi8KPiA+ICsJaWYgKHNpemUgPiBkYXRhLT5yYW1fc2l6ZSAvIDIgfHwgc2l6ZSA+IGRhdGEt PmFwZXJfc2l6ZSAvIDIpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCXJldHVybiB0 cnVlOwo+ID4gK30KPiA+ICsKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBtYXhfZmJfc2l6ZShkYXRh X3QgKmRhdGEsIGludCAqd2lkdGgsIGludCAqaGVpZ2h0LAo+ID4gKwkJCXVpbnQzMl90IGZvcm1h dCwgdWludDY0X3QgbW9kaWZpZXIpCj4gPiArewo+ID4gKwl1bnNpZ25lZCBpbnQgc3RyaWRlOwo+ ID4gKwl1aW50NjRfdCBzaXplOwo+ID4gKwlpbnQgaSA9IDA7Cj4gPiArCj4gPiArCSp3aWR0aCA9 IGRhdGEtPm1heF9mYl93aWR0aDsKPiA+ICsJKmhlaWdodCA9IGRhdGEtPm1heF9mYl9oZWlnaHQ7 Cj4gPiArCj4gPiArCS8qIG1heCBmZW5jZSBzdHJpZGUgaXMgb25seSA4ayBieXRlcyBvbiBnZW4z ICovCj4gPiArCWlmIChpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpIDwgNCAmJgo+ID4gKwkgICAgZm9y bWF0ID09IERSTV9GT1JNQVRfWFJHQjg4ODgpCj4gPiArCQkqd2lkdGggPSBtaW4oKndpZHRoLCA4 MTkyIC8gNCk7Cj4gPiArCj4gPiArCWlndF9jYWxjX2ZiX3NpemUoZGF0YS0+ZHJtX2ZkLCAqd2lk dGgsICpoZWlnaHQsCj4gPiArCQkJIGZvcm1hdCwgbW9kaWZpZXIsICZzaXplLCAmc3RyaWRlKTsK PiA+ICsKPiA+ICsJd2hpbGUgKCFzaXplX29rKGRhdGEsIHNpemUpKSB7Cj4gPiArCQlpZiAoaSsr ICYgMSkKPiA+ICsJCQkqd2lkdGggPj49IDE7Cj4gPiArCQllbHNlCj4gPiArCQkJKmhlaWdodCA+ Pj0gMTsKPiA+ICsKPiA+ICsJCWlndF9jYWxjX2ZiX3NpemUoZGF0YS0+ZHJtX2ZkLCAqd2lkdGgs ICpoZWlnaHQsCj4gPiArCQkJCSBmb3JtYXQsIG1vZGlmaWVyLCAmc2l6ZSwgJnN0cmlkZSk7Cj4g PiArCX0KPiA+ICsKPiA+ICsJaWd0X2luZm8oIk1heCB1c2FibGUgZnJhbWVidWZmZXIgc2l6ZSBm b3IgZm9ybWF0ICJJR1RfRk9STUFUX0ZNVCIgLyBtb2RpZmllciAweCUiUFJJeDY0IjogJWR4JWRc biIsCj4gPiArCQkgSUdUX0ZPUk1BVF9BUkdTKGZvcm1hdCksIG1vZGlmaWVyLAo+ID4gKwkJICp3 aWR0aCwgKmhlaWdodCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBib29sIHRlc3RfcGxhbmUo ZGF0YV90ICpkYXRhKQo+ID4gK3sKPiA+ICsJaWd0X3BsYW5lX3QgKnBsYW5lID0gZGF0YS0+cGxh bmU7Cj4gPiArCXN0cnVjdCBpZ3RfZmIgKnNtYWxsX2ZiID0gJmRhdGEtPnNtYWxsX2ZiOwo+ID4g KwlzdHJ1Y3QgaWd0X2ZiICpiaWdfZmIgPSAmZGF0YS0+YmlnX2ZiOwo+ID4gKwlpbnQgdyA9IGJp Z19mYi0+d2lkdGggLSBzbWFsbF9mYi0+d2lkdGg7Cj4gPiArCWludCBoID0gYmlnX2ZiLT5oZWln aHQgLSBzbWFsbF9mYi0+aGVpZ2h0Owo+ID4gKwlzdHJ1Y3Qgewo+ID4gKwkJaW50IHgsIHk7Cj4g PiArCX0gY29vcmRzW10gPSB7Cj4gPiArCQkvKiBidW5jaCBvZiBjb29yZGluYXRlcyBwdWxsZWQg b3V0IG9mIHRoaW4gYWlyICovCj4gPiArCQl7IDAsIDAsIH0sCj4gPiArCQl7IHcgKiA0IC8gNywg aCAvIDUsIH0sCj4gPiArCQl7IHcgKiAzIC8gNywgaCAvIDMsIH0sCj4gPiArCQl7IHcgLyAyLCBo IC8gMiwgfSwKPiA+ICsJCXsgdyAvIDMsIGggKiAzIC8gNCwgfSwKPiA+ICsJCXsgdywgaCwgfSwK PiA+ICsJfTsKPiA+ICsKPiA+ICsJaWYgKCFpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUs IGRhdGEtPmZvcm1hdCwgZGF0YS0+bW9kaWZpZXIpKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4g Kwo+ID4gKwlpZiAoZGF0YS0+cm90YXRpb24gIT0gSUdUX1JPVEFUSU9OXzAgJiYKPiA+ICsJICAg ICFpZ3RfcGxhbmVfaGFzX3Byb3AocGxhbmUsIElHVF9QTEFORV9ST1RBVElPTikpCj4gPiArCQly ZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCS8qIEZJWE1FIG5lZWQgYXRvbWljIG9uIGk5NjUvZzR4 ICovCj4gPiArCWlmIChkYXRhLT5yb3RhdGlvbiAhPSBJR1RfUk9UQVRJT05fMCAmJgo+ID4gKwkg ICAgZGF0YS0+cm90YXRpb24gIT0gSUdUX1JPVEFUSU9OXzE4MCAmJgo+ID4gKwkgICAgIWRhdGEt PmRpc3BsYXkuaXNfYXRvbWljKQo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKwlpZiAo aWd0X3BsYW5lX2hhc19wcm9wKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04pKQo+ID4gKwkJaWd0 X3BsYW5lX3NldF9yb3RhdGlvbihwbGFuZSwgZGF0YS0+cm90YXRpb24pOwo+ID4gKwlpZ3RfcGxh bmVfc2V0X3Bvc2l0aW9uKHBsYW5lLCAwLCAwKTsKPiA+ICsKPiA+ICsJZm9yIChpbnQgaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKGNvb3Jkcyk7IGkrKykgewo+ID4gKwkJaWd0X2NyY190IHNtYWxsX2Ny YywgYmlnX2NyYzsKPiA+ICsJCWludCB4ID0gY29vcmRzW2ldLng7Cj4gPiArCQlpbnQgeSA9IGNv b3Jkc1tpXS55Owo+ID4gKwo+ID4gKwkJLyogSGFyZHdhcmUgbGltaXRhdGlvbiAqLwo+ID4gKwkJ aWYgKGRhdGEtPmZvcm1hdCA9PSBEUk1fRk9STUFUX1JHQjU2NSAmJgo+ID4gKwkJICAgIChkYXRh LT5yb3RhdGlvbiA9PSBJR1RfUk9UQVRJT05fOTAgfHwKPiA+ICsJCSAgICAgZGF0YS0+cm90YXRp b24gPT0gSUdUX1JPVEFUSU9OXzI3MCkpIHsKPiA+ICsJCQl4ICY9IH4xOwo+ID4gKwkJCXkgJj0g fjE7Cj4gPiArCQl9Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJICogTWFrZSBhIDE6MSBjb3B5IG9m IHRoZSBkZXNpcmVkIHBhcnQgb2YgdGhlIGJpZyBmYgo+ID4gKwkJICogcmF0aGVyIHRoYW4gdHJ5 IHRvIHJlbmRlciB0aGUgc2FtZSBwYXR0ZXJuICh0cmFuc2xhdGVkCj4gPiArCQkgKiBhY2NvcmRp bmx5KSBhZ2FpbiB2aWEgY2Fpcm8uIFNvbWV0aGluZyBpbiBjYWlybydzCj4gPiArCQkgKiByZW5k ZXJpbmcgcGlwZWxpbmUgaW50cm9kdWNlcyBzbGlnaHQgZGlmZmVyZW5jZXMgaW50bwo+ID4gKwkJ ICogdGhlIHJlc3VsdCBpZiB3ZSB0cnkgdGhhdCwgYW5kIHNvIHRoZSBjcmMgd2lsbCBub3QgbWF0 Y2guCj4gPiArCQkgKi8KPiA+ICsJCWNvcHlfcGF0dGVybihkYXRhLCBzbWFsbF9mYiwgMCwgMCwg YmlnX2ZiLCB4LCB5LAo+ID4gKwkJCSAgICAgc21hbGxfZmItPndpZHRoLCBzbWFsbF9mYi0+aGVp Z2h0KTsKPiA+ICsKPiA+ICsJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIHNtYWxsX2ZiKTsKPiA+ ICsJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgZGF0YS0+d2lkdGgsIGRhdGEtPmhlaWdodCk7 Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJICogVHJ5IHRvIGNoZWNrIHRoYXQgdGhlIHJvdGF0aW9u K2Zvcm1hdCttb2RpZmllcgo+ID4gKwkJICogY29tYm8gaXMgc3VwcG9ydGVkLgo+ID4gKwkJICov Cj4gPiArCQlpZiAoaSA9PSAwICYmIGRhdGEtPmRpc3BsYXkuaXNfYXRvbWljICYmCj4gPiArCQkg ICAgaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdF9hdG9taWMoJmRhdGEtPmRpc3BsYXksCj4gPiArCQkJ CQkJICBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZLAo+ID4gKwkJCQkJCSAgTlVMTCkgIT0gMCkg ewo+ID4gKwkJCWlmIChpZ3RfcGxhbmVfaGFzX3Byb3AocGxhbmUsIElHVF9QTEFORV9ST1RBVElP TikpCj4gPiArCQkJCWlndF9wbGFuZV9zZXRfcm90YXRpb24ocGxhbmUsIElHVF9ST1RBVElPTl8w KTsKPiA+ICsJCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKPiA+ICsJCQlpZ3Rfc2tp cCgidW5zdXBwb3J0ZWQgcGxhbmUgY29uZmlndXJhdGlvblxuIik7Cj4gCj4gVGhpcyBpcyBraW5k YSB1bmNvb2wgaWYgd2UgaGF2ZSBhIHBsYW5lIGxhdGVyIG9uIHRoYXQgcHJvdm9rZXMgYSBza2lw LCBidXQKPiB3ZSd2ZSBhbHJlYWR5IHJ1biBzb21lIHRlc3RzLiBJdCdzIGEgZ2FwIGluIGlndCBp bmZyYXN0cnVjdHVyZSB0aGF0IEkgbmVlZAo+IHRvIGZpeCBldmVudHVhbGx5LCBidXQgbWVhbndo aWxlIHlvdSBuZWVkIHRvIGNvdW50IGhvdyBtYW55IHNraXBzIHlvdQo+IGhhdmUsIGFuZCBvbmx5 IHNraXAgYXQgdGhlIHZlcnkgZW5kIG9mIHlvdXIgc3VidGVzdCBpZiB5b3Ugc2tpcHBlZCBhbGwK PiBwb3NzaWJsZSBjb21iaW5hdGlvbnMgeW91IG1pZ2h0IHdhbnQgdG8gdGVzdC4KClRoZSB0ZXN0 IG9ubHkgZXhlY3V0ZXMgb24gYSBzaW5nbGUgcGxhbmUuIEJ1dCB0aGlzIGNoZWNrIGRvZXMgbWFr ZQp0aGUgYXNzdW1wdGlvbiB0aGF0IGlmIG9uZSBwbGFuZSBjYW4ndCBkbyB0aGUgZm9ybWF0K21v ZCtyb3RhdGlvbgpjb21ibyB0aGVuIG5vbmUgb2YgdGhlbSBjYW4gZG8gaXQuIFdoaWNoIHNob3Vs ZCBiZSBPSyBmb3IgaTkxNSwgYnV0Cm1pZ2h0IG1ha2Ugc2Vuc2UgdG8gcmVtb3ZlIHRoYXQgYXNz dW1wdGlvbiBpbiBjYXNlIHNvbWVvbmUgZWxzZQp3YW50cyB0byByZXVzZSB0aGlzIHRlc3QuCgpO b3Qgc3VyZSB0aGVyZSBpcyBtdWNoIHRvIGdhaW4gZnJvbSB0ZXN0aW5nIG9uIG1vcmUgcGxhbmVz LiBIbW0uIEkKZ3Vlc3MgZm9yIHRoZSBwcmUtc2tsIHRoZXJlIGNvdWxkIGluIHRoZW9yeSBiZSBz b21lIGJ1ZyBpbiB0aGUgc3ByaXRlCmNvZGUgdGhhdCdzIG5vdCBwcmVzZW50IGluIHRoZSBwcmlt YXJ5IHBsYW5lIGNvZGUsIG9yIHZpY2UgdmVyc2EuCkFsdGhvdWdoIGEgbG90IG9mIHRoZSBjb2Rl IGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSBwbGFuZSB0eXBlcyBzbyBpdApwcm9iYWJseSB3b3VsZG4n dCBiZSBhIGJ1ZyBkaXJlY3RseSByZWxhdGVkIHRvIHJlbWFwcGluZy4gVGhpcyBhZ2FpbgppcyBh IHNvbWV3aGF0IGk5MTUgc3BlY2lmaWMgYXNzdW1wdGlvbiB0aG91Z2guCgpBbnl3YXlzLCBJIHRo aW5rIHlvdXIgaWRlYSBvZiBkb2luZyB0aGUgaWd0X3NraXAgaGlnaGVyIHVwIGlzIGEgZ29vZApv bmUuCgo+IAo+IEkgdGhpbmsgYSByZXR1cm4gZmFsc2UgaGVyZSBhbmQgY2hhbmdpbmcgdGhlIGhp Z2hlciBsZXZlbCBsb2dpYyB0bwo+IGlndF9za2lwIGlmIHlvdSBkaWRuJ3QgYnJlYWsgb3V0IG9m IHRoZSBsb29wIHNob3VsZCBkbyB0aGUgdHJpY2suCgpZZWFoLCBzaG91bGQgYmUgZWFzeSBlbm91 Z2guCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaWd0LWRldg==