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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3A836C46CD4 for ; Wed, 27 Dec 2023 12:13:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5s2rVbZvs8KgdwrJG9CxbbOIx2vtblYeEiodfregviI=; b=uIFI1dNrVxrI4n 6X9OwrqRicUadXryR2jCWQB9MRgKvzYxaqU/9aoT6dA1Zel3ZGM+bZbU4BU3Y4KcHOA3RcaJgQqwd IePUoJgL5X9o8kduLDjoFgxVw+brw1qDcdAGAMsjVGVg0WIxCBN8vUW/FltwIaLNi+MPNOF6XgTav I41yNPlX+ulQNAZyv7YUBS3Od6LybxIckWiwwk46XH050NsY4+OWPDWuRp1uzWn0N+QDb2DxZY5aL AZAbfBLq+OxAvrbNqvPcZ1OvoHKYYD21Iwz+imVP4TV46NCWazdZwpUsQFhgZqfH3RrDG7kol4eET xS5asXCuopNx/+u3qp3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rISmZ-00EbEN-0q; Wed, 27 Dec 2023 12:13:07 +0000 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rISmU-00EbDS-1F for linux-riscv@lists.infradead.org; Wed, 27 Dec 2023 12:13:05 +0000 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-6d77c6437f0so1627736b3a.2 for ; Wed, 27 Dec 2023 04:12:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1703679179; x=1704283979; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=n/DN30HDqLsomyGPLwG/grwpTJEAzqy3yaWtp3nWeu0=; b=jD+1i6s4a7xV9Ehkox8ZGAhj/a0ryFFxAN2z4EZstYQcLXSgokjN/hyRhd9yJmWwHd 9yZ1F8ujhUEjH9/rx9ybOXPOtC9s4e3jOspH/TqhhcYCTNVSbXO9lFNTVAEk0B/d2ykV d3y3SXdB1wKySXwHVNzh9KEpybbSzbsFYr4kaeFG0t+n2FP1UE/CqIzt5JfeHpmKzlK6 EPIk3hhFSnOqYENzjB72NWUQUghqkrmhS6HIo2idtkUaqHtG/iJA0OAhZyGoCnYFxpk+ UcYtqAvY+zEIH6KvbfKYnqAjTDwwbsGkYzMzZ2r76cOLS2brWBFxFoCNVI+JE4SVshaa FNgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1703679179; x=1704283979; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n/DN30HDqLsomyGPLwG/grwpTJEAzqy3yaWtp3nWeu0=; b=g/T4y1Z94hBJLBVTDOzX0NdE7DsUAzo3UC7SXbEV6vD0/wAR5XwoUzIcCSeGKd+yBQ J6xrbl9dNw7KlVqT6Iq38MqXqt1LwlG7AXK9E9wS4Ue1D1LAgb2gENojRQZhRw5TdlsE 6hmkfH+ShOTGrzDaLtsoqm7lqMXTGgKflgkKG2dIncDmZPipVj5x8YbnBT8QBwogsb6M rip7lvgEKDfS3gDehouOXhME8kD7w8jp6E08FVDwHPCaeXM2IqXD/O3UcehBi9CpntWD y660tA/a7w2OiNDSmwmGMGM416Vl/c2cg/WDD9xxThVjoFDl8VbFPBl3+R/eXixHwDXR mP4g== X-Gm-Message-State: AOJu0YzMHJeU2fJX5F7NzE9DWlUgKvf1aqO+IOhWMfU+z9H68g1OLwEW /7/SmAlETHOIb/CHX4owVME= X-Google-Smtp-Source: AGHT+IF7G4Q8eF63VznonHUa2WZujsc2GUgU87lVSJ35yVaUSHM9Go3mrfgZw4GxEIndaHAMgcypWA== X-Received: by 2002:a05:6a00:c87:b0:6d9:f17e:f503 with SMTP id a7-20020a056a000c8700b006d9f17ef503mr1021358pfv.56.1703679179092; Wed, 27 Dec 2023 04:12:59 -0800 (PST) Received: from [0.0.0.0] ([109.166.37.176]) by smtp.gmail.com with ESMTPSA id b2-20020a056a000a8200b006da0576885dsm1001391pfl.181.2023.12.27.04.12.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 27 Dec 2023 04:12:58 -0800 (PST) Message-ID: Date: Wed, 27 Dec 2023 20:12:36 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.13.0 Subject: Re: [v8, 10/10] riscv: vector: allow kernel-mode Vector with preemption To: Andy Chiu , linux-riscv@lists.infradead.org Cc: paul.walmsley@sifive.com, greentime.hu@sifive.com, guoren@linux.alibaba.com, bjorn@kernel.org, charlie@rivosinc.com, ardb@kernel.org, arnd@arndb.de, peterz@infradead.org, tglx@linutronix.de, ebiggers@kernel.org, Albert Ou , Guo Ren , Sami Tolvanen , Han-Kuan Chen , Deepak Gupta , Vincent Chen , Heiko Stuebner , Baoquan He , =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= , =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Xiao Wang , Nathan Chancellor , Jisheng Zhang , Conor Dooley , Joel Granados , palmer@dabbelt.com References: <20231223042914.18599-1-andy.chiu@sifive.com> <20231223042914.18599-11-andy.chiu@sifive.com> From: Song Shuai In-Reply-To: <20231223042914.18599-11-andy.chiu@sifive.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231227_041302_429584_2FCA023D X-CRM114-Status: GOOD ( 45.48 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org CuWcqCAyMDIzLzEyLzIzIDEyOjI5LCBBbmR5IENoaXUg5YaZ6YGTOgo+IEFkZCBrZXJuZWxfdnN0 YXRlIHRvIGtlZXAgdHJhY2sgb2Yga2VybmVsLW1vZGUgVmVjdG9yIHJlZ2lzdGVycyB3aGVuCj4g dHJhcCBpbnRyb2R1Y2VkIGNvbnRleHQgc3dpdGNoIGhhcHBlbnMuIEFsc28sIHByb3ZpZGUgcmlz Y3Zfdl9mbGFncyB0bwo+IGxldCBjb250ZXh0IHNhdmUvcmVzdG9yZSByb3V0aW5lIHRyYWNrIGNv bnRleHQgc3RhdHVzLiBDb250ZXh0IHRyYWNraW5nCj4gaGFwcGVucyB3aGVuZXZlciB0aGUgY29y ZSBzdGFydHMgaXRzIGluLWtlcm5lbCBWZWN0b3IgZXhlY3V0aW9ucy4gQW4KPiBhY3RpdmUgKGRp cnR5KSBrZXJuZWwgdGFzaydzIFYgY29udGV4dHMgd2lsbCBiZSBzYXZlZCB0byBtZW1vcnkgd2hl bmV2ZXIKPiBhIHRyYXAtaW50cm9kdWNlZCBjb250ZXh0IHN3aXRjaCBoYXBwZW5zLiBPciwgd2hl biBhIHNvZnRpcnEsIHdoaWNoCj4gaGFwcGVucyB0byBuZXN0IG9uIHRvcCBvZiBpdCwgdXNlcyBW ZWN0b3IuIENvbnRleHQgcmV0b3JpbmcgaGFwcGVucyB3aGVuCj4gdGhlIGV4ZWN1dGlvbiB0cmFu c2ZlciBiYWNrIHRvIHRoZSBvcmlnaW5hbCBLZXJuZWwgY29udGV4dCB3aGVyZSBpdAo+IGZpcnN0 IGVuYWJsZSBwcmVlbXB0X3YuCj4gCj4gQWxzbywgcHJvdmlkZSBhIGNvbmZpZyBDT05GSUdfUklT Q1ZfSVNBX1ZfUFJFRU1QVElWRSB0byBnaXZlIHVzZXJzIGFuCj4gb3B0aW9uIHRvIGRpc2FibGUg cHJlZW1wdGlibGUga2VybmVsLW1vZGUgVmVjdG9yIGF0IGJ1aWxkIHRpbWUuIFVzZXJzCj4gd2l0 aCBjb25zdHJhaW50IG1lbW9yeSBtYXkgd2FudCB0byBkaXNhYmxlIHRoaXMgY29uZmlnIGFzIHBy ZWVtcHRpYmxlCj4ga2VybmVsLW1vZGUgVmVjdG9yIG5lZWRzIGV4dHJhIHNwYWNlIGZvciB0cmFj a2luZyBvZiBwZXIgdGhyZWFkJ3MKPiBrZXJuZWwtbW9kZSBWIGNvbnRleHQuIE9yLCB1c2VycyBt aWdodCBhcyB3ZWxsIHdhbnQgdG8gZGlzYWJsZSBpdCBpZiBhbGwKPiBrZXJuZWwtbW9kZSBWZWN0 b3IgY29kZSBpcyB0aW1lIHNlbnNpdGl2ZSBhbmQgY2Fubm90IHRvbGVyYXRlIGNvbnRleHQKPiBz d2l0Y2ggb3ZlcmhlYWQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQW5keSBDaGl1IDxhbmR5LmNoaXVA c2lmaXZlLmNvbT4KPiAtLS0KPiBDaGFuZ2Vsb2cgdjg6Cj4gICAtIGZpeCAtV21pc3NpbmctcHJv dG90eXBlcyBmb3IgZnVuY3Rpb25zIHdpdGggYXNtbGlua2FnZQo+IENoYW5nZWxvZyB2NjoKPiAg IC0gcmUtd3JpdGUgcGF0Y2ggdG8gaGFuZGxlIGNvbnRleHQgbmVzdGluZyBmb3Igc29mdGlycXMK PiAgIC0gZHJvcCB0aHJlYWQgZmxhZyBhbmQgdHJhY2sgY29udGV4dCBpbnN0ZWFkIGluIHJpc2N2 X3ZfZmxhZ3MKPiAgIC0gcmVmaW5lIHNvbWUgYXNtIGNvZGUgYW5kIGNvbnN0cmFpbnQgaXQgaW50 byBDIGZ1bmN0aW9ucwo+ICAgLSBwcmVhbGxvY2F0ZSB2IGNvbnRleHQgZm9yIHByZWVtcHRfdgo+ ICAgLSBSZXR1cm4gbm9uLXplcm8gaW4gcmlzY3Zfdl9zdGFydF9rZXJuZWxfY29udGV4dCB3aXRo IG5vbi1wcmVlbXB0aWJsZQo+ICAgICBrZXJuZWwtbW9kZSBWZWN0b3IKPiBDaGFuZ2Vsb2cgdjQ6 Cj4gICAtIGRyb3BwZWQgZnJvbSB2NAo+IENoYW5nZWxvZyB2MzoKPiAgIC0gR3VhcmQgdnN0YXRl X3NhdmUgd2l0aCB7Z2V0LHNldH1fY3B1X3ZlY3Rvcl9jb250ZXh0Cj4gICAtIEFkZCBjb21tZW50 cyBvbiBwcmV2ZW50aW9ucyBvZiBuZXN0aW5nIFYgY29udGV4dHMKPiAgIC0gcmVtb3ZlIHdhcm5p bmdzIGluIGNvbnRleHQgc3dpdGNoIHdoZW4gdHJhcCdzIHJlZyBpcyBub3QgcHJlc3NlbnQgKENv bm9yKQo+ICAgLSByZWZhY3RvciBjb2RlIChCasO2cm4pCj4gQ2hhbmdlbG9nIHYyOgo+ICAgLSBm aXggYnVpbGQgZmFpbCB3aGVuIGNvbXBpbGluZyB3aXRob3V0IFJJU0NWX0lTQV9WIChDb25vcikK PiAgIC0gJ3MvVElGX1JJU0NWX1ZfS01WL1RJRl9SSVNDVl9WX0tFUk5FTF9NT0RFJyBhbmQgYWRk IGNvbW1lbnQgKENvbm9yKQo+ICAgLSBtZXJnZSBLY29uZmlnIHBhdGNoIGludG8gdGhpcyBvaW5l IChDb25vcikuCj4gICAtICdzL0NPTkZJR19SSVNDVl9JU0FfVl9QUkVFTVBUSVZFX0tNVi9DT05G SUdfUklTQ1ZfSVNBX1ZfUFJFRU1QVElWRS8nCj4gICAgIChDb25vcikKPiAgIC0gZml4IHNvbWUg dHlwb3MgKENvbm9yKQo+ICAgLSBlbmNsb3NlIGFzc2VtYmx5IHdpdGggUklTQ1ZfSVNBX1ZfUFJF RU1QVElWRS4KPiAgIC0gY2hhbmdlIHJpc2N2X3ZfdnN0YXRlX2N0cmxfY29uZmlnX2ttdigpIHRv Cj4gICAgIGtlcm5lbF92ZWN0b3JfYWxsb3dfcHJlZW1wdGlvbigpIGZvciBiZXR0ZXIgdW5kZXJz dGFuZGluZy4gKENvbm9yKQo+ICAgLSAncy9yaXNjdl92X2ttdl9wcmVlbXBpdGJsZS9rZXJuZWxf dmVjdG9yX3ByZWVtcHRpYmxlLycKPiAtLS0KPiAgIGFyY2gvcmlzY3YvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgICB8ICAxNCArKysKPiAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLXBy b3RvdHlwZXMuaCB8ICAgNSArCj4gICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5o ICAgICAgfCAgMjYgKysrKy0KPiAgIGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2ltZC5oICAgICAg ICAgICB8ICAyNiArKysrLQo+ICAgYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS92ZWN0b3IuaCAgICAg ICAgIHwgIDU3ICsrKysrKysrKystCj4gICBhcmNoL3Jpc2N2L2tlcm5lbC9lbnRyeS5TICAgICAg ICAgICAgICAgfCAgIDggKysKPiAgIGFyY2gvcmlzY3Yva2VybmVsL2tlcm5lbF9tb2RlX3ZlY3Rv ci5jICB8IDEyNCArKysrKysrKysrKysrKysrKysrKysrKy0KPiAgIGFyY2gvcmlzY3Yva2VybmVs L3Byb2Nlc3MuYyAgICAgICAgICAgICB8ICAgMyArCj4gICBhcmNoL3Jpc2N2L2tlcm5lbC92ZWN0 b3IuYyAgICAgICAgICAgICAgfCAgMzEgKysrKy0tCj4gICA5IGZpbGVzIGNoYW5nZWQsIDI3MyBp bnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNj di9LY29uZmlnIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4gaW5kZXggY2JhNTNkY2MyYWUwLi43MDYw M2M0ODY1OTMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9LY29uZmlnCj4gKysrIGIvYXJjaC9y aXNjdi9LY29uZmlnCj4gQEAgLTU1Nyw2ICs1NTcsMjAgQEAgY29uZmlnIFJJU0NWX0lTQV9WX01F TU1PVkVfVEhSRVNIT0xECj4gICAJICBQcmVmZXIgdXNpbmcgdmVjdG9yaXplZCBtZW1tb3ZlKCkg d2hlbiB0aGUgd29ya2xvYWQgc2l6ZSBleGNlZWRzIHRoaXMKPiAgIAkgIHZhbHVlLgo+ICAgCj4g K2NvbmZpZyBSSVNDVl9JU0FfVl9QUkVFTVBUSVZFCj4gKwlib29sICJSdW4ga2VybmVsLW1vZGUg VmVjdG9yIHdpdGgga2VybmVsIHByZWVtcHRpb24iCj4gKwlkZXBlbmRzIG9uIFBSRUVNUFRJT04K PiArCWRlcGVuZHMgb24gUklTQ1ZfSVNBX1YKPiArCWRlZmF1bHQgeQo+ICsJaGVscAo+ICsJICBV c3VhbGx5LCBpbi1rZXJuZWwgU0lNRCByb3V0aW5lcyBhcmUgcnVuIHdpdGggcHJlZW1wdGlvbiBk aXNhYmxlZC4KPiArCSAgRnVuY3Rpb25zIHdoaWNoIGVudm9rZSBsb25nIHJ1bm5pbmcgU0lNRCB0 aHVzIG11c3QgeWllbGQgY29yZSdzCj4gKwkgIHZlY3RvciB1bml0IHRvIHByZXZlbnQgYmxvY2tp bmcgb3RoZXIgdGFza3MgZm9yIHRvbyBsb25nLgo+ICsKPiArCSAgVGhpcyBjb25maWcgYWxsb3dz IGtlcm5lbCB0byBydW4gU0lNRCB3aXRob3V0IGV4cGxpY2l0bHkgZGlzYWJsZQo+ICsJICBwcmVl bXB0aW9uLiBFbmFibGluZyB0aGlzIGNvbmZpZyB3aWxsIHJlc3VsdCBpbiBoaWdoZXIgbWVtb3J5 Cj4gKwkgIGNvbnN1bXB0aW9uIGR1ZSB0byB0aGUgYWxsb2NhdGlvbiBvZiBwZXItdGFzaydzIGtl cm5lbCBWZWN0b3IgY29udGV4dC4KPiArCj4gICBjb25maWcgVE9PTENIQUlOX0hBU19aQkIKPiAg IAlib29sCj4gICAJZGVmYXVsdCB5Cj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9h c20vYXNtLXByb3RvdHlwZXMuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLXByb3RvdHlw ZXMuaAo+IGluZGV4IGJlNDM4OTMyZjMyMS4uY2Q2MjdlYzI4OWYxIDEwMDY0NAo+IC0tLSBhL2Fy Y2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLXByb3RvdHlwZXMuaAo+ICsrKyBiL2FyY2gvcmlzY3Yv aW5jbHVkZS9hc20vYXNtLXByb3RvdHlwZXMuaAo+IEBAIC0zMCw2ICszMCwxMSBAQCB2b2lkIHhv cl9yZWdzXzVfKHVuc2lnbmVkIGxvbmcgYnl0ZXMsIHVuc2lnbmVkIGxvbmcgKl9fcmVzdHJpY3Qg cDEsCj4gICAJCSBjb25zdCB1bnNpZ25lZCBsb25nICpfX3Jlc3RyaWN0IHA0LAo+ICAgCQkgY29u c3QgdW5zaWduZWQgbG9uZyAqX19yZXN0cmljdCBwNSk7Cj4gICAKPiArI2lmZGVmIENPTkZJR19S SVNDVl9JU0FfVl9QUkVFTVBUSVZFCj4gK2FzbWxpbmthZ2Ugdm9pZCByaXNjdl92X2NvbnRleHRf bmVzdGluZ19zdGFydChzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Cj4gK2FzbWxpbmthZ2Ugdm9pZCBy aXNjdl92X2NvbnRleHRfbmVzdGluZ19lbmQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwo+ICsjZW5k aWYgLyogQ09ORklHX1JJU0NWX0lTQV9WX1BSRUVNUFRJVkUgKi8KPiArCj4gICAjZW5kaWYgLyog Q09ORklHX1JJU0NWX0lTQV9WICovCj4gICAKPiAgICNkZWZpbmUgREVDTEFSRV9ET19FUlJPUl9J TkZPKG5hbWUpCWFzbWxpbmthZ2Ugdm9pZCBuYW1lKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+IGRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oIGIvYXJjaC9yaXNj di9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaAo+IGluZGV4IDE1NzgxZTIyMzJlMC4uNGRlOTEyNGJj ZjRmIDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKPiAr KysgYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCj4gQEAgLTgxLDExICs4MSwz MiBAQCBzdHJ1Y3QgcHRfcmVnczsKPiAgICAqICAgIGFjdGl2YXRpb24gb2YgdGhpcyBzdGF0ZSBk aXNhYmxlcyB0aGUgcHJlZW1wdGlvbi4gT24gYSBub24tUlQga2VybmVsLCBpdAo+ICAgICogICAg YWxzbyBkaXNhYmxlIGJoLiBDdXJyZW50bHkgb25seSAwIGFuZCAxIGFyZSB2YWxpZCB2YWx1ZSBm b3IgdGhpcyBmaWVsZC4KPiAgICAqICAgIE90aGVyIHZhbHVlcyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1 dHVyZSB1c2VzLgo+ICsgKiAgLSBiaXRzIDgtMTUgYXJlIHVzZWQgZm9yIHRyYWNraW5nIHByZWVt cHRpYmxlIGtlcm5lbC1tb2RlIFZlY3Rvciwgd2hlbgo+ICsgKiAgICBSSVNDVl9JU0FfVl9QUkVF TVBUSVZFIGlzIHNldC4gQ2FsbGluZyBrZXJuZWxfdmVjdG9yX2JlZ2luKCkgZG9lcyBub3QKPiAr ICogICAgZGlzYWJsZSB0aGUgcHJlZW1wdGlvbiBpZiB0aGUgdGhyZWFkJ3Mga2VybmVsX3ZzdGF0 ZS5kYXRhcCBpcyBhbGxvY2F0ZWQuCj4gKyAqICAgIEluc3RlYWQsIHRoZSBrZXJuZWwgYWRkcyAx IGludG8gdGhpcyBmaWVsZC4gVGhlbiB0aGUgdHJhcCBlbnRyeS9leGl0IGNvZGUKPiArICogICAg a25vd3MgaWYgd2UgYXJlIGVudGVyaW5nL2V4aXRpbmcgdGhlIGNvbnRleHQgdGhhdCBvd25zIHBy ZWVtcHRfdi4KPiArICogICAgIC0gMDogdGhlIHRhc2sgaXMgbm90IHVzaW5nIHByZWVtcHRfdgo+ ICsgKiAgICAgLSAxOiB0aGUgdGFzayBpcyBhY3RpdmVseSB1c2luZywgYW5kIG93bnMgcHJlZW1w dF92Cj4gKyAqICAgICAtID4xOiB0aGUgdGFzayB3YXMgdXNpbmcgcHJlZW1wdF92LCBidXQgdGhl biB0b29rIGEgdHJhcCB3aXRoaW4uIFRodXMsCj4gKyAqICAgICAgIHRoZSB0YXNrIGRvZXMgbm90 IG93biBwcmVlbXB0X3YuIEFueSB1c2Ugb2YgVmVjdG9yIHdpbGwgaGF2ZSB0byBzYXZlCj4gKyAq ICAgICAgIHByZWVtcHRfdiwgaWYgZGlydHksIGFuZCBmYWxsYmFjayB0byBub24tcHJlZW1wdGli bGUga2VybmVsLW1vZGUKPiArICogICAgICAgVmVjdG9yLgo+ICsgKiAgIC0gYml0IDMwOiBUaGUg aW4ta2VybmVsIHByZWVtcHRfdiBjb250ZXh0IGlzIHNhdmVkLCBhbmQgcmVxdXJpZXMgdG8gYmUK PiArICogICAgIHJlc3RvcmVkIHdoZW4gcmV0dXJuaW5nIHRvIHRoZSBjb250ZXh0IHRoYXQgb3du cyB0aGUgcHJlZW1wdF92Lgo+ICsgKiAgIC0gYml0IDMxOiBUaGUgaW4ta2VybmVsIHByZWVtcHRf diBjb250ZXh0IGlzIGRpcnR5LCBhcyBzaWduYWxlZCBieSB0aGUKPiArICogICAgIHRyYXAgZW50 cnkgY29kZS4gQW55IGNvbnRleHQgc3dpdGNoZXMgb3V0LW9mIGN1cnJlbnQgdGFzayBuZWVkIHRv IHNhdmUKPiArICogICAgIGl0IHRvIHRoZSB0YXNrJ3MgaW4ta2VybmVsIFYgY29udGV4dC4gQWxz bywgYW55IHRyYXBzIG5lc3Rpbmcgb24tdG9wLW9mCj4gKyAqICAgICBwcmVlbXB0X3YgcmVxdWVz dGluZyB0byB1c2UgViBuZWVkcyBhIHNhdmUuCj4gICAgKi8KPiAgIAo+IC0jZGVmaW5lIFJJU0NW X0tFUk5FTF9NT0RFX1ZfTUFTSwkweGZmCj4gKyNkZWZpbmUgUklTQ1ZfS0VSTkVMX01PREVfVl9N QVNLCTB4MDAwMDAwZmYKPiArI2RlZmluZSBSSVNDVl9QUkVFTVBUX1ZfTUFTSwkJMHgwMDAwZmYw MAo+ICAgCj4gLSNkZWZpbmUgUklTQ1ZfS0VSTkVMX01PREVfVgkweDEKPiArI2RlZmluZSBSSVND Vl9LRVJORUxfTU9ERV9WCQkweDAwMDAwMDAxCj4gKyNkZWZpbmUgUklTQ1ZfUFJFRU1QVF9WCQkJ MHgwMDAwMDEwMAo+ICsjZGVmaW5lIFJJU0NWX1BSRUVNUFRfVl9ESVJUWQkJMHg4MDAwMDAwMAo+ ICsjZGVmaW5lIFJJU0NWX1BSRUVNUFRfVl9ORUVEX1JFU1RPUkUJMHg0MDAwMDAwMAo+ICAgCj4g ICAvKiBDUFUtc3BlY2lmaWMgc3RhdGUgb2YgYSB0YXNrICovCj4gICBzdHJ1Y3QgdGhyZWFkX3N0 cnVjdCB7Cj4gQEAgLTk5LDYgKzEyMCw3IEBAIHN0cnVjdCB0aHJlYWRfc3RydWN0IHsKPiAgIAl1 MzIgdnN0YXRlX2N0cmw7Cj4gICAJc3RydWN0IF9fcmlzY3Zfdl9leHRfc3RhdGUgdnN0YXRlOwo+ ICAgCXVuc2lnbmVkIGxvbmcgYWxpZ25fY3RsOwo+ICsJc3RydWN0IF9fcmlzY3Zfdl9leHRfc3Rh dGUga2VybmVsX3ZzdGF0ZTsKPiAgIH07Cj4gICAKPiAgIC8qIFdoaXRlbGlzdCB0aGUgZnN0YXRl IGZyb20gdGhlIHRhc2tfc3RydWN0IGZvciBoYXJkZW5lZCB1c2VyY29weSAqLwo+IGRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3NpbWQuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS9h c20vc2ltZC5oCj4gaW5kZXggMmYxZTk1Y2NiMDNjLi43ZGFjY2RjYmRlZTggMTAwNjQ0Cj4gLS0t IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zaW1kLmgKPiArKysgYi9hcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL3NpbWQuaAo+IEBAIC0xMiw2ICsxMiw3IEBACj4gICAjaW5jbHVkZSA8bGludXgvcGVy Y3B1Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvcHJlZW1wdC5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90aHJlYWRfaW5mby5oPgo+ICAgCj4gICAjaW5j bHVkZSA8YXNtL3ZlY3Rvci5oPgo+ICAgCj4gQEAgLTI4LDEyICsyOSwyNyBAQCBzdGF0aWMgX19t dXN0X2NoZWNrIGlubGluZSBib29sIG1heV91c2Vfc2ltZCh2b2lkKQo+ICAgCS8qCj4gICAJICog UklTQ1ZfS0VSTkVMX01PREVfViBpcyBvbmx5IHNldCB3aGlsZSBwcmVlbXB0aW9uIGlzIGRpc2Fi bGVkLAo+ICAgCSAqIGFuZCBpcyBjbGVhciB3aGVuZXZlciBwcmVlbXB0aW9uIGlzIGVuYWJsZWQu Cj4gLQkgKgo+IC0JICogS2VybmVsLW1vZGUgVmVjdG9yIHRlbXBvcmFyaWx5IGRpc2FibGVzIGJo LiBTbyB3ZSBtdXN0IG5vdCByZXR1cm4KPiAtCSAqIHRydWUgb24gaXJxX2Rpc2FibGVkKCkuIE90 aGVyd2lzZSB3ZSB3b3VsZCBmYWlsIHRoZSBsb2NrZGVwIGNoZWNrCj4gLQkgKiBjYWxsaW5nIGxv Y2FsX2JoX2VuYWJsZSgpCj4gICAJICovCj4gLQlyZXR1cm4gIWluX2hhcmRpcnEoKSAmJiAhaW5f bm1pKCkgJiYgIWlycXNfZGlzYWJsZWQoKSAmJiAhKHJpc2N2X3ZfY3R4X2NudCgpICYgUklTQ1Zf S0VSTkVMX01PREVfVl9NQVNLKTsKPiArCWlmIChpbl9oYXJkaXJxKCkgfHwgaW5fbm1pKCkpCj4g KwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCS8qCj4gKwkgKiBOZXN0aW5nIGlzIGFjaGVpdmVkIGlu IHByZWVtcHRfdiBieSBzcHJlYWRpbmcgdGhlIGNvbnRyb2wgZm9yCj4gKwkgKiBwcmVlbXB0aWJs ZSBhbmQgbm9uLXByZWVtcHRpYmxlIGtlcm5lbC1tb2RlIFZlY3RvciBpbnRvIHR3byBmaWVsZHMu Cj4gKwkgKiBBbHdheXMgdHJ5IHRvIG1hdGNoIHdpdGggcHJlbXB0X3YgaWYga2VybmVsIFYtY29u dGV4dCBleGlzdHMuIFRoZW4sCj4gKwkgKiBmYWxsYmFjayB0byBjaGVjayBub24gcHJlZW1wdF92 IGlmIG5lc3RpbmcgaGFwcGVucywgb3IgaWYgdGhlIGNvbmZpZwo+ICsJICogaXMgbm90IHNldC4K PiArCSAqLwo+ICsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lTQV9WX1BSRUVNUFRJVkUp ICYmIGN1cnJlbnQtPnRocmVhZC5rZXJuZWxfdnN0YXRlLmRhdGFwKSB7Cj4gKwkJaWYgKCFyaXNj dl9wcmVlbXB0X3Zfc3RhcnRlZChjdXJyZW50KSkKPiArCQkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4g KwkvKgo+ICsJICogTm9uLXByZWVtcHRpYmxlIGtlcm5lbC1tb2RlIFZlY3RvciB0ZW1wb3Jhcmls eSBkaXNhYmxlcyBiaC4gU28gd2UKPiArCSAqIG11c3Qgbm90IHJldHVybiB0cnVlIG9uIGlycV9k aXNhYmxlZCgpLiBPdGhlcndpc2Ugd2Ugd291bGQgZmFpbCB0aGUKPiArCSAqIGxvY2tkZXAgY2hl Y2sgY2FsbGluZyBsb2NhbF9iaF9lbmFibGUoKQo+ICsJICovCj4gKwlyZXR1cm4gIWlycXNfZGlz YWJsZWQoKSAmJiAhKHJpc2N2X3ZfY3R4X2NudCgpICYgUklTQ1ZfS0VSTkVMX01PREVfVl9NQVNL KTsKPiAgIH0KPiAgIAo+ICAgI2Vsc2UgLyogISBDT05GSUdfUklTQ1ZfSVNBX1YgKi8KPiBkaWZm IC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS92ZWN0b3IuaCBiL2FyY2gvcmlzY3YvaW5j bHVkZS9hc20vdmVjdG9yLmgKPiBpbmRleCAwZTY3NDFkZDllZjMuLjU0MmVhZjkyMjdjMyAxMDA2 NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3ZlY3Rvci5oCj4gKysrIGIvYXJjaC9y aXNjdi9pbmNsdWRlL2FzbS92ZWN0b3IuaAo+IEBAIC0yOCw2ICsyOCw3IEBAIHZvaWQgZ2V0X2Nw dV92ZWN0b3JfY29udGV4dCh2b2lkKTsKPiAgIHZvaWQgcHV0X2NwdV92ZWN0b3JfY29udGV4dCh2 b2lkKTsKPiAgIHZvaWQgcmlzY3Zfdl90aHJlYWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz ayk7Cj4gICB2b2lkIF9faW5pdCByaXNjdl92X3NldHVwX2N0eF9jYWNoZSh2b2lkKTsKPiArdm9p ZCByaXNjdl92X3RocmVhZF9hbGxvYyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzayk7Cj4gICAKPiAg IHN0YXRpYyBpbmxpbmUgdm9pZCByaXNjdl92X2N0eF9jbnRfYWRkKHUzMiBvZmZzZXQpCj4gICB7 Cj4gQEAgLTIxMiwxNCArMjEzLDYzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByaXNjdl92X3ZzdGF0 ZV9zZXRfcmVzdG9yZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCj4gICAJfQo+ICAgfQo+ICAg Cj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfSVNBX1ZfUFJFRU1QVElWRQo+ICtzdGF0aWMgaW5saW5l IGJvb2wgcmlzY3ZfcHJlZW1wdF92X2RpcnR5KHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKPiAr ewo+ICsJdTMyIHZhbCA9IFJFQURfT05DRSh0YXNrLT50aHJlYWQucmlzY3Zfdl9mbGFncyk7Cj4g Kwo+ICsJcmV0dXJuICEhKHZhbCAmIFJJU0NWX1BSRUVNUFRfVl9ESVJUWSk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbmxpbmUgYm9vbCByaXNjdl9wcmVlbXB0X3ZfcmVzdG9yZShzdHJ1Y3QgdGFza19z dHJ1Y3QgKnRhc2spCj4gK3sKPiArCXUzMiB2YWwgPSBSRUFEX09OQ0UodGFzay0+dGhyZWFkLnJp c2N2X3ZfZmxhZ3MpOwo+ICsKPiArCXJldHVybiAhISh2YWwgJiBSSVNDVl9QUkVFTVBUX1ZfTkVF RF9SRVNUT1JFKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHJpc2N2X3ByZWVtcHRf dl9jbGVhcl9kaXJ0eShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCj4gK3sKPiArCWJhcnJpZXIo KTsKPiArCXRhc2stPnRocmVhZC5yaXNjdl92X2ZsYWdzICY9IH5SSVNDVl9QUkVFTVBUX1ZfRElS VFk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCByaXNjdl9wcmVlbXB0X3Zfc2V0X3Jl c3RvcmUoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQo+ICt7Cj4gKwliYXJyaWVyKCk7Cj4gKwl0 YXNrLT50aHJlYWQucmlzY3Zfdl9mbGFncyB8PSBSSVNDVl9QUkVFTVBUX1ZfTkVFRF9SRVNUT1JF Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgcmlzY3ZfcHJlZW1wdF92X3N0YXJ0ZWQo c3RydWN0IHRhc2tfc3RydWN0ICp0YXNrKQo+ICt7Cj4gKwlyZXR1cm4gISEoUkVBRF9PTkNFKHRh c2stPnRocmVhZC5yaXNjdl92X2ZsYWdzKSAmIFJJU0NWX1BSRUVNUFRfVl9NQVNLKTsKPiArfQo+ ICsjZWxzZSAvKiAhQ09ORklHX1JJU0NWX0lTQV9WX1BSRUVNUFRJVkUgKi8KPiArc3RhdGljIGlu bGluZSBib29sIHJpc2N2X3ByZWVtcHRfdl9kaXJ0eShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2sp IHsgcmV0dXJuIGZhbHNlOyB9Cj4gK3N0YXRpYyBpbmxpbmUgYm9vbCByaXNjdl9wcmVlbXB0X3Zf cmVzdG9yZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spIHsgcmV0dXJuIGZhbHNlOyB9Cj4gK3N0 YXRpYyBpbmxpbmUgYm9vbCByaXNjdl9wcmVlbXB0X3Zfc3RhcnRlZChzdHJ1Y3QgdGFza19zdHJ1 Y3QgKnRhc2spIHsgcmV0dXJuIGZhbHNlOyB9Cj4gKyNkZWZpbmUgcmlzY3ZfcHJlZW1wdF92X2Ns ZWFyX2RpcnR5KHRzaykJZG8ge30gd2hpbGUgKDApCj4gKyNkZWZpbmUgcmlzY3ZfcHJlZW1wdF92 X3NldF9yZXN0b3JlKHRzaykJZG8ge30gd2hpbGUgKDApCj4gKyNlbmRpZiAvKiBDT05GSUdfUklT Q1ZfSVNBX1ZfUFJFRU1QVElWRSAqLwo+ICsKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3N3aXRj aF90b192ZWN0b3Ioc3RydWN0IHRhc2tfc3RydWN0ICpwcmV2LAo+ICAgCQkJCSAgICAgIHN0cnVj dCB0YXNrX3N0cnVjdCAqbmV4dCkKPiAgIHsKPiAgIAlzdHJ1Y3QgcHRfcmVncyAqcmVnczsKPiAg IAo+IC0JcmVncyA9IHRhc2tfcHRfcmVncyhwcmV2KTsKPiAtCXJpc2N2X3ZfdnN0YXRlX3NhdmUo JnByZXYtPnRocmVhZC52c3RhdGUsIHJlZ3MpOwo+IC0JcmlzY3Zfdl92c3RhdGVfc2V0X3Jlc3Rv cmUobmV4dCwgdGFza19wdF9yZWdzKG5leHQpKTsKPiArCWlmIChyaXNjdl9wcmVlbXB0X3ZfZGly dHkocHJldikpIHsKPiArCQlfX3Jpc2N2X3ZfdnN0YXRlX3NhdmUoJnByZXYtPnRocmVhZC5rZXJu ZWxfdnN0YXRlLAo+ICsJCQkJICAgICAgcHJldi0+dGhyZWFkLmtlcm5lbF92c3RhdGUuZGF0YXAp Owo+ICsJCXJpc2N2X3ByZWVtcHRfdl9jbGVhcl9kaXJ0eShwcmV2KTsKPiArCX0gZWxzZSB7Cj4g KwkJcmVncyA9IHRhc2tfcHRfcmVncyhwcmV2KTsKPiArCQlyaXNjdl92X3ZzdGF0ZV9zYXZlKCZw cmV2LT50aHJlYWQudnN0YXRlLCByZWdzKTsKSW4gdGhpcyB0aHJlYWQgWzFdLCBJSVVDLCBXYW5n IGFuZCB5b3UgcHJlZmVyIHRvIHNraXAgdGhlIFNSX1NEIGNoZWNrIApiZWZvcmUgc2F2aW5nIHRo ZSBbdmZdc3RhdGUsCmFuZCBJIGFsc28gZm91bmQgdGhhdCBjaGVjayBpc24ndCBwdXQgaW4gdGhl IHNuaXBwZXQuCgpob3cgYWJvdXQgcmVtb3ZpbmcgdGhlIFNSX1NEIGNoZWNrIGZvciB0aGUgZnB1 KCkgY2FzZSBhbmQgaW5jbHVkaW5nIGl0IAppbiB0aGlzIHNlcmllcz8KClsxXTpodHRwczovL2xv cmUua2VybmVsLm9yZy9saW51eC1yaXNjdi8yMDIzMTIyMTA3MDQ0OS4xODA5MDIwLTEtc29uZ3No dWFpc2h1YWlAdGlueWxhYi5vcmcvIAoKPiArCX0KPiArCj4gKwlpZiAocmlzY3ZfcHJlZW1wdF92 X3N0YXJ0ZWQobmV4dCkpCj4gKwkJcmlzY3ZfcHJlZW1wdF92X3NldF9yZXN0b3JlKG5leHQpOwo+ ICsJZWxzZQo+ICsJCXJpc2N2X3ZfdnN0YXRlX3NldF9yZXN0b3JlKG5leHQsIHRhc2tfcHRfcmVn cyhuZXh0KSk7Cj4gICB9Cj4gICAKPiAgIHZvaWQgcmlzY3Zfdl92c3RhdGVfY3RybF9pbml0KHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrKTsKPiBAQCAtMjQzLDYgKzI5Myw3IEBAIHN0YXRpYyBpbmxp bmUgYm9vbCByaXNjdl92X3ZzdGF0ZV9jdHJsX3VzZXJfYWxsb3dlZCh2b2lkKSB7IHJldHVybiBm YWxzZTsgfQo+ICAgI2RlZmluZSByaXNjdl92X3ZzdGF0ZV9vbihyZWdzKQkJCWRvIHt9IHdoaWxl ICgwKQo+ICAgI2RlZmluZSByaXNjdl92X3RocmVhZF9mcmVlKHRzaykJCWRvIHt9IHdoaWxlICgw KQo+ICAgI2RlZmluZSAgcmlzY3Zfdl9zZXR1cF9jdHhfY2FjaGUoKQkJZG8ge30gd2hpbGUgKDAp Cj4gKyNkZWZpbmUgcmlzY3Zfdl90aHJlYWRfYWxsb2ModHNrKQkJZG8ge30gd2hpbGUgKDApCj4g ICAKPiAgICNlbmRpZiAvKiBDT05GSUdfUklTQ1ZfSVNBX1YgKi8KPiAgIAo+IGRpZmYgLS1naXQg YS9hcmNoL3Jpc2N2L2tlcm5lbC9lbnRyeS5TIGIvYXJjaC9yaXNjdi9rZXJuZWwvZW50cnkuUwo+ IGluZGV4IDU0Y2E0NTY0YTkyNi4uOWQxYTMwNWQ1NTA4IDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlz Y3Yva2VybmVsL2VudHJ5LlMKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9lbnRyeS5TCj4gQEAg LTgzLDYgKzgzLDEwIEBAIFNZTV9DT0RFX1NUQVJUKGhhbmRsZV9leGNlcHRpb24pCj4gICAJLyog TG9hZCB0aGUga2VybmVsIHNoYWRvdyBjYWxsIHN0YWNrIHBvaW50ZXIgaWYgY29taW5nIGZyb20g dXNlcnNwYWNlICovCj4gICAJc2NzX2xvYWRfY3VycmVudF9pZl90YXNrX2NoYW5nZWQgczUKPiAg IAo+ICsjaWZkZWYgQ09ORklHX1JJU0NWX0lTQV9WX1BSRUVNUFRJVkUKPiArCW1vdmUgYTAsIHNw Cj4gKwljYWxsIHJpc2N2X3ZfY29udGV4dF9uZXN0aW5nX3N0YXJ0Cj4gKyNlbmRpZgo+ICAgCW1v dmUgYTAsIHNwIC8qIHB0X3JlZ3MgKi8KPiAgIAlsYSByYSwgcmV0X2Zyb21fZXhjZXB0aW9uCj4g ICAKPiBAQCAtMTM4LDYgKzE0MiwxMCBAQCBTWU1fQ09ERV9TVEFSVF9OT0FMSUdOKHJldF9mcm9t X2V4Y2VwdGlvbikKPiAgIAkgKi8KPiAgIAljc3J3IENTUl9TQ1JBVENILCB0cAo+ICAgMToKPiAr I2lmZGVmIENPTkZJR19SSVNDVl9JU0FfVl9QUkVFTVBUSVZFCj4gKwltb3ZlIGEwLCBzcAo+ICsJ Y2FsbCByaXNjdl92X2NvbnRleHRfbmVzdGluZ19lbmQKPiArI2VuZGlmCj4gICAJUkVHX0wgYTAs IFBUX1NUQVRVUyhzcCkKPiAgIAkvKgo+ICAgCSAqIFRoZSBjdXJyZW50IGxvYWQgcmVzZXJ2YXRp b24gaXMgZWZmZWN0aXZlbHkgcGFydCBvZiB0aGUgcHJvY2Vzc29yJ3MKPiBkaWZmIC0tZ2l0IGEv YXJjaC9yaXNjdi9rZXJuZWwva2VybmVsX21vZGVfdmVjdG9yLmMgYi9hcmNoL3Jpc2N2L2tlcm5l bC9rZXJuZWxfbW9kZV92ZWN0b3IuYwo+IGluZGV4IDczNTBlOTc1ZTA5NC4uNzVkNmIwMDg0MmIz IDEwMDY0NAo+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2tlcm5lbF9tb2RlX3ZlY3Rvci5jCj4g KysrIGIvYXJjaC9yaXNjdi9rZXJuZWwva2VybmVsX21vZGVfdmVjdG9yLmMKPiBAQCAtMTQsNiAr MTQsOSBAQAo+ICAgI2luY2x1ZGUgPGFzbS92ZWN0b3IuaD4KPiAgICNpbmNsdWRlIDxhc20vc3dp dGNoX3RvLmg+Cj4gICAjaW5jbHVkZSA8YXNtL3NpbWQuaD4KPiArI2lmZGVmIENPTkZJR19SSVND Vl9JU0FfVl9QUkVFTVBUSVZFCj4gKyNpbmNsdWRlIDxhc20vYXNtLXByb3RvdHlwZXMuaD4KPiAr I2VuZGlmCj4gICAKPiAgIC8qCj4gICAgKiBDbGFpbSBvd25lcnNoaXAgb2YgdGhlIENQVSB2ZWN0 b3IgY29udGV4dCBmb3IgdXNlIGJ5IHRoZSBjYWxsaW5nIGNvbnRleHQuCj4gQEAgLTU0LDYgKzU3 LDExMSBAQCB2b2lkIHB1dF9jcHVfdmVjdG9yX2NvbnRleHQodm9pZCkKPiAgIAkJcHJlZW1wdF9l bmFibGUoKTsKPiAgIH0KPiAgIAo+ICsjaWZkZWYgQ09ORklHX1JJU0NWX0lTQV9WX1BSRUVNUFRJ VkUKPiArc3RhdGljIGlubGluZSB2b2lkIHJpc2N2X3ByZWVtcHRfdl9zZXRfZGlydHkodm9pZCkK PiArewo+ICsJY3VycmVudC0+dGhyZWFkLnJpc2N2X3ZfZmxhZ3MgfD0gUklTQ1ZfUFJFRU1QVF9W X0RJUlRZOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcmlzY3ZfcHJlZW1wdF92X3Jl c2V0X2ZsYWdzKHZvaWQpCj4gK3sKPiArCWN1cnJlbnQtPnRocmVhZC5yaXNjdl92X2ZsYWdzICY9 IH4oUklTQ1ZfUFJFRU1QVF9WX0RJUlRZIHwgUklTQ1ZfUFJFRU1QVF9WX05FRURfUkVTVE9SRSk7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCByaXNjdl9wcmVlbXB0X3ZfZGVwdGhfaW5j KHZvaWQpCj4gK3sKPiArCXJpc2N2X3ZfY3R4X2NudF9hZGQoUklTQ1ZfUFJFRU1QVF9WKTsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHJpc2N2X3ByZWVtcHRfdl9kZXB0aF9kZWModm9p ZCkKPiArewo+ICsJcmlzY3Zfdl9jdHhfY250X3N1YihSSVNDVl9QUkVFTVBUX1YpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW5saW5lIHUzMiByaXNjdl9wcmVlbXB0X3ZfZ2V0X2RlcHRoKHZvaWQpCj4g K3sKPiArCXJldHVybiByaXNjdl92X2N0eF9jbnQoKSAmIFJJU0NWX1BSRUVNUFRfVl9NQVNLOwo+ ICt9Cj4gKwo+ICsjZGVmaW5lIFBSRUVNUFRfVl9GSVJTVF9ERVBUSAlSSVNDVl9QUkVFTVBUX1YK PiArc3RhdGljIGludCByaXNjdl92X3N0b3Bfa2VybmVsX2NvbnRleHQodm9pZCkKPiArewo+ICsJ aWYgKHJpc2N2X3ByZWVtcHRfdl9nZXRfZGVwdGgoKSAhPSBQUkVFTVBUX1ZfRklSU1RfREVQVEgp Cj4gKwkJcmV0dXJuIDE7Cj4gKwo+ICsJcmlzY3ZfcHJlZW1wdF92X2RlcHRoX2RlYygpOwo+ICsJ cmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcmlzY3Zfdl9zdGFydF9rZXJuZWxfY29u dGV4dChib29sICppc19uZXN0ZWQpCj4gK3sKPiArCXN0cnVjdCBfX3Jpc2N2X3ZfZXh0X3N0YXRl ICp2c3RhdGUgPSAmY3VycmVudC0+dGhyZWFkLmtlcm5lbF92c3RhdGU7Cj4gKwo+ICsJaWYgKCF2 c3RhdGUtPmRhdGFwKQo+ICsJCXJldHVybiAtRU5PRU5UOwo+ICsKPiArCWlmIChyaXNjdl9wcmVl bXB0X3Zfc3RhcnRlZChjdXJyZW50KSkgewo+ICsJCVdBUk5fT04ocmlzY3ZfcHJlZW1wdF92X2dl dF9kZXB0aCgpID09IFBSRUVNUFRfVl9GSVJTVF9ERVBUSCk7Cj4gKwkJaWYgKHJpc2N2X3ByZWVt cHRfdl9kaXJ0eShjdXJyZW50KSkgewo+ICsJCQlnZXRfY3B1X3ZlY3Rvcl9jb250ZXh0KCk7Cj4g KwkJCV9fcmlzY3Zfdl92c3RhdGVfc2F2ZSh2c3RhdGUsIHZzdGF0ZS0+ZGF0YXApOwo+ICsJCQly aXNjdl9wcmVlbXB0X3ZfY2xlYXJfZGlydHkoY3VycmVudCk7Cj4gKwkJCXB1dF9jcHVfdmVjdG9y X2NvbnRleHQoKTsKPiArCQl9Cj4gKwkJZ2V0X2NwdV92ZWN0b3JfY29udGV4dCgpOwo+ICsJCXJp c2N2X3ByZWVtcHRfdl9zZXRfcmVzdG9yZShjdXJyZW50KTsKPiArCQkqaXNfbmVzdGVkID0gdHJ1 ZTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwlnZXRfY3B1X3ZlY3Rvcl9jb250ZXh0KCk7 Cj4gKwlyaXNjdl92X3ZzdGF0ZV9zYXZlKCZjdXJyZW50LT50aHJlYWQudnN0YXRlLCB0YXNrX3B0 X3JlZ3MoY3VycmVudCkpOwo+ICsJcHV0X2NwdV92ZWN0b3JfY29udGV4dCgpOwo+ICsKPiArCXJp c2N2X3ByZWVtcHRfdl9kZXB0aF9pbmMoKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKiBs b3ctbGV2ZWwgViBjb250ZXh0IGhhbmRsaW5nIGNvZGUsIGNhbGxlZCB3aXRoIGlycSBkaXNhYmxl ZCAqLwo+ICthc21saW5rYWdlIHZvaWQgcmlzY3Zfdl9jb250ZXh0X25lc3Rpbmdfc3RhcnQoc3Ry dWN0IHB0X3JlZ3MgKnJlZ3MpCj4gK3sKPiArCWludCBkZXB0aDsKPiArCj4gKwlpZiAoIXJpc2N2 X3ByZWVtcHRfdl9zdGFydGVkKGN1cnJlbnQpKQo+ICsJCXJldHVybjsKPiArCj4gKwlkZXB0aCA9 IHJpc2N2X3ByZWVtcHRfdl9nZXRfZGVwdGgoKTsKPiArCWlmIChkZXB0aCA9PSBQUkVFTVBUX1Zf RklSU1RfREVQVEggJiYgKHJlZ3MtPnN0YXR1cyAmIFNSX1ZTKSA9PSBTUl9WU19ESVJUWSkKPiAr CQlyaXNjdl9wcmVlbXB0X3Zfc2V0X2RpcnR5KCk7Cj4gKwo+ICsJcmlzY3ZfcHJlZW1wdF92X2Rl cHRoX2luYygpOwo+ICt9Cj4gKwo+ICthc21saW5rYWdlIHZvaWQgcmlzY3Zfdl9jb250ZXh0X25l c3RpbmdfZW5kKHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ICt7Cj4gKwlzdHJ1Y3QgX19yaXNjdl92 X2V4dF9zdGF0ZSAqdnN0YXRlID0gJmN1cnJlbnQtPnRocmVhZC5rZXJuZWxfdnN0YXRlOwo+ICsJ dTMyIGRlcHRoOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2lycXNfZGlzYWJsZWQoKTsKPiArCj4g KwlpZiAoIXJpc2N2X3ByZWVtcHRfdl9zdGFydGVkKGN1cnJlbnQpKQo+ICsJCXJldHVybjsKPiAr Cj4gKwlyaXNjdl9wcmVlbXB0X3ZfZGVwdGhfZGVjKCk7Cj4gKwlkZXB0aCA9IHJpc2N2X3ByZWVt cHRfdl9nZXRfZGVwdGgoKTsKPiArCWlmIChkZXB0aCA9PSBQUkVFTVBUX1ZfRklSU1RfREVQVEgp IHsKPiArCQlpZiAocmlzY3ZfcHJlZW1wdF92X3Jlc3RvcmUoY3VycmVudCkpIHsKPiArCQkJX19y aXNjdl92X3ZzdGF0ZV9yZXN0b3JlKHZzdGF0ZSwgdnN0YXRlLT5kYXRhcCk7Cj4gKwkJCV9fcmlz Y3Zfdl92c3RhdGVfY2xlYW4ocmVncyk7Cj4gKwkJfQo+ICsJCXJpc2N2X3ByZWVtcHRfdl9yZXNl dF9mbGFncygpOwo+ICsJfQo+ICt9Cj4gKyNlbHNlCj4gKyNkZWZpbmUgcmlzY3Zfdl9zdGFydF9r ZXJuZWxfY29udGV4dChuZXN0ZWQpCSgtRU5PRU5UKQo+ICsjZGVmaW5lIHJpc2N2X3Zfc3RvcF9r ZXJuZWxfY29udGV4dCgpCQkoLUVOT0VOVCkKPiArI2VuZGlmIC8qIENPTkZJR19SSVNDVl9JU0Ff Vl9QUkVFTVBUSVZFICovCj4gKwo+ICAgLyoKPiAgICAqIGtlcm5lbF92ZWN0b3JfYmVnaW4oKTog b2J0YWluIHRoZSBDUFUgdmVjdG9yIHJlZ2lzdGVycyBmb3IgdXNlIGJ5IHRoZSBjYWxsaW5nCj4g ICAgKiBjb250ZXh0Cj4gQEAgLTY5LDE0ICsxNzcsMjAgQEAgdm9pZCBwdXRfY3B1X3ZlY3Rvcl9j b250ZXh0KHZvaWQpCj4gICAgKi8KPiAgIHZvaWQga2VybmVsX3ZlY3Rvcl9iZWdpbih2b2lkKQo+ ICAgewo+ICsJYm9vbCBuZXN0ZWQgPSBmYWxzZTsKPiArCj4gICAJaWYgKFdBUk5fT04oIWhhc192 ZWN0b3IoKSkpCj4gICAJCXJldHVybjsKPiAgIAo+ICAgCUJVR19PTighbWF5X3VzZV9zaW1kKCkp Owo+ICAgCj4gLQlnZXRfY3B1X3ZlY3Rvcl9jb250ZXh0KCk7Cj4gKwlpZiAocmlzY3Zfdl9zdGFy dF9rZXJuZWxfY29udGV4dCgmbmVzdGVkKSkgewo+ICsJCWdldF9jcHVfdmVjdG9yX2NvbnRleHQo KTsKPiArCQlyaXNjdl92X3ZzdGF0ZV9zYXZlKCZjdXJyZW50LT50aHJlYWQudnN0YXRlLCB0YXNr X3B0X3JlZ3MoY3VycmVudCkpOwo+ICsJfQo+ICAgCj4gLQlyaXNjdl92X3ZzdGF0ZV9zYXZlKCZj dXJyZW50LT50aHJlYWQudnN0YXRlLCB0YXNrX3B0X3JlZ3MoY3VycmVudCkpOwo+ICsJaWYgKCFu ZXN0ZWQpCj4gKwkJcmlzY3Zfdl92c3RhdGVfc2V0X3Jlc3RvcmUoY3VycmVudCwgdGFza19wdF9y ZWdzKGN1cnJlbnQpKTsKPiAgIAo+ICAgCXJpc2N2X3ZfZW5hYmxlKCk7Cj4gICB9Cj4gQEAgLTk2 LDEwICsyMTAsMTAgQEAgdm9pZCBrZXJuZWxfdmVjdG9yX2VuZCh2b2lkKQo+ICAgCWlmIChXQVJO X09OKCFoYXNfdmVjdG9yKCkpKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAtCXJpc2N2X3ZfdnN0YXRl X3NldF9yZXN0b3JlKGN1cnJlbnQsIHRhc2tfcHRfcmVncyhjdXJyZW50KSk7Cj4gLQo+ICAgCXJp c2N2X3ZfZGlzYWJsZSgpOwo+ICAgCj4gLQlwdXRfY3B1X3ZlY3Rvcl9jb250ZXh0KCk7Cj4gKwlp ZiAocmlzY3Zfdl9zdG9wX2tlcm5lbF9jb250ZXh0KCkpIHsvLyB3ZSBzaG91bGQgY2FsbCB0aGlz IGVhcmx5Cj4gKwkJcHV0X2NwdV92ZWN0b3JfY29udGV4dCgpOwo+ICsJfQo+ICAgfQo+ICAgRVhQ T1JUX1NZTUJPTF9HUEwoa2VybmVsX3ZlY3Rvcl9lbmQpOwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jp c2N2L2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMKPiBpbmRl eCA4NjJkNTljMzg3MmUuLjkyOTIyZGJkNWI1YyAxMDA2NDQKPiAtLS0gYS9hcmNoL3Jpc2N2L2tl cm5lbC9wcm9jZXNzLmMKPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9wcm9jZXNzLmMKPiBAQCAt MTg4LDYgKzE4OCw3IEBAIGludCBhcmNoX2R1cF90YXNrX3N0cnVjdChzdHJ1Y3QgdGFza19zdHJ1 Y3QgKmRzdCwgc3RydWN0IHRhc2tfc3RydWN0ICpzcmMpCj4gICAJKmRzdCA9ICpzcmM7Cj4gICAJ LyogY2xlYXIgZW50aXJlIFYgY29udGV4dCwgaW5jbHVkaW5nIGRhdGFwIGZvciBhIG5ldyB0YXNr ICovCj4gICAJbWVtc2V0KCZkc3QtPnRocmVhZC52c3RhdGUsIDAsIHNpemVvZihzdHJ1Y3QgX19y aXNjdl92X2V4dF9zdGF0ZSkpOwo+ICsJbWVtc2V0KCZkc3QtPnRocmVhZC5rZXJuZWxfdnN0YXRl LCAwLCBzaXplb2Yoc3RydWN0IF9fcmlzY3Zfdl9leHRfc3RhdGUpKTsKPiAgIAljbGVhcl90c2tf dGhyZWFkX2ZsYWcoZHN0LCBUSUZfUklTQ1ZfVl9ERUZFUl9SRVNUT1JFKTsKPiAgIAo+ICAgCXJl dHVybiAwOwo+IEBAIC0yMjQsNiArMjI1LDggQEAgaW50IGNvcHlfdGhyZWFkKHN0cnVjdCB0YXNr X3N0cnVjdCAqcCwgY29uc3Qgc3RydWN0IGtlcm5lbF9jbG9uZV9hcmdzICphcmdzKQo+ICAgCQlw LT50aHJlYWQuc1swXSA9IDA7Cj4gICAJfQo+ICAgCXAtPnRocmVhZC5yaXNjdl92X2ZsYWdzID0g MDsKPiArCWlmIChoYXNfdmVjdG9yKCkpCj4gKwkJcmlzY3Zfdl90aHJlYWRfYWxsb2MocCk7Cj4g ICAJcC0+dGhyZWFkLnJhID0gKHVuc2lnbmVkIGxvbmcpcmV0X2Zyb21fZm9yazsKPiAgIAlwLT50 aHJlYWQuc3AgPSAodW5zaWduZWQgbG9uZyljaGlsZHJlZ3M7IC8qIGtlcm5lbCBzcCAqLwo+ICAg CXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC92ZWN0b3IuYyBiL2Fy Y2gvcmlzY3Yva2VybmVsL3ZlY3Rvci5jCj4gaW5kZXggMWZlMTQwZTM0NTU3Li5mOTc2OTcwM2Zk MzkgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvdmVjdG9yLmMKPiArKysgYi9hcmNo L3Jpc2N2L2tlcm5lbC92ZWN0b3IuYwo+IEBAIC0yMiw2ICsyMiw5IEBACj4gICAKPiAgIHN0YXRp YyBib29sIHJpc2N2X3ZfaW1wbGljaXRfdWFjYyA9IElTX0VOQUJMRUQoQ09ORklHX1JJU0NWX0lT QV9WX0RFRkFVTFRfRU5BQkxFKTsKPiAgIHN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqcmlzY3Zf dl91c2VyX2NhY2hlcDsKPiArI2lmZGVmIENPTkZJR19SSVNDVl9JU0FfVl9QUkVFTVBUSVZFCj4g K3N0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqcmlzY3Zfdl9rZXJuZWxfY2FjaGVwOwo+ICsjZW5k aWYKPiAgIAo+ICAgdW5zaWduZWQgbG9uZyByaXNjdl92X3ZzaXplIF9fcmVhZF9tb3N0bHk7Cj4g ICBFWFBPUlRfU1lNQk9MX0dQTChyaXNjdl92X3ZzaXplKTsKPiBAQCAtNTMsNiArNTYsMTEgQEAg dm9pZCBfX2luaXQgcmlzY3Zfdl9zZXR1cF9jdHhfY2FjaGUodm9pZCkKPiAgIAlyaXNjdl92X3Vz ZXJfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGVfdXNlcmNvcHkoInJpc2N2X3ZlY3Rvcl9jdHgi LAo+ICAgCQkJCQkJCSByaXNjdl92X3ZzaXplLCAxNiwgU0xBQl9QQU5JQywKPiAgIAkJCQkJCQkg MCwgcmlzY3Zfdl92c2l6ZSwgTlVMTCk7Cj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfSVNBX1ZfUFJF RU1QVElWRQo+ICsJcmlzY3Zfdl9rZXJuZWxfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGUoInJp c2N2X3ZlY3Rvcl9rY3R4IiwKPiArCQkJCQkJICByaXNjdl92X3ZzaXplLCAxNiwKPiArCQkJCQkJ ICBTTEFCX1BBTklDLCBOVUxMKTsKPiArI2VuZGlmCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBib29s IGluc25faXNfdmVjdG9yKHUzMiBpbnNuX2J1ZikKPiBAQCAtODgsMjQgKzk2LDM1IEBAIHN0YXRp YyBib29sIGluc25faXNfdmVjdG9yKHUzMiBpbnNuX2J1ZikKPiAgIAlyZXR1cm4gZmFsc2U7Cj4g ICB9Cj4gICAKPiAtc3RhdGljIGludCByaXNjdl92X3RocmVhZF96YWxsb2Modm9pZCkKPiArc3Rh dGljIGludCByaXNjdl92X3RocmVhZF96YWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlLAo+ ICsJCQkJIHN0cnVjdCBfX3Jpc2N2X3ZfZXh0X3N0YXRlICpjdHgpCj4gICB7Cj4gICAJdm9pZCAq ZGF0YXA7Cj4gICAKPiAtCWRhdGFwID0ga21lbV9jYWNoZV96YWxsb2MocmlzY3Zfdl91c2VyX2Nh Y2hlcCwgR0ZQX0tFUk5FTCk7Cj4gKwlkYXRhcCA9IGttZW1fY2FjaGVfemFsbG9jKGNhY2hlLCBH RlBfS0VSTkVMKTsKPiAgIAlpZiAoIWRhdGFwKQo+ICAgCQlyZXR1cm4gLUVOT01FTTsKPiAgIAo+ IC0JY3VycmVudC0+dGhyZWFkLnZzdGF0ZS5kYXRhcCA9IGRhdGFwOwo+IC0JbWVtc2V0KCZjdXJy ZW50LT50aHJlYWQudnN0YXRlLCAwLCBvZmZzZXRvZihzdHJ1Y3QgX19yaXNjdl92X2V4dF9zdGF0 ZSwKPiAtCQkJCQkJICAgIGRhdGFwKSk7Cj4gKwljdHgtPmRhdGFwID0gZGF0YXA7Cj4gKwltZW1z ZXQoY3R4LCAwLCBvZmZzZXRvZihzdHJ1Y3QgX19yaXNjdl92X2V4dF9zdGF0ZSwgZGF0YXApKTsK PiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICt2b2lkIHJpc2N2X3ZfdGhyZWFkX2FsbG9jKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdHNrKQo+ICt7Cj4gKyNpZmRlZiBDT05GSUdfUklTQ1ZfSVNBX1Zf UFJFRU1QVElWRQo+ICsJcmlzY3Zfdl90aHJlYWRfemFsbG9jKHJpc2N2X3Zfa2VybmVsX2NhY2hl cCwgJnRzay0+dGhyZWFkLmtlcm5lbF92c3RhdGUpOwo+ICsjZW5kaWYKPiArfQo+ICsKPiAgIHZv aWQgcmlzY3Zfdl90aHJlYWRfZnJlZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRzaykKPiAgIHsKPiAg IAlpZiAodHNrLT50aHJlYWQudnN0YXRlLmRhdGFwKQo+ICAgCQlrbWVtX2NhY2hlX2ZyZWUocmlz Y3Zfdl91c2VyX2NhY2hlcCwgdHNrLT50aHJlYWQudnN0YXRlLmRhdGFwKTsKPiArI2lmZGVmIENP TkZJR19SSVNDVl9JU0FfVl9QUkVFTVBUSVZFCj4gKwlpZiAodHNrLT50aHJlYWQua2VybmVsX3Zz dGF0ZS5kYXRhcCkKPiArCQlrbWVtX2NhY2hlX2ZyZWUocmlzY3Zfdl9rZXJuZWxfY2FjaGVwLCB0 c2stPnRocmVhZC5rZXJuZWxfdnN0YXRlLmRhdGFwKTsKPiArI2VuZGlmCj4gICB9Cj4gICAKPiAg ICNkZWZpbmUgVlNUQVRFX0NUUkxfR0VUX0NVUih4KSAoKHgpICYgUFJfUklTQ1ZfVl9WU1RBVEVf Q1RSTF9DVVJfTUFTSykKPiBAQCAtMTc3LDcgKzE5Niw3IEBAIGJvb2wgcmlzY3Zfdl9maXJzdF91 c2VfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykKPiAgIAkgKiBjb250ZXh0IHdoZXJlIFZT IGhhcyBiZWVuIG9mZi4gU28sIHRyeSB0byBhbGxvY2F0ZSB0aGUgdXNlcidzIFYKPiAgIAkgKiBj b250ZXh0IGFuZCByZXN1bWUgZXhlY3V0aW9uLgo+ICAgCSAqLwo+IC0JaWYgKHJpc2N2X3ZfdGhy ZWFkX3phbGxvYygpKSB7Cj4gKwlpZiAocmlzY3Zfdl90aHJlYWRfemFsbG9jKHJpc2N2X3ZfdXNl cl9jYWNoZXAsICZjdXJyZW50LT50aHJlYWQudnN0YXRlKSkgewo+ICAgCQlmb3JjZV9zaWcoU0lH QlVTKTsKPiAgIAkJcmV0dXJuIHRydWU7Cj4gICAJfQoKLS0gClRoYW5rcwpTb25nIFNodWFpCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNj diBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==