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.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,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 E9BEDC433DB for ; Wed, 3 Mar 2021 16:28:31 +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 525B3601FD for ; Wed, 3 Mar 2021 16:28:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 525B3601FD 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 B45C089CFA; Wed, 3 Mar 2021 16:28:30 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CA1F89CFA for ; Wed, 3 Mar 2021 16:28:29 +0000 (UTC) IronPort-SDR: P+/FYuQD9PGIdvX6evuNlC/uGK6wz7w37tRHd5XYHyb9IJZ5zjQLhKmB07vYDepbvucRsi0+M4 0KlT4QJ515xg== X-IronPort-AV: E=McAfee;i="6000,8403,9912"; a="167126038" X-IronPort-AV: E=Sophos;i="5.81,220,1610438400"; d="scan'208";a="167126038" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2021 08:28:28 -0800 IronPort-SDR: 3vM3r6TcvbP53pj5YpLpv1cniQC7WyUoH/lm21ZFKIOCn3fwe3VjFNgwTQwBrF5XF0lCTDsltG RBhfwqlEW+sw== X-IronPort-AV: E=Sophos;i="5.81,220,1610438400"; d="scan'208";a="399787048" Received: from fischeca-mobl.ger.corp.intel.com (HELO [10.252.62.87]) ([10.252.62.87]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2021 08:28:26 -0800 To: Umesh Nerlige Ramappa References: <20210302182955.16315-1-umesh.nerlige.ramappa@intel.com> <20210303001253.GA38857@orsosgc001.ra.intel.com> <20210303162717.GB38857@orsosgc001.ra.intel.com> From: Lionel Landwerlin Organization: Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ Message-ID: Date: Wed, 3 Mar 2021 18:28:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20210303162717.GB38857@orsosgc001.ra.intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH] i915/query: Correlate engine and cpu timestamps with better accuracy 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: intel-gfx@lists.freedesktop.org, Chris Wilson Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gMDMvMDMvMjAyMSAxODoyNywgVW1lc2ggTmVybGlnZSBSYW1hcHBhIHdyb3RlOgo+IE9uIFdl ZCwgTWFyIDAzLCAyMDIxIGF0IDExOjIxOjM5QU0gKzAyMDAsIExpb25lbCBMYW5kd2VybGluIHdy b3RlOgo+PiBPbiAwMy8wMy8yMDIxIDAyOjEyLCBVbWVzaCBOZXJsaWdlIFJhbWFwcGEgd3JvdGU6 Cj4+PiBPbiBUdWUsIE1hciAwMiwgMjAyMSBhdCAxMDozNToxOVBNICswMjAwLCBMaW9uZWwgTGFu ZHdlcmxpbiB3cm90ZToKPj4+PiBUaGFua3MgYSBidW5jaCBmb3Igc2hhcmluZyB0aGlzIQo+Pj4+ Cj4+Pj4gT24gMDIvMDMvMjAyMSAyMDoyOSwgVW1lc2ggTmVybGlnZSBSYW1hcHBhIHdyb3RlOgo+ Pj4+PiBQZXJmIG1lYXN1cmVtZW50cyByZWx5IG9uIENQVSBhbmQgZW5naW5lIHRpbWVzdGFtcHMg dG8gY29ycmVsYXRlCj4+Pj4+IGV2ZW50cyBvZiBpbnRlcmVzdCBhY3Jvc3MgdGhlc2UgdGltZSBk b21haW5zLiBDdXJyZW50IG1lY2hhbmlzbXMgZ2V0Cj4+Pj4+IHRoZXNlIHRpbWVzdGFtcHMgc2Vw YXJhdGVseSBhbmQgdGhlIGNhbGN1bGF0ZWQgZGVsdGEgYmV0d2VlbiB0aGVzZQo+Pj4+PiB0aW1l c3RhbXBzIGxhY2sgZW5vdWdoIGFjY3VyYWN5Lgo+Pj4+Pgo+Pj4+PiBUbyBpbXByb3ZlIHRoZSBh Y2N1cmFjeSBvZiB0aGVzZSB0aW1lIG1lYXN1cmVtZW50cyB0byB3aXRoaW4gYSBmZXcgCj4+Pj4+ IHVzLAo+Pj4+PiBhZGQgYSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGVuZ2luZSBhbmQgY3B1IHRp bWVzdGFtcHMgY2FwdHVyZWQgYXMKPj4+Pj4gY2xvc2UgdG8gZWFjaCBvdGhlciBhcyBwb3NzaWJs ZS4KPj4+Pj4KPj4+Pj4gdjI6IChUdnJ0a28pCj4+Pj4+IC0gZG9jdW1lbnQgY2xvY2sgcmVmZXJl bmNlIHVzZWQKPj4+Pj4gLSByZXR1cm4gY3B1IHRpbWVzdGFtcCBhbHdheXMKPj4+Pj4gLSBjYXB0 dXJlIGNwdSB0aW1lIGp1c3QgYmVmb3JlIGxvd2VyIGR3b3JkIG9mIGNzIHRpbWVzdGFtcAo+Pj4+ Pgo+Pj4+PiB2MzogKENocmlzKQo+Pj4+PiAtIHVzZSB1bmNvcmUtcnBtCj4+Pj4+IC0gdXNlIF9f cXVlcnlfY3NfdGltZXN0YW1wIGhlbHBlcgo+Pj4+Pgo+Pj4+PiB2NDogKExpb25lbCkKPj4+Pj4g LSBLZXJuZWwgcGVyZiBzdWJzeXRlbSBhbGxvd3MgdXNlcnMgdG8gc3BlY2lmeSB0aGUgY2xvY2sg aWQgdG8gYmUgCj4+Pj4+IHVzZWQKPj4+Pj4gwqAgaW4gcGVyZl9ldmVudF9vcGVuLiBUaGlzIGNs b2NrIGlkIGlzIHVzZWQgYnkgdGhlIHBlcmYgc3Vic3lzdGVtIHRvCj4+Pj4+IMKgIHJldHVybiB0 aGUgYXBwcm9wcmlhdGUgY3B1IHRpbWVzdGFtcCBpbiBwZXJmIGV2ZW50cy4gU2ltaWxhcmx5LCBs ZXQKPj4+Pj4gwqAgdGhlIHVzZXIgcGFzcyB0aGUgY2xvY2tpZCB0byB0aGlzIHF1ZXJ5IHNvIHRo YXQgY3B1IHRpbWVzdGFtcAo+Pj4+PiDCoCBjb3JyZXNwb25kcyB0byB0aGUgY2xvY2sgaWQgcmVx dWVzdGVkLgo+Pj4+Pgo+Pj4+PiB2NTogKFR2cnRrbykKPj4+Pj4gLSBVc2Ugbm9ybWFsIGt0aW1l IGFjY2Vzc29ycyBpbnN0ZWFkIG9mIGZhc3QgdmVyc2lvbnMKPj4+Pj4gLSBBZGQgbW9yZSB1QXBp IGRvY3VtZW50YXRpb24KPj4+Pj4KPj4+Pj4gdjY6IChMaW9uZWwpCj4+Pj4+IC0gTW92ZSBzd2l0 Y2ggb3V0IG9mIHNwaW5sb2NrCj4+Pj4+Cj4+Pj4+IHY3OiAoQ2hyaXMpCj4+Pj4+IC0gY3NfdGlt ZXN0YW1wIGlzIGEgbWlzbm9tZXIsIHVzZSBjc19jeWNsZXMgaW5zdGVhZAo+Pj4+PiAtIHJldHVy biB0aGUgY3MgY3ljbGUgZnJlcXVlbmN5IGFzIHdlbGwgaW4gdGhlIHF1ZXJ5Cj4+Pj4+Cj4+Pj4+ IHY4Ogo+Pj4+PiAtIEFkZCBwbGF0Zm9ybSBhbmQgZW5naW5lIHNwZWNpZmljIGNoZWNrcwo+Pj4+ Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBVbWVzaCBOZXJsaWdlIFJhbWFwcGEgCj4+Pj4+IDx1bWVz aC5uZXJsaWdlLnJhbWFwcGFAaW50ZWwuY29tPgo+Pj4+PiAtLS0KPj4+Pj4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgfCAxNDAgCj4+Pj4+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+Pj4+PiDCoGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaMKgwqDCoMKgwqDC oCB8wqAgNDMgKysrKysrKysrCj4+Pj4+IMKgMiBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0aW9u cygrKQo+Pj4+Pgo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9x dWVyeS5jIAo+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+Pj4+PiBp bmRleCBmZWQzMzdhZDdiNjguLjc2M2YwZjkxODA2NSAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcXVlcnkuYwo+Pj4+PiBAQCAtNiw2ICs2LDggQEAKPj4+Pj4gwqAjaW5jbHVkZSA8 bGludXgvbm9zcGVjLmg+Cj4+Pj4+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3BtLmgiCj4+ Pj4+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3VzZXIuaCIKPj4+Pj4gwqAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKPj4+Pj4gwqAjaW5jbHVkZSAiaTkxNV9wZXJmLmgiCj4+Pj4+IMKgI2luY2x1 ZGUgImk5MTVfcXVlcnkuaCIKPj4+Pj4gQEAgLTkwLDYgKzkyLDE0MyBAQCBzdGF0aWMgaW50IHF1 ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IAo+Pj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPj4+Pj4gwqDCoMKgwqAgcmV0dXJuIHRvdGFsX2xlbmd0aDsKPj4+Pj4gwqB9Cj4+Pj4+ICt0 eXBlZGVmIHU2NCAoKl9fa3RpbWVfZnVuY190KSh2b2lkKTsKPj4+Pj4gK3N0YXRpYyBfX2t0aW1l X2Z1bmNfdCBfX2Nsb2NrX2lkX3RvX2Z1bmMoY2xvY2tpZF90IGNsa19pZCkKPj4+Pj4gK3sKPj4+ Pj4gK8KgwqDCoCAvKgo+Pj4+PiArwqDCoMKgwqAgKiBVc2UgbG9naWMgc2FtZSBhcyB0aGUgcGVy ZiBzdWJzeXN0ZW0gdG8gYWxsb3cgdXNlciB0byAKPj4+Pj4gc2VsZWN0IHRoZQo+Pj4+PiArwqDC oMKgwqAgKiByZWZlcmVuY2UgY2xvY2sgaWQgdG8gYmUgdXNlZCBmb3IgdGltZXN0YW1wcy4KPj4+ Pj4gK8KgwqDCoMKgICovCj4+Pj4+ICvCoMKgwqAgc3dpdGNoIChjbGtfaWQpIHsKPj4+Pj4gK8Kg wqDCoCBjYXNlIENMT0NLX01PTk9UT05JQzoKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAm a3RpbWVfZ2V0X25zOwo+Pj4+PiArwqDCoMKgIGNhc2UgQ0xPQ0tfTU9OT1RPTklDX1JBVzoKPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAma3RpbWVfZ2V0X3Jhd19uczsKPj4+Pj4gK8KgwqDC oCBjYXNlIENMT0NLX1JFQUxUSU1FOgo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuICZrdGlt ZV9nZXRfcmVhbF9uczsKPj4+Pj4gK8KgwqDCoCBjYXNlIENMT0NLX0JPT1RUSU1FOgo+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuICZrdGltZV9nZXRfYm9vdHRpbWVfbnM7Cj4+Pj4+ICvCoMKg wqAgY2FzZSBDTE9DS19UQUk6Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gJmt0aW1lX2dl dF9jbG9ja3RhaV9uczsKPj4+Pj4gK8KgwqDCoCBkZWZhdWx0Ogo+Pj4+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIE5VTEw7Cj4+Pj4+ICvCoMKgwqAgfQo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtz dGF0aWMgaW5saW5lIGludAo+Pj4+PiArX19yZWFkX3RpbWVzdGFtcHMoc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfcmVnX3QgbG93ZXJf cmVnLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgIGk5MTVfcmVnX3QgdXBwZXJfcmVnLAo+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgIHU2NCAqY3NfdHMsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqAgdTY0ICpjcHVfdHMsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgX19rdGltZV9mdW5jX3Qg Y3B1X2Nsb2NrKQo+Pj4+PiArewo+Pj4+PiArwqDCoMKgIHUzMiB1cHBlciwgbG93ZXIsIG9sZF91 cHBlciwgbG9vcCA9IDA7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCB1cHBlciA9IGludGVsX3VuY29y ZV9yZWFkX2Z3KHVuY29yZSwgdXBwZXJfcmVnKTsKPj4+Pj4gK8KgwqDCoCBkbyB7Cj4+Pj4+ICvC oMKgwqDCoMKgwqDCoCAqY3B1X3RzID0gY3B1X2Nsb2NrKCk7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCBsb3dlciA9IGludGVsX3VuY29yZV9yZWFkX2Z3KHVuY29yZSwgbG93ZXJfcmVnKTsKPj4+Pj4g K8KgwqDCoMKgwqDCoMKgIG9sZF91cHBlciA9IHVwcGVyOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqAg dXBwZXIgPSBpbnRlbF91bmNvcmVfcmVhZF9mdyh1bmNvcmUsIHVwcGVyX3JlZyk7Cj4+Pj4+ICvC oMKgwqAgfSB3aGlsZSAodXBwZXIgIT0gb2xkX3VwcGVyICYmIGxvb3ArKyA8IDIpOwo+Pj4+Cj4+ Pj4KPj4+PiBXaXRoIHRoZSAyIGNwdSB0aW1lc3RhbXBzIHRoaW5ncyBJIG1lbnRpb25lZCBiZWxv dywgdGhpcyB3b3VsZCBiZQo+Pj4+Cj4+Pj4KPj4+PiBkbyB7Cj4+Pj4KPj4+PiDCoMKgwqAgKmNw dV90czAgPSBjcHVfY2xvY2soKTsKPj4+Pgo+Pj4+IMKgwqDCoCBsb3dlciA9IGludGVsX3VuY29y ZV9yZWFkX2Z3KHVuY29yZSwgbG93ZXJfcmVnKTsKPj4+Pgo+Pj4+IMKgwqDCoCAqY3B1X3RzMSA9 IGNwdV9jbG9jaygpOwo+Pj4+Cj4+Pj4gwqDCoMKgIHVwcGVyID0gaW50ZWxfdW5jb3JlX3JlYWRf ZncodW5jb3JlLCB1cHBlcl9yZWcpOwo+Pj4+Cj4+Pj4gfSB3aGlsZSAodXBwZXIgIT0gb2xkX3Vw cGVyICYmIGxvb3ArKyA8IDIpOwo+Pj4+Cj4+Pj4KPj4+Pj4gKwo+Pj4+PiArwqDCoMKgICpjc190 cyA9ICh1NjQpdXBwZXIgPDwgMzIgfCBsb3dlcjsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIHJldHVy biAwOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4+ICtfX3F1ZXJ5X2Nz X2N5Y2xlcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqAgdTY0ICpjc190cywgdTY0ICpjcHVfdHMsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqAgX19rdGltZV9mdW5jX3QgY3B1X2Nsb2NrKQo+Pj4+PiArewo+Pj4+PiArwqDCoMKgIHN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGVuZ2luZS0+dW5jb3JlOwo+Pj4+PiArwqDCoMKgIGVu dW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWluczsKPj4+Pj4gK8KgwqDCoCB1MzIgYmFzZSA9 IGVuZ2luZS0+bW1pb19iYXNlOwo+Pj4+PiArwqDCoMKgIGludGVsX3dha2VyZWZfdCB3YWtlcmVm Owo+Pj4+PiArwqDCoMKgIGludCByZXQ7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBmd19kb21haW5z ID0gaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVnKHVuY29yZSwKPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSU5HX1RJTUVT VEFNUChiYXNlKSwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBGV19SRUdfUkVBRCk7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCB3aXRo X2ludGVsX3J1bnRpbWVfcG0odW5jb3JlLT5ycG0sIHdha2VyZWYpIHsKPj4+Pj4gK8KgwqDCoMKg wqDCoMKgIHNwaW5fbG9ja19pcnEoJnVuY29yZS0+bG9jayk7Cj4+Pj4+ICvCoMKgwqDCoMKgwqDC oCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldF9fbG9ja2VkKHVuY29yZSwgZndfZG9tYWlucyk7 Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IF9fcmVhZF90aW1lc3RhbXBzKHVu Y29yZSwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJTkdf VElNRVNUQU1QKGJhc2UpLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgUklOR19USU1FU1RBTVBfVURXKGJhc2UpLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY3NfdHMsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjcHVfdHMsCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBjcHVfY2xvY2spOwo+Pj4+PiArCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dF9fbG9ja2VkKHVuY29yZSwgZndfZG9tYWlucyk7Cj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBzcGluX3VubG9ja19pcnEoJnVuY29yZS0+bG9jayk7Cj4+Pj4+ ICvCoMKgwqAgfQo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgcmV0dXJuIHJldDsKPj4+Pj4gK30KPj4+ Pj4gKwo+Pj4+PiArc3RhdGljIGludAo+Pj4+PiArcXVlcnlfY3NfY3ljbGVzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1 X3F1ZXJ5X2l0ZW0gKnF1ZXJ5X2l0ZW0pCj4+Pj4+ICt7Cj4+Pj4+ICvCoMKgwqAgc3RydWN0IGRy bV9pOTE1X3F1ZXJ5X2NzX2N5Y2xlcyBfX3VzZXIgKnF1ZXJ5X3B0cjsKPj4+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfY3NfY3ljbGVzIHF1ZXJ5Owo+Pj4+PiArwqDCoMKgIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4+Pj4gK8KgwqDCoCBfX2t0aW1lX2Z1bmNfdCBj cHVfY2xvY2s7Cj4+Pj4+ICvCoMKgwqAgaW50IHJldDsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIGlm IChJTlRFTF9HRU4oaTkxNSkgPCA2KQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9E RVY7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBxdWVyeV9wdHIgPSB1NjRfdG9fdXNlcl9wdHIocXVl cnlfaXRlbS0+ZGF0YV9wdHIpOwo+Pj4+PiArwqDCoMKgIHJldCA9IGNvcHlfcXVlcnlfaXRlbSgm cXVlcnksIHNpemVvZihxdWVyeSksIHNpemVvZihxdWVyeSksIAo+Pj4+PiBxdWVyeV9pdGVtKTsK Pj4+Pj4gK8KgwqDCoCBpZiAocmV0ICE9IDApCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g cmV0Owo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgaWYgKHF1ZXJ5LmZsYWdzKQo+Pj4+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBpZiAocXVlcnku cnN2ZCkKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4+PiArCj4+Pj4+ ICvCoMKgwqAgY3B1X2Nsb2NrID0gX19jbG9ja19pZF90b19mdW5jKHF1ZXJ5LmNsb2NraWQpOwo+ Pj4+PiArwqDCoMKgIGlmICghY3B1X2Nsb2NrKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FSU5WQUw7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBlbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9v a3VwX3VzZXIoaTkxNSwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBxdWVyeS5lbmdpbmUuZW5naW5lX2NsYXNzLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHF1ZXJ5LmVuZ2luZS5lbmdpbmVfaW5zdGFuY2Up Owo+Pj4+PiArwqDCoMKgIGlmICghZW5naW5lKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FSU5WQUw7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBpZiAoSVNfR0VOKGk5MTUsIDYpICYmCj4+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBxdWVyeS5lbmdpbmUuZW5naW5lX2NsYXNzICE9IEk5MTVfRU5H SU5FX0NMQVNTX1JFTkRFUikKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PREVWOwo+ Pj4+PiArCj4+Pj4+ICvCoMKgwqAgcXVlcnkuY3NfZnJlcXVlbmN5ID0gZW5naW5lLT5ndC0+Y2xv Y2tfZnJlcXVlbmN5Owo+Pj4+PiArwqDCoMKgIHJldCA9IF9fcXVlcnlfY3NfY3ljbGVzKGVuZ2lu ZSwKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcXVlcnkuY3NfY3ljbGVz LAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZxdWVyeS5jcHVfdGltZXN0 YW1wLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNwdV9jbG9jayk7Cj4+ Pj4+ICvCoMKgwqAgaWYgKHJldCkKPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ Pj4+ICsKPj4+Pj4gK8KgwqDCoCBpZiAocHV0X3VzZXIocXVlcnkuY3NfZnJlcXVlbmN5LCAmcXVl cnlfcHRyLT5jc19mcmVxdWVuY3kpKQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFV TFQ7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCBpZiAocHV0X3VzZXIocXVlcnkuY3B1X3RpbWVzdGFt cCwgJnF1ZXJ5X3B0ci0+Y3B1X3RpbWVzdGFtcCkpCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVGQVVMVDsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIGlmIChwdXRfdXNlcihxdWVyeS5jc19j eWNsZXMsICZxdWVyeV9wdHItPmNzX2N5Y2xlcykpCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gLUVGQVVMVDsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIHJldHVybiBzaXplb2YocXVlcnkpOwo+ Pj4+PiArfQo+Pj4+PiArCj4+Pj4+IMKgc3RhdGljIGludAo+Pj4+PiDCoHF1ZXJ5X2VuZ2luZV9p bmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSAqcXVlcnlfaXRlbSkKPj4+Pj4gQEAgLTQy NCw2ICs1NjMsNyBAQCBzdGF0aWMgaW50ICgqIGNvbnN0IGk5MTVfcXVlcnlfZnVuY3NbXSkoc3Ry dWN0IAo+Pj4+PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4+Pj4gwqDCoMKgwqAgcXVl cnlfdG9wb2xvZ3lfaW5mbywKPj4+Pj4gwqDCoMKgwqAgcXVlcnlfZW5naW5lX2luZm8sCj4+Pj4+ IMKgwqDCoMKgIHF1ZXJ5X3BlcmZfY29uZmlnLAo+Pj4+PiArwqDCoMKgIHF1ZXJ5X2NzX2N5Y2xl cywKPj4+Pj4gwqB9Owo+Pj4+PiDCoGludCBpOTE1X3F1ZXJ5X2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCAKPj4+Pj4gZHJtX2ZpbGUgKmZpbGUpCj4+Pj4+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggCj4+Pj4+IGIvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCj4+Pj4+IGluZGV4IDE5ODdlMmVhNzlhMy4uMzc5YWU2ZTdh ZWIwIDEwMDY0NAo+Pj4+PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4+Pj4g KysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+Pj4+IEBAIC0yMTc2LDYgKzIxNzYs MTAgQEAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2l0ZW0gewo+Pj4+PiDCoCNkZWZpbmUgRFJNX0k5 MTVfUVVFUllfVE9QT0xPR1lfSU5GT8KgwqDCoCAxCj4+Pj4+IMKgI2RlZmluZSBEUk1fSTkxNV9R VUVSWV9FTkdJTkVfSU5GT8KgwqDCoCAyCj4+Pj4+IMKgI2RlZmluZSBEUk1fSTkxNV9RVUVSWV9Q RVJGX0NPTkZJR8KgwqDCoMKgwqAgMwo+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+PiArwqDCoMKgwqAg KiBRdWVyeSBDb21tYW5kIFN0cmVhbWVyIHRpbWVzdGFtcCByZWdpc3Rlci4KPj4+Pj4gK8KgwqDC oMKgICovCj4+Pj4+ICsjZGVmaW5lIERSTV9JOTE1X1FVRVJZX0NTX0NZQ0xFU8KgwqDCoCA0Cj4+ Pj4+IMKgLyogTXVzdCBiZSBrZXB0IGNvbXBhY3QgLS0gbm8gaG9sZXMgYW5kIHdlbGwgZG9jdW1l bnRlZCAqLwo+Pj4+PiDCoMKgwqDCoCAvKgo+Pj4+PiBAQCAtMjMwOSw2ICsyMzEzLDQ1IEBAIHN0 cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbyB7Cj4+Pj4+IMKgwqDCoMKgIF9fdTY0IHJzdmQxWzRd Owo+Pj4+PiDCoH07Cj4+Pj4+ICsvKioKPj4+Pj4gKyAqIHN0cnVjdCBkcm1faTkxNV9xdWVyeV9j c19jeWNsZXMKPj4+Pj4gKyAqCj4+Pj4+ICsgKiBUaGUgcXVlcnkgcmV0dXJucyB0aGUgY29tbWFu ZCBzdHJlYW1lciBjeWNsZXMgYW5kIHRoZSAKPj4+Pj4gZnJlcXVlbmN5IHRoYXQgY2FuIGJlCj4+ Pj4+ICsgKiB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgY29tbWFuZCBzdHJlYW1lciB0aW1lc3RhbXAu IEluIGFkZGl0aW9uIAo+Pj4+PiB0aGUgcXVlcnkKPj4+Pj4gKyAqIHJldHVybnMgdGhlIGNwdSB0 aW1lc3RhbXAgdGhhdCBpbmRpY2F0ZXMgd2hlbiB0aGUgY29tbWFuZCAKPj4+Pj4gc3RyZWFtZXIg Y3ljbGUKPj4+Pj4gKyAqIGNvdW50IHdhcyBjYXB0dXJlZC4KPj4+Pj4gKyAqLwo+Pj4+PiArc3Ry dWN0IGRybV9pOTE1X3F1ZXJ5X2NzX2N5Y2xlcyB7Cj4+Pj4+ICvCoMKgwqAgLyoqIEVuZ2luZSBm b3Igd2hpY2ggY29tbWFuZCBzdHJlYW1lciBjeWNsZXMgaXMgcXVlcmllZC4gKi8KPj4+Pj4gK8Kg wqDCoCBzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgZW5naW5lOwo+Pj4+PiArCj4+ Pj4+ICvCoMKgwqAgLyoqIE11c3QgYmUgemVyby4gKi8KPj4+Pj4gK8KgwqDCoCBfX3UzMiBmbGFn czsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+PiArwqDCoMKgwqAgKiBDb21tYW5kIHN0 cmVhbWVyIGN5Y2xlcyBhcyByZWFkIGZyb20gdGhlIGNvbW1hbmQgc3RyZWFtZXIKPj4+Pj4gK8Kg wqDCoMKgICogcmVnaXN0ZXIgYXQgMHgzNTggb2Zmc2V0Lgo+Pj4+PiArwqDCoMKgwqAgKi8KPj4+ Pj4gK8KgwqDCoCBfX3U2NCBjc19jeWNsZXM7Cj4+Pj4+ICsKPj4+Pj4gK8KgwqDCoCAvKiogRnJl cXVlbmN5IG9mIHRoZSBjcyBjeWNsZXMgaW4gSHouICovCj4+Pj4+ICvCoMKgwqAgX191NjQgY3Nf ZnJlcXVlbmN5Owo+Pj4+PiArCj4+Pj4+ICvCoMKgwqAgLyoqIENQVSB0aW1lc3RhbXAgaW4gbmFu b3NlY29uZHMuICovCj4+Pj4+ICvCoMKgwqAgX191NjQgY3B1X3RpbWVzdGFtcDsKPj4+Pgo+Pj4+ Cj4+Pj4gV291bGQgaXQgYmUgcG9zc2libGUgdG8gaGF2ZSA6IHU2NCBjcHVfdGltZXN0YW1wc1sy XTsKPj4+Pgo+Pj4+IHdpdGggY3B1X3RpbWVzdGFtcHNbMF0gdGFrZW4gYmVmb3JlICYgY3B1X3Rp bWVzdGFtcHNbMV0gdGFrZW4gYWZ0ZXIgCj4+Pj4gdGhlIGNzX2N5Y2xlcywgc28gd2UgY2FuIGhh dmUgYW4gaWRlYSBvZiBob3cgbG9uZyB0aGUgcmVhZCB0YWtlcy4KPj4+Cj4+PiBQb3NzaWJsZSwg YnV0IEkgdGhvdWdodCBtdWx0aXBsZSBxdWVyaWVzIHdvdWxkIGluZGlyZWN0bHkgcHJvdmlkZSAK Pj4+IHN1Y2ggaW5mb3JtYXRpb24uIElmIHF1ZXJ5MSByZXR1cm5zIGNwdTEgYW5kIGNzMSB0aW1l IGFuZCBxdWVyeTIgCj4+PiByZXR1cm5zIGNwdTIgYW5kIGNzMiB0aW1lcy4gQXNzdW1pbmcgbmVp dGhlciBvdmVyZmxvd2VkLAo+Pj4KPj4+IHwoKGNwdTIgLSBjcHUxKSAtIChjczEgLSBjczIpKXwK Pj4+Cj4+PiBzaG91bGQgYmUgdGhlIHdvcnN0IGNhc2UgdGltZSB0YWtlbiB0byByZWFkIHRoZSBy ZWdpc3RlciAKPj4+IChlc3NlbnRpYWxseSBkZWx0YV9kZWx0YSBpbiB0aGUgSUdUIHRlc3QpLiBU aG91Z2h0cz8KPj4KPj4KPj4gR29pbmcgdGhyb3VnaCAyIHN5c2NhbGxzIGludHJvZHVjZXMgYSBk ZWxheS4KPj4KPj4gSSBkaWQgc29tZSBtZWFzdXJlbWVudHMgYW5kIGl0IGFwcGVhcnMgdG8gYmUg aW4gdGhlIG9yZGVycyBvZiAyMH4zMHVzLgo+Pgo+Cj4gSGF2ZSB5b3UgdHJpZWQgbXVsdGlwbGUg cXVlcnkgaXRlbXMgaW4gdGhlIHNhbWUgY2FsbCB0byB0aGUgcXVlcnkgCj4gaW9jdGw/wqAgRG9l cyB0aGF0IG1ha2UgYW55IGRpZmZlcmVuY2U/CgoKWWVhaCwgaXQgd2FzIHRoZSBhdmVyYWdlIDov CgoKLUxpb25lbAoKCj4KPj4KPj4gV2hpbGUgZG9pbmcgdGhlIDIgY3B1IHRpbWVzdGFtcCBjYXB0 dXJlIHdpdGggYSBzaW5nbGUgbW1pbyByZWFkIGluIAo+PiBiZXR3ZWVuIHNob3VsZCBiZSBiZWxv dyAydXMuCj4+Cj4+IFdlJ3JlIGhvcGluZyB0byBnbyBhcyBwcmVjaXNlIGFzIHBvc3NpYmxlIHdp dGggdGhpcyA6KQo+Cj4gSSBzZWUuIEkgd2lsbCBwb3N0IGFuIHVwZGF0ZS4KPgo+IENhbiB5b3Ug YWxzbyBzaGFyZSBob3cgeW91IGludGVuZCB0byB1c2UgdGhlIHF1ZXJ5IHJlc3VsdCB3aXRoIDIg Y3B1IAo+IHRpbWVzdGFtcHM/IEkgd2FudCB0byBhZGQgdGhhdCB0byB0aGUgSUdULgo+Cj4gVGhh bmtzLAo+IFVtZXNoCj4KPj4KPj4KPj4gLUxpb25lbAo+Pgo+Pgo+Pj4KPj4+IFRoYW5rcywKPj4+ IFVtZXNoCj4+Pgo+Pj4+Cj4+Pj4KPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIC8qKgo+Pj4+PiArwqDC oMKgwqAgKiBSZWZlcmVuY2UgY2xvY2sgaWQgZm9yIENQVSB0aW1lc3RhbXAuIEZvciBkZWZpbml0 aW9uLCBzZWUKPj4+Pj4gK8KgwqDCoMKgICogY2xvY2tfZ2V0dGltZSgyKSBhbmQgcGVyZl9ldmVu dF9vcGVuKDIpLiBTdXBwb3J0ZWQgY2xvY2sgCj4+Pj4+IGlkcyBhcmUKPj4+Pj4gK8KgwqDCoMKg ICogQ0xPQ0tfTU9OT1RPTklDLCBDTE9DS19NT05PVE9OSUNfUkFXLCBDTE9DS19SRUFMVElNRSwg Cj4+Pj4+IENMT0NLX0JPT1RUSU1FLAo+Pj4+PiArwqDCoMKgwqAgKiBDTE9DS19UQUkuCj4+Pj4+ ICvCoMKgwqDCoCAqLwo+Pj4+PiArwqDCoMKgIF9fczMyIGNsb2NraWQ7Cj4+Pj4+ICsKPj4+Pj4g K8KgwqDCoCAvKiogTXVzdCBiZSB6ZXJvLiAqLwo+Pj4+PiArwqDCoMKgIF9fdTMyIHJzdmQ7Cj4+ Pj4+ICt9Owo+Pj4+PiArCj4+Pj4+IMKgLyoqCj4+Pj4+IMKgICogc3RydWN0IGRybV9pOTE1X3F1 ZXJ5X2VuZ2luZV9pbmZvCj4+Pj4+IMKgICoKPj4+Pgo+Pj4+Cj4+CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK