From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH v3] igt/gem_trtt: Exercise the TRTT hardware Date: Thu, 3 Mar 2016 21:08:25 +0530 Message-ID: <56D85A71.3000409@intel.com> References: <20160122204102.GX16147@nuc-i3427.alporthouse.com> <1456980959-29057-1-git-send-email-akash.goel@intel.com> <20160303100403.GQ30782@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 32AAF6E147 for ; Thu, 3 Mar 2016 15:38:29 +0000 (UTC) In-Reply-To: <20160303100403.GQ30782@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org ClRoYW5rcyBmb3IgdGhlIHJldmlldy4KCk9uIDMvMy8yMDE2IDM6MzQgUE0sIENocmlzIFdpbHNv biB3cm90ZToKPiBPbiBUaHUsIE1hciAwMywgMjAxNiBhdCAxMDoyNTo1OUFNICswNTMwLCBha2Fz aC5nb2VsQGludGVsLmNvbSB3cm90ZToKPj4gK3N0YXRpYyBib29sIHVzZXNfZnVsbF9wcGd0dChp bnQgZmQsIGludCBtaW4pCj4gZ2VtX2d0dF90eXBlKCkKZmluZSB3aWxsIGNoYW5nZSBsaWtlIHRo aXMsCglnZW1fZ3R0X3R5cGUoZmQpID4gMgoKPgo+PiArc3RhdGljIGJvb2wgaGFzX3NvZnRwaW5f c3VwcG9ydChpbnQgZmQpCj4KPiBnZW1faGFzX3NvZnRwaW4oKQoKZmluZSB3aWxsIHVzZSBnZW1f aGFzX3NvZnRwaW4oKQo+Cj4+ICtzdGF0aWMgaW50IGVtaXRfc3RvcmVfZHdvcmQoaW50IGZkLCB1 aW50MzJfdCAqY21kX2J1ZiwgdWludDMyX3QgZHdfb2Zmc2V0LAo+PiArCQkJICAgIHVpbnQ2NF90 IHZhZGRyLCB1aW50MzJfdCBkYXRhKQo+PiArewo+PiArCS8qIENoZWNrIHRoYXQgc29mdHBpbiBh ZGRyZXNzZXMgYXJlIGluIHRoZSBjb3JyZWN0IGZvcm0gKi8KPj4gKwlhc3NlcnQodmFkZHIgPT0g Z2VuOF9jYW5vbmljYWxfYWRkcih2YWRkcikpOwo+PiArCj4+ICsJLyogU0RJIGNhbm5vdCB3cml0 ZSB0byB1bmFsaWduZWQgYWRkcmVzc2VzICovCj4+ICsJYXNzZXJ0KCh2YWRkciAmIDMpID09IDAp Owo+PiArCj4+ICsJY21kX2J1Zltkd19vZmZzZXQrK10gPSBNSV9TVE9SRV9EV09SRF9JTU07Cj4+ ICsJY21kX2J1Zltkd19vZmZzZXQrK10gPSB2YWRkciAmIDB4RkZGRkZGRkM7Cj4+ICsJY21kX2J1 Zltkd19vZmZzZXQrK10gPSAodmFkZHIgPj4gMzIpICYgMHhGRkZGOyAvKiBiaXRzIDMyOjQ3ICov Cj4+ICsJY21kX2J1Zltkd19vZmZzZXQrK10gPSBkYXRhOwo+PiArCj4+ICsJcmV0dXJuIGR3X29m ZnNldDsKPj4gK30KPj4gKwo+PiArLyogZW1pdF9zdG9yZV9xd29yZAo+PiArICogcG9wdWxhdGUg YmF0Y2ggYnVmZmVyIHdpdGggTUlfU1RPUkVfRFdPUkRfSU1NIGNvbW1hbmQKPj4gKyAqIEBmZDog ZHJtIGZpbGUgZGVzY3JpcHRvcgo+PiArICogQGNtZF9idWY6IGJhdGNoIGJ1ZmZlcgo+PiArICog QGR3X29mZnNldDogd3JpdGUgb2Zmc2V0IGluIGJhdGNoIGJ1ZmZlcgo+PiArICogQHZhZGRyOiBk ZXN0aW5hdGlvbiBWaXJ0dWFsIGFkZHJlc3MKPj4gKyAqIEBkYXRhOiB1NjQgZGF0YSB0byBiZSBz dG9yZWQgYXQgZGVzdGluYXRpb24KPj4gKyAqLwo+PiArc3RhdGljIGludCBlbWl0X3N0b3JlX3F3 b3JkKGludCBmZCwgdWludDMyX3QgKmNtZF9idWYsIHVpbnQzMl90IGR3X29mZnNldCwKPj4gKwkJ CSAgICB1aW50NjRfdCB2YWRkciwgdWludDY0X3QgZGF0YSkKPj4gK3sKPj4gKwkvKiBDaGVjayB0 aGF0IHNvZnRwaW4gYWRkcmVzc2VzIGFyZSBpbiB0aGUgY29ycmVjdCBmb3JtICovCj4+ICsJYXNz ZXJ0KHZhZGRyID09IGdlbjhfY2Fub25pY2FsX2FkZHIodmFkZHIpKTsKPj4gKwo+PiArCS8qIFNE SSBjYW5ub3Qgd3JpdGUgdG8gdW5hbGlnbmVkIGFkZHJlc3NlcyAqLwo+PiArCWFzc2VydCgodmFk ZHIgJiAzKSA9PSAwKTsKPj4gKwo+PiArCWNtZF9idWZbZHdfb2Zmc2V0KytdID0gTUlfU1RPUkVf RFdPUkRfSU1NIHwgMHgzOwo+PiArCWNtZF9idWZbZHdfb2Zmc2V0KytdID0gdmFkZHIgJiAweEZG RkZGRkZDOwo+Cj4gWW91IGp1c3QgYXNzZXJ0ZWQgYWJvdmUgdGhhdCB0aGUgbG93IGJpdHMgYXJl bid0IHNldC4KPgo+PiArCWNtZF9idWZbZHdfb2Zmc2V0KytdID0gKHZhZGRyID4+IDMyKSAmIDB4 RkZGRjsgLyogYml0cyAzMjo0NyAqLwo+Cj4gVGhpcyBjb25mbGljdHMgd2l0aCB0aGUgdmFsdWUg dGhhdCB3b3VsZCBiZSBzZXQgYnkgdGhlIGtlcm5lbCAoaWYgaXQgaGFkCj4gdG8gdGhlIHJlbG9j YXRpb24pLiBXaG8gaXMgY29ycmVjdD8gSWYgbm90IHJlcXVpcmVkLCBwbGVhc2UgZG9uJ3QgcmFp c2UKPiB0aGUgc3BlY3RyZSBvZiBkZXZhc3RhdGluZyBidWdzLgo+ClNvcnJ5IHdpbGwgbW9kaWZ5 IGxpa2UgdGhpcywKCWNtZF9idWZbZHdfb2Zmc2V0KytdID0gKHVpbnQzMl90KXZhZGRyOwoJY21k X2J1Zltkd19vZmZzZXQrK10gPSAodWludDMyX3QpKHZhZGRyID4+IDMyKTsKCj4+ICsJY21kX2J1 Zltkd19vZmZzZXQrK10gPSBkYXRhOwo+PiArCWNtZF9idWZbZHdfb2Zmc2V0KytdID0gZGF0YSA+ PiAzMjsKPj4gKwo+PiArCXJldHVybiBkd19vZmZzZXQ7Cj4+ICt9Cj4+ICsKPj4gKy8qIGVtaXRf YmJfZW5kCj4+ICsgKiBwb3B1bGF0ZSBiYXRjaCBidWZmZXIgd2l0aCBNSV9CQVRDSF9CVUZGRVJf RU5EIGNvbW1hbmQKPj4gKyAqIEBmZDogZHJtIGZpbGUgZGVzY3JpcHRvcgo+PiArICogQGNtZF9i dWY6IGJhdGNoIGJ1ZmZlcgo+PiArICogQGR3X29mZnNldDogd3JpdGUgb2Zmc2V0IGluIGJhdGNo IGJ1ZmZlcgo+PiArICovCj4+ICtzdGF0aWMgaW50IGVtaXRfYmJfZW5kKGludCBmZCwgdWludDMy X3QgKmNtZF9idWYsIHVpbnQzMl90IGR3X29mZnNldCkKPj4gK3sKPj4gKwljbWRfYnVmW2R3X29m ZnNldCsrXSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4+ICsJY21kX2J1Zltkd19vZmZzZXQrK10g PSAwOwo+Cj4gV2h5PyBleGVjYnVmLmJhdGNoX2xlbiBtdXN0IGJlIGFsaWduZWQsIGJ1dCB0aGUg Q1MgcGFyc2VyIGRvZXNuJ3QgY2FyZSwKPiBhbmQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQg eW91IGFyZSBhbGlnbmVkIGNvbWluZyBpbnRvCj4gZW1pdF9iYl9lbmQoKS4KPgpTb3JyeSwgd2ls bCBjaGFuZ2UgbGlrZSB0aGlzLAoJZHdfb2Zmc2V0ID0gQUxJR04oZHdfb2Zmc2V0LCAyKTsKCWNt ZF9idWZbZHdfb2Zmc2V0KytdID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKCWR3X29mZnNldCsrOwoK Pj4gKwo+PiArCXJldHVybiBkd19vZmZzZXQ7Cj4+ICt9Cj4+ICsKPj4gKy8qIHNldHVwX2V4ZWNi dWZmZXIKPj4gKyAqIGhlbHBlciBmb3IgYnVmZmVyIGV4ZWN1dGlvbgo+PiArICogQGV4ZWNidWYg LSBwb2ludGVyIHRvIGV4ZWNidWZmZXIKPj4gKyAqIEBleGVjX29iamVjdCAtIHBvaW50ZXIgdG8g ZXhlYyBvYmplY3QyIHN0cnVjdAo+PiArICogQHJpbmcgLSByaW5nIHRvIGJlIHVzZWQKPj4gKyAq IEBidWZmZXJfY291bnQgLSBob3cgbWFudSBidWZmZXJzIHRvIHN1Ym1pdAo+PiArICogQGJhdGNo X2xlbmd0aCAtIGxlbmd0aCBvZiBiYXRjaCBidWZmZXIKPj4gKyAqLwo+PiArc3RhdGljIHZvaWQg c2V0dXBfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjYnVm LAo+PiArCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZXhlY19vYmpl Y3QsCj4+ICsJCQkgICAgIHVpbnQzMl90IGN0eF9pZCwgaW50IHJpbmcsIGludCBidWZmZXJfY291 bnQsIGludCBiYXRjaF9sZW5ndGgpCj4+ICt7Cj4+ICsJbWVtc2V0KGV4ZWNidWYsIDAsIHNpemVv ZigqZXhlY2J1ZikpOwo+PiArCj4+ICsJZXhlY2J1Zi0+YnVmZmVyc19wdHIgPSAodW5zaWduZWQg bG9uZylleGVjX29iamVjdDsKPj4gKwlleGVjYnVmLT5idWZmZXJfY291bnQgPSBidWZmZXJfY291 bnQ7Cj4+ICsJZXhlY2J1Zi0+YmF0Y2hfbGVuID0gYmF0Y2hfbGVuZ3RoOwo+PiArCWV4ZWNidWYt PmZsYWdzID0gcmluZzsKPj4gKwlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0X2lkKCpleGVj YnVmLCBjdHhfaWQpOwo+PiArfQo+PiArCj4+ICsjZGVmaW5lIFRBQkxFX1NJWkUgMHgxMDAwCj4+ ICsjZGVmaW5lIFRJTEVfU0laRSAweDEwMDAwCj4+ICsKPj4gKyNkZWZpbmUgVFJUVF9TRUdNRU5U X1NJWkUgKDFVTEwgPDwgNDQpCj4+ICsjZGVmaW5lIFBQR1RUX1NJWkUgKDFVTEwgPDwgNDgpCj4+ ICsKPj4gKyNkZWZpbmUgTlVMTF9USUxFX1BBVFRFUk4gICAgMHhGRkZGRkZGRgo+PiArI2RlZmlu ZSBJTlZBTElEX1RJTEVfUEFUVEVSTiAweEZGRkZGRkZFCj4+ICsKPj4gK3N0cnVjdCBsb2NhbF9p OTE1X2dlbV9jb250ZXh0X3RydHRfcGFyYW0gewo+PiArCXVpbnQ2NF90IHNlZ21lbnRfYmFzZV9h ZGRyOwo+PiArCXVpbnQ2NF90IGwzX3RhYmxlX2FkZHJlc3M7Cj4+ICsJdWludDMyX3QgaW52ZF90 aWxlX3ZhbDsKPj4gKwl1aW50MzJfdCBudWxsX3RpbGVfdmFsOwo+PiArfTsKPj4gKwo+PiArLyog c2V0dXBfdHJ0dAo+PiArICogSGVscGVyIGZ1bmN0aW9uIHRvIHJlcXVlc3QgS01EIHRvIGVuYWJs ZSBUUlRUCj4+ICsgKiBAZmQgLSBkcm0gZmQKPj4gKyAqIEBjdHhfaWQgLSBpZCBvZiB0aGUgY29u dGV4dCBmb3Igd2hpY2ggVFJUVCBpcyB0byBiZSBlbmFibGVkCj4+ICsgKiBAbDNfdGFibGVfYWRk cmVzcyAtIEdGWCBhZGRyZXNzIG9mIHRoZSBMMyB0YWJsZQo+PiArICogQHNlZ21lbnRfYmFzZV9h ZGRyIC0gb2Zmc2V0IG9mIHRoZSBUUlRUIHNlZ21lbnQgaW4gUFBHVFQgc3BhY2UKPj4gKyAqLwo+ PiArc3RhdGljIHZvaWQKPj4gK3NldHVwX3RydHQoaW50IGZkLCB1aW50MzJfdCBjdHhfaWQsIHVp bnQ2NF90IGwzX3RhYmxlX2FkZHJlc3MsCj4+ICsJICAgdWludDY0X3Qgc2VnbWVudF9iYXNlX2Fk ZHIpCj4+ICt7Cj4+ICsJc3RydWN0IGxvY2FsX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3Bh cmFtOwo+PiArCXN0cnVjdCBsb2NhbF9pOTE1X2dlbV9jb250ZXh0X3RydHRfcGFyYW0gdHJ0dF9w YXJhbTsKPj4gKwo+PiArCW1lbXNldCgmY3R4X3BhcmFtLCAwLCBzaXplb2YoY3R4X3BhcmFtKSk7 Cj4+ICsKPj4gKwl0cnR0X3BhcmFtLm51bGxfdGlsZV92YWwgPSBOVUxMX1RJTEVfUEFUVEVSTjsK Pj4gKwl0cnR0X3BhcmFtLmludmRfdGlsZV92YWwgPSBJTlZBTElEX1RJTEVfUEFUVEVSTjsKPj4g Kwl0cnR0X3BhcmFtLmwzX3RhYmxlX2FkZHJlc3MgPSBsM190YWJsZV9hZGRyZXNzOwo+PiArCXRy dHRfcGFyYW0uc2VnbWVudF9iYXNlX2FkZHIgPSBzZWdtZW50X2Jhc2VfYWRkcjsKPj4gKwo+PiAr CWN0eF9wYXJhbS5jb250ZXh0ID0gY3R4X2lkOwo+PiArCWN0eF9wYXJhbS5zaXplID0gc2l6ZW9m KHRydHRfcGFyYW0pOwo+PiArCWN0eF9wYXJhbS5wYXJhbSA9IExPQ0FMX0NPTlRFWFRfUEFSQU1f VFJUVDsKPj4gKwljdHhfcGFyYW0udmFsdWUgPSAodWludDY0X3QpJnRydHRfcGFyYW07Cj4+ICsK Pj4gKwlnZW1fY29udGV4dF9zZXRfcGFyYW0oZmQsICZjdHhfcGFyYW0pOwo+PiArfQo+PiArCj4+ ICsvKiBib19hbGxvY19zZXR1cAo+PiArICogYWxsb2NhdGUgYm8gYW5kIHBvcHVsYXRlIGV4ZWMg b2JqZWN0Cj4+ICsgKiBAZXhlY19vYmplY3QyIC0gcG9pbnRlciB0byBleGVjIG9iamVjdAo+PiAr ICogQGJvX3NpemVlIC0gYnVmZmVyIHNpemUKPj4gKyAqIEBmbGFncyAtIGV4ZWMgZmxhZ3MKPj4g KyAqIEBib19vZmZzZXQgLSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IFBQR1RUIG9mZnNldAo+PiAr ICovCj4+ICtzdGF0aWMgdm9pZCBib19hbGxvY19zZXR1cChpbnQgZmQsIHN0cnVjdCBkcm1faTkx NV9nZW1fZXhlY19vYmplY3QyICpleGVjX29iamVjdDIsCj4+ICsJCQkgICB1aW50NjRfdCBib19z aXplLCB1aW50NjRfdCBmbGFncywgdWludDY0X3QgKmJvX29mZnNldCkKPj4gK3sKPj4gKwltZW1z ZXQoZXhlY19vYmplY3QyLCAwLCBzaXplb2YoKmV4ZWNfb2JqZWN0MikpOwo+PiArCWV4ZWNfb2Jq ZWN0Mi0+aGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgYm9fc2l6ZSk7Cj4+ICsJZXhlY19vYmplY3Qy LT5mbGFncyA9IGZsYWdzOwo+PiArCj4+ICsJaWYgKGJvX29mZnNldCkKPj4gKwl7Cj4+ICsJCWV4 ZWNfb2JqZWN0Mi0+b2Zmc2V0ID0gKmJvX29mZnNldDsKPj4gKwkJKmJvX29mZnNldCArPSBib19z aXplOwo+PiArCX0KPj4gK30KPj4gKwo+PiArLyogc3VibWl0X3RydHRfY29udGV4dAo+PiArICog VGhpcyBoZWxwZXIgZnVuY3Rpb24gd2lsbCBjcmVhdGUgYSBuZXcgY29udGV4dCBpZiB0aGUgVFIt VFQgc2VnbWVudAo+PiArICogYmFzZSBhZGRyZXNzIGlzIG5vdCB6ZXJvLCBhbGxvY2F0ZSBhIEwz IHRhYmxlIHBhZ2UsIDIgcGFnZXMgYXBpZWNlCj4+ICsgKiBmb3IgTDIvTDEgdGFibGVzIGFuZCBj b3VwbGUgb2YgZGF0YSBidWZmZXJzIG9mIDY0S0IgaW4gc2l6ZSwgbWF0Y2hpbmcgdGhlCj4+ICsg KiBUaWxlIHNpemUuIFRoZSAyIGRhdGEgYnVmZmVycyB3aWxsIGJlIG1hcHBlZCB0byB0aGUgMiBl bmRzIG9mIFRSVFQgdmlydHVhbAo+PiArICogc3BhY2UuIFNlcmllcyBvZiBNSV9TVE9SRV9EV09S RF9JTU0gY29tbWFuZHMgd2lsbCBiZSBhZGRlZCBpbiB0aGUgYmF0Y2gKPj4gKyAqIGJ1ZmZlciB0 byBmaXJzdCB1cGRhdGUgdGhlIFRSLVRUIHRhYmxlIGVudHJpZXMgYW5kIHRoZW4gdG8gdXBkYXRl IHRoZSBkYXRhCj4+ICsgKiBidWZmZXJzIHVzaW5nIHRoZWlyIFRSLVRUIFZBLCBleGVyY2lzaW5n IHRoZSB0YWJsZSBwcm9ncmFtbWluZyBkb25lCj4+ICsgKiBwcmV2aW91c2x5Lgo+PiArICogSW52 b2tlIENPTlRFWFRfU0VUUEFSQU0gaW9jdGwgdG8gcmVxdWVzdCBLTUQgdG8gZW5hYmxlIFRSVFQu Cj4+ICsgKiBJbnZva2UgZXhlY2J1ZmZlciB0byBzdWJtaXQgdGhlIGJhdGNoIGJ1ZmZlci4KPj4g KyAqIFZlcmlmeSB2YWx1ZSBvZiBmaXJzdCBEV09SRCBpbiB0aGUgMiBkYXRhIGJ1ZmZlciBtYXRj aGVzIHRoZSBkYXRhIGFza2VkCj4+ICsgKiB0byBiZSB3cml0dGVuIGJ5IHRoZSBHUFUuCj4+ICsg Ki8KPj4gK3N0YXRpYyB2b2lkIHN1Ym1pdF90cnR0X2NvbnRleHQoaW50IGZkLCB1aW50NjRfdCBz ZWdtZW50X2Jhc2VfYWRkcikKPj4gK3sKPj4gKwllbnVtIHsKPj4gKwkJTDNfVEJMLAo+PiArCQlM Ml9UQkwxLAo+PiArCQlMMl9UQkwyLAo+PiArCQlMMV9UQkwxLAo+PiArCQlMMV9UQkwyLAo+PiAr CQlEQVRBMSwKPj4gKwkJREFUQTIsCj4+ICsJCUJBVENILAo+PiArCQlOVU1fQlVGRkVSUywKPj4g Kwl9Owo+PiArCj4+ICsJaW50IHJpbmcsIGxlbiA9IDA7Cj4+ICsJdWludDMyX3QgKnB0cjsKPj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Cj4+ICsJc3RydWN0IGRy bV9pOTE1X2dlbV9leGVjX29iamVjdDIgZXhlY19vYmplY3QyW05VTV9CVUZGRVJTXTsKPj4gKwl1 aW50MzJfdCBiYXRjaF9idWZmZXJbQk9fU0laRV07Cj4+ICsJdWludDMyX3QgY3R4X2lkLCBkYXRh LCBsYXN0X2VudHJ5X29mZnNldDsKPj4gKwl1aW50NjRfdCBjdXJfcHBndHRfb2ZmLCBleGVjX2Zs YWdzOwo+PiArCXVpbnQ2NF90IGZpcnN0X3RpbGVfYWRkciwgbGFzdF90aWxlX2FkZHI7Cj4+ICsK Pj4gKwlmaXJzdF90aWxlX2FkZHIgPSBzZWdtZW50X2Jhc2VfYWRkcjsKPj4gKwlsYXN0X3RpbGVf YWRkciAgPSBmaXJzdF90aWxlX2FkZHIgKyBUUlRUX1NFR01FTlRfU0laRSAtIFRJTEVfU0laRTsK Pj4gKwo+PiArCWlmIChzZWdtZW50X2Jhc2VfYWRkciA9PSAwKSB7Cj4+ICsJCS8qIFVzZSB0aGUg ZGVmYXVsdCBjb250ZXh0IGZvciBmaXJzdCBpdGVyYXRpb24gKi8KPj4gKwkJY3R4X2lkID0gMDsK Pgo+IFNlZW1zIGxpa2UgYSB2YXJpYWJsZSB0aGUgY2FsbGVlIHdhbnRzIHRvIGNvbnRyb2wuIChP dGhlcndpc2UgeW91IGFyZQo+IG1pc3NpbmcgYSBzaWduaWZpY2FudCB0ZXN0IGZvciBub24tZGVm YXVsdCBjb250ZXh0cykuIEl0IGFsc28gaW1wbGllcwo+IHRoYXQgd2UgZG9uJ3QgdGVzdCB3aGF0 IGhhcHBlbnMgd2hlbiB3ZSBjYWxsIHNldC10cnR0LWNvbnRleHQgdHdpY2Ugb24gYQo+IGNvbnRl eHQuCj4KCkFzIHBlciB0aGUgY3VycmVudCBsb2dpYywgdGhlIGNhbGxlZSB3aWxsIHVzZSBub24t ZGVmYXVsdCBjb250ZXh0IGZvciAKdGhlIG5vbiB6ZXJvIFRSLVRUIHNlZ21lbnQgc3RhcnQgbG9j YXRpb24uCgpTaG91bGQgYSBuZXcgc3VidGVzdCBiZSBhZGRlZCB0byBjaGVjayB0aGUgY2FzZSB3 aGVuIHNldC10cnR0LWNvbnRleHQgaXMgCmNhbGxlZCB0d2ljZSwgd2hpY2ggaXMgZXhwZWN0ZWQg dG8gZmFpbC4KCj4+ICsJCS8qIFRvIGF2b2lkIGNvbmZsaWN0IHdpdGggdGhlIFRSLVRUIHNlZ21l bnQgKi8KPj4gKwkJY3VyX3BwZ3R0X29mZiA9IFRSVFRfU0VHTUVOVF9TSVpFOwo+PiArCX0gZWxz ZSB7Cj4+ICsJCS8qIENyZWF0ZSBhIG5ldyBjb250ZXh0IHRvIGhhdmUgZGlmZmVyZW50IFRSVFQg c2V0dGluZ3MKPj4gKwkJICogb24gZXZlcnkgaXRlcmF0aW9uLgo+PiArCQkgKi8KPj4gKwkJY3R4 X2lkID0gZ2VtX2NvbnRleHRfY3JlYXRlKGZkKTsKPj4gKwkJY3VyX3BwZ3R0X29mZiA9IDA7Cj4+ ICsJfQo+PiArCj4+ICsJZXhlY19mbGFncyA9IEVYRUNfT0JKRUNUX1NVUFBPUlRTXzQ4Ql9BRERS RVNTOwo+PiArCj4+ICsJLyogZmlyc3QgYWxsb2NhdGUgQmF0Y2ggYnVmZmVyIEJPICovCj4+ICsJ Ym9fYWxsb2Nfc2V0dXAoZmQsICZleGVjX29iamVjdDJbQkFUQ0hdLCBCT19TSVpFLCBleGVjX2Zs YWdzLCBOVUxMKTsKPj4gKwo+PiArCS8qIHRhYmxlIEJPcyBhbmQgZGF0YSBidWZmZXIgQk9zIGFy ZSB3cml0dGVuIGJ5IEdQVSBhbmQgYXJlIHNvZnQgcGlubmVkICovCj4+ICsJZXhlY19mbGFncyB8 PSAoRVhFQ19PQkpFQ1RfV1JJVEUgfCBFWEVDX09CSkVDVF9QSU5ORUQpOwo+PiArCj4+ICsJLyog QWxsb2NhdGUgYSBMMyB0YWJsZSBCTyAqLwo+PiArCWJvX2FsbG9jX3NldHVwKGZkLCAmZXhlY19v YmplY3QyW0wzX1RCTF0sIFRBQkxFX1NJWkUsIGV4ZWNfZmxhZ3MsICZjdXJfcHBndHRfb2ZmKTsK Pj4gKwo+PiArCS8qIEFsbG9jYXRlIHR3byBMMiB0YWJsZSBCT3MgKi8KPj4gKwlib19hbGxvY19z ZXR1cChmZCwgJmV4ZWNfb2JqZWN0MltMMl9UQkwxXSwgVEFCTEVfU0laRSwgZXhlY19mbGFncywg JmN1cl9wcGd0dF9vZmYpOwo+PiArCWJvX2FsbG9jX3NldHVwKGZkLCAmZXhlY19vYmplY3QyW0wy X1RCTDJdLCBUQUJMRV9TSVpFLCBleGVjX2ZsYWdzLCAmY3VyX3BwZ3R0X29mZik7Cj4+ICsKPj4g KwkvKiBBbGxvY2F0ZSB0d28gTDEgdGFibGUgQk9zICovCj4+ICsJYm9fYWxsb2Nfc2V0dXAoZmQs ICZleGVjX29iamVjdDJbTDFfVEJMMV0sIFRBQkxFX1NJWkUsIGV4ZWNfZmxhZ3MsICZjdXJfcHBn dHRfb2ZmKTsKPj4gKwlib19hbGxvY19zZXR1cChmZCwgJmV4ZWNfb2JqZWN0MltMMV9UQkwyXSwg VEFCTEVfU0laRSwgZXhlY19mbGFncywgJmN1cl9wcGd0dF9vZmYpOwo+PiArCj4+ICsJLyogQWxp Z24gdGhlIFBQR1RUIG9mZnNldHMgZm9yIHRoZSAyIGRhdGEgYnVmZmVycyB0byBuZXh0IDY0IEtC IGJvdW5kYXJ5ICovCj4+ICsJY3VyX3BwZ3R0X29mZiA9IEFMSUdOKGN1cl9wcGd0dF9vZmYsIFRJ TEVfU0laRSk7Cj4+ICsKPj4gKwkvKiBBbGxvY2F0ZSB0d28gRGF0YSBidWZmZXIgQk9zICovCj4+ ICsJYm9fYWxsb2Nfc2V0dXAoZmQsICZleGVjX29iamVjdDJbREFUQTFdLCBUSUxFX1NJWkUsIGV4 ZWNfZmxhZ3MsICZjdXJfcHBndHRfb2ZmKTsKPj4gKwlib19hbGxvY19zZXR1cChmZCwgJmV4ZWNf b2JqZWN0MltEQVRBMl0sIFRJTEVfU0laRSwgZXhlY19mbGFncywgJmN1cl9wcGd0dF9vZmYpOwo+ PiArCj4+ICsJLyogQWRkIGNvbW1hbmRzIHRvIHVwZGF0ZSB0aGUgdHdvIEwzIHRhYmxlIGVudHJp ZXMgdG8gcG9pbnQgdGhlbSB0byB0aGUgTDIgdGFibGVzKi8KPj4gKwlsYXN0X2VudHJ5X29mZnNl dCA9IDUxMSpzaXplb2YodWludDY0X3QpOwo+PiArCj4+ICsJbGVuID0gZW1pdF9zdG9yZV9xd29y ZChmZCwgYmF0Y2hfYnVmZmVyLCBsZW4sCj4+ICsJCQkgICAgICAgZXhlY19vYmplY3QyW0wzX1RC TF0ub2Zmc2V0LAo+PiArCQkJICAgICAgIGV4ZWNfb2JqZWN0MltMMl9UQkwxXS5vZmZzZXQpOwo+ PiArCj4+ICsJbGVuID0gZW1pdF9zdG9yZV9xd29yZChmZCwgYmF0Y2hfYnVmZmVyLCBsZW4sCj4+ ICsJCQkgICAgICAgZXhlY19vYmplY3QyW0wzX1RCTF0ub2Zmc2V0ICsgbGFzdF9lbnRyeV9vZmZz ZXQsCj4+ICsJCQkgICAgICAgZXhlY19vYmplY3QyW0wyX1RCTDJdLm9mZnNldCk7Cj4+ICsKPj4g KwkvKiBBZGQgY29tbWFuZHMgdG8gdXBkYXRlIGFuIGVudHJ5IG9mIDIgTDIgdGFibGVzIHRvIHBv aW50IHRoZW0gdG8gdGhlIEwxIHRhYmxlcyovCj4+ICsJbGVuID0gZW1pdF9zdG9yZV9xd29yZChm ZCwgYmF0Y2hfYnVmZmVyLCBsZW4sCj4+ICsJCQkgICAgICAgZXhlY19vYmplY3QyW0wyX1RCTDFd Lm9mZnNldCwKPj4gKwkJCSAgICAgICBleGVjX29iamVjdDJbTDFfVEJMMV0ub2Zmc2V0KTsKPj4g Kwo+PiArCWxlbiA9IGVtaXRfc3RvcmVfcXdvcmQoZmQsIGJhdGNoX2J1ZmZlciwgbGVuLAo+PiAr CQkJICAgICAgIGV4ZWNfb2JqZWN0MltMMl9UQkwyXS5vZmZzZXQgKyBsYXN0X2VudHJ5X29mZnNl dCwKPj4gKwkJCSAgICAgICBleGVjX29iamVjdDJbTDFfVEJMMl0ub2Zmc2V0KTsKPj4gKwo+PiAr CS8qIEFkZCBjb21tYW5kcyB0byB1cGRhdGUgYW4gZW50cnkgb2YgMiBMMSB0YWJsZXMgdG8gcG9p bnQgdGhlbSB0byB0aGUgZGF0YSBidWZmZXJzKi8KPj4gKwlsYXN0X2VudHJ5X29mZnNldCA9IDEw MjMqc2l6ZW9mKHVpbnQzMl90KTsKPj4gKwo+PiArCWxlbiA9IGVtaXRfc3RvcmVfZHdvcmQoZmQs IGJhdGNoX2J1ZmZlciwgbGVuLAo+PiArCQkJICAgICAgIGV4ZWNfb2JqZWN0MltMMV9UQkwxXS5v ZmZzZXQsCj4+ICsJCQkgICAgICAgZXhlY19vYmplY3QyW0RBVEExXS5vZmZzZXQgPj4gMTYpOwo+ PiArCj4+ICsJbGVuID0gZW1pdF9zdG9yZV9kd29yZChmZCwgYmF0Y2hfYnVmZmVyLCBsZW4sCj4+ ICsJCQkgICAgICAgZXhlY19vYmplY3QyW0wxX1RCTDJdLm9mZnNldCArIGxhc3RfZW50cnlfb2Zm c2V0LAo+PiArCQkJICAgICAgIGV4ZWNfb2JqZWN0MltEQVRBMl0ub2Zmc2V0ID4+IDE2KTsKPj4g Kwo+PiArCS8qIEFkZCBjb21tYW5kcyB0byB1cGRhdGUgdGhlIDIgZGF0YSBidWZmZXJzLCB1c2lu ZyB0aGVpciBUUlRUIFZBICovCj4+ICsJZGF0YSA9IDB4MTIzNDU2Nzg7Cj4+ICsJbGVuID0gZW1p dF9zdG9yZV9kd29yZChmZCwgYmF0Y2hfYnVmZmVyLCBsZW4sIGZpcnN0X3RpbGVfYWRkciwgZGF0 YSk7Cj4+ICsJbGVuID0gZW1pdF9zdG9yZV9kd29yZChmZCwgYmF0Y2hfYnVmZmVyLCBsZW4sIGxh c3RfdGlsZV9hZGRyLCBkYXRhKTsKPj4gKwo+PiArCWxlbiA9IGVtaXRfYmJfZW5kKGZkLCBiYXRj aF9idWZmZXIsIGxlbik7Cj4+ICsJZ2VtX3dyaXRlKGZkLCBleGVjX29iamVjdDJbQkFUQ0hdLmhh bmRsZSwgMCwgYmF0Y2hfYnVmZmVyLCBsZW4qNCk7Cj4+ICsKPj4gKwkvKiBSZXF1ZXN0IEtNRCB0 byBzZXR1cCB0aGUgVFItVFQgKi8KPj4gKwlzZXR1cF90cnR0KGZkLCBjdHhfaWQsIGV4ZWNfb2Jq ZWN0MltMM19UQkxdLm9mZnNldCwgZmlyc3RfdGlsZV9hZGRyKTsKPj4gKwo+PiArCXJpbmcgPSBJ OTE1X0VYRUNfUkVOREVSOwo+PiArCXNldHVwX2V4ZWNidWZmZXIoJmV4ZWNidWYsIGV4ZWNfb2Jq ZWN0MiwgY3R4X2lkLCByaW5nLCBOVU1fQlVGRkVSUywgbGVuKjQpOwo+PiArCj4+ICsJLyogc3Vi bWl0IGNvbW1hbmQgYnVmZmVyICovCj4+ICsJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKPj4g Kwo+PiArCS8qIHJlYWQgdGhlIDIgZGF0YSBidWZmZXJzIHRvIGNoZWNrIGZvciB0aGUgdmFsdWUg d3JpdHRlbiBieSB0aGUgR1BVICovCj4+ICsJcHRyID0gbW1hcF9ibyhmZCwgZXhlY19vYmplY3Qy W0RBVEExXS5oYW5kbGUsIFRJTEVfU0laRSk7Cj4+ICsJaWd0X2ZhaWxfb25fZihwdHJbMF0gIT0g ZGF0YSwKPj4gKwkJIlxuQ1BVIHJlYWQgZG9lcyBub3QgbWF0Y2ggR1BVIHdyaXRlLFwKPj4gKwkJ ZXhwZWN0ZWQ6IDB4JXgsIGdvdDogMHgleFxuIiwKPj4gKwkJZGF0YSwgcHRyWzBdKTsKPgo+IEp1 c3QgaWd0X2Fzc2VydF9lcV91MzIocHRyWzBdLCBleHBlY3RlZCk7CgpGaW5lIHdpbGwgY2hhbmdl Lgo+Cj4+ICsKPj4gKwlwdHIgPSBtbWFwX2JvKGZkLCBleGVjX29iamVjdDJbREFUQTJdLmhhbmRs ZSwgVElMRV9TSVpFKTsKPj4gKwlpZ3RfZmFpbF9vbl9mKHB0clswXSAhPSBkYXRhLAo+PiArCQki XG5DUFUgcmVhZCBkb2VzIG5vdCBtYXRjaCBHUFUgd3JpdGUsXAo+PiArCQlleHBlY3RlZDogMHgl eCwgZ290OiAweCV4XG4iLAo+PiArCQlkYXRhLCBwdHJbMF0pOwo+PiArCj4+ICsJZ2VtX2Nsb3Nl KGZkLCBleGVjX29iamVjdDJbTDNfVEJMXS5oYW5kbGUpOwo+PiArCWdlbV9jbG9zZShmZCwgZXhl Y19vYmplY3QyW0wyX1RCTDFdLmhhbmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZkLCBleGVjX29iamVj dDJbTDJfVEJMMl0uaGFuZGxlKTsKPj4gKwlnZW1fY2xvc2UoZmQsIGV4ZWNfb2JqZWN0MltMMV9U QkwxXS5oYW5kbGUpOwo+PiArCWdlbV9jbG9zZShmZCwgZXhlY19vYmplY3QyW0wxX1RCTDJdLmhh bmRsZSk7Cj4+ICsJZ2VtX2Nsb3NlKGZkLCBleGVjX29iamVjdDJbREFUQTFdLmhhbmRsZSk7Cj4+ ICsJZ2VtX2Nsb3NlKGZkLCBleGVjX29iamVjdDJbREFUQTJdLmhhbmRsZSk7Cj4+ICsJZ2VtX2Ns b3NlKGZkLCBleGVjX29iamVjdDJbQkFUQ0hdLmhhbmRsZSk7Cj4KPiBCZWZvcmUgd2UgZGVzdHJv eSB0aGUgY29udGV4dCAob3IgZXhpdCksIGhvdyBhYm91dCBhIHF1ZXJ5X3RydHQoKS4KPiBXZSBz aG91bGQgYWxzbyBxdWVyeSBhZnRlciBjcmVhdGUgdG8gZW5zdXJlIHRoYXQgdGhlIGRlZmF1bHRz IGFyZSBzZXQuCj4gSnVzdCB0aGlua2luZyB0aGF0IGlzIGJldHRlciBkb2luZyB0aGUgcXVlcnkg YWZ0ZXIgc2V2ZXJhbCBzdGVwcyAoaS5lLgo+IHRoZSBleGVjYnVmKSByYXRoZXIgdGhhbiBpbW1l ZGlhdGVseSBhZnRlciB0aGUgc2V0IGluIG9yZGVyIHRvIGdpdmUgdGltZQo+IGZvciBzb21ldGhp bmcgdG8gZ28gd3JvbmcuIFdlIHNob3VsZCBhbHNvIGVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgcmVt YWlucwo+IHNldCBhZnRlciBhIEdQVSBoYW5nIGFuZCBzdXNwZW5kL3Jlc3VtZS4KCk5pY2Ugc3Vn Z2VzdGlvbiwgY3VycmVudGx5IGdldC10cnR0LWNvbnRleHQgd2lsbCBqdXN0IHJldHJpZXZlIHRo ZSBUUi1UVCAKcGFyYW1zIHN0b3JlZCB3aXRoIGEgRHJpdmVyIGZvciBhIGdpdmVuIGNvbnRleHQu ClNob3VsZCB0aGUgQ29udGV4dCBpbWFnZSBpdHNlbGYgYmUgcmVhZCB0byBlbnN1cmUgdGhhdCBz ZXR0aW5ncyBhcmUgCmludGFjdCBvciBub3QgPwoKQmVzdCByZWdhcmRzCkFrYXNoCj4gLUNocmlz Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==