From mboxrd@z Thu Jan 1 00:00:00 1970 From: Petri Latvala Subject: Re: [igt-dev] [PATCH i-g-t] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset Date: Thu, 28 Nov 2019 15:38:06 +0200 Message-ID: <20191128133806.GU25209@platvala-desk.ger.corp.intel.com> References: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> <20191128125502.3886404-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20191128125502.3886404-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMjgsIDIwMTkgYXQgMTI6NTU6MDJQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEZyb206IEx1a2FzeiBLYWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4K PiAKPiBGZXcgc2ltcGxlIHRlc3RzIHdoaWNoIHRyaWVzIHRvIGNyZWF0ZSAvIG1tYXAgYnVmZmVy IG9iamVjdHMKPiB1c2luZyBHRU1fTU1BUF9PRkZTRVQgdUFQSS4KPiAKPiB2MjogY2hhbmdlIGZy b20gV0MgLT4gV0IgKGFjY29yZGluZyB0byBDaHJpcyByZXZpZXcgY29tbWVudCkKPiB2MzogYWRk IG1tYXAtb2Zmc2V0LWNsb3NlLXJhY2UgdGVzdAo+IAo+IFNpZ25lZC1vZmYtYnk6IEx1a2FzeiBL YWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBaYmln bmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KPiBDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFZhbnNoaWRoYXIg S29uZGEgPHZhbnNoaWRoYXIuci5rb25kYUBpbnRlbC5jb20+Cj4gLS0tCj4gUmVxdWlyZWQgKGxv b2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBpZGVhcyk6Cj4gIHNpemUgLSBjaGVjayB3 ZSBjYW4gaGFuZGxlIG9iamVjdHMgYmV5b25kIGEgcmVhc29uYWJsZSBsaW1pdCAobm90ZSB0aGUK PiBrZXJuZWwgZmFpbHMgYXQgYmV5b25kIFJBTSkKPiAgZm9ya2VkIC0gaW50ZXJhY3Rpb25zIHdp dGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MKPiAgICAgICAgICAgdGhyZWFk cy9wcm9jZXNzZXMKPiAgc3VzcGVuZCAtIGNoZWNrIHNwZWVkIGlzIGNvbnNpc3RlbnQgYmVmb3Jl L2FmdGVyIHN1c3BlbmQKPiAgY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBjaGVja2VyIGJldHdl ZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Cj4gLS0tCj4gIHRlc3RzL01ha2VmaWxl LnNvdXJjZXMgICAgICAgfCAgIDMgKwo+ICB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jIHwg NDE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHRlc3RzL21lc29uLmJ1 aWxkICAgICAgICAgICAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQyMCBpbnNlcnRpb25z KCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCj4g Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCj4gaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Cj4gLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMzI1 LDYgKzMyNSw5IEBAIGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKPiAgVEVTVFNf cHJvZ3MgKz0gZ2VtX21tYXBfZ3R0Cj4gIGdlbV9tbWFwX2d0dF9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9ndHQuYwo+ICAKPiArVEVTVFNfcHJvZ3MgKz0gZ2VtX21tYXBfb2Zmc2V0Cj4gK2dlbV9t bWFwX29mZnNldF9TT1VSQ0VTID0gaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwo+ICsKPiAgVEVTVFNf cHJvZ3MgKz0gZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24KPiAgZ2VtX21tYXBfb2Zmc2V0X2V4 aGF1c3Rpb25fU09VUkNFUyA9IGk5MTUvZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24uYwo+ICAK PiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYyBiL3Rlc3RzL2k5MTUv Z2VtX21tYXBfb2Zmc2V0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MC4uZTc1YzNmZDE3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX21tYXBf b2Zmc2V0LmMKPiBAQCAtMCwwICsxLDQxNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAx OSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICsjaW5jbHVk ZSA8c3RkYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjaW5jbHVkZSA8c3lz L2lvY3RsLmg+Cj4gKyNpbmNsdWRlICJkcm0uaCIKPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiAr I2luY2x1ZGUgImlndF94ODYuaCIKPiArCj4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJCYXNpYyBN TUFQX09GRlNFVCBJT0NUTCB0ZXN0cyBmb3IgbWVtIHJlZ2lvbnNcbiIpOwo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBtbWFwX29mZnNldCB7Cj4gKwljb25zdCBjaGFyICpuYW1lOwo+ICsJdW5z aWduZWQgaW50IHR5cGU7Cj4gKwl1bnNpZ25lZCBpbnQgZG9tYWluOwo+ICt9IG1tYXBfb2Zmc2V0 X3R5cGVzW10gPSB7Cj4gKwl7ICJndHQiLCBJOTE1X01NQVBfT0ZGU0VUX0dUVCwgSTkxNV9HRU1f RE9NQUlOX0dUVCB9LAo+ICsJeyAid2IiLCBJOTE1X01NQVBfT0ZGU0VUX1dCLCBJOTE1X0dFTV9E T01BSU5fQ1BVIH0sCj4gKwl7ICJ3YyIsIEk5MTVfTU1BUF9PRkZTRVRfV0MsIEk5MTVfR0VNX0RP TUFJTl9XQyB9LAo+ICsJeyAidWMiLCBJOTE1X01NQVBfT0ZGU0VUX1VDLCBJOTE1X0dFTV9ET01B SU5fV0MgfSwKPiArCXt9LAo+ICt9Owo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9tbWFwX29mZnNl dF90eXBlKF9fdCkgXAo+ICsJZm9yIChjb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKl9fdCA9IG1t YXBfb2Zmc2V0X3R5cGVzOyBcCj4gKwkgICAgIChfX3QpLT5uYW1lOyBcCj4gKwkgICAgIChfX3Qp KyspCj4gKwo+ICtzdGF0aWMgaW50IG1tYXBfb2Zmc2V0X2lvY3RsKGludCBpOTE1LCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX21tYXBfb2Zmc2V0ICphcmcpCj4gK3sKPiArCWludCBlcnIgPSAwOwo+ICsK PiArCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULCBh cmcpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWlndF9hc3N1bWUoZXJyKTsKPiArCX0KPiAr Cj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBi YWRfb2JqZWN0KGludCBpOTE1KQo+ICt7Cj4gKwl1aW50MzJfdCByZWFsX2hhbmRsZTsKPiArCXVp bnQzMl90IGhhbmRsZXNbMjBdOwo+ICsJaW50IGkgPSAwOwo+ICsKPiArCXJlYWxfaGFuZGxlID0g Z2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKPiArCj4gKwloYW5kbGVzW2krK10gPSAweGRlYWRiZWVm Owo+ICsJZm9yIChpbnQgYml0ID0gMDsgYml0IDwgMTY7IGJpdCsrKQo+ICsJCWhhbmRsZXNbaSsr XSA9IHJlYWxfaGFuZGxlIHwgKDEgPDwgKGJpdCArIDE2KSk7Cj4gKwloYW5kbGVzW2ldID0gcmVh bF9oYW5kbGUgKyAxOwo+ICsKPiArCWZvciAoOyBpID49IDA7IGktLSkgewo+ICsJCXN0cnVjdCBk cm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgYXJnID0gewo+ICsJCQkuaGFuZGxlID0gaGFuZGxlc1tp XSwKPiArCQkJLmZsYWdzID0gSTkxNV9NTUFQX09GRlNFVF9XQiwKPiArCQl9Owo+ICsKPiArCQlp Z3RfZGVidWcoIlRyeWluZyBNTUFQIElPQ1RMIHdpdGggaGFuZGxlICV4XG4iLAo+ICsJCQkgIGhh bmRsZXNbaV0pOwo+ICsJCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9jdGwoaTkxNSwgJmFy ZyksCj4gKwkJCSAgICAgIC1FTk9FTlQpOwo+ICsJfQo+ICsKPiArCWdlbV9jbG9zZShpOTE1LCBy ZWFsX2hhbmRsZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGJhZF9mbGFncyhpbnQgaTkxNSkK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7Cj4gKwkJLmhh bmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5NiksCj4gKwkJLmZsYWdzID0gLTF1bGwsCj4gKwl9 Owo+ICsKPiArCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9jdGwoaTkxNSwgJmFyZyksIC1F SU5WQUwpOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIGFyZy5oYW5kbGUpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBiYXNpY191YWYoaW50IGk5MTUpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90IG9ial9z aXplID0gNDA5NjsKPiArCj4gKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKPiArCQl1 aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIG9ial9zaXplKTsKPiArCQl1aW50OF90 ICpleHBlY3RlZCwgKmJ1ZiwgKmFkZHI7Cj4gKwo+ICsJCWFkZHIgPSBfX2dlbV9tbWFwX29mZnNl dChpOTE1LCBoYW5kbGUsIDAsIG9ial9zaXplLAo+ICsJCQkJCSBQUk9UX1JFQUQgfCBQUk9UX1dS SVRFLAo+ICsJCQkJCSB0LT50eXBlKTsKPiArCQlpZiAoIWFkZHIpIHsKPiArCQkJZ2VtX2Nsb3Nl KGk5MTUsIGhhbmRsZSk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJZXhwZWN0ZWQg PSBjYWxsb2Mob2JqX3NpemUsIHNpemVvZigqZXhwZWN0ZWQpKTsKPiArCQlnZW1fc2V0X2RvbWFp bihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7Cj4gKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChh ZGRyLCBleHBlY3RlZCwgb2JqX3NpemUpID09IDAsCj4gKwkJCSAgICAgIm1tYXAoJXMpIG5vdCBj bGVhciBvbiBnZW1fY3JlYXRlKClcbiIsCj4gKwkJCSAgICAgdC0+bmFtZSk7Cj4gKwkJZnJlZShl eHBlY3RlZCk7Cj4gKwo+ICsJCWJ1ZiA9IGNhbGxvYyhvYmpfc2l6ZSwgc2l6ZW9mKCpidWYpKTsK PiArCQltZW1zZXQoYnVmICsgMTAyNCwgMHgwMSwgMTAyNCk7Cj4gKwkJZ2VtX3dyaXRlKGk5MTUs IGhhbmRsZSwgMCwgYnVmLCBvYmpfc2l6ZSk7Cj4gKwkJZ2VtX3NldF9kb21haW4oaTkxNSwgaGFu ZGxlLCB0LT5kb21haW4sIDApOwo+ICsJCWlndF9hc3NlcnRfZihtZW1jbXAoYnVmLCBhZGRyLCBv Ympfc2l6ZSkgPT0gMCwKPiArCQkJICAgICAibW1hcCglcykgbm90IGNvaGVyZW50IHdpdGggZ2Vt X3dyaXRlKClcbiIsCj4gKwkJCSAgICAgdC0+bmFtZSk7Cj4gKwo+ICsJCWdlbV9zZXRfZG9tYWlu KGk5MTUsIGhhbmRsZSwgdC0+ZG9tYWluLCB0LT5kb21haW4pOwo+ICsJCW1lbXNldChhZGRyICsg MjA0OCwgMHhmZiwgMTAyNCk7Cj4gKwkJZ2VtX3JlYWQoaTkxNSwgaGFuZGxlLCAwLCBidWYsIG9i al9zaXplKTsKPiArCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7 Cj4gKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChidWYsIGFkZHIsIG9ial9zaXplKSA9PSAwLAo+ICsJ CQkgICAgICJtbWFwKCVzKSBub3QgY29oZXJlbnQgd2l0aCBnZW1fcmVhZCgpXG4iLAo+ICsJCQkg ICAgIHQtPm5hbWUpOwo+ICsKPiArCQlnZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKPiArCQlpZ3Rf YXNzZXJ0X2YobWVtY21wKGJ1ZiwgYWRkciwgb2JqX3NpemUpID09IDAsCj4gKwkJCSAgICAgIm1t YXAoJXMpIG5vdCByZXNpZGVudCBhZnRlciBnZW1fY2xvc2UoKVxuIiwKPiArCQkJICAgICB0LT5u YW1lKTsKPiArCQlmcmVlKGJ1Zik7Cj4gKwo+ICsJCWlndF9kZWJ1ZygiVGVzdGluZyB1bm1hcHBp bmdcbiIpOwo+ICsJCW11bm1hcChhZGRyLCBvYmpfc2l6ZSk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGlzb2xhdGlvbihpbnQgaTkxNSkKPiArewo+ICsJZm9yX2VhY2hfbW1hcF9vZmZz ZXRfdHlwZSh0KSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2Fy ZyA9IHsKPiArCQkJLmZsYWdzID0gdC0+dHlwZQo+ICsJCX07Cj4gKwkJaW50IEEgPSBnZW1fcmVv cGVuX2RyaXZlcihpOTE1KTsKPiArCQlpbnQgQiA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOwo+ ICsJCXVpbnQ2NF90IG9mZnNldF9hLCBvZmZzZXRfYjsKPiArCQl1aW50MzJfdCBhLCBiOwo+ICsJ CXZvaWQgKnB0cjsKPiArCj4gKwkJYSA9IGdlbV9jcmVhdGUoQSwgNDA5Nik7Cj4gKwkJYiA9IGdl bV9vcGVuKEIsIGdlbV9mbGluayhBLCBhKSk7Cj4gKwo+ICsJCW1tYXBfYXJnLmhhbmRsZSA9IGE7 Cj4gKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1LCAmbW1hcF9hcmcpLCAw KTsKPiArCQlvZmZzZXRfYSA9IG1tYXBfYXJnLm9mZnNldDsKPiArCj4gKwkJbW1hcF9hcmcuaGFu ZGxlID0gYjsKPiArCQlpZ3RfYXNzZXJ0X2VxKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFw X2FyZyksIDApOwo+ICsJCW9mZnNldF9iID0gbW1hcF9hcmcub2Zmc2V0Owo+ICsKPiArCQlpZ3Rf aW5mbygiQVslc106IHtmZDolZCwgaGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKPiAr CQkJIHQtPm5hbWUsIEEsIGEsIG9mZnNldF9hKTsKPiArCQlpZ3RfaW5mbygiQlslc106IHtmZDol ZCwgaGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKPiArCQkJIHQtPm5hbWUsIEIsIGIs IG9mZnNldF9iKTsKPiArCj4gKwkJY2xvc2UoQik7Cj4gKwo+ICsJCXB0ciA9IG1tYXA2NCgwLCA0 MDk2LCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIEEsIG9mZnNldF9hKTsKPiArCQlpZ3RfYXNzZXJ0 KHB0ciAhPSBNQVBfRkFJTEVEKTsKPiArCQltdW5tYXAocHRyLCA0MDk2KTsKPiArCj4gKwkJY2xv c2UoQSk7Cj4gKwo+ICsJCXB0ciA9IG1tYXA2NCgwLCA0MDk2LCBQUk9UX1JFQUQsIE1BUF9TSEFS RUQsIEEsIG9mZnNldF9hKTsKPiArCQlpZ3RfYXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcGZfbm9uYmxvY2soaW50IGk5MTUpCj4gK3sKPiAr CWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7Cj4gKwo+ICsJZm9yX2VhY2hf bW1hcF9vZmZzZXRfdHlwZSh0KSB7Cj4gKwkJdWludDMyX3QgKnB0cjsKPiArCj4gKwkJcHRyID0g X19nZW1fbW1hcF9vZmZzZXQoaTkxNSwgc3Bpbi0+aGFuZGxlLCAwLCA0MDk2LAo+ICsJCQkJCVBS T1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gKwkJCQkJdC0+dHlwZSk7Cj4gKwkJaWYgKCFwdHIpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZ3Rfc2V0X3RpbWVvdXQoMSwgdC0+bmFtZSk7Cj4gKwkJ Lyogbm8gc2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFz eW5jICovCj4gKwkJcHRyWzI1Nl0gPSAwOwo+ICsJCWlndF9yZXNldF90aW1lb3V0KCk7Cj4gKwo+ ICsJCW11bm1hcChwdHIsIDQwOTYpOwo+ICsJfQo+ICsKPiArCWlndF9zcGluX2ZyZWUoaTkxNSwg c3Bpbik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGk5MTUsIGludCB0 aW1lb3V0KQo+ICt7Cj4gKwljb25zdCBpbnQgbmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09S U19PTkxOKTsKPiArCV9BdG9taWMgdWludDMyX3QgKmhhbmRsZXM7Cj4gKwlzaXplX3QgbGVuID0g QUxJR04oKG5jcHVzICsgMSkgKiBzaXplb2YodWludDMyX3QpLCA0MDk2KTsKPiArCj4gKwloYW5k bGVzID0gbW1hcDY0KDAsIGxlbiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAt MSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0KGhhbmRsZXMgIT0gTUFQX0ZBSUxFRCk7Cj4gKwo+ICsJaWd0 X2ZvcmsoY2hpbGQsIG5jcHVzICsgMSkgewo+ICsJCWRvIHsKPiArCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9Owo+ICsJCQljb25zdCBpbnQgaSA9IDEgKyBy YW5kb20oKSAlIG5jcHVzOwo+ICsJCQl1aW50MzJfdCBvbGQ7Cj4gKwo+ICsJCQltbWFwX2FyZy5o YW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpOwo+ICsJCQltbWFwX2FyZy5mbGFncyA9IEk5 MTVfTU1BUF9PRkZTRVRfV0I7Cj4gKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tp XSwgbW1hcF9hcmcuaGFuZGxlKTsKClRoaXMgd2lsbCByZXF1aXJlIGFkZGluZyBsaWJhdG9taWMg dG8gdGhpcyBleGVjdXRhYmxlJ3MgZGVwZW5kZW5jaWVzCndpdGggbWVzb24uIExvb2sgdG8gaGFu ZGxpbmcgb2YgZ2VtX2NyZWF0ZS5jIGZvciBhbiBleGFtcGxlLgoKCi0tIApQZXRyaSBMYXR2YWxh CgoKCgo+ICsJCQlpb2N0bChpOTE1LCBEUk1fSU9DVExfR0VNX0NMT1NFLCAmb2xkKTsKPiArCj4g KwkJCWlmIChpb2N0bChpOTE1LAo+ICsJCQkJICBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUF9PRkZT RVQsCj4gKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKPiArCQkJCXZvaWQgKnB0cjsKPiArCj4g KwkJCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKPiArCQkJCQkgICAgIFBST1RfV1JJVEUsIE1BUF9T SEFSRUQsIGk5MTUsCj4gKwkJCQkJICAgICBtbWFwX2FyZy5vZmZzZXQpOwo+ICsJCQkJaWYgKHB0 ciAhPSBNQVBfRkFJTEVEKSB7Cj4gKwkJCQkJKih2b2xhdGlsZSB1aW50MzJfdCAqKXB0ciA9IDA7 Cj4gKwkJCQkJbXVubWFwKHB0ciwgNDA5Nik7Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCj4gKwkJfSB3 aGlsZSAoIVJFQURfT05DRShoYW5kbGVzWzBdKSk7Cj4gKwl9Cj4gKwo+ICsJc2xlZXAodGltZW91 dCk7Cj4gKwloYW5kbGVzWzBdID0gMTsKPiArCWlndF93YWl0Y2hpbGRyZW4oKTsKPiArCj4gKwlm b3IgKGludCBpID0gMTsgaSA8PSBuY3B1czsgaSsrKQo+ICsJCWlvY3RsKGk5MTUsIERSTV9JT0NU TF9HRU1fQ0xPU0UsIGhhbmRsZXNbaV0pOwo+ICsJbXVubWFwKGhhbmRsZXMsIGxlbik7Cj4gK30K PiArCj4gK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2FwX3U2NChfQXRvbWljKHVp bnQ2NF90KSAqcHRyLAo+ICsJCQkJCXVpbnQ2NF90IG9sZHZhbCwgdWludDY0X3QgbmV3dmFsKQo+ ICt7Cj4gKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xkdmFsLCBuZXd2 YWwpOwo+ICsJcmV0dXJuIG9sZHZhbDsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2NF90IGdldF9u cGFnZXMoX0F0b21pYyh1aW50NjRfdCkgKmdsb2JhbCwgdWludDY0X3QgbnBhZ2VzKQo+ICt7Cj4g Kwl1aW50NjRfdCB0cnksIG9sZCwgbWF4Owo+ICsKPiArCW1heCA9ICpnbG9iYWw7Cj4gKwlkbyB7 Cj4gKwkJb2xkID0gbWF4Owo+ICsJCXRyeSA9IDEgKyBucGFnZXMgJSAobWF4IC8gMik7Cj4gKwkJ bWF4IC09IHRyeTsKPiArCX0gd2hpbGUgKChtYXggPSBhdG9taWNfY29tcGFyZV9zd2FwX3U2NChn bG9iYWwsIG9sZCwgbWF4KSkgIT0gb2xkKTsKPiArCj4gKwlyZXR1cm4gdHJ5Owo+ICt9Cj4gKwo+ ICtzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKPiArCV9BdG9taWModWludDY0X3QpIG1heDsKPiArCWlu dCB0aW1lb3V0Owo+ICsJaW50IGk5MTU7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGNyZWF0ZV9p b2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgKmNyZWF0ZSkKPiArewo+ ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkx NV9HRU1fQ1JFQVRFLCBjcmVhdGUpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWlndF9hc3N1 bWUoZXJyICE9IDApOwo+ICsJfQo+ICsKPiArCWVycm5vID0gMDsKPiArCXJldHVybiBlcnI7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkICp0aHJlYWRfY2xlYXIodm9pZCAqZGF0YSkKPiArewo+ICsJ c3RydWN0IHRocmVhZF9jbGVhciAqYXJnID0gZGF0YTsKPiArCWNvbnN0IHN0cnVjdCBtbWFwX29m ZnNldCAqdDsKPiArCXVuc2lnbmVkIGxvbmcgY2hlY2tlZCA9IDA7Cj4gKwlpbnQgaTkxNSA9IGFy Zy0+aTkxNTsKPiArCj4gKwl0ID0gbW1hcF9vZmZzZXRfdHlwZXM7Cj4gKwlpZ3RfdW50aWxfdGlt ZW91dChhcmctPnRpbWVvdXQpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSBjcmVh dGUgPSB7fTsKPiArCQl1aW50NjRfdCBucGFnZXM7Cj4gKwkJdm9pZCAqcHRyOwo+ICsKPiArCQlu cGFnZXMgPSByYW5kb20oKTsKPiArCQlucGFnZXMgPDw9IDMyOwo+ICsJCW5wYWdlcyB8PSByYW5k b20oKTsKPiArCQlucGFnZXMgPSBnZXRfbnBhZ2VzKCZhcmctPm1heCwgbnBhZ2VzKTsKPiArCQlj cmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKPiArCj4gKwkJY3JlYXRlX2lvY3RsKGk5MTUsICZj cmVhdGUpOwo+ICsJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0ZS5oYW5kbGUs IDAsIGNyZWF0ZS5zaXplLAo+ICsJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gKwkJCQkJ dC0+dHlwZSk7Cj4gKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5hdWdo dHkgYXMgcG9zc2libGUgKi8KPiArCQlmb3IgKHVpbnQ2NF90IHBhZ2UgPSAwOyBwdHIgJiYgcGFn ZSA8IG5wYWdlczsgcGFnZSsrKSB7Cj4gKwkJCXVpbnQ2NF90IHhbOF0gPSB7Cj4gKwkJCQlwYWdl ICogNDA5NiArCj4gKwkJCQkJc2l6ZW9mKHgpICogKChwYWdlICUgKDQwOTYgLSBzaXplb2YoeCkp IC8gc2l6ZW9mKHgpKSkKPiArCQkJfTsKPiArCj4gKwkJCWlmIChwYWdlICYgMSkKPiArCQkJCWln dF9tZW1jcHlfZnJvbV93Yyh4LCBwdHIgKyB4WzBdLCBzaXplb2YoeCkpOwo+ICsJCQllbHNlCj4g KwkJCQltZW1jcHkoeCwgcHRyICsgeFswXSwgc2l6ZW9mKHgpKTsKPiArCj4gKwkJCWZvciAoaW50 IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4KTsgaSsrKQo+ICsJCQkJaWd0X2Fzc2VydF9lcV91NjQo eFtpXSwgMCk7Cj4gKwkJfQo+ICsJCWlmIChwdHIpCj4gKwkJCW11bm1hcChwdHIsIGNyZWF0ZS5z aXplKTsKPiArCQlnZW1fY2xvc2UoaTkxNSwgY3JlYXRlLmhhbmRsZSk7Cj4gKwkJY2hlY2tlZCAr PSBucGFnZXM7Cj4gKwo+ICsJCWF0b21pY19mZXRjaF9hZGQoJmFyZy0+bWF4LCBucGFnZXMpOwo+ ICsKPiArCQlpZiAoISgrK3QpLT5uYW1lKQo+ICsJCQl0ID0gbW1hcF9vZmZzZXRfdHlwZXM7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuICh2b2lkICopKHVpbnRwdHJfdCljaGVja2VkOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBhbHdheXNfY2xlYXIoaW50IGk5MTUsIGludCB0aW1lb3V0KQo+ICt7Cj4g KwlzdHJ1Y3QgdGhyZWFkX2NsZWFyIGFyZyA9IHsKPiArCQkuaTkxNSA9IGk5MTUsCj4gKwkJLnRp bWVvdXQgPSB0aW1lb3V0LAo+ICsJCS5tYXggPSBpbnRlbF9nZXRfYXZhaWxfcmFtX21iKCkgPDwg KDIwIC0gMTIpLCAvKiBpbiBwYWdlcyAqLwo+ICsJfTsKPiArCWNvbnN0IGludCBuY3B1cyA9IHN5 c2NvbmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOwo+ICsJdW5zaWduZWQgbG9uZyBjaGVja2VkOwo+ ICsJcHRocmVhZF90IHRocmVhZFtuY3B1c107Cj4gKwl2b2lkICpyZXN1bHQ7Cj4gKwo+ICsJZm9y IChpbnQgaSA9IDA7IGkgPCBuY3B1czsgaSsrKQo+ICsJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRb aV0sIE5VTEwsIHRocmVhZF9jbGVhciwgJmFyZyk7Cj4gKwo+ICsJY2hlY2tlZCA9IDA7Cj4gKwlm b3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKyspIHsKPiArCQlwdGhyZWFkX2pvaW4odGhyZWFk W2ldLCAmcmVzdWx0KTsKPiArCQljaGVja2VkICs9ICh1aW50cHRyX3QpcmVzdWx0Owo+ICsJfQo+ ICsJaWd0X2luZm8oIkNoZWNrZWQgJSdsdSBwYWdlIGFsbG9jYXRpb25zXG4iLCBjaGVja2VkKTsK PiArfQo+ICsKPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWludCBpOTE1Owo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQlpOTE1ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gKwkJ Z2VtX3JlcXVpcmVfbW1hcF9vZmZzZXQoaTkxNSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2Rlc2NyaWJl KCJWZXJpZnkgbWFwcGluZyB0byBpbnZhbGlkIGdlbSBvYmplY3RzIHdvbid0IGJlIGNyZWF0ZWQi KTsKPiArCWlndF9zdWJ0ZXN0X2YoImJhZC1vYmplY3QiKQo+ICsJCWJhZF9vYmplY3QoaTkxNSk7 Cj4gKwlpZ3Rfc3VidGVzdF9mKCJiYWQtZmxhZ3MiKQo+ICsJCWJhZF9mbGFncyhpOTE1KTsKPiAr Cj4gKwlpZ3RfZGVzY3JpYmUoIkNoZWNrIGJ1ZmZlciBvYmplY3QgbWFwcGluZyBwZXJzaXN0cyBh ZnRlciBnZW1fY2xvc2UiKTsKPiArCWlndF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCj4gKwkJYmFz aWNfdWFmKGk5MTUpOwo+ICsKPiArCWlndF9zdWJ0ZXN0X2YoImlzb2xhdGlvbiIpCj4gKwkJaXNv bGF0aW9uKGk5MTUpOwo+ICsJaWd0X3N1YnRlc3RfZigicGYtbm9uYmxvY2siKQo+ICsJCXBmX25v bmJsb2NrKGk5MTUpOwo+ICsKPiArCWlndF9kZXNjcmliZSgiQ2hlY2sgcmFjZSBiZXR3ZWVuIGNs b3NlIGFuZCBtbWFwIG9mZnNldCBiZXR3ZWVuIHRocmVhZHMiKTsKPiArCWlndF9zdWJ0ZXN0X2Yo ImNsb3NlLXJhY2UiKQo+ICsJCWNsb3NlX3JhY2UoaTkxNSwgMjApOwo+ICsKPiArCWlndF9zdWJ0 ZXN0X2YoImNsZWFyIikKPiArCQlhbHdheXNfY2xlYXIoaTkxNSwgMjApOwo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQljbG9zZShpOTE1KTsKPiArCX0KPiArfQo+IGRpZmYgLS1naXQgYS90ZXN0 cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gaW5kZXggMTg3ODhkNDRiLi4wNWRl YTFmNGUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNv bi5idWlsZAo+IEBAIC0xNzQsNiArMTc0LDcgQEAgaTkxNV9wcm9ncyA9IFsKPiAgCSdnZW1fbWVk aWFfdm1lJywKPiAgCSdnZW1fbW1hcCcsCj4gIAknZ2VtX21tYXBfZ3R0JywKPiArCSdnZW1fbW1h cF9vZmZzZXQnLAo+ICAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywKPiAgCSdnZW1fbW1h cF93YycsCj4gIAknZ2VtX3BhcnRpYWxfcHdyaXRlX3ByZWFkJywKPiAtLSAKPiAyLjI0LjAKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1k ZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A16C5C432C0 for ; Thu, 28 Nov 2019 13:38:12 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 80E492176D for ; Thu, 28 Nov 2019 13:38:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 80E492176D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E45926E2BE; Thu, 28 Nov 2019 13:38:11 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DCB56E0F1; Thu, 28 Nov 2019 13:38:10 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Nov 2019 05:38:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,253,1571727600"; d="scan'208";a="383826440" Received: from thrakatuluk.fi.intel.com (HELO thrakatuluk) ([10.237.68.154]) by orsmga005.jf.intel.com with ESMTP; 28 Nov 2019 05:38:08 -0800 Received: from platvala by thrakatuluk with local (Exim 4.91) (envelope-from ) id 1iaJzi-0003Er-NP; Thu, 28 Nov 2019 15:38:06 +0200 Date: Thu, 28 Nov 2019 15:38:06 +0200 From: Petri Latvala To: Chris Wilson Message-ID: <20191128133806.GU25209@platvala-desk.ger.corp.intel.com> References: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> <20191128125502.3886404-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191128125502.3886404-1-chris@chris-wilson.co.uk> X-Patchwork-Hint: comment User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [igt-dev] [PATCH i-g-t] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191128133806.zysVnRBVCdlq0qZ9zw7iTSgd2-LejT1T8qXSvIZvjXI@z> T24gVGh1LCBOb3YgMjgsIDIwMTkgYXQgMTI6NTU6MDJQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEZyb206IEx1a2FzeiBLYWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4K PiAKPiBGZXcgc2ltcGxlIHRlc3RzIHdoaWNoIHRyaWVzIHRvIGNyZWF0ZSAvIG1tYXAgYnVmZmVy IG9iamVjdHMKPiB1c2luZyBHRU1fTU1BUF9PRkZTRVQgdUFQSS4KPiAKPiB2MjogY2hhbmdlIGZy b20gV0MgLT4gV0IgKGFjY29yZGluZyB0byBDaHJpcyByZXZpZXcgY29tbWVudCkKPiB2MzogYWRk IG1tYXAtb2Zmc2V0LWNsb3NlLXJhY2UgdGVzdAo+IAo+IFNpZ25lZC1vZmYtYnk6IEx1a2FzeiBL YWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBaYmln bmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KPiBDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFZhbnNoaWRoYXIg S29uZGEgPHZhbnNoaWRoYXIuci5rb25kYUBpbnRlbC5jb20+Cj4gLS0tCj4gUmVxdWlyZWQgKGxv b2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBpZGVhcyk6Cj4gIHNpemUgLSBjaGVjayB3 ZSBjYW4gaGFuZGxlIG9iamVjdHMgYmV5b25kIGEgcmVhc29uYWJsZSBsaW1pdCAobm90ZSB0aGUK PiBrZXJuZWwgZmFpbHMgYXQgYmV5b25kIFJBTSkKPiAgZm9ya2VkIC0gaW50ZXJhY3Rpb25zIHdp dGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MKPiAgICAgICAgICAgdGhyZWFk cy9wcm9jZXNzZXMKPiAgc3VzcGVuZCAtIGNoZWNrIHNwZWVkIGlzIGNvbnNpc3RlbnQgYmVmb3Jl L2FmdGVyIHN1c3BlbmQKPiAgY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBjaGVja2VyIGJldHdl ZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Cj4gLS0tCj4gIHRlc3RzL01ha2VmaWxl LnNvdXJjZXMgICAgICAgfCAgIDMgKwo+ICB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jIHwg NDE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHRlc3RzL21lc29uLmJ1 aWxkICAgICAgICAgICAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQyMCBpbnNlcnRpb25z KCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCj4g Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCj4gaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Cj4gLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMzI1 LDYgKzMyNSw5IEBAIGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKPiAgVEVTVFNf cHJvZ3MgKz0gZ2VtX21tYXBfZ3R0Cj4gIGdlbV9tbWFwX2d0dF9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9ndHQuYwo+ICAKPiArVEVTVFNfcHJvZ3MgKz0gZ2VtX21tYXBfb2Zmc2V0Cj4gK2dlbV9t bWFwX29mZnNldF9TT1VSQ0VTID0gaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwo+ICsKPiAgVEVTVFNf cHJvZ3MgKz0gZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24KPiAgZ2VtX21tYXBfb2Zmc2V0X2V4 aGF1c3Rpb25fU09VUkNFUyA9IGk5MTUvZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24uYwo+ICAK PiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYyBiL3Rlc3RzL2k5MTUv Z2VtX21tYXBfb2Zmc2V0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MC4uZTc1YzNmZDE3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX21tYXBf b2Zmc2V0LmMKPiBAQCAtMCwwICsxLDQxNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAx OSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICsjaW5jbHVk ZSA8c3RkYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjaW5jbHVkZSA8c3lz L2lvY3RsLmg+Cj4gKyNpbmNsdWRlICJkcm0uaCIKPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiAr I2luY2x1ZGUgImlndF94ODYuaCIKPiArCj4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJCYXNpYyBN TUFQX09GRlNFVCBJT0NUTCB0ZXN0cyBmb3IgbWVtIHJlZ2lvbnNcbiIpOwo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBtbWFwX29mZnNldCB7Cj4gKwljb25zdCBjaGFyICpuYW1lOwo+ICsJdW5z aWduZWQgaW50IHR5cGU7Cj4gKwl1bnNpZ25lZCBpbnQgZG9tYWluOwo+ICt9IG1tYXBfb2Zmc2V0 X3R5cGVzW10gPSB7Cj4gKwl7ICJndHQiLCBJOTE1X01NQVBfT0ZGU0VUX0dUVCwgSTkxNV9HRU1f RE9NQUlOX0dUVCB9LAo+ICsJeyAid2IiLCBJOTE1X01NQVBfT0ZGU0VUX1dCLCBJOTE1X0dFTV9E T01BSU5fQ1BVIH0sCj4gKwl7ICJ3YyIsIEk5MTVfTU1BUF9PRkZTRVRfV0MsIEk5MTVfR0VNX0RP TUFJTl9XQyB9LAo+ICsJeyAidWMiLCBJOTE1X01NQVBfT0ZGU0VUX1VDLCBJOTE1X0dFTV9ET01B SU5fV0MgfSwKPiArCXt9LAo+ICt9Owo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9tbWFwX29mZnNl dF90eXBlKF9fdCkgXAo+ICsJZm9yIChjb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKl9fdCA9IG1t YXBfb2Zmc2V0X3R5cGVzOyBcCj4gKwkgICAgIChfX3QpLT5uYW1lOyBcCj4gKwkgICAgIChfX3Qp KyspCj4gKwo+ICtzdGF0aWMgaW50IG1tYXBfb2Zmc2V0X2lvY3RsKGludCBpOTE1LCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX21tYXBfb2Zmc2V0ICphcmcpCj4gK3sKPiArCWludCBlcnIgPSAwOwo+ICsK PiArCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULCBh cmcpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWlndF9hc3N1bWUoZXJyKTsKPiArCX0KPiAr Cj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBi YWRfb2JqZWN0KGludCBpOTE1KQo+ICt7Cj4gKwl1aW50MzJfdCByZWFsX2hhbmRsZTsKPiArCXVp bnQzMl90IGhhbmRsZXNbMjBdOwo+ICsJaW50IGkgPSAwOwo+ICsKPiArCXJlYWxfaGFuZGxlID0g Z2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKPiArCj4gKwloYW5kbGVzW2krK10gPSAweGRlYWRiZWVm Owo+ICsJZm9yIChpbnQgYml0ID0gMDsgYml0IDwgMTY7IGJpdCsrKQo+ICsJCWhhbmRsZXNbaSsr XSA9IHJlYWxfaGFuZGxlIHwgKDEgPDwgKGJpdCArIDE2KSk7Cj4gKwloYW5kbGVzW2ldID0gcmVh bF9oYW5kbGUgKyAxOwo+ICsKPiArCWZvciAoOyBpID49IDA7IGktLSkgewo+ICsJCXN0cnVjdCBk cm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgYXJnID0gewo+ICsJCQkuaGFuZGxlID0gaGFuZGxlc1tp XSwKPiArCQkJLmZsYWdzID0gSTkxNV9NTUFQX09GRlNFVF9XQiwKPiArCQl9Owo+ICsKPiArCQlp Z3RfZGVidWcoIlRyeWluZyBNTUFQIElPQ1RMIHdpdGggaGFuZGxlICV4XG4iLAo+ICsJCQkgIGhh bmRsZXNbaV0pOwo+ICsJCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9jdGwoaTkxNSwgJmFy ZyksCj4gKwkJCSAgICAgIC1FTk9FTlQpOwo+ICsJfQo+ICsKPiArCWdlbV9jbG9zZShpOTE1LCBy ZWFsX2hhbmRsZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGJhZF9mbGFncyhpbnQgaTkxNSkK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7Cj4gKwkJLmhh bmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5NiksCj4gKwkJLmZsYWdzID0gLTF1bGwsCj4gKwl9 Owo+ICsKPiArCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9jdGwoaTkxNSwgJmFyZyksIC1F SU5WQUwpOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIGFyZy5oYW5kbGUpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBiYXNpY191YWYoaW50IGk5MTUpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90IG9ial9z aXplID0gNDA5NjsKPiArCj4gKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKPiArCQl1 aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIG9ial9zaXplKTsKPiArCQl1aW50OF90 ICpleHBlY3RlZCwgKmJ1ZiwgKmFkZHI7Cj4gKwo+ICsJCWFkZHIgPSBfX2dlbV9tbWFwX29mZnNl dChpOTE1LCBoYW5kbGUsIDAsIG9ial9zaXplLAo+ICsJCQkJCSBQUk9UX1JFQUQgfCBQUk9UX1dS SVRFLAo+ICsJCQkJCSB0LT50eXBlKTsKPiArCQlpZiAoIWFkZHIpIHsKPiArCQkJZ2VtX2Nsb3Nl KGk5MTUsIGhhbmRsZSk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJZXhwZWN0ZWQg PSBjYWxsb2Mob2JqX3NpemUsIHNpemVvZigqZXhwZWN0ZWQpKTsKPiArCQlnZW1fc2V0X2RvbWFp bihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7Cj4gKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChh ZGRyLCBleHBlY3RlZCwgb2JqX3NpemUpID09IDAsCj4gKwkJCSAgICAgIm1tYXAoJXMpIG5vdCBj bGVhciBvbiBnZW1fY3JlYXRlKClcbiIsCj4gKwkJCSAgICAgdC0+bmFtZSk7Cj4gKwkJZnJlZShl eHBlY3RlZCk7Cj4gKwo+ICsJCWJ1ZiA9IGNhbGxvYyhvYmpfc2l6ZSwgc2l6ZW9mKCpidWYpKTsK PiArCQltZW1zZXQoYnVmICsgMTAyNCwgMHgwMSwgMTAyNCk7Cj4gKwkJZ2VtX3dyaXRlKGk5MTUs IGhhbmRsZSwgMCwgYnVmLCBvYmpfc2l6ZSk7Cj4gKwkJZ2VtX3NldF9kb21haW4oaTkxNSwgaGFu ZGxlLCB0LT5kb21haW4sIDApOwo+ICsJCWlndF9hc3NlcnRfZihtZW1jbXAoYnVmLCBhZGRyLCBv Ympfc2l6ZSkgPT0gMCwKPiArCQkJICAgICAibW1hcCglcykgbm90IGNvaGVyZW50IHdpdGggZ2Vt X3dyaXRlKClcbiIsCj4gKwkJCSAgICAgdC0+bmFtZSk7Cj4gKwo+ICsJCWdlbV9zZXRfZG9tYWlu KGk5MTUsIGhhbmRsZSwgdC0+ZG9tYWluLCB0LT5kb21haW4pOwo+ICsJCW1lbXNldChhZGRyICsg MjA0OCwgMHhmZiwgMTAyNCk7Cj4gKwkJZ2VtX3JlYWQoaTkxNSwgaGFuZGxlLCAwLCBidWYsIG9i al9zaXplKTsKPiArCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7 Cj4gKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChidWYsIGFkZHIsIG9ial9zaXplKSA9PSAwLAo+ICsJ CQkgICAgICJtbWFwKCVzKSBub3QgY29oZXJlbnQgd2l0aCBnZW1fcmVhZCgpXG4iLAo+ICsJCQkg ICAgIHQtPm5hbWUpOwo+ICsKPiArCQlnZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKPiArCQlpZ3Rf YXNzZXJ0X2YobWVtY21wKGJ1ZiwgYWRkciwgb2JqX3NpemUpID09IDAsCj4gKwkJCSAgICAgIm1t YXAoJXMpIG5vdCByZXNpZGVudCBhZnRlciBnZW1fY2xvc2UoKVxuIiwKPiArCQkJICAgICB0LT5u YW1lKTsKPiArCQlmcmVlKGJ1Zik7Cj4gKwo+ICsJCWlndF9kZWJ1ZygiVGVzdGluZyB1bm1hcHBp bmdcbiIpOwo+ICsJCW11bm1hcChhZGRyLCBvYmpfc2l6ZSk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGlzb2xhdGlvbihpbnQgaTkxNSkKPiArewo+ICsJZm9yX2VhY2hfbW1hcF9vZmZz ZXRfdHlwZSh0KSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2Fy ZyA9IHsKPiArCQkJLmZsYWdzID0gdC0+dHlwZQo+ICsJCX07Cj4gKwkJaW50IEEgPSBnZW1fcmVv cGVuX2RyaXZlcihpOTE1KTsKPiArCQlpbnQgQiA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOwo+ ICsJCXVpbnQ2NF90IG9mZnNldF9hLCBvZmZzZXRfYjsKPiArCQl1aW50MzJfdCBhLCBiOwo+ICsJ CXZvaWQgKnB0cjsKPiArCj4gKwkJYSA9IGdlbV9jcmVhdGUoQSwgNDA5Nik7Cj4gKwkJYiA9IGdl bV9vcGVuKEIsIGdlbV9mbGluayhBLCBhKSk7Cj4gKwo+ICsJCW1tYXBfYXJnLmhhbmRsZSA9IGE7 Cj4gKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1LCAmbW1hcF9hcmcpLCAw KTsKPiArCQlvZmZzZXRfYSA9IG1tYXBfYXJnLm9mZnNldDsKPiArCj4gKwkJbW1hcF9hcmcuaGFu ZGxlID0gYjsKPiArCQlpZ3RfYXNzZXJ0X2VxKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFw X2FyZyksIDApOwo+ICsJCW9mZnNldF9iID0gbW1hcF9hcmcub2Zmc2V0Owo+ICsKPiArCQlpZ3Rf aW5mbygiQVslc106IHtmZDolZCwgaGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKPiAr CQkJIHQtPm5hbWUsIEEsIGEsIG9mZnNldF9hKTsKPiArCQlpZ3RfaW5mbygiQlslc106IHtmZDol ZCwgaGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKPiArCQkJIHQtPm5hbWUsIEIsIGIs IG9mZnNldF9iKTsKPiArCj4gKwkJY2xvc2UoQik7Cj4gKwo+ICsJCXB0ciA9IG1tYXA2NCgwLCA0 MDk2LCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIEEsIG9mZnNldF9hKTsKPiArCQlpZ3RfYXNzZXJ0 KHB0ciAhPSBNQVBfRkFJTEVEKTsKPiArCQltdW5tYXAocHRyLCA0MDk2KTsKPiArCj4gKwkJY2xv c2UoQSk7Cj4gKwo+ICsJCXB0ciA9IG1tYXA2NCgwLCA0MDk2LCBQUk9UX1JFQUQsIE1BUF9TSEFS RUQsIEEsIG9mZnNldF9hKTsKPiArCQlpZ3RfYXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcGZfbm9uYmxvY2soaW50IGk5MTUpCj4gK3sKPiAr CWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7Cj4gKwo+ICsJZm9yX2VhY2hf bW1hcF9vZmZzZXRfdHlwZSh0KSB7Cj4gKwkJdWludDMyX3QgKnB0cjsKPiArCj4gKwkJcHRyID0g X19nZW1fbW1hcF9vZmZzZXQoaTkxNSwgc3Bpbi0+aGFuZGxlLCAwLCA0MDk2LAo+ICsJCQkJCVBS T1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gKwkJCQkJdC0+dHlwZSk7Cj4gKwkJaWYgKCFwdHIpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZ3Rfc2V0X3RpbWVvdXQoMSwgdC0+bmFtZSk7Cj4gKwkJ Lyogbm8gc2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFz eW5jICovCj4gKwkJcHRyWzI1Nl0gPSAwOwo+ICsJCWlndF9yZXNldF90aW1lb3V0KCk7Cj4gKwo+ ICsJCW11bm1hcChwdHIsIDQwOTYpOwo+ICsJfQo+ICsKPiArCWlndF9zcGluX2ZyZWUoaTkxNSwg c3Bpbik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGk5MTUsIGludCB0 aW1lb3V0KQo+ICt7Cj4gKwljb25zdCBpbnQgbmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09S U19PTkxOKTsKPiArCV9BdG9taWMgdWludDMyX3QgKmhhbmRsZXM7Cj4gKwlzaXplX3QgbGVuID0g QUxJR04oKG5jcHVzICsgMSkgKiBzaXplb2YodWludDMyX3QpLCA0MDk2KTsKPiArCj4gKwloYW5k bGVzID0gbW1hcDY0KDAsIGxlbiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAt MSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0KGhhbmRsZXMgIT0gTUFQX0ZBSUxFRCk7Cj4gKwo+ICsJaWd0 X2ZvcmsoY2hpbGQsIG5jcHVzICsgMSkgewo+ICsJCWRvIHsKPiArCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9Owo+ICsJCQljb25zdCBpbnQgaSA9IDEgKyBy YW5kb20oKSAlIG5jcHVzOwo+ICsJCQl1aW50MzJfdCBvbGQ7Cj4gKwo+ICsJCQltbWFwX2FyZy5o YW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpOwo+ICsJCQltbWFwX2FyZy5mbGFncyA9IEk5 MTVfTU1BUF9PRkZTRVRfV0I7Cj4gKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tp XSwgbW1hcF9hcmcuaGFuZGxlKTsKClRoaXMgd2lsbCByZXF1aXJlIGFkZGluZyBsaWJhdG9taWMg dG8gdGhpcyBleGVjdXRhYmxlJ3MgZGVwZW5kZW5jaWVzCndpdGggbWVzb24uIExvb2sgdG8gaGFu ZGxpbmcgb2YgZ2VtX2NyZWF0ZS5jIGZvciBhbiBleGFtcGxlLgoKCi0tIApQZXRyaSBMYXR2YWxh CgoKCgo+ICsJCQlpb2N0bChpOTE1LCBEUk1fSU9DVExfR0VNX0NMT1NFLCAmb2xkKTsKPiArCj4g KwkJCWlmIChpb2N0bChpOTE1LAo+ICsJCQkJICBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUF9PRkZT RVQsCj4gKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKPiArCQkJCXZvaWQgKnB0cjsKPiArCj4g KwkJCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKPiArCQkJCQkgICAgIFBST1RfV1JJVEUsIE1BUF9T SEFSRUQsIGk5MTUsCj4gKwkJCQkJICAgICBtbWFwX2FyZy5vZmZzZXQpOwo+ICsJCQkJaWYgKHB0 ciAhPSBNQVBfRkFJTEVEKSB7Cj4gKwkJCQkJKih2b2xhdGlsZSB1aW50MzJfdCAqKXB0ciA9IDA7 Cj4gKwkJCQkJbXVubWFwKHB0ciwgNDA5Nik7Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCj4gKwkJfSB3 aGlsZSAoIVJFQURfT05DRShoYW5kbGVzWzBdKSk7Cj4gKwl9Cj4gKwo+ICsJc2xlZXAodGltZW91 dCk7Cj4gKwloYW5kbGVzWzBdID0gMTsKPiArCWlndF93YWl0Y2hpbGRyZW4oKTsKPiArCj4gKwlm b3IgKGludCBpID0gMTsgaSA8PSBuY3B1czsgaSsrKQo+ICsJCWlvY3RsKGk5MTUsIERSTV9JT0NU TF9HRU1fQ0xPU0UsIGhhbmRsZXNbaV0pOwo+ICsJbXVubWFwKGhhbmRsZXMsIGxlbik7Cj4gK30K PiArCj4gK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2FwX3U2NChfQXRvbWljKHVp bnQ2NF90KSAqcHRyLAo+ICsJCQkJCXVpbnQ2NF90IG9sZHZhbCwgdWludDY0X3QgbmV3dmFsKQo+ ICt7Cj4gKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xkdmFsLCBuZXd2 YWwpOwo+ICsJcmV0dXJuIG9sZHZhbDsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2NF90IGdldF9u cGFnZXMoX0F0b21pYyh1aW50NjRfdCkgKmdsb2JhbCwgdWludDY0X3QgbnBhZ2VzKQo+ICt7Cj4g Kwl1aW50NjRfdCB0cnksIG9sZCwgbWF4Owo+ICsKPiArCW1heCA9ICpnbG9iYWw7Cj4gKwlkbyB7 Cj4gKwkJb2xkID0gbWF4Owo+ICsJCXRyeSA9IDEgKyBucGFnZXMgJSAobWF4IC8gMik7Cj4gKwkJ bWF4IC09IHRyeTsKPiArCX0gd2hpbGUgKChtYXggPSBhdG9taWNfY29tcGFyZV9zd2FwX3U2NChn bG9iYWwsIG9sZCwgbWF4KSkgIT0gb2xkKTsKPiArCj4gKwlyZXR1cm4gdHJ5Owo+ICt9Cj4gKwo+ ICtzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKPiArCV9BdG9taWModWludDY0X3QpIG1heDsKPiArCWlu dCB0aW1lb3V0Owo+ICsJaW50IGk5MTU7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGNyZWF0ZV9p b2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgKmNyZWF0ZSkKPiArewo+ ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkx NV9HRU1fQ1JFQVRFLCBjcmVhdGUpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWlndF9hc3N1 bWUoZXJyICE9IDApOwo+ICsJfQo+ICsKPiArCWVycm5vID0gMDsKPiArCXJldHVybiBlcnI7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkICp0aHJlYWRfY2xlYXIodm9pZCAqZGF0YSkKPiArewo+ICsJ c3RydWN0IHRocmVhZF9jbGVhciAqYXJnID0gZGF0YTsKPiArCWNvbnN0IHN0cnVjdCBtbWFwX29m ZnNldCAqdDsKPiArCXVuc2lnbmVkIGxvbmcgY2hlY2tlZCA9IDA7Cj4gKwlpbnQgaTkxNSA9IGFy Zy0+aTkxNTsKPiArCj4gKwl0ID0gbW1hcF9vZmZzZXRfdHlwZXM7Cj4gKwlpZ3RfdW50aWxfdGlt ZW91dChhcmctPnRpbWVvdXQpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSBjcmVh dGUgPSB7fTsKPiArCQl1aW50NjRfdCBucGFnZXM7Cj4gKwkJdm9pZCAqcHRyOwo+ICsKPiArCQlu cGFnZXMgPSByYW5kb20oKTsKPiArCQlucGFnZXMgPDw9IDMyOwo+ICsJCW5wYWdlcyB8PSByYW5k b20oKTsKPiArCQlucGFnZXMgPSBnZXRfbnBhZ2VzKCZhcmctPm1heCwgbnBhZ2VzKTsKPiArCQlj cmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKPiArCj4gKwkJY3JlYXRlX2lvY3RsKGk5MTUsICZj cmVhdGUpOwo+ICsJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0ZS5oYW5kbGUs IDAsIGNyZWF0ZS5zaXplLAo+ICsJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gKwkJCQkJ dC0+dHlwZSk7Cj4gKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5hdWdo dHkgYXMgcG9zc2libGUgKi8KPiArCQlmb3IgKHVpbnQ2NF90IHBhZ2UgPSAwOyBwdHIgJiYgcGFn ZSA8IG5wYWdlczsgcGFnZSsrKSB7Cj4gKwkJCXVpbnQ2NF90IHhbOF0gPSB7Cj4gKwkJCQlwYWdl ICogNDA5NiArCj4gKwkJCQkJc2l6ZW9mKHgpICogKChwYWdlICUgKDQwOTYgLSBzaXplb2YoeCkp IC8gc2l6ZW9mKHgpKSkKPiArCQkJfTsKPiArCj4gKwkJCWlmIChwYWdlICYgMSkKPiArCQkJCWln dF9tZW1jcHlfZnJvbV93Yyh4LCBwdHIgKyB4WzBdLCBzaXplb2YoeCkpOwo+ICsJCQllbHNlCj4g KwkJCQltZW1jcHkoeCwgcHRyICsgeFswXSwgc2l6ZW9mKHgpKTsKPiArCj4gKwkJCWZvciAoaW50 IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4KTsgaSsrKQo+ICsJCQkJaWd0X2Fzc2VydF9lcV91NjQo eFtpXSwgMCk7Cj4gKwkJfQo+ICsJCWlmIChwdHIpCj4gKwkJCW11bm1hcChwdHIsIGNyZWF0ZS5z aXplKTsKPiArCQlnZW1fY2xvc2UoaTkxNSwgY3JlYXRlLmhhbmRsZSk7Cj4gKwkJY2hlY2tlZCAr PSBucGFnZXM7Cj4gKwo+ICsJCWF0b21pY19mZXRjaF9hZGQoJmFyZy0+bWF4LCBucGFnZXMpOwo+ ICsKPiArCQlpZiAoISgrK3QpLT5uYW1lKQo+ICsJCQl0ID0gbW1hcF9vZmZzZXRfdHlwZXM7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuICh2b2lkICopKHVpbnRwdHJfdCljaGVja2VkOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBhbHdheXNfY2xlYXIoaW50IGk5MTUsIGludCB0aW1lb3V0KQo+ICt7Cj4g KwlzdHJ1Y3QgdGhyZWFkX2NsZWFyIGFyZyA9IHsKPiArCQkuaTkxNSA9IGk5MTUsCj4gKwkJLnRp bWVvdXQgPSB0aW1lb3V0LAo+ICsJCS5tYXggPSBpbnRlbF9nZXRfYXZhaWxfcmFtX21iKCkgPDwg KDIwIC0gMTIpLCAvKiBpbiBwYWdlcyAqLwo+ICsJfTsKPiArCWNvbnN0IGludCBuY3B1cyA9IHN5 c2NvbmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOwo+ICsJdW5zaWduZWQgbG9uZyBjaGVja2VkOwo+ ICsJcHRocmVhZF90IHRocmVhZFtuY3B1c107Cj4gKwl2b2lkICpyZXN1bHQ7Cj4gKwo+ICsJZm9y IChpbnQgaSA9IDA7IGkgPCBuY3B1czsgaSsrKQo+ICsJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRb aV0sIE5VTEwsIHRocmVhZF9jbGVhciwgJmFyZyk7Cj4gKwo+ICsJY2hlY2tlZCA9IDA7Cj4gKwlm b3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKyspIHsKPiArCQlwdGhyZWFkX2pvaW4odGhyZWFk W2ldLCAmcmVzdWx0KTsKPiArCQljaGVja2VkICs9ICh1aW50cHRyX3QpcmVzdWx0Owo+ICsJfQo+ ICsJaWd0X2luZm8oIkNoZWNrZWQgJSdsdSBwYWdlIGFsbG9jYXRpb25zXG4iLCBjaGVja2VkKTsK PiArfQo+ICsKPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWludCBpOTE1Owo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQlpOTE1ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gKwkJ Z2VtX3JlcXVpcmVfbW1hcF9vZmZzZXQoaTkxNSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2Rlc2NyaWJl KCJWZXJpZnkgbWFwcGluZyB0byBpbnZhbGlkIGdlbSBvYmplY3RzIHdvbid0IGJlIGNyZWF0ZWQi KTsKPiArCWlndF9zdWJ0ZXN0X2YoImJhZC1vYmplY3QiKQo+ICsJCWJhZF9vYmplY3QoaTkxNSk7 Cj4gKwlpZ3Rfc3VidGVzdF9mKCJiYWQtZmxhZ3MiKQo+ICsJCWJhZF9mbGFncyhpOTE1KTsKPiAr Cj4gKwlpZ3RfZGVzY3JpYmUoIkNoZWNrIGJ1ZmZlciBvYmplY3QgbWFwcGluZyBwZXJzaXN0cyBh ZnRlciBnZW1fY2xvc2UiKTsKPiArCWlndF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCj4gKwkJYmFz aWNfdWFmKGk5MTUpOwo+ICsKPiArCWlndF9zdWJ0ZXN0X2YoImlzb2xhdGlvbiIpCj4gKwkJaXNv bGF0aW9uKGk5MTUpOwo+ICsJaWd0X3N1YnRlc3RfZigicGYtbm9uYmxvY2siKQo+ICsJCXBmX25v bmJsb2NrKGk5MTUpOwo+ICsKPiArCWlndF9kZXNjcmliZSgiQ2hlY2sgcmFjZSBiZXR3ZWVuIGNs b3NlIGFuZCBtbWFwIG9mZnNldCBiZXR3ZWVuIHRocmVhZHMiKTsKPiArCWlndF9zdWJ0ZXN0X2Yo ImNsb3NlLXJhY2UiKQo+ICsJCWNsb3NlX3JhY2UoaTkxNSwgMjApOwo+ICsKPiArCWlndF9zdWJ0 ZXN0X2YoImNsZWFyIikKPiArCQlhbHdheXNfY2xlYXIoaTkxNSwgMjApOwo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQljbG9zZShpOTE1KTsKPiArCX0KPiArfQo+IGRpZmYgLS1naXQgYS90ZXN0 cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gaW5kZXggMTg3ODhkNDRiLi4wNWRl YTFmNGUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNv bi5idWlsZAo+IEBAIC0xNzQsNiArMTc0LDcgQEAgaTkxNV9wcm9ncyA9IFsKPiAgCSdnZW1fbWVk aWFfdm1lJywKPiAgCSdnZW1fbW1hcCcsCj4gIAknZ2VtX21tYXBfZ3R0JywKPiArCSdnZW1fbW1h cF9vZmZzZXQnLAo+ICAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywKPiAgCSdnZW1fbW1h cF93YycsCj4gIAknZ2VtX3BhcnRpYWxfcHdyaXRlX3ByZWFkJywKPiAtLSAKPiAyLjI0LjAKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1k ZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 28 Nov 2019 15:38:06 +0200 From: Petri Latvala Message-ID: <20191128133806.GU25209@platvala-desk.ger.corp.intel.com> References: <20191126172556.21805-4-zbigniew.kempczynski@intel.com> <20191128125502.3886404-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191128125502.3886404-1-chris@chris-wilson.co.uk> Subject: Re: [igt-dev] [PATCH i-g-t] tests/i915/gem_mmap_offset: Add new API test for gem_mmap_offset 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: Chris Wilson Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org List-ID: T24gVGh1LCBOb3YgMjgsIDIwMTkgYXQgMTI6NTU6MDJQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEZyb206IEx1a2FzeiBLYWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4K PiAKPiBGZXcgc2ltcGxlIHRlc3RzIHdoaWNoIHRyaWVzIHRvIGNyZWF0ZSAvIG1tYXAgYnVmZmVy IG9iamVjdHMKPiB1c2luZyBHRU1fTU1BUF9PRkZTRVQgdUFQSS4KPiAKPiB2MjogY2hhbmdlIGZy b20gV0MgLT4gV0IgKGFjY29yZGluZyB0byBDaHJpcyByZXZpZXcgY29tbWVudCkKPiB2MzogYWRk IG1tYXAtb2Zmc2V0LWNsb3NlLXJhY2UgdGVzdAo+IAo+IFNpZ25lZC1vZmYtYnk6IEx1a2FzeiBL YWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBaYmln bmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KPiBDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFZhbnNoaWRoYXIg S29uZGEgPHZhbnNoaWRoYXIuci5rb25kYUBpbnRlbC5jb20+Cj4gLS0tCj4gUmVxdWlyZWQgKGxv b2sgdG8gZ2VtX21tYXBfKGd0dCx3YyxjcHUpIGZvciBpZGVhcyk6Cj4gIHNpemUgLSBjaGVjayB3 ZSBjYW4gaGFuZGxlIG9iamVjdHMgYmV5b25kIGEgcmVhc29uYWJsZSBsaW1pdCAobm90ZSB0aGUK PiBrZXJuZWwgZmFpbHMgYXQgYmV5b25kIFJBTSkKPiAgZm9ya2VkIC0gaW50ZXJhY3Rpb25zIHdp dGggcGFnZWZhdWx0ICsgbmV3IG1tYXBfb2Zmc2V0cyBhY3Jvc3MKPiAgICAgICAgICAgdGhyZWFk cy9wcm9jZXNzZXMKPiAgc3VzcGVuZCAtIGNoZWNrIHNwZWVkIGlzIGNvbnNpc3RlbnQgYmVmb3Jl L2FmdGVyIHN1c3BlbmQKPiAgY29oZXJlbmN5IC0gY29tYmluYXRvcmlhbCBjaGVja2VyIGJldHdl ZW4gYWxsIHBvaW50ZXIgdHlwZXMsIHBydyBhbmQgZ3B1Cj4gLS0tCj4gIHRlc3RzL01ha2VmaWxl LnNvdXJjZXMgICAgICAgfCAgIDMgKwo+ICB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jIHwg NDE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHRlc3RzL21lc29uLmJ1 aWxkICAgICAgICAgICAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQyMCBpbnNlcnRpb25z KCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9pOTE1L2dlbV9tbWFwX29mZnNldC5jCj4g Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCj4gaW5kZXggYTIxMTg1MWNmLi5kZGJjNjliYzggMTAwNjQ0Cj4gLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiBAQCAtMzI1 LDYgKzMyNSw5IEBAIGdlbV9tbWFwX1NPVVJDRVMgPSBpOTE1L2dlbV9tbWFwLmMKPiAgVEVTVFNf cHJvZ3MgKz0gZ2VtX21tYXBfZ3R0Cj4gIGdlbV9tbWFwX2d0dF9TT1VSQ0VTID0gaTkxNS9nZW1f bW1hcF9ndHQuYwo+ICAKPiArVEVTVFNfcHJvZ3MgKz0gZ2VtX21tYXBfb2Zmc2V0Cj4gK2dlbV9t bWFwX29mZnNldF9TT1VSQ0VTID0gaTkxNS9nZW1fbW1hcF9vZmZzZXQuYwo+ICsKPiAgVEVTVFNf cHJvZ3MgKz0gZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24KPiAgZ2VtX21tYXBfb2Zmc2V0X2V4 aGF1c3Rpb25fU09VUkNFUyA9IGk5MTUvZ2VtX21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24uYwo+ICAK PiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcF9vZmZzZXQuYyBiL3Rlc3RzL2k5MTUv Z2VtX21tYXBfb2Zmc2V0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MC4uZTc1YzNmZDE3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX21tYXBf b2Zmc2V0LmMKPiBAQCAtMCwwICsxLDQxNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAx OSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDxlcnJuby5oPgo+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICsjaW5jbHVk ZSA8c3RkYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsjaW5jbHVkZSA8c3lz L2lvY3RsLmg+Cj4gKyNpbmNsdWRlICJkcm0uaCIKPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiAr I2luY2x1ZGUgImlndF94ODYuaCIKPiArCj4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJCYXNpYyBN TUFQX09GRlNFVCBJT0NUTCB0ZXN0cyBmb3IgbWVtIHJlZ2lvbnNcbiIpOwo+ICsKPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBtbWFwX29mZnNldCB7Cj4gKwljb25zdCBjaGFyICpuYW1lOwo+ICsJdW5z aWduZWQgaW50IHR5cGU7Cj4gKwl1bnNpZ25lZCBpbnQgZG9tYWluOwo+ICt9IG1tYXBfb2Zmc2V0 X3R5cGVzW10gPSB7Cj4gKwl7ICJndHQiLCBJOTE1X01NQVBfT0ZGU0VUX0dUVCwgSTkxNV9HRU1f RE9NQUlOX0dUVCB9LAo+ICsJeyAid2IiLCBJOTE1X01NQVBfT0ZGU0VUX1dCLCBJOTE1X0dFTV9E T01BSU5fQ1BVIH0sCj4gKwl7ICJ3YyIsIEk5MTVfTU1BUF9PRkZTRVRfV0MsIEk5MTVfR0VNX0RP TUFJTl9XQyB9LAo+ICsJeyAidWMiLCBJOTE1X01NQVBfT0ZGU0VUX1VDLCBJOTE1X0dFTV9ET01B SU5fV0MgfSwKPiArCXt9LAo+ICt9Owo+ICsKPiArI2RlZmluZSBmb3JfZWFjaF9tbWFwX29mZnNl dF90eXBlKF9fdCkgXAo+ICsJZm9yIChjb25zdCBzdHJ1Y3QgbW1hcF9vZmZzZXQgKl9fdCA9IG1t YXBfb2Zmc2V0X3R5cGVzOyBcCj4gKwkgICAgIChfX3QpLT5uYW1lOyBcCj4gKwkgICAgIChfX3Qp KyspCj4gKwo+ICtzdGF0aWMgaW50IG1tYXBfb2Zmc2V0X2lvY3RsKGludCBpOTE1LCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX21tYXBfb2Zmc2V0ICphcmcpCj4gK3sKPiArCWludCBlcnIgPSAwOwo+ICsK PiArCWlmIChpZ3RfaW9jdGwoaTkxNSwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULCBh cmcpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWlndF9hc3N1bWUoZXJyKTsKPiArCX0KPiAr Cj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBi YWRfb2JqZWN0KGludCBpOTE1KQo+ICt7Cj4gKwl1aW50MzJfdCByZWFsX2hhbmRsZTsKPiArCXVp bnQzMl90IGhhbmRsZXNbMjBdOwo+ICsJaW50IGkgPSAwOwo+ICsKPiArCXJlYWxfaGFuZGxlID0g Z2VtX2NyZWF0ZShpOTE1LCA0MDk2KTsKPiArCj4gKwloYW5kbGVzW2krK10gPSAweGRlYWRiZWVm Owo+ICsJZm9yIChpbnQgYml0ID0gMDsgYml0IDwgMTY7IGJpdCsrKQo+ICsJCWhhbmRsZXNbaSsr XSA9IHJlYWxfaGFuZGxlIHwgKDEgPDwgKGJpdCArIDE2KSk7Cj4gKwloYW5kbGVzW2ldID0gcmVh bF9oYW5kbGUgKyAxOwo+ICsKPiArCWZvciAoOyBpID49IDA7IGktLSkgewo+ICsJCXN0cnVjdCBk cm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgYXJnID0gewo+ICsJCQkuaGFuZGxlID0gaGFuZGxlc1tp XSwKPiArCQkJLmZsYWdzID0gSTkxNV9NTUFQX09GRlNFVF9XQiwKPiArCQl9Owo+ICsKPiArCQlp Z3RfZGVidWcoIlRyeWluZyBNTUFQIElPQ1RMIHdpdGggaGFuZGxlICV4XG4iLAo+ICsJCQkgIGhh bmRsZXNbaV0pOwo+ICsJCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9jdGwoaTkxNSwgJmFy ZyksCj4gKwkJCSAgICAgIC1FTk9FTlQpOwo+ICsJfQo+ICsKPiArCWdlbV9jbG9zZShpOTE1LCBy ZWFsX2hhbmRsZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGJhZF9mbGFncyhpbnQgaTkxNSkK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmcgPSB7Cj4gKwkJLmhh bmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5NiksCj4gKwkJLmZsYWdzID0gLTF1bGwsCj4gKwl9 Owo+ICsKPiArCWlndF9hc3NlcnRfZXEobW1hcF9vZmZzZXRfaW9jdGwoaTkxNSwgJmFyZyksIC1F SU5WQUwpOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIGFyZy5oYW5kbGUpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBiYXNpY191YWYoaW50IGk5MTUpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90IG9ial9z aXplID0gNDA5NjsKPiArCj4gKwlmb3JfZWFjaF9tbWFwX29mZnNldF90eXBlKHQpIHsKPiArCQl1 aW50MzJfdCBoYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIG9ial9zaXplKTsKPiArCQl1aW50OF90 ICpleHBlY3RlZCwgKmJ1ZiwgKmFkZHI7Cj4gKwo+ICsJCWFkZHIgPSBfX2dlbV9tbWFwX29mZnNl dChpOTE1LCBoYW5kbGUsIDAsIG9ial9zaXplLAo+ICsJCQkJCSBQUk9UX1JFQUQgfCBQUk9UX1dS SVRFLAo+ICsJCQkJCSB0LT50eXBlKTsKPiArCQlpZiAoIWFkZHIpIHsKPiArCQkJZ2VtX2Nsb3Nl KGk5MTUsIGhhbmRsZSk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJZXhwZWN0ZWQg PSBjYWxsb2Mob2JqX3NpemUsIHNpemVvZigqZXhwZWN0ZWQpKTsKPiArCQlnZW1fc2V0X2RvbWFp bihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7Cj4gKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChh ZGRyLCBleHBlY3RlZCwgb2JqX3NpemUpID09IDAsCj4gKwkJCSAgICAgIm1tYXAoJXMpIG5vdCBj bGVhciBvbiBnZW1fY3JlYXRlKClcbiIsCj4gKwkJCSAgICAgdC0+bmFtZSk7Cj4gKwkJZnJlZShl eHBlY3RlZCk7Cj4gKwo+ICsJCWJ1ZiA9IGNhbGxvYyhvYmpfc2l6ZSwgc2l6ZW9mKCpidWYpKTsK PiArCQltZW1zZXQoYnVmICsgMTAyNCwgMHgwMSwgMTAyNCk7Cj4gKwkJZ2VtX3dyaXRlKGk5MTUs IGhhbmRsZSwgMCwgYnVmLCBvYmpfc2l6ZSk7Cj4gKwkJZ2VtX3NldF9kb21haW4oaTkxNSwgaGFu ZGxlLCB0LT5kb21haW4sIDApOwo+ICsJCWlndF9hc3NlcnRfZihtZW1jbXAoYnVmLCBhZGRyLCBv Ympfc2l6ZSkgPT0gMCwKPiArCQkJICAgICAibW1hcCglcykgbm90IGNvaGVyZW50IHdpdGggZ2Vt X3dyaXRlKClcbiIsCj4gKwkJCSAgICAgdC0+bmFtZSk7Cj4gKwo+ICsJCWdlbV9zZXRfZG9tYWlu KGk5MTUsIGhhbmRsZSwgdC0+ZG9tYWluLCB0LT5kb21haW4pOwo+ICsJCW1lbXNldChhZGRyICsg MjA0OCwgMHhmZiwgMTAyNCk7Cj4gKwkJZ2VtX3JlYWQoaTkxNSwgaGFuZGxlLCAwLCBidWYsIG9i al9zaXplKTsKPiArCQlnZW1fc2V0X2RvbWFpbihpOTE1LCBoYW5kbGUsIHQtPmRvbWFpbiwgMCk7 Cj4gKwkJaWd0X2Fzc2VydF9mKG1lbWNtcChidWYsIGFkZHIsIG9ial9zaXplKSA9PSAwLAo+ICsJ CQkgICAgICJtbWFwKCVzKSBub3QgY29oZXJlbnQgd2l0aCBnZW1fcmVhZCgpXG4iLAo+ICsJCQkg ICAgIHQtPm5hbWUpOwo+ICsKPiArCQlnZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKPiArCQlpZ3Rf YXNzZXJ0X2YobWVtY21wKGJ1ZiwgYWRkciwgb2JqX3NpemUpID09IDAsCj4gKwkJCSAgICAgIm1t YXAoJXMpIG5vdCByZXNpZGVudCBhZnRlciBnZW1fY2xvc2UoKVxuIiwKPiArCQkJICAgICB0LT5u YW1lKTsKPiArCQlmcmVlKGJ1Zik7Cj4gKwo+ICsJCWlndF9kZWJ1ZygiVGVzdGluZyB1bm1hcHBp bmdcbiIpOwo+ICsJCW11bm1hcChhZGRyLCBvYmpfc2l6ZSk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGlzb2xhdGlvbihpbnQgaTkxNSkKPiArewo+ICsJZm9yX2VhY2hfbW1hcF9vZmZz ZXRfdHlwZSh0KSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBtbWFwX2Fy ZyA9IHsKPiArCQkJLmZsYWdzID0gdC0+dHlwZQo+ICsJCX07Cj4gKwkJaW50IEEgPSBnZW1fcmVv cGVuX2RyaXZlcihpOTE1KTsKPiArCQlpbnQgQiA9IGdlbV9yZW9wZW5fZHJpdmVyKGk5MTUpOwo+ ICsJCXVpbnQ2NF90IG9mZnNldF9hLCBvZmZzZXRfYjsKPiArCQl1aW50MzJfdCBhLCBiOwo+ICsJ CXZvaWQgKnB0cjsKPiArCj4gKwkJYSA9IGdlbV9jcmVhdGUoQSwgNDA5Nik7Cj4gKwkJYiA9IGdl bV9vcGVuKEIsIGdlbV9mbGluayhBLCBhKSk7Cj4gKwo+ICsJCW1tYXBfYXJnLmhhbmRsZSA9IGE7 Cj4gKwkJaWd0X2Fzc2VydF9lcShtbWFwX29mZnNldF9pb2N0bChpOTE1LCAmbW1hcF9hcmcpLCAw KTsKPiArCQlvZmZzZXRfYSA9IG1tYXBfYXJnLm9mZnNldDsKPiArCj4gKwkJbW1hcF9hcmcuaGFu ZGxlID0gYjsKPiArCQlpZ3RfYXNzZXJ0X2VxKG1tYXBfb2Zmc2V0X2lvY3RsKGk5MTUsICZtbWFw X2FyZyksIDApOwo+ICsJCW9mZnNldF9iID0gbW1hcF9hcmcub2Zmc2V0Owo+ICsKPiArCQlpZ3Rf aW5mbygiQVslc106IHtmZDolZCwgaGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKPiAr CQkJIHQtPm5hbWUsIEEsIGEsIG9mZnNldF9hKTsKPiArCQlpZ3RfaW5mbygiQlslc106IHtmZDol ZCwgaGFuZGxlOiVkLCBvZmZzZXQ6JSJQUkl4NjQifVxuIiwKPiArCQkJIHQtPm5hbWUsIEIsIGIs IG9mZnNldF9iKTsKPiArCj4gKwkJY2xvc2UoQik7Cj4gKwo+ICsJCXB0ciA9IG1tYXA2NCgwLCA0 MDk2LCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsIEEsIG9mZnNldF9hKTsKPiArCQlpZ3RfYXNzZXJ0 KHB0ciAhPSBNQVBfRkFJTEVEKTsKPiArCQltdW5tYXAocHRyLCA0MDk2KTsKPiArCj4gKwkJY2xv c2UoQSk7Cj4gKwo+ICsJCXB0ciA9IG1tYXA2NCgwLCA0MDk2LCBQUk9UX1JFQUQsIE1BUF9TSEFS RUQsIEEsIG9mZnNldF9hKTsKPiArCQlpZ3RfYXNzZXJ0KHB0ciA9PSBNQVBfRkFJTEVEKTsKPiAr CX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcGZfbm9uYmxvY2soaW50IGk5MTUpCj4gK3sKPiAr CWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7Cj4gKwo+ICsJZm9yX2VhY2hf bW1hcF9vZmZzZXRfdHlwZSh0KSB7Cj4gKwkJdWludDMyX3QgKnB0cjsKPiArCj4gKwkJcHRyID0g X19nZW1fbW1hcF9vZmZzZXQoaTkxNSwgc3Bpbi0+aGFuZGxlLCAwLCA0MDk2LAo+ICsJCQkJCVBS T1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gKwkJCQkJdC0+dHlwZSk7Cj4gKwkJaWYgKCFwdHIpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZ3Rfc2V0X3RpbWVvdXQoMSwgdC0+bmFtZSk7Cj4gKwkJ Lyogbm8gc2V0LWRvbWFpbiBhcyB3ZSB3YW50IHRvIHZlcmlmeSB0aGUgcGFnZWZhdWx0IGlzIGFz eW5jICovCj4gKwkJcHRyWzI1Nl0gPSAwOwo+ICsJCWlndF9yZXNldF90aW1lb3V0KCk7Cj4gKwo+ ICsJCW11bm1hcChwdHIsIDQwOTYpOwo+ICsJfQo+ICsKPiArCWlndF9zcGluX2ZyZWUoaTkxNSwg c3Bpbik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGk5MTUsIGludCB0 aW1lb3V0KQo+ICt7Cj4gKwljb25zdCBpbnQgbmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09S U19PTkxOKTsKPiArCV9BdG9taWMgdWludDMyX3QgKmhhbmRsZXM7Cj4gKwlzaXplX3QgbGVuID0g QUxJR04oKG5jcHVzICsgMSkgKiBzaXplb2YodWludDMyX3QpLCA0MDk2KTsKPiArCj4gKwloYW5k bGVzID0gbW1hcDY0KDAsIGxlbiwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCB8IE1BUF9BTk9OLCAt MSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0KGhhbmRsZXMgIT0gTUFQX0ZBSUxFRCk7Cj4gKwo+ICsJaWd0 X2ZvcmsoY2hpbGQsIG5jcHVzICsgMSkgewo+ICsJCWRvIHsKPiArCQkJc3RydWN0IGRybV9pOTE1 X2dlbV9tbWFwX29mZnNldCBtbWFwX2FyZyA9IHt9Owo+ICsJCQljb25zdCBpbnQgaSA9IDEgKyBy YW5kb20oKSAlIG5jcHVzOwo+ICsJCQl1aW50MzJfdCBvbGQ7Cj4gKwo+ICsJCQltbWFwX2FyZy5o YW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYpOwo+ICsJCQltbWFwX2FyZy5mbGFncyA9IEk5 MTVfTU1BUF9PRkZTRVRfV0I7Cj4gKwkJCW9sZCA9IGF0b21pY19leGNoYW5nZSgmaGFuZGxlc1tp XSwgbW1hcF9hcmcuaGFuZGxlKTsKClRoaXMgd2lsbCByZXF1aXJlIGFkZGluZyBsaWJhdG9taWMg dG8gdGhpcyBleGVjdXRhYmxlJ3MgZGVwZW5kZW5jaWVzCndpdGggbWVzb24uIExvb2sgdG8gaGFu ZGxpbmcgb2YgZ2VtX2NyZWF0ZS5jIGZvciBhbiBleGFtcGxlLgoKCi0tIApQZXRyaSBMYXR2YWxh CgoKCgo+ICsJCQlpb2N0bChpOTE1LCBEUk1fSU9DVExfR0VNX0NMT1NFLCAmb2xkKTsKPiArCj4g KwkJCWlmIChpb2N0bChpOTE1LAo+ICsJCQkJICBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUF9PRkZT RVQsCj4gKwkJCQkgICZtbWFwX2FyZykgIT0gLTEpIHsKPiArCQkJCXZvaWQgKnB0cjsKPiArCj4g KwkJCQlwdHIgPSBtbWFwNjQoMCwgNDA5NiwKPiArCQkJCQkgICAgIFBST1RfV1JJVEUsIE1BUF9T SEFSRUQsIGk5MTUsCj4gKwkJCQkJICAgICBtbWFwX2FyZy5vZmZzZXQpOwo+ICsJCQkJaWYgKHB0 ciAhPSBNQVBfRkFJTEVEKSB7Cj4gKwkJCQkJKih2b2xhdGlsZSB1aW50MzJfdCAqKXB0ciA9IDA7 Cj4gKwkJCQkJbXVubWFwKHB0ciwgNDA5Nik7Cj4gKwkJCQl9Cj4gKwkJCX0KPiArCj4gKwkJfSB3 aGlsZSAoIVJFQURfT05DRShoYW5kbGVzWzBdKSk7Cj4gKwl9Cj4gKwo+ICsJc2xlZXAodGltZW91 dCk7Cj4gKwloYW5kbGVzWzBdID0gMTsKPiArCWlndF93YWl0Y2hpbGRyZW4oKTsKPiArCj4gKwlm b3IgKGludCBpID0gMTsgaSA8PSBuY3B1czsgaSsrKQo+ICsJCWlvY3RsKGk5MTUsIERSTV9JT0NU TF9HRU1fQ0xPU0UsIGhhbmRsZXNbaV0pOwo+ICsJbXVubWFwKGhhbmRsZXMsIGxlbik7Cj4gK30K PiArCj4gK3N0YXRpYyB1aW50NjRfdCBhdG9taWNfY29tcGFyZV9zd2FwX3U2NChfQXRvbWljKHVp bnQ2NF90KSAqcHRyLAo+ICsJCQkJCXVpbnQ2NF90IG9sZHZhbCwgdWludDY0X3QgbmV3dmFsKQo+ ICt7Cj4gKwlhdG9taWNfY29tcGFyZV9leGNoYW5nZV9zdHJvbmcocHRyLCAmb2xkdmFsLCBuZXd2 YWwpOwo+ICsJcmV0dXJuIG9sZHZhbDsKPiArfQo+ICsKPiArc3RhdGljIHVpbnQ2NF90IGdldF9u cGFnZXMoX0F0b21pYyh1aW50NjRfdCkgKmdsb2JhbCwgdWludDY0X3QgbnBhZ2VzKQo+ICt7Cj4g Kwl1aW50NjRfdCB0cnksIG9sZCwgbWF4Owo+ICsKPiArCW1heCA9ICpnbG9iYWw7Cj4gKwlkbyB7 Cj4gKwkJb2xkID0gbWF4Owo+ICsJCXRyeSA9IDEgKyBucGFnZXMgJSAobWF4IC8gMik7Cj4gKwkJ bWF4IC09IHRyeTsKPiArCX0gd2hpbGUgKChtYXggPSBhdG9taWNfY29tcGFyZV9zd2FwX3U2NChn bG9iYWwsIG9sZCwgbWF4KSkgIT0gb2xkKTsKPiArCj4gKwlyZXR1cm4gdHJ5Owo+ICt9Cj4gKwo+ ICtzdHJ1Y3QgdGhyZWFkX2NsZWFyIHsKPiArCV9BdG9taWModWludDY0X3QpIG1heDsKPiArCWlu dCB0aW1lb3V0Owo+ICsJaW50IGk5MTU7Cj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGNyZWF0ZV9p b2N0bChpbnQgaTkxNSwgc3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgKmNyZWF0ZSkKPiArewo+ ICsJaW50IGVyciA9IDA7Cj4gKwo+ICsJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkx NV9HRU1fQ1JFQVRFLCBjcmVhdGUpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWlndF9hc3N1 bWUoZXJyICE9IDApOwo+ICsJfQo+ICsKPiArCWVycm5vID0gMDsKPiArCXJldHVybiBlcnI7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkICp0aHJlYWRfY2xlYXIodm9pZCAqZGF0YSkKPiArewo+ICsJ c3RydWN0IHRocmVhZF9jbGVhciAqYXJnID0gZGF0YTsKPiArCWNvbnN0IHN0cnVjdCBtbWFwX29m ZnNldCAqdDsKPiArCXVuc2lnbmVkIGxvbmcgY2hlY2tlZCA9IDA7Cj4gKwlpbnQgaTkxNSA9IGFy Zy0+aTkxNTsKPiArCj4gKwl0ID0gbW1hcF9vZmZzZXRfdHlwZXM7Cj4gKwlpZ3RfdW50aWxfdGlt ZW91dChhcmctPnRpbWVvdXQpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSBjcmVh dGUgPSB7fTsKPiArCQl1aW50NjRfdCBucGFnZXM7Cj4gKwkJdm9pZCAqcHRyOwo+ICsKPiArCQlu cGFnZXMgPSByYW5kb20oKTsKPiArCQlucGFnZXMgPDw9IDMyOwo+ICsJCW5wYWdlcyB8PSByYW5k b20oKTsKPiArCQlucGFnZXMgPSBnZXRfbnBhZ2VzKCZhcmctPm1heCwgbnBhZ2VzKTsKPiArCQlj cmVhdGUuc2l6ZSA9IG5wYWdlcyA8PCAxMjsKPiArCj4gKwkJY3JlYXRlX2lvY3RsKGk5MTUsICZj cmVhdGUpOwo+ICsJCXB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGk5MTUsIGNyZWF0ZS5oYW5kbGUs IDAsIGNyZWF0ZS5zaXplLAo+ICsJCQkJCVBST1RfUkVBRCB8IFBST1RfV1JJVEUsCj4gKwkJCQkJ dC0+dHlwZSk7Cj4gKwkJLyogTm8gc2V0LWRvbWFpbnMgYXMgd2UgYXJlIGJlaW5nIGFzIG5hdWdo dHkgYXMgcG9zc2libGUgKi8KPiArCQlmb3IgKHVpbnQ2NF90IHBhZ2UgPSAwOyBwdHIgJiYgcGFn ZSA8IG5wYWdlczsgcGFnZSsrKSB7Cj4gKwkJCXVpbnQ2NF90IHhbOF0gPSB7Cj4gKwkJCQlwYWdl ICogNDA5NiArCj4gKwkJCQkJc2l6ZW9mKHgpICogKChwYWdlICUgKDQwOTYgLSBzaXplb2YoeCkp IC8gc2l6ZW9mKHgpKSkKPiArCQkJfTsKPiArCj4gKwkJCWlmIChwYWdlICYgMSkKPiArCQkJCWln dF9tZW1jcHlfZnJvbV93Yyh4LCBwdHIgKyB4WzBdLCBzaXplb2YoeCkpOwo+ICsJCQllbHNlCj4g KwkJCQltZW1jcHkoeCwgcHRyICsgeFswXSwgc2l6ZW9mKHgpKTsKPiArCj4gKwkJCWZvciAoaW50 IGkgPSAwOyBpIDwgQVJSQVlfU0laRSh4KTsgaSsrKQo+ICsJCQkJaWd0X2Fzc2VydF9lcV91NjQo eFtpXSwgMCk7Cj4gKwkJfQo+ICsJCWlmIChwdHIpCj4gKwkJCW11bm1hcChwdHIsIGNyZWF0ZS5z aXplKTsKPiArCQlnZW1fY2xvc2UoaTkxNSwgY3JlYXRlLmhhbmRsZSk7Cj4gKwkJY2hlY2tlZCAr PSBucGFnZXM7Cj4gKwo+ICsJCWF0b21pY19mZXRjaF9hZGQoJmFyZy0+bWF4LCBucGFnZXMpOwo+ ICsKPiArCQlpZiAoISgrK3QpLT5uYW1lKQo+ICsJCQl0ID0gbW1hcF9vZmZzZXRfdHlwZXM7Cj4g Kwl9Cj4gKwo+ICsJcmV0dXJuICh2b2lkICopKHVpbnRwdHJfdCljaGVja2VkOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBhbHdheXNfY2xlYXIoaW50IGk5MTUsIGludCB0aW1lb3V0KQo+ICt7Cj4g KwlzdHJ1Y3QgdGhyZWFkX2NsZWFyIGFyZyA9IHsKPiArCQkuaTkxNSA9IGk5MTUsCj4gKwkJLnRp bWVvdXQgPSB0aW1lb3V0LAo+ICsJCS5tYXggPSBpbnRlbF9nZXRfYXZhaWxfcmFtX21iKCkgPDwg KDIwIC0gMTIpLCAvKiBpbiBwYWdlcyAqLwo+ICsJfTsKPiArCWNvbnN0IGludCBuY3B1cyA9IHN5 c2NvbmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOwo+ICsJdW5zaWduZWQgbG9uZyBjaGVja2VkOwo+ ICsJcHRocmVhZF90IHRocmVhZFtuY3B1c107Cj4gKwl2b2lkICpyZXN1bHQ7Cj4gKwo+ICsJZm9y IChpbnQgaSA9IDA7IGkgPCBuY3B1czsgaSsrKQo+ICsJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWRb aV0sIE5VTEwsIHRocmVhZF9jbGVhciwgJmFyZyk7Cj4gKwo+ICsJY2hlY2tlZCA9IDA7Cj4gKwlm b3IgKGludCBpID0gMDsgaSA8IG5jcHVzOyBpKyspIHsKPiArCQlwdGhyZWFkX2pvaW4odGhyZWFk W2ldLCAmcmVzdWx0KTsKPiArCQljaGVja2VkICs9ICh1aW50cHRyX3QpcmVzdWx0Owo+ICsJfQo+ ICsJaWd0X2luZm8oIkNoZWNrZWQgJSdsdSBwYWdlIGFsbG9jYXRpb25zXG4iLCBjaGVja2VkKTsK PiArfQo+ICsKPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWludCBpOTE1Owo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQlpOTE1ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCk7Cj4gKwkJ Z2VtX3JlcXVpcmVfbW1hcF9vZmZzZXQoaTkxNSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2Rlc2NyaWJl KCJWZXJpZnkgbWFwcGluZyB0byBpbnZhbGlkIGdlbSBvYmplY3RzIHdvbid0IGJlIGNyZWF0ZWQi KTsKPiArCWlndF9zdWJ0ZXN0X2YoImJhZC1vYmplY3QiKQo+ICsJCWJhZF9vYmplY3QoaTkxNSk7 Cj4gKwlpZ3Rfc3VidGVzdF9mKCJiYWQtZmxhZ3MiKQo+ICsJCWJhZF9mbGFncyhpOTE1KTsKPiAr Cj4gKwlpZ3RfZGVzY3JpYmUoIkNoZWNrIGJ1ZmZlciBvYmplY3QgbWFwcGluZyBwZXJzaXN0cyBh ZnRlciBnZW1fY2xvc2UiKTsKPiArCWlndF9zdWJ0ZXN0X2YoImJhc2ljLXVhZiIpCj4gKwkJYmFz aWNfdWFmKGk5MTUpOwo+ICsKPiArCWlndF9zdWJ0ZXN0X2YoImlzb2xhdGlvbiIpCj4gKwkJaXNv bGF0aW9uKGk5MTUpOwo+ICsJaWd0X3N1YnRlc3RfZigicGYtbm9uYmxvY2siKQo+ICsJCXBmX25v bmJsb2NrKGk5MTUpOwo+ICsKPiArCWlndF9kZXNjcmliZSgiQ2hlY2sgcmFjZSBiZXR3ZWVuIGNs b3NlIGFuZCBtbWFwIG9mZnNldCBiZXR3ZWVuIHRocmVhZHMiKTsKPiArCWlndF9zdWJ0ZXN0X2Yo ImNsb3NlLXJhY2UiKQo+ICsJCWNsb3NlX3JhY2UoaTkxNSwgMjApOwo+ICsKPiArCWlndF9zdWJ0 ZXN0X2YoImNsZWFyIikKPiArCQlhbHdheXNfY2xlYXIoaTkxNSwgMjApOwo+ICsKPiArCWlndF9m aXh0dXJlIHsKPiArCQljbG9zZShpOTE1KTsKPiArCX0KPiArfQo+IGRpZmYgLS1naXQgYS90ZXN0 cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gaW5kZXggMTg3ODhkNDRiLi4wNWRl YTFmNGUgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNv bi5idWlsZAo+IEBAIC0xNzQsNiArMTc0LDcgQEAgaTkxNV9wcm9ncyA9IFsKPiAgCSdnZW1fbWVk aWFfdm1lJywKPiAgCSdnZW1fbW1hcCcsCj4gIAknZ2VtX21tYXBfZ3R0JywKPiArCSdnZW1fbW1h cF9vZmZzZXQnLAo+ICAJJ2dlbV9tbWFwX29mZnNldF9leGhhdXN0aW9uJywKPiAgCSdnZW1fbW1h cF93YycsCj4gIAknZ2VtX3BhcnRpYWxfcHdyaXRlX3ByZWFkJywKPiAtLSAKPiAyLjI0LjAKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1k ZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxp c3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2