From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH i-g-t v2 3/3] igt: Add VC4 purgeable BO tests Date: Tue, 21 Nov 2017 20:39:24 +0100 Message-ID: <20171121203924.56bc0b3b@bbrezillon> References: <20171004102221.23085-1-boris.brezillon@free-electrons.com> <20171004102221.23085-4-boris.brezillon@free-electrons.com> <87tvxnv614.fsf@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 85CB86E58D for ; Tue, 21 Nov 2017 19:39:27 +0000 (UTC) In-Reply-To: <87tvxnv614.fsf@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Eric Anholt Cc: Intel GFX discussion List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMSBOb3YgMjAxNyAxMDozMDoxNSAtMDgwMApFcmljIEFuaG9sdCA8ZXJpY0Bhbmhv bHQubmV0PiB3cm90ZToKCj4gQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AZnJlZS1l bGVjdHJvbnMuY29tPiB3cml0ZXM6Cj4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxs b24gPGJvcmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+Cj4gPiAtLS0KPiA+IENoYW5n ZXMgaW4gdjI6Cj4gPiAtIEFkZCBhIHJ1bGUgdG8gYnVpbGQgdmM0IHB1cmdlYWJsZSB0ZXN0cyB3 aGVuIHVzaW5nIE1lc29uIChzdWdnZXN0ZWQgYnkKPiA+ICAgUGV0cmkpCj4gPiAtIFJld29yayB0 aGUgc3VidGVzdHMgdG8gYXZvaWQgdW5jZXJ0YWludHkgKHN1Z2dlc3RlZCBieSBDaHJpcykKPiA+ IC0gQWRkIGEgc3VidGVzdCB0byBtYWtlIHN1cmUgbmV3IEJPcyBoYXZlIHRoZWlyIGNvbnRlbnQg cmV0YWluZWQgYnkKPiA+ICAgZGVmYXVsdCAoc3VnZ2VzdGVkIGJ5IENocmlzKQo+ID4gLSBNYWtl IHN1cmUgd2UgYXJlIGluIGEga25vd24gc3RhdGUgYmVmb3JlIHN0YXJ0aW5nIGEgc3VidGVzdCBl dmVuIGlmCj4gPiAgIHRoZSBwcmV2aW91cyBzdWJ0ZXN0IGZhaWxlZCAoc3VnZ2VzdGVkIGJ5IENo cmlzKQo+ID4gLSBSZXdvcmtlZCB0aGUgdGVzdHMgdG8gYWRqdXN0IHRvIHRoZSBuZXcgTUFEViBi ZWhhdmlvciAoV0lMTE5FRUQgbm8KPiA+ICAgbG9uZ2VyIHJlLWFsbG9jYXRlZCB0aGUgQk8gaWYg aXQncyBiZWVuIHB1cmdlZCkKPiA+IC0gTWFrZSB0aGUgcHVyZ2VhYmxlIHRlc3QgZGVwZW5kZW50 IG9uIHRoZSBNQURWSVNFIGZlYXR1cmUgKGNoZWNrZWQKPiA+ICAgd2l0aCB0aGUgR0VUX1BBUkFN IGlvY3RsKSAgCj4gCj4gSSd2ZSBwdXNoZWQgYSByZWJhc2VkIHZlcnNpb24gb2YgeW91ciBzZXJp ZXMgYXMgb2YKPiBmOWIwZDdhYzg0YjY1NzljNTI0ODM1N2FiNDViMGE2NWIyN2M2ZTU0IHVwIHRv IHRoZSAicHVyZ2VhYmxlIiBicmFuY2ggb2YKPiBteSB0cmVlLiAgU29tZXRoaW5nIEkgbm90aWNl ZCBhcyBJIHdhcyByZXZpZXdpbmcsIHRob3VnaC4uLgo+IAo+ID4gLS0tCj4gPiAgdGVzdHMvTWFr ZWZpbGUuc291cmNlcyAgIHwgICAxICsKPiA+ICB0ZXN0cy9tZXNvbi5idWlsZCAgICAgICAgfCAg IDEgKwo+ID4gIHRlc3RzL3ZjNF9wdXJnZWFibGVfYm8uYyB8IDI2NSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMjY3 IGluc2VydGlvbnMoKykKPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvdmM0X3B1cmdlYWJs ZV9iby5jCj4gPgo+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzCj4gPiBpbmRleCAwYWRjMjhhMDE0ZDIuLmM3OGFjOWQyNzkyMSAx MDA2NDQKPiA+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+ICsrKyBiL3Rlc3RzL01h a2VmaWxlLnNvdXJjZXMKPiA+IEBAIC04LDYgKzgsNyBAQCBWQzRfVEVTVFMgPSBcCj4gPiAgCXZj NF9jcmVhdGVfYm8gXAo+ID4gIAl2YzRfZG1hYnVmX3BvbGwgXAo+ID4gIAl2YzRfbG9va3VwX2Zh aWwgXAo+ID4gKwl2YzRfcHVyZ2VhYmxlX2JvIFwKPiA+ICAJdmM0X3dhaXRfYm8gXAo+ID4gIAl2 YzRfd2FpdF9zZXFubyBcCj4gPiAgCSQoTlVMTCkKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNv bi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gPiBpbmRleCAxYzYxOTE3OWZlNmEuLjhmOTRl M2M0Mzg1YiAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gPiArKysgYi90ZXN0 cy9tZXNvbi5idWlsZAo+ID4gQEAgLTI0Myw2ICsyNDMsNyBAQCBpZiBsaWJkcm1fdmM0LmZvdW5k KCkKPiA+ICAJCSd2YzRfY3JlYXRlX2JvJywKPiA+ICAJCSd2YzRfZG1hYnVmX3BvbGwnLAo+ID4g IAkJJ3ZjNF9sb29rdXBfZmFpbCcsCj4gPiArCQkndmM0X3B1cmdlYWJsZV9ibycsCj4gPiAgCQkn dmM0X3dhaXRfYm8nLAo+ID4gIAkJJ3ZjNF93YWl0X3NlcW5vJywKPiA+ICAJXQo+ID4gZGlmZiAt LWdpdCBhL3Rlc3RzL3ZjNF9wdXJnZWFibGVfYm8uYyBiL3Rlc3RzL3ZjNF9wdXJnZWFibGVfYm8u Ywo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYjI1NTgx Y2M1MzJlCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi90ZXN0cy92YzRfcHVyZ2VhYmxlX2Jv LmMKPiA+IEBAIC0wLDAgKzEsMjY1IEBACj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAx NyBCcm9hZGNvbQo+ID4gKyAqCj4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAo+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4gKyAqCj4gPiAr ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAo+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQg aW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+ICsgKiBTb2Z0 d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPiArICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK PiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiA+ICsg KiBJTiBUSEUgU09GVFdBUkUuCj4gPiArICovCj4gPiArCj4gPiArI2luY2x1ZGUgImlndC5oIgo+ ID4gKyNpbmNsdWRlICJpZ3RfdmM0LmgiCj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4gKyNp bmNsdWRlIDxzdGRsaWIuaD4KPiA+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiA+ICsjaW5jbHVkZSA8 c3RyaW5nLmg+Cj4gPiArI2luY2x1ZGUgPGZjbnRsLmg+Cj4gPiArI2luY2x1ZGUgPGludHR5cGVz Lmg+Cj4gPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4g PiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgo+ID4gKyNpbmNsdWRlICJ2YzRfZHJtLmgiCj4gPiAr Cj4gPiArc3RydWN0IGlndF92YzRfYm8gewo+ID4gKwlzdHJ1Y3QgaWd0X2xpc3Qgbm9kZTsKPiA+ ICsJaW50IGhhbmRsZTsKPiA+ICsJdm9pZCAqbWFwOwo+ID4gKwlzaXplX3Qgc2l6ZTsKPiA+ICt9 Owo+ID4gKwo+ID4gK3N0YXRpYyBqbXBfYnVmIGptcDsKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBf X2F0dHJpYnV0ZV9fKChub3JldHVybikpIHNpZ3RyYXAoaW50IHNpZykKPiA+ICt7Cj4gPiArCWxv bmdqbXAoam1wLCBzaWcpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpZ3RfdmM0X2Fs bG9jX21tYXBfbWF4X2JvKGludCBmZCwgc3RydWN0IGlndF9saXN0ICpsaXN0LAo+ID4gKwkJCQkg ICAgICBzaXplX3Qgc2l6ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpZ3RfdmM0X2JvICpibzsKPiA+ ICsJc3RydWN0IGRybV92YzRfY3JlYXRlX2JvIGNyZWF0ZSA9IHsKPiA+ICsJCS5zaXplID0gc2l6 ZSwKPiA+ICsJfTsKPiA+ICsKPiA+ICsJd2hpbGUgKHRydWUpIHsKPiA+ICsJCWlmIChpZ3RfaW9j dGwoZmQsIERSTV9JT0NUTF9WQzRfQ1JFQVRFX0JPLCAmY3JlYXRlKSkKPiA+ICsJCQlicmVhazsK PiA+ICsKPiA+ICsJCWJvID0gbWFsbG9jKHNpemVvZigqYm8pKTsKPiA+ICsJCWlndF9hc3NlcnQo Ym8pOwo+ID4gKwkJYm8tPmhhbmRsZSA9IGNyZWF0ZS5oYW5kbGU7Cj4gPiArCQliby0+c2l6ZSA9 IGNyZWF0ZS5zaXplOwo+ID4gKwkJYm8tPm1hcCA9IGlndF92YzRfbW1hcF9ibyhmZCwgYm8tPmhh bmRsZSwgYm8tPnNpemUsCj4gPiArCQkJCQkgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwo+ID4g KwkJaWd0X2xpc3RfYWRkX3RhaWwoJmJvLT5ub2RlLCBsaXN0KTsKPiA+ICsJfQo+ID4gK30KPiA+ ICsKPiA+ICtzdGF0aWMgdm9pZCBpZ3RfdmM0X3VubWFwX2ZyZWVfYm9fcG9vbChpbnQgZmQsIHN0 cnVjdCBpZ3RfbGlzdCAqbGlzdCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpZ3RfdmM0X2JvICpibzsK PiA+ICsKPiA+ICsJd2hpbGUgKCFpZ3RfbGlzdF9lbXB0eShsaXN0KSkgewo+ID4gKwkJYm8gPSBp Z3RfbGlzdF9maXJzdF9lbnRyeShsaXN0LCBibywgbm9kZSk7Cj4gPiArCQlpZ3RfYXNzZXJ0KGJv KTsKPiA+ICsJCWlndF9saXN0X2RlbCgmYm8tPm5vZGUpOwo+ID4gKwkJbXVubWFwKGJvLT5tYXAs IGJvLT5zaXplKTsKPiA+ICsJCWdlbV9jbG9zZShmZCwgYm8tPmhhbmRsZSk7Cj4gPiArCQlmcmVl KGJvKTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpZ3RfdmM0X3RyaWdn ZXJfcHVyZ2UoaW50IGZkKQo+ID4gK3sKPiA+ICsJc3RydWN0IGlndF9saXN0IGxpc3Q7Cj4gPiAr Cj4gPiArCWlndF9saXN0X2luaXQoJmxpc3QpOwo+ID4gKwo+ID4gKwkvKiBUcnkgdG8gYWxsb2Nh dGUgYXMgbXVjaCBhcyB3ZSBjYW4gdG8gdHJpZ2dlciBhIHB1cmdlLiAqLwo+ID4gKwlpZ3RfdmM0 X2FsbG9jX21tYXBfbWF4X2JvKGZkLCAmbGlzdCwgNjQgKiAxMDI0KTsKPiA+ICsJaWd0X2Fzc2Vy dCghaWd0X2xpc3RfZW1wdHkoJmxpc3QpKTsKPiA+ICsJaWd0X3ZjNF91bm1hcF9mcmVlX2JvX3Bv b2woZmQsICZsaXN0KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgaWd0X3ZjNF9wdXJn ZWFibGVfc3VidGVzdF9wcmVwYXJlKGludCBmZCwgc3RydWN0IGlndF9saXN0ICpsaXN0KQo+ID4g K3sKPiA+ICsJaWd0X3ZjNF91bm1hcF9mcmVlX2JvX3Bvb2woZmQsIGxpc3QpOwo+ID4gKwlpZ3Rf dmM0X2FsbG9jX21tYXBfbWF4X2JvKGZkLCBsaXN0LCA2NCAqIDEwMjQpOwo+ID4gKwlpZ3RfYXNz ZXJ0KCFpZ3RfbGlzdF9lbXB0eShsaXN0KSk7Cj4gPiArfQo+ID4gKwo+ID4gK2lndF9tYWluCj4g PiArewo+ID4gKwlzdHJ1Y3QgaWd0X3ZjNF9ibyAqYm87Cj4gPiArCXN0cnVjdCBpZ3RfbGlzdCBs aXN0Owo+ID4gKwl1aW50MzJfdCAqbWFwOwo+ID4gKwlpbnQgZmQsIHJldDsKPiA+ICsKPiA+ICsJ aWd0X2ZpeHR1cmUgewo+ID4gKwkJdWludDY0X3QgdmFsID0gMDsKPiA+ICsKPiA+ICsJCWZkID0g ZHJtX29wZW5fZHJpdmVyKERSSVZFUl9WQzQpOwo+ID4gKwkJaWd0X3ZjNF9nZXRfcGFyYW0oZmQs IERSTV9WQzRfUEFSQU1fU1VQUE9SVFNfTUFEVklTRSwgJnZhbCk7Cj4gPiArCQlpZ3RfcmVxdWly ZSh2YWwpOwo+ID4gKwkJaWd0X2xpc3RfaW5pdCgmbGlzdCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJ aWd0X3N1YnRlc3QoIm1hcmstd2lsbG5lZWQiKSB7Cj4gPiArCQlpZ3RfdmM0X3B1cmdlYWJsZV9z dWJ0ZXN0X3ByZXBhcmUoZmQsICZsaXN0KTsKPiA+ICsJCWlndF9saXN0X2Zvcl9lYWNoKGJvLCAm bGlzdCwgbm9kZSkKPiA+ICsJCQlpZ3RfYXNzZXJ0KGlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBi by0+aGFuZGxlLAo+ID4gKwkJCQkJCQlmYWxzZSkpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9z dWJ0ZXN0KCJtYXJrLXB1cmdlYWJsZSIpIHsKPiA+ICsJCWlndF92YzRfcHVyZ2VhYmxlX3N1YnRl c3RfcHJlcGFyZShmZCwgJmxpc3QpOwo+ID4gKwkJaWd0X2xpc3RfZm9yX2VhY2goYm8sICZsaXN0 LCBub2RlKQo+ID4gKwkJCWlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBiby0+aGFuZGxlLCB0cnVl KTsKPiA+ICsKPiA+ICsJCWlndF9saXN0X2Zvcl9lYWNoKGJvLCAmbGlzdCwgbm9kZSkKPiA+ICsJ CQlpZ3RfdmM0X3B1cmdlYWJsZV9ibyhmZCwgYm8tPmhhbmRsZSwgZmFsc2UpOwo+ID4gKwl9Cj4g PiArCj4gPiArCWlndF9zdWJ0ZXN0KCJtYXJrLXB1cmdlYWJsZS10d2ljZSIpIHsKPiA+ICsJCWln dF92YzRfcHVyZ2VhYmxlX3N1YnRlc3RfcHJlcGFyZShmZCwgJmxpc3QpOwo+ID4gKwkJYm8gPSBp Z3RfbGlzdF9maXJzdF9lbnRyeSgmbGlzdCwgYm8sIG5vZGUpOwo+ID4gKwkJaWd0X3ZjNF9wdXJn ZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIHRydWUpOwo+ID4gKwkJaWd0X3ZjNF9wdXJnZWFibGVf Ym8oZmQsIGJvLT5oYW5kbGUsIHRydWUpOwo+ID4gKwkJaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQs IGJvLT5oYW5kbGUsIGZhbHNlKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZ3Rfc3VidGVzdCgibWFy ay11bnB1cmdlYWJsZS10d2ljZSIpIHsKPiA+ICsJCWlndF92YzRfcHVyZ2VhYmxlX3N1YnRlc3Rf cHJlcGFyZShmZCwgJmxpc3QpOwo+ID4gKwkJYm8gPSBpZ3RfbGlzdF9maXJzdF9lbnRyeSgmbGlz dCwgYm8sIG5vZGUpOwo+ID4gKwkJaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUs IHRydWUpOwo+ID4gKwkJaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIGZhbHNl KTsKPiA+ICsJCWlndF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBiby0+aGFuZGxlLCBmYWxzZSk7Cj4g PiArCX0KPiA+ICsKPiA+ICsJaWd0X3N1YnRlc3QoImFjY2Vzcy1wdXJnZWFibGUtYm8tbWVtIikg ewo+ID4gKwkJaWd0X3ZjNF9wdXJnZWFibGVfc3VidGVzdF9wcmVwYXJlKGZkLCAmbGlzdCk7Cj4g PiArCQlibyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KCZsaXN0LCBibywgbm9kZSk7Cj4gPiArCQlt YXAgPSAodWludDMyX3QgKiliby0+bWFwOwo+ID4gKwo+ID4gKwkJLyogTWFyayB0aGUgQk8gYXMg cHVyZ2VhYmxlLCBidXQgZG8gbm90IHRyeSB0byBhbGxvY2F0ZSBhIG5ldwo+ID4gKwkJICogQk8u IFRoaXMgc2hvdWxkIGxlYXZlIHRoZSBCTyBpbiBhIG5vbi1wdXJnZWQgc3RhdGUgdW5sZXNzCj4g PiArCQkgKiBzb21lb25lIGVsc2UgdHJpZXMgdG8gYWxsb2NhdGVkIGEgbmV3IEJPLgo+ID4gKwkJ ICovCj4gPiArCQlpZ3RfdmM0X3B1cmdlYWJsZV9ibyhmZCwgYm8tPmhhbmRsZSwgdHJ1ZSk7Cj4g PiArCj4gPiArCQkvKiBBY2Nlc3NpbmcgYSBwdXJnZWFibGUgQk8gbWF5IGdlbmVyYXRlIGEgU0lH QlVTIGV2ZW50IGlmIHRoZQo+ID4gKwkJICogQk8gaGFzIGJlZW4gcHVyZ2VkIGJ5IHRoZSBzeXN0 ZW0gaW4gdGhlIG1lYW50aW1lLgo+ID4gKwkJICovCj4gPiArCQlzaWduYWwoU0lHU0VHViwgc2ln dHJhcCk7Cj4gPiArCQlzaWduYWwoU0lHQlVTLCBzaWd0cmFwKTsKPiA+ICsJCXJldCA9IHNldGpt cChqbXApOwo+ID4gKwkJaWYgKCFyZXQpCj4gPiArCQkJKm1hcCA9IDB4ZGVhZGJlZWY7Cj4gPiAr CQllbHNlCj4gPiArCQkJaWd0X2Fzc2VydChyZXQgPT0gU0lHQlVTKTsKPiA+ICsJCXNpZ25hbChT SUdCVVMsIFNJR19ERkwpOwo+ID4gKwkJc2lnbmFsKFNJR1NFR1YsIFNJR19ERkwpOwo+ID4gKwl9 Cj4gPiArCj4gPiArCWlndF9zdWJ0ZXN0KCJhY2Nlc3MtcHVyZ2VkLWJvLW1lbSIpIHsKPiA+ICsJ CWlndF92YzRfcHVyZ2VhYmxlX3N1YnRlc3RfcHJlcGFyZShmZCwgJmxpc3QpOwo+ID4gKwo+ID4g KwkJLyogTWFyayB0aGUgZmlyc3QgQk8gaW4gb3VyIGxpc3QgYXMgcHVyZ2VhYmxlIGFuZCB0cnkg dG8KPiA+ICsJCSAqIGFsbG9jYXRlIGEgbmV3IG9uZS4gVGhpcyBzaG91bGQgdHJpZ2dlciBhIHB1 cmdlIGFuZCByZW5kZXIKPiA+ICsJCSAqIHRoZSBmaXJzdCBCTyBpbmFjY2Vzc2libGUuCj4gPiAr CQkgKi8KPiA+ICsJCWJvID0gaWd0X2xpc3RfZmlyc3RfZW50cnkoJmxpc3QsIGJvLCBub2RlKTsK PiA+ICsJCW1hcCA9ICh1aW50MzJfdCAqKWJvLT5tYXA7Cj4gPiArCQlpZ3RfdmM0X3B1cmdlYWJs ZV9ibyhmZCwgYm8tPmhhbmRsZSwgdHJ1ZSk7Cj4gPiArCj4gPiArCQkvKiBUcmlnZ2VyIGEgcHVy Z2UuICovCj4gPiArCQlpZ3RfdmM0X3RyaWdnZXJfcHVyZ2UoZmQpOwo+ID4gKwo+ID4gKwkJLyog QWNjZXNzaW5nIGEgcHVyZ2VkIEJPIHNob3VsZCBnZW5lcmF0ZSBhIFNJR0JVUyBldmVudC4gKi8K PiA+ICsJCXNpZ25hbChTSUdTRUdWLCBzaWd0cmFwKTsKPiA+ICsJCXNpZ25hbChTSUdCVVMsIHNp Z3RyYXApOwo+ID4gKwkJcmV0ID0gc2V0am1wKGptcCk7Cj4gPiArCQlpZiAoIXJldCkKPiA+ICsJ CQkqbWFwID0gMDsKPiA+ICsJCWVsc2UKPiA+ICsJCQlpZ3RfYXNzZXJ0KHJldCA9PSBTSUdCVVMp OyAgCj4gCj4gSWYgd2UgZGlkbid0IHRha2UgYSBzaWduYWwgYXQgYWxsLCBJIHRoaW5rIHRoaXMg dGVzdCB3b3VsZCBleGl0Cj4gc3VjY2Vzc2Z1bGx5LCB3aGVuIHdlIGRvbid0IHdhbnQgaXQgdG8u ICBNYXliZSBpZ3RfYXNzZXJ0KGZhbHNlKSBhZnRlcgo+IHRoZSAqbWFwID0gMD8KCkhtLCBJIHRo aW5rIHdlIGNhbiBnZXQgcmlkIG9mIHRoZSBlbHNlIGFuZCB1bmNvbmRpdGlvbmFsbHkgZXhlY3V0 ZQppZ3RfYXNzZXJ0KHJldCA9PSBTSUdCVVMpLgoKPiBEbyB3ZSBuZWVkIGEgdm9sYXRpbGUgd3Jp dGUgaW4gdGhhdCBjYXNlLCB0byBtYWtlIHN1cmUKPiB0aGUgY29tcGlsZXIgZG9lc24ndCBtb3Zl ICptYXA9MCBhZnRlciBpZ3RfYXNzZXJ0KGZhbHNlKT8KClRoYXQncyBhIGdvb2QgcXVlc3Rpb24u IEknbSBub3QgZXZlbiBzdXJlIG1ha2luZyBtYXAgYSB2b2xhdGlsZQp2YXJpYWJsZSB3b3VsZCBn dWFyYW50ZWUgb3JkZXJpbmcgaGVyZS4KCj4gCj4gPiArCQlzaWduYWwoU0lHQlVTLCBTSUdfREZM KTsKPiA+ICsJCXNpZ25hbChTSUdTRUdWLCBTSUdfREZMKTsKPiA+ICsJCWlndF92YzRfcHVyZ2Vh YmxlX2JvKGZkLCBiby0+aGFuZGxlLCBmYWxzZSk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWd0X3N1 YnRlc3QoIm1hcmstdW5wdXJnZWFibGUtY2hlY2stcmV0YWluZWQiKSB7Cj4gPiArCQlpZ3RfdmM0 X3B1cmdlYWJsZV9zdWJ0ZXN0X3ByZXBhcmUoZmQsICZsaXN0KTsKPiA+ICsJCWlndF9saXN0X2Zv cl9lYWNoKGJvLCAmbGlzdCwgbm9kZSkgewo+ID4gKwkJCW1hcCA9ICh1aW50MzJfdCAqKWJvLT5t YXA7Cj4gPiArCQkJKm1hcCA9IDB4ZGVhZGJlZWY7Cj4gPiArCQkJaWd0X3ZjNF9wdXJnZWFibGVf Ym8oZmQsIGJvLT5oYW5kbGUsIHRydWUpOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJaWd0X2xpc3Rf Zm9yX2VhY2goYm8sICZsaXN0LCBub2RlKSB7Cj4gPiArCQkJbWFwID0gKHVpbnQzMl90ICopYm8t Pm1hcDsKPiA+ICsJCQlpZiAoaWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIGZh bHNlKSkKPiA+ICsJCQkJaWd0X2Fzc2VydCgqbWFwID09IDB4ZGVhZGJlZWYpOwo+ID4gKwkJfQo+ ID4gKwl9Cj4gPiArCj4gPiArCWlndF9zdWJ0ZXN0KCJtYXJrLXVucHVyZ2VhYmxlLXB1cmdlZCIp IHsKPiA+ICsJCWlndF92YzRfcHVyZ2VhYmxlX3N1YnRlc3RfcHJlcGFyZShmZCwgJmxpc3QpOwo+ ID4gKwo+ID4gKwkJaWd0X2xpc3RfZm9yX2VhY2goYm8sICZsaXN0LCBub2RlKQo+ID4gKwkJCWln dF92YzRfcHVyZ2VhYmxlX2JvKGZkLCBiby0+aGFuZGxlLCB0cnVlKTsKPiA+ICsKPiA+ICsJCS8q IFRyaWdnZXIgYSBwdXJnZS4gKi8KPiA+ICsJCWlndF92YzRfdHJpZ2dlcl9wdXJnZShmZCk7Cj4g PiArCj4gPiArCQlibyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KCZsaXN0LCBibywgbm9kZSk7Cj4g PiArCQltYXAgPSAodWludDMyX3QgKiliby0+bWFwOwo+ID4gKwo+ID4gKwkJaWd0X2Fzc2VydCgh aWd0X3ZjNF9wdXJnZWFibGVfYm8oZmQsIGJvLT5oYW5kbGUsIGZhbHNlKSk7Cj4gPiArCj4gPiAr CQkvKiBQdXJnZWQgQk9zIGFyZSB1bnVzYWJsZSBhbmQgYW55IGFjY2VzcyB0byB0aGVpcgo+ID4g KwkJICogbW1hcC1lZCByZWdpb24gc2hvdWxkIHRyaWdnZXIgYSBTSUdCVVMuCj4gPiArCQkgKi8K PiA+ICsJCXNpZ25hbChTSUdTRUdWLCBzaWd0cmFwKTsKPiA+ICsJCXNpZ25hbChTSUdCVVMsIHNp Z3RyYXApOwo+ID4gKwkJcmV0ID0gc2V0am1wKGptcCk7Cj4gPiArCQlpZiAoIXJldCkKPiA+ICsJ CQkqbWFwID0gMDsKPiA+ICsJCWVsc2UKPiA+ICsJCQlpZ3RfYXNzZXJ0KHJldCA9PSBTSUdCVVMp Owo+ID4gKwkJc2lnbmFsKFNJR0JVUywgU0lHX0RGTCk7Cj4gPiArCQlzaWduYWwoU0lHU0VHViwg U0lHX0RGTCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWd0X3N1YnRlc3QoImZyZWUtcHVyZ2VkLWJv Iikgewo+ID4gKwkJaWd0X3ZjNF9wdXJnZWFibGVfc3VidGVzdF9wcmVwYXJlKGZkLCAmbGlzdCk7 Cj4gPiArCQlibyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KCZsaXN0LCBibywgbm9kZSk7Cj4gPiAr CQlpZ3RfdmM0X3B1cmdlYWJsZV9ibyhmZCwgYm8tPmhhbmRsZSwgdHJ1ZSk7Cj4gPiArCj4gPiAr CQkvKiBUcmlnZ2VyIGEgcHVyZ2UuICovCj4gPiArCQlpZ3RfdmM0X3RyaWdnZXJfcHVyZ2UoZmQp Owo+ID4gKwo+ID4gKwkJaWd0X2xpc3RfZGVsKCZiby0+bm9kZSk7Cj4gPiArCQltdW5tYXAoYm8t Pm1hcCwgYm8tPnNpemUpOwo+ID4gKwkJZ2VtX2Nsb3NlKGZkLCBiby0+aGFuZGxlKTsKPiA+ICsJ CWZyZWUoYm8pOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9maXh0dXJlCj4gPiArCQljbG9zZShm ZCk7Cj4gPiArfQo+ID4gLS0gCj4gPiAyLjExLjAgIAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==