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=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,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 A34E5C5519F for ; Wed, 25 Nov 2020 10:47:38 +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 36DDC2075A for ; Wed, 25 Nov 2020 10:47:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 36DDC2075A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.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 423546E897; Wed, 25 Nov 2020 10:47:37 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1791F6E897; Wed, 25 Nov 2020 10:47:36 +0000 (UTC) IronPort-SDR: qr92z2Gk7DWzlnNLstt9QywQ9p2jBHcX9bPgoaxPmlOqNlo8dvdTbXeXqMwkKXrIfI2prKZ+7H /Rujz3DRHhgw== X-IronPort-AV: E=McAfee;i="6000,8403,9815"; a="171331291" X-IronPort-AV: E=Sophos;i="5.78,368,1599548400"; d="scan'208";a="171331291" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Nov 2020 02:47:35 -0800 IronPort-SDR: g3/8z9FEMH8NlxW49/vjqta1Xv4TMigLqB5S4N0mJC/oL+wNUsoQjtnESw/95SoNpAP9rsfLeS 8jIFVK6uG7pQ== X-IronPort-AV: E=Sophos;i="5.78,368,1599548400"; d="scan'208";a="547226918" Received: from jhaitov-mobl.ger.corp.intel.com (HELO [10.214.246.84]) ([10.214.246.84]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Nov 2020 02:47:33 -0800 To: Chris Wilson , intel-gfx@lists.freedesktop.org References: <20201124232751.445582-2-chris@chris-wilson.co.uk> <20201125103539.564204-1-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: Date: Wed, 25 Nov 2020 10:47:29 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <20201125103539.564204-1-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [Intel-gfx] [igt-dev] [PATCH i-g-t] tools/intel_gpu_top: Consolidate imc to use pmu_counter X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 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 Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDI1LzExLzIwMjAgMTA6MzUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBGb2xsb3cgdGhlIHNh bWUgcGF0dGVybiBhcyByYXBsIGZvciBpbWMsIGFuZCBjb25zb2xpZGF0ZSBldmVyeXRoaW5nIHRv Cj4gd29yayBvbiBzdHJ1Y3QgcG11X2NvdW50ZXIuCj4gCj4gdjI6IENvbWJpbmUgcmFwbF9wYXJz ZS9pbWNfcGFyc2UgaW50byBwbXVfcGFyc2UKPiB2MzogS2VlcCB0aGUgZXJyb3IgbWVzc2FnZSBm b3IgUkFQTCBub3QgcmVwb3J0aW5nIEpvdWxlcwoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCgo+IFNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgdG9vbHMvaW50 ZWxfZ3B1X3RvcC5jIHwgMjYxICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDE4MyBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZ3B1X3RvcC5jIGIvdG9vbHMvaW50ZWxf Z3B1X3RvcC5jCj4gaW5kZXggMGE0OWNmZWNjLi41ZDQyYTJmYWQgMTAwNjQ0Cj4gLS0tIGEvdG9v bHMvaW50ZWxfZ3B1X3RvcC5jCj4gKysrIGIvdG9vbHMvaW50ZWxfZ3B1X3RvcC5jCj4gQEAgLTU1 LDYgKzU1LDcgQEAgc3RydWN0IHBtdV9jb3VudGVyIHsKPiAgIAl1bnNpZ25lZCBpbnQgaWR4Owo+ ICAgCXN0cnVjdCBwbXVfcGFpciB2YWw7Cj4gICAJZG91YmxlIHNjYWxlOwo+ICsJY29uc3QgY2hh ciAqdW5pdHM7Cj4gICAJYm9vbCBwcmVzZW50Owo+ICAgfTsKPiAgIAo+IEBAIC04NSwxNyArODYs MTQgQEAgc3RydWN0IGVuZ2luZXMgewo+ICAgCXVuc2lnbmVkIGludCBudW1fcmFwbDsKPiAgIAo+ ICAgCWludCBpbWNfZmQ7Cj4gLQlkb3VibGUgaW1jX3JlYWRzX3NjYWxlOwo+IC0JY29uc3QgY2hh ciAqaW1jX3JlYWRzX3VuaXQ7Cj4gLQlkb3VibGUgaW1jX3dyaXRlc19zY2FsZTsKPiAtCWNvbnN0 IGNoYXIgKmltY193cml0ZXNfdW5pdDsKPiArCXN0cnVjdCBwbXVfY291bnRlciBpbWNfcmVhZHM7 Cj4gKwlzdHJ1Y3QgcG11X2NvdW50ZXIgaW1jX3dyaXRlczsKPiArCXVuc2lnbmVkIGludCBudW1f aW1jOwo+ICAgCj4gICAJc3RydWN0IHBtdV9jb3VudGVyIGZyZXFfcmVxOwo+ICAgCXN0cnVjdCBw bXVfY291bnRlciBmcmVxX2FjdDsKPiAgIAlzdHJ1Y3QgcG11X2NvdW50ZXIgaXJxOwo+ICAgCXN0 cnVjdCBwbXVfY291bnRlciByYzY7Cj4gLQlzdHJ1Y3QgcG11X2NvdW50ZXIgaW1jX3JlYWRzOwo+ IC0Jc3RydWN0IHBtdV9jb3VudGVyIGltY193cml0ZXM7Cj4gICAKPiAgIAlib29sIGRpc2NyZXRl Owo+ICAgCWNoYXIgKmRldmljZTsKPiBAQCAtMTM2LDE0ICsxMzQsMTQgQEAgc3RhdGljIGludCBp Z3Rfc3lzZnNfc2NhbmYoaW50IGRpciwgY29uc3QgY2hhciAqYXR0ciwgY29uc3QgY2hhciAqZm10 LCAuLi4pCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IHJhcGxfcGFy c2Uoc3RydWN0IHBtdV9jb3VudGVyICpwbXUsIGNvbnN0IGNoYXIgKnN0cikKPiArc3RhdGljIGlu dCBwbXVfcGFyc2Uoc3RydWN0IHBtdV9jb3VudGVyICpwbXUsIGNvbnN0IGNoYXIgKnBhdGgsIGNv bnN0IGNoYXIgKnN0cikKPiAgIHsKPiAgIAlsb2NhbGVfdCBsb2NhbGUsIG9sZGxvY2FsZTsKPiAg IAlib29sIHJlc3VsdCA9IHRydWU7Cj4gICAJY2hhciBidWZbMTI4XSA9IHt9Owo+ICAgCWludCBk aXI7Cj4gICAKPiAtCWRpciA9IG9wZW4oIi9zeXMvZGV2aWNlcy9wb3dlciIsIE9fUkRPTkxZKTsK PiArCWRpciA9IG9wZW4ocGF0aCwgT19SRE9OTFkpOwo+ICAgCWlmIChkaXIgPCAwKQo+ICAgCQly ZXR1cm4gLWVycm5vOwo+ICAgCj4gQEAgLTE2MCwxMCArMTU4LDggQEAgc3RhdGljIGludCByYXBs X3BhcnNlKHN0cnVjdCBwbXVfY291bnRlciAqcG11LCBjb25zdCBjaGFyICpzdHIpCj4gICAJcmVz dWx0ICY9IGlndF9zeXNmc19zY2FuZihkaXIsIGJ1ZiwgIiVsZiIsICZwbXUtPnNjYWxlKSA9PSAx Owo+ICAgCj4gICAJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSAtIDEsICJldmVudHMvZW5lcmd5 LSVzLnVuaXQiLCBzdHIpOwo+IC0JaWYgKGlndF9zeXNmc19zY2FuZihkaXIsIGJ1ZiwgIiUxMjdz IiwgYnVmKSA9PSAxICYmCj4gLQkgICAgc3RyY21wKGJ1ZiwgIkpvdWxlcyIpKQo+IC0JCWZwcmlu dGYoc3RkZXJyLCAiVW5leHBlY3RlZCB1bml0cyBmb3IgUkFQTCAlczogZm91bmQgJXNcbiIsCj4g LQkJCXN0ciwgYnVmKTsKPiArCXJlc3VsdCAmPSBpZ3Rfc3lzZnNfc2NhbmYoZGlyLCBidWYsICIl MTI3cyIsIGJ1ZikgPT0gMTsKPiArCXBtdS0+dW5pdHMgPSBzdHJkdXAoYnVmKTsKPiAgIAo+ICAg CXVzZWxvY2FsZShvbGRsb2NhbGUpOwo+ICAgCWZyZWVsb2NhbGUobG9jYWxlKTsKPiBAQCAtMTc5 LDYgKzE3NSwyNCBAQCBzdGF0aWMgaW50IHJhcGxfcGFyc2Uoc3RydWN0IHBtdV9jb3VudGVyICpw bXUsIGNvbnN0IGNoYXIgKnN0cikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg aW50IHJhcGxfcGFyc2Uoc3RydWN0IHBtdV9jb3VudGVyICpwbXUsIGNvbnN0IGNoYXIgKnN0cikK PiArewo+ICsJY29uc3QgY2hhciAqZXhwZWN0ZWRfdW5pdHMgPSAiSm91bGVzIjsKPiArCWludCBl cnI7Cj4gKwo+ICsJZXJyID0gcG11X3BhcnNlKHBtdSwgIi9zeXMvZGV2aWNlcy9wb3dlciIsIHN0 cik7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCWlmICghcG11LT51 bml0cyB8fCBzdHJjbXAocG11LT51bml0cywgZXhwZWN0ZWRfdW5pdHMpKSB7Cj4gKwkJZnByaW50 ZihzdGRlcnIsCj4gKwkJCSJVbmV4cGVjdGVkIHVuaXRzIGZvciBSQVBMICVzOiBmb3VuZCAnJXMn LCBleHBlY3RlZCAnJXMnXG4iLAo+ICsJCQlzdHIsIHBtdS0+dW5pdHMsIGV4cGVjdGVkX3VuaXRz KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkCj4gICBy YXBsX29wZW4oc3RydWN0IHBtdV9jb3VudGVyICpwbXUsCj4gICAJICBjb25zdCBjaGFyICpkb21h aW4sCj4gQEAgLTQwMCwxNDYgKzQxNCw1NyBAQCBzdGF0aWMgc3RydWN0IGVuZ2luZXMgKmRpc2Nv dmVyX2VuZ2luZXMoY2hhciAqZGV2aWNlKQo+ICAgCXJldHVybiBlbmdpbmVzOwo+ICAgfQo+ICAg Cj4gLXN0YXRpYyBpbnQKPiAtZmlsZW5hbWVfdG9fYnVmKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBj aGFyICpidWYsIHVuc2lnbmVkIGludCBidWZzaXplKQo+IC17Cj4gLQlpbnQgZmQsIGVycjsKPiAt CXNzaXplX3QgcmV0Owo+IC0KPiAtCWZkID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpOwo+IC0J aWYgKGZkIDwgMCkKPiAtCQlyZXR1cm4gLTE7Cj4gLQo+IC0JcmV0ID0gcmVhZChmZCwgYnVmLCBi dWZzaXplIC0gMSk7Cj4gLQllcnIgPSBlcnJubzsKPiAtCWNsb3NlKGZkKTsKPiAtCWlmIChyZXQg PCAxKSB7Cj4gLQkJZXJybm8gPSByZXQgPCAwID8gZXJyIDogRU5PTVNHOwo+IC0KPiAtCQlyZXR1 cm4gLTE7Cj4gLQl9Cj4gLQo+IC0JaWYgKHJldCA+IDEgJiYgYnVmW3JldCAtIDFdID09ICdcbicp Cj4gLQkJYnVmW3JldCAtIDFdID0gJ1wwJzsKPiAtCWVsc2UKPiAtCQlidWZbcmV0XSA9ICdcMCc7 Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyB1aW50NjRfdCBmaWxlbmFtZV90 b191NjQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBiYXNlKQo+IC17Cj4gLQljaGFyIGJ1Zls2 NF0sICpiOwo+IC0KPiAtCWlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9m KGJ1ZikpKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCS8qCj4gLQkgKiBIYW5kbGUgYm90aCBzaW5n bGUgaW50ZWdlciBhbmQga2V5PXZhbHVlIGZvcm1hdHMgYnkgc2tpcHBpbmcKPiAtCSAqIGxlYWRp bmcgbm9uLWRpZ2l0cy4KPiAtCSAqLwo+IC0JYiA9IGJ1ZjsKPiAtCXdoaWxlICgqYiAmJiAhaXNk aWdpdCgqYikpCj4gLQkJYisrOwo+IC0KPiAtCXJldHVybiBzdHJ0b3VsbChiLCBOVUxMLCBiYXNl KTsKPiAtfQo+IC0KPiAtc3RhdGljIGRvdWJsZSBmaWxlbmFtZV90b19kb3VibGUoY29uc3QgY2hh ciAqZmlsZW5hbWUpCj4gLXsKPiAtCWNoYXIgKm9sZGxvY2FsZTsKPiAtCWNoYXIgYnVmWzgwXTsK PiAtCWRvdWJsZSB2Owo+IC0KPiAtCWlmIChmaWxlbmFtZV90b19idWYoZmlsZW5hbWUsIGJ1Ziwg c2l6ZW9mKGJ1ZikpKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCW9sZGxvY2FsZSA9IHNldGxvY2Fs ZShMQ19BTEwsICJDIik7Cj4gLQl2ID0gc3RydG9kKGJ1ZiwgTlVMTCk7Cj4gLQlzZXRsb2NhbGUo TENfQUxMLCBvbGRsb2NhbGUpOwo+IC0KPiAtCXJldHVybiB2Owo+IC19Cj4gLQo+IC0jZGVmaW5l IElNQ19ST09UICIvc3lzL2RldmljZXMvdW5jb3JlX2ltYy8iCj4gLSNkZWZpbmUgSU1DX0VWRU5U ICIvc3lzL2RldmljZXMvdW5jb3JlX2ltYy9ldmVudHMvIgo+ICsjZGVmaW5lIF9vcGVuX3BtdSh0 eXBlLCBjbnQsIHBtdSwgZmQpIFwKPiArKHsgXAo+ICsJaW50IGZkX187IFwKPiArXAo+ICsJZmRf XyA9IGlndF9wZXJmX29wZW5fZ3JvdXAoKHR5cGUpLCAocG11KS0+Y29uZmlnLCAoZmQpKTsgXAo+ ICsJaWYgKGZkX18gPj0gMCkgeyBcCj4gKwkJaWYgKChmZCkgPT0gLTEpIFwKPiArCQkJKGZkKSA9 IGZkX187IFwKPiArCQkocG11KS0+cHJlc2VudCA9IHRydWU7IFwKPiArCQkocG11KS0+aWR4ID0g KGNudCkrKzsgXAo+ICsJfSBcCj4gK1wKPiArCWZkX187IFwKPiArfSkKPiAgIAo+IC1zdGF0aWMg dWludDY0X3QgaW1jX3R5cGVfaWQodm9pZCkKPiArc3RhdGljIGludCBpbWNfcGFyc2Uoc3RydWN0 IHBtdV9jb3VudGVyICpwbXUsIGNvbnN0IGNoYXIgKnN0cikKPiAgIHsKPiAtCXJldHVybiBmaWxl bmFtZV90b191NjQoSU1DX1JPT1QgInR5cGUiLCAxMCk7Cj4gKwlyZXR1cm4gcG11X3BhcnNlKHBt dSwgIi9zeXMvZGV2aWNlcy91bmNvcmVfaW1jIiwgc3RyKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMg dWludDY0X3QgaW1jX2RhdGFfcmVhZHModm9pZCkKPiArc3RhdGljIHZvaWQKPiAraW1jX29wZW4o c3RydWN0IHBtdV9jb3VudGVyICpwbXUsCj4gKwkgY29uc3QgY2hhciAqZG9tYWluLAo+ICsJIHN0 cnVjdCBlbmdpbmVzICplbmdpbmVzKQo+ICAgewo+IC0JcmV0dXJuIGZpbGVuYW1lX3RvX3U2NChJ TUNfRVZFTlQgImRhdGFfcmVhZHMiLCAwKTsKPiAtfQo+ICsJaW50IGZkOwo+ICAgCj4gLXN0YXRp YyBkb3VibGUgaW1jX2RhdGFfcmVhZHNfc2NhbGUodm9pZCkKPiAtewo+IC0JcmV0dXJuIGZpbGVu YW1lX3RvX2RvdWJsZShJTUNfRVZFTlQgImRhdGFfcmVhZHMuc2NhbGUiKTsKPiAtfQo+ICsJaWYg KGltY19wYXJzZShwbXUsIGRvbWFpbikgPCAwKQo+ICsJCXJldHVybjsKPiAgIAo+IC1zdGF0aWMg Y29uc3QgY2hhciAqaW1jX2RhdGFfcmVhZHNfdW5pdCh2b2lkKQo+IC17Cj4gLQljaGFyIGJ1Zlsz Ml07Cj4gKwlmZCA9IGlndF9wZXJmX29wZW5fZ3JvdXAocG11LT50eXBlLCBwbXUtPmNvbmZpZywg ZW5naW5lcy0+aW1jX2ZkKTsKPiArCWlmIChmZCA8IDApCj4gKwkJcmV0dXJuOwo+ICAgCj4gLQlp ZiAoZmlsZW5hbWVfdG9fYnVmKElNQ19FVkVOVCAiZGF0YV9yZWFkcy51bml0IiwgYnVmLCBzaXpl b2YoYnVmKSkgPT0gMCkKPiAtCQlyZXR1cm4gc3RyZHVwKGJ1Zik7Cj4gLQllbHNlCj4gLQkJcmV0 dXJuIE5VTEw7Cj4gLX0KPiArCWlmIChlbmdpbmVzLT5pbWNfZmQgPT0gLTEpCj4gKwkJZW5naW5l cy0+aW1jX2ZkID0gZmQ7Cj4gICAKPiAtc3RhdGljIHVpbnQ2NF90IGltY19kYXRhX3dyaXRlcyh2 b2lkKQo+IC17Cj4gLQlyZXR1cm4gZmlsZW5hbWVfdG9fdTY0KElNQ19FVkVOVCAiZGF0YV93cml0 ZXMiLCAwKTsKPiArCXBtdS0+aWR4ID0gZW5naW5lcy0+bnVtX2ltYysrOwo+ICsJcG11LT5wcmVz ZW50ID0gdHJ1ZTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgZG91YmxlIGltY19kYXRhX3dyaXRlc19z Y2FsZSh2b2lkKQo+ICtzdGF0aWMgdm9pZCBpbWNfd3JpdGVzX29wZW4oc3RydWN0IHBtdV9jb3Vu dGVyICpwbXUsIHN0cnVjdCBlbmdpbmVzICplbmdpbmVzKQo+ICAgewo+IC0JcmV0dXJuIGZpbGVu YW1lX3RvX2RvdWJsZShJTUNfRVZFTlQgImRhdGFfd3JpdGVzLnNjYWxlIik7Cj4gKwlpbWNfb3Bl bihwbXUsICJkYXRhX3dyaXRlcyIsIGVuZ2luZXMpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBjb25z dCBjaGFyICppbWNfZGF0YV93cml0ZXNfdW5pdCh2b2lkKQo+ICtzdGF0aWMgdm9pZCBpbWNfcmVh ZHNfb3BlbihzdHJ1Y3QgcG11X2NvdW50ZXIgKnBtdSwgc3RydWN0IGVuZ2luZXMgKmVuZ2luZXMp Cj4gICB7Cj4gLQljaGFyIGJ1ZlszMl07Cj4gLQo+IC0JaWYgKGZpbGVuYW1lX3RvX2J1ZihJTUNf RVZFTlQgImRhdGFfd3JpdGVzLnVuaXQiLAo+IC0JCQkgICAgYnVmLCBzaXplb2YoYnVmKSkgPT0g MCkKPiAtCQlyZXR1cm4gc3RyZHVwKGJ1Zik7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIE5VTEw7Cj4g KwlpbWNfb3BlbihwbXUsICJkYXRhX3JlYWRzIiwgZW5naW5lcyk7Cj4gICB9Cj4gICAKPiAtI2Rl ZmluZSBfb3Blbl9wbXUodHlwZSwgY250LCBwbXUsIGZkKSBcCj4gLSh7IFwKPiAtCWludCBmZF9f OyBcCj4gLVwKPiAtCWZkX18gPSBpZ3RfcGVyZl9vcGVuX2dyb3VwKCh0eXBlKSwgKHBtdSktPmNv bmZpZywgKGZkKSk7IFwKPiAtCWlmIChmZF9fID49IDApIHsgXAo+IC0JCWlmICgoZmQpID09IC0x KSBcCj4gLQkJCShmZCkgPSBmZF9fOyBcCj4gLQkJKHBtdSktPnByZXNlbnQgPSB0cnVlOyBcCj4g LQkJKHBtdSktPmlkeCA9IChjbnQpKys7IFwKPiAtCX0gXAo+IC1cCj4gLQlmZF9fOyBcCj4gLX0p Cj4gLQo+IC0jZGVmaW5lIF9vcGVuX2ltYyhjbnQsIHBtdSwgZmQpIFwKPiAtKHsgXAo+IC0JaW50 IGZkX187IFwKPiAtXAo+IC0JZmRfXyA9IGlndF9wZXJmX29wZW5fZ3JvdXAoaW1jX3R5cGVfaWQo KSwgKHBtdSktPmNvbmZpZywgKGZkKSk7IFwKPiAtCWlmIChmZF9fID49IDApIHsgXAo+IC0JCWlm ICgoZmQpID09IC0xKSBcCj4gLQkJCShmZCkgPSBmZF9fOyBcCj4gLQkJKHBtdSktPnByZXNlbnQg PSB0cnVlOyBcCj4gLQkJKHBtdSktPmlkeCA9IChjbnQpKys7IFwKPiAtCX0gXAo+IC1cCj4gLQlm ZF9fOyBcCj4gLX0pCj4gLQo+ICAgc3RhdGljIGludCBwbXVfaW5pdChzdHJ1Y3QgZW5naW5lcyAq ZW5naW5lcykKPiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgaTsKPiBAQCAtNTk1LDM4ICs1MjAsOCBA QCBzdGF0aWMgaW50IHBtdV9pbml0KHN0cnVjdCBlbmdpbmVzICplbmdpbmVzKQo+ICAgCX0KPiAg IAo+ICAgCWVuZ2luZXMtPmltY19mZCA9IC0xOwo+IC0JaWYgKGltY190eXBlX2lkKCkpIHsKPiAt CQl1bnNpZ25lZCBpbnQgbnVtID0gMDsKPiAtCj4gLQkJZW5naW5lcy0+aW1jX3JlYWRzX3NjYWxl ID0gaW1jX2RhdGFfcmVhZHNfc2NhbGUoKTsKPiAtCQllbmdpbmVzLT5pbWNfd3JpdGVzX3NjYWxl ID0gaW1jX2RhdGFfd3JpdGVzX3NjYWxlKCk7Cj4gLQo+IC0JCWVuZ2luZXMtPmltY19yZWFkc191 bml0ID0gaW1jX2RhdGFfcmVhZHNfdW5pdCgpOwo+IC0JCWlmICghZW5naW5lcy0+aW1jX3JlYWRz X3VuaXQpCj4gLQkJCXJldHVybiAtMTsKPiAtCj4gLQkJZW5naW5lcy0+aW1jX3dyaXRlc191bml0 ID0gaW1jX2RhdGFfd3JpdGVzX3VuaXQoKTsKPiAtCQlpZiAoIWVuZ2luZXMtPmltY193cml0ZXNf dW5pdCkKPiAtCQkJcmV0dXJuIC0xOwo+IC0KPiAtCQllbmdpbmVzLT5pbWNfcmVhZHMuY29uZmln ID0gaW1jX2RhdGFfcmVhZHMoKTsKPiAtCQlpZiAoIWVuZ2luZXMtPmltY19yZWFkcy5jb25maWcp Cj4gLQkJCXJldHVybiAtMTsKPiAtCj4gLQkJZW5naW5lcy0+aW1jX3dyaXRlcy5jb25maWcgPSBp bWNfZGF0YV93cml0ZXMoKTsKPiAtCQlpZiAoIWVuZ2luZXMtPmltY193cml0ZXMuY29uZmlnKQo+ IC0JCQlyZXR1cm4gLTE7Cj4gLQo+IC0JCWZkID0gX29wZW5faW1jKG51bSwgJmVuZ2luZXMtPmlt Y19yZWFkcywgZW5naW5lcy0+aW1jX2ZkKTsKPiAtCQlpZiAoZmQgPCAwKQo+IC0JCQlyZXR1cm4g LTE7Cj4gLQkJZmQgPSBfb3Blbl9pbWMobnVtLCAmZW5naW5lcy0+aW1jX3dyaXRlcywgZW5naW5l cy0+aW1jX2ZkKTsKPiAtCQlpZiAoZmQgPCAwKQo+IC0JCQlyZXR1cm4gLTE7Cj4gLQo+IC0JCWVu Z2luZXMtPmltY19yZWFkcy5wcmVzZW50ID0gdHJ1ZTsKPiAtCQllbmdpbmVzLT5pbWNfd3JpdGVz LnByZXNlbnQgPSB0cnVlOwo+IC0JfQo+ICsJaW1jX3JlYWRzX29wZW4oJmVuZ2luZXMtPmltY19y ZWFkcywgZW5naW5lcyk7Cj4gKwlpbWNfd3JpdGVzX29wZW4oJmVuZ2luZXMtPmltY193cml0ZXMs IGVuZ2luZXMpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTY5MiwxMyArNTg3LDYg QEAgc3RhdGljIHZvaWQgcG11X3NhbXBsZShzdHJ1Y3QgZW5naW5lcyAqZW5naW5lcykKPiAgIAl1 bnNpZ25lZCBpbnQgaTsKPiAgIAo+ICAgCWVuZ2luZXMtPnRzLnByZXYgPSBlbmdpbmVzLT50cy5j dXI7Cj4gLQo+IC0JaWYgKGVuZ2luZXMtPmltY19mZCA+PSAwKSB7Cj4gLQkJcG11X3JlYWRfbXVs dGkoZW5naW5lcy0+aW1jX2ZkLCAyLCB2YWwpOwo+IC0JCXVwZGF0ZV9zYW1wbGUoJmVuZ2luZXMt PmltY19yZWFkcywgdmFsKTsKPiAtCQl1cGRhdGVfc2FtcGxlKCZlbmdpbmVzLT5pbWNfd3JpdGVz LCB2YWwpOwo+IC0JfQo+IC0KPiAgIAllbmdpbmVzLT50cy5jdXIgPSBwbXVfcmVhZF9tdWx0aShl bmdpbmVzLT5mZCwgbnVtX3ZhbCwgdmFsKTsKPiAgIAo+ICAgCXVwZGF0ZV9zYW1wbGUoJmVuZ2lu ZXMtPmZyZXFfcmVxLCB2YWwpOwo+IEBAIC03MTksNiArNjA3LDEyIEBAIHN0YXRpYyB2b2lkIHBt dV9zYW1wbGUoc3RydWN0IGVuZ2luZXMgKmVuZ2luZXMpCj4gICAJCXVwZGF0ZV9zYW1wbGUoJmVu Z2luZXMtPnJfZ3B1LCB2YWwpOwo+ICAgCQl1cGRhdGVfc2FtcGxlKCZlbmdpbmVzLT5yX3BrZywg dmFsKTsKPiAgIAl9Cj4gKwo+ICsJaWYgKGVuZ2luZXMtPm51bV9pbWMpIHsKPiArCQlwbXVfcmVh ZF9tdWx0aShlbmdpbmVzLT5pbWNfZmQsIGVuZ2luZXMtPm51bV9pbWMsIHZhbCk7Cj4gKwkJdXBk YXRlX3NhbXBsZSgmZW5naW5lcy0+aW1jX3JlYWRzLCB2YWwpOwo+ICsJCXVwZGF0ZV9zYW1wbGUo JmVuZ2luZXMtPmltY193cml0ZXMsIHZhbCk7Cj4gKwl9Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBj b25zdCBjaGFyICpiYXJzW10gPSB7ICIgIiwgIuKWjyIsICLilo4iLCAi4paNIiwgIuKWjCIsICLi losiLCAi4paKIiwgIuKWiSIsICLilogiIH07Cj4gQEAgLTExNzIsOSArMTA2Niw5IEBAIHN0YXRp YyBpbnQKPiAgIHByaW50X2ltYyhzdHJ1Y3QgZW5naW5lcyAqZW5naW5lcywgZG91YmxlIHQsIGlu dCBsaW5lcywgaW50IGNvbl93LCBpbnQgY29uX2gpCj4gICB7Cj4gICAJc3RydWN0IGNudF9pdGVt IGltY19pdGVtc1tdID0gewo+IC0JCXsgJmVuZ2luZXMtPmltY19yZWFkcywgNiwgMCwgMS4wLCB0 LCBlbmdpbmVzLT5pbWNfcmVhZHNfc2NhbGUsCj4gKwkJeyAmZW5naW5lcy0+aW1jX3JlYWRzLCA2 LCAwLCAxLjAsIHQsIGVuZ2luZXMtPmltY19yZWFkcy5zY2FsZSwKPiAgIAkJICAicmVhZHMiLCAi cmQiIH0sCj4gLQkJeyAmZW5naW5lcy0+aW1jX3dyaXRlcywgNiwgMCwgMS4wLCB0LCBlbmdpbmVz LT5pbWNfd3JpdGVzX3NjYWxlLAo+ICsJCXsgJmVuZ2luZXMtPmltY193cml0ZXMsIDYsIDAsIDEu MCwgdCwgZW5naW5lcy0+aW1jX3dyaXRlcy5zY2FsZSwKPiAgIAkJICAid3JpdGVzIiwgIndyIiB9 LAo+ICAgCQl7IE5VTEwsIDAsIDAsIDAuMCwgMC4wLCAwLjAsICJ1bml0IiB9LAo+ICAgCQl7IH0s Cj4gQEAgLTExODksMTIgKzEwODMsMTUgQEAgcHJpbnRfaW1jKHN0cnVjdCBlbmdpbmVzICplbmdp bmVzLCBkb3VibGUgdCwgaW50IGxpbmVzLCBpbnQgY29uX3csIGludCBjb25faCkKPiAgIAl9Owo+ ICAgCWludCByZXQ7Cj4gICAKPiArCWlmICghZW5naW5lcy0+bnVtX2ltYykKPiArCQlyZXR1cm4g bGluZXM7Cj4gKwo+ICAgCXJldCA9IGFzcHJpbnRmKChjaGFyICoqKSZpbWNfZ3JvdXAuZGlzcGxh eV9uYW1lLCAiSU1DICVzL3MiLAo+IC0JCQllbmdpbmVzLT5pbWNfcmVhZHNfdW5pdCk7Cj4gKwkJ CWVuZ2luZXMtPmltY19yZWFkcy51bml0cyk7Cj4gICAJYXNzZXJ0KHJldCA+PSAwKTsKPiAgIAo+ ICAgCXJldCA9IGFzcHJpbnRmKChjaGFyICoqKSZpbWNfaXRlbXNbMl0udW5pdCwgIiVzL3MiLAo+ IC0JCQllbmdpbmVzLT5pbWNfcmVhZHNfdW5pdCk7Cj4gKwkJCWVuZ2luZXMtPmltY19yZWFkcy51 bml0cyk7Cj4gICAJYXNzZXJ0KHJldCA+PSAwKTsKPiAgIAo+ICAgCXByaW50X2dyb3Vwcyhncm91 cHMpOwo+IEBAIC0xMjA1LDExICsxMTAyLDExIEBAIHByaW50X2ltYyhzdHJ1Y3QgZW5naW5lcyAq ZW5naW5lcywgZG91YmxlIHQsIGludCBsaW5lcywgaW50IGNvbl93LCBpbnQgY29uX2gpCj4gICAJ aWYgKG91dHB1dF9tb2RlID09IElOVEVSQUNUSVZFKSB7Cj4gICAJCWlmIChsaW5lcysrIDwgY29u X2gpCj4gICAJCQlwcmludGYoIiAgICAgIElNQyByZWFkczogICAlcyAlcy9zXG4iLAo+IC0JCQkg ICAgICAgaW1jX2l0ZW1zWzBdLmJ1ZiwgZW5naW5lcy0+aW1jX3JlYWRzX3VuaXQpOwo+ICsJCQkg ICAgICAgaW1jX2l0ZW1zWzBdLmJ1ZiwgZW5naW5lcy0+aW1jX3JlYWRzLnVuaXRzKTsKPiAgIAo+ ICAgCQlpZiAobGluZXMrKyA8IGNvbl9oKQo+ICAgCQkJcHJpbnRmKCIgICAgIElNQyB3cml0ZXM6 ICAgJXMgJXMvc1xuIiwKPiAtCQkJICAgICAgIGltY19pdGVtc1sxXS5idWYsIGVuZ2luZXMtPmlt Y193cml0ZXNfdW5pdCk7Cj4gKwkJCSAgICAgICBpbWNfaXRlbXNbMV0uYnVmLCBlbmdpbmVzLT5p bWNfd3JpdGVzLnVuaXRzKTsKPiAgIAo+ICAgCQlpZiAobGluZXMrKyA8IGNvbl9oKQo+ICAgCQkJ cHJpbnRmKCJcbiIpOwo+IEBAIC0xNTA5LDkgKzE0MDYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCj4gICAJCQkJCSAgICAgdCwgbGluZXMsIGNvbl93LCBjb25faCwKPiAgIAkJ CQkJICAgICAmY29uc3VtZWQpOwo+ICAgCj4gLQkJCWlmIChlbmdpbmVzLT5pbWNfZmQpCj4gLQkJ CQlsaW5lcyA9IHByaW50X2ltYyhlbmdpbmVzLCB0LCBsaW5lcywgY29uX3csCj4gLQkJCQkJCSAg Y29uX2gpOwo+ICsJCQlsaW5lcyA9IHByaW50X2ltYyhlbmdpbmVzLCB0LCBsaW5lcywgY29uX3cs IGNvbl9oKTsKPiAgIAo+ICAgCQkJbGluZXMgPSBwcmludF9lbmdpbmVzX2hlYWRlcihlbmdpbmVz LCB0LCBsaW5lcywgY29uX3csCj4gICAJCQkJCQkgICAgIGNvbl9oKTsKPiAKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==