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,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 156A4C47094 for ; Mon, 7 Jun 2021 23:07:11 +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 BB9C2610C7 for ; Mon, 7 Jun 2021 23:07:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BB9C2610C7 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 E7AD66EA47; Mon, 7 Jun 2021 23:07:03 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id C428A6E057; Mon, 7 Jun 2021 23:07:01 +0000 (UTC) IronPort-SDR: HI3XS57TEoaSkP9mfwHmIGMy/fTicTznJ8YsR83bq3wXylSxmNmI51NzNwQT5xqh+sHRG8Tq7/ 1u2DKpzwqfZQ== X-IronPort-AV: E=McAfee;i="6200,9189,10008"; a="201714173" X-IronPort-AV: E=Sophos;i="5.83,256,1616482800"; d="scan'208";a="201714173" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 16:06:58 -0700 IronPort-SDR: +sJ69eIRkwZWaeApv+UZ9TCJ78foKs12O7HEH5wDHS17aQNS26EahiJgRL67oU26p7w+9ZtRFR iC8WNGbBpuvw== X-IronPort-AV: E=Sophos;i="5.83,256,1616482800"; d="scan'208";a="476386900" Received: from dceraolo-mobl.amr.corp.intel.com (HELO [10.209.129.6]) ([10.209.129.6]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Jun 2021 16:06:57 -0700 To: 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> From: Daniele Ceraolo Spurio Message-ID: <707a404a-c20b-39e6-af85-7ab93e9d3c5e@intel.com> Date: Mon, 7 Jun 2021 16:06:53 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <20210607180356.165785-3-matthew.brost@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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiA2LzcvMjAyMSAxMTowMyBBTSwgTWF0dGhldyBCcm9zdCB3cm90ZToKPiBGcm9tOiBNaWNo YWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPgo+IFRoZSBNTUlPIGJh c2VkIEhvc3QtdG8tR3VDIGNvbW11bmljYXRpb24gcHJvdG9jb2wgaGFzIGJlZW4KPiB1cGRhdGVk IHRvIHVzZSB1bmlmaWVkIEhYRyBtZXNzYWdlcy4KPgo+IFVwZGF0ZSBvdXIgaW50ZWxfZ3VjX3Nl bmRfbW1pbygpIGZ1bmN0aW9uIGJ5IGNvcnJlY3RseSBoYW5kbGUKPiBCVVNZLCBSRVRSWSBhbmQg RkFJTFVSRSByZXBsaWVzLiBBbHNvIHVwZGF0ZSBvdXIgZG9jdW1lbnRhdGlvbi4KPgo+IEd1Qzog NTUuMC4wCj4gU2lnbmVkLW9mZi1ieTogTWF0dGhldyBCcm9zdCA8bWF0dGhldy5icm9zdEBpbnRl bC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndhamRlY3pr b0BpbnRlbC5jb20+Cj4gQ2M6IFBpb3RyIFBpw7Nya293c2tpIDxwaW90ci5waW9ya293c2tpQGlu dGVsLmNvbT4KPiBDYzogTWljaGFsIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5j b20+ICN2Mwo+IC0tLQo+ICAgLi4uL2d0L3VjL2FiaS9ndWNfY29tbXVuaWNhdGlvbl9tbWlvX2Fi aS5oICAgIHwgNjMgKysrKysrLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3VjLmMgICAgICAgIHwgOTIgKysrKysrKysrKysrKystLS0tLQo+ICAgMiBmaWxlcyBj aGFuZ2VkLCA5NyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fbW1pb19h YmkuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfY29tbXVuaWNhdGlvbl9t bWlvX2FiaS5oCj4gaW5kZXggYmUwNjZhNjJlOWUwLi4zZjkwMzllM2VmOWQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1Y19jb21tdW5pY2F0aW9uX21taW9f YWJpLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmlj YXRpb25fbW1pb19hYmkuaAo+IEBAIC03LDQ2ICs3LDQzIEBACj4gICAjZGVmaW5lIF9BQklfR1VD X0NPTU1VTklDQVRJT05fTU1JT19BQklfSAo+ICAgCj4gICAvKioKPiAtICogRE9DOiBNTUlPIGJh c2VkIGNvbW11bmljYXRpb24KPiArICogRE9DOiBHdUMgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9u Cj4gICAgKgo+IC0gKiBUaGUgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uIGJldHdlZW4gSG9zdCBh bmQgR3VDIHVzZXMgc29mdHdhcmUgc2NyYXRjaAo+IC0gKiByZWdpc3RlcnMsIHdoZXJlIGZpcnN0 IHJlZ2lzdGVyIGhvbGRzIGRhdGEgdHJlYXRlZCBhcyBtZXNzYWdlIGhlYWRlciwKPiAtICogYW5k IG90aGVyIHJlZ2lzdGVycyBhcmUgdXNlZCB0byBob2xkIG1lc3NhZ2UgcGF5bG9hZC4KPiArICog VGhlIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3QgYW5kIEd1QyByZWxpZXMg b24gc3BlY2lhbAo+ICsgKiBoYXJkd2FyZSByZWdpc3RlcnMgd2hpY2ggZm9ybWF0IGNvdWxkIGJl IGRlZmluZWQgYnkgdGhlIHNvZnR3YXJlCj4gKyAqIChzbyBjYWxsZWQgc2NyYXRjaCByZWdpc3Rl cnMpLgo+ICAgICoKPiAtICogRm9yIEdlbjkrLCBHdUMgdXNlcyBzb2Z0d2FyZSBzY3JhdGNoIHJl Z2lzdGVycyAweEMxODAtMHhDMUI4LAo+IC0gKiBidXQgbm8gSDJHIGNvbW1hbmQgdGFrZXMgbW9y ZSB0aGFuIDggcGFyYW1ldGVycyBhbmQgdGhlIEd1QyBGVwo+IC0gKiBpdHNlbGYgdXNlcyBhbiA4 LWVsZW1lbnQgYXJyYXkgdG8gc3RvcmUgdGhlIEgyRyBtZXNzYWdlLgo+IC0gKgo+IC0gKiAgICAg ICstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICogICAgICB8 ICBNTUlPWzBdICB8IE1NSU9bMV0gfCAgIC4uLiAgIHwgTU1JT1tuXSB8Cj4gLSAqICAgICAgKy0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKwo+IC0gKiAgICAgIHwgaGVh ZGVyICAgIHwgICAgICBvcHRpb25hbCBwYXlsb2FkICAgICAgIHwKPiAtICogICAgICArPT09PT09 Kz09PT0rPT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT0rCj4gLSAqICAgICAgfCAzMToyOHx0 eXBlfCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAo+IC0gKiAgICAgICstLS0tLS0rLS0t LSsgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKPiAtICogICAgICB8IDI3OjE2fGRhdGF8 ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8Cj4gLSAqICAgICAgKy0tLS0tLSstLS0tKyAg ICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAo+IC0gKiAgICAgIHwgIDE1OjB8Y29kZXwgICAg ICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKPiAtICogICAgICArLS0tLS0tKy0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCj4gLSAqCj4gLSAqIFRoZSBtZXNzYWdlIGhlYWRlciBj b25zaXN0cyBvZjoKPiAtICoKPiAtICogLSAqKnR5cGUqKiwgaW5kaWNhdGVzIG1lc3NhZ2UgdHlw ZQo+IC0gKiAtICoqY29kZSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSBjb2RlLCBpcyBzcGVjaWZpYyBm b3IgKip0eXBlKioKPiAtICogLSAqKmRhdGEqKiwgaW5kaWNhdGVzIG1lc3NhZ2UgZGF0YSwgb3B0 aW9uYWwsIGRlcGVuZHMgb24gKipjb2RlKioKPiArICogRWFjaCBNTUlPIGJhc2VkIG1lc3NhZ2Us IGJvdGggSG9zdCB0byBHdUMgKEgyRykgYW5kIEd1QyB0byBIb3N0IChHMkgpCj4gKyAqIG1lc3Nh Z2VzLCB3aGljaCBtYXhpbXVtIGxlbmd0aCBkZXBlbmRzIG9uIG51bWJlciBvZiBhdmFpbGFibGUg c2NyYXRjaAo+ICsgKiByZWdpc3RlcnMsIGlzIGRpcmVjdGx5IHdyaXR0ZW4gaW50byB0aG9zZSBz Y3JhdGNoIHJlZ2lzdGVycy4KPiAgICAqCj4gLSAqIFRoZSBmb2xsb3dpbmcgbWVzc2FnZSAqKnR5 cGVzKiogYXJlIHN1cHBvcnRlZDoKPiArICogRm9yIEdlbjkrLCB0aGVyZSBhcmUgMTYgc29mdHdh cmUgc2NyYXRjaCByZWdpc3RlcnMgMHhDMTgwLTB4QzFCOCwKPiArICogYnV0IG5vIEgyRyBjb21t YW5kIHRha2VzIG1vcmUgdGhhbiA4IHBhcmFtZXRlcnMgYW5kIHRoZSBHdUMgZmlybXdhcmUKPiAr ICogaXRzZWxmIHVzZXMgYW4gOC1lbGVtZW50IGFycmF5IHRvIHN0b3JlIHRoZSBIMkcgbWVzc2Fn ZS4KCklzIHRoaXMgc3RhdGVtZW50IHN0aWxsIHRydWU/IEkgYmVsaWV2ZSBubyBNTUlPIEgyRyBp cyBvdmVyIDQgRFdzIChnaXZlbiAKdGhlIGxpbWl0YXRpb24gb2YgdGhlIG5ldyBnZW4xMSsgc2Ny YXRjaCByZWdzKSwgd2hpbGUgQ1RCIG1lc3NhZ2VzIGNhbiAKYmUgbG9uZ2VyIHRoYW4gOCBEV3Mu Cgo+ICAgICoKPiAtICogLSAqKlJFUVVFU1QqKiwgaW5kaWNhdGVzIEhvc3QtdG8tR3VDIHJlcXVl c3QsIHJlcXVlc3RlZCBHdUMgYWN0aW9uIGNvZGUKPiAtICogICBtdXN0IGJlIHByaW92aWRlZCBp biAqKmNvZGUqKiBmaWVsZC4gT3B0aW9uYWwgYWN0aW9uIHNwZWNpZmljIHBhcmFtZXRlcnMKPiAt ICogICBjYW4gYmUgcHJvdmlkZWQgaW4gcmVtYWluaW5nIHBheWxvYWQgcmVnaXN0ZXJzIG9yICoq ZGF0YSoqIGZpZWxkLgo+ICsgKiBGb3IgR2VuMTErLCB0aGVyZSBhcmUgYWRkaXRpb25hbCA0IHJl Z2lzdGVycyAweDE5MDI0MC0weDE5MDI0Qywgd2hpY2gKPiArICogYXJlLCByZWdhcmRsZXNzIG9u IGxvd2VyIGNvdW50LCBwcmVmZmVyZWQgb3ZlciBsZWdhY3kgb25lcy4KCnR5cG86IHByZWZmZXJl ZCAtPiBwcmVmZXJyZWQKCj4gICAgKgo+IC0gKiAtICoqUkVTUE9OU0UqKiwgaW5kaWNhdGVzIEd1 Qy10by1Ib3N0IHJlc3BvbnNlIGZyb20gZWFybGllciBHdUMgcmVxdWVzdCwKPiAtICogICBhY3Rp b24gcmVzcG9uc2Ugc3RhdHVzIHdpbGwgYmUgcHJvdmlkZWQgaW4gKipjb2RlKiogZmllbGQuIE9w dGlvbmFsCj4gLSAqICAgcmVzcG9uc2UgZGF0YSBjYW4gYmUgcmV0dXJuZWQgaW4gcmVtYWluaW5n IHBheWxvYWQgcmVnaXN0ZXJzIG9yICoqZGF0YSoqCj4gLSAqICAgZmllbGQuCj4gKyAqIFRoZSBN TUlPIGJhc2VkIGNvbW11bmljYXRpb24gaXMgbWFpbmx5IHVzZWQgZHVyaW5nIGRyaXZlciBpbml0 aWFsaXphdGlvbgo+ICsgKiBwaGFzZSB0byBzZXR1cCB0aGUgYENUQiBiYXNlZCBjb21tdW5pY2F0 aW9uYF8gdGhhdCB3aWxsIGJlIHVzZWQgYWZ0ZXJ3YXJkcy4KPiAgICAqLwo+ICAgCj4gICAjZGVm aW5lIEdVQ19NQVhfTU1JT19NU0dfTEVOCQk4CgpTZWUgY29tbWVudCBhYm92ZS4gUmVkdWNlIHRo aXMgdG8gND8KCj4gICAKPiArLyoqCj4gKyAqIERPQzogTU1JTyBIWEcgTWVzc2FnZQo+ICsgKgo+ ICsgKiBGb3JtYXQgb2YgdGhlIE1NSU8gbWVzc2FnZXMgZm9sbG93cyBkZWZpbml0aW9ucyBvZiBg SFhHIE1lc3NhZ2VgXy4KPiArICoKPiArICogICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICogIHwg ICB8IEJpdHMgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwKPiArICogICs9PT0rPT09PT09PSs9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKPiArICogIHwgMCB8 ICAzMTowIHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsgIHwKPiArICogICstLS0rLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKPiArICogIHwuLi58ICAg ICAgIHwgIHwgIEVtYmVkZGVkIGBIWEcgTWVzc2FnZWBfICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIHwKPiArICogICstLS0rLS0tLS0tLSsgIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIHwKPiArICogIHwgbiB8ICAzMTow IHwgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsgIHwKPiArICogICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiArICovCj4gKwo+ICAgI2VuZGlm IC8qIF9BQklfR1VDX0NPTU1VTklDQVRJT05fTU1JT19BQklfSCAqLwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Yy5jCj4gaW5kZXggZjE0N2NiMzg5YTIwLi5iNzczNTY3Y2IwODAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuYwo+IEBAIC0zNzYsMjkg KzM3NiwyNyBAQCB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAg IC8qCj4gICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE1NSU8gYmFzZWQgaG9zdCB0 byBHdUMgaW50ZXJmYWNlLgo+ICAgICovCj4gLWludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVj dCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCj4gK2ludCBpbnRl bF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICpyZXF1ZXN0 LCB1MzIgbGVuLAo+ICAgCQkJdTMyICpyZXNwb25zZV9idWYsIHUzMiByZXNwb25zZV9idWZfc2l6 ZSkKPiAgIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3VjX3RvX2d0KGd1 YyktPmk5MTU7Cj4gICAJc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1 YyktPnVuY29yZTsKPiAtCXUzMiBzdGF0dXM7Cj4gKwl1MzIgaGVhZGVyOwo+ICAgCWludCBpOwo+ ICAgCWludCByZXQ7Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFsZW4pOwo+ICAgCUdFTV9CVUdfT04o bGVuID4gZ3VjLT5zZW5kX3JlZ3MuY291bnQpOwo+ICAgCj4gLQkvKiBXZSBleHBlY3Qgb25seSBh Y3Rpb24gY29kZSAqLwo+IC0JR0VNX0JVR19PTigqYWN0aW9uICYgfklOVEVMX0dVQ19NU0dfQ09E RV9NQVNLKTsKPiAtCj4gLQkvKiBJZiBDVCBpcyBhdmFpbGFibGUsIHdlIGV4cGVjdCB0byB1c2Ug TU1JTyBvbmx5IGR1cmluZyBpbml0L2ZpbmkgKi8KPiAtCUdFTV9CVUdfT04oKmFjdGlvbiAhPSBJ TlRFTF9HVUNfQUNUSU9OX1JFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiAmJgo+IC0J CSAgICphY3Rpb24gIT0gSU5URUxfR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NPTU1BTkRfVFJBTlNQ T1JUX0JVRkZFUik7Cj4gKwlHRU1fQlVHX09OKEZJRUxEX0dFVChHVUNfSFhHX01TR18wX09SSUdJ TiwgcmVxdWVzdFswXSkgIT0gR1VDX0hYR19PUklHSU5fSE9TVCk7Cj4gKwlHRU1fQlVHX09OKEZJ RUxEX0dFVChHVUNfSFhHX01TR18wX1RZUEUsIHJlcXVlc3RbMF0pICE9IEdVQ19IWEdfVFlQRV9S RVFVRVNUKTsKPiAgIAo+ICAgCW11dGV4X2xvY2soJmd1Yy0+c2VuZF9tdXRleCk7Cj4gICAJaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQodW5jb3JlLCBndWMtPnNlbmRfcmVncy5md19kb21haW5z KTsKPiAgIAo+ICtyZXRyeToKPiAgIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCj4gLQkJaW50 ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgaSksIGFjdGlvbltpXSk7 Cj4gKwkJaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgaSksIHJl cXVlc3RbaV0pOwo+ICAgCj4gICAJaW50ZWxfdW5jb3JlX3Bvc3RpbmdfcmVhZCh1bmNvcmUsIGd1 Y19zZW5kX3JlZyhndWMsIGkgLSAxKSk7Cj4gICAKPiBAQCAtNDEwLDMwICs0MDgsNzQgQEAgaW50 IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFj dGlvbiwgdTMyIGxlbiwKPiAgIAkgKi8KPiAgIAlyZXQgPSBfX2ludGVsX3dhaXRfZm9yX3JlZ2lz dGVyX2Z3KHVuY29yZSwKPiAgIAkJCQkJICAgZ3VjX3NlbmRfcmVnKGd1YywgMCksCj4gLQkJCQkJ ICAgSU5URUxfR1VDX01TR19UWVBFX01BU0ssCj4gLQkJCQkJICAgSU5URUxfR1VDX01TR19UWVBF X1JFU1BPTlNFIDw8Cj4gLQkJCQkJICAgSU5URUxfR1VDX01TR19UWVBFX1NISUZULAo+IC0JCQkJ CSAgIDEwLCAxMCwgJnN0YXR1cyk7Cj4gLQkvKiBJZiBHdUMgZXhwbGljaXRseSByZXR1cm5lZCBh biBlcnJvciwgY29udmVydCBpdCB0byAtRUlPICovCj4gLQlpZiAoIXJldCAmJiAhSU5URUxfR1VD X01TR19JU19SRVNQT05TRV9TVUNDRVNTKHN0YXR1cykpCj4gLQkJcmV0ID0gLUVJTzsKPiArCQkJ CQkgICBHVUNfSFhHX01TR18wX09SSUdJTiwKPiArCQkJCQkgICBGSUVMRF9QUkVQKEdVQ19IWEdf TVNHXzBfT1JJR0lOLAo+ICsJCQkJCQkgICAgICBHVUNfSFhHX09SSUdJTl9HVUMpLAo+ICsJCQkJ CSAgIDEwLCAxMCwgJmhlYWRlcik7Cj4gKwlpZiAodW5saWtlbHkocmV0KSkgewo+ICt0aW1lb3V0 Ogo+ICsJCWRybV9lcnIoJmk5MTUtPmRybSwgIm1taW8gcmVxdWVzdCAlI3g6IG5vIHJlcGx5ICV4 XG4iLAo+ICsJCQlyZXF1ZXN0WzBdLCBoZWFkZXIpOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICAg Cj4gLQlpZiAocmV0KSB7Cj4gLQkJRFJNX0VSUk9SKCJNTUlPOiBHdUMgYWN0aW9uICUjeCBmYWls ZWQgd2l0aCBlcnJvciAlZCAlI3hcbiIsCj4gLQkJCSAgYWN0aW9uWzBdLCByZXQsIHN0YXR1cyk7 Cj4gKwlpZiAoRklFTERfR0VUKEdVQ19IWEdfTVNHXzBfVFlQRSwgaGVhZGVyKSA9PSBHVUNfSFhH X1RZUEVfTk9fUkVTUE9OU0VfQlVTWSkgewo+ICsjZGVmaW5lIGRvbmUgKHsgaGVhZGVyID0gaW50 ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCAwKSk7IFwKPiArCQlGSUVM RF9HRVQoR1VDX0hYR19NU0dfMF9PUklHSU4sIGhlYWRlcikgIT0gR1VDX0hYR19PUklHSU5fR1VD IHx8IFwKPiArCQlGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9UWVBFLCBoZWFkZXIpICE9IEdVQ19I WEdfVFlQRV9OT19SRVNQT05TRV9CVVNZOyB9KQo+ICsKPiArCQlyZXQgPSB3YWl0X2Zvcihkb25l LCAxMDAwKTsKPiArCQlpZiAodW5saWtlbHkocmV0KSkKPiArCQkJZ290byB0aW1lb3V0Owo+ICsJ CWlmICh1bmxpa2VseShGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9PUklHSU4sIGhlYWRlcikgIT0K PiArCQkJCSAgICAgICBHVUNfSFhHX09SSUdJTl9HVUMpKQo+ICsJCQlnb3RvIHByb3RvOwo+ICsj dW5kZWYgZG9uZQo+ICsJfQo+ICsKPiArCWlmIChGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9UWVBF LCBoZWFkZXIpID09IEdVQ19IWEdfVFlQRV9OT19SRVNQT05TRV9SRVRSWSkgewo+ICsJCXUzMiBy ZWFzb24gPSBGSUVMRF9HRVQoR1VDX0hYR19SRVRSWV9NU0dfMF9SRUFTT04sIGhlYWRlcik7Cj4g Kwo+ICsJCWRybV9kYmcoJmk5MTUtPmRybSwgIm1taW8gcmVxdWVzdCAlI3g6IHJldHJ5aW5nLCBy ZWFzb24gJXVcbiIsCj4gKwkJCXJlcXVlc3RbMF0sIHJlYXNvbik7Cj4gKwkJZ290byByZXRyeTsK PiArCX0KPiArCj4gKwlpZiAoRklFTERfR0VUKEdVQ19IWEdfTVNHXzBfVFlQRSwgaGVhZGVyKSA9 PSBHVUNfSFhHX1RZUEVfUkVTUE9OU0VfRkFJTFVSRSkgewo+ICsJCXUzMiBoaW50ID0gRklFTERf R0VUKEdVQ19IWEdfRkFJTFVSRV9NU0dfMF9ISU5ULCBoZWFkZXIpOwo+ICsJCXUzMiBlcnJvciA9 IEZJRUxEX0dFVChHVUNfSFhHX0ZBSUxVUkVfTVNHXzBfRVJST1IsIGhlYWRlcik7Cj4gKwo+ICsJ CWRybV9lcnIoJmk5MTUtPmRybSwgIm1taW8gcmVxdWVzdCAlI3g6IGZhaWx1cmUgJXgvJXVcbiIs Cj4gKwkJCXJlcXVlc3RbMF0sIGVycm9yLCBoaW50KTsKPiArCQlyZXQgPSAtRU5YSU87Cj4gKwkJ Z290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJaWYgKEZJRUxEX0dFVChHVUNfSFhHX01TR18wX1RZUEUs IGhlYWRlcikgIT0gR1VDX0hYR19UWVBFX1JFU1BPTlNFX1NVQ0NFU1MpIHsKPiArcHJvdG86Cj4g KwkJZHJtX2VycigmaTkxNS0+ZHJtLCAibW1pbyByZXF1ZXN0ICUjeDogdW5leHBlY3RlZCByZXBs eSAlI3hcbiIsCj4gKwkJCXJlcXVlc3RbMF0sIGhlYWRlcik7Cj4gKwkJcmV0ID0gLUVQUk9UTzsK PiAgIAkJZ290byBvdXQ7Cj4gICAJfQo+ICAgCj4gICAJaWYgKHJlc3BvbnNlX2J1Zikgewo+IC0J CWludCBjb3VudCA9IG1pbihyZXNwb25zZV9idWZfc2l6ZSwgZ3VjLT5zZW5kX3JlZ3MuY291bnQg LSAxKTsKPiArCQlpbnQgY291bnQgPSBtaW4ocmVzcG9uc2VfYnVmX3NpemUsIGd1Yy0+c2VuZF9y ZWdzLmNvdW50KTsKPiAgIAo+IC0JCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQo+ICsJCUdF TV9CVUdfT04oIWNvdW50KTsKPiArCj4gKwkJcmVzcG9uc2VfYnVmWzBdID0gaGVhZGVyOwo+ICsK PiArCQlmb3IgKGkgPSAxOyBpIDwgY291bnQ7IGkrKykKPiAgIAkJCXJlc3BvbnNlX2J1ZltpXSA9 IGludGVsX3VuY29yZV9yZWFkKHVuY29yZSwKPiAtCQkJCQkJCSAgICBndWNfc2VuZF9yZWcoZ3Vj LCBpICsgMSkpOwo+IC0JfQo+ICsJCQkJCQkJICAgIGd1Y19zZW5kX3JlZyhndWMsIGkpKTsKClRo aXMgY291bGQgdXNlIGEgbm90ZSBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgdG8gcmVtYXJrIHRoYXQg d2UgaGF2ZSBubyAKdXNlcnMgZm9yIHRoZSByZXR1cm5lZCBkYXRhIHlldCBhbmQgdGhlcmVmb3Jl IG5vdGhpbmcgd2lsbCBicmVhayBpZiB3ZSAKY2hhbmdlIHdoYXQgd2UgcmV0dXJuIHRocm91Z2gg aXQuCgpBcGFydCBmcm9tIHRoZSBuaXRzLCB0aGUgbG9naWMgbG9va3MgZ29vZCB0byBtZS4KRGFu aWVsZQoKPiAgIAo+IC0JLyogVXNlIGRhdGEgZnJvbSB0aGUgR3VDIHJlc3BvbnNlIGFzIG91ciBy ZXR1cm4gdmFsdWUgKi8KPiAtCXJldCA9IElOVEVMX0dVQ19NU0dfVE9fREFUQShzdGF0dXMpOwo+ ICsJCS8qIFVzZSBudW1iZXIgb2YgY29waWVkIGR3b3JkcyBhcyBvdXIgcmV0dXJuIHZhbHVlICov Cj4gKwkJcmV0ID0gY291bnQ7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIFVzZSBkYXRhIGZyb20gdGhl IEd1QyByZXNwb25zZSBhcyBvdXIgcmV0dXJuIHZhbHVlICovCj4gKwkJcmV0ID0gRklFTERfR0VU KEdVQ19IWEdfUkVTUE9OU0VfTVNHXzBfREFUQTAsIGhlYWRlcik7Cj4gKwl9Cj4gICAKPiAgIG91 dDoKPiAgIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIGd1Yy0+c2VuZF9yZWdz LmZ3X2RvbWFpbnMpOwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==