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.7 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 AB373C2B9F4 for ; Mon, 14 Jun 2021 18:24:15 +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 6B89A613B9 for ; Mon, 14 Jun 2021 18:24:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B89A613B9 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 3DDD088304; Mon, 14 Jun 2021 18:24:10 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC94488130; Mon, 14 Jun 2021 18:24:08 +0000 (UTC) IronPort-SDR: VRWZ77Ir/bxFnik1vh2FdbC+3XgYGalsEckKwOSrMLtmGtI8GrcT6zplPA1zFgwqpnA9bmP70K TxaXVs7Q+R5Q== X-IronPort-AV: E=McAfee;i="6200,9189,10015"; a="227314526" X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="227314526" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 11:24:08 -0700 IronPort-SDR: 1bVSMSg94+F6oqOxUEqKx5bimLm2wFaHHONvjNp6L8NwARqg7EyOq1i+H7u64xH938YTRhN2Ab yNyyMKqg7qwg== X-IronPort-AV: E=Sophos;i="5.83,273,1616482800"; d="scan'208";a="451676684" Received: from dceraolo-mobl.amr.corp.intel.com (HELO [10.254.188.63]) ([10.254.188.63]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jun 2021 11:24:06 -0700 To: Matthew Brost , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org References: <20210610043649.144416-1-matthew.brost@intel.com> <20210610043649.144416-9-matthew.brost@intel.com> From: Daniele Ceraolo Spurio Message-ID: Date: Mon, 14 Jun 2021 11:24:04 -0700 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: <20210610043649.144416-9-matthew.brost@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 08/13] drm/i915/guc: New CTB 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" CgpPbiA2LzkvMjAyMSA5OjM2IFBNLCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+IEZyb206IE1pY2hh bCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+Cj4gRm9ybWF0IG9mIHRo ZSBDVEIgbWVzc2FnZXMgaGFzIGNoYW5nZWQ6Cj4gICAtIHN1cHBvcnQgZm9yIG11bHRpcGxlIGZv cm1hdHMKPiAgIC0gbWVzc2FnZSBmZW5jZSBpcyBub3cgcGFydCBvZiB0aGUgaGVhZGVyCj4gICAt IHJldXNlIG9mIHVuaWZpZWQgSFhHIG1lc3NhZ2UgZm9ybWF0cwo+Cj4gdjI6Cj4gICAoRGFuaWVs ZSkKPiAgICAtIEJldHRlciBjb21tZW50IGluIGN0X3dyaXRlKCkKPgo+IFNpZ25lZC1vZmYtYnk6 IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwuY29tPgo+IFNpZ25lZC1v ZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+IENjOiBQaW90 ciBQacOzcmtvd3NraSA8cGlvdHIucGlvcmtvd3NraUBpbnRlbC5jb20+CgpBc3N1bWluZyBhbGwg dGhlIHN1Z2dlc3RlZCBjbGVhbi11cHMvc2VtcGxpZmljYXRpb25zIGFyZSBjb21pbmcgYXMgYSAK Zm9sbG93LXVwOgoKUmV2aWV3ZWQtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUu Y2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+CgpEYW5pZWxlCgo+IC0tLQo+ICAgLi4uL2d0L3VjL2Fi aS9ndWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmggICAgIHwgIDU2ICsrKysrCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYyAgICAgfCAxOTUgKysrKysrKy0tLS0t LS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaCAgICAg fCAgIDIgKy0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTM2IGluc2VydGlvbnMoKyksIDExNyBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkv Z3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv YWJpL2d1Y19jb21tdW5pY2F0aW9uX2N0Yl9hYmkuaAo+IGluZGV4IDY3MzVmMWZkYWEyYS4uZDNh MmUwMDJiNmMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9n dWNfY29tbXVuaWNhdGlvbl9jdGJfYWJpLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oCj4gQEAgLTU4LDYgKzU4LDYyIEBA IHN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2Mgewo+ICAgfSBfX3BhY2tlZDsKPiAgIHN0YXRpY19h c3NlcnQoc2l6ZW9mKHN0cnVjdCBndWNfY3RfYnVmZmVyX2Rlc2MpID09IDY0KTsKPiAgIAo+ICsv KioKPiArICogRE9DOiBDVEIgTWVzc2FnZQo+ICsgKgo+ICsgKiAgKy0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Kwo+ICsgKiAgfCAgIHwgQml0cyAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgKz09PSs9PT09PT09Kz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+ ICsgKiAgfCAwIHwgMzE6MTYgfCAqKkZFTkNFKiogLSBtZXNzYWdlIGlkZW50aWZpZXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgfCAgICstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsg KiAgfCAgIHwgMTU6MTIgfCAqKkZPUk1BVCoqIC0gZm9ybWF0IG9mIHRoZSBDVEIgbWVzc2FnZSAg ICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgfCAgIHwgICAgICAgfCAgLSBfYEdVQ19DVEJf Rk9STUFUX0hYR2AgPSAwIC0gc2VlIGBDVEIgSFhHIE1lc3NhZ2VgXyAgICAgICAgfAo+ICsgKiAg fCAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgfCAgIHwgIDExOjggfCAqKlJFU0VSVkVEKiogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgfCAg ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgfCAgIHwgICA3OjAgfCAqKk5VTV9EV09SRFMqKiAtIGxl bmd0aCBvZiB0aGUgQ1RCIG1lc3NhZ2UgKHcvbyBoZWFkZXIpICAgICAgfAo+ICsgKiAgKy0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKwo+ICsgKiAgfCAxIHwgIDMxOjAgfCBvcHRpb25hbCAoZGVwZW5kcyBvbiBG T1JNQVQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgKy0tLSstLS0t LS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAo+ICsgKiAgfC4uLnwgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgKy0tLSstLS0tLS0t KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAo+ICsgKiAgfCBuIHwgIDMxOjAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgKy0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwo+ICsgKi8KPiArCj4gKyNkZWZpbmUgR1VDX0NUQl9NU0dfTUlOX0xFTgkJCTF1Cj4gKyNk ZWZpbmUgR1VDX0NUQl9NU0dfTUFYX0xFTgkJCTI1NnUKPiArI2RlZmluZSBHVUNfQ1RCX01TR18w X0ZFTkNFCQkJKDB4ZmZmZiA8PCAxNikKPiArI2RlZmluZSBHVUNfQ1RCX01TR18wX0ZPUk1BVAkJ CSgweGYgPDwgMTIpCj4gKyNkZWZpbmUgICBHVUNfQ1RCX0ZPUk1BVF9IWEcJCQkwdQo+ICsjZGVm aW5lIEdVQ19DVEJfTVNHXzBfUkVTRVJWRUQJCQkoMHhmIDw8IDgpCj4gKyNkZWZpbmUgR1VDX0NU Ql9NU0dfMF9OVU1fRFdPUkRTCQkoMHhmZiA8PCAwKQo+ICsKPiArLyoqCj4gKyAqIERPQzogQ1RC IEhYRyBNZXNzYWdlCj4gKyAqCj4gKyAqICArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICB8ICAg fCBCaXRzICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8Cj4gKyAqICArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4gKyAqICB8IDAgfCAz MToxNiB8IEZFTkNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8Cj4gKyAqICB8ICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICB8ICAgfCAxNTox MiB8IEZPUk1BVCA9IEdVQ19DVEJfRk9STUFUX0hYR18gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8Cj4gKyAqICB8ICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICB8ICAgfCAgMTE6OCB8 IFJFU0VSVkVEID0gTUJaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8Cj4gKyAqICB8ICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICB8ICAgfCAgIDc6MCB8IE5V TV9EV09SRFMgPSBsZW5ndGggKGluIGR3b3Jkcykgb2YgdGhlIGVtYmVkZGVkIEhYRyBtZXNzYWdl ICB8Cj4gKyAqICArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICB8IDEgfCAgMzE6MCB8ICArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICB8 Cj4gKyAqICArLS0tKy0tLS0tLS0rICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICB8Cj4gKyAqICB8Li4ufCAgICAgICB8ICB8ICBFbWJl ZGRlZCBgSFhHIE1lc3NhZ2VgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8Cj4g KyAqICArLS0tKy0tLS0tLS0rICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICB8Cj4gKyAqICB8IG4gfCAgMzE6MCB8ICArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICB8Cj4gKyAq ICArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqLwo+ICsKPiArI2RlZmluZSBHVUNfQ1RCX0hYR19N U0dfTUlOX0xFTgkJKEdVQ19DVEJfTVNHX01JTl9MRU4gKyBHVUNfSFhHX01TR19NSU5fTEVOKQo+ ICsjZGVmaW5lIEdVQ19DVEJfSFhHX01TR19NQVhfTEVOCQlHVUNfQ1RCX01TR19NQVhfTEVOCj4g Kwo+ICAgLyoqCj4gICAgKiBET0M6IENUQiBiYXNlZCBjb21tdW5pY2F0aW9uCj4gICAgKgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jCj4gaW5kZXggNmEyOWJlNzc5 Y2M5Li40MzQwOTA0NDUyOGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX2N0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfY3QuYwo+IEBAIC0zNjUsMjQgKzM2NSw2IEBAIHN0YXRpYyB2b2lkIHdyaXRlX2JhcnJp ZXIoc3RydWN0IGludGVsX2d1Y19jdCAqY3QpCj4gICAJfQo+ICAgfQo+ICAgCj4gLS8qKgo+IC0g KiBET0M6IENUQiBIb3N0IHRvIEd1QyByZXF1ZXN0Cj4gLSAqCj4gLSAqIEZvcm1hdCBvZiB0aGUg Q1RCIEhvc3QgdG8gR3VDIHJlcXVlc3QgbWVzc2FnZSBpcyBhcyBmb2xsb3dzOjoKPiAtICoKPiAt ICogICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSsKPiAtICogICAgICB8ICAgbXNnWzBdICAgfCAgIFsxXSAgIHwgICBbMl0gICB8ICAgLi4u ICAgfCAgW24tMV0gIHwKPiAtICogICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICogICAgICB8ICAgTUVTU0FHRSAgfCAgICAgICBN RVNTQUdFIFBBWUxPQUQgICAgICAgICAgICAgICAgIHwKPiAtICogICAgICArICAgSEVBREVSICAg Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICogICAgICB8ICAg ICAgICAgICAgfCAgICAwICAgIHwgICAgMSAgICB8ICAgLi4uICAgfCAgICBuICAgIHwKPiAtICog ICAgICArPT09PT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09Kz09PT09PT09 PSsKPiAtICogICAgICB8ICBsZW4gPj0gMSAgfCAgRkVOQ0UgIHwgICAgIHJlcXVlc3Qgc3BlY2lm aWMgZGF0YSAgIHwKPiAtICogICAgICArLS0tLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICoKPiAtICogICAgICAgICAgICAgICAgICAgXi0tLS0t LS0tLS0tLS0tLS0tbGVuLS0tLS0tLS0tLS0tLS0tLS0tLV4KPiAtICovCj4gLQo+ICAgc3RhdGlj IGludCBjdF93cml0ZShzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwKPiAgIAkJICAgIGNvbnN0IHUz MiAqYWN0aW9uLAo+ICAgCQkgICAgdTMyIGxlbiAvKiBpbiBkd29yZHMgKi8sCj4gQEAgLTM5NSw2 ICszNzcsNyBAQCBzdGF0aWMgaW50IGN0X3dyaXRlKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAo+ ICAgCXUzMiBzaXplID0gY3RiLT5zaXplOwo+ICAgCXUzMiB1c2VkOwo+ICAgCXUzMiBoZWFkZXI7 Cj4gKwl1MzIgaHhnOwo+ICAgCXUzMiAqY21kcyA9IGN0Yi0+Y21kczsKPiAgIAl1bnNpZ25lZCBp bnQgaTsKPiAgIAo+IEBAIC00MjUsMjIgKzQwOCwyNSBAQCBzdGF0aWMgaW50IGN0X3dyaXRlKHN0 cnVjdCBpbnRlbF9ndWNfY3QgKmN0LAo+ICAgCQlyZXR1cm4gLUVOT1NQQzsKPiAgIAo+ICAgCS8q Cj4gLQkgKiBXcml0ZSB0aGUgbWVzc2FnZS4gVGhlIGZvcm1hdCBpcyB0aGUgZm9sbG93aW5nOgo+ IC0JICogRFcwOiBoZWFkZXIgKGluY2x1ZGluZyBhY3Rpb24gY29kZSkKPiAtCSAqIERXMTogZmVu Y2UKPiAtCSAqIERXMis6IGFjdGlvbiBkYXRhCj4gKwkgKiBkdzA6IENUIGhlYWRlciAoaW5jbHVk aW5nIGZlbmNlKQo+ICsJICogZHcxOiBIWEcgaGVhZGVyIChpbmNsdWRpbmcgYWN0aW9uIGNvZGUp Cj4gKwkgKiBkdzIrOiBhY3Rpb24gZGF0YQo+ICAgCSAqLwo+IC0JaGVhZGVyID0gKGxlbiA8PCBH VUNfQ1RfTVNHX0xFTl9TSElGVCkgfAo+IC0JCSBHVUNfQ1RfTVNHX1NFTkRfU1RBVFVTIHwKPiAt CQkgKGFjdGlvblswXSA8PCBHVUNfQ1RfTVNHX0FDVElPTl9TSElGVCk7Cj4gKwloZWFkZXIgPSBG SUVMRF9QUkVQKEdVQ19DVEJfTVNHXzBfRk9STUFULCBHVUNfQ1RCX0ZPUk1BVF9IWEcpIHwKPiAr CQkgRklFTERfUFJFUChHVUNfQ1RCX01TR18wX05VTV9EV09SRFMsIGxlbikgfAo+ICsJCSBGSUVM RF9QUkVQKEdVQ19DVEJfTVNHXzBfRkVOQ0UsIGZlbmNlKTsKPiArCj4gKwloeGcgPSBGSUVMRF9Q UkVQKEdVQ19IWEdfTVNHXzBfVFlQRSwgR1VDX0hYR19UWVBFX1JFUVVFU1QpIHwKPiArCSAgICAg IEZJRUxEX1BSRVAoR1VDX0hYR19SRVFVRVNUX01TR18wX0FDVElPTiB8Cj4gKwkJCSBHVUNfSFhH X1JFUVVFU1RfTVNHXzBfREFUQTAsIGFjdGlvblswXSk7Cj4gICAKPiAtCUNUX0RFQlVHKGN0LCAi d3JpdGluZyAlKnBoICUqcGggJSpwaFxuIiwKPiAtCQkgNCwgJmhlYWRlciwgNCwgJmZlbmNlLCA0 ICogKGxlbiAtIDEpLCAmYWN0aW9uWzFdKTsKPiArCUNUX0RFQlVHKGN0LCAid3JpdGluZyAodGFp bCAldSkgJSpwaCAlKnBoICUqcGhcbiIsCj4gKwkJIHRhaWwsIDQsICZoZWFkZXIsIDQsICZoeGcs IDQgKiAobGVuIC0gMSksICZhY3Rpb25bMV0pOwo+ICAgCj4gICAJY21kc1t0YWlsXSA9IGhlYWRl cjsKPiAgIAl0YWlsID0gKHRhaWwgKyAxKSAlIHNpemU7Cj4gICAKPiAtCWNtZHNbdGFpbF0gPSBm ZW5jZTsKPiArCWNtZHNbdGFpbF0gPSBoeGc7Cj4gICAJdGFpbCA9ICh0YWlsICsgMSkgJSBzaXpl Owo+ICAgCj4gICAJZm9yIChpID0gMTsgaSA8IGxlbjsgaSsrKSB7Cj4gQEAgLTU5OCwyMSArNTg0 LDYgQEAgaW50IGludGVsX2d1Y19jdF9zZW5kKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCBjb25z dCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gLXN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGN0X2hlYWRlcl9nZXRfbGVuKHUzMiBoZWFkZXIpCj4g LXsKPiAtCXJldHVybiAoaGVhZGVyID4+IEdVQ19DVF9NU0dfTEVOX1NISUZUKSAmIEdVQ19DVF9N U0dfTEVOX01BU0s7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGN0X2hl YWRlcl9nZXRfYWN0aW9uKHUzMiBoZWFkZXIpCj4gLXsKPiAtCXJldHVybiAoaGVhZGVyID4+IEdV Q19DVF9NU0dfQUNUSU9OX1NISUZUKSAmIEdVQ19DVF9NU0dfQUNUSU9OX01BU0s7Cj4gLX0KPiAt Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBjdF9oZWFkZXJfaXNfcmVzcG9uc2UodTMyIGhlYWRlcikK PiAtewo+IC0JcmV0dXJuICEhKGhlYWRlciAmIEdVQ19DVF9NU0dfSVNfUkVTUE9OU0UpOwo+IC19 Cj4gLQo+ICAgc3RhdGljIHN0cnVjdCBjdF9pbmNvbWluZ19tc2cgKmN0X2FsbG9jX21zZyh1MzIg bnVtX2R3b3JkcykKPiAgIHsKPiAgIAlzdHJ1Y3QgY3RfaW5jb21pbmdfbXNnICptc2c7Cj4gQEAg LTY3NSw3ICs2NDYsNyBAQCBzdGF0aWMgaW50IGN0X3JlYWQoc3RydWN0IGludGVsX2d1Y19jdCAq Y3QsIHN0cnVjdCBjdF9pbmNvbWluZ19tc2cgKiptc2cpCj4gICAJaGVhZCA9IChoZWFkICsgMSkg JSBzaXplOwo+ICAgCj4gICAJLyogbWVzc2FnZSBsZW4gd2l0aCBoZWFkZXIgKi8KPiAtCWxlbiA9 IGN0X2hlYWRlcl9nZXRfbGVuKGhlYWRlcikgKyAxOwo+ICsJbGVuID0gRklFTERfR0VUKEdVQ19D VEJfTVNHXzBfTlVNX0RXT1JEUywgaGVhZGVyKSArIEdVQ19DVEJfTVNHX01JTl9MRU47Cj4gICAJ aWYgKHVubGlrZWx5KGxlbiA+ICh1MzIpYXZhaWxhYmxlKSkgewo+ICAgCQlDVF9FUlJPUihjdCwg IkluY29tcGxldGUgbWVzc2FnZSAlKnBoICUqcGggJSpwaFxuIiwKPiAgIAkJCSA0LCAmaGVhZGVy LAo+IEBAIC03MTgsNTUgKzY4OSwyNCBAQCBzdGF0aWMgaW50IGN0X3JlYWQoc3RydWN0IGludGVs X2d1Y19jdCAqY3QsIHN0cnVjdCBjdF9pbmNvbWluZ19tc2cgKiptc2cpCj4gICAJcmV0dXJuIC1F UElQRTsKPiAgIH0KPiAgIAo+IC0vKioKPiAtICogRE9DOiBDVEIgR3VDIHRvIEhvc3QgcmVzcG9u c2UKPiAtICoKPiAtICogRm9ybWF0IG9mIHRoZSBDVEIgR3VDIHRvIEhvc3QgcmVzcG9uc2UgbWVz c2FnZSBpcyBhcyBmb2xsb3dzOjoKPiAtICoKPiAtICogICAgICArLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCj4gLSAqICAgICAg fCAgIG1zZ1swXSAgIHwgICBbMV0gICB8ICAgWzJdICAgfCAgIFszXSAgIHwgICAuLi4gICB8ICBb bi0xXSAgfAo+IC0gKiAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICogICAgICB8ICAgTUVTU0FHRSAgfCAgICAg ICBNRVNTQUdFIFBBWUxPQUQgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cj4gLSAqICAgICAg KyAgIEhFQURFUiAgICstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKwo+IC0gKiAgICAgIHwgICAgICAgICAgICB8ICAgIDAgICAgfCAgICAxICAgIHwgICAg MiAgICB8ICAgLi4uICAgfCAgICBuICAgIHwKPiAtICogICAgICArPT09PT09PT09PT09Kz09PT09 PT09PSs9PT09PT09PT0rPT09PT09PT09Kz09PT09PT09PSs9PT09PT09PT0rCj4gLSAqICAgICAg fCAgbGVuID49IDIgIHwgIEZFTkNFICB8ICBTVEFUVVMgfCAgIHJlc3BvbnNlIHNwZWNpZmljIGRh dGEgICAgfAo+IC0gKiAgICAgICstLS0tLS0rLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICoKPiAtICogICAgICAgICAgICAgICAgICAg Xi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tbGVuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1eCj4gLSAq Lwo+IC0KPiAgIHN0YXRpYyBpbnQgY3RfaGFuZGxlX3Jlc3BvbnNlKHN0cnVjdCBpbnRlbF9ndWNf Y3QgKmN0LCBzdHJ1Y3QgY3RfaW5jb21pbmdfbXNnICpyZXNwb25zZSkKPiAgIHsKPiAtCXUzMiBo ZWFkZXIgPSByZXNwb25zZS0+bXNnWzBdOwo+IC0JdTMyIGxlbiA9IGN0X2hlYWRlcl9nZXRfbGVu KGhlYWRlcik7Cj4gLQl1MzIgZmVuY2U7Cj4gLQl1MzIgc3RhdHVzOwo+IC0JdTMyIGRhdGFsZW47 Cj4gKwl1MzIgbGVuID0gRklFTERfR0VUKEdVQ19DVEJfTVNHXzBfTlVNX0RXT1JEUywgcmVzcG9u c2UtPm1zZ1swXSk7Cj4gKwl1MzIgZmVuY2UgPSBGSUVMRF9HRVQoR1VDX0NUQl9NU0dfMF9GRU5D RSwgcmVzcG9uc2UtPm1zZ1swXSk7Cj4gKwljb25zdCB1MzIgKmh4ZyA9ICZyZXNwb25zZS0+bXNn W0dVQ19DVEJfTVNHX01JTl9MRU5dOwo+ICsJY29uc3QgdTMyICpkYXRhID0gJmh4Z1tHVUNfSFhH X01TR19NSU5fTEVOXTsKPiArCXUzMiBkYXRhbGVuID0gbGVuIC0gR1VDX0hYR19NU0dfTUlOX0xF TjsKPiAgIAlzdHJ1Y3QgY3RfcmVxdWVzdCAqcmVxOwo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 Cj4gICAJYm9vbCBmb3VuZCA9IGZhbHNlOwo+ICAgCWludCBlcnIgPSAwOwo+ICAgCj4gLQlHRU1f QlVHX09OKCFjdF9oZWFkZXJfaXNfcmVzcG9uc2UoaGVhZGVyKSk7Cj4gKwlHRU1fQlVHX09OKGxl biA8IEdVQ19IWEdfTVNHX01JTl9MRU4pOwo+ICsJR0VNX0JVR19PTihGSUVMRF9HRVQoR1VDX0hY R19NU0dfMF9PUklHSU4sIGh4Z1swXSkgIT0gR1VDX0hYR19PUklHSU5fR1VDKTsKPiArCUdFTV9C VUdfT04oRklFTERfR0VUKEdVQ19IWEdfTVNHXzBfVFlQRSwgaHhnWzBdKSAhPSBHVUNfSFhHX1RZ UEVfUkVTUE9OU0VfU1VDQ0VTUyAmJgo+ICsJCSAgIEZJRUxEX0dFVChHVUNfSFhHX01TR18wX1RZ UEUsIGh4Z1swXSkgIT0gR1VDX0hYR19UWVBFX1JFU1BPTlNFX0ZBSUxVUkUpOwo+ICAgCj4gLQkv KiBSZXNwb25zZSBwYXlsb2FkIHNoYWxsIGF0IGxlYXN0IGluY2x1ZGUgZmVuY2UgYW5kIHN0YXR1 cyAqLwo+IC0JaWYgKHVubGlrZWx5KGxlbiA8IDIpKSB7Cj4gLQkJQ1RfRVJST1IoY3QsICJDb3Jy dXB0ZWQgcmVzcG9uc2UgKGxlbiAldSlcbiIsIGxlbik7Cj4gLQkJcmV0dXJuIC1FUFJPVE87Cj4g LQl9Cj4gLQo+IC0JZmVuY2UgPSByZXNwb25zZS0+bXNnWzFdOwo+IC0Jc3RhdHVzID0gcmVzcG9u c2UtPm1zZ1syXTsKPiAtCWRhdGFsZW4gPSBsZW4gLSAyOwo+IC0KPiAtCS8qIEZvcm1hdCBvZiB0 aGUgc3RhdHVzIGR3b3JkIGZvbGxvd3MgSFhHIGhlYWRlciAqLwo+IC0JaWYgKHVubGlrZWx5KEZJ RUxEX0dFVChHVUNfSFhHX01TR18wX09SSUdJTiwgc3RhdHVzKSAhPSBHVUNfSFhHX09SSUdJTl9H VUMpKSB7Cj4gLQkJQ1RfRVJST1IoY3QsICJDb3JydXB0ZWQgcmVzcG9uc2UgKHN0YXR1cyAlI3gp XG4iLCBzdGF0dXMpOwo+IC0JCXJldHVybiAtRVBST1RPOwo+IC0JfQo+IC0KPiAtCUNUX0RFQlVH KGN0LCAicmVzcG9uc2UgZmVuY2UgJXUgc3RhdHVzICUjeFxuIiwgZmVuY2UsIHN0YXR1cyk7Cj4g KwlDVF9ERUJVRyhjdCwgInJlc3BvbnNlIGZlbmNlICV1IHN0YXR1cyAlI3hcbiIsIGZlbmNlLCBo eGdbMF0pOwo+ICAgCj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJmN0LT5yZXF1ZXN0cy5sb2NrLCBm bGFncyk7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShyZXEsICZjdC0+cmVxdWVzdHMucGVuZGlu ZywgbGluaykgewo+IEBAIC03ODIsOSArNzIyLDkgQEAgc3RhdGljIGludCBjdF9oYW5kbGVfcmVz cG9uc2Uoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIHN0cnVjdCBjdF9pbmNvbWluZ19tc2cgKnIK PiAgIAkJCWVyciA9IC1FTVNHU0laRTsKPiAgIAkJfQo+ICAgCQlpZiAoZGF0YWxlbikKPiAtCQkJ bWVtY3B5KHJlcS0+cmVzcG9uc2VfYnVmLCByZXNwb25zZS0+bXNnICsgMywgNCAqIGRhdGFsZW4p Owo+ICsJCQltZW1jcHkocmVxLT5yZXNwb25zZV9idWYsIGRhdGEsIDQgKiBkYXRhbGVuKTsKPiAg IAkJcmVxLT5yZXNwb25zZV9sZW4gPSBkYXRhbGVuOwo+IC0JCVdSSVRFX09OQ0UocmVxLT5zdGF0 dXMsIHN0YXR1cyk7Cj4gKwkJV1JJVEVfT05DRShyZXEtPnN0YXR1cywgaHhnWzBdKTsKPiAgIAkJ Zm91bmQgPSB0cnVlOwo+ICAgCQlicmVhazsKPiAgIAl9Cj4gQEAgLTgwNSwxNCArNzQ1LDE2IEBA IHN0YXRpYyBpbnQgY3RfaGFuZGxlX3Jlc3BvbnNlKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCBz dHJ1Y3QgY3RfaW5jb21pbmdfbXNnICpyCj4gICBzdGF0aWMgaW50IGN0X3Byb2Nlc3NfcmVxdWVz dChzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgc3RydWN0IGN0X2luY29taW5nX21zZyAqcmVxdWVz dCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBjdF90b19ndWMoY3QpOwo+IC0J dTMyIGhlYWRlciwgYWN0aW9uLCBsZW47Cj4gKwljb25zdCB1MzIgKmh4ZzsKPiAgIAljb25zdCB1 MzIgKnBheWxvYWQ7Cj4gKwl1MzIgaHhnX2xlbiwgYWN0aW9uLCBsZW47Cj4gICAJaW50IHJldDsK PiAgIAo+IC0JaGVhZGVyID0gcmVxdWVzdC0+bXNnWzBdOwo+IC0JcGF5bG9hZCA9ICZyZXF1ZXN0 LT5tc2dbMV07Cj4gLQlhY3Rpb24gPSBjdF9oZWFkZXJfZ2V0X2FjdGlvbihoZWFkZXIpOwo+IC0J bGVuID0gY3RfaGVhZGVyX2dldF9sZW4oaGVhZGVyKTsKPiArCWh4ZyA9ICZyZXF1ZXN0LT5tc2db R1VDX0NUQl9NU0dfTUlOX0xFTl07Cj4gKwloeGdfbGVuID0gcmVxdWVzdC0+c2l6ZSAtIEdVQ19D VEJfTVNHX01JTl9MRU47Cj4gKwlwYXlsb2FkID0gJmh4Z1tHVUNfSFhHX01TR19NSU5fTEVOXTsK PiArCWFjdGlvbiA9IEZJRUxEX0dFVChHVUNfSFhHX0VWRU5UX01TR18wX0FDVElPTiwgaHhnWzBd KTsKPiArCWxlbiA9IGh4Z19sZW4gLSBHVUNfSFhHX01TR19NSU5fTEVOOwo+ICAgCj4gICAJQ1Rf REVCVUcoY3QsICJyZXF1ZXN0ICV4ICUqcGhcbiIsIGFjdGlvbiwgNCAqIGxlbiwgcGF5bG9hZCk7 Cj4gICAKPiBAQCAtODc0LDI5ICs4MTYsMTIgQEAgc3RhdGljIHZvaWQgY3RfaW5jb21pbmdfcmVx dWVzdF93b3JrZXJfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCj4gICAJCXF1ZXVlX3dvcmso c3lzdGVtX3VuYm91bmRfd3EsICZjdC0+cmVxdWVzdHMud29ya2VyKTsKPiAgIH0KPiAgIAo+IC0v KioKPiAtICogRE9DOiBDVEIgR3VDIHRvIEhvc3QgcmVxdWVzdAo+IC0gKgo+IC0gKiBGb3JtYXQg b2YgdGhlIENUQiBHdUMgdG8gSG9zdCByZXF1ZXN0IG1lc3NhZ2UgaXMgYXMgZm9sbG93czo6Cj4g LSAqCj4gLSAqICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKwo+IC0gKiAgICAgIHwgICBtc2dbMF0gICB8ICAgWzFdICAg fCAgIFsyXSAgIHwgICBbM10gICB8ICAgLi4uICAgfCAgW24tMV0gIHwKPiAtICogICAgICArLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rCj4gLSAqICAgICAgfCAgIE1FU1NBR0UgIHwgICAgICAgTUVTU0FHRSBQQVlMT0FEICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAo+IC0gKiAgICAgICsgICBIRUFERVIgICArLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPiAtICogICAgICB8ICAg ICAgICAgICAgfCAgICAwICAgIHwgICAgMSAgICB8ICAgIDIgICAgfCAgIC4uLiAgIHwgICAgbiAg ICB8Cj4gLSAqICAgICAgKz09PT09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09Kz09PT09PT09 PSs9PT09PT09PT0rPT09PT09PT09Kwo+IC0gKiAgICAgIHwgICAgIGxlbiAgICB8ICAgICAgICAg ICAgcmVxdWVzdCBzcGVjaWZpYyBkYXRhICAgICAgICAgICAgICAgIHwKPiAtICogICAgICArLS0t LS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rCj4gLSAqCj4gLSAqICAgICAgICAgICAgICAgICAgIF4tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LWxlbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXgo+IC0gKi8KPiAtCj4gLXN0YXRpYyBpbnQgY3Rf aGFuZGxlX3JlcXVlc3Qoc3RydWN0IGludGVsX2d1Y19jdCAqY3QsIHN0cnVjdCBjdF9pbmNvbWlu Z19tc2cgKnJlcXVlc3QpCj4gK3N0YXRpYyBpbnQgY3RfaGFuZGxlX2V2ZW50KHN0cnVjdCBpbnRl bF9ndWNfY3QgKmN0LCBzdHJ1Y3QgY3RfaW5jb21pbmdfbXNnICpyZXF1ZXN0KQo+ICAgewo+ICsJ Y29uc3QgdTMyICpoeGcgPSAmcmVxdWVzdC0+bXNnW0dVQ19DVEJfTVNHX01JTl9MRU5dOwo+ICAg CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAKPiAtCUdFTV9CVUdfT04oY3RfaGVhZGVyX2lzX3Jl c3BvbnNlKHJlcXVlc3QtPm1zZ1swXSkpOwo+ICsJR0VNX0JVR19PTihGSUVMRF9HRVQoR1VDX0hY R19NU0dfMF9UWVBFLCBoeGdbMF0pICE9IEdVQ19IWEdfVFlQRV9FVkVOVCk7Cj4gICAKPiAgIAlz cGluX2xvY2tfaXJxc2F2ZSgmY3QtPnJlcXVlc3RzLmxvY2ssIGZsYWdzKTsKPiAgIAlsaXN0X2Fk ZF90YWlsKCZyZXF1ZXN0LT5saW5rLCAmY3QtPnJlcXVlc3RzLmluY29taW5nKTsKPiBAQCAtOTA2 LDE1ICs4MzEsNTMgQEAgc3RhdGljIGludCBjdF9oYW5kbGVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxf Z3VjX2N0ICpjdCwgc3RydWN0IGN0X2luY29taW5nX21zZyAqcmUKPiAgIAlyZXR1cm4gMDsKPiAg IH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBjdF9oYW5kbGVfbXNnKHN0cnVjdCBpbnRlbF9ndWNfY3Qg KmN0LCBzdHJ1Y3QgY3RfaW5jb21pbmdfbXNnICptc2cpCj4gK3N0YXRpYyBpbnQgY3RfaGFuZGxl X2h4ZyhzdHJ1Y3QgaW50ZWxfZ3VjX2N0ICpjdCwgc3RydWN0IGN0X2luY29taW5nX21zZyAqbXNn KQo+ICAgewo+IC0JdTMyIGhlYWRlciA9IG1zZy0+bXNnWzBdOwo+ICsJdTMyIG9yaWdpbiwgdHlw ZTsKPiArCXUzMiAqaHhnOwo+ICAgCWludCBlcnI7Cj4gICAKPiAtCWlmIChjdF9oZWFkZXJfaXNf cmVzcG9uc2UoaGVhZGVyKSkKPiArCWlmICh1bmxpa2VseShtc2ctPnNpemUgPCBHVUNfQ1RCX0hY R19NU0dfTUlOX0xFTikpCj4gKwkJcmV0dXJuIC1FQkFETVNHOwo+ICsKPiArCWh4ZyA9ICZtc2ct Pm1zZ1tHVUNfQ1RCX01TR19NSU5fTEVOXTsKPiArCj4gKwlvcmlnaW4gPSBGSUVMRF9HRVQoR1VD X0hYR19NU0dfMF9PUklHSU4sIGh4Z1swXSk7Cj4gKwlpZiAodW5saWtlbHkob3JpZ2luICE9IEdV Q19IWEdfT1JJR0lOX0dVQykpIHsKPiArCQllcnIgPSAtRVBST1RPOwo+ICsJCWdvdG8gZmFpbGVk Owo+ICsJfQo+ICsKPiArCXR5cGUgPSBGSUVMRF9HRVQoR1VDX0hYR19NU0dfMF9UWVBFLCBoeGdb MF0pOwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIEdVQ19IWEdfVFlQRV9FVkVOVDoKPiAr CQllcnIgPSBjdF9oYW5kbGVfZXZlbnQoY3QsIG1zZyk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEdV Q19IWEdfVFlQRV9SRVNQT05TRV9TVUNDRVNTOgo+ICsJY2FzZSBHVUNfSFhHX1RZUEVfUkVTUE9O U0VfRkFJTFVSRToKPiAgIAkJZXJyID0gY3RfaGFuZGxlX3Jlc3BvbnNlKGN0LCBtc2cpOwo+ICsJ CWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQllcnIgPSAtRU9QTk9UU1VQUDsKPiArCX0KPiArCj4g KwlpZiAodW5saWtlbHkoZXJyKSkgewo+ICtmYWlsZWQ6Cj4gKwkJQ1RfRVJST1IoY3QsICJGYWls ZWQgdG8gaGFuZGxlIEhYRyBtZXNzYWdlICglcGUpICUqcGhcbiIsCj4gKwkJCSBFUlJfUFRSKGVy ciksIDQgKiBHVUNfSFhHX01TR19NSU5fTEVOLCBoeGcpOwo+ICsJfQo+ICsJcmV0dXJuIGVycjsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgY3RfaGFuZGxlX21zZyhzdHJ1Y3QgaW50ZWxfZ3VjX2N0 ICpjdCwgc3RydWN0IGN0X2luY29taW5nX21zZyAqbXNnKQo+ICt7Cj4gKwl1MzIgZm9ybWF0ID0g RklFTERfR0VUKEdVQ19DVEJfTVNHXzBfRk9STUFULCBtc2ctPm1zZ1swXSk7Cj4gKwlpbnQgZXJy Owo+ICsKPiArCWlmIChmb3JtYXQgPT0gR1VDX0NUQl9GT1JNQVRfSFhHKQo+ICsJCWVyciA9IGN0 X2hhbmRsZV9oeGcoY3QsIG1zZyk7Cj4gICAJZWxzZQo+IC0JCWVyciA9IGN0X2hhbmRsZV9yZXF1 ZXN0KGN0LCBtc2cpOwo+ICsJCWVyciA9IC1FT1BOT1RTVVBQOwo+ICAgCj4gICAJaWYgKHVubGlr ZWx5KGVycikpIHsKPiAgIAkJQ1RfRVJST1IoY3QsICJGYWlsZWQgdG8gcHJvY2VzcyBDVCBtZXNz YWdlICglcGUpICUqcGhcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19jdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X2N0LmgKPiBpbmRleCA5MDUyMDJjYWFhZDMuLjFhZTJkZGU2ZGI5MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfY3QuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5oCj4gQEAgLTYxLDcgKzYxLDcgQEAgc3Ry dWN0IGludGVsX2d1Y19jdCB7Cj4gICAJc3RydWN0IHRhc2tsZXRfc3RydWN0IHJlY2VpdmVfdGFz a2xldDsKPiAgIAo+ICAgCXN0cnVjdCB7Cj4gLQkJdTMyIGxhc3RfZmVuY2U7IC8qIGxhc3QgZmVu Y2UgdXNlZCB0byBzZW5kIHJlcXVlc3QgKi8KPiArCQl1MTYgbGFzdF9mZW5jZTsgLyogbGFzdCBm ZW5jZSB1c2VkIHRvIHNlbmQgcmVxdWVzdCAqLwo+ICAgCj4gICAJCXNwaW5sb2NrX3QgbG9jazsg LyogcHJvdGVjdHMgcGVuZGluZyByZXF1ZXN0cyBsaXN0ICovCj4gICAJCXN0cnVjdCBsaXN0X2hl YWQgcGVuZGluZzsgLyogcmVxdWVzdHMgd2FpdGluZyBmb3IgcmVzcG9uc2UgKi8KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=