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.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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=unavailable 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 B3166C433C1 for ; Wed, 24 Mar 2021 11:34:47 +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 4AEB161A02 for ; Wed, 24 Mar 2021 11:34:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4AEB161A02 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 28BCD6E9CE; Wed, 24 Mar 2021 11:34:44 +0000 (UTC) Received: from ste-pvt-msa1.bahnhof.se (ste-pvt-msa1.bahnhof.se [213.80.101.70]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF9346E0C1; Wed, 24 Mar 2021 11:34:42 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 36D8D3F72D; Wed, 24 Mar 2021 12:34:41 +0100 (CET) Authentication-Results: ste-pvt-msa1.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=WUUGkmdm; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from ste-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (ste-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ve40-3OK-85F; Wed, 24 Mar 2021 12:34:39 +0100 (CET) Received: by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id AB9783F5E5; Wed, 24 Mar 2021 12:34:37 +0100 (CET) Received: from [192.168.0.209] (unknown [192.198.151.43]) by mail1.shipmail.org (Postfix) with ESMTPSA id 2EFB43605CC; Wed, 24 Mar 2021 12:34:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1616585676; bh=fGzZpec8XuHsb9/fYc6Izz47d34CZSClQhlvbyPiKqQ=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=WUUGkmdmvN/juOFBXMxv1wQS1w93Lz85h+h+8L8OBKeOpXnDwZThmF/yYYQnkwkQ9 2nWyg3DWUV236WFgRXcgIxJEdcBOGCD8yNjSMqeXNCCsBCMwuBLmjIwUlM1+V06yUx d1iUzRacXjsGKpFWzgs8mbpGOCmWnVjmnXDZ87AI= Subject: Re: [Intel-gfx] [PATCH v9 16/70] drm/i915: Fix userptr so we do not have to worry about obj->mm.lock, v7. To: Daniel Vetter , Maarten Lankhorst References: <20210323155059.628690-1-maarten.lankhorst@linux.intel.com> <20210323155059.628690-17-maarten.lankhorst@linux.intel.com> From: =?UTF-8?Q?Thomas_Hellstr=c3=b6m_=28Intel=29?= Message-ID: Date: Wed, 24 Mar 2021 12:34:34 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dave Airlie , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Ck9uIDMvMjQvMjEgMTI6MjggUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gVHVlLCBNYXIg MjMsIDIwMjEgYXQgMDQ6NTA6MDVQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+ IEluc3RlYWQgb2YgZG9pbmcgd2hhdCB3ZSBkbyBjdXJyZW50bHksIHdoaWNoIHdpbGwgbmV2ZXIg d29yayB3aXRoCj4+IFBST1ZFX0xPQ0tJTkcsIGRvIHRoZSBzYW1lIGFzIEFNRCBkb2VzLCBhbmQg c29tZXRoaW5nIHNpbWlsYXIgdG8KPj4gcmVsb2NhdGlvbiBzbG93cGF0aC4gV2hlbiBhbGwgbG9j a3MgYXJlIGRyb3BwZWQsIHdlIGFjcXVpcmUgdGhlCj4+IHBhZ2VzIGZvciBwaW5uaW5nLiBXaGVu IHRoZSBsb2NrcyBhcmUgdGFrZW4sIHdlIHRyYW5zZmVyIHRob3NlCj4+IHBhZ2VzIGluIC5nZXRf cGFnZXMoKSB0byB0aGUgYm8uIEFzIGEgZmluYWwgY2hlY2sgYmVmb3JlIGluc3RhbGxpbmcKPj4g dGhlIGZlbmNlcywgd2UgZW5zdXJlIHRoYXQgdGhlIG1tdSBub3RpZmllciB3YXMgbm90IGNhbGxl ZDsgaWYgaXQgaXMsCj4+IHdlIHJldHVybiAtRUFHQUlOIHRvIHVzZXJzcGFjZSB0byBzaWduYWwg aXQgaGFzIHRvIHN0YXJ0IG92ZXIuCj4+Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+IC0gVW5iaW5k aW5nIGlzIGRvbmUgaW4gc3VibWl0X2luaXQgb25seS4gc3VibWl0X2JlZ2luKCkgcmVtb3ZlZC4K Pj4gLSBNTVVfTk9URklFUiAtPiBNTVVfTk9USUZJRVIKPj4gQ2hhbmdlcyBzaW5jZSB2MjoKPj4g LSBNYWtlIGk5MTUtPm1tLm5vdGlmaWVyIGEgc3BpbmxvY2suCj4+IENoYW5nZXMgc2luY2UgdjM6 Cj4+IC0gQWRkIFdBUk5fT04gaWYgdGhlcmUgYXJlIGFueSBwYWdlIHJlZmVyZW5jZXMgbGVmdCwg c2hvdWxkIGhhdmUgYmVlbiAwLgo+PiAtIFJldHVybiAwIG9uIHN1Y2Nlc3MgaW4gc3VibWl0X2lu aXQoKSwgYnVnIGZyb20gc3BpbmxvY2sgY29udmVyc2lvbi4KPj4gLSBSZWxlYXNlIHB2ZWMgb3V0 c2lkZSBvZiBub3RpZmllcl9sb2NrIChUaG9tYXMpLgo+PiBDaGFuZ2VzIHNpbmNlIHY0Ogo+PiAt IE1lbnRpb24gd2h5IHdlJ3JlIGNsZWFyaW5nIGViLT5baSArIDFdLnZtYSBpbiB0aGUgY29kZS4g KFRob21hcykKPj4gLSBBY3R1YWxseSBjaGVjayBhbGwgaW52YWxpZGF0aW9ucyBpbiBlYl9tb3Zl X3RvX2dwdS4gKFRob21hcykKPj4gLSBEbyBub3Qgd2FpdCB3aGVuIHByb2Nlc3MgaXMgZXhpdGlu ZyB0byBmaXggZ2VtX2N0eF9wZXJzaXN0ZW5jZS51c2VycHRyLgo+PiBDaGFuZ2VzIHNpbmNlIHY1 Ogo+PiAtIENsYXJpZnkgd2h5IGNoZWNrIG9uIFBGX0VYSVRJTkcgaXMgKHRlbXBvcmFyaWx5KSBy ZXF1aXJlZC4KPj4gQ2hhbmdlcyBzaW5jZSB2NjoKPj4gLSBFbnN1cmUgdXNlcnB0ciB2YWxpZGl0 eSBpcyBjaGVja2VkIGluIHNldF9kb21haW4gdGhyb3VnaCBhIHNwZWNpYWwgcGF0aC4KPj4KPj4g U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KPj4gQWNrZWQtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+ Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyAg ICB8ICAxOCArLQo+PiAgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIu YyAgICB8IDEwMSArKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2Jq ZWN0LmggICAgfCAgMzggKy0KPj4gICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmpl Y3RfdHlwZXMuaCAgfCAgMTAgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fcGFnZXMuYyAgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fdXNlcnB0ci5jICAgfCA3OTYgKysrKysrLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA5ICstCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgICA1ICstCj4+ICAgOCBm aWxlcyBjaGFuZ2VkLCAzOTUgaW5zZXJ0aW9ucygrKSwgNTg0IGRlbGV0aW9ucygtKQo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jCj4+IGluZGV4IDJmNDk4 MGJmNzQyZS4uNzZjYjlmNWM2NmFhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fZG9tYWluLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2RvbWFpbi5jCj4+IEBAIC00NjgsMTQgKzQ2OCwyOCBAQCBpOTE1X2dlbV9zZXRf ZG9tYWluX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ICAgCWlm ICghb2JqKQo+PiAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4+ICAgCj4+ICsJaWYgKGk5MTVfZ2VtX29i amVjdF9pc191c2VycHRyKG9iaikpIHsKPj4gKwkJLyoKPj4gKwkJICogVHJ5IHRvIGdyYWIgdXNl cnB0ciBwYWdlcywgaXJpcyB1c2VzIHNldF9kb21haW4gdG8gY2hlY2sKPj4gKwkJICogdXNlcnB0 ciB2YWxpZGl0eQo+PiArCQkgKi8KPj4gKwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJf dmFsaWRhdGUob2JqKTsKPj4gKwkJaWYgKCFlcnIpCj4+ICsJCQllcnIgPSBpOTE1X2dlbV9vYmpl Y3Rfd2FpdChvYmosCj4+ICsJCQkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4+ICsJ CQkJCQkgICBJOTE1X1dBSVRfUFJJT1JJVFkgfAo+PiArCQkJCQkJICAgKHdyaXRlX2RvbWFpbiA/ IEk5MTVfV0FJVF9BTEwgOiAwKSwKPj4gKwkJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsK Pj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCj4+ICAgCS8qCj4+ICAgCSAqIFByb3h5IG9iamVj dHMgZG8gbm90IGNvbnRyb2wgYWNjZXNzIHRvIHRoZSBiYWNraW5nIHN0b3JhZ2UsIGVyZ28KPj4g ICAJICogdGhleSBjYW5ub3QgYmUgdXNlZCBhcyBhIG1lYW5zIHRvIG1hbmlwdWxhdGUgdGhlIGNh Y2hlIGRvbWFpbgo+PiAgIAkgKiB0cmFja2luZyBmb3IgdGhhdCBiYWNraW5nIHN0b3JhZ2UuIFRo ZSBwcm94eSBvYmplY3QgaXMgYWx3YXlzCj4+ICAgCSAqIGNvbnNpZGVyZWQgdG8gYmUgb3V0c2lk ZSBvZiBhbnkgY2FjaGUgZG9tYWluLgo+PiAgIAkgKi8KPj4gLQlpZiAoaTkxNV9nZW1fb2JqZWN0 X2lzX3Byb3h5KG9iaikgJiYKPj4gLQkgICAgIWk5MTVfZ2VtX29iamVjdF9pc191c2VycHRyKG9i aikpIHsKPj4gKwlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX3Byb3h5KG9iaikpIHsKPj4gICAJCWVy ciA9IC1FTlhJTzsKPj4gICAJCWdvdG8gb3V0Owo+PiAgIAl9Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBpbmRleCA3OTVjNjhmY2M2ZWQu LmI1Y2E5ZWI1MzU2NSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4+IEBAIC01MywxNCArNTMsMTYgQEAgZW51bSB7Cj4+ICAgLyog X19FWEVDX09CSkVDVF9OT19SRVNFUlZFIGlzIEJJVCgzMSksIGRlZmluZWQgaW4gaTkxNV92bWEu aCAqLwo+PiAgICNkZWZpbmUgX19FWEVDX09CSkVDVF9IQVNfUElOCQlCSVQoMzApCj4+ICAgI2Rl ZmluZSBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRQkJQklUKDI5KQo+PiAtI2RlZmluZSBfX0VYRUNf T0JKRUNUX05FRURTX01BUAkJQklUKDI4KQo+PiAtI2RlZmluZSBfX0VYRUNfT0JKRUNUX05FRURT X0JJQVMJQklUKDI3KQo+PiAtI2RlZmluZSBfX0VYRUNfT0JKRUNUX0lOVEVSTkFMX0ZMQUdTCSh+ MHUgPDwgMjcpIC8qIGFsbCBvZiB0aGUgYWJvdmUgKyAqLwo+PiArI2RlZmluZSBfX0VYRUNfT0JK RUNUX1VTRVJQVFJfSU5JVAlCSVQoMjgpCj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfTkVFRFNf TUFQCQlCSVQoMjcpCj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfTkVFRFNfQklBUwlCSVQoMjYp Cj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfSU5URVJOQUxfRkxBR1MJKH4wdSA8PCAyNikgLyog YWxsIG9mIHRoZSBhYm92ZSArICovCj4+ICAgI2RlZmluZSBfX0VYRUNfT0JKRUNUX1JFU0VSVkVE IChfX0VYRUNfT0JKRUNUX0hBU19QSU4gfCBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRSkKPj4gICAK Pj4gICAjZGVmaW5lIF9fRVhFQ19IQVNfUkVMT0MJQklUKDMxKQo+PiAgICNkZWZpbmUgX19FWEVD X0VOR0lORV9QSU5ORUQJQklUKDMwKQo+PiAtI2RlZmluZSBfX0VYRUNfSU5URVJOQUxfRkxBR1MJ KH4wdSA8PCAzMCkKPj4gKyNkZWZpbmUgX19FWEVDX1VTRVJQVFJfVVNFRAlCSVQoMjkpCj4+ICsj ZGVmaW5lIF9fRVhFQ19JTlRFUk5BTF9GTEFHUwkofjB1IDw8IDI5KQo+PiAgICNkZWZpbmUgVVBE QVRFCQkJUElOX09GRlNFVF9GSVhFRAo+PiAgIAo+PiAgICNkZWZpbmUgQkFUQ0hfT0ZGU0VUX0JJ QVMgKDI1NioxMDI0KQo+PiBAQCAtODcxLDYgKzg3MywyNiBAQCBzdGF0aWMgaW50IGViX2xvb2t1 cF92bWFzKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+PiAgIAkJfQo+PiAgIAo+PiAgIAkJ ZWJfYWRkX3ZtYShlYiwgaSwgYmF0Y2gsIHZtYSk7Cj4+ICsKPj4gKwkJaWYgKGk5MTVfZ2VtX29i amVjdF9pc191c2VycHRyKHZtYS0+b2JqKSkgewo+PiArCQkJZXJyID0gaTkxNV9nZW1fb2JqZWN0 X3VzZXJwdHJfc3VibWl0X2luaXQodm1hLT5vYmopOwo+PiArCQkJaWYgKGVycikgewo+PiArCQkJ CWlmIChpICsgMSA8IGViLT5idWZmZXJfY291bnQpIHsKPj4gKwkJCQkJLyoKPj4gKwkJCQkJICog RXhlY2J1ZmZlciBjb2RlIGV4cGVjdHMgbGFzdCB2bWEgZW50cnkgdG8gYmUgTlVMTCwKPj4gKwkJ CQkJICogc2luY2Ugd2UgYWxyZWFkeSBpbml0aWFsaXplZCB0aGlzIGVudHJ5LAo+PiArCQkJCQkg KiBzZXQgdGhlIG5leHQgdmFsdWUgdG8gTlVMTCBvciB3ZSBtZXNzIHVwCj4+ICsJCQkJCSAqIGNs ZWFudXAgaGFuZGxpbmcuCj4+ICsJCQkJCSAqLwo+PiArCQkJCQllYi0+dm1hW2kgKyAxXS52bWEg PSBOVUxMOwo+PiArCQkJCX0KPj4gKwo+PiArCQkJCXJldHVybiBlcnI7Cj4+ICsJCQl9Cj4+ICsK Pj4gKwkJCWViLT52bWFbaV0uZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9VU0VSUFRSX0lOSVQ7Cj4+ ICsJCQllYi0+YXJncy0+ZmxhZ3MgfD0gX19FWEVDX1VTRVJQVFJfVVNFRDsKPj4gKwkJfQo+PiAg IAl9Cj4+ICAgCj4+ICAgCWlmICh1bmxpa2VseShlYi0+YmF0Y2gtPmZsYWdzICYgRVhFQ19PQkpF Q1RfV1JJVEUpKSB7Cj4+IEBAIC05NzIsNyArOTk0LDcgQEAgZWJfZ2V0X3ZtYShjb25zdCBzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgdW5zaWduZWQgbG9uZyBoYW5kbGUpCj4+ICAgCX0KPj4g ICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCBlYl9yZWxlYXNlX3ZtYXMoc3RydWN0IGk5MTVfZXhl Y2J1ZmZlciAqZWIsIGJvb2wgZmluYWwpCj4+ICtzdGF0aWMgdm9pZCBlYl9yZWxlYXNlX3ZtYXMo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wgZmluYWwsIGJvb2wgcmVsZWFzZV91c2Vy cHRyKQo+PiAgIHsKPj4gICAJY29uc3QgdW5zaWduZWQgaW50IGNvdW50ID0gZWItPmJ1ZmZlcl9j b3VudDsKPj4gICAJdW5zaWduZWQgaW50IGk7Cj4+IEBAIC05ODYsNiArMTAwOCwxMSBAQCBzdGF0 aWMgdm9pZCBlYl9yZWxlYXNlX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wg ZmluYWwpCj4+ICAgCj4+ICAgCQllYl91bnJlc2VydmVfdm1hKGV2KTsKPj4gICAKPj4gKwkJaWYg KHJlbGVhc2VfdXNlcnB0ciAmJiBldi0+ZmxhZ3MgJiBfX0VYRUNfT0JKRUNUX1VTRVJQVFJfSU5J VCkgewo+PiArCQkJZXYtPmZsYWdzICY9IH5fX0VYRUNfT0JKRUNUX1VTRVJQVFJfSU5JVDsKPj4g KwkJCWk5MTVfZ2VtX29iamVjdF91c2VycHRyX3N1Ym1pdF9maW5pKHZtYS0+b2JqKTsKPj4gKwkJ fQo+PiArCj4+ICAgCQlpZiAoZmluYWwpCj4+ICAgCQkJaTkxNV92bWFfcHV0KHZtYSk7Cj4+ICAg CX0KPj4gQEAgLTE5MTYsNiArMTk0MywzMSBAQCBzdGF0aWMgaW50IGViX3ByZWZhdWx0X3JlbG9j YXRpb25zKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+PiAgIAlyZXR1cm4gMDsK Pj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgaW50IGViX3JlaW5pdF91c2VycHRyKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViKQo+PiArewo+PiArCWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IGVi LT5idWZmZXJfY291bnQ7Cj4+ICsJdW5zaWduZWQgaW50IGk7Cj4+ICsJaW50IHJldDsKPj4gKwo+ PiArCWlmIChsaWtlbHkoIShlYi0+YXJncy0+ZmxhZ3MgJiBfX0VYRUNfVVNFUlBUUl9VU0VEKSkp Cj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK Pj4gKwkJc3RydWN0IGViX3ZtYSAqZXYgPSAmZWItPnZtYVtpXTsKPj4gKwo+PiArCQlpZiAoIWk5 MTVfZ2VtX29iamVjdF9pc191c2VycHRyKGV2LT52bWEtPm9iaikpCj4+ICsJCQljb250aW51ZTsK Pj4gKwo+PiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfdXNlcnB0cl9zdWJtaXRfaW5pdChldi0+ dm1hLT5vYmopOwo+PiArCQlpZiAocmV0KQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwo+PiArCQll di0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9VU0VSUFRSX0lOSVQ7Cj4+ICsJfQo+PiArCj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRl X3BhcnNlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+ICAgCQkJCQkgICBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPj4gICB7Cj4+IEBAIC0xOTMwLDcgKzE5ODIsNyBAQCBzdGF0 aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3BhcnNlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1 ZmZlciAqZWIsCj4+ICAgCX0KPj4gICAKPj4gICAJLyogV2UgbWF5IHByb2Nlc3MgYW5vdGhlciBl eGVjYnVmZmVyIGR1cmluZyB0aGUgdW5sb2NrLi4uICovCj4+IC0JZWJfcmVsZWFzZV92bWFzKGVi LCBmYWxzZSk7Cj4+ICsJZWJfcmVsZWFzZV92bWFzKGViLCBmYWxzZSwgdHJ1ZSk7Cj4+ICAgCWk5 MTVfZ2VtX3d3X2N0eF9maW5pKCZlYi0+d3cpOwo+PiAgIAo+PiAgIAlpZiAocnEpIHsKPj4gQEAg LTE5NzEsMTAgKzIwMjMsOCBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3BhcnNl X3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+ICAgCQllcnIgPSAwOwo+PiAgIAl9 Cj4+ICAgCj4+IC0jaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUgo+PiAgIAlpZiAoIWVycikKPj4g LQkJZmx1c2hfd29ya3F1ZXVlKGViLT5pOTE1LT5tbS51c2VycHRyX3dxKTsKPj4gLSNlbmRpZgo+ PiArCQllcnIgPSBlYl9yZWluaXRfdXNlcnB0cihlYik7Cj4+ICAgCj4+ICAgZXJyX3JlbG9jazoK Pj4gICAJaTkxNV9nZW1fd3dfY3R4X2luaXQoJmViLT53dywgdHJ1ZSk7Cj4+IEBAIC0yMDM2LDcg KzIwODYsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3BhcnNlX3Nsb3coc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+ICAgCj4+ICAgZXJyOgo+PiAgIAlpZiAoZXJyID09 IC1FREVBRExLKSB7Cj4+IC0JCWViX3JlbGVhc2Vfdm1hcyhlYiwgZmFsc2UpOwo+PiArCQllYl9y ZWxlYXNlX3ZtYXMoZWIsIGZhbHNlLCBmYWxzZSk7Cj4+ICAgCQllcnIgPSBpOTE1X2dlbV93d19j dHhfYmFja29mZigmZWItPnd3KTsKPj4gICAJCWlmICghZXJyKQo+PiAgIAkJCWdvdG8gcmVwZWF0 X3ZhbGlkYXRlOwo+PiBAQCAtMjEzMyw3ICsyMTgzLDcgQEAgc3RhdGljIGludCBlYl9yZWxvY2F0 ZV9wYXJzZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPj4gICAKPj4gICBlcnI6Cj4+ICAg CWlmIChlcnIgPT0gLUVERUFETEspIHsKPj4gLQkJZWJfcmVsZWFzZV92bWFzKGViLCBmYWxzZSk7 Cj4+ICsJCWViX3JlbGVhc2Vfdm1hcyhlYiwgZmFsc2UsIGZhbHNlKTsKPj4gICAJCWVyciA9IGk5 MTVfZ2VtX3d3X2N0eF9iYWNrb2ZmKCZlYi0+d3cpOwo+PiAgIAkJaWYgKCFlcnIpCj4+ICAgCQkJ Z290byByZXRyeTsKPj4gQEAgLTIyMDgsNiArMjI1OCwzMCBAQCBzdGF0aWMgaW50IGViX21vdmVf dG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+PiAgIAkJCQkJCSAgICAgIGZsYWdz IHwgX19FWEVDX09CSkVDVF9OT19SRVNFUlZFKTsKPj4gICAJfQo+PiAgIAo+PiArI2lmZGVmIENP TkZJR19NTVVfTk9USUZJRVIKPj4gKwlpZiAoIWVyciAmJiAoZWItPmFyZ3MtPmZsYWdzICYgX19F WEVDX1VTRVJQVFJfVVNFRCkpIHsKPj4gKwkJc3Bpbl9sb2NrKCZlYi0+aTkxNS0+bW0ubm90aWZp ZXJfbG9jayk7Cj4+ICsKPj4gKwkJLyoKPj4gKwkJICogY291bnQgaXMgYWx3YXlzIGF0IGxlYXN0 IDEsIG90aGVyd2lzZSBfX0VYRUNfVVNFUlBUUl9VU0VECj4+ICsJCSAqIGNvdWxkIG5vdCBoYXZl IGJlZW4gc2V0Cj4+ICsJCSAqLwo+PiArCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ PiArCQkJc3RydWN0IGViX3ZtYSAqZXYgPSAmZWItPnZtYVtpXTsKPj4gKwkJCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPSBldi0+dm1hLT5vYmo7Cj4+ICsKPj4gKwkJCWlmICghaTkx NV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIob2JqKSkKPj4gKwkJCQljb250aW51ZTsKPj4gKwo+PiAr CQkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJfc3VibWl0X2RvbmUob2JqKTsKPj4gKwkJ CWlmIChlcnIpCj4+ICsJCQkJYnJlYWs7Cj4+ICsJCX0KPj4gKwo+PiArCQlzcGluX3VubG9jaygm ZWItPmk5MTUtPm1tLm5vdGlmaWVyX2xvY2spOwo+PiArCX0KPj4gKyNlbmRpZgo+PiArCj4+ICAg CWlmICh1bmxpa2VseShlcnIpKQo+PiAgIAkJZ290byBlcnJfc2tpcDsKPj4gICAKPj4gQEAgLTMz NTIsNyArMzQyNiw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4gICAKPj4gICAJZXJyID0gZWJfbG9va3VwX3ZtYXMoJmViKTsKPj4gICAJaWYgKGVy cikgewo+PiAtCQllYl9yZWxlYXNlX3ZtYXMoJmViLCB0cnVlKTsKPj4gKwkJZWJfcmVsZWFzZV92 bWFzKCZlYiwgdHJ1ZSwgdHJ1ZSk7Cj4+ICAgCQlnb3RvIGVycl9lbmdpbmU7Cj4+ICAgCX0KPj4g ICAKPj4gQEAgLTM0MjQsNiArMzQ5OCw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPj4gICAKPj4gICAJdHJhY2VfaTkxNV9yZXF1ZXN0X3F1ZXVlKGVi LnJlcXVlc3QsIGViLmJhdGNoX2ZsYWdzKTsKPj4gICAJZXJyID0gZWJfc3VibWl0KCZlYiwgYmF0 Y2gpOwo+PiArCj4+ICAgZXJyX3JlcXVlc3Q6Cj4+ICAgCWk5MTVfcmVxdWVzdF9nZXQoZWIucmVx dWVzdCk7Cj4+ICAgCWVyciA9IGViX3JlcXVlc3RfYWRkKCZlYiwgZXJyKTsKPj4gQEAgLTM0NDQs NyArMzUxOSw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPj4gICAJaTkxNV9yZXF1ZXN0X3B1dChlYi5yZXF1ZXN0KTsKPj4gICAKPj4gICBlcnJfdm1h Ogo+PiAtCWViX3JlbGVhc2Vfdm1hcygmZWIsIHRydWUpOwo+PiArCWViX3JlbGVhc2Vfdm1hcygm ZWIsIHRydWUsIHRydWUpOwo+PiAgIAlpZiAoZWIudHJhbXBvbGluZSkKPj4gICAJCWk5MTVfdm1h X3VucGluKGViLnRyYW1wb2xpbmUpOwo+PiAgIAlXQVJOX09OKGVyciA9PSAtRURFQURMSyk7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKPj4gaW5kZXggNjk1 MDlkYmQwMWM3Li5iNWFmOWM0NDBhYzUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0LmgKPj4gQEAgLTU5LDYgKzU5LDcgQEAgaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zaG1lbV9mcm9tX2RhdGEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ ICAgCQkJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLCByZXNvdXJjZV9zaXplX3Qgc2l6ZSk7Cj4+ ICAgCj4+ICAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1 X2dlbV9zaG1lbV9vcHM7Cj4+ICsKPj4gICB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vf c2htZW0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gICAJCQkJICAgICBzdHJ1 Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+PiAgIAkJCQkgICAgIGJvb2wgbmVlZHNfY2xmbHVzaCk7Cj4+ IEBAIC0yNzgsMTIgKzI3OSw2IEBAIGk5MTVfZ2VtX29iamVjdF9uZXZlcl9tbWFwKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAgCXJldHVybiBpOTE1X2dlbV9vYmpl Y3RfdHlwZV9oYXMob2JqLCBJOTE1X0dFTV9PQkpFQ1RfTk9fTU1BUCk7Cj4+ICAgfQo+PiAgIAo+ PiAtc3RhdGljIGlubGluZSBib29sCj4+IC1pOTE1X2dlbV9vYmplY3RfbmVlZHNfYXN5bmNfY2Fu Y2VsKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+IC17Cj4+IC0JcmV0 dXJuIGk5MTVfZ2VtX29iamVjdF90eXBlX2hhcyhvYmosIEk5MTVfR0VNX09CSkVDVF9BU1lOQ19D QU5DRUwpOwo+PiAtfQo+PiAtCj4+ICAgc3RhdGljIGlubGluZSBib29sCj4+ICAgaTkxNV9nZW1f b2JqZWN0X2lzX2ZyYW1lYnVmZmVyKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCj4+ICAgewo+PiBAQCAtNTczLDE2ICs1NjgsNiBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0 X2ZsdXNoX2Zyb250YnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAg dm9pZCBfX2k5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlX2Zyb250YnVmZmVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAgCQkJCQkgICAgICBlbnVtIGZiX29wX29yaWdpbiBv cmlnaW4pOwo+PiAgIAo+PiAtc3RhdGljIGlubGluZSBib29sCj4+IC1pOTE1X2dlbV9vYmplY3Rf aXNfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAtewo+PiAtI2lm ZGVmIENPTkZJR19NTVVfTk9USUZJRVIKPj4gLQlyZXR1cm4gb2JqLT51c2VycHRyLm1tOwo+PiAt I2Vsc2UKPj4gLQlyZXR1cm4gZmFsc2U7Cj4+IC0jZW5kaWYKPj4gLX0KPj4gLQo+PiAgIHN0YXRp YyBpbmxpbmUgdm9pZAo+PiAgIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9mcm9udGJ1ZmZlcihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAgIAkJCQkgIGVudW0gZmJfb3Bfb3JpZ2lu IG9yaWdpbikKPj4gQEAgLTYwMyw0ICs1ODgsMjUgQEAgaW50IGk5MTVfZ2VtX29iamVjdF9yZWFk X2Zyb21fcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1NjQgb2Zmc2V0LAo+ PiAgIAo+PiAgIGJvb2wgaTkxNV9nZW1fb2JqZWN0X2lzX3NobWVtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+PiAgIAo+PiArI2lmZGVmIENPTkZJR19NTVVfTk9USUZJ RVIKPj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+PiAraTkxNV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gK3sKPj4gKwlyZXR1cm4gb2JqLT51 c2VycHRyLm5vdGlmaWVyLm1tOwo+PiArfQo+PiArCj4+ICtpbnQgaTkxNV9nZW1fb2JqZWN0X3Vz ZXJwdHJfc3VibWl0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4+ICtp bnQgaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJfc3VibWl0X2RvbmUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaik7Cj4+ICt2b2lkIGk5MTVfZ2VtX29iamVjdF91c2VycHRyX3N1Ym1pdF9m aW5pKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+PiAraW50IGk5MTVfZ2VtX29i amVjdF91c2VycHRyX3ZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ PiArI2Vsc2UKPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9vYmplY3RfaXNfdXNlcnB0 cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IHJldHVybiBmYWxzZTsgfQo+PiAr Cj4+ICtzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9vYmplY3RfdXNlcnB0cl9zdWJtaXRfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IEdFTV9CVUdfT04oMSk7IHJldHVy biAtRU5PREVWOyB9Cj4+ICtzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9vYmplY3RfdXNlcnB0 cl9zdWJtaXRfZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IEdFTV9CVUdf T04oMSk7IHJldHVybiAtRU5PREVWOyB9Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1f b2JqZWN0X3VzZXJwdHJfc3VibWl0X2Zpbmkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikgeyBHRU1fQlVHX09OKDEpOyB9Cj4+ICtzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9vYmpl Y3RfdXNlcnB0cl92YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IEdF TV9CVUdfT04oMSk7IHJldHVybiAtRU5PREVWOyB9Cj4+ICsKPj4gKyNlbmRpZgo+PiArCj4+ICAg I2VuZGlmCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0 X3R5cGVzLmgKPj4gaW5kZXggNDE0MzIyNjE5NzgxLi40YzBhMzQyMzE2MjMgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKPj4g QEAgLTcsNiArNyw4IEBACj4+ICAgI2lmbmRlZiBfX0k5MTVfR0VNX09CSkVDVF9UWVBFU19IX18K Pj4gICAjZGVmaW5lIF9fSTkxNV9HRU1fT0JKRUNUX1RZUEVTX0hfXwo+PiAgIAo+PiArI2luY2x1 ZGUgPGxpbnV4L21tdV9ub3RpZmllci5oPgo+PiArCj4+ICAgI2luY2x1ZGUgPGRybS9kcm1fZ2Vt Lmg+Cj4+ICAgI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4+ICAgCj4+IEBAIC0zNCw3 ICszNiw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyB7Cj4+ICAgI2RlZmluZSBJ OTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJMRQlCSVQoMikKPj4gICAjZGVmaW5lIEk5MTVfR0VN X09CSkVDVF9JU19QUk9YWQlCSVQoMykKPj4gICAjZGVmaW5lIEk5MTVfR0VNX09CSkVDVF9OT19N TUFQCQlCSVQoNCkKPj4gLSNkZWZpbmUgSTkxNV9HRU1fT0JKRUNUX0FTWU5DX0NBTkNFTAlCSVQo NSkKPj4gICAKPj4gICAJLyogSW50ZXJmYWNlIGJldHdlZW4gdGhlIEdFTSBvYmplY3QgYW5kIGl0 cyBiYWNraW5nIHN0b3JhZ2UuCj4+ICAgCSAqIGdldF9wYWdlcygpIGlzIGNhbGxlZCBvbmNlIHBy aW9yIHRvIHRoZSB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgc2V0Cj4+IEBAIC0yOTksMTAgKzMwMCwx MSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4+ICAgI2lmZGVmIENPTkZJR19NTVVf Tk9USUZJRVIKPj4gICAJCXN0cnVjdCBpOTE1X2dlbV91c2VycHRyIHsKPj4gICAJCQl1aW50cHRy X3QgcHRyOwo+PiArCQkJdW5zaWduZWQgbG9uZyBub3RpZmllcl9zZXE7Cj4+ICAgCj4+IC0JCQlz dHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+PiAtCQkJc3RydWN0IGk5MTVfbW11X29iamVjdCAq bW11X29iamVjdDsKPj4gLQkJCXN0cnVjdCB3b3JrX3N0cnVjdCAqd29yazsKPj4gKwkJCXN0cnVj dCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgbm90aWZpZXI7Cj4+ICsJCQlzdHJ1Y3QgcGFnZSAqKnB2 ZWM7Cj4+ICsJCQlpbnQgcGFnZV9yZWY7Cj4+ICAgCQl9IHVzZXJwdHI7Cj4+ICAgI2VuZGlmCj4+ ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFn ZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jCj4+IGluZGV4 IGJmNjFiODhhMjExMy4uZTdkNzY1MDA3MmM1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFnZXMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fcGFnZXMuYwo+PiBAQCAtMjI2LDcgKzIyNiw3IEBAIGludCBfX2k5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4g ICAJICogZ2V0X3BhZ2VzIGJhY2tlbmRzIHdlIHNob3VsZCBiZSBiZXR0ZXIgYWJsZSB0byBoYW5k bGUgdGhlCj4+ICAgCSAqIGNhbmNlbGxhdGlvbiBvZiB0aGUgYXN5bmMgdGFzayBpbiBhIG1vcmUg dW5pZm9ybSBtYW5uZXIuCj4+ICAgCSAqLwo+PiAtCWlmICghcGFnZXMgJiYgIWk5MTVfZ2VtX29i amVjdF9uZWVkc19hc3luY19jYW5jZWwob2JqKSkKPj4gKwlpZiAoIXBhZ2VzKQo+PiAgIAkJcGFn ZXMgPSBFUlJfUFRSKC1FSU5WQUwpOwo+PiAgIAo+PiAgIAlpZiAoIUlTX0VSUihwYWdlcykpCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+PiBpbmRleCBi NDY2YWIyZGVmNGQuLjFlNDJmYmM2ODY5NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCj4+IEBAIC0yLDEwICsyLDM5IEBACj4+ICAgICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+PiAgICAqCj4+ICAgICogQ29weXJpZ2h0IMKpIDIw MTItMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiArICoKPj4gKyAgKiBCYXNlZCBvbiBhbWRncHVf bW4sIHdoaWNoIGJlYXJzIHRoZSBmb2xsb3dpbmcgbm90aWNlOgo+PiArICoKPj4gKyAqIENvcHly aWdodCAyMDE0IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KPj4gKyAqIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPj4gKyAq ICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcKPj4gKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKPj4gKyAqIGRpc3RyaWJ1dGUsIHN1YiBsaWNl bnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KPj4gKyAqIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0bwo+PiArICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4gKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO VCBTSEFMTAo+PiArICogVEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMg U1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+PiArICogREFNQUdFUyBPUiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCj4+ ICsgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFCj4+ICsgKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4+ICsgKiBuZXh0IHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cwo+PiArICogb2YgdGhlIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqLwo+PiArLyoKPj4gKyAqIEF1 dGhvcnM6Cj4+ICsgKiAgICBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5j b20+Cj4+ICAgICovCj4+ICAgCj4+ICAgI2luY2x1ZGUgPGxpbnV4L21tdV9jb250ZXh0Lmg+Cj4+ IC0jaW5jbHVkZSA8bGludXgvbW11X25vdGlmaWVyLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L21l bXBvbGljeS5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9zd2FwLmg+Cj4+ICAgI2luY2x1ZGUgPGxp bnV4L3NjaGVkL21tLmg+Cj4+IEBAIC0xNSwzNzMgKzQ0LDEyMSBAQAo+PiAgICNpbmNsdWRlICJp OTE1X2dlbV9vYmplY3QuaCIKPj4gICAjaW5jbHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgo+PiAg IAo+PiAtI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikKPj4gLQo+PiAtc3RydWN0IGk5 MTVfbW1fc3RydWN0IHsKPj4gLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKPj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNTsKPj4gLQlzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uOwo+ PiAtCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4+IC0Jc3RydWN0IGtyZWYga3JlZjsKPj4gLQlz dHJ1Y3QgcmN1X3dvcmsgd29yazsKPj4gLX07Cj4+IC0KPj4gLSNpbmNsdWRlIDxsaW51eC9pbnRl cnZhbF90cmVlLmg+Cj4+IC0KPj4gLXN0cnVjdCBpOTE1X21tdV9ub3RpZmllciB7Cj4+IC0Jc3Bp bmxvY2tfdCBsb2NrOwo+PiAtCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4+IC0Jc3RydWN0IG1t dV9ub3RpZmllciBtbjsKPj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgb2JqZWN0czsKPj4gLQlz dHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+PiAtfTsKPj4gLQo+PiAtc3RydWN0IGk5MTVfbW11 X29iamVjdCB7Cj4+IC0Jc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbjsKPj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+PiAtCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUg aXQ7Cj4+IC19Owo+PiArI2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVIKPj4gICAKPj4gLXN0YXRp YyB2b2lkIGFkZF9vYmplY3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCj4+ICsvKioKPj4g KyAqIGk5MTVfZ2VtX3VzZXJwdHJfaW52YWxpZGF0ZSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91 dCBtbSBjaGFuZ2UKPj4gKyAqCj4+ICsgKiBAbW5pOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0 byB1cGRhdGUKPj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uCj4+ICsg KiBAY3VyX3NlcTogVmFsdWUgdG8gcGFzcyB0byBtbXVfaW50ZXJ2YWxfc2V0X3NlcSgpCj4+ICsg Kgo+PiArICogQmxvY2sgZm9yIG9wZXJhdGlvbnMgb24gQk9zIHRvIGZpbmlzaCBhbmQgbWFyayBw YWdlcyBhcyBhY2Nlc3NlZCBhbmQKPj4gKyAqIHBvdGVudGlhbGx5IGRpcnR5Lgo+PiArICovCj4+ ICtzdGF0aWMgYm9vbCBpOTE1X2dlbV91c2VycHRyX2ludmFsaWRhdGUoc3RydWN0IG1tdV9pbnRl cnZhbF9ub3RpZmllciAqbW5pLAo+PiArCQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3Jh bmdlICpyYW5nZSwKPj4gKwkJCQkJdW5zaWduZWQgbG9uZyBjdXJfc2VxKQo+PiAgIHsKPj4gLQlH RU1fQlVHX09OKCFSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIpKTsKPj4gLQlpbnRlcnZhbF90cmVl X2luc2VydCgmbW8tPml0LCAmbW8tPm1uLT5vYmplY3RzKTsKPj4gLX0KPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gY29udGFpbmVyX29mKG1uaSwgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QsIHVzZXJwdHIubm90aWZpZXIpOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPj4gKwlsb25nIHI7Cj4+ICAgCj4+ IC1zdGF0aWMgdm9pZCBkZWxfb2JqZWN0KHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vKQo+PiAt ewo+PiAtCWlmIChSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIpKQo+PiAtCQlyZXR1cm47Cj4+ICsJ aWYgKCFtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSkKPj4gKwkJcmV0dXJuIGZh bHNlOwo+PiAgIAo+PiAtCWludGVydmFsX3RyZWVfcmVtb3ZlKCZtby0+aXQsICZtby0+bW4tPm9i amVjdHMpOwo+PiAtCVJCX0NMRUFSX05PREUoJm1vLT5pdC5yYik7Cj4+IC19Cj4+ICsJc3Bpbl9s b2NrKCZpOTE1LT5tbS5ub3RpZmllcl9sb2NrKTsKPj4gICAKPj4gLXN0YXRpYyB2b2lkCj4+IC1f X2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLCBib29sIHZhbHVlKQo+PiAtewo+PiAtCXN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vID0g b2JqLT51c2VycHRyLm1tdV9vYmplY3Q7Cj4+ICsJbW11X2ludGVydmFsX3NldF9zZXEobW5pLCBj dXJfc2VxKTsKPj4gKwo+PiArCXNwaW5fdW5sb2NrKCZpOTE1LT5tbS5ub3RpZmllcl9sb2NrKTsK Pj4gICAKPj4gICAJLyoKPj4gLQkgKiBEdXJpbmcgbW1faW52YWxpZGF0ZV9yYW5nZSB3ZSBuZWVk IHRvIGNhbmNlbCBhbnkgdXNlcnB0ciB0aGF0Cj4+IC0JICogb3ZlcmxhcHMgdGhlIHJhbmdlIGJl aW5nIGludmFsaWRhdGVkLiBEb2luZyBzbyByZXF1aXJlcyB0aGUKPj4gLQkgKiBzdHJ1Y3RfbXV0 ZXgsIGFuZCB0aGF0IHJpc2tzIHJlY3Vyc2lvbi4gSW4gb3JkZXIgdG8gY2F1c2UKPj4gLQkgKiBy ZWN1cnNpb24sIHRoZSB1c2VyIG11c3QgYWxpYXMgdGhlIHVzZXJwdHIgYWRkcmVzcyBzcGFjZSB3 aXRoCj4+IC0JICogYSBHVFQgbW1hcHBpbmcgKHBvc3NpYmxlIHdpdGggYSBNQVBfRklYRUQpIC0g dGhlbiB3aGVuIHdlIGhhdmUKPj4gLQkgKiB0byBpbnZhbGlkYXRlIHRoYXQgbW1hcGluZywgbW1f aW52YWxpZGF0ZV9yYW5nZSBpcyBjYWxsZWQgd2l0aAo+PiAtCSAqIHRoZSB1c2VycHRyIGFkZHJl c3MgKmFuZCogdGhlIHN0cnVjdF9tdXRleCBoZWxkLiAgVG8gcHJldmVudCB0aGF0Cj4+IC0JICog d2Ugc2V0IGEgZmxhZyB1bmRlciB0aGUgaTkxNV9tbXVfbm90aWZpZXIgc3BpbmxvY2sgdG8gaW5k aWNhdGUKPj4gLQkgKiB3aGV0aGVyIHRoaXMgb2JqZWN0IGlzIHZhbGlkLgo+PiArCSAqIFdlIGRv bid0IHdhaXQgd2hlbiB0aGUgcHJvY2VzcyBpcyBleGl0aW5nLiBUaGlzIGlzIHZhbGlkCj4+ICsJ ICogYmVjYXVzZSB0aGUgb2JqZWN0IHdpbGwgYmUgY2xlYW5lZCB1cCBhbnl3YXkuCj4+ICsJICoK Pj4gKwkgKiBUaGlzIGlzIGFsc28gdGVtcG9yYXJpbHkgcmVxdWlyZWQgYXMgYSBoYWNrLCBiZWNh dXNlIHdlCj4+ICsJICogY2Fubm90IGN1cnJlbnRseSBmb3JjZSBub24tY29uc2lzdGVudCBiYXRj aCBidWZmZXJzIHRvIHByZWVtcHQKPj4gKwkgKiBhbmQgcmVzY2hlZHVsZSBieSB3YWl0aW5nIG9u IGl0LCBoYW5naW5nIHByb2Nlc3NlcyBvbiBleGl0Lgo+PiAgIAkgKi8KPj4gLQlpZiAoIW1vKQo+ PiAtCQlyZXR1cm47Cj4+IC0KPj4gLQlzcGluX2xvY2soJm1vLT5tbi0+bG9jayk7Cj4+IC0JaWYg KHZhbHVlKQo+PiAtCQlhZGRfb2JqZWN0KG1vKTsKPj4gLQllbHNlCj4+IC0JCWRlbF9vYmplY3Qo bW8pOwo+PiAtCXNwaW5fdW5sb2NrKCZtby0+bW4tPmxvY2spOwo+PiAtfQo+PiAtCj4+IC1zdGF0 aWMgaW50Cj4+IC11c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9u b3RpZmllciAqX21uLAo+PiAtCQkJCSAgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAq cmFuZ2UpCj4+IC17Cj4+IC0Jc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9Cj4+IC0JCWNv bnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+PiAtCXN0cnVj dCBpbnRlcnZhbF90cmVlX25vZGUgKml0Owo+PiAtCXVuc2lnbmVkIGxvbmcgZW5kOwo+PiAtCWlu dCByZXQgPSAwOwo+PiAtCj4+IC0JaWYgKFJCX0VNUFRZX1JPT1QoJm1uLT5vYmplY3RzLnJiX3Jv b3QpKQo+PiAtCQlyZXR1cm4gMDsKPj4gLQo+PiAtCS8qIGludGVydmFsIHJhbmdlcyBhcmUgaW5j bHVzaXZlLCBidXQgaW52YWxpZGF0ZSByYW5nZSBpcyBleGNsdXNpdmUgKi8KPj4gLQllbmQgPSBy YW5nZS0+ZW5kIC0gMTsKPj4gLQo+PiAtCXNwaW5fbG9jaygmbW4tPmxvY2spOwo+PiAtCWl0ID0g aW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBlbmQp Owo+PiAtCXdoaWxlIChpdCkgewo+PiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq Owo+PiAtCj4+IC0JCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpIHsK Pj4gLQkJCXJldCA9IC1FQUdBSU47Cj4+IC0JCQlicmVhazsKPj4gLQkJfQo+PiAtCj4+IC0JCS8q Cj4+IC0JCSAqIFRoZSBtbXVfb2JqZWN0IGlzIHJlbGVhc2VkIGxhdGUgd2hlbiBkZXN0cm95aW5n IHRoZQo+PiAtCQkgKiBHRU0gb2JqZWN0IHNvIGl0IGlzIGVudGlyZWx5IHBvc3NpYmxlIHRvIGdh aW4gYQo+PiAtCQkgKiByZWZlcmVuY2Ugb24gYW4gb2JqZWN0IGluIHRoZSBwcm9jZXNzIG9mIGJl aW5nIGZyZWVkCj4+IC0JCSAqIHNpbmNlIG91ciBzZXJpYWxpc2F0aW9uIGlzIHZpYSB0aGUgc3Bp bmxvY2sgYW5kIG5vdAo+PiAtCQkgKiB0aGUgc3RydWN0X211dGV4IC0gYW5kIGNvbnNlcXVlbnRs eSB1c2UgaXQgYWZ0ZXIgaXQKPj4gLQkJICogaXMgZnJlZWQgYW5kIHRoZW4gZG91YmxlIGZyZWUg aXQuIFRvIHByZXZlbnQgdGhhdAo+PiAtCQkgKiB1c2UtYWZ0ZXItZnJlZSB3ZSBvbmx5IGFjcXVp cmUgYSByZWZlcmVuY2Ugb24gdGhlCj4+IC0JCSAqIG9iamVjdCBpZiBpdCBpcyBub3QgaW4gdGhl IHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLgo+PiAtCQkgKi8KPj4gLQkJb2JqID0gY29udGFp bmVyX29mKGl0LCBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0LCBpdCktPm9iajsKPj4gLQkJaWYgKCFr cmVmX2dldF91bmxlc3NfemVybygmb2JqLT5iYXNlLnJlZmNvdW50KSkgewo+PiAtCQkJaXQgPSBp bnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgcmFuZ2UtPnN0YXJ0LCBlbmQpOwo+PiAtCQkJY29u dGludWU7Cj4+IC0JCX0KPj4gLQkJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKPj4gLQo+PiAtCQly ZXQgPSBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKG9iaiwKPj4gLQkJCQkJICAgICBJOTE1X0dFTV9P QkpFQ1RfVU5CSU5EX0FDVElWRSB8Cj4+IC0JCQkJCSAgICAgSTkxNV9HRU1fT0JKRUNUX1VOQklO RF9CQVJSSUVSKTsKPj4gLQkJaWYgKHJldCA9PSAwKQo+PiAtCQkJcmV0ID0gX19pOTE1X2dlbV9v YmplY3RfcHV0X3BhZ2VzKG9iaik7Cj4+IC0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPj4g LQkJaWYgKHJldCkKPj4gLQkJCXJldHVybiByZXQ7Cj4+ICsJaWYgKGN1cnJlbnQtPmZsYWdzICYg UEZfRVhJVElORykKPj4gKwkJcmV0dXJuIHRydWU7Cj4+ICAgCj4+IC0JCXNwaW5fbG9jaygmbW4t PmxvY2spOwo+PiAtCj4+IC0JCS8qCj4+IC0JCSAqIEFzIHdlIGRvIG5vdCAoeWV0KSBwcm90ZWN0 IHRoZSBtbXUgZnJvbSBjb25jdXJyZW50IGluc2VydGlvbgo+PiAtCQkgKiBvdmVyIHRoaXMgcmFu Z2UsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoaXMgc2VhcmNoIHdpbGwKPj4gLQkJICog dGVybWluYXRlIGdpdmVuIGEgcGF0aG9sb2dpYyB3b3JrbG9hZC4KPj4gLQkJICovCj4+IC0JCWl0 ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBl bmQpOwo+PiAtCX0KPj4gLQlzcGluX3VubG9jaygmbW4tPmxvY2spOwo+PiAtCj4+IC0JcmV0dXJu IHJldDsKPj4gKwkvKiB3ZSB3aWxsIHVuYmluZCBvbiBuZXh0IHN1Ym1pc3Npb24sIHN0aWxsIGhh dmUgdXNlcnB0ciBwaW5zICovCj4+ICsJciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uob2Jq LT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+PiArCQkJCSAgICAgIE1BWF9TQ0hFRFVMRV9USU1F T1VUKTsKPj4gKwlpZiAociA8PSAwKQo+PiArCQlkcm1fZXJyKCZpOTE1LT5kcm0sICIoJWxkKSBm YWlsZWQgdG8gd2FpdCBmb3IgaWRsZVxuIiwgcik7Cj4+ICAgCj4+ICsJcmV0dXJuIHRydWU7Cj4+ ICAgfQo+PiAgIAo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGk5MTVf Z2VtX3VzZXJwdHJfbm90aWZpZXIgPSB7Cj4+IC0JLmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQgPSB1 c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQsCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9pbnRlcnZhbF9ub3RpZmllcl9vcHMgaTkxNV9nZW1fdXNlcnB0cl9ub3RpZmllcl9vcHMg PSB7Cj4+ICsJLmludmFsaWRhdGUgPSBpOTE1X2dlbV91c2VycHRyX2ludmFsaWRhdGUsCj4+ICAg fTsKPj4gICAKPj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKgo+PiAtaTkxNV9t bXVfbm90aWZpZXJfY3JlYXRlKHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW0pCj4+IC17Cj4+IC0J c3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbjsKPj4gLQo+PiAtCW1uID0ga21hbGxvYyhzaXpl b2YoKm1uKSwgR0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKG1uID09IE5VTEwpCj4+IC0JCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+PiAtCj4+IC0Jc3Bpbl9sb2NrX2luaXQoJm1uLT5sb2NrKTsKPj4g LQltbi0+bW4ub3BzID0gJmk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXI7Cj4+IC0JbW4tPm9iamVj dHMgPSBSQl9ST09UX0NBQ0hFRDsKPj4gLQltbi0+bW0gPSBtbTsKPj4gLQo+PiAtCXJldHVybiBt bjsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIHZvaWQKPj4gLWk5MTVfZ2VtX3VzZXJwdHJfcmVsZWFz ZV9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+IC17Cj4+ IC0Jc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4+IC0KPj4gLQltbyA9IGZldGNoX2FuZF96 ZXJvKCZvYmotPnVzZXJwdHIubW11X29iamVjdCk7Cj4+IC0JaWYgKCFtbykKPj4gLQkJcmV0dXJu Owo+PiAtCj4+IC0Jc3Bpbl9sb2NrKCZtby0+bW4tPmxvY2spOwo+PiAtCWRlbF9vYmplY3QobW8p Owo+PiAtCXNwaW5fdW5sb2NrKCZtby0+bW4tPmxvY2spOwo+PiAtCWtmcmVlKG1vKTsKPj4gLX0K Pj4gLQo+PiAtc3RhdGljIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciAqCj4+IC1pOTE1X21tdV9u b3RpZmllcl9maW5kKHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW0pCj4+IC17Cj4+IC0Jc3RydWN0 IGk5MTVfbW11X25vdGlmaWVyICptbiwgKm9sZDsKPj4gLQlpbnQgZXJyOwo+PiAtCj4+IC0JbW4g PSBSRUFEX09OQ0UobW0tPm1uKTsKPj4gLQlpZiAobGlrZWx5KG1uKSkKPj4gLQkJcmV0dXJuIG1u Owo+PiAtCj4+IC0JbW4gPSBpOTE1X21tdV9ub3RpZmllcl9jcmVhdGUobW0pOwo+PiAtCWlmIChJ U19FUlIobW4pKQo+PiAtCQlyZXR1cm4gbW47Cj4+IC0KPj4gLQllcnIgPSBtbXVfbm90aWZpZXJf cmVnaXN0ZXIoJm1uLT5tbiwgbW0tPm1tKTsKPj4gLQlpZiAoZXJyKSB7Cj4+IC0JCWtmcmVlKG1u KTsKPj4gLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPj4gLQl9Cj4+IC0KPj4gLQlvbGQgPSBjbXB4 Y2hnKCZtbS0+bW4sIE5VTEwsIG1uKTsKPj4gLQlpZiAob2xkKSB7Cj4+IC0JCW1tdV9ub3RpZmll cl91bnJlZ2lzdGVyKCZtbi0+bW4sIG1tLT5tbSk7Cj4+IC0JCWtmcmVlKG1uKTsKPj4gLQkJbW4g PSBvbGQ7Cj4+IC0JfQo+PiAtCj4+IC0JcmV0dXJuIG1uOwo+PiAtfQo+PiAtCj4+ICAgc3RhdGlj IGludAo+PiAgIGk5MTVfZ2VtX3VzZXJwdHJfaW5pdF9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAgewo+PiAtCXN0cnVjdCBpOTE1X21tdV9ub3RpZmll ciAqbW47Cj4+IC0Jc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4+IC0KPj4gLQlpZiAoR0VN X1dBUk5fT04oIW9iai0+dXNlcnB0ci5tbSkpCj4+IC0JCXJldHVybiAtRUlOVkFMOwo+PiAtCj4+ IC0JbW4gPSBpOTE1X21tdV9ub3RpZmllcl9maW5kKG9iai0+dXNlcnB0ci5tbSk7Cj4+IC0JaWYg KElTX0VSUihtbikpCj4+IC0JCXJldHVybiBQVFJfRVJSKG1uKTsKPj4gLQo+PiAtCW1vID0ga3ph bGxvYyhzaXplb2YoKm1vKSwgR0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKCFtbykKPj4gLQkJcmV0dXJu IC1FTk9NRU07Cj4+IC0KPj4gLQltby0+bW4gPSBtbjsKPj4gLQltby0+b2JqID0gb2JqOwo+PiAt CW1vLT5pdC5zdGFydCA9IG9iai0+dXNlcnB0ci5wdHI7Cj4+IC0JbW8tPml0Lmxhc3QgPSBvYmot PnVzZXJwdHIucHRyICsgb2JqLT5iYXNlLnNpemUgLSAxOwo+PiAtCVJCX0NMRUFSX05PREUoJm1v LT5pdC5yYik7Cj4+IC0KPj4gLQlvYmotPnVzZXJwdHIubW11X29iamVjdCA9IG1vOwo+PiAtCXJl dHVybiAwOwo+PiAtfQo+PiAtCj4+IC1zdGF0aWMgdm9pZAo+PiAtaTkxNV9tbXVfbm90aWZpZXJf ZnJlZShzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uLAo+PiAtCQkgICAgICAgc3RydWN0IG1t X3N0cnVjdCAqbW0pCj4+IC17Cj4+IC0JaWYgKG1uID09IE5VTEwpCj4+IC0JCXJldHVybjsKPj4g LQo+PiAtCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCZtbi0+bW4sIG1tKTsKPj4gLQlrZnJlZSht bik7Cj4+IC19Cj4+IC0KPj4gLQo+PiAtc3RhdGljIHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqCj4+ IC1fX2k5MTVfbW1fc3RydWN0X2ZpbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0 cnVjdCBtbV9zdHJ1Y3QgKnJlYWwpCj4+IC17Cj4+IC0Jc3RydWN0IGk5MTVfbW1fc3RydWN0ICpp dCwgKm1tID0gTlVMTDsKPj4gLQo+PiAtCXJjdV9yZWFkX2xvY2soKTsKPj4gLQloYXNoX2Zvcl9l YWNoX3Bvc3NpYmxlX3JjdShpOTE1LT5tbV9zdHJ1Y3RzLAo+PiAtCQkJCSAgIGl0LCBub2RlLAo+ PiAtCQkJCSAgICh1bnNpZ25lZCBsb25nKXJlYWwpCj4+IC0JCWlmIChpdC0+bW0gPT0gcmVhbCAm JiBrcmVmX2dldF91bmxlc3NfemVybygmaXQtPmtyZWYpKSB7Cj4+IC0JCQltbSA9IGl0Owo+PiAt CQkJYnJlYWs7Cj4+IC0JCX0KPj4gLQlyY3VfcmVhZF91bmxvY2soKTsKPj4gLQo+PiAtCXJldHVy biBtbTsKPj4gKwlyZXR1cm4gbW11X2ludGVydmFsX25vdGlmaWVyX2luc2VydCgmb2JqLT51c2Vy cHRyLm5vdGlmaWVyLCBjdXJyZW50LT5tbSwKPj4gKwkJCQkJICAgIG9iai0+dXNlcnB0ci5wdHIs IG9iai0+YmFzZS5zaXplLAo+PiArCQkJCQkgICAgJmk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXJf b3BzKTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW50Cj4+IC1pOTE1X2dlbV91c2VycHRyX2lu aXRfX21tX3N0cnVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiArc3RhdGlj IHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJfZHJvcF9yZWYoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPj4gLQlzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1t LCAqbmV3Owo+PiAtCWludCByZXQgPSAwOwo+PiAtCj4+IC0JLyogRHVyaW5nIHJlbGVhc2Ugb2Yg dGhlIEdFTSBvYmplY3Qgd2UgaG9sZCB0aGUgc3RydWN0X211dGV4LiBUaGlzCj4+IC0JICogcHJl Y2x1ZGVzIHVzIGZyb20gY2FsbGluZyBtbXB1dCgpIGF0IHRoYXQgdGltZSBhcyB0aGF0IG1heSBi ZQo+PiAtCSAqIHRoZSBsYXN0IHJlZmVyZW5jZSBhbmQgc28gY2FsbCBleGl0X21tYXAoKS4gZXhp dF9tbWFwKCkgd2lsbAo+PiAtCSAqIGF0dGVtcHQgdG8gcmVhcCB0aGUgdm1hLCBhbmQgaWYgd2Ug d2VyZSBob2xkaW5nIGEgR1RUIG1tYXAKPj4gLQkgKiB3b3VsZCB0aGVuIGNhbGwgZHJtX2dlbV92 bV9jbG9zZSgpIGFuZCBhdHRlbXB0IHRvIHJlYWNxdWlyZQo+PiAtCSAqIHRoZSBzdHJ1Y3QgbXV0 ZXguIFNvIGluIG9yZGVyIHRvIGF2b2lkIHRoYXQgcmVjdXJzaW9uLCB3ZSBoYXZlCj4+IC0JICog dG8gZGVmZXIgcmVsZWFzaW5nIHRoZSBtbSByZWZlcmVuY2UgdW50aWwgYWZ0ZXIgd2UgZHJvcCB0 aGUKPj4gLQkgKiBzdHJ1Y3RfbXV0ZXgsIGkuZS4gd2UgbmVlZCB0byBzY2hlZHVsZSBhIHdvcmtl ciB0byBkbyB0aGUgY2xlYW4KPj4gLQkgKiB1cC4KPj4gLQkgKi8KPj4gLQltbSA9IF9faTkxNV9t bV9zdHJ1Y3RfZmluZChpOTE1LCBjdXJyZW50LT5tbSk7Cj4+IC0JaWYgKG1tKQo+PiAtCQlnb3Rv IG91dDsKPj4gKwlzdHJ1Y3QgcGFnZSAqKnB2ZWMgPSBOVUxMOwo+PiAgIAo+PiAtCW5ldyA9IGtt YWxsb2Moc2l6ZW9mKCptbSksIEdGUF9LRVJORUwpOwo+PiAtCWlmICghbmV3KQo+PiAtCQlyZXR1 cm4gLUVOT01FTTsKPj4gLQo+PiAtCWtyZWZfaW5pdCgmbmV3LT5rcmVmKTsKPj4gLQluZXctPmk5 MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+PiAtCW5ldy0+bW0gPSBjdXJyZW50LT5tbTsK Pj4gLQluZXctPm1uID0gTlVMTDsKPj4gLQo+PiAtCXNwaW5fbG9jaygmaTkxNS0+bW1fbG9jayk7 Cj4+IC0JbW0gPSBfX2k5MTVfbW1fc3RydWN0X2ZpbmQoaTkxNSwgY3VycmVudC0+bW0pOwo+PiAt CWlmICghbW0pIHsKPj4gLQkJaGFzaF9hZGRfcmN1KGk5MTUtPm1tX3N0cnVjdHMsCj4+IC0JCQkg ICAgICZuZXctPm5vZGUsCj4+IC0JCQkgICAgICh1bnNpZ25lZCBsb25nKW5ldy0+bW0pOwo+PiAt CQltbWdyYWIoY3VycmVudC0+bW0pOwo+PiAtCQltbSA9IG5ldzsKPj4gKwlzcGluX2xvY2soJmk5 MTUtPm1tLm5vdGlmaWVyX2xvY2spOwo+PiArCWlmICghLS1vYmotPnVzZXJwdHIucGFnZV9yZWYp IHsKPj4gKwkJcHZlYyA9IG9iai0+dXNlcnB0ci5wdmVjOwo+PiArCQlvYmotPnVzZXJwdHIucHZl YyA9IE5VTEw7Cj4+ICAgCX0KPj4gLQlzcGluX3VubG9jaygmaTkxNS0+bW1fbG9jayk7Cj4+IC0J aWYgKG1tICE9IG5ldykKPj4gLQkJa2ZyZWUobmV3KTsKPj4gKwlHRU1fQlVHX09OKG9iai0+dXNl cnB0ci5wYWdlX3JlZiA8IDApOwo+PiArCXNwaW5fdW5sb2NrKCZpOTE1LT5tbS5ub3RpZmllcl9s b2NrKTsKPj4gICAKPj4gLW91dDoKPj4gLQlvYmotPnVzZXJwdHIubW0gPSBtbTsKPj4gLQlyZXR1 cm4gcmV0Owo+PiAtfQo+PiAtCj4+IC1zdGF0aWMgdm9pZAo+PiAtX19pOTE1X21tX3N0cnVjdF9m cmVlX193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAtewo+PiAtCXN0cnVjdCBp OTE1X21tX3N0cnVjdCAqbW0gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCptbSksIHdvcmsu d29yayk7Cj4+IC0KPj4gLQlpOTE1X21tdV9ub3RpZmllcl9mcmVlKG1tLT5tbiwgbW0tPm1tKTsK Pj4gLQltbWRyb3AobW0tPm1tKTsKPj4gLQlrZnJlZShtbSk7Cj4+IC19Cj4+IC0KPj4gLXN0YXRp YyB2b2lkCj4+IC1fX2k5MTVfbW1fc3RydWN0X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4+IC17 Cj4+IC0Jc3RydWN0IGk5MTVfbW1fc3RydWN0ICptbSA9IGNvbnRhaW5lcl9vZihrcmVmLCB0eXBl b2YoKm1tKSwga3JlZik7Cj4+IC0KPj4gLQlzcGluX2xvY2soJm1tLT5pOTE1LT5tbV9sb2NrKTsK Pj4gLQloYXNoX2RlbF9yY3UoJm1tLT5ub2RlKTsKPj4gLQlzcGluX3VubG9jaygmbW0tPmk5MTUt Pm1tX2xvY2spOwo+PiAtCj4+IC0JSU5JVF9SQ1VfV09SSygmbW0tPndvcmssIF9faTkxNV9tbV9z dHJ1Y3RfZnJlZV9fd29ya2VyKTsKPj4gLQlxdWV1ZV9yY3Vfd29yayhzeXN0ZW1fd3EsICZtbS0+ d29yayk7Cj4+IC19Cj4+IC0KPj4gLXN0YXRpYyB2b2lkCj4+IC1pOTE1X2dlbV91c2VycHRyX3Jl bGVhc2VfX21tX3N0cnVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAtewo+ PiAtCWlmIChvYmotPnVzZXJwdHIubW0gPT0gTlVMTCkKPj4gLQkJcmV0dXJuOwo+PiArCWlmIChw dmVjKSB7Cj4+ICsJCWNvbnN0IHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzID0gb2JqLT5iYXNlLnNp emUgPj4gUEFHRV9TSElGVDsKPj4gICAKPj4gLQlrcmVmX3B1dCgmb2JqLT51c2VycHRyLm1tLT5r cmVmLCBfX2k5MTVfbW1fc3RydWN0X2ZyZWUpOwo+PiAtCW9iai0+dXNlcnB0ci5tbSA9IE5VTEw7 Cj4+ICsJCXVucGluX3VzZXJfcGFnZXMocHZlYywgbnVtX3BhZ2VzKTsKPj4gKwkJa2ZyZWUocHZl Yyk7Cj4gVGhpcyBvbmUgbmVlZHMgdG8gYmUga3ZmcmVlIGFwcGFyZW50bHksIHBlciByZXZpZXcg ZnJvbSBwcmV2aW91cyByb3VuZC4KPiBDYW4geW91IHBscyBkbyBhIGZpeHVwIHBhdGNoPyBJJ20g YWxyZWFkeSBtZXJnaW5nLgo+Cj4gRm9yIHRoZSBvdGhlciBwZW5kaW5nIHJldmlldyBjb21tZW50 cyBhbmQgc3VnZ2VzdGlvbnMgSSB0aGluayBpdCdzIGJldHRlcgo+IGlmIHdlIGhhbmRsZSB0aGlz IGluIGEgc2VwYXJhdGUgcGF0Y2ggc2VyaWVzIHRvIGhpZ2hsaWdodCBhbGwgdGhlCj4gcXVlc3Rp b25zLCBhbmQgaWRlYWxseSB3aXRoIGFtZGdwdSBmb2xrcyBpbnZvbHZlZCB0b28uCj4gLURhbmll bAoKU291bmRzIGZhaXIgZW5vdWdoLAoKU28gd2l0aCB0aGUga2ZyZWUtPmt2ZnJlZSBmaXhlZCwK ClJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5p bnRlbC5jb20+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg== 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.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,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 AE287C433DB for ; Wed, 24 Mar 2021 11:34:44 +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 2D82A61A02 for ; Wed, 24 Mar 2021 11:34:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2D82A61A02 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=shipmail.org 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 BCFAF6E0C1; Wed, 24 Mar 2021 11:34:43 +0000 (UTC) Received: from ste-pvt-msa1.bahnhof.se (ste-pvt-msa1.bahnhof.se [213.80.101.70]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF9346E0C1; Wed, 24 Mar 2021 11:34:42 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTP id 36D8D3F72D; Wed, 24 Mar 2021 12:34:41 +0100 (CET) Authentication-Results: ste-pvt-msa1.bahnhof.se; dkim=pass (1024-bit key; unprotected) header.d=shipmail.org header.i=@shipmail.org header.b=WUUGkmdm; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at bahnhof.se Received: from ste-pvt-msa1.bahnhof.se ([127.0.0.1]) by localhost (ste-pvt-msa1.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Ve40-3OK-85F; Wed, 24 Mar 2021 12:34:39 +0100 (CET) Received: by ste-pvt-msa1.bahnhof.se (Postfix) with ESMTPA id AB9783F5E5; Wed, 24 Mar 2021 12:34:37 +0100 (CET) Received: from [192.168.0.209] (unknown [192.198.151.43]) by mail1.shipmail.org (Postfix) with ESMTPSA id 2EFB43605CC; Wed, 24 Mar 2021 12:34:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=shipmail.org; s=mail; t=1616585676; bh=fGzZpec8XuHsb9/fYc6Izz47d34CZSClQhlvbyPiKqQ=; h=Subject:To:Cc:References:From:Date:In-Reply-To:From; b=WUUGkmdmvN/juOFBXMxv1wQS1w93Lz85h+h+8L8OBKeOpXnDwZThmF/yYYQnkwkQ9 2nWyg3DWUV236WFgRXcgIxJEdcBOGCD8yNjSMqeXNCCsBCMwuBLmjIwUlM1+V06yUx d1iUzRacXjsGKpFWzgs8mbpGOCmWnVjmnXDZ87AI= To: Daniel Vetter , Maarten Lankhorst References: <20210323155059.628690-1-maarten.lankhorst@linux.intel.com> <20210323155059.628690-17-maarten.lankhorst@linux.intel.com> From: =?UTF-8?Q?Thomas_Hellstr=c3=b6m_=28Intel=29?= Message-ID: Date: Wed, 24 Mar 2021 12:34:34 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v9 16/70] drm/i915: Fix userptr so we do not have to worry about obj->mm.lock, v7. 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: Dave Airlie , intel-gfx@lists.freedesktop.org, dri-devel@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" Ck9uIDMvMjQvMjEgMTI6MjggUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gVHVlLCBNYXIg MjMsIDIwMjEgYXQgMDQ6NTA6MDVQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+ IEluc3RlYWQgb2YgZG9pbmcgd2hhdCB3ZSBkbyBjdXJyZW50bHksIHdoaWNoIHdpbGwgbmV2ZXIg d29yayB3aXRoCj4+IFBST1ZFX0xPQ0tJTkcsIGRvIHRoZSBzYW1lIGFzIEFNRCBkb2VzLCBhbmQg c29tZXRoaW5nIHNpbWlsYXIgdG8KPj4gcmVsb2NhdGlvbiBzbG93cGF0aC4gV2hlbiBhbGwgbG9j a3MgYXJlIGRyb3BwZWQsIHdlIGFjcXVpcmUgdGhlCj4+IHBhZ2VzIGZvciBwaW5uaW5nLiBXaGVu IHRoZSBsb2NrcyBhcmUgdGFrZW4sIHdlIHRyYW5zZmVyIHRob3NlCj4+IHBhZ2VzIGluIC5nZXRf cGFnZXMoKSB0byB0aGUgYm8uIEFzIGEgZmluYWwgY2hlY2sgYmVmb3JlIGluc3RhbGxpbmcKPj4g dGhlIGZlbmNlcywgd2UgZW5zdXJlIHRoYXQgdGhlIG1tdSBub3RpZmllciB3YXMgbm90IGNhbGxl ZDsgaWYgaXQgaXMsCj4+IHdlIHJldHVybiAtRUFHQUlOIHRvIHVzZXJzcGFjZSB0byBzaWduYWwg aXQgaGFzIHRvIHN0YXJ0IG92ZXIuCj4+Cj4+IENoYW5nZXMgc2luY2UgdjE6Cj4+IC0gVW5iaW5k aW5nIGlzIGRvbmUgaW4gc3VibWl0X2luaXQgb25seS4gc3VibWl0X2JlZ2luKCkgcmVtb3ZlZC4K Pj4gLSBNTVVfTk9URklFUiAtPiBNTVVfTk9USUZJRVIKPj4gQ2hhbmdlcyBzaW5jZSB2MjoKPj4g LSBNYWtlIGk5MTUtPm1tLm5vdGlmaWVyIGEgc3BpbmxvY2suCj4+IENoYW5nZXMgc2luY2UgdjM6 Cj4+IC0gQWRkIFdBUk5fT04gaWYgdGhlcmUgYXJlIGFueSBwYWdlIHJlZmVyZW5jZXMgbGVmdCwg c2hvdWxkIGhhdmUgYmVlbiAwLgo+PiAtIFJldHVybiAwIG9uIHN1Y2Nlc3MgaW4gc3VibWl0X2lu aXQoKSwgYnVnIGZyb20gc3BpbmxvY2sgY29udmVyc2lvbi4KPj4gLSBSZWxlYXNlIHB2ZWMgb3V0 c2lkZSBvZiBub3RpZmllcl9sb2NrIChUaG9tYXMpLgo+PiBDaGFuZ2VzIHNpbmNlIHY0Ogo+PiAt IE1lbnRpb24gd2h5IHdlJ3JlIGNsZWFyaW5nIGViLT5baSArIDFdLnZtYSBpbiB0aGUgY29kZS4g KFRob21hcykKPj4gLSBBY3R1YWxseSBjaGVjayBhbGwgaW52YWxpZGF0aW9ucyBpbiBlYl9tb3Zl X3RvX2dwdS4gKFRob21hcykKPj4gLSBEbyBub3Qgd2FpdCB3aGVuIHByb2Nlc3MgaXMgZXhpdGlu ZyB0byBmaXggZ2VtX2N0eF9wZXJzaXN0ZW5jZS51c2VycHRyLgo+PiBDaGFuZ2VzIHNpbmNlIHY1 Ogo+PiAtIENsYXJpZnkgd2h5IGNoZWNrIG9uIFBGX0VYSVRJTkcgaXMgKHRlbXBvcmFyaWx5KSBy ZXF1aXJlZC4KPj4gQ2hhbmdlcyBzaW5jZSB2NjoKPj4gLSBFbnN1cmUgdXNlcnB0ciB2YWxpZGl0 eSBpcyBjaGVja2VkIGluIHNldF9kb21haW4gdGhyb3VnaCBhIHNwZWNpYWwgcGF0aC4KPj4KPj4g U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KPj4gQWNrZWQtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+ Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kb21haW4uYyAg ICB8ICAxOCArLQo+PiAgIC4uLi9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIu YyAgICB8IDEwMSArKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2Jq ZWN0LmggICAgfCAgMzggKy0KPj4gICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmpl Y3RfdHlwZXMuaCAgfCAgMTAgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9n ZW1fcGFnZXMuYyAgICAgfCAgIDIgKy0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fdXNlcnB0ci5jICAgfCA3OTYgKysrKysrLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA5ICstCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgICAgIHwgICA1ICstCj4+ICAgOCBm aWxlcyBjaGFuZ2VkLCAzOTUgaW5zZXJ0aW9ucygrKSwgNTg0IGRlbGV0aW9ucygtKQo+Pgo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2RvbWFpbi5jCj4+IGluZGV4IDJmNDk4 MGJmNzQyZS4uNzZjYjlmNWM2NmFhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fZG9tYWluLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX2RvbWFpbi5jCj4+IEBAIC00NjgsMTQgKzQ2OCwyOCBAQCBpOTE1X2dlbV9zZXRf ZG9tYWluX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4+ICAgCWlm ICghb2JqKQo+PiAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4+ICAgCj4+ICsJaWYgKGk5MTVfZ2VtX29i amVjdF9pc191c2VycHRyKG9iaikpIHsKPj4gKwkJLyoKPj4gKwkJICogVHJ5IHRvIGdyYWIgdXNl cnB0ciBwYWdlcywgaXJpcyB1c2VzIHNldF9kb21haW4gdG8gY2hlY2sKPj4gKwkJICogdXNlcnB0 ciB2YWxpZGl0eQo+PiArCQkgKi8KPj4gKwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJf dmFsaWRhdGUob2JqKTsKPj4gKwkJaWYgKCFlcnIpCj4+ICsJCQllcnIgPSBpOTE1X2dlbV9vYmpl Y3Rfd2FpdChvYmosCj4+ICsJCQkJCQkgICBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4+ICsJ CQkJCQkgICBJOTE1X1dBSVRfUFJJT1JJVFkgfAo+PiArCQkJCQkJICAgKHdyaXRlX2RvbWFpbiA/ IEk5MTVfV0FJVF9BTEwgOiAwKSwKPj4gKwkJCQkJCSAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsK Pj4gKwkJZ290byBvdXQ7Cj4+ICsJfQo+PiArCj4+ICAgCS8qCj4+ICAgCSAqIFByb3h5IG9iamVj dHMgZG8gbm90IGNvbnRyb2wgYWNjZXNzIHRvIHRoZSBiYWNraW5nIHN0b3JhZ2UsIGVyZ28KPj4g ICAJICogdGhleSBjYW5ub3QgYmUgdXNlZCBhcyBhIG1lYW5zIHRvIG1hbmlwdWxhdGUgdGhlIGNh Y2hlIGRvbWFpbgo+PiAgIAkgKiB0cmFja2luZyBmb3IgdGhhdCBiYWNraW5nIHN0b3JhZ2UuIFRo ZSBwcm94eSBvYmplY3QgaXMgYWx3YXlzCj4+ICAgCSAqIGNvbnNpZGVyZWQgdG8gYmUgb3V0c2lk ZSBvZiBhbnkgY2FjaGUgZG9tYWluLgo+PiAgIAkgKi8KPj4gLQlpZiAoaTkxNV9nZW1fb2JqZWN0 X2lzX3Byb3h5KG9iaikgJiYKPj4gLQkgICAgIWk5MTVfZ2VtX29iamVjdF9pc191c2VycHRyKG9i aikpIHsKPj4gKwlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX3Byb3h5KG9iaikpIHsKPj4gICAJCWVy ciA9IC1FTlhJTzsKPj4gICAJCWdvdG8gb3V0Owo+PiAgIAl9Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBpbmRleCA3OTVjNjhmY2M2ZWQu LmI1Y2E5ZWI1MzU2NSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4+IEBAIC01MywxNCArNTMsMTYgQEAgZW51bSB7Cj4+ICAgLyog X19FWEVDX09CSkVDVF9OT19SRVNFUlZFIGlzIEJJVCgzMSksIGRlZmluZWQgaW4gaTkxNV92bWEu aCAqLwo+PiAgICNkZWZpbmUgX19FWEVDX09CSkVDVF9IQVNfUElOCQlCSVQoMzApCj4+ICAgI2Rl ZmluZSBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRQkJQklUKDI5KQo+PiAtI2RlZmluZSBfX0VYRUNf T0JKRUNUX05FRURTX01BUAkJQklUKDI4KQo+PiAtI2RlZmluZSBfX0VYRUNfT0JKRUNUX05FRURT X0JJQVMJQklUKDI3KQo+PiAtI2RlZmluZSBfX0VYRUNfT0JKRUNUX0lOVEVSTkFMX0ZMQUdTCSh+ MHUgPDwgMjcpIC8qIGFsbCBvZiB0aGUgYWJvdmUgKyAqLwo+PiArI2RlZmluZSBfX0VYRUNfT0JK RUNUX1VTRVJQVFJfSU5JVAlCSVQoMjgpCj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfTkVFRFNf TUFQCQlCSVQoMjcpCj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfTkVFRFNfQklBUwlCSVQoMjYp Cj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfSU5URVJOQUxfRkxBR1MJKH4wdSA8PCAyNikgLyog YWxsIG9mIHRoZSBhYm92ZSArICovCj4+ICAgI2RlZmluZSBfX0VYRUNfT0JKRUNUX1JFU0VSVkVE IChfX0VYRUNfT0JKRUNUX0hBU19QSU4gfCBfX0VYRUNfT0JKRUNUX0hBU19GRU5DRSkKPj4gICAK Pj4gICAjZGVmaW5lIF9fRVhFQ19IQVNfUkVMT0MJQklUKDMxKQo+PiAgICNkZWZpbmUgX19FWEVD X0VOR0lORV9QSU5ORUQJQklUKDMwKQo+PiAtI2RlZmluZSBfX0VYRUNfSU5URVJOQUxfRkxBR1MJ KH4wdSA8PCAzMCkKPj4gKyNkZWZpbmUgX19FWEVDX1VTRVJQVFJfVVNFRAlCSVQoMjkpCj4+ICsj ZGVmaW5lIF9fRVhFQ19JTlRFUk5BTF9GTEFHUwkofjB1IDw8IDI5KQo+PiAgICNkZWZpbmUgVVBE QVRFCQkJUElOX09GRlNFVF9GSVhFRAo+PiAgIAo+PiAgICNkZWZpbmUgQkFUQ0hfT0ZGU0VUX0JJ QVMgKDI1NioxMDI0KQo+PiBAQCAtODcxLDYgKzg3MywyNiBAQCBzdGF0aWMgaW50IGViX2xvb2t1 cF92bWFzKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+PiAgIAkJfQo+PiAgIAo+PiAgIAkJ ZWJfYWRkX3ZtYShlYiwgaSwgYmF0Y2gsIHZtYSk7Cj4+ICsKPj4gKwkJaWYgKGk5MTVfZ2VtX29i amVjdF9pc191c2VycHRyKHZtYS0+b2JqKSkgewo+PiArCQkJZXJyID0gaTkxNV9nZW1fb2JqZWN0 X3VzZXJwdHJfc3VibWl0X2luaXQodm1hLT5vYmopOwo+PiArCQkJaWYgKGVycikgewo+PiArCQkJ CWlmIChpICsgMSA8IGViLT5idWZmZXJfY291bnQpIHsKPj4gKwkJCQkJLyoKPj4gKwkJCQkJICog RXhlY2J1ZmZlciBjb2RlIGV4cGVjdHMgbGFzdCB2bWEgZW50cnkgdG8gYmUgTlVMTCwKPj4gKwkJ CQkJICogc2luY2Ugd2UgYWxyZWFkeSBpbml0aWFsaXplZCB0aGlzIGVudHJ5LAo+PiArCQkJCQkg KiBzZXQgdGhlIG5leHQgdmFsdWUgdG8gTlVMTCBvciB3ZSBtZXNzIHVwCj4+ICsJCQkJCSAqIGNs ZWFudXAgaGFuZGxpbmcuCj4+ICsJCQkJCSAqLwo+PiArCQkJCQllYi0+dm1hW2kgKyAxXS52bWEg PSBOVUxMOwo+PiArCQkJCX0KPj4gKwo+PiArCQkJCXJldHVybiBlcnI7Cj4+ICsJCQl9Cj4+ICsK Pj4gKwkJCWViLT52bWFbaV0uZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9VU0VSUFRSX0lOSVQ7Cj4+ ICsJCQllYi0+YXJncy0+ZmxhZ3MgfD0gX19FWEVDX1VTRVJQVFJfVVNFRDsKPj4gKwkJfQo+PiAg IAl9Cj4+ICAgCj4+ICAgCWlmICh1bmxpa2VseShlYi0+YmF0Y2gtPmZsYWdzICYgRVhFQ19PQkpF Q1RfV1JJVEUpKSB7Cj4+IEBAIC05NzIsNyArOTk0LDcgQEAgZWJfZ2V0X3ZtYShjb25zdCBzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyICplYiwgdW5zaWduZWQgbG9uZyBoYW5kbGUpCj4+ICAgCX0KPj4g ICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCBlYl9yZWxlYXNlX3ZtYXMoc3RydWN0IGk5MTVfZXhl Y2J1ZmZlciAqZWIsIGJvb2wgZmluYWwpCj4+ICtzdGF0aWMgdm9pZCBlYl9yZWxlYXNlX3ZtYXMo c3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wgZmluYWwsIGJvb2wgcmVsZWFzZV91c2Vy cHRyKQo+PiAgIHsKPj4gICAJY29uc3QgdW5zaWduZWQgaW50IGNvdW50ID0gZWItPmJ1ZmZlcl9j b3VudDsKPj4gICAJdW5zaWduZWQgaW50IGk7Cj4+IEBAIC05ODYsNiArMTAwOCwxMSBAQCBzdGF0 aWMgdm9pZCBlYl9yZWxlYXNlX3ZtYXMoc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsIGJvb2wg ZmluYWwpCj4+ICAgCj4+ICAgCQllYl91bnJlc2VydmVfdm1hKGV2KTsKPj4gICAKPj4gKwkJaWYg KHJlbGVhc2VfdXNlcnB0ciAmJiBldi0+ZmxhZ3MgJiBfX0VYRUNfT0JKRUNUX1VTRVJQVFJfSU5J VCkgewo+PiArCQkJZXYtPmZsYWdzICY9IH5fX0VYRUNfT0JKRUNUX1VTRVJQVFJfSU5JVDsKPj4g KwkJCWk5MTVfZ2VtX29iamVjdF91c2VycHRyX3N1Ym1pdF9maW5pKHZtYS0+b2JqKTsKPj4gKwkJ fQo+PiArCj4+ICAgCQlpZiAoZmluYWwpCj4+ICAgCQkJaTkxNV92bWFfcHV0KHZtYSk7Cj4+ICAg CX0KPj4gQEAgLTE5MTYsNiArMTk0MywzMSBAQCBzdGF0aWMgaW50IGViX3ByZWZhdWx0X3JlbG9j YXRpb25zKGNvbnN0IHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+PiAgIAlyZXR1cm4gMDsK Pj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgaW50IGViX3JlaW5pdF91c2VycHRyKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXIgKmViKQo+PiArewo+PiArCWNvbnN0IHVuc2lnbmVkIGludCBjb3VudCA9IGVi LT5idWZmZXJfY291bnQ7Cj4+ICsJdW5zaWduZWQgaW50IGk7Cj4+ICsJaW50IHJldDsKPj4gKwo+ PiArCWlmIChsaWtlbHkoIShlYi0+YXJncy0+ZmxhZ3MgJiBfX0VYRUNfVVNFUlBUUl9VU0VEKSkp Cj4+ICsJCXJldHVybiAwOwo+PiArCj4+ICsJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK Pj4gKwkJc3RydWN0IGViX3ZtYSAqZXYgPSAmZWItPnZtYVtpXTsKPj4gKwo+PiArCQlpZiAoIWk5 MTVfZ2VtX29iamVjdF9pc191c2VycHRyKGV2LT52bWEtPm9iaikpCj4+ICsJCQljb250aW51ZTsK Pj4gKwo+PiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfdXNlcnB0cl9zdWJtaXRfaW5pdChldi0+ dm1hLT5vYmopOwo+PiArCQlpZiAocmV0KQo+PiArCQkJcmV0dXJuIHJldDsKPj4gKwo+PiArCQll di0+ZmxhZ3MgfD0gX19FWEVDX09CSkVDVF9VU0VSUFRSX0lOSVQ7Cj4+ICsJfQo+PiArCj4+ICsJ cmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRl X3BhcnNlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+ICAgCQkJCQkgICBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPj4gICB7Cj4+IEBAIC0xOTMwLDcgKzE5ODIsNyBAQCBzdGF0 aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3BhcnNlX3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1 ZmZlciAqZWIsCj4+ICAgCX0KPj4gICAKPj4gICAJLyogV2UgbWF5IHByb2Nlc3MgYW5vdGhlciBl eGVjYnVmZmVyIGR1cmluZyB0aGUgdW5sb2NrLi4uICovCj4+IC0JZWJfcmVsZWFzZV92bWFzKGVi LCBmYWxzZSk7Cj4+ICsJZWJfcmVsZWFzZV92bWFzKGViLCBmYWxzZSwgdHJ1ZSk7Cj4+ICAgCWk5 MTVfZ2VtX3d3X2N0eF9maW5pKCZlYi0+d3cpOwo+PiAgIAo+PiAgIAlpZiAocnEpIHsKPj4gQEAg LTE5NzEsMTAgKzIwMjMsOCBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3BhcnNl X3Nsb3coc3RydWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+ICAgCQllcnIgPSAwOwo+PiAgIAl9 Cj4+ICAgCj4+IC0jaWZkZWYgQ09ORklHX01NVV9OT1RJRklFUgo+PiAgIAlpZiAoIWVycikKPj4g LQkJZmx1c2hfd29ya3F1ZXVlKGViLT5pOTE1LT5tbS51c2VycHRyX3dxKTsKPj4gLSNlbmRpZgo+ PiArCQllcnIgPSBlYl9yZWluaXRfdXNlcnB0cihlYik7Cj4+ICAgCj4+ICAgZXJyX3JlbG9jazoK Pj4gICAJaTkxNV9nZW1fd3dfY3R4X2luaXQoJmViLT53dywgdHJ1ZSk7Cj4+IEBAIC0yMDM2LDcg KzIwODYsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGViX3JlbG9jYXRlX3BhcnNlX3Nsb3coc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlciAqZWIsCj4+ICAgCj4+ICAgZXJyOgo+PiAgIAlpZiAoZXJyID09 IC1FREVBRExLKSB7Cj4+IC0JCWViX3JlbGVhc2Vfdm1hcyhlYiwgZmFsc2UpOwo+PiArCQllYl9y ZWxlYXNlX3ZtYXMoZWIsIGZhbHNlLCBmYWxzZSk7Cj4+ICAgCQllcnIgPSBpOTE1X2dlbV93d19j dHhfYmFja29mZigmZWItPnd3KTsKPj4gICAJCWlmICghZXJyKQo+PiAgIAkJCWdvdG8gcmVwZWF0 X3ZhbGlkYXRlOwo+PiBAQCAtMjEzMyw3ICsyMTgzLDcgQEAgc3RhdGljIGludCBlYl9yZWxvY2F0 ZV9wYXJzZShzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyICplYikKPj4gICAKPj4gICBlcnI6Cj4+ICAg CWlmIChlcnIgPT0gLUVERUFETEspIHsKPj4gLQkJZWJfcmVsZWFzZV92bWFzKGViLCBmYWxzZSk7 Cj4+ICsJCWViX3JlbGVhc2Vfdm1hcyhlYiwgZmFsc2UsIGZhbHNlKTsKPj4gICAJCWVyciA9IGk5 MTVfZ2VtX3d3X2N0eF9iYWNrb2ZmKCZlYi0+d3cpOwo+PiAgIAkJaWYgKCFlcnIpCj4+ICAgCQkJ Z290byByZXRyeTsKPj4gQEAgLTIyMDgsNiArMjI1OCwzMCBAQCBzdGF0aWMgaW50IGViX21vdmVf dG9fZ3B1KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViKQo+PiAgIAkJCQkJCSAgICAgIGZsYWdz IHwgX19FWEVDX09CSkVDVF9OT19SRVNFUlZFKTsKPj4gICAJfQo+PiAgIAo+PiArI2lmZGVmIENP TkZJR19NTVVfTk9USUZJRVIKPj4gKwlpZiAoIWVyciAmJiAoZWItPmFyZ3MtPmZsYWdzICYgX19F WEVDX1VTRVJQVFJfVVNFRCkpIHsKPj4gKwkJc3Bpbl9sb2NrKCZlYi0+aTkxNS0+bW0ubm90aWZp ZXJfbG9jayk7Cj4+ICsKPj4gKwkJLyoKPj4gKwkJICogY291bnQgaXMgYWx3YXlzIGF0IGxlYXN0 IDEsIG90aGVyd2lzZSBfX0VYRUNfVVNFUlBUUl9VU0VECj4+ICsJCSAqIGNvdWxkIG5vdCBoYXZl IGJlZW4gc2V0Cj4+ICsJCSAqLwo+PiArCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ PiArCQkJc3RydWN0IGViX3ZtYSAqZXYgPSAmZWItPnZtYVtpXTsKPj4gKwkJCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPSBldi0+dm1hLT5vYmo7Cj4+ICsKPj4gKwkJCWlmICghaTkx NV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIob2JqKSkKPj4gKwkJCQljb250aW51ZTsKPj4gKwo+PiAr CQkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJfc3VibWl0X2RvbmUob2JqKTsKPj4gKwkJ CWlmIChlcnIpCj4+ICsJCQkJYnJlYWs7Cj4+ICsJCX0KPj4gKwo+PiArCQlzcGluX3VubG9jaygm ZWItPmk5MTUtPm1tLm5vdGlmaWVyX2xvY2spOwo+PiArCX0KPj4gKyNlbmRpZgo+PiArCj4+ICAg CWlmICh1bmxpa2VseShlcnIpKQo+PiAgIAkJZ290byBlcnJfc2tpcDsKPj4gICAKPj4gQEAgLTMz NTIsNyArMzQyNiw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPj4gICAKPj4gICAJZXJyID0gZWJfbG9va3VwX3ZtYXMoJmViKTsKPj4gICAJaWYgKGVy cikgewo+PiAtCQllYl9yZWxlYXNlX3ZtYXMoJmViLCB0cnVlKTsKPj4gKwkJZWJfcmVsZWFzZV92 bWFzKCZlYiwgdHJ1ZSwgdHJ1ZSk7Cj4+ICAgCQlnb3RvIGVycl9lbmdpbmU7Cj4+ICAgCX0KPj4g ICAKPj4gQEAgLTM0MjQsNiArMzQ5OCw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPj4gICAKPj4gICAJdHJhY2VfaTkxNV9yZXF1ZXN0X3F1ZXVlKGVi LnJlcXVlc3QsIGViLmJhdGNoX2ZsYWdzKTsKPj4gICAJZXJyID0gZWJfc3VibWl0KCZlYiwgYmF0 Y2gpOwo+PiArCj4+ICAgZXJyX3JlcXVlc3Q6Cj4+ICAgCWk5MTVfcmVxdWVzdF9nZXQoZWIucmVx dWVzdCk7Cj4+ICAgCWVyciA9IGViX3JlcXVlc3RfYWRkKCZlYiwgZXJyKTsKPj4gQEAgLTM0NDQs NyArMzUxOSw3IEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPj4gICAJaTkxNV9yZXF1ZXN0X3B1dChlYi5yZXF1ZXN0KTsKPj4gICAKPj4gICBlcnJfdm1h Ogo+PiAtCWViX3JlbGVhc2Vfdm1hcygmZWIsIHRydWUpOwo+PiArCWViX3JlbGVhc2Vfdm1hcygm ZWIsIHRydWUsIHRydWUpOwo+PiAgIAlpZiAoZWIudHJhbXBvbGluZSkKPj4gICAJCWk5MTVfdm1h X3VucGluKGViLnRyYW1wb2xpbmUpOwo+PiAgIAlXQVJOX09OKGVyciA9PSAtRURFQURMSyk7Cj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKPj4gaW5kZXggNjk1 MDlkYmQwMWM3Li5iNWFmOWM0NDBhYzUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0LmgKPj4gQEAgLTU5LDYgKzU5LDcgQEAgaTkxNV9nZW1fb2JqZWN0 X2NyZWF0ZV9zaG1lbV9mcm9tX2RhdGEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+ ICAgCQkJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLCByZXNvdXJjZV9zaXplX3Qgc2l6ZSk7Cj4+ ICAgCj4+ICAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyBpOTE1 X2dlbV9zaG1lbV9vcHM7Cj4+ICsKPj4gICB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2Vf c2htZW0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPj4gICAJCQkJICAgICBzdHJ1 Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+PiAgIAkJCQkgICAgIGJvb2wgbmVlZHNfY2xmbHVzaCk7Cj4+ IEBAIC0yNzgsMTIgKzI3OSw2IEBAIGk5MTVfZ2VtX29iamVjdF9uZXZlcl9tbWFwKGNvbnN0IHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAgCXJldHVybiBpOTE1X2dlbV9vYmpl Y3RfdHlwZV9oYXMob2JqLCBJOTE1X0dFTV9PQkpFQ1RfTk9fTU1BUCk7Cj4+ICAgfQo+PiAgIAo+ PiAtc3RhdGljIGlubGluZSBib29sCj4+IC1pOTE1X2dlbV9vYmplY3RfbmVlZHNfYXN5bmNfY2Fu Y2VsKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+IC17Cj4+IC0JcmV0 dXJuIGk5MTVfZ2VtX29iamVjdF90eXBlX2hhcyhvYmosIEk5MTVfR0VNX09CSkVDVF9BU1lOQ19D QU5DRUwpOwo+PiAtfQo+PiAtCj4+ICAgc3RhdGljIGlubGluZSBib29sCj4+ICAgaTkxNV9nZW1f b2JqZWN0X2lzX2ZyYW1lYnVmZmVyKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmopCj4+ICAgewo+PiBAQCAtNTczLDE2ICs1NjgsNiBAQCB2b2lkIF9faTkxNV9nZW1fb2JqZWN0 X2ZsdXNoX2Zyb250YnVmZmVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAg dm9pZCBfX2k5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlX2Zyb250YnVmZmVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICAgCQkJCQkgICAgICBlbnVtIGZiX29wX29yaWdpbiBv cmlnaW4pOwo+PiAgIAo+PiAtc3RhdGljIGlubGluZSBib29sCj4+IC1pOTE1X2dlbV9vYmplY3Rf aXNfdXNlcnB0cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAtewo+PiAtI2lm ZGVmIENPTkZJR19NTVVfTk9USUZJRVIKPj4gLQlyZXR1cm4gb2JqLT51c2VycHRyLm1tOwo+PiAt I2Vsc2UKPj4gLQlyZXR1cm4gZmFsc2U7Cj4+IC0jZW5kaWYKPj4gLX0KPj4gLQo+PiAgIHN0YXRp YyBpbmxpbmUgdm9pZAo+PiAgIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9mcm9udGJ1ZmZlcihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+PiAgIAkJCQkgIGVudW0gZmJfb3Bfb3JpZ2lu IG9yaWdpbikKPj4gQEAgLTYwMyw0ICs1ODgsMjUgQEAgaW50IGk5MTVfZ2VtX29iamVjdF9yZWFk X2Zyb21fcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1NjQgb2Zmc2V0LAo+ PiAgIAo+PiAgIGJvb2wgaTkxNV9nZW1fb2JqZWN0X2lzX3NobWVtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+PiAgIAo+PiArI2lmZGVmIENPTkZJR19NTVVfTk9USUZJ RVIKPj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+PiAraTkxNV9nZW1fb2JqZWN0X2lzX3VzZXJwdHIo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4gK3sKPj4gKwlyZXR1cm4gb2JqLT51 c2VycHRyLm5vdGlmaWVyLm1tOwo+PiArfQo+PiArCj4+ICtpbnQgaTkxNV9nZW1fb2JqZWN0X3Vz ZXJwdHJfc3VibWl0X2luaXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4+ICtp bnQgaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJfc3VibWl0X2RvbmUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaik7Cj4+ICt2b2lkIGk5MTVfZ2VtX29iamVjdF91c2VycHRyX3N1Ym1pdF9m aW5pKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+PiAraW50IGk5MTVfZ2VtX29i amVjdF91c2VycHRyX3ZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ PiArI2Vsc2UKPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9vYmplY3RfaXNfdXNlcnB0 cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IHJldHVybiBmYWxzZTsgfQo+PiAr Cj4+ICtzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9vYmplY3RfdXNlcnB0cl9zdWJtaXRfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IEdFTV9CVUdfT04oMSk7IHJldHVy biAtRU5PREVWOyB9Cj4+ICtzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9vYmplY3RfdXNlcnB0 cl9zdWJtaXRfZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IEdFTV9CVUdf T04oMSk7IHJldHVybiAtRU5PREVWOyB9Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1f b2JqZWN0X3VzZXJwdHJfc3VibWl0X2Zpbmkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikgeyBHRU1fQlVHX09OKDEpOyB9Cj4+ICtzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9vYmpl Y3RfdXNlcnB0cl92YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7IEdF TV9CVUdfT04oMSk7IHJldHVybiAtRU5PREVWOyB9Cj4+ICsKPj4gKyNlbmRpZgo+PiArCj4+ICAg I2VuZGlmCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f b2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0 X3R5cGVzLmgKPj4gaW5kZXggNDE0MzIyNjE5NzgxLi40YzBhMzQyMzE2MjMgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKPj4g QEAgLTcsNiArNyw4IEBACj4+ICAgI2lmbmRlZiBfX0k5MTVfR0VNX09CSkVDVF9UWVBFU19IX18K Pj4gICAjZGVmaW5lIF9fSTkxNV9HRU1fT0JKRUNUX1RZUEVTX0hfXwo+PiAgIAo+PiArI2luY2x1 ZGUgPGxpbnV4L21tdV9ub3RpZmllci5oPgo+PiArCj4+ICAgI2luY2x1ZGUgPGRybS9kcm1fZ2Vt Lmg+Cj4+ICAgI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4+ICAgCj4+IEBAIC0zNCw3 ICszNiw2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyB7Cj4+ICAgI2RlZmluZSBJ OTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJMRQlCSVQoMikKPj4gICAjZGVmaW5lIEk5MTVfR0VN X09CSkVDVF9JU19QUk9YWQlCSVQoMykKPj4gICAjZGVmaW5lIEk5MTVfR0VNX09CSkVDVF9OT19N TUFQCQlCSVQoNCkKPj4gLSNkZWZpbmUgSTkxNV9HRU1fT0JKRUNUX0FTWU5DX0NBTkNFTAlCSVQo NSkKPj4gICAKPj4gICAJLyogSW50ZXJmYWNlIGJldHdlZW4gdGhlIEdFTSBvYmplY3QgYW5kIGl0 cyBiYWNraW5nIHN0b3JhZ2UuCj4+ICAgCSAqIGdldF9wYWdlcygpIGlzIGNhbGxlZCBvbmNlIHBy aW9yIHRvIHRoZSB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgc2V0Cj4+IEBAIC0yOTksMTAgKzMwMCwx MSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4+ICAgI2lmZGVmIENPTkZJR19NTVVf Tk9USUZJRVIKPj4gICAJCXN0cnVjdCBpOTE1X2dlbV91c2VycHRyIHsKPj4gICAJCQl1aW50cHRy X3QgcHRyOwo+PiArCQkJdW5zaWduZWQgbG9uZyBub3RpZmllcl9zZXE7Cj4+ICAgCj4+IC0JCQlz dHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+PiAtCQkJc3RydWN0IGk5MTVfbW11X29iamVjdCAq bW11X29iamVjdDsKPj4gLQkJCXN0cnVjdCB3b3JrX3N0cnVjdCAqd29yazsKPj4gKwkJCXN0cnVj dCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgbm90aWZpZXI7Cj4+ICsJCQlzdHJ1Y3QgcGFnZSAqKnB2 ZWM7Cj4+ICsJCQlpbnQgcGFnZV9yZWY7Cj4+ICAgCQl9IHVzZXJwdHI7Cj4+ICAgI2VuZGlmCj4+ ICAgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFn ZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jCj4+IGluZGV4 IGJmNjFiODhhMjExMy4uZTdkNzY1MDA3MmM1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fcGFnZXMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fcGFnZXMuYwo+PiBAQCAtMjI2LDcgKzIyNiw3IEBAIGludCBfX2k5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPj4g ICAJICogZ2V0X3BhZ2VzIGJhY2tlbmRzIHdlIHNob3VsZCBiZSBiZXR0ZXIgYWJsZSB0byBoYW5k bGUgdGhlCj4+ICAgCSAqIGNhbmNlbGxhdGlvbiBvZiB0aGUgYXN5bmMgdGFzayBpbiBhIG1vcmUg dW5pZm9ybSBtYW5uZXIuCj4+ICAgCSAqLwo+PiAtCWlmICghcGFnZXMgJiYgIWk5MTVfZ2VtX29i amVjdF9uZWVkc19hc3luY19jYW5jZWwob2JqKSkKPj4gKwlpZiAoIXBhZ2VzKQo+PiAgIAkJcGFn ZXMgPSBFUlJfUFRSKC1FSU5WQUwpOwo+PiAgIAo+PiAgIAlpZiAoIUlTX0VSUihwYWdlcykpCj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+PiBpbmRleCBi NDY2YWIyZGVmNGQuLjFlNDJmYmM2ODY5NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCj4+IEBAIC0yLDEwICsyLDM5IEBACj4+ICAgICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAo+PiAgICAqCj4+ICAgICogQ29weXJpZ2h0IMKpIDIw MTItMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiArICoKPj4gKyAgKiBCYXNlZCBvbiBhbWRncHVf bW4sIHdoaWNoIGJlYXJzIHRoZSBmb2xsb3dpbmcgbm90aWNlOgo+PiArICoKPj4gKyAqIENvcHly aWdodCAyMDE0IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KPj4gKyAqIEFsbCBSaWdodHMg UmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPj4gKyAq ICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcKPj4gKyAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKPj4gKyAqIGRpc3RyaWJ1dGUsIHN1YiBsaWNl bnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KPj4gKyAqIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0bwo+PiArICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiArICoKPj4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPj4gKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVO VCBTSEFMTAo+PiArICogVEhFIENPUFlSSUdIVCBIT0xERVJTLCBBVVRIT1JTIEFORC9PUiBJVFMg U1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+PiArICogREFNQUdFUyBPUiBPVEhF UiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCj4+ ICsgKiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFCj4+ICsgKiBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhF IFNPRlRXQVJFLgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlCj4+ICsgKiBuZXh0IHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cwo+PiArICogb2YgdGhlIFNvZnR3YXJlLgo+PiArICoKPj4gKyAqLwo+PiArLyoKPj4gKyAqIEF1 dGhvcnM6Cj4+ICsgKiAgICBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5j b20+Cj4+ICAgICovCj4+ICAgCj4+ICAgI2luY2x1ZGUgPGxpbnV4L21tdV9jb250ZXh0Lmg+Cj4+ IC0jaW5jbHVkZSA8bGludXgvbW11X25vdGlmaWVyLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L21l bXBvbGljeS5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9zd2FwLmg+Cj4+ICAgI2luY2x1ZGUgPGxp bnV4L3NjaGVkL21tLmg+Cj4+IEBAIC0xNSwzNzMgKzQ0LDEyMSBAQAo+PiAgICNpbmNsdWRlICJp OTE1X2dlbV9vYmplY3QuaCIKPj4gICAjaW5jbHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgo+PiAg IAo+PiAtI2lmIGRlZmluZWQoQ09ORklHX01NVV9OT1RJRklFUikKPj4gLQo+PiAtc3RydWN0IGk5 MTVfbW1fc3RydWN0IHsKPj4gLQlzdHJ1Y3QgbW1fc3RydWN0ICptbTsKPj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNTsKPj4gLQlzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uOwo+ PiAtCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4+IC0Jc3RydWN0IGtyZWYga3JlZjsKPj4gLQlz dHJ1Y3QgcmN1X3dvcmsgd29yazsKPj4gLX07Cj4+IC0KPj4gLSNpbmNsdWRlIDxsaW51eC9pbnRl cnZhbF90cmVlLmg+Cj4+IC0KPj4gLXN0cnVjdCBpOTE1X21tdV9ub3RpZmllciB7Cj4+IC0Jc3Bp bmxvY2tfdCBsb2NrOwo+PiAtCXN0cnVjdCBobGlzdF9ub2RlIG5vZGU7Cj4+IC0Jc3RydWN0IG1t dV9ub3RpZmllciBtbjsKPj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgb2JqZWN0czsKPj4gLQlz dHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+PiAtfTsKPj4gLQo+PiAtc3RydWN0IGk5MTVfbW11 X29iamVjdCB7Cj4+IC0Jc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbjsKPj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+PiAtCXN0cnVjdCBpbnRlcnZhbF90cmVlX25vZGUg aXQ7Cj4+IC19Owo+PiArI2lmZGVmIENPTkZJR19NTVVfTk9USUZJRVIKPj4gICAKPj4gLXN0YXRp YyB2b2lkIGFkZF9vYmplY3Qoc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW8pCj4+ICsvKioKPj4g KyAqIGk5MTVfZ2VtX3VzZXJwdHJfaW52YWxpZGF0ZSAtIGNhbGxiYWNrIHRvIG5vdGlmeSBhYm91 dCBtbSBjaGFuZ2UKPj4gKyAqCj4+ICsgKiBAbW5pOiB0aGUgcmFuZ2UgKG1tKSBpcyBhYm91dCB0 byB1cGRhdGUKPj4gKyAqIEByYW5nZTogZGV0YWlscyBvbiB0aGUgaW52YWxpZGF0aW9uCj4+ICsg KiBAY3VyX3NlcTogVmFsdWUgdG8gcGFzcyB0byBtbXVfaW50ZXJ2YWxfc2V0X3NlcSgpCj4+ICsg Kgo+PiArICogQmxvY2sgZm9yIG9wZXJhdGlvbnMgb24gQk9zIHRvIGZpbmlzaCBhbmQgbWFyayBw YWdlcyBhcyBhY2Nlc3NlZCBhbmQKPj4gKyAqIHBvdGVudGlhbGx5IGRpcnR5Lgo+PiArICovCj4+ ICtzdGF0aWMgYm9vbCBpOTE1X2dlbV91c2VycHRyX2ludmFsaWRhdGUoc3RydWN0IG1tdV9pbnRl cnZhbF9ub3RpZmllciAqbW5pLAo+PiArCQkJCQljb25zdCBzdHJ1Y3QgbW11X25vdGlmaWVyX3Jh bmdlICpyYW5nZSwKPj4gKwkJCQkJdW5zaWduZWQgbG9uZyBjdXJfc2VxKQo+PiAgIHsKPj4gLQlH RU1fQlVHX09OKCFSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIpKTsKPj4gLQlpbnRlcnZhbF90cmVl X2luc2VydCgmbW8tPml0LCAmbW8tPm1uLT5vYmplY3RzKTsKPj4gLX0KPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gY29udGFpbmVyX29mKG1uaSwgc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QsIHVzZXJwdHIubm90aWZpZXIpOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPj4gKwlsb25nIHI7Cj4+ICAgCj4+ IC1zdGF0aWMgdm9pZCBkZWxfb2JqZWN0KHN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vKQo+PiAt ewo+PiAtCWlmIChSQl9FTVBUWV9OT0RFKCZtby0+aXQucmIpKQo+PiAtCQlyZXR1cm47Cj4+ICsJ aWYgKCFtbXVfbm90aWZpZXJfcmFuZ2VfYmxvY2thYmxlKHJhbmdlKSkKPj4gKwkJcmV0dXJuIGZh bHNlOwo+PiAgIAo+PiAtCWludGVydmFsX3RyZWVfcmVtb3ZlKCZtby0+aXQsICZtby0+bW4tPm9i amVjdHMpOwo+PiAtCVJCX0NMRUFSX05PREUoJm1vLT5pdC5yYik7Cj4+IC19Cj4+ICsJc3Bpbl9s b2NrKCZpOTE1LT5tbS5ub3RpZmllcl9sb2NrKTsKPj4gICAKPj4gLXN0YXRpYyB2b2lkCj4+IC1f X2k5MTVfZ2VtX3VzZXJwdHJfc2V0X2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLCBib29sIHZhbHVlKQo+PiAtewo+PiAtCXN0cnVjdCBpOTE1X21tdV9vYmplY3QgKm1vID0g b2JqLT51c2VycHRyLm1tdV9vYmplY3Q7Cj4+ICsJbW11X2ludGVydmFsX3NldF9zZXEobW5pLCBj dXJfc2VxKTsKPj4gKwo+PiArCXNwaW5fdW5sb2NrKCZpOTE1LT5tbS5ub3RpZmllcl9sb2NrKTsK Pj4gICAKPj4gICAJLyoKPj4gLQkgKiBEdXJpbmcgbW1faW52YWxpZGF0ZV9yYW5nZSB3ZSBuZWVk IHRvIGNhbmNlbCBhbnkgdXNlcnB0ciB0aGF0Cj4+IC0JICogb3ZlcmxhcHMgdGhlIHJhbmdlIGJl aW5nIGludmFsaWRhdGVkLiBEb2luZyBzbyByZXF1aXJlcyB0aGUKPj4gLQkgKiBzdHJ1Y3RfbXV0 ZXgsIGFuZCB0aGF0IHJpc2tzIHJlY3Vyc2lvbi4gSW4gb3JkZXIgdG8gY2F1c2UKPj4gLQkgKiBy ZWN1cnNpb24sIHRoZSB1c2VyIG11c3QgYWxpYXMgdGhlIHVzZXJwdHIgYWRkcmVzcyBzcGFjZSB3 aXRoCj4+IC0JICogYSBHVFQgbW1hcHBpbmcgKHBvc3NpYmxlIHdpdGggYSBNQVBfRklYRUQpIC0g dGhlbiB3aGVuIHdlIGhhdmUKPj4gLQkgKiB0byBpbnZhbGlkYXRlIHRoYXQgbW1hcGluZywgbW1f aW52YWxpZGF0ZV9yYW5nZSBpcyBjYWxsZWQgd2l0aAo+PiAtCSAqIHRoZSB1c2VycHRyIGFkZHJl c3MgKmFuZCogdGhlIHN0cnVjdF9tdXRleCBoZWxkLiAgVG8gcHJldmVudCB0aGF0Cj4+IC0JICog d2Ugc2V0IGEgZmxhZyB1bmRlciB0aGUgaTkxNV9tbXVfbm90aWZpZXIgc3BpbmxvY2sgdG8gaW5k aWNhdGUKPj4gLQkgKiB3aGV0aGVyIHRoaXMgb2JqZWN0IGlzIHZhbGlkLgo+PiArCSAqIFdlIGRv bid0IHdhaXQgd2hlbiB0aGUgcHJvY2VzcyBpcyBleGl0aW5nLiBUaGlzIGlzIHZhbGlkCj4+ICsJ ICogYmVjYXVzZSB0aGUgb2JqZWN0IHdpbGwgYmUgY2xlYW5lZCB1cCBhbnl3YXkuCj4+ICsJICoK Pj4gKwkgKiBUaGlzIGlzIGFsc28gdGVtcG9yYXJpbHkgcmVxdWlyZWQgYXMgYSBoYWNrLCBiZWNh dXNlIHdlCj4+ICsJICogY2Fubm90IGN1cnJlbnRseSBmb3JjZSBub24tY29uc2lzdGVudCBiYXRj aCBidWZmZXJzIHRvIHByZWVtcHQKPj4gKwkgKiBhbmQgcmVzY2hlZHVsZSBieSB3YWl0aW5nIG9u IGl0LCBoYW5naW5nIHByb2Nlc3NlcyBvbiBleGl0Lgo+PiAgIAkgKi8KPj4gLQlpZiAoIW1vKQo+ PiAtCQlyZXR1cm47Cj4+IC0KPj4gLQlzcGluX2xvY2soJm1vLT5tbi0+bG9jayk7Cj4+IC0JaWYg KHZhbHVlKQo+PiAtCQlhZGRfb2JqZWN0KG1vKTsKPj4gLQllbHNlCj4+IC0JCWRlbF9vYmplY3Qo bW8pOwo+PiAtCXNwaW5fdW5sb2NrKCZtby0+bW4tPmxvY2spOwo+PiAtfQo+PiAtCj4+IC1zdGF0 aWMgaW50Cj4+IC11c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoc3RydWN0IG1tdV9u b3RpZmllciAqX21uLAo+PiAtCQkJCSAgY29uc3Qgc3RydWN0IG1tdV9ub3RpZmllcl9yYW5nZSAq cmFuZ2UpCj4+IC17Cj4+IC0Jc3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbiA9Cj4+IC0JCWNv bnRhaW5lcl9vZihfbW4sIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciwgbW4pOwo+PiAtCXN0cnVj dCBpbnRlcnZhbF90cmVlX25vZGUgKml0Owo+PiAtCXVuc2lnbmVkIGxvbmcgZW5kOwo+PiAtCWlu dCByZXQgPSAwOwo+PiAtCj4+IC0JaWYgKFJCX0VNUFRZX1JPT1QoJm1uLT5vYmplY3RzLnJiX3Jv b3QpKQo+PiAtCQlyZXR1cm4gMDsKPj4gLQo+PiAtCS8qIGludGVydmFsIHJhbmdlcyBhcmUgaW5j bHVzaXZlLCBidXQgaW52YWxpZGF0ZSByYW5nZSBpcyBleGNsdXNpdmUgKi8KPj4gLQllbmQgPSBy YW5nZS0+ZW5kIC0gMTsKPj4gLQo+PiAtCXNwaW5fbG9jaygmbW4tPmxvY2spOwo+PiAtCWl0ID0g aW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBlbmQp Owo+PiAtCXdoaWxlIChpdCkgewo+PiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq Owo+PiAtCj4+IC0JCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpIHsK Pj4gLQkJCXJldCA9IC1FQUdBSU47Cj4+IC0JCQlicmVhazsKPj4gLQkJfQo+PiAtCj4+IC0JCS8q Cj4+IC0JCSAqIFRoZSBtbXVfb2JqZWN0IGlzIHJlbGVhc2VkIGxhdGUgd2hlbiBkZXN0cm95aW5n IHRoZQo+PiAtCQkgKiBHRU0gb2JqZWN0IHNvIGl0IGlzIGVudGlyZWx5IHBvc3NpYmxlIHRvIGdh aW4gYQo+PiAtCQkgKiByZWZlcmVuY2Ugb24gYW4gb2JqZWN0IGluIHRoZSBwcm9jZXNzIG9mIGJl aW5nIGZyZWVkCj4+IC0JCSAqIHNpbmNlIG91ciBzZXJpYWxpc2F0aW9uIGlzIHZpYSB0aGUgc3Bp bmxvY2sgYW5kIG5vdAo+PiAtCQkgKiB0aGUgc3RydWN0X211dGV4IC0gYW5kIGNvbnNlcXVlbnRs eSB1c2UgaXQgYWZ0ZXIgaXQKPj4gLQkJICogaXMgZnJlZWQgYW5kIHRoZW4gZG91YmxlIGZyZWUg aXQuIFRvIHByZXZlbnQgdGhhdAo+PiAtCQkgKiB1c2UtYWZ0ZXItZnJlZSB3ZSBvbmx5IGFjcXVp cmUgYSByZWZlcmVuY2Ugb24gdGhlCj4+IC0JCSAqIG9iamVjdCBpZiBpdCBpcyBub3QgaW4gdGhl IHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLgo+PiAtCQkgKi8KPj4gLQkJb2JqID0gY29udGFp bmVyX29mKGl0LCBzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0LCBpdCktPm9iajsKPj4gLQkJaWYgKCFr cmVmX2dldF91bmxlc3NfemVybygmb2JqLT5iYXNlLnJlZmNvdW50KSkgewo+PiAtCQkJaXQgPSBp bnRlcnZhbF90cmVlX2l0ZXJfbmV4dChpdCwgcmFuZ2UtPnN0YXJ0LCBlbmQpOwo+PiAtCQkJY29u dGludWU7Cj4+IC0JCX0KPj4gLQkJc3Bpbl91bmxvY2soJm1uLT5sb2NrKTsKPj4gLQo+PiAtCQly ZXQgPSBpOTE1X2dlbV9vYmplY3RfdW5iaW5kKG9iaiwKPj4gLQkJCQkJICAgICBJOTE1X0dFTV9P QkpFQ1RfVU5CSU5EX0FDVElWRSB8Cj4+IC0JCQkJCSAgICAgSTkxNV9HRU1fT0JKRUNUX1VOQklO RF9CQVJSSUVSKTsKPj4gLQkJaWYgKHJldCA9PSAwKQo+PiAtCQkJcmV0ID0gX19pOTE1X2dlbV9v YmplY3RfcHV0X3BhZ2VzKG9iaik7Cj4+IC0JCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPj4g LQkJaWYgKHJldCkKPj4gLQkJCXJldHVybiByZXQ7Cj4+ICsJaWYgKGN1cnJlbnQtPmZsYWdzICYg UEZfRVhJVElORykKPj4gKwkJcmV0dXJuIHRydWU7Cj4+ICAgCj4+IC0JCXNwaW5fbG9jaygmbW4t PmxvY2spOwo+PiAtCj4+IC0JCS8qCj4+IC0JCSAqIEFzIHdlIGRvIG5vdCAoeWV0KSBwcm90ZWN0 IHRoZSBtbXUgZnJvbSBjb25jdXJyZW50IGluc2VydGlvbgo+PiAtCQkgKiBvdmVyIHRoaXMgcmFu Z2UsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoaXMgc2VhcmNoIHdpbGwKPj4gLQkJICog dGVybWluYXRlIGdpdmVuIGEgcGF0aG9sb2dpYyB3b3JrbG9hZC4KPj4gLQkJICovCj4+IC0JCWl0 ID0gaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0KCZtbi0+b2JqZWN0cywgcmFuZ2UtPnN0YXJ0LCBl bmQpOwo+PiAtCX0KPj4gLQlzcGluX3VubG9jaygmbW4tPmxvY2spOwo+PiAtCj4+IC0JcmV0dXJu IHJldDsKPj4gKwkvKiB3ZSB3aWxsIHVuYmluZCBvbiBuZXh0IHN1Ym1pc3Npb24sIHN0aWxsIGhh dmUgdXNlcnB0ciBwaW5zICovCj4+ICsJciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uob2Jq LT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAo+PiArCQkJCSAgICAgIE1BWF9TQ0hFRFVMRV9USU1F T1VUKTsKPj4gKwlpZiAociA8PSAwKQo+PiArCQlkcm1fZXJyKCZpOTE1LT5kcm0sICIoJWxkKSBm YWlsZWQgdG8gd2FpdCBmb3IgaWRsZVxuIiwgcik7Cj4+ICAgCj4+ICsJcmV0dXJuIHRydWU7Cj4+ ICAgfQo+PiAgIAo+PiAtc3RhdGljIGNvbnN0IHN0cnVjdCBtbXVfbm90aWZpZXJfb3BzIGk5MTVf Z2VtX3VzZXJwdHJfbm90aWZpZXIgPSB7Cj4+IC0JLmludmFsaWRhdGVfcmFuZ2Vfc3RhcnQgPSB1 c2VycHRyX21uX2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQsCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IG1tdV9pbnRlcnZhbF9ub3RpZmllcl9vcHMgaTkxNV9nZW1fdXNlcnB0cl9ub3RpZmllcl9vcHMg PSB7Cj4+ICsJLmludmFsaWRhdGUgPSBpOTE1X2dlbV91c2VycHRyX2ludmFsaWRhdGUsCj4+ICAg fTsKPj4gICAKPj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKgo+PiAtaTkxNV9t bXVfbm90aWZpZXJfY3JlYXRlKHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW0pCj4+IC17Cj4+IC0J c3RydWN0IGk5MTVfbW11X25vdGlmaWVyICptbjsKPj4gLQo+PiAtCW1uID0ga21hbGxvYyhzaXpl b2YoKm1uKSwgR0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKG1uID09IE5VTEwpCj4+IC0JCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+PiAtCj4+IC0Jc3Bpbl9sb2NrX2luaXQoJm1uLT5sb2NrKTsKPj4g LQltbi0+bW4ub3BzID0gJmk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXI7Cj4+IC0JbW4tPm9iamVj dHMgPSBSQl9ST09UX0NBQ0hFRDsKPj4gLQltbi0+bW0gPSBtbTsKPj4gLQo+PiAtCXJldHVybiBt bjsKPj4gLX0KPj4gLQo+PiAtc3RhdGljIHZvaWQKPj4gLWk5MTVfZ2VtX3VzZXJwdHJfcmVsZWFz ZV9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+IC17Cj4+ IC0Jc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4+IC0KPj4gLQltbyA9IGZldGNoX2FuZF96 ZXJvKCZvYmotPnVzZXJwdHIubW11X29iamVjdCk7Cj4+IC0JaWYgKCFtbykKPj4gLQkJcmV0dXJu Owo+PiAtCj4+IC0Jc3Bpbl9sb2NrKCZtby0+bW4tPmxvY2spOwo+PiAtCWRlbF9vYmplY3QobW8p Owo+PiAtCXNwaW5fdW5sb2NrKCZtby0+bW4tPmxvY2spOwo+PiAtCWtmcmVlKG1vKTsKPj4gLX0K Pj4gLQo+PiAtc3RhdGljIHN0cnVjdCBpOTE1X21tdV9ub3RpZmllciAqCj4+IC1pOTE1X21tdV9u b3RpZmllcl9maW5kKHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqbW0pCj4+IC17Cj4+IC0Jc3RydWN0 IGk5MTVfbW11X25vdGlmaWVyICptbiwgKm9sZDsKPj4gLQlpbnQgZXJyOwo+PiAtCj4+IC0JbW4g PSBSRUFEX09OQ0UobW0tPm1uKTsKPj4gLQlpZiAobGlrZWx5KG1uKSkKPj4gLQkJcmV0dXJuIG1u Owo+PiAtCj4+IC0JbW4gPSBpOTE1X21tdV9ub3RpZmllcl9jcmVhdGUobW0pOwo+PiAtCWlmIChJ U19FUlIobW4pKQo+PiAtCQlyZXR1cm4gbW47Cj4+IC0KPj4gLQllcnIgPSBtbXVfbm90aWZpZXJf cmVnaXN0ZXIoJm1uLT5tbiwgbW0tPm1tKTsKPj4gLQlpZiAoZXJyKSB7Cj4+IC0JCWtmcmVlKG1u KTsKPj4gLQkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPj4gLQl9Cj4+IC0KPj4gLQlvbGQgPSBjbXB4 Y2hnKCZtbS0+bW4sIE5VTEwsIG1uKTsKPj4gLQlpZiAob2xkKSB7Cj4+IC0JCW1tdV9ub3RpZmll cl91bnJlZ2lzdGVyKCZtbi0+bW4sIG1tLT5tbSk7Cj4+IC0JCWtmcmVlKG1uKTsKPj4gLQkJbW4g PSBvbGQ7Cj4+IC0JfQo+PiAtCj4+IC0JcmV0dXJuIG1uOwo+PiAtfQo+PiAtCj4+ICAgc3RhdGlj IGludAo+PiAgIGk5MTVfZ2VtX3VzZXJwdHJfaW5pdF9fbW11X25vdGlmaWVyKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ICAgewo+PiAtCXN0cnVjdCBpOTE1X21tdV9ub3RpZmll ciAqbW47Cj4+IC0Jc3RydWN0IGk5MTVfbW11X29iamVjdCAqbW87Cj4+IC0KPj4gLQlpZiAoR0VN X1dBUk5fT04oIW9iai0+dXNlcnB0ci5tbSkpCj4+IC0JCXJldHVybiAtRUlOVkFMOwo+PiAtCj4+ IC0JbW4gPSBpOTE1X21tdV9ub3RpZmllcl9maW5kKG9iai0+dXNlcnB0ci5tbSk7Cj4+IC0JaWYg KElTX0VSUihtbikpCj4+IC0JCXJldHVybiBQVFJfRVJSKG1uKTsKPj4gLQo+PiAtCW1vID0ga3ph bGxvYyhzaXplb2YoKm1vKSwgR0ZQX0tFUk5FTCk7Cj4+IC0JaWYgKCFtbykKPj4gLQkJcmV0dXJu IC1FTk9NRU07Cj4+IC0KPj4gLQltby0+bW4gPSBtbjsKPj4gLQltby0+b2JqID0gb2JqOwo+PiAt CW1vLT5pdC5zdGFydCA9IG9iai0+dXNlcnB0ci5wdHI7Cj4+IC0JbW8tPml0Lmxhc3QgPSBvYmot PnVzZXJwdHIucHRyICsgb2JqLT5iYXNlLnNpemUgLSAxOwo+PiAtCVJCX0NMRUFSX05PREUoJm1v LT5pdC5yYik7Cj4+IC0KPj4gLQlvYmotPnVzZXJwdHIubW11X29iamVjdCA9IG1vOwo+PiAtCXJl dHVybiAwOwo+PiAtfQo+PiAtCj4+IC1zdGF0aWMgdm9pZAo+PiAtaTkxNV9tbXVfbm90aWZpZXJf ZnJlZShzdHJ1Y3QgaTkxNV9tbXVfbm90aWZpZXIgKm1uLAo+PiAtCQkgICAgICAgc3RydWN0IG1t X3N0cnVjdCAqbW0pCj4+IC17Cj4+IC0JaWYgKG1uID09IE5VTEwpCj4+IC0JCXJldHVybjsKPj4g LQo+PiAtCW1tdV9ub3RpZmllcl91bnJlZ2lzdGVyKCZtbi0+bW4sIG1tKTsKPj4gLQlrZnJlZSht bik7Cj4+IC19Cj4+IC0KPj4gLQo+PiAtc3RhdGljIHN0cnVjdCBpOTE1X21tX3N0cnVjdCAqCj4+ IC1fX2k5MTVfbW1fc3RydWN0X2ZpbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0 cnVjdCBtbV9zdHJ1Y3QgKnJlYWwpCj4+IC17Cj4+IC0Jc3RydWN0IGk5MTVfbW1fc3RydWN0ICpp dCwgKm1tID0gTlVMTDsKPj4gLQo+PiAtCXJjdV9yZWFkX2xvY2soKTsKPj4gLQloYXNoX2Zvcl9l YWNoX3Bvc3NpYmxlX3JjdShpOTE1LT5tbV9zdHJ1Y3RzLAo+PiAtCQkJCSAgIGl0LCBub2RlLAo+ PiAtCQkJCSAgICh1bnNpZ25lZCBsb25nKXJlYWwpCj4+IC0JCWlmIChpdC0+bW0gPT0gcmVhbCAm JiBrcmVmX2dldF91bmxlc3NfemVybygmaXQtPmtyZWYpKSB7Cj4+IC0JCQltbSA9IGl0Owo+PiAt CQkJYnJlYWs7Cj4+IC0JCX0KPj4gLQlyY3VfcmVhZF91bmxvY2soKTsKPj4gLQo+PiAtCXJldHVy biBtbTsKPj4gKwlyZXR1cm4gbW11X2ludGVydmFsX25vdGlmaWVyX2luc2VydCgmb2JqLT51c2Vy cHRyLm5vdGlmaWVyLCBjdXJyZW50LT5tbSwKPj4gKwkJCQkJICAgIG9iai0+dXNlcnB0ci5wdHIs IG9iai0+YmFzZS5zaXplLAo+PiArCQkJCQkgICAgJmk5MTVfZ2VtX3VzZXJwdHJfbm90aWZpZXJf b3BzKTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW50Cj4+IC1pOTE1X2dlbV91c2VycHRyX2lu aXRfX21tX3N0cnVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiArc3RhdGlj IHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VzZXJwdHJfZHJvcF9yZWYoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPj4gLQlzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1t LCAqbmV3Owo+PiAtCWludCByZXQgPSAwOwo+PiAtCj4+IC0JLyogRHVyaW5nIHJlbGVhc2Ugb2Yg dGhlIEdFTSBvYmplY3Qgd2UgaG9sZCB0aGUgc3RydWN0X211dGV4LiBUaGlzCj4+IC0JICogcHJl Y2x1ZGVzIHVzIGZyb20gY2FsbGluZyBtbXB1dCgpIGF0IHRoYXQgdGltZSBhcyB0aGF0IG1heSBi ZQo+PiAtCSAqIHRoZSBsYXN0IHJlZmVyZW5jZSBhbmQgc28gY2FsbCBleGl0X21tYXAoKS4gZXhp dF9tbWFwKCkgd2lsbAo+PiAtCSAqIGF0dGVtcHQgdG8gcmVhcCB0aGUgdm1hLCBhbmQgaWYgd2Ug d2VyZSBob2xkaW5nIGEgR1RUIG1tYXAKPj4gLQkgKiB3b3VsZCB0aGVuIGNhbGwgZHJtX2dlbV92 bV9jbG9zZSgpIGFuZCBhdHRlbXB0IHRvIHJlYWNxdWlyZQo+PiAtCSAqIHRoZSBzdHJ1Y3QgbXV0 ZXguIFNvIGluIG9yZGVyIHRvIGF2b2lkIHRoYXQgcmVjdXJzaW9uLCB3ZSBoYXZlCj4+IC0JICog dG8gZGVmZXIgcmVsZWFzaW5nIHRoZSBtbSByZWZlcmVuY2UgdW50aWwgYWZ0ZXIgd2UgZHJvcCB0 aGUKPj4gLQkgKiBzdHJ1Y3RfbXV0ZXgsIGkuZS4gd2UgbmVlZCB0byBzY2hlZHVsZSBhIHdvcmtl ciB0byBkbyB0aGUgY2xlYW4KPj4gLQkgKiB1cC4KPj4gLQkgKi8KPj4gLQltbSA9IF9faTkxNV9t bV9zdHJ1Y3RfZmluZChpOTE1LCBjdXJyZW50LT5tbSk7Cj4+IC0JaWYgKG1tKQo+PiAtCQlnb3Rv IG91dDsKPj4gKwlzdHJ1Y3QgcGFnZSAqKnB2ZWMgPSBOVUxMOwo+PiAgIAo+PiAtCW5ldyA9IGtt YWxsb2Moc2l6ZW9mKCptbSksIEdGUF9LRVJORUwpOwo+PiAtCWlmICghbmV3KQo+PiAtCQlyZXR1 cm4gLUVOT01FTTsKPj4gLQo+PiAtCWtyZWZfaW5pdCgmbmV3LT5rcmVmKTsKPj4gLQluZXctPmk5 MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+PiAtCW5ldy0+bW0gPSBjdXJyZW50LT5tbTsK Pj4gLQluZXctPm1uID0gTlVMTDsKPj4gLQo+PiAtCXNwaW5fbG9jaygmaTkxNS0+bW1fbG9jayk7 Cj4+IC0JbW0gPSBfX2k5MTVfbW1fc3RydWN0X2ZpbmQoaTkxNSwgY3VycmVudC0+bW0pOwo+PiAt CWlmICghbW0pIHsKPj4gLQkJaGFzaF9hZGRfcmN1KGk5MTUtPm1tX3N0cnVjdHMsCj4+IC0JCQkg ICAgICZuZXctPm5vZGUsCj4+IC0JCQkgICAgICh1bnNpZ25lZCBsb25nKW5ldy0+bW0pOwo+PiAt CQltbWdyYWIoY3VycmVudC0+bW0pOwo+PiAtCQltbSA9IG5ldzsKPj4gKwlzcGluX2xvY2soJmk5 MTUtPm1tLm5vdGlmaWVyX2xvY2spOwo+PiArCWlmICghLS1vYmotPnVzZXJwdHIucGFnZV9yZWYp IHsKPj4gKwkJcHZlYyA9IG9iai0+dXNlcnB0ci5wdmVjOwo+PiArCQlvYmotPnVzZXJwdHIucHZl YyA9IE5VTEw7Cj4+ICAgCX0KPj4gLQlzcGluX3VubG9jaygmaTkxNS0+bW1fbG9jayk7Cj4+IC0J aWYgKG1tICE9IG5ldykKPj4gLQkJa2ZyZWUobmV3KTsKPj4gKwlHRU1fQlVHX09OKG9iai0+dXNl cnB0ci5wYWdlX3JlZiA8IDApOwo+PiArCXNwaW5fdW5sb2NrKCZpOTE1LT5tbS5ub3RpZmllcl9s b2NrKTsKPj4gICAKPj4gLW91dDoKPj4gLQlvYmotPnVzZXJwdHIubW0gPSBtbTsKPj4gLQlyZXR1 cm4gcmV0Owo+PiAtfQo+PiAtCj4+IC1zdGF0aWMgdm9pZAo+PiAtX19pOTE1X21tX3N0cnVjdF9m cmVlX193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAtewo+PiAtCXN0cnVjdCBp OTE1X21tX3N0cnVjdCAqbW0gPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCptbSksIHdvcmsu d29yayk7Cj4+IC0KPj4gLQlpOTE1X21tdV9ub3RpZmllcl9mcmVlKG1tLT5tbiwgbW0tPm1tKTsK Pj4gLQltbWRyb3AobW0tPm1tKTsKPj4gLQlrZnJlZShtbSk7Cj4+IC19Cj4+IC0KPj4gLXN0YXRp YyB2b2lkCj4+IC1fX2k5MTVfbW1fc3RydWN0X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCj4+IC17 Cj4+IC0Jc3RydWN0IGk5MTVfbW1fc3RydWN0ICptbSA9IGNvbnRhaW5lcl9vZihrcmVmLCB0eXBl b2YoKm1tKSwga3JlZik7Cj4+IC0KPj4gLQlzcGluX2xvY2soJm1tLT5pOTE1LT5tbV9sb2NrKTsK Pj4gLQloYXNoX2RlbF9yY3UoJm1tLT5ub2RlKTsKPj4gLQlzcGluX3VubG9jaygmbW0tPmk5MTUt Pm1tX2xvY2spOwo+PiAtCj4+IC0JSU5JVF9SQ1VfV09SSygmbW0tPndvcmssIF9faTkxNV9tbV9z dHJ1Y3RfZnJlZV9fd29ya2VyKTsKPj4gLQlxdWV1ZV9yY3Vfd29yayhzeXN0ZW1fd3EsICZtbS0+ d29yayk7Cj4+IC19Cj4+IC0KPj4gLXN0YXRpYyB2b2lkCj4+IC1pOTE1X2dlbV91c2VycHRyX3Jl bGVhc2VfX21tX3N0cnVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+PiAtewo+ PiAtCWlmIChvYmotPnVzZXJwdHIubW0gPT0gTlVMTCkKPj4gLQkJcmV0dXJuOwo+PiArCWlmIChw dmVjKSB7Cj4+ICsJCWNvbnN0IHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzID0gb2JqLT5iYXNlLnNp emUgPj4gUEFHRV9TSElGVDsKPj4gICAKPj4gLQlrcmVmX3B1dCgmb2JqLT51c2VycHRyLm1tLT5r cmVmLCBfX2k5MTVfbW1fc3RydWN0X2ZyZWUpOwo+PiAtCW9iai0+dXNlcnB0ci5tbSA9IE5VTEw7 Cj4+ICsJCXVucGluX3VzZXJfcGFnZXMocHZlYywgbnVtX3BhZ2VzKTsKPj4gKwkJa2ZyZWUocHZl Yyk7Cj4gVGhpcyBvbmUgbmVlZHMgdG8gYmUga3ZmcmVlIGFwcGFyZW50bHksIHBlciByZXZpZXcg ZnJvbSBwcmV2aW91cyByb3VuZC4KPiBDYW4geW91IHBscyBkbyBhIGZpeHVwIHBhdGNoPyBJJ20g YWxyZWFkeSBtZXJnaW5nLgo+Cj4gRm9yIHRoZSBvdGhlciBwZW5kaW5nIHJldmlldyBjb21tZW50 cyBhbmQgc3VnZ2VzdGlvbnMgSSB0aGluayBpdCdzIGJldHRlcgo+IGlmIHdlIGhhbmRsZSB0aGlz IGluIGEgc2VwYXJhdGUgcGF0Y2ggc2VyaWVzIHRvIGhpZ2hsaWdodCBhbGwgdGhlCj4gcXVlc3Rp b25zLCBhbmQgaWRlYWxseSB3aXRoIGFtZGdwdSBmb2xrcyBpbnZvbHZlZCB0b28uCj4gLURhbmll bAoKU291bmRzIGZhaXIgZW5vdWdoLAoKU28gd2l0aCB0aGUga2ZyZWUtPmt2ZnJlZSBmaXhlZCwK ClJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5p bnRlbC5jb20+CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==