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 3712FC47082 for ; Tue, 8 Jun 2021 08:15:16 +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 DEF886124C for ; Tue, 8 Jun 2021 08:15:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DEF886124C 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 7452A6EB25; Tue, 8 Jun 2021 08:15:15 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3B72A6EB25; Tue, 8 Jun 2021 08:15:14 +0000 (UTC) IronPort-SDR: 733vAqdRG3jwnyWgHmShYqpMikt87tPv7i2RxfgpnyDBCGi7MVpFrAIiUM5TCbAK3DO4hJ95PJ MBj/NKb7LoSw== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="268650797" X-IronPort-AV: E=Sophos;i="5.83,257,1616482800"; d="scan'208";a="268650797" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2021 01:15:11 -0700 IronPort-SDR: chfDvQ60JzmVn1CvdS4STHxboJJd2sjysY2DZUIJ5/Qb8BURxcsUBL026Bls/Sj2bIF5V7/Co5 5BbyePA0TcMA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,257,1616482800"; d="scan'208";a="552197397" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga001.fm.intel.com with ESMTP; 08 Jun 2021 01:15:08 -0700 Received: from [10.249.139.189] (mwajdecz-MOBL.ger.corp.intel.com [10.249.139.189]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 1588F6LV010910; Tue, 8 Jun 2021 09:15:06 +0100 To: Daniele Ceraolo Spurio , Matthew Brost , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210607180356.165785-1-matthew.brost@intel.com> <20210607180356.165785-3-matthew.brost@intel.com> <707a404a-c20b-39e6-af85-7ab93e9d3c5e@intel.com> From: Michal Wajdeczko Message-ID: <5dc6918e-d9ae-f435-c33f-2d6ab370224e@intel.com> Date: Tue, 8 Jun 2021 10:15:06 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <707a404a-c20b-39e6-af85-7ab93e9d3c5e@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 02/13] drm/i915/guc: Update MMIO based communication 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiAwOC4wNi4yMDIxIDAxOjA2LCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+IAo+ IAo+IE9uIDYvNy8yMDIxIDExOjAzIEFNLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+PiBGcm9tOiBN aWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPj4KPj4gVGhlIE1N SU8gYmFzZWQgSG9zdC10by1HdUMgY29tbXVuaWNhdGlvbiBwcm90b2NvbCBoYXMgYmVlbgo+PiB1 cGRhdGVkIHRvIHVzZSB1bmlmaWVkIEhYRyBtZXNzYWdlcy4KPj4KPj4gVXBkYXRlIG91ciBpbnRl bF9ndWNfc2VuZF9tbWlvKCkgZnVuY3Rpb24gYnkgY29ycmVjdGx5IGhhbmRsZQo+PiBCVVNZLCBS RVRSWSBhbmQgRkFJTFVSRSByZXBsaWVzLiBBbHNvIHVwZGF0ZSBvdXIgZG9jdW1lbnRhdGlvbi4K Pj4KPj4gR3VDOiA1NS4wLjAKPj4gU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhl dy5icm9zdEBpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBXYWpkZWN6a28gPG1p Y2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+PiBDYzogUGlvdHIgUGnDs3Jrb3dza2kgPHBpb3Ry LnBpb3Jrb3dza2lAaW50ZWwuY29tPgo+PiBDYzogTWljaGFsIFdpbmlhcnNraSA8bWljaGFsLndp bmlhcnNraUBpbnRlbC5jb20+ICN2Mwo+PiAtLS0KPj4gwqAgLi4uL2d0L3VjL2FiaS9ndWNfY29t bXVuaWNhdGlvbl9tbWlvX2FiaS5owqDCoMKgIHwgNjMgKysrKysrLS0tLS0tLQo+PiDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuY8KgwqDCoMKgwqDCoMKgIHwgOTIgKysr KysrKysrKysrKystLS0tLQo+PiDCoCAyIGZpbGVzIGNoYW5nZWQsIDk3IGluc2VydGlvbnMoKyks IDU4IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0Cj4+IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX21taW9fYWJpLmgKPj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fbW1pb19hYmkuaAo+PiBpbmRl eCBiZTA2NmE2MmU5ZTAuLjNmOTAzOWUzZWY5ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX21taW9fYWJpLmgKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX21taW9fYWJp LmgKPj4gQEAgLTcsNDYgKzcsNDMgQEAKPj4gwqAgI2RlZmluZSBfQUJJX0dVQ19DT01NVU5JQ0FU SU9OX01NSU9fQUJJX0gKPj4gwqAgwqAgLyoqCj4+IC0gKiBET0M6IE1NSU8gYmFzZWQgY29tbXVu aWNhdGlvbgo+PiArICogRE9DOiBHdUMgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uCj4+IMKgwqAg Kgo+PiAtICogVGhlIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3QgYW5kIEd1 QyB1c2VzIHNvZnR3YXJlCj4+IHNjcmF0Y2gKPj4gLSAqIHJlZ2lzdGVycywgd2hlcmUgZmlyc3Qg cmVnaXN0ZXIgaG9sZHMgZGF0YSB0cmVhdGVkIGFzIG1lc3NhZ2UgaGVhZGVyLAo+PiAtICogYW5k IG90aGVyIHJlZ2lzdGVycyBhcmUgdXNlZCB0byBob2xkIG1lc3NhZ2UgcGF5bG9hZC4KPj4gKyAq IFRoZSBNTUlPIGJhc2VkIGNvbW11bmljYXRpb24gYmV0d2VlbiBIb3N0IGFuZCBHdUMgcmVsaWVz IG9uIHNwZWNpYWwKPj4gKyAqIGhhcmR3YXJlIHJlZ2lzdGVycyB3aGljaCBmb3JtYXQgY291bGQg YmUgZGVmaW5lZCBieSB0aGUgc29mdHdhcmUKPj4gKyAqIChzbyBjYWxsZWQgc2NyYXRjaCByZWdp c3RlcnMpLgo+PiDCoMKgICoKPj4gLSAqIEZvciBHZW45KywgR3VDIHVzZXMgc29mdHdhcmUgc2Ny YXRjaCByZWdpc3RlcnMgMHhDMTgwLTB4QzFCOCwKPj4gLSAqIGJ1dCBubyBIMkcgY29tbWFuZCB0 YWtlcyBtb3JlIHRoYW4gOCBwYXJhbWV0ZXJzIGFuZCB0aGUgR3VDIEZXCj4+IC0gKiBpdHNlbGYg dXNlcyBhbiA4LWVsZW1lbnQgYXJyYXkgdG8gc3RvcmUgdGhlIEgyRyBtZXNzYWdlLgo+PiAtICoK Pj4gLSAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rCj4+IC0gKsKgwqDCoMKgwqAgfMKgIE1NSU9bMF3CoCB8IE1NSU9bMV0gfMKgwqAgLi4uwqDC oCB8IE1NSU9bbl0gfAo+PiAtICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSsKPj4gLSAqwqDCoMKgwqDCoCB8IGhlYWRlcsKgwqDCoCB8wqDCoMKg wqDCoCBvcHRpb25hbCBwYXlsb2FkwqDCoMKgwqDCoMKgIHwKPj4gLSAqwqDCoMKgwqDCoCArPT09 PT09Kz09PT0rPT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT0rCj4+IC0gKsKgwqDCoMKgwqAg fCAzMToyOHx0eXBlfMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqAgfAo+PiAtICrCoMKgwqDCoMKgICstLS0tLS0rLS0tLSvCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHwKPj4gLSAqwqDCoMKgwqDCoCB8 IDI3OjE2fGRhdGF8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoCB8Cj4+IC0gKsKgwqDCoMKgwqAgKy0tLS0tLSstLS0tK8KgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfAo+PiAtICrCoMKgwqDCoMKgIHzC oCAxNTowfGNvZGV8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoCB8Cj4+IC0gKsKgwqDCoMKgwqAgKy0tLS0tLSstLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKwo+PiAtICoKPj4gLSAqIFRoZSBtZXNzYWdlIGhlYWRlciBjb25zaXN0cyBv ZjoKPj4gLSAqCj4+IC0gKiAtICoqdHlwZSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSB0eXBlCj4+IC0g KiAtICoqY29kZSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSBjb2RlLCBpcyBzcGVjaWZpYyBmb3IgKip0 eXBlKioKPj4gLSAqIC0gKipkYXRhKiosIGluZGljYXRlcyBtZXNzYWdlIGRhdGEsIG9wdGlvbmFs LCBkZXBlbmRzIG9uICoqY29kZSoqCj4+ICsgKiBFYWNoIE1NSU8gYmFzZWQgbWVzc2FnZSwgYm90 aCBIb3N0IHRvIEd1QyAoSDJHKSBhbmQgR3VDIHRvIEhvc3QgKEcySCkKPj4gKyAqIG1lc3NhZ2Vz LCB3aGljaCBtYXhpbXVtIGxlbmd0aCBkZXBlbmRzIG9uIG51bWJlciBvZiBhdmFpbGFibGUgc2Ny YXRjaAo+PiArICogcmVnaXN0ZXJzLCBpcyBkaXJlY3RseSB3cml0dGVuIGludG8gdGhvc2Ugc2Ny YXRjaCByZWdpc3RlcnMuCj4+IMKgwqAgKgo+PiAtICogVGhlIGZvbGxvd2luZyBtZXNzYWdlICoq dHlwZXMqKiBhcmUgc3VwcG9ydGVkOgo+PiArICogRm9yIEdlbjkrLCB0aGVyZSBhcmUgMTYgc29m dHdhcmUgc2NyYXRjaCByZWdpc3RlcnMgMHhDMTgwLTB4QzFCOCwKPj4gKyAqIGJ1dCBubyBIMkcg Y29tbWFuZCB0YWtlcyBtb3JlIHRoYW4gOCBwYXJhbWV0ZXJzIGFuZCB0aGUgR3VDIGZpcm13YXJl Cj4+ICsgKiBpdHNlbGYgdXNlcyBhbiA4LWVsZW1lbnQgYXJyYXkgdG8gc3RvcmUgdGhlIEgyRyBt ZXNzYWdlLgo+IAo+IElzIHRoaXMgc3RhdGVtZW50IHN0aWxsIHRydWU/IEkgYmVsaWV2ZSBubyBN TUlPIEgyRyBpcyBvdmVyIDQgRFdzIChnaXZlbgo+IHRoZSBsaW1pdGF0aW9uIG9mIHRoZSBuZXcg Z2VuMTErIHNjcmF0Y2ggcmVncyksIHdoaWxlIENUQiBtZXNzYWdlcyBjYW4KPiBiZSBsb25nZXIg dGhhbiA4IERXcy4KCm9vcHMsIGl0IHdhcyBqdXN0IGNvcHkvcGFzdCwgeW91J3JlIGNvcnJlY3Qs IHdpdGggbmV3IHVuaWZpZWQgZmlybXdhcmUsCmFsbCBNTUlPIEgyRyBhcmUgdXAgdG8gNCBEV3MK Cj4gCj4+IMKgwqAgKgo+PiAtICogLSAqKlJFUVVFU1QqKiwgaW5kaWNhdGVzIEhvc3QtdG8tR3VD IHJlcXVlc3QsIHJlcXVlc3RlZCBHdUMgYWN0aW9uCj4+IGNvZGUKPj4gLSAqwqDCoCBtdXN0IGJl IHByaW92aWRlZCBpbiAqKmNvZGUqKiBmaWVsZC4gT3B0aW9uYWwgYWN0aW9uIHNwZWNpZmljCj4+ IHBhcmFtZXRlcnMKPj4gLSAqwqDCoCBjYW4gYmUgcHJvdmlkZWQgaW4gcmVtYWluaW5nIHBheWxv YWQgcmVnaXN0ZXJzIG9yICoqZGF0YSoqIGZpZWxkLgo+PiArICogRm9yIEdlbjExKywgdGhlcmUg YXJlIGFkZGl0aW9uYWwgNCByZWdpc3RlcnMgMHgxOTAyNDAtMHgxOTAyNEMsIHdoaWNoCj4+ICsg KiBhcmUsIHJlZ2FyZGxlc3Mgb24gbG93ZXIgY291bnQsIHByZWZmZXJlZCBvdmVyIGxlZ2FjeSBv bmVzLgo+IAo+IHR5cG86IHByZWZmZXJlZCAtPiBwcmVmZXJyZWQKPiAKPj4gwqDCoCAqCj4+IC0g KiAtICoqUkVTUE9OU0UqKiwgaW5kaWNhdGVzIEd1Qy10by1Ib3N0IHJlc3BvbnNlIGZyb20gZWFy bGllciBHdUMKPj4gcmVxdWVzdCwKPj4gLSAqwqDCoCBhY3Rpb24gcmVzcG9uc2Ugc3RhdHVzIHdp bGwgYmUgcHJvdmlkZWQgaW4gKipjb2RlKiogZmllbGQuIE9wdGlvbmFsCj4+IC0gKsKgwqAgcmVz cG9uc2UgZGF0YSBjYW4gYmUgcmV0dXJuZWQgaW4gcmVtYWluaW5nIHBheWxvYWQgcmVnaXN0ZXJz IG9yCj4+ICoqZGF0YSoqCj4+IC0gKsKgwqAgZmllbGQuCj4+ICsgKiBUaGUgTU1JTyBiYXNlZCBj b21tdW5pY2F0aW9uIGlzIG1haW5seSB1c2VkIGR1cmluZyBkcml2ZXIKPj4gaW5pdGlhbGl6YXRp b24KPj4gKyAqIHBoYXNlIHRvIHNldHVwIHRoZSBgQ1RCIGJhc2VkIGNvbW11bmljYXRpb25gXyB0 aGF0IHdpbGwgYmUgdXNlZAo+PiBhZnRlcndhcmRzLgo+PiDCoMKgICovCj4+IMKgIMKgICNkZWZp bmUgR1VDX01BWF9NTUlPX01TR19MRU7CoMKgwqDCoMKgwqDCoCA4Cj4gCj4gU2VlIGNvbW1lbnQg YWJvdmUuIFJlZHVjZSB0aGlzIHRvIDQ/Cgp5ZXMsIG11c3QgYmUgcmVkdWNlZAoKPiAKPj4gwqAg Ky8qKgo+PiArICogRE9DOiBNTUlPIEhYRyBNZXNzYWdlCj4+ICsgKgo+PiArICogRm9ybWF0IG9m IHRoZSBNTUlPIG1lc3NhZ2VzIGZvbGxvd3MgZGVmaW5pdGlvbnMgb2YgYEhYRyBNZXNzYWdlYF8u Cj4+ICsgKgo+PiArICrCoAo+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Cj4+ICsgKsKgIHzCoMKg IHwgQml0c8KgIHwKPj4gRGVzY3JpcHRpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+ICsgKsKgCj4+ICs9PT0rPT09PT09PSs9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4KPj4gKyAqwqAg fCAwIHzCoCAzMTowIHzCoAo+PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rwqAgfAo+PiArICrCoCArLS0tKy0tLS0tLS0rwqAKPj4gfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCB8 Cj4+ICsgKsKgIHwuLi58wqDCoMKgwqDCoMKgIHzCoCB8wqAgRW1iZWRkZWQgYEhYRwo+PiBNZXNz YWdlYF/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgIHwKPj4gKyAqwqAgKy0tLSstLS0tLS0tK8KgCj4+IHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgfAo+PiArICrCoCB8 IG4gfMKgIDMxOjAgfMKgCj4+ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSvCoCB8Cj4+ICsgKsKgCj4+ICstLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK Pj4KPj4gKyAqLwo+PiArCj4+IMKgICNlbmRpZiAvKiBfQUJJX0dVQ19DT01NVU5JQ0FUSU9OX01N SU9fQUJJX0ggKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Yy5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPj4g aW5kZXggZjE0N2NiMzg5YTIwLi5iNzczNTY3Y2IwODAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Yy5jCj4+IEBAIC0zNzYsMjkgKzM3NiwyNyBAQCB2b2lkIGludGVs X2d1Y19maW5pKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4gwqAgLyoKPj4gwqDCoCAqIFRoaXMg ZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgTU1JTyBiYXNlZCBob3N0IHRvIEd1QyBpbnRlcmZhY2Uu Cj4+IMKgwqAgKi8KPj4gLWludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMgo+PiBsZW4sCj4+ICtpbnQgaW50ZWxfZ3VjX3Nl bmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqcmVxdWVzdCwKPj4gdTMy IGxlbiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyICpyZXNwb25zZV9idWYsIHUz MiByZXNwb25zZV9idWZfc2l6ZSkKPj4gwqAgewo+PiArwqDCoMKgIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gZ3VjX3RvX2d0KGd1YyktPmk5MTU7Cj4+IMKgwqDCoMKgwqAgc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1YyktPnVuY29yZTsKPj4gLcKgwqDC oCB1MzIgc3RhdHVzOwo+PiArwqDCoMKgIHUzMiBoZWFkZXI7Cj4+IMKgwqDCoMKgwqAgaW50IGk7 Cj4+IMKgwqDCoMKgwqAgaW50IHJldDsKPj4gwqAgwqDCoMKgwqDCoCBHRU1fQlVHX09OKCFsZW4p Owo+PiDCoMKgwqDCoMKgIEdFTV9CVUdfT04obGVuID4gZ3VjLT5zZW5kX3JlZ3MuY291bnQpOwo+ PiDCoCAtwqDCoMKgIC8qIFdlIGV4cGVjdCBvbmx5IGFjdGlvbiBjb2RlICovCj4+IC3CoMKgwqAg R0VNX0JVR19PTigqYWN0aW9uICYgfklOVEVMX0dVQ19NU0dfQ09ERV9NQVNLKTsKPj4gLQo+PiAt wqDCoMKgIC8qIElmIENUIGlzIGF2YWlsYWJsZSwgd2UgZXhwZWN0IHRvIHVzZSBNTUlPIG9ubHkg ZHVyaW5nCj4+IGluaXQvZmluaSAqLwo+PiAtwqDCoMKgIEdFTV9CVUdfT04oKmFjdGlvbiAhPQo+ PiBJTlRFTF9HVUNfQUNUSU9OX1JFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiAmJgo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmFjdGlvbiAhPQo+PiBJTlRFTF9HVUNfQUNUSU9OX0RF UkVHSVNURVJfQ09NTUFORF9UUkFOU1BPUlRfQlVGRkVSKTsKPj4gK8KgwqDCoCBHRU1fQlVHX09O KEZJRUxEX0dFVChHVUNfSFhHX01TR18wX09SSUdJTiwgcmVxdWVzdFswXSkgIT0KPj4gR1VDX0hY R19PUklHSU5fSE9TVCk7Cj4+ICvCoMKgwqAgR0VNX0JVR19PTihGSUVMRF9HRVQoR1VDX0hYR19N U0dfMF9UWVBFLCByZXF1ZXN0WzBdKSAhPQo+PiBHVUNfSFhHX1RZUEVfUkVRVUVTVCk7Cj4+IMKg IMKgwqDCoMKgwqAgbXV0ZXhfbG9jaygmZ3VjLT5zZW5kX211dGV4KTsKPj4gwqDCoMKgwqDCoCBp bnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIGd1Yy0+c2VuZF9yZWdzLmZ3X2RvbWFp bnMpOwo+PiDCoCArcmV0cnk6Cj4+IMKgwqDCoMKgwqAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KQo+PiAtwqDCoMKgwqDCoMKgwqAgaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgZ3VjX3NlbmRf cmVnKGd1YywgaSksIGFjdGlvbltpXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCBpKSwgcmVxdWVzdFtpXSk7Cj4+IMKgIMKg wqDCoMKgwqAgaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGd1Y19zZW5kX3JlZyhn dWMsIGkgLSAxKSk7Cj4+IMKgIEBAIC00MTAsMzAgKzQwOCw3NCBAQCBpbnQgaW50ZWxfZ3VjX3Nl bmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4+IGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIg bGVuLAo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoCByZXQgPSBfX2ludGVsX3dhaXRf Zm9yX3JlZ2lzdGVyX2Z3KHVuY29yZSwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGd1Y19zZW5kX3JlZyhndWMsIDApLAo+PiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSU5URUxfR1VDX01TR19UWVBFX01BU0ss Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9H VUNfTVNHX1RZUEVfUkVTUE9OU0UgPDwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIElOVEVMX0dVQ19NU0dfVFlQRV9TSElGVCwKPj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEwLCAxMCwgJnN0YXR1cyk7Cj4+IC3C oMKgwqAgLyogSWYgR3VDIGV4cGxpY2l0bHkgcmV0dXJuZWQgYW4gZXJyb3IsIGNvbnZlcnQgaXQg dG8gLUVJTyAqLwo+PiAtwqDCoMKgIGlmICghcmV0ICYmICFJTlRFTF9HVUNfTVNHX0lTX1JFU1BP TlNFX1NVQ0NFU1Moc3RhdHVzKSkKPj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU87Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHVUNfSFhHX01TR18w X09SSUdJTiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEZJRUxEX1BSRVAoR1VDX0hYR19NU0dfMF9PUklHSU4sCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdVQ19IWEdfT1JJR0lOX0dV QyksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxMCwg MTAsICZoZWFkZXIpOwo+PiArwqDCoMKgIGlmICh1bmxpa2VseShyZXQpKSB7Cj4+ICt0aW1lb3V0 Ogo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycigmaTkxNS0+ZHJtLCAibW1pbyByZXF1ZXN0ICUj eDogbm8gcmVwbHkgJXhcbiIsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlcXVlc3RbMF0s IGhlYWRlcik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIG91dDsKPj4gK8KgwqDCoCB9Cj4+IMKg IC3CoMKgwqAgaWYgKHJldCkgewo+PiAtwqDCoMKgwqDCoMKgwqAgRFJNX0VSUk9SKCJNTUlPOiBH dUMgYWN0aW9uICUjeCBmYWlsZWQgd2l0aCBlcnJvciAlZCAlI3hcbiIsCj4+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhY3Rpb25bMF0sIHJldCwgc3RhdHVzKTsKPj4gK8KgwqDCoCBpZiAo RklFTERfR0VUKEdVQ19IWEdfTVNHXzBfVFlQRSwgaGVhZGVyKSA9PQo+PiBHVUNfSFhHX1RZUEVf Tk9fUkVTUE9OU0VfQlVTWSkgewo+PiArI2RlZmluZSBkb25lICh7IGhlYWRlciA9IGludGVsX3Vu Y29yZV9yZWFkKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywKPj4gMCkpOyBcCj4+ICvCoMKgwqDC oMKgwqDCoCBGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9PUklHSU4sIGhlYWRlcikgIT0gR1VDX0hY R19PUklHSU5fR1VDCj4+IHx8IFwKPj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX0dFVChHVUNfSFhH X01TR18wX1RZUEUsIGhlYWRlcikgIT0KPj4gR1VDX0hYR19UWVBFX05PX1JFU1BPTlNFX0JVU1k7 IH0pCj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHdhaXRfZm9yKGRvbmUsIDEwMDApOwo+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KHJldCkpCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGdvdG8gdGltZW91dDsKPj4gK8KgwqDCoMKgwqDCoMKgIGlmICh1bmxpa2VseShGSUVM RF9HRVQoR1VDX0hYR19NU0dfMF9PUklHSU4sIGhlYWRlcikgIT0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdVQ19IWEdfT1JJR0lOX0dVQykpCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gcHJvdG87Cj4+ICsjdW5kZWYgZG9uZQo+PiArwqDC oMKgIH0KPj4gKwo+PiArwqDCoMKgIGlmIChGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9UWVBFLCBo ZWFkZXIpID09Cj4+IEdVQ19IWEdfVFlQRV9OT19SRVNQT05TRV9SRVRSWSkgewo+PiArwqDCoMKg wqDCoMKgwqAgdTMyIHJlYXNvbiA9IEZJRUxEX0dFVChHVUNfSFhHX1JFVFJZX01TR18wX1JFQVNP TiwgaGVhZGVyKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2RiZygmaTkxNS0+ZHJtLCAi bW1pbyByZXF1ZXN0ICUjeDogcmV0cnlpbmcsIHJlYXNvbiAldVxuIiwKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmVxdWVzdFswXSwgcmVhc29uKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8g cmV0cnk7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKEZJRUxEX0dFVChHVUNfSFhH X01TR18wX1RZUEUsIGhlYWRlcikgPT0KPj4gR1VDX0hYR19UWVBFX1JFU1BPTlNFX0ZBSUxVUkUp IHsKPj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBoaW50ID0gRklFTERfR0VUKEdVQ19IWEdfRkFJTFVS RV9NU0dfMF9ISU5ULCBoZWFkZXIpOwo+PiArwqDCoMKgwqDCoMKgwqAgdTMyIGVycm9yID0gRklF TERfR0VUKEdVQ19IWEdfRkFJTFVSRV9NU0dfMF9FUlJPUiwgaGVhZGVyKTsKPj4gKwo+PiArwqDC oMKgwqDCoMKgwqAgZHJtX2VycigmaTkxNS0+ZHJtLCAibW1pbyByZXF1ZXN0ICUjeDogZmFpbHVy ZSAleC8ldVxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVxdWVzdFswXSwgZXJyb3Is IGhpbnQpOwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVOWElPOwo+PiArwqDCoMKgwqDCoMKg wqAgZ290byBvdXQ7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgaWYgKEZJRUxEX0dFVChH VUNfSFhHX01TR18wX1RZUEUsIGhlYWRlcikgIT0KPj4gR1VDX0hYR19UWVBFX1JFU1BPTlNFX1NV Q0NFU1MpIHsKPj4gK3Byb3RvOgo+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycigmaTkxNS0+ZHJt LCAibW1pbyByZXF1ZXN0ICUjeDogdW5leHBlY3RlZCByZXBseSAlI3hcbiIsCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlcXVlc3RbMF0sIGhlYWRlcik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBy ZXQgPSAtRVBST1RPOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+IMKgwqDCoMKg wqAgfQo+PiDCoCDCoMKgwqDCoMKgIGlmIChyZXNwb25zZV9idWYpIHsKPj4gLcKgwqDCoMKgwqDC oMKgIGludCBjb3VudCA9IG1pbihyZXNwb25zZV9idWZfc2l6ZSwgZ3VjLT5zZW5kX3JlZ3MuY291 bnQgLSAxKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGludCBjb3VudCA9IG1pbihyZXNwb25zZV9idWZf c2l6ZSwgZ3VjLT5zZW5kX3JlZ3MuY291bnQpOwo+PiDCoCAtwqDCoMKgwqDCoMKgwqAgZm9yIChp ID0gMDsgaSA8IGNvdW50OyBpKyspCj4+ICvCoMKgwqDCoMKgwqDCoCBHRU1fQlVHX09OKCFjb3Vu dCk7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHJlc3BvbnNlX2J1ZlswXSA9IGhlYWRlcjsKPj4g Kwo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChpID0gMTsgaSA8IGNvdW50OyBpKyspCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3BvbnNlX2J1ZltpXSA9IGludGVsX3VuY29yZV9yZWFk KHVuY29yZSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGd1Y19zZW5kX3JlZyhndWMsIGkgKyAxKSk7Cj4+IC3CoMKgwqAg fQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ3VjX3NlbmRfcmVnKGd1YywgaSkpOwo+IAo+IFRoaXMgY291bGQgdXNlIGEg bm90ZSBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gcmVtYXJrIHRoYXQgd2UgaGF2ZSBubwo+IHVz ZXJzIGZvciB0aGUgcmV0dXJuZWQgZGF0YSB5ZXQgYW5kIHRoZXJlZm9yZSBub3RoaW5nIHdpbGwg YnJlYWsgaWYgd2UKPiBjaGFuZ2Ugd2hhdCB3ZSByZXR1cm4gdGhyb3VnaCBpdC4KCkkgaG9wZSB0 aGlzIHdpbGwgZG8gdGhlIHdvcms6CgoiU2luY2Ugc29tZSBvZiB0aGUgbmV3IE1NSU8gYWN0aW9u cyBtYXkgdXNlIERBVEEwIGZyb20gTU1JTyBIWEcKcmVzcG9uc2UsIHdlIG11c3QgdXBkYXRlIGlu dGVsX2d1Y19zZW5kX21taW8oKSB0byBjb3B5IGZ1bGwgcmVzcG9uc2UsCmluY2x1ZGluZyBIWEcg aGVhZGVyLiBUaGVyZSB3aWxsIGJlIG5vIGltcGFjdCB0byBleGlzdGluZyB1c2VycyBhcyBhbGwK b2YgdGhlbSBhcmUgb25seSByZWx5aW5nIGp1c3Qgb24gcmV0dXJuIGNvZGUuIgoKPiAKPiBBcGFy dCBmcm9tIHRoZSBuaXRzLCB0aGUgbG9naWMgbG9va3MgZ29vZCB0byBtZS4KPiBEYW5pZWxlCj4g Cj4+IMKgIC3CoMKgwqAgLyogVXNlIGRhdGEgZnJvbSB0aGUgR3VDIHJlc3BvbnNlIGFzIG91ciBy ZXR1cm4gdmFsdWUgKi8KPj4gLcKgwqDCoCByZXQgPSBJTlRFTF9HVUNfTVNHX1RPX0RBVEEoc3Rh dHVzKTsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIFVzZSBudW1iZXIgb2YgY29waWVkIGR3b3JkcyBh cyBvdXIgcmV0dXJuIHZhbHVlICovCj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBjb3VudDsKPj4g K8KgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqAgLyogVXNlIGRhdGEgZnJvbSB0aGUg R3VDIHJlc3BvbnNlIGFzIG91ciByZXR1cm4gdmFsdWUgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIHJl dCA9IEZJRUxEX0dFVChHVUNfSFhHX1JFU1BPTlNFX01TR18wX0RBVEEwLCBoZWFkZXIpOwo+PiAr wqDCoMKgIH0KPj4gwqAgwqAgb3V0Ogo+PiDCoMKgwqDCoMKgIGludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0KHVuY29yZSwgZ3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Cj4gCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=