From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 377626F4B3 for ; Thu, 21 Nov 2019 17:26:27 +0000 (UTC) Date: Thu, 21 Nov 2019 09:26:25 -0800 From: Umesh Nerlige Ramappa Message-ID: <20191121172625.GA68520@orsosgc001.amr.corp.intel.com> References: <20191120000800.16281-1-umesh.nerlige.ramappa@intel.com> <20191120000800.16281-3-umesh.nerlige.ramappa@intel.com> <609f3846-d778-6858-fba1-c446b6db353e@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <609f3846-d778-6858-fba1-c446b6db353e@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v4 3/4] test/perf: Add test for TGL OAR unit List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Lionel Landwerlin Cc: igt-dev@lists.freedesktop.org, Chris Wilson List-ID: T24gVGh1LCBOb3YgMjEsIDIwMTkgYXQgMDM6MjY6NThQTSArMDIwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj5PbiAyMC8xMS8yMDE5IDAyOjA3LCBVbWVzaCBOZXJsaWdlIFJhbWFwcGEgd3Jv dGU6Cj4+QWRkIGEgdGVzdCB0aGF0IG1lYXN1cmVzIHdvcmsgdXNpbmcgTUktUlBDIGZvciB0aGUg c3BlY2lmaWMgY29udGV4dAo+PndpdGhvdXQgdXNpbmcgcmVwb3J0cyBmcm9tIHRoZSBPQSBidWZm ZXIuCj4+Cj4+VGlnZXJsYWtlIGludHJvZHVjZXMgYW4gT0EgdW5pdCB0aGF0IG1lYXN1cmVzIHdv cmsgc3BlY2lmaWMgdG8gcmVuZGVyCj4+d29ya2xvYWRzLiBUaGlzIG1lYW5zIHdlIGRvIG5vdCBo YXZlIHRvIHJlbHkgb24gcmVwb3J0cyBmcm9tIHRoZSBPQQo+PmJ1ZmZlciB0byBub3JtYWxpemUg dGhlIHJlcG9ydHMgb2J0YWluZWQgZnJvbSBNSSBSRVBPUlQgUEVSRiBDT1VOVAo+PmFueW1vcmUu Cj4+Cj4+djI6Cj4+LSBBZGQgaWd0X2Ryb3Bfcm9vdCB0byBtYWtlIHRoZSB0ZXN0IHJ1biBpbiBu b24tcHJpdmlsZWdlZCBtb2RlIChMaW9uZWwpCj4+LSBNb3ZlIHBhcmFtZXRlciB0byBfX3BlcmZf b3BlbiBpbnNpZGUgdGhlIHNhbWUgZnVuY3Rpb24gKExpb25lbCkKPj4KPj52MywgdjQ6Cj4+LSBB ZGQgaWd0IHRlc3QgZGVzY3JpcHRpb24KPj4KPj5TaWduZWQtb2ZmLWJ5OiBVbWVzaCBOZXJsaWdl IFJhbWFwcGEgPHVtZXNoLm5lcmxpZ2UucmFtYXBwYUBpbnRlbC5jb20+Cj4+LS0tCj4+ICB0ZXN0 cy9wZXJmLmMgfCAzMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4+ICAxIGZpbGUgY2hhbmdlZCwgMzM0IGluc2VydGlvbnMoKykKPj4KPj5kaWZm IC0tZ2l0IGEvdGVzdHMvcGVyZi5jIGIvdGVzdHMvcGVyZi5jCj4+aW5kZXggNTA2YjY0ZWMuLmI4 MGE5NWM3IDEwMDY0NAo+Pi0tLSBhL3Rlc3RzL3BlcmYuYwo+PisrKyBiL3Rlc3RzL3BlcmYuYwo+ PkBAIC0zNjAwLDYgKzM2MDAsMzM0IEBAIGdlbjhfdGVzdF9zaW5nbGVfY3R4X3JlbmRlcl90YXJn ZXRfd3JpdGVzX2FfY291bnRlcih2b2lkKQo+PiAgCX0gd2hpbGUgKFdFWElUU1RBVFVTKGNoaWxk X3JldCkgPT0gRUFHQUlOKTsKPj4gIH0KPj4rc3RhdGljIHZvaWQgZ2VuMTJfc2luZ2xlX2N0eF9o ZWxwZXIodm9pZCkKPj4rewo+PisJdWludDY0X3QgcHJvcGVydGllc1tdID0gewo+PisJCS8qIEhh dmUgYSByYW5kb20gdmFsdWUgaGVyZSBmb3IgdGhlIGNvbnRleHQgaWQsIGJ1dCBpbml0aWFsaXpl Cj4+KwkJICogaXQgb25jZSB5b3UgZmlndXJlIG91dCB0aGUgY29udGV4dCBJRCBmb3IgdGhlIHdv cmsgdG8gYmUKPj4rCQkgKiBtZWFzdXJlZAo+PisJCSAqLwo+PisJCURSTV9JOTE1X1BFUkZfUFJP UF9DVFhfSEFORExFLCBVSU5UNjRfTUFYLAo+PisKPj4rCQkvKiBPQSB1bml0IGNvbmZpZ3VyYXRp b246Cj4+KwkJICogRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9PQSBpcyBubyBsb25nZXIgcmVx dWlyZWQgZm9yIEdlbjEyCj4+KwkJICogYmVjYXVzZSB0aGUgT0FSIHVuaXQgaW5jcmVtZW50cyBj b3VudGVycyBvbmx5IGZvciB0aGUKPj4rCQkgKiByZWxldmFudCBjb250ZXh0LiBObyBvdGhlciBw YXJhbWV0ZXJzIGFyZSBuZWVkZWQgc2luY2Ugd2UgZG8KPj4rCQkgKiBub3QgcmVseSBvbiB0aGUg T0EgYnVmZmVyIGFueW1vcmUgdG8gbm9ybWFsaXplIHRoZSBjb3VudGVyCj4+KwkJICogdmFsdWVz Lgo+PisJCSAqLwo+PisJCURSTV9JOTE1X1BFUkZfUFJPUF9PQV9NRVRSSUNTX1NFVCwgdGVzdF9t ZXRyaWNfc2V0X2lkLAo+PisJCURSTV9JOTE1X1BFUkZfUFJPUF9PQV9GT1JNQVQsIHRlc3Rfb2Ff Zm9ybWF0LAo+PisJfTsKPj4rCXN0cnVjdCBkcm1faTkxNV9wZXJmX29wZW5fcGFyYW0gcGFyYW0g PSB7Cj4+KwkJLmZsYWdzID0gSTkxNV9QRVJGX0ZMQUdfRkRfQ0xPRVhFQywKPj4rCQkubnVtX3By b3BlcnRpZXMgPSBBUlJBWV9TSVpFKHByb3BlcnRpZXMpIC8gMiwKPj4rCQkucHJvcGVydGllc19w dHIgPSB0b191c2VyX3BvaW50ZXIocHJvcGVydGllcyksCj4+Kwl9Owo+PisJZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyOwo+PisJZHJtX2ludGVsX2NvbnRleHQgKmNvbnRleHQwLCAqY29udGV4dDE7 Cj4+KwlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwo+PisJc3RydWN0IGlndF9idWYg c3JjWzNdLCBkc3RbM107Cj4+Kwlkcm1faW50ZWxfYm8gKmJvOwo+PisJdWludDMyX3QgKnJlcG9y dDBfMzIsICpyZXBvcnQxXzMyLCAqcmVwb3J0Ml8zMiwgKnJlcG9ydDNfMzI7Cj4+Kwl1aW50NjRf dCB0aW1lc3RhbXAwXzY0LCB0aW1lc3RhbXAxXzY0Owo+PisJdWludDMyX3QgZGVsdGFfdHM2NCwg ZGVsdGFfb2EzMjsKPj4rCXVpbnQ2NF90IGRlbHRhX3RzNjRfbnMsIGRlbHRhX29hMzJfbnM7Cj4+ Kwl1aW50MzJfdCBkZWx0YV9kZWx0YTsKPj4rCWludCB3aWR0aCA9IDgwMDsKPj4rCWludCBoZWln aHQgPSA2MDA7Cj4+KyNkZWZpbmUgSU5WQUxJRF9DVFhfSUQgMHhmZmZmZmZmZgo+PisJdWludDMy X3QgY3R4MF9pZCA9IElOVkFMSURfQ1RYX0lEOwo+PisJdWludDMyX3QgY3R4MV9pZCA9IElOVkFM SURfQ1RYX0lEOwo+PisJaW50IHJldDsKPj4rCXN0cnVjdCBhY2N1bXVsYXRvciBhY2N1bXVsYXRv ciA9IHsKPj4rCQkuZm9ybWF0ID0gdGVzdF9vYV9mb3JtYXQKPj4rCX07Cj4+Kwo+PisJYnVmbWdy ID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1fZmQsIDQwOTYpOwo+PisJZHJtX2ludGVs X2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGJ1Zm1ncik7Cj4+Kwo+PisJZm9yIChpbnQgaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHNyYyk7IGkrKykgewo+PisJCXNjcmF0Y2hfYnVmX2luaXQoYnVmbWdy LCAmc3JjW2ldLCB3aWR0aCwgaGVpZ2h0LCAweGZmMDAwMGZmKTsKPj4rCQlzY3JhdGNoX2J1Zl9p bml0KGJ1Zm1nciwgJmRzdFtpXSwgd2lkdGgsIGhlaWdodCwgMHgwMGZmMDBmZik7Cj4+Kwl9Cj4+ Kwo+PisJYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRldmlkKTsKPj4r Cj4+Kwljb250ZXh0MCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9jcmVhdGUoYnVmbWdyKTsKPj4r CWlndF9hc3NlcnQoY29udGV4dDApOwo+PisKPj4rCWNvbnRleHQxID0gZHJtX2ludGVsX2dlbV9j b250ZXh0X2NyZWF0ZShidWZtZ3IpOwo+PisJaWd0X2Fzc2VydChjb250ZXh0MSk7Cj4+Kwo+PisJ aWd0X2RlYnVnKCJzdWJtaXR0aW5nIHdhcm0gdXAgcmVuZGVyX2NvcHlcbiIpOwo+PisKPj4rCS8q IFN1Ym1pdCBzb21lIGVhcmx5LCB1bm1lYXN1cmVkLCB3b3JrIHRvIHRoZSBjb250ZXh0IHdlIHdh bnQKPj4rCSAqIHRvIG1lYXN1cmUgdG8gdHJ5IGFuZCBjYXRjaCBpc3N1ZXMgd2l0aCBpOTE1LXBl cmYKPj4rCSAqIGluaXRpYWxpemluZyB0aGUgSFcgY29udGV4dCBJRCBmb3IgZmlsdGVyaW5nLgo+ PisJICoKPj4rCSAqIFdlIGRvIHRoaXMgYmVjYXVzZSBpOTE1LXBlcmYgc2luZ2xlIGNvbnRleHQg ZmlsdGVyaW5nIGhhZAo+PisJICogcHJldmlvdXNseSBvbmx5IHJlbGllZCBvbiBhIGhvb2sgaW50 byBjb250ZXh0IHBpbm5pbmcgdG8KPj4rCSAqIGluaXRpYWxpemUgdGhlIEhXIGNvbnRleHQgSUQs IGluc3RlYWQgb2YgYWxzbyB0cnlpbmcgdG8KPj4rCSAqIGRldGVybWluZSB0aGUgSFcgSUQgd2hp bGUgb3BlbmluZyB0aGUgc3RyZWFtLCBpbiBjYXNlIGl0Cj4+KwkgKiBoYXMgYWxyZWFkeSBiZWVu IHBpbm5lZC4KPj4rCSAqCj4+KwkgKiBUaGlzIHdhc24ndCBub3RpY2VkIGJ5IHRoZSBwcmV2aW91 cyB1bml0IHRlc3QgYmVjYXVzZSB3ZQo+PisJICogd2VyZSBvcGVuaW5nIHRoZSBzdHJlYW0gd2hp bGUgdGhlIGNvbnRleHQgaGFkbid0IGJlZW4KPj4rCSAqIHRvdWNoZWQgb3IgcGlubmVkIHlldCBh bmQgc28gaXQgd29ya2VkIG91dCBjb3JyZWN0bHkgdG8gd2FpdAo+PisJICogZm9yIHRoZSBwaW5u aW5nIGhvb2suCj4+KwkgKgo+PisJICogTm93IGEgYnVnZ3kgdmVyc2lvbiBvZiBpOTE1LXBlcmYg d2lsbCBmYWlsIHRvIG1lYXN1cmUKPj4rCSAqIGFueXRoaW5nIGZvciBjb250ZXh0MCBvbmNlIHRo aXMgaW5pdGlhbCByZW5kZXJfY29weSgpIGVuZHMKPj4rCSAqIHVwIHBpbm5pbmcgdGhlIGNvbnRl eHQgc2luY2UgdGhlcmUgd29uJ3QgZXZlciBiZSBhIHBpbm5pbmcKPj4rCSAqIGhvb2sgY2FsbGJh Y2suCj4+KwkgKi8KPj4rCXJlbmRlcl9jb3B5KGJhdGNoLCBjb250ZXh0MCwKPj4rCQkgICAgJnNy Y1swXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKPj4rCQkgICAgJmRzdFswXSwgMCwgMCk7Cj4+Kwo+ PisJLyogSW5pdGlhbGl6ZSB0aGUgY29udGV4dCBwYXJhbWV0ZXIgdG8gdGhlIHBlcmYgb3BlbiBp b2N0bCBoZXJlICovCj4+KwlyZXQgPSBkcm1faW50ZWxfZ2VtX2NvbnRleHRfZ2V0X2lkKGNvbnRl eHQwLCAmY3R4MF9pZCk7Cj4+KwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4+KwlpZ3RfYXNzZXJ0 X25lcShjdHgwX2lkLCAweGZmZmZmZmZmKTsKPj4rCXByb3BlcnRpZXNbMV0gPSBjdHgwX2lkOwo+ PisKPj4rCWlndF9kZWJ1Zygib3BlbmluZyBpOTE1LXBlcmYgc3RyZWFtXG4iKTsKPj4rCXN0cmVh bV9mZCA9IF9fcGVyZl9vcGVuKGRybV9mZCwgJnBhcmFtLCBmYWxzZSk7Cj4+Kwo+PisJYm8gPSBk cm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAibWlfcnBjIGRlc3QgYm8iLCA0MDk2LCA2NCk7Cj4+ Kwo+PisJLyogU2V0IHdyaXRlIGRvbWFpbiB0byBjcHUgYnJpZWZseSB0byBmaWxsIHRoZSBidWZm ZXIgd2l0aCA4MHMgKi8KPj4rCXJldCA9IGRybV9pbnRlbF9ib19tYXAoYm8sIHRydWUpOwo+PisJ aWd0X2Fzc2VydF9lcShyZXQsIDApOwo+PisJbWVtc2V0KGJvLT52aXJ0dWFsLCAweDgwLCAyMDQ4 KTsKPj4rCW1lbXNldChiby0+dmlydHVhbCArIDIwNDgsIDAsIDIwNDgpOwo+PisJZHJtX2ludGVs X2JvX3VubWFwKGJvKTsKPj4rCj4+KwkvKiBTdWJtaXQgYW4gbWktcnBjIHRvIGNvbnRleHQwIGJl Zm9yZSBtZWFzdXJhYmxlIHdvcmsgKi8KPj4rI2RlZmluZSBCT19USU1FU1RBTVBfT0ZGU0VUMCAx MDI0Cj4+KyNkZWZpbmUgQk9fUkVQT1JUX09GRlNFVDAgMAo+PisjZGVmaW5lIEJPX1JFUE9SVF9J RDAgMHhkZWFkYmVlZgo+PisJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKPj4r CQkJCSAgICAgYm8sCj4+KwkJCQkgICAgIEJPX1RJTUVTVEFNUF9PRkZTRVQwLAo+PisJCQkJICAg ICBCT19SRVBPUlRfT0ZGU0VUMCwKPj4rCQkJCSAgICAgQk9fUkVQT1JUX0lEMCk7Cj4+KwlpbnRl bF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQwKTsKPj4rCj4+ KwkvKiBUaGlzIGlzIHRoZSB3b3JrL2NvbnRleHQgdGhhdCBpcyBtZWFzdXJlZCBmb3IgY291bnRl ciBpbmNyZW1lbnRzICovCj4+KwlyZW5kZXJfY29weShiYXRjaCwgY29udGV4dDAsCj4+KwkJICAg ICZzcmNbMF0sIDAsIDAsIHdpZHRoLCBoZWlnaHQsCj4+KwkJICAgICZkc3RbMF0sIDAsIDApOwo+ PisJaW50ZWxfYmF0Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MCk7 Cj4+Kwo+PisJLyogU3VibWl0IGFuIG1pLXJwYyB0byBjb250ZXh0MSBiZWZvcmUgd29yawo+PisJ ICoKPj4rCSAqIE9uIGdlbjEyLCB0aGlzIG1lYXN1cmVtZW50IHNob3VsZCBqdXN0IHlpZWxkIGNv dW50ZXJzIHRoYXQgYXJlCj4+KwkgKiBhbGwgemVyb2VzLCBzaW5jZSB0aGUgY291bnRlcnMgd2ls bCBvbmx5IGluY3JlbWVudCBmb3IgdGhlCj4+KwkgKiBjb250ZXh0IHBhc3NlZCB0byBwZXJmIG9w ZW4gaW9jdGwKPj4rCSAqLwo+PisjZGVmaW5lIEJPX1RJTUVTVEFNUF9PRkZTRVQyIDEwNDAKPj4r I2RlZmluZSBCT19SRVBPUlRfT0ZGU0VUMiA1MTIKPj4rI2RlZmluZSBCT19SRVBPUlRfSUQyIDB4 MDBjMGZmZWUKPj4rCWVtaXRfc3RhbGxfdGltZXN0YW1wX2FuZF9ycGMoYmF0Y2gsCj4+KwkJCQkg ICAgIGJvLAo+PisJCQkJICAgICBCT19USU1FU1RBTVBfT0ZGU0VUMiwKPj4rCQkJCSAgICAgQk9f UkVQT1JUX09GRlNFVDIsCj4+KwkJCQkgICAgIEJPX1JFUE9SVF9JRDIpOwo+PisJaW50ZWxfYmF0 Y2hidWZmZXJfZmx1c2hfd2l0aF9jb250ZXh0KGJhdGNoLCBjb250ZXh0MSk7Cj4+Kwo+PisJLyog U3VibWl0IHR3byBjb3BpZXMgb24gdGhlIG90aGVyIGNvbnRleHQgdG8gYXZvaWQgYSBmYWxzZQo+ PisJICogcG9zaXRpdmUgaW4gY2FzZSB0aGUgZHJpdmVyIHNvbWVob3cgZW5kZWQgdXAgZmlsdGVy aW5nIGZvcgo+PisJICogY29udGV4dDEKPj4rCSAqLwo+PisJcmVuZGVyX2NvcHkoYmF0Y2gsIGNv bnRleHQxLAo+PisJCSAgICAmc3JjWzFdLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LAo+PisJCSAgICAm ZHN0WzFdLCAwLCAwKTsKPj4rCXJldCA9IGRybV9pbnRlbF9nZW1fY29udGV4dF9nZXRfaWQoY29u dGV4dDEsICZjdHgxX2lkKTsKPj4rCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPj4rCWlndF9hc3Nl cnRfbmVxKGN0eDFfaWQsIDB4ZmZmZmZmZmYpOwo+PisKPj4rCXJlbmRlcl9jb3B5KGJhdGNoLCBj b250ZXh0MSwKPj4rCQkgICAgJnNyY1syXSwgMCwgMCwgd2lkdGgsIGhlaWdodCwKPj4rCQkgICAg JmRzdFsyXSwgMCwgMCk7Cj4+KwlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQo YmF0Y2gsIGNvbnRleHQxKTsKPj4rCj4+KwkvKiBTdWJtaXQgYW4gbWktcnBjIHRvIGNvbnRleHQx IGFmdGVyIGFsbCB3b3JrICovCj4+KyNkZWZpbmUgQk9fVElNRVNUQU1QX09GRlNFVDMgMTA0OAo+ PisjZGVmaW5lIEJPX1JFUE9SVF9PRkZTRVQzIDc2OAo+PisjZGVmaW5lIEJPX1JFUE9SVF9JRDMg MHgwMWMwZmZlZQo+PisJZW1pdF9zdGFsbF90aW1lc3RhbXBfYW5kX3JwYyhiYXRjaCwKPj4rCQkJ CSAgICAgYm8sCj4+KwkJCQkgICAgIEJPX1RJTUVTVEFNUF9PRkZTRVQzLAo+PisJCQkJICAgICBC T19SRVBPUlRfT0ZGU0VUMywKPj4rCQkJCSAgICAgQk9fUkVQT1JUX0lEMyk7Cj4+KwlpbnRlbF9i YXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQxKTsKPj4rCj4+Kwkv KiBTdWJtaXQgYW4gbWktcnBjIHRvIGNvbnRleHQwIGFmdGVyIGFsbCBtZWFzdXJhYmxlIHdvcmsg Ki8KPj4rI2RlZmluZSBCT19USU1FU1RBTVBfT0ZGU0VUMSAxMDMyCj4+KyNkZWZpbmUgQk9fUkVQ T1JUX09GRlNFVDEgMjU2Cj4+KyNkZWZpbmUgQk9fUkVQT1JUX0lEMSAweGJlZWZiZWVmCj4+Kwll bWl0X3N0YWxsX3RpbWVzdGFtcF9hbmRfcnBjKGJhdGNoLAo+PisJCQkJICAgICBibywKPj4rCQkJ CSAgICAgQk9fVElNRVNUQU1QX09GRlNFVDEsCj4+KwkJCQkgICAgIEJPX1JFUE9SVF9PRkZTRVQx LAo+PisJCQkJICAgICBCT19SRVBPUlRfSUQxKTsKPj4rCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNo X3dpdGhfY29udGV4dChiYXRjaCwgY29udGV4dDApOwo+PisKPj4rCS8qIFNldCB3cml0ZSBkb21h aW4gdG8gbm9uZSAqLwo+PisJcmV0ID0gZHJtX2ludGVsX2JvX21hcChibywgZmFsc2UpOwo+PisJ aWd0X2Fzc2VydF9lcShyZXQsIDApOwo+PisKPj4rCS8qIFNhbml0eSBjaGVjayByZXBvcnRzCj4+ KwkgKiByZXBvcnRYXzMyWzBdOiByZXBvcnQgaWQgcGFzc2VkIHdpdGggbWktcnBjCj4+KwkgKiBy ZXBvcnRYXzMyWzFdOiB0aW1lc3RhbXAKPj4rCSAqIHJlcG9ydFhfMzJbMl06IGNvbnRleHQgaWQK Pj4rCSAqCj4+KwkgKiByZXBvcnQwXzMyOiBzdGFydCBvZiBtZWFzdXJhYmxlIHdvcmsKPj4rCSAq IHJlcG9ydDFfMzI6IGVuZCBvZiBtZWFzdXJhYmxlIHdvcmsKPj4rCSAqIHJlcG9ydDJfMzI6IHN0 YXJ0IG9mIG90aGVyIHdvcmsKPj4rCSAqIHJlcG9ydDNfMzI6IGVuZCBvZiBvdGhlciB3b3JrCj4+ KwkgKi8KPj4rCXJlcG9ydDBfMzIgPSBiby0+dmlydHVhbDsKPj4rCWlndF9hc3NlcnRfZXEocmVw b3J0MF8zMlswXSwgMHhkZWFkYmVlZik7Cj4+KwlpZ3RfYXNzZXJ0X25lcShyZXBvcnQwXzMyWzFd LCAwKTsKPj4rCWN0eDBfaWQgPSByZXBvcnQwXzMyWzJdOwo+PisJaWd0X2RlYnVnKCJNSV9SUEMo c3RhcnQpIENUWCBJRDogJXVcbiIsIGN0eDBfaWQpOwo+PisJZHVtcF9yZXBvcnQocmVwb3J0MF8z MiwgNjQsICJyZXBvcnQwXzMyIik7Cj4+Kwo+PisJcmVwb3J0MV8zMiA9IHJlcG9ydDBfMzIgKyA2 NDsKPj4rCWlndF9hc3NlcnRfZXEocmVwb3J0MV8zMlswXSwgMHhiZWVmYmVlZik7Cj4+KwlpZ3Rf YXNzZXJ0X25lcShyZXBvcnQxXzMyWzFdLCAwKTsKPj4rCWN0eDFfaWQgPSByZXBvcnQxXzMyWzJd Owo+PisJZHVtcF9yZXBvcnQocmVwb3J0MV8zMiwgNjQsICJyZXBvcnQxXzMyIik7Cj4+Kwo+PisJ LyogVmVyaWZ5IHRoYXQgY291bnRlcnMgaW4gY29udGV4dDEgYXJlIGFsbCB6ZXJvZXMgKi8KPj4r CXJlcG9ydDJfMzIgPSByZXBvcnQwXzMyICsgMTI4Owo+PisJaWd0X2Fzc2VydF9lcShyZXBvcnQy XzMyWzBdLCAweDAwYzBmZmVlKTsKPj4rCWlndF9hc3NlcnRfbmVxKHJlcG9ydDJfMzJbMV0sIDAp Owo+PisJZHVtcF9yZXBvcnQocmVwb3J0Ml8zMiwgNjQsICJyZXBvcnQyXzMyIik7Cj4+KwlpZ3Rf YXNzZXJ0X2VxKDAsIG1lbWNtcCgmcmVwb3J0Ml8zMls0XSwKPj4rCQkJCWJvLT52aXJ0dWFsICsg MjA0OCwKPj4rCQkJCTI0MCkpOwoKbWVtY21wIGhlcmUgXgoKPj4rCj4+KwlyZXBvcnQzXzMyID0g cmVwb3J0MF8zMiArIDE5MjsKPj4rCWlndF9hc3NlcnRfZXEocmVwb3J0M18zMlswXSwgMHgwMWMw ZmZlZSk7Cj4+KwlpZ3RfYXNzZXJ0X25lcShyZXBvcnQzXzMyWzFdLCAwKTsKPj4rCWR1bXBfcmVw b3J0KHJlcG9ydDNfMzIsIDY0LCAicmVwb3J0M18zMiIpOwo+PisJaWd0X2Fzc2VydF9lcSgwLCBt ZW1jbXAoJnJlcG9ydDNfMzJbNF0sCj4+KwkJCQliby0+dmlydHVhbCArIDIwNDgsCj4+KwkJCQky NDApKTsKCm1lbWNtcCBoZXJlIF4KCj4+Kwo+PisJLyogQWNjdW11bGF0ZSBkZWx0YXMgZm9yIGNv dW50ZXJzIC0gQTAsIEEyMSBhbmQgQTI2ICovCj4+KwltZW1zZXQoYWNjdW11bGF0b3IuZGVsdGFz LCAwLCBzaXplb2YoYWNjdW11bGF0b3IuZGVsdGFzKSk7Cj4+KwlhY2N1bXVsYXRlX3JlcG9ydHMo JmFjY3VtdWxhdG9yLCByZXBvcnQwXzMyLCByZXBvcnQxXzMyKTsKPj4rCWlndF9kZWJ1ZygidG90 YWw6IEEwID0gJSJQUkl1NjQiLCBBMjEgPSAlIlBSSXU2NCIsIEEyNiA9ICUiUFJJdTY0IlxuIiwK Pj4rCQkJYWNjdW11bGF0b3IuZGVsdGFzWzIgKyAwXSwKPj4rCQkJYWNjdW11bGF0b3IuZGVsdGFz WzIgKyAyMV0sCj4+KwkJCWFjY3VtdWxhdG9yLmRlbHRhc1syICsgMjZdKTsKPgo+Cj5XaGF0IGRl bHRhIGRvIHlvdSBzZWUgZm9yIHRoZSBjb250ZXh0IHRoYXQgaXMgbm90IGdpdmVuIHRvIGk5MTUt cGVyZj8KCm5vIGRlbHRhIGFuZCBhbHNvIGFsbCBjb3VudGVycyBhcmUgemVyb2VzLiBUaGUgYWJv dmUgMiBtZW1jbXAgY2hlY2sgdGhhdCAKYWxsIGNvdW50ZXJzIGFyZSB6ZXJvZXMuCgpUaGFua3Ms ClVtZXNoCgo+Cj5Bc2tpbmcgYmVjYXVzZSBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQgd2UgY2FuIGFj dHVhbGx5IGFsbG93IG5vbiAKPnByaXZpbGVnZWQgY29udGV4dCB0byBvcGVuIHdpdGhvdXQgb3Ro ZXIgY29udGV4dCBzZWVpbmcgZ2xvYmFsIHZhbHVlcyAKPihpLmUuIG5vbiBzYXZlZC9yZXN0b3Jl ZCkgaW4gT0FSLgo+Cj4KPi1MaW9uZWwKPgo+PisKPj4rCWlndF9kZWJ1Zygib2FfdGltZXN0YW1w MzIgMCA9ICV1XG4iLCByZXBvcnQwXzMyWzFdKTsKPj4rCWlndF9kZWJ1Zygib2FfdGltZXN0YW1w MzIgMSA9ICV1XG4iLCByZXBvcnQxXzMyWzFdKTsKPj4rCWlndF9kZWJ1ZygiY3R4X2lkIDAgPSAl dVxuIiwgcmVwb3J0MF8zMlsyXSk7Cj4+KwlpZ3RfZGVidWcoImN0eF9pZCAxID0gJXVcbiIsIHJl cG9ydDFfMzJbMl0pOwo+PisKPj4rCS8qIFRoZSBkZWx0YSBhcyBjYWxjdWxhdGVkIHZpYSB0aGUg UElQRV9DT05UUk9MIHRpbWVzdGFtcCBvcgo+PisJICogdGhlIE9BIHJlcG9ydCB0aW1lc3RhbXBz IHNob3VsZCBiZSBhbG1vc3QgaWRlbnRpY2FsIGJ1dAo+PisJICogYWxsb3cgYSA1MDAgbmFub3Nl Y29uZHMgbWFyZ2luLgo+PisJICovCj4+Kwl0aW1lc3RhbXAwXzY0ID0gKih1aW50NjRfdCAqKSgo KHVpbnQ4X3QgKiliby0+dmlydHVhbCkgKyBCT19USU1FU1RBTVBfT0ZGU0VUMCk7Cj4+Kwl0aW1l c3RhbXAxXzY0ID0gKih1aW50NjRfdCAqKSgoKHVpbnQ4X3QgKiliby0+dmlydHVhbCkgKyBCT19U SU1FU1RBTVBfT0ZGU0VUMSk7Cj4+Kwo+PisJaWd0X2RlYnVnKCJ0c190aW1lc3RhbXA2NCAwID0g JSJQUkl1NjQiXG4iLCB0aW1lc3RhbXAwXzY0KTsKPj4rCWlndF9kZWJ1ZygidHNfdGltZXN0YW1w NjQgMSA9ICUiUFJJdTY0IlxuIiwgdGltZXN0YW1wMV82NCk7Cj4+Kwo+PisJZGVsdGFfdHM2NCA9 IHRpbWVzdGFtcDFfNjQgLSB0aW1lc3RhbXAwXzY0Owo+PisJZGVsdGFfb2EzMiA9IHJlcG9ydDFf MzJbMV0gLSByZXBvcnQwXzMyWzFdOwo+PisKPj4rCS8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGNh biBwYXNzIHRoZSBkZWx0YSB0byB0aW1lYmFzZV9zY2FsZSAqLwo+PisJaWd0X2Fzc2VydChkZWx0 YV90czY0IDwgVUlOVDMyX01BWCk7Cj4+KwlkZWx0YV9vYTMyX25zID0gdGltZWJhc2Vfc2NhbGUo ZGVsdGFfb2EzMik7Cj4+KwlkZWx0YV90czY0X25zID0gdGltZWJhc2Vfc2NhbGUoZGVsdGFfdHM2 NCk7Cj4+Kwo+PisJaWd0X2RlYnVnKCJvYTMyIGRlbHRhID0gJXUsID0gJXVuc1xuIiwKPj4rCQkJ ZGVsdGFfb2EzMiwgKHVuc2lnbmVkKWRlbHRhX29hMzJfbnMpOwo+PisJaWd0X2RlYnVnKCJ0czY0 IGRlbHRhID0gJXUsID0gJXVuc1xuIiwKPj4rCQkJZGVsdGFfdHM2NCwgKHVuc2lnbmVkKWRlbHRh X3RzNjRfbnMpOwo+PisKPj4rCWRlbHRhX2RlbHRhID0gZGVsdGFfdHM2NF9ucyA+IGRlbHRhX29h MzJfbnMgPwo+PisJCSAgICAgIChkZWx0YV90czY0X25zIC0gZGVsdGFfb2EzMl9ucykgOgo+PisJ CSAgICAgIChkZWx0YV9vYTMyX25zIC0gZGVsdGFfdHM2NF9ucyk7Cj4+KwlpZiAoZGVsdGFfZGVs dGEgPiA1MDApIHsKPj4rCQlpZ3RfZGVidWcoImRlbHRhX2RlbHRhIGV4Y2VlZHMgbWFyZ2luLCBz a2lwcGluZy4uXG4iKTsKPj4rCQlleGl0KEVBR0FJTik7Cj4+Kwl9Cj4+Kwo+PisJaWd0X2RlYnVn KCJuIHNhbXBsZXMgd3JpdHRlbiA9ICUiUFJJdTY0Ii8lIlBSSXU2NCIgKCVpeCVpKVxuIiwKPj4r CQkgIGFjY3VtdWxhdG9yLmRlbHRhc1syICsgMjFdLAo+PisJCSAgYWNjdW11bGF0b3IuZGVsdGFz WzIgKyAyNl0sCj4+KwkJICB3aWR0aCwgaGVpZ2h0KTsKPj4rCWFjY3VtdWxhdG9yX3ByaW50KCZh Y2N1bXVsYXRvciwgImZpbHRlcmVkIik7Cj4+Kwo+PisJLyogVmVyaWZ5IHRoYXQgdGhlIHdvcmsg YWN0dWFsbHkgaGFwcGVuZWQgYnkgY29tcGFyaW5nIHRoZSBzcmMKPj4rCSAqIGFuZCBkc3QgYnVm ZmVycwo+PisJICovCj4+KwlyZXQgPSBkcm1faW50ZWxfYm9fbWFwKHNyY1swXS5ibywgZmFsc2Up Owo+PisJaWd0X2Fzc2VydF9lcShyZXQsIDApOwo+PisJcmV0ID0gZHJtX2ludGVsX2JvX21hcChk c3RbMF0uYm8sIGZhbHNlKTsKPj4rCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPj4rCj4+KwlyZXQg PSBtZW1jbXAoc3JjWzBdLmJvLT52aXJ0dWFsLCBkc3RbMF0uYm8tPnZpcnR1YWwsIDQgKiB3aWR0 aCAqIGhlaWdodCk7Cj4+KwlpZiAocmV0ICE9IDApIHsKPj4rCQlhY2N1bXVsYXRvcl9wcmludCgm YWNjdW11bGF0b3IsICJ0b3RhbCIpOwo+PisJCWV4aXQoRUFHQUlOKTsKPj4rCX0KPj4rCj4+Kwlk cm1faW50ZWxfYm9fdW5tYXAoc3JjWzBdLmJvKTsKPj4rCWRybV9pbnRlbF9ib191bm1hcChkc3Rb MF0uYm8pOwo+PisKPj4rCS8qIENoZWNrIHRoYXQgdGhpcyB0ZXN0IHBhc3NlZC4gVGhlIHRlc3Qg bWVhc3VyZXMgdGhlIG51bWJlciBvZiAyeDIKPj4rCSAqIHNhbXBsZXMgd3JpdHRlbiB0byB0aGUg cmVuZGVyIHRhcmdldCB1c2luZyB0aGUgY291bnRlciBBMjYuIEZvcgo+PisJICogT0FSLCB0aGlz IGNvdW50ZXIgd2lsbCBvbmx5IGhhdmUgaW5jcmVtZW50cyByZWxldmFudCB0byB0aGlzIHNwZWNp ZmljCj4+KwkgKiBjb250ZXh0LiBUaGUgdmFsdWUgZXF1YWxzIHRoZSB3aWR0aCAqIGhlaWdodCBv ZiB0aGUgcmVuZGVyZWQgd29yay4KPj4rCSAqLwo+PisJaWd0X2Fzc2VydF9lcShhY2N1bXVsYXRv ci5kZWx0YXNbMiArIDI2XSwgd2lkdGggKiBoZWlnaHQpOwo+PisKPj4rCS8qIENsZWFuIHVwICov Cj4+Kwlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoc3JjKTsgaSsrKSB7Cj4+KwkJZHJt X2ludGVsX2JvX3VucmVmZXJlbmNlKHNyY1tpXS5ibyk7Cj4+KwkJZHJtX2ludGVsX2JvX3VucmVm ZXJlbmNlKGRzdFtpXS5ibyk7Cj4+Kwl9Cj4+Kwo+PisJZHJtX2ludGVsX2JvX3VubWFwKGJvKTsK Pj4rCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7Cj4+KwlpbnRlbF9iYXRjaGJ1ZmZlcl9m cmVlKGJhdGNoKTsKPj4rCWRybV9pbnRlbF9nZW1fY29udGV4dF9kZXN0cm95KGNvbnRleHQwKTsK Pj4rCWRybV9pbnRlbF9nZW1fY29udGV4dF9kZXN0cm95KGNvbnRleHQxKTsKPj4rCWRybV9pbnRl bF9idWZtZ3JfZGVzdHJveShidWZtZ3IpOwo+PisJX19wZXJmX2Nsb3NlKHN0cmVhbV9mZCk7Cj4+ K30KPj4rCj4+K3N0YXRpYyB2b2lkCj4+K2dlbjEyX3Rlc3Rfc2luZ2xlX2N0eF9yZW5kZXJfdGFy Z2V0X3dyaXRlc19hX2NvdW50ZXIodm9pZCkKPj4rewo+PisJaW50IGNoaWxkX3JldDsKPj4rCXN0 cnVjdCBpZ3RfaGVscGVyX3Byb2Nlc3MgY2hpbGQgPSB7fTsKPj4rCj4+KwkvKiBFbnN1cmUgcGVy Zl9zdHJlYW1fcGFyYW5vaWQgaXMgc2V0IHRvIDEgYnkgZGVmYXVsdCAqLwo+PisJd3JpdGVfdTY0 X2ZpbGUoIi9wcm9jL3N5cy9kZXYvaTkxNS9wZXJmX3N0cmVhbV9wYXJhbm9pZCIsIDEpOwo+PisK Pj4rCWRvIHsKPj4rCQlpZ3RfZm9ya19oZWxwZXIoJmNoaWxkKSB7Cj4+KwkJCWlndF9kcm9wX3Jv b3QoKTsKPj4rCQkJZ2VuMTJfc2luZ2xlX2N0eF9oZWxwZXIoKTsKPj4rCQl9Cj4+KwkJY2hpbGRf cmV0ID0gaWd0X3dhaXRfaGVscGVyKCZjaGlsZCk7Cj4+KwkJaWd0X2Fzc2VydChXRVhJVFNUQVRV UyhjaGlsZF9yZXQpID09IEVBR0FJTiB8fAo+PisJCQkgICBXRVhJVFNUQVRVUyhjaGlsZF9yZXQp ID09IDApOwo+PisJfSB3aGlsZSAoV0VYSVRTVEFUVVMoY2hpbGRfcmV0KSA9PSBFQUdBSU4pOwo+ Pit9Cj4+Kwo+PiAgc3RhdGljIHVuc2lnbmVkIGxvbmcgcmM2X3Jlc2lkZW5jeV9tcyh2b2lkKQo+ PiAgewo+PiAgCXJldHVybiBzeXNmc19yZWFkKCJwb3dlci9yYzZfcmVzaWRlbmN5X21zIik7Cj4+ QEAgLTQyMjUsNiArNDU1MywxMiBAQCBpZ3RfbWFpbgo+PiAgCQlnZW44X3Rlc3Rfc2luZ2xlX2N0 eF9yZW5kZXJfdGFyZ2V0X3dyaXRlc19hX2NvdW50ZXIoKTsKPj4gIAl9Cj4+KwlpZ3RfZGVzY3Jp YmUoIk1lYXN1cmUgcGVyZm9ybWFuY2UgZm9yIGEgc3BlY2lmaWMgY29udGV4dCB1c2luZyBPQVIg aW4gR2VuIDEyIik7Cj4+KwlpZ3Rfc3VidGVzdCgiZ2VuMTItdW5wcml2aWxlZ2VkLXNpbmdsZS1j dHgtY291bnRlcnMiKSB7Cj4+KwkJaWd0X3JlcXVpcmUoaW50ZWxfZ2VuKGRldmlkKSA+PSAxMik7 Cj4+KwkJZ2VuMTJfdGVzdF9zaW5nbGVfY3R4X3JlbmRlcl90YXJnZXRfd3JpdGVzX2FfY291bnRl cigpOwo+PisJfQo+PisKPj4gIAlpZ3Rfc3VidGVzdCgicmM2LWRpc2FibGUiKQo+PiAgCQl0ZXN0 X3JjNl9kaXNhYmxlKCk7Cj4KPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXY=