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 A7F4FC19F4F for ; Mon, 29 Apr 2024 13:30:39 +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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=B/tLr/KjkTD8/+mR+SBmXahzrOAfda5kuw5Vscid9XI=; b=EGKgrlwPzoKJ68 v823sTbpA1ZAKqZyoBb62ihnreNqRXQ1yTjFJ35WgajDL5j875LTSr10W7k6ezNiVZJ+g4WJpP6js 3KMVqUO18ZLA5L8NNdkfKjflh4j+gdGYuzQO1YobfVW7D9jKb0NQJN8iyoy+acvfTW5JuElLDw1d/ AOssb6heSbo0AvxcxGFCG2UDqrLFWw5i9JwWb3X3uRPZq1PRzejd8UO9U0u1nRN95U61yVFF2khUr LSuOJA/p82op1KSENFibGHBucUi7osxjdQKXbSHPIg22iep39xvIhcgQF23CcZZ34/gUiR43nsAE5 I5bWnlPel9uCJUageHHw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1R5T-00000002wYT-10id; Mon, 29 Apr 2024 13:30:31 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1PyL-00000002fzY-2MBg; Mon, 29 Apr 2024 12:19:05 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=T7xAcO5/CoULMfPQgJR7+ovdKspvbrejEkNN0k7yqQ4=; b=LydZnZjcy6dzW8v3Qq2dSZvfeX ZfGoQ26d4BAKiK+E7ILXTtW9DaNk/kEgZvZ8sGBMWqMlfgW44xfykZevvs6rP26f7qxAOYxhsWVXf X1E88+kYVTUJDOETu5c7vXI4B/dnyKp8xiyipQUZuP2KJypJoXaFRXxg8RwoMGsTTG8gUh0GOA8h+ Ysh3lZXRoAiFgtClmb7meX98hXK4bn+DgaRlY9/it6dTD5tfPUU6qKheBTOuOAUDLuQpoM/a41wV2 znBIEpSmYPE4dWPkCAFs5mN0H8oNqddFDaKhUDj3jh8kTXg8R3X0CA7gxjwGVb3WsBaPZ1CCja1mL 3u8xXA3Q==; Received: from dfw.source.kernel.org ([139.178.84.217]) by desiato.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1s1PyH-0000000GUf9-0X3Y; Mon, 29 Apr 2024 12:19:04 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 84D7C60CEE; Mon, 29 Apr 2024 12:18:55 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 798C4C116B1; Mon, 29 Apr 2024 12:18:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1714393135; bh=5OMBgTFrr36VXyNsljkCHRabEmmDGidsMIUvtOQa2/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WsAc7yIFHt2IvIc53YsT9vOYbYUYM9ThWPy/E9F1/M2I+7yk4ay67tqkAJaLtgu6K HX/YSg2aBNpGOZRVnIgLSZ2U/UMBlpq/fWfM9tS1J4RRQpddf0FYXzuVZ9GKxq0pS7 nHyspRnQe2NoW2DNMTZ7cnz1z3wPrm4Lb9bzrsSiCnSam347yiu0tmJ/oQ+8V87Nm/ YiZX+xjM8Z3iba7d9suX9XnVrfFeBYtafrcWwUdOYNu+RXTsfyCNHO2xxEzaMWbJZN 2/wXNfDoDRdGpWH/rqUSpFmQWnoH/4ICPWl3ypOJfWka/rvJH4tISLAPmvMzrfYrEn 29IbCq53zdRUw== From: Mike Rapoport To: linux-kernel@vger.kernel.org Cc: Alexandre Ghiti , Andrew Morton , =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Donald Dutile , Eric Chanudet , Heiko Carstens , Helge Deller , Huacai Chen , Kent Overstreet , Luis Chamberlain , Mark Rutland , Masami Hiramatsu , Michael Ellerman , Mike Rapoport , Nadav Amit , Palmer Dabbelt , Peter Zijlstra , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Rick Edgecombe , Russell King , Sam Ravnborg , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Subject: [PATCH v7 12/16] arch: make execmem setup available regardless of CONFIG_MODULES Date: Mon, 29 Apr 2024 15:16:16 +0300 Message-ID: <20240429121620.1186447-13-rppt@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240429121620.1186447-1-rppt@kernel.org> References: <20240429121620.1186447-1-rppt@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240429_131901_755149_315E11C7 X-CRM114-Status: GOOD ( 30.35 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogIk1pa2UgUmFwb3BvcnQgKElCTSkiIDxycHB0QGtlcm5lbC5vcmc+CgpleGVjbWVtIGRv ZXMgbm90IGRlcGVuZCBvbiBtb2R1bGVzLCBvbiB0aGUgY29udHJhcnkgbW9kdWxlcyB1c2UKZXhl Y21lbS4KClRvIG1ha2UgZXhlY21lbSBhdmFpbGFibGUgd2hlbiBDT05GSUdfTU9EVUxFUz1uLCBm b3IgaW5zdGFuY2UgZm9yCmtwcm9iZXMsIHNwbGl0IGV4ZWNtZW1fcGFyYW1zIGluaXRpYWxpemF0 aW9uIG91dCBmcm9tCmFyY2gvKi9rZXJuZWwvbW9kdWxlLmMgYW5kIGNvbXBpbGUgaXQgd2hlbiBD T05GSUdfRVhFQ01FTT15CgpTaWduZWQtb2ZmLWJ5OiBNaWtlIFJhcG9wb3J0IChJQk0pIDxycHB0 QGtlcm5lbC5vcmc+ClJldmlld2VkLWJ5OiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8cGhpbG1k QGxpbmFyby5vcmc+Ci0tLQogYXJjaC9hcm0va2VybmVsL21vZHVsZS5jICAgICAgIHwgIDQzIC0t LS0tLS0tLS0KIGFyY2gvYXJtL21tL2luaXQuYyAgICAgICAgICAgICB8ICA0NSArKysrKysrKysr KwogYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmMgICAgIHwgMTQwIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogYXJjaC9hcm02NC9tbS9pbml0LmMgICAgICAgICAgIHwgMTQwICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogYXJjaC9sb29uZ2FyY2gva2VybmVsL21v ZHVsZS5jIHwgIDE5IC0tLS0tCiBhcmNoL2xvb25nYXJjaC9tbS9pbml0LmMgICAgICAgfCAgMjEg KysrKysKIGFyY2gvbWlwcy9rZXJuZWwvbW9kdWxlLmMgICAgICB8ICAyMiAtLS0tLS0KIGFyY2gv bWlwcy9tbS9pbml0LmMgICAgICAgICAgICB8ICAyMyArKysrKysKIGFyY2gvbmlvczIva2VybmVs L21vZHVsZS5jICAgICB8ICAyMCAtLS0tLQogYXJjaC9uaW9zMi9tbS9pbml0LmMgICAgICAgICAg IHwgIDIxICsrKysrCiBhcmNoL3BhcmlzYy9rZXJuZWwvbW9kdWxlLmMgICAgfCAgMjAgLS0tLS0K IGFyY2gvcGFyaXNjL21tL2luaXQuYyAgICAgICAgICB8ICAyMyArKysrKy0KIGFyY2gvcG93ZXJw Yy9rZXJuZWwvbW9kdWxlLmMgICB8ICA2MyAtLS0tLS0tLS0tLS0tLS0KIGFyY2gvcG93ZXJwYy9t bS9tZW0uYyAgICAgICAgICB8ICA2NCArKysrKysrKysrKysrKysKIGFyY2gvcmlzY3Yva2VybmVs L21vZHVsZS5jICAgICB8ICAzNCAtLS0tLS0tLQogYXJjaC9yaXNjdi9tbS9pbml0LmMgICAgICAg ICAgIHwgIDM1ICsrKysrKysrKwogYXJjaC9zMzkwL2tlcm5lbC9tb2R1bGUuYyAgICAgIHwgIDI3 IC0tLS0tLS0KIGFyY2gvczM5MC9tbS9pbml0LmMgICAgICAgICAgICB8ICAzMCArKysrKysrCiBh cmNoL3NwYXJjL2tlcm5lbC9tb2R1bGUuYyAgICAgfCAgMTkgLS0tLS0KIGFyY2gvc3BhcmMvbW0v TWFrZWZpbGUgICAgICAgICB8ICAgMiArCiBhcmNoL3NwYXJjL21tL2V4ZWNtZW0uYyAgICAgICAg fCAgMjEgKysrKysKIGFyY2gveDg2L2tlcm5lbC9tb2R1bGUuYyAgICAgICB8ICAyNyAtLS0tLS0t CiBhcmNoL3g4Ni9tbS9pbml0LmMgICAgICAgICAgICAgfCAgMjkgKysrKysrKwogMjMgZmlsZXMg Y2hhbmdlZCwgNDUzIGluc2VydGlvbnMoKyksIDQzNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBhcmNoL3NwYXJjL21tL2V4ZWNtZW0uYwoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2tl cm5lbC9tb2R1bGUuYyBiL2FyY2gvYXJtL2tlcm5lbC9tb2R1bGUuYwppbmRleCBhOThmZGY2ZmYy NmMuLjY3N2YyMThmN2U4NCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL21vZHVsZS5jCisr KyBiL2FyY2gvYXJtL2tlcm5lbC9tb2R1bGUuYwpAQCAtMTIsNTcgKzEyLDE0IEBACiAjaW5jbHVk ZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRlIDxsaW51 eC9lbGYuaD4KLSNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CiAjaW5jbHVkZSA8bGludXgvZnMu aD4KICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KLSNpbmNsdWRlIDxsaW51eC9nZnAuaD4KLSNp bmNsdWRlIDxsaW51eC9leGVjbWVtLmg+CiAKICNpbmNsdWRlIDxhc20vc2VjdGlvbnMuaD4KICNp bmNsdWRlIDxhc20vc21wX3BsYXQuaD4KICNpbmNsdWRlIDxhc20vdW53aW5kLmg+CiAjaW5jbHVk ZSA8YXNtL29wY29kZXMuaD4KIAotI2lmZGVmIENPTkZJR19YSVBfS0VSTkVMCi0vKgotICogVGhl IFhJUCBrZXJuZWwgdGV4dCBpcyBtYXBwZWQgaW4gdGhlIG1vZHVsZSBhcmVhIGZvciBtb2R1bGVz IGFuZAotICogc29tZSBvdGhlciBzdHVmZiB0byB3b3JrIHdpdGhvdXQgYW55IGluZGlyZWN0IHJl bG9jYXRpb25zLgotICogTU9EVUxFU19WQUREUiBpcyByZWRlZmluZWQgaGVyZSBhbmQgbm90IGlu IGFzbS9tZW1vcnkuaCB0byBhdm9pZAotICogcmVjb21waWxpbmcgdGhlIHdob2xlIGtlcm5lbCB3 aGVuIENPTkZJR19YSVBfS0VSTkVMIGlzIHR1cm5lZCBvbi9vZmYuCi0gKi8KLSN1bmRlZiBNT0RV TEVTX1ZBRERSCi0jZGVmaW5lIE1PRFVMRVNfVkFERFIJKCgodW5zaWduZWQgbG9uZylfZXhpcHJv bSArIH5QTURfTUFTSykgJiBQTURfTUFTSykKLSNlbmRpZgotCi0jaWZkZWYgQ09ORklHX01NVQot c3RhdGljIHN0cnVjdCBleGVjbWVtX2luZm8gZXhlY21lbV9pbmZvIF9fcm9fYWZ0ZXJfaW5pdDsK LQotc3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQot ewotCXVuc2lnbmVkIGxvbmcgZmFsbGJhY2tfc3RhcnQgPSAwLCBmYWxsYmFja19lbmQgPSAwOwot Ci0JaWYgKElTX0VOQUJMRUQoQ09ORklHX0FSTV9NT0RVTEVfUExUUykpIHsKLQkJZmFsbGJhY2tf c3RhcnQgPSBWTUFMTE9DX1NUQVJUOwotCQlmYWxsYmFja19lbmQgPSBWTUFMTE9DX0VORDsKLQl9 Ci0KLQlleGVjbWVtX2luZm8gPSAoc3RydWN0IGV4ZWNtZW1faW5mbyl7Ci0JCS5yYW5nZXMgPSB7 Ci0JCQlbRVhFQ01FTV9ERUZBVUxUXSA9IHsKLQkJCQkuc3RhcnQJPSBNT0RVTEVTX1ZBRERSLAot CQkJCS5lbmQJPSBNT0RVTEVTX0VORCwKLQkJCQkucGdwcm90CT0gUEFHRV9LRVJORUxfRVhFQywK LQkJCQkuYWxpZ25tZW50ID0gMSwKLQkJCQkuZmFsbGJhY2tfc3RhcnQJPSBmYWxsYmFja19zdGFy dCwKLQkJCQkuZmFsbGJhY2tfZW5kCT0gZmFsbGJhY2tfZW5kLAotCQkJfSwKLQkJfSwKLQl9Owot Ci0JcmV0dXJuICZleGVjbWVtX2luZm87Ci19Ci0jZW5kaWYKLQogYm9vbCBtb2R1bGVfaW5pdF9z ZWN0aW9uKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJcmV0dXJuIHN0cnN0YXJ0cyhuYW1lLCAiLmlu aXQiKSB8fApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vaW5pdC5jIGIvYXJjaC9hcm0vbW0vaW5p dC5jCmluZGV4IGU4YzZmNGJlMGNlMS4uNTM0NWQyMTg4OTlhIDEwMDY0NAotLS0gYS9hcmNoL2Fy bS9tbS9pbml0LmMKKysrIGIvYXJjaC9hcm0vbW0vaW5pdC5jCkBAIC0yMiw2ICsyMiw3IEBACiAj aW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KICNpbmNsdWRlIDxsaW51eC9zdG9wX21hY2hpbmUuaD4K ICNpbmNsdWRlIDxsaW51eC9zd2lvdGxiLmg+CisjaW5jbHVkZSA8bGludXgvZXhlY21lbS5oPgog CiAjaW5jbHVkZSA8YXNtL2NwMTUuaD4KICNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgpAQCAt NDg2LDMgKzQ4Nyw0NyBAQCB2b2lkIGZyZWVfaW5pdHJkX21lbSh1bnNpZ25lZCBsb25nIHN0YXJ0 LCB1bnNpZ25lZCBsb25nIGVuZCkKIAlmcmVlX3Jlc2VydmVkX2FyZWEoKHZvaWQgKilzdGFydCwg KHZvaWQgKillbmQsIC0xLCAiaW5pdHJkIik7CiB9CiAjZW5kaWYKKworI2lmZGVmIENPTkZJR19F WEVDTUVNCisKKyNpZmRlZiBDT05GSUdfWElQX0tFUk5FTAorLyoKKyAqIFRoZSBYSVAga2VybmVs IHRleHQgaXMgbWFwcGVkIGluIHRoZSBtb2R1bGUgYXJlYSBmb3IgbW9kdWxlcyBhbmQKKyAqIHNv bWUgb3RoZXIgc3R1ZmYgdG8gd29yayB3aXRob3V0IGFueSBpbmRpcmVjdCByZWxvY2F0aW9ucy4K KyAqIE1PRFVMRVNfVkFERFIgaXMgcmVkZWZpbmVkIGhlcmUgYW5kIG5vdCBpbiBhc20vbWVtb3J5 LmggdG8gYXZvaWQKKyAqIHJlY29tcGlsaW5nIHRoZSB3aG9sZSBrZXJuZWwgd2hlbiBDT05GSUdf WElQX0tFUk5FTCBpcyB0dXJuZWQgb24vb2ZmLgorICovCisjdW5kZWYgTU9EVUxFU19WQUREUgor I2RlZmluZSBNT0RVTEVTX1ZBRERSCSgoKHVuc2lnbmVkIGxvbmcpX2V4aXByb20gKyB+UE1EX01B U0spICYgUE1EX01BU0spCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19NTVUKK3N0YXRpYyBzdHJ1 Y3QgZXhlY21lbV9pbmZvIGV4ZWNtZW1faW5mbyBfX3JvX2FmdGVyX2luaXQ7CisKK3N0cnVjdCBl eGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZCkKK3sKKwl1bnNpZ25l ZCBsb25nIGZhbGxiYWNrX3N0YXJ0ID0gMCwgZmFsbGJhY2tfZW5kID0gMDsKKworCWlmIChJU19F TkFCTEVEKENPTkZJR19BUk1fTU9EVUxFX1BMVFMpKSB7CisJCWZhbGxiYWNrX3N0YXJ0ID0gVk1B TExPQ19TVEFSVDsKKwkJZmFsbGJhY2tfZW5kID0gVk1BTExPQ19FTkQ7CisJfQorCisJZXhlY21l bV9pbmZvID0gKHN0cnVjdCBleGVjbWVtX2luZm8peworCQkucmFuZ2VzID0geworCQkJW0VYRUNN RU1fREVGQVVMVF0gPSB7CisJCQkJLnN0YXJ0CT0gTU9EVUxFU19WQUREUiwKKwkJCQkuZW5kCT0g TU9EVUxFU19FTkQsCisJCQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMX0VYRUMsCisJCQkJLmFsaWdu bWVudCA9IDEsCisJCQkJLmZhbGxiYWNrX3N0YXJ0CT0gZmFsbGJhY2tfc3RhcnQsCisJCQkJLmZh bGxiYWNrX2VuZAk9IGZhbGxiYWNrX2VuZCwKKwkJCX0sCisJCX0sCisJfTsKKworCXJldHVybiAm ZXhlY21lbV9pbmZvOworfQorI2VuZGlmIC8qIENPTkZJR19NTVUgKi8KKworI2VuZGlmIC8qIENP TkZJR19FWEVDTUVNICovCmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYyBi L2FyY2gvYXJtNjQva2VybmVsL21vZHVsZS5jCmluZGV4IGE1MjI0MGVhMDg0Yi4uMzZiMjVhZjU2 MzI0IDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYworKysgYi9hcmNoL2Fy bTY0L2tlcm5lbC9tb2R1bGUuYwpAQCAtMTIsMTU4ICsxMiwxOCBAQAogI2luY2x1ZGUgPGxpbnV4 L2JpdG9wcy5oPgogI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgogI2luY2x1ZGUgPGxpbnV4L2Z0cmFj ZS5oPgotI2luY2x1ZGUgPGxpbnV4L2dmcC5oPgogI2luY2x1ZGUgPGxpbnV4L2thc2FuLmg+CiAj aW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvbW0uaD4KICNpbmNsdWRl IDxsaW51eC9tb2R1bGVsb2FkZXIuaD4KICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KICNpbmNs dWRlIDxsaW51eC9zY3MuaD4KLSNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+Ci0jaW5jbHVkZSA8 bGludXgvZXhlY21lbS5oPgogCiAjaW5jbHVkZSA8YXNtL2FsdGVybmF0aXZlLmg+CiAjaW5jbHVk ZSA8YXNtL2luc24uaD4KICNpbmNsdWRlIDxhc20vc2NzLmg+CiAjaW5jbHVkZSA8YXNtL3NlY3Rp b25zLmg+CiAKLXN0YXRpYyB1NjQgbW9kdWxlX2RpcmVjdF9iYXNlIF9fcm9fYWZ0ZXJfaW5pdCA9 IDA7Ci1zdGF0aWMgdTY0IG1vZHVsZV9wbHRfYmFzZSBfX3JvX2FmdGVyX2luaXQgPSAwOwotCi0v KgotICogQ2hvb3NlIGEgcmFuZG9tIHBhZ2UtYWxpZ25lZCBiYXNlIGFkZHJlc3MgZm9yIGEgd2lu ZG93IG9mICdzaXplJyBieXRlcyB3aGljaAotICogZW50aXJlbHkgY29udGFpbnMgdGhlIGludGVy dmFsIFtzdGFydCwgZW5kIC0gMV0uCi0gKi8KLXN0YXRpYyB1NjQgX19pbml0IHJhbmRvbV9ib3Vu ZGluZ19ib3godTY0IHNpemUsIHU2NCBzdGFydCwgdTY0IGVuZCkKLXsKLQl1NjQgbWF4X3Bnb2Zm LCBwZ29mZjsKLQotCWlmICgoZW5kIC0gc3RhcnQpID49IHNpemUpCi0JCXJldHVybiAwOwotCi0J bWF4X3Bnb2ZmID0gKHNpemUgLSAoZW5kIC0gc3RhcnQpKSAvIFBBR0VfU0laRTsKLQlwZ29mZiA9 IGdldF9yYW5kb21fdTMyX2luY2x1c2l2ZSgwLCBtYXhfcGdvZmYpOwotCi0JcmV0dXJuIHN0YXJ0 IC0gcGdvZmYgKiBQQUdFX1NJWkU7Ci19Ci0KLS8qCi0gKiBNb2R1bGVzIG1heSBkaXJlY3RseSBy ZWZlcmVuY2UgZGF0YSBhbmQgdGV4dCBhbnl3aGVyZSB3aXRoaW4gdGhlIGtlcm5lbAotICogaW1h Z2UgYW5kIG90aGVyIG1vZHVsZXMuIFJlZmVyZW5jZXMgdXNpbmcgUFJFTDMyIHJlbG9jYXRpb25z IGhhdmUgYSArLy0yRwotICogcmFuZ2UsIGFuZCBzbyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRo ZSBlbnRpcmUga2VybmVsIGltYWdlIGFuZCBhbGwgbW9kdWxlcwotICogZmFsbCB3aXRoaW4gYSAy RyB3aW5kb3cgc3VjaCB0aGF0IHRoZXNlIGFyZSBhbHdheXMgd2l0aGluIHJhbmdlLgotICoKLSAq IE1vZHVsZXMgbWF5IGRpcmVjdGx5IGJyYW5jaCB0byBmdW5jdGlvbnMgYW5kIGNvZGUgd2l0aGlu IHRoZSBrZXJuZWwgdGV4dCwKLSAqIGFuZCB0byBmdW5jdGlvbnMgYW5kIGNvZGUgd2l0aGluIG90 aGVyIG1vZHVsZXMuIFRoZXNlIGJyYW5jaGVzIHdpbGwgdXNlCi0gKiBDQUxMMjYvSlVNUDI2IHJl bG9jYXRpb25zIHdpdGggYSArLy0xMjhNIHJhbmdlLiBXaXRob3V0IFBMVHMsIHdlIG11c3QgZW5z dXJlCi0gKiB0aGF0IHRoZSBlbnRpcmUga2VybmVsIHRleHQgYW5kIGFsbCBtb2R1bGUgdGV4dCBm YWxscyB3aXRoaW4gYSAxMjhNIHdpbmRvdwotICogc3VjaCB0aGF0IHRoZXNlIGFyZSBhbHdheXMg d2l0aGluIHJhbmdlLiBXaXRoIFBMVHMsIHdlIGNhbiBleHBhbmQgdGhpcyB0byBhCi0gKiAyRyB3 aW5kb3cuCi0gKgotICogV2UgY2hvc2UgdGhlIDEyOE0gcmVnaW9uIHRvIHN1cnJvdW5kIHRoZSBl bnRpcmUga2VybmVsIGltYWdlIChyYXRoZXIgdGhhbgotICoganVzdCB0aGUgdGV4dCkgYXMgdXNp bmcgdGhlIHNhbWUgYm91bmRzIGZvciB0aGUgMTI4TSBhbmQgMkcgcmVnaW9ucyBlbnN1cmVzCi0g KiBieSBjb25zdHJ1Y3Rpb24gdGhhdCB3ZSBuZXZlciBzZWxlY3QgYSAxMjhNIHJlZ2lvbiB0aGF0 IGlzIG5vdCBhIHN1YnNldCBvZgotICogdGhlIDJHIHJlZ2lvbi4gRm9yIHZlcnkgbGFyZ2UgYW5k IHVudXN1YWwga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoaXMgbWVhbnMKLSAqIHdlIG1heSBmYWxs IGJhY2sgdG8gUExUcyB3aGVyZSB0aGV5IGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkLCBidXQgdGhp cyBrZWVwcwotICogdGhlIGxvZ2ljIHNpZ25pZmljYW50bHkgc2ltcGxlci4KLSAqLwotc3RhdGlj IGludCBfX2luaXQgbW9kdWxlX2luaXRfbGltaXRzKHZvaWQpCi17Ci0JdTY0IGtlcm5lbF9lbmQg PSAodTY0KV9lbmQ7Ci0JdTY0IGtlcm5lbF9zdGFydCA9ICh1NjQpX3RleHQ7Ci0JdTY0IGtlcm5l bF9zaXplID0ga2VybmVsX2VuZCAtIGtlcm5lbF9zdGFydDsKLQotCS8qCi0JICogVGhlIGRlZmF1 bHQgbW9kdWxlcyByZWdpb24gaXMgcGxhY2VkIGltbWVkaWF0ZWx5IGJlbG93IHRoZSBrZXJuZWwK LQkgKiBpbWFnZSwgYW5kIGlzIGxhcmdlIGVub3VnaCB0byB1c2UgdGhlIGZ1bGwgMkcgcmVsb2Nh dGlvbiByYW5nZS4KLQkgKi8KLQlCVUlMRF9CVUdfT04oS0lNQUdFX1ZBRERSICE9IE1PRFVMRVNf RU5EKTsKLQlCVUlMRF9CVUdfT04oTU9EVUxFU19WU0laRSA8IFNaXzJHKTsKLQotCWlmICgha2Fz bHJfZW5hYmxlZCgpKSB7Ci0JCWlmIChrZXJuZWxfc2l6ZSA8IFNaXzEyOE0pCi0JCQltb2R1bGVf ZGlyZWN0X2Jhc2UgPSBrZXJuZWxfZW5kIC0gU1pfMTI4TTsKLQkJaWYgKGtlcm5lbF9zaXplIDwg U1pfMkcpCi0JCQltb2R1bGVfcGx0X2Jhc2UgPSBrZXJuZWxfZW5kIC0gU1pfMkc7Ci0JfSBlbHNl IHsKLQkJdTY0IG1pbiA9IGtlcm5lbF9zdGFydDsKLQkJdTY0IG1heCA9IGtlcm5lbF9lbmQ7Ci0K LQkJaWYgKElTX0VOQUJMRUQoQ09ORklHX1JBTkRPTUlaRV9NT0RVTEVfUkVHSU9OX0ZVTEwpKSB7 Ci0JCQlwcl9pbmZvKCIyRyBtb2R1bGUgcmVnaW9uIGZvcmNlZCBieSBSQU5ET01JWkVfTU9EVUxF X1JFR0lPTl9GVUxMXG4iKTsKLQkJfSBlbHNlIHsKLQkJCW1vZHVsZV9kaXJlY3RfYmFzZSA9IHJh bmRvbV9ib3VuZGluZ19ib3goU1pfMTI4TSwgbWluLCBtYXgpOwotCQkJaWYgKG1vZHVsZV9kaXJl Y3RfYmFzZSkgewotCQkJCW1pbiA9IG1vZHVsZV9kaXJlY3RfYmFzZTsKLQkJCQltYXggPSBtb2R1 bGVfZGlyZWN0X2Jhc2UgKyBTWl8xMjhNOwotCQkJfQotCQl9Ci0KLQkJbW9kdWxlX3BsdF9iYXNl ID0gcmFuZG9tX2JvdW5kaW5nX2JveChTWl8yRywgbWluLCBtYXgpOwotCX0KLQotCXByX2luZm8o IiVsbHUgcGFnZXMgaW4gcmFuZ2UgZm9yIG5vbi1QTFQgdXNhZ2UiLAotCQltb2R1bGVfZGlyZWN0 X2Jhc2UgPyAoU1pfMTI4TSAtIGtlcm5lbF9zaXplKSAvIFBBR0VfU0laRSA6IDApOwotCXByX2lu Zm8oIiVsbHUgcGFnZXMgaW4gcmFuZ2UgZm9yIFBMVCB1c2FnZSIsCi0JCW1vZHVsZV9wbHRfYmFz ZSA/IChTWl8yRyAtIGtlcm5lbF9zaXplKSAvIFBBR0VfU0laRSA6IDApOwotCi0JcmV0dXJuIDA7 Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZXhlY21lbV9pbmZvIGV4ZWNtZW1faW5mbyBfX3JvX2FmdGVy X2luaXQ7Ci0KLXN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAo dm9pZCkKLXsKLQl1bnNpZ25lZCBsb25nIGZhbGxiYWNrX3N0YXJ0ID0gMCwgZmFsbGJhY2tfZW5k ID0gMDsKLQl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gMCwgZW5kID0gMDsKLQotCW1vZHVsZV9pbml0 X2xpbWl0cygpOwotCi0JLyoKLQkgKiBXaGVyZSBwb3NzaWJsZSwgcHJlZmVyIHRvIGFsbG9jYXRl IHdpdGhpbiBkaXJlY3QgYnJhbmNoIHJhbmdlIG9mIHRoZQotCSAqIGtlcm5lbCBzdWNoIHRoYXQg bm8gUExUcyBhcmUgbmVjZXNzYXJ5LgotCSAqLwotCWlmIChtb2R1bGVfZGlyZWN0X2Jhc2UpIHsK LQkJc3RhcnQgPSBtb2R1bGVfZGlyZWN0X2Jhc2U7Ci0JCWVuZCA9IG1vZHVsZV9kaXJlY3RfYmFz ZSArIFNaXzEyOE07Ci0KLQkJaWYgKG1vZHVsZV9wbHRfYmFzZSkgewotCQkJZmFsbGJhY2tfc3Rh cnQgPSBtb2R1bGVfcGx0X2Jhc2U7Ci0JCQlmYWxsYmFja19lbmQgPSBtb2R1bGVfcGx0X2Jhc2Ug KyBTWl8yRzsKLQkJfQotCX0gZWxzZSBpZiAobW9kdWxlX3BsdF9iYXNlKSB7Ci0JCXN0YXJ0ID0g bW9kdWxlX3BsdF9iYXNlOwotCQllbmQgPSBtb2R1bGVfcGx0X2Jhc2UgKyBTWl8yRzsKLQl9Ci0K LQlleGVjbWVtX2luZm8gPSAoc3RydWN0IGV4ZWNtZW1faW5mbyl7Ci0JCS5yYW5nZXMgPSB7Ci0J CQlbRVhFQ01FTV9ERUZBVUxUXSA9IHsKLQkJCQkuc3RhcnQJPSBzdGFydCwKLQkJCQkuZW5kCT0g ZW5kLAotCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKLQkJCQkuYWxpZ25tZW50ID0gMSwKLQkJ CQkuZmFsbGJhY2tfc3RhcnQJPSBmYWxsYmFja19zdGFydCwKLQkJCQkuZmFsbGJhY2tfZW5kCT0g ZmFsbGJhY2tfZW5kLAotCQkJfSwKLQkJCVtFWEVDTUVNX0tQUk9CRVNdID0gewotCQkJCS5zdGFy dAk9IFZNQUxMT0NfU1RBUlQsCi0JCQkJLmVuZAk9IFZNQUxMT0NfRU5ELAotCQkJCS5wZ3Byb3QJ PSBQQUdFX0tFUk5FTF9ST1gsCi0JCQkJLmFsaWdubWVudCA9IDEsCi0JCQl9LAotCQkJW0VYRUNN RU1fQlBGXSA9IHsKLQkJCQkuc3RhcnQJPSBWTUFMTE9DX1NUQVJULAotCQkJCS5lbmQJPSBWTUFM TE9DX0VORCwKLQkJCQkucGdwcm90CT0gUEFHRV9LRVJORUwsCi0JCQkJLmFsaWdubWVudCA9IDEs Ci0JCQl9LAotCQl9LAotCX07Ci0KLQlyZXR1cm4gJmV4ZWNtZW1faW5mbzsKLX0KLQogZW51bSBh YXJjaDY0X3JlbG9jX29wIHsKIAlSRUxPQ19PUF9OT05FLAogCVJFTE9DX09QX0FCUywKZGlmZiAt LWdpdCBhL2FyY2gvYXJtNjQvbW0vaW5pdC5jIGIvYXJjaC9hcm02NC9tbS9pbml0LmMKaW5kZXgg MDNlZmQ4NmRjZTBhLi45YjVhYjY4MThmN2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvbW0vaW5p dC5jCisrKyBiL2FyY2gvYXJtNjQvbW0vaW5pdC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk ZSA8bGludXgvaHVnZXRsYi5oPgogI2luY2x1ZGUgPGxpbnV4L2FjcGlfaW9ydC5oPgogI2luY2x1 ZGUgPGxpbnV4L2ttZW1sZWFrLmg+CisjaW5jbHVkZSA8bGludXgvZXhlY21lbS5oPgogCiAjaW5j bHVkZSA8YXNtL2Jvb3QuaD4KICNpbmNsdWRlIDxhc20vZml4bWFwLmg+CkBAIC00MzIsMyArNDMz LDE0MiBAQCB2b2lkIGR1bXBfbWVtX2xpbWl0KHZvaWQpCiAJCXByX2VtZXJnKCJNZW1vcnkgTGlt aXQ6IG5vbmVcbiIpOwogCX0KIH0KKworI2lmZGVmIENPTkZJR19FWEVDTUVNCitzdGF0aWMgdTY0 IG1vZHVsZV9kaXJlY3RfYmFzZSBfX3JvX2FmdGVyX2luaXQgPSAwOworc3RhdGljIHU2NCBtb2R1 bGVfcGx0X2Jhc2UgX19yb19hZnRlcl9pbml0ID0gMDsKKworLyoKKyAqIENob29zZSBhIHJhbmRv bSBwYWdlLWFsaWduZWQgYmFzZSBhZGRyZXNzIGZvciBhIHdpbmRvdyBvZiAnc2l6ZScgYnl0ZXMg d2hpY2gKKyAqIGVudGlyZWx5IGNvbnRhaW5zIHRoZSBpbnRlcnZhbCBbc3RhcnQsIGVuZCAtIDFd LgorICovCitzdGF0aWMgdTY0IF9faW5pdCByYW5kb21fYm91bmRpbmdfYm94KHU2NCBzaXplLCB1 NjQgc3RhcnQsIHU2NCBlbmQpCit7CisJdTY0IG1heF9wZ29mZiwgcGdvZmY7CisKKwlpZiAoKGVu ZCAtIHN0YXJ0KSA+PSBzaXplKQorCQlyZXR1cm4gMDsKKworCW1heF9wZ29mZiA9IChzaXplIC0g KGVuZCAtIHN0YXJ0KSkgLyBQQUdFX1NJWkU7CisJcGdvZmYgPSBnZXRfcmFuZG9tX3UzMl9pbmNs dXNpdmUoMCwgbWF4X3Bnb2ZmKTsKKworCXJldHVybiBzdGFydCAtIHBnb2ZmICogUEFHRV9TSVpF OworfQorCisvKgorICogTW9kdWxlcyBtYXkgZGlyZWN0bHkgcmVmZXJlbmNlIGRhdGEgYW5kIHRl eHQgYW55d2hlcmUgd2l0aGluIHRoZSBrZXJuZWwKKyAqIGltYWdlIGFuZCBvdGhlciBtb2R1bGVz LiBSZWZlcmVuY2VzIHVzaW5nIFBSRUwzMiByZWxvY2F0aW9ucyBoYXZlIGEgKy8tMkcKKyAqIHJh bmdlLCBhbmQgc28gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgZW50aXJlIGtlcm5lbCBpbWFn ZSBhbmQgYWxsIG1vZHVsZXMKKyAqIGZhbGwgd2l0aGluIGEgMkcgd2luZG93IHN1Y2ggdGhhdCB0 aGVzZSBhcmUgYWx3YXlzIHdpdGhpbiByYW5nZS4KKyAqCisgKiBNb2R1bGVzIG1heSBkaXJlY3Rs eSBicmFuY2ggdG8gZnVuY3Rpb25zIGFuZCBjb2RlIHdpdGhpbiB0aGUga2VybmVsIHRleHQsCisg KiBhbmQgdG8gZnVuY3Rpb25zIGFuZCBjb2RlIHdpdGhpbiBvdGhlciBtb2R1bGVzLiBUaGVzZSBi cmFuY2hlcyB3aWxsIHVzZQorICogQ0FMTDI2L0pVTVAyNiByZWxvY2F0aW9ucyB3aXRoIGEgKy8t MTI4TSByYW5nZS4gV2l0aG91dCBQTFRzLCB3ZSBtdXN0IGVuc3VyZQorICogdGhhdCB0aGUgZW50 aXJlIGtlcm5lbCB0ZXh0IGFuZCBhbGwgbW9kdWxlIHRleHQgZmFsbHMgd2l0aGluIGEgMTI4TSB3 aW5kb3cKKyAqIHN1Y2ggdGhhdCB0aGVzZSBhcmUgYWx3YXlzIHdpdGhpbiByYW5nZS4gV2l0aCBQ TFRzLCB3ZSBjYW4gZXhwYW5kIHRoaXMgdG8gYQorICogMkcgd2luZG93LgorICoKKyAqIFdlIGNo b3NlIHRoZSAxMjhNIHJlZ2lvbiB0byBzdXJyb3VuZCB0aGUgZW50aXJlIGtlcm5lbCBpbWFnZSAo cmF0aGVyIHRoYW4KKyAqIGp1c3QgdGhlIHRleHQpIGFzIHVzaW5nIHRoZSBzYW1lIGJvdW5kcyBm b3IgdGhlIDEyOE0gYW5kIDJHIHJlZ2lvbnMgZW5zdXJlcworICogYnkgY29uc3RydWN0aW9uIHRo YXQgd2UgbmV2ZXIgc2VsZWN0IGEgMTI4TSByZWdpb24gdGhhdCBpcyBub3QgYSBzdWJzZXQgb2YK KyAqIHRoZSAyRyByZWdpb24uIEZvciB2ZXJ5IGxhcmdlIGFuZCB1bnVzdWFsIGtlcm5lbCBjb25m aWd1cmF0aW9ucyB0aGlzIG1lYW5zCisgKiB3ZSBtYXkgZmFsbCBiYWNrIHRvIFBMVHMgd2hlcmUg dGhleSBjb3VsZCBoYXZlIGJlZW4gYXZvaWRlZCwgYnV0IHRoaXMga2VlcHMKKyAqIHRoZSBsb2dp YyBzaWduaWZpY2FudGx5IHNpbXBsZXIuCisgKi8KK3N0YXRpYyBpbnQgX19pbml0IG1vZHVsZV9p bml0X2xpbWl0cyh2b2lkKQoreworCXU2NCBrZXJuZWxfZW5kID0gKHU2NClfZW5kOworCXU2NCBr ZXJuZWxfc3RhcnQgPSAodTY0KV90ZXh0OworCXU2NCBrZXJuZWxfc2l6ZSA9IGtlcm5lbF9lbmQg LSBrZXJuZWxfc3RhcnQ7CisKKwkvKgorCSAqIFRoZSBkZWZhdWx0IG1vZHVsZXMgcmVnaW9uIGlz IHBsYWNlZCBpbW1lZGlhdGVseSBiZWxvdyB0aGUga2VybmVsCisJICogaW1hZ2UsIGFuZCBpcyBs YXJnZSBlbm91Z2ggdG8gdXNlIHRoZSBmdWxsIDJHIHJlbG9jYXRpb24gcmFuZ2UuCisJICovCisJ QlVJTERfQlVHX09OKEtJTUFHRV9WQUREUiAhPSBNT0RVTEVTX0VORCk7CisJQlVJTERfQlVHX09O KE1PRFVMRVNfVlNJWkUgPCBTWl8yRyk7CisKKwlpZiAoIWthc2xyX2VuYWJsZWQoKSkgeworCQlp ZiAoa2VybmVsX3NpemUgPCBTWl8xMjhNKQorCQkJbW9kdWxlX2RpcmVjdF9iYXNlID0ga2VybmVs X2VuZCAtIFNaXzEyOE07CisJCWlmIChrZXJuZWxfc2l6ZSA8IFNaXzJHKQorCQkJbW9kdWxlX3Bs dF9iYXNlID0ga2VybmVsX2VuZCAtIFNaXzJHOworCX0gZWxzZSB7CisJCXU2NCBtaW4gPSBrZXJu ZWxfc3RhcnQ7CisJCXU2NCBtYXggPSBrZXJuZWxfZW5kOworCisJCWlmIChJU19FTkFCTEVEKENP TkZJR19SQU5ET01JWkVfTU9EVUxFX1JFR0lPTl9GVUxMKSkgeworCQkJcHJfaW5mbygiMkcgbW9k dWxlIHJlZ2lvbiBmb3JjZWQgYnkgUkFORE9NSVpFX01PRFVMRV9SRUdJT05fRlVMTFxuIik7CisJ CX0gZWxzZSB7CisJCQltb2R1bGVfZGlyZWN0X2Jhc2UgPSByYW5kb21fYm91bmRpbmdfYm94KFNa XzEyOE0sIG1pbiwgbWF4KTsKKwkJCWlmIChtb2R1bGVfZGlyZWN0X2Jhc2UpIHsKKwkJCQltaW4g PSBtb2R1bGVfZGlyZWN0X2Jhc2U7CisJCQkJbWF4ID0gbW9kdWxlX2RpcmVjdF9iYXNlICsgU1pf MTI4TTsKKwkJCX0KKwkJfQorCisJCW1vZHVsZV9wbHRfYmFzZSA9IHJhbmRvbV9ib3VuZGluZ19i b3goU1pfMkcsIG1pbiwgbWF4KTsKKwl9CisKKwlwcl9pbmZvKCIlbGx1IHBhZ2VzIGluIHJhbmdl IGZvciBub24tUExUIHVzYWdlIiwKKwkJbW9kdWxlX2RpcmVjdF9iYXNlID8gKFNaXzEyOE0gLSBr ZXJuZWxfc2l6ZSkgLyBQQUdFX1NJWkUgOiAwKTsKKwlwcl9pbmZvKCIlbGx1IHBhZ2VzIGluIHJh bmdlIGZvciBQTFQgdXNhZ2UiLAorCQltb2R1bGVfcGx0X2Jhc2UgPyAoU1pfMkcgLSBrZXJuZWxf c2l6ZSkgLyBQQUdFX1NJWkUgOiAwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0 IGV4ZWNtZW1faW5mbyBleGVjbWVtX2luZm8gX19yb19hZnRlcl9pbml0OworCitzdHJ1Y3QgZXhl Y21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpCit7CisJdW5zaWduZWQg bG9uZyBmYWxsYmFja19zdGFydCA9IDAsIGZhbGxiYWNrX2VuZCA9IDA7CisJdW5zaWduZWQgbG9u ZyBzdGFydCA9IDAsIGVuZCA9IDA7CisKKwltb2R1bGVfaW5pdF9saW1pdHMoKTsKKworCS8qCisJ ICogV2hlcmUgcG9zc2libGUsIHByZWZlciB0byBhbGxvY2F0ZSB3aXRoaW4gZGlyZWN0IGJyYW5j aCByYW5nZSBvZiB0aGUKKwkgKiBrZXJuZWwgc3VjaCB0aGF0IG5vIFBMVHMgYXJlIG5lY2Vzc2Fy eS4KKwkgKi8KKwlpZiAobW9kdWxlX2RpcmVjdF9iYXNlKSB7CisJCXN0YXJ0ID0gbW9kdWxlX2Rp cmVjdF9iYXNlOworCQllbmQgPSBtb2R1bGVfZGlyZWN0X2Jhc2UgKyBTWl8xMjhNOworCisJCWlm IChtb2R1bGVfcGx0X2Jhc2UpIHsKKwkJCWZhbGxiYWNrX3N0YXJ0ID0gbW9kdWxlX3BsdF9iYXNl OworCQkJZmFsbGJhY2tfZW5kID0gbW9kdWxlX3BsdF9iYXNlICsgU1pfMkc7CisJCX0KKwl9IGVs c2UgaWYgKG1vZHVsZV9wbHRfYmFzZSkgeworCQlzdGFydCA9IG1vZHVsZV9wbHRfYmFzZTsKKwkJ ZW5kID0gbW9kdWxlX3BsdF9iYXNlICsgU1pfMkc7CisJfQorCisJZXhlY21lbV9pbmZvID0gKHN0 cnVjdCBleGVjbWVtX2luZm8peworCQkucmFuZ2VzID0geworCQkJW0VYRUNNRU1fREVGQVVMVF0g PSB7CisJCQkJLnN0YXJ0CT0gc3RhcnQsCisJCQkJLmVuZAk9IGVuZCwKKwkJCQkucGdwcm90CT0g UEFHRV9LRVJORUwsCisJCQkJLmFsaWdubWVudCA9IDEsCisJCQkJLmZhbGxiYWNrX3N0YXJ0CT0g ZmFsbGJhY2tfc3RhcnQsCisJCQkJLmZhbGxiYWNrX2VuZAk9IGZhbGxiYWNrX2VuZCwKKwkJCX0s CisJCQlbRVhFQ01FTV9LUFJPQkVTXSA9IHsKKwkJCQkuc3RhcnQJPSBWTUFMTE9DX1NUQVJULAor CQkJCS5lbmQJPSBWTUFMTE9DX0VORCwKKwkJCQkucGdwcm90CT0gUEFHRV9LRVJORUxfUk9YLAor CQkJCS5hbGlnbm1lbnQgPSAxLAorCQkJfSwKKwkJCVtFWEVDTUVNX0JQRl0gPSB7CisJCQkJLnN0 YXJ0CT0gVk1BTExPQ19TVEFSVCwKKwkJCQkuZW5kCT0gVk1BTExPQ19FTkQsCisJCQkJLnBncHJv dAk9IFBBR0VfS0VSTkVMLAorCQkJCS5hbGlnbm1lbnQgPSAxLAorCQkJfSwKKwkJfSwKKwl9Owor CisJcmV0dXJuICZleGVjbWVtX2luZm87Cit9CisjZW5kaWYgLyogQ09ORklHX0VYRUNNRU0gKi8K ZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL2tlcm5lbC9tb2R1bGUuYyBiL2FyY2gvbG9vbmdh cmNoL2tlcm5lbC9tb2R1bGUuYwppbmRleCBjYTZkZDdlYTE2MTAuLjM2ZDZkOWVlYjdjNyAxMDA2 NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gva2VybmVsL21vZHVsZS5jCisrKyBiL2FyY2gvbG9vbmdh cmNoL2tlcm5lbC9tb2R1bGUuYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2Z0 cmFjZS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPgotI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KICNpbmNsdWRlIDxhc20vYWx0ZXJuYXRp dmUuaD4KICNpbmNsdWRlIDxhc20vaW5zdC5oPgogI2luY2x1ZGUgPGFzbS91bndpbmQuaD4KQEAg LTQ5MSwyNCArNDkwLDYgQEAgaW50IGFwcGx5X3JlbG9jYXRlX2FkZChFbGZfU2hkciAqc2VjaGRy cywgY29uc3QgY2hhciAqc3RydGFiLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGV4 ZWNtZW1faW5mbyBleGVjbWVtX2luZm8gX19yb19hZnRlcl9pbml0OwotCi1zdHJ1Y3QgZXhlY21l bV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpCi17Ci0JZXhlY21lbV9pbmZv ID0gKHN0cnVjdCBleGVjbWVtX2luZm8pewotCQkucmFuZ2VzID0gewotCQkJW0VYRUNNRU1fREVG QVVMVF0gPSB7Ci0JCQkJLnN0YXJ0CT0gTU9EVUxFU19WQUREUiwKLQkJCQkuZW5kCT0gTU9EVUxF U19FTkQsCi0JCQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMLAotCQkJCS5hbGlnbm1lbnQgPSAxLAot CQkJfSwKLQkJfSwKLQl9OwotCi0JcmV0dXJuICZleGVjbWVtX2luZm87Ci19Ci0KIHN0YXRpYyB2 b2lkIG1vZHVsZV9pbml0X2Z0cmFjZV9wbHQoY29uc3QgRWxmX0VoZHIgKmhkciwKIAkJCQkgICBj b25zdCBFbGZfU2hkciAqc2VjaGRycywgc3RydWN0IG1vZHVsZSAqbW9kKQogewpkaWZmIC0tZ2l0 IGEvYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jIGIvYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jCmlu ZGV4IDRkZDUzNDI3ZjY1Ny4uYmY3ODlkMTE0YzJkIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJj aC9tbS9pbml0LmMKKysrIGIvYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jCkBAIC0yNCw2ICsyNCw3 IEBACiAjaW5jbHVkZSA8bGludXgvZ2ZwLmg+CiAjaW5jbHVkZSA8bGludXgvaHVnZXRsYi5oPgog I2luY2x1ZGUgPGxpbnV4L21tem9uZS5oPgorI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KIAog I2luY2x1ZGUgPGFzbS9hc20tb2Zmc2V0cy5oPgogI2luY2x1ZGUgPGFzbS9ib290aW5mby5oPgpA QCAtMjQ4LDMgKzI0OSwyMyBAQCBFWFBPUlRfU1lNQk9MKGludmFsaWRfcG1kX3RhYmxlKTsKICNl bmRpZgogcHRlX3QgaW52YWxpZF9wdGVfdGFibGVbUFRSU19QRVJfUFRFXSBfX3BhZ2VfYWxpZ25l ZF9ic3M7CiBFWFBPUlRfU1lNQk9MKGludmFsaWRfcHRlX3RhYmxlKTsKKworI2lmZGVmIENPTkZJ R19FWEVDTUVNCitzdGF0aWMgc3RydWN0IGV4ZWNtZW1faW5mbyBleGVjbWVtX2luZm8gX19yb19h ZnRlcl9pbml0OworCitzdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3Nl dHVwKHZvaWQpCit7CisJZXhlY21lbV9pbmZvID0gKHN0cnVjdCBleGVjbWVtX2luZm8peworCQku cmFuZ2VzID0geworCQkJW0VYRUNNRU1fREVGQVVMVF0gPSB7CisJCQkJLnN0YXJ0CT0gTU9EVUxF U19WQUREUiwKKwkJCQkuZW5kCT0gTU9EVUxFU19FTkQsCisJCQkJLnBncHJvdAk9IFBBR0VfS0VS TkVMLAorCQkJCS5hbGlnbm1lbnQgPSAxLAorCQkJfSwKKwkJfSwKKwl9OworCisJcmV0dXJuICZl eGVjbWVtX2luZm87Cit9CisjZW5kaWYgLyogQ09ORklHX0VYRUNNRU0gKi8KZGlmZiAtLWdpdCBh L2FyY2gvbWlwcy9rZXJuZWwvbW9kdWxlLmMgYi9hcmNoL21pcHMva2VybmVsL21vZHVsZS5jCmlu ZGV4IDU5MjI1YTNjZjkxOC4uYmEwZjYyZDhlZmY1IDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2Vy bmVsL21vZHVsZS5jCisrKyBiL2FyY2gvbWlwcy9rZXJuZWwvbW9kdWxlLmMKQEAgLTEzLDE0ICsx MywxMiBAQAogI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CiAj aW5jbHVkZSA8bGludXgvbnVtYS5oPgotI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNs dWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51 eC9zdHJpbmcuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KICNpbmNsdWRlIDxsaW51eC9z cGlubG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L2p1bXBfbGFiZWwuaD4KLSNpbmNsdWRlIDxsaW51 eC9leGVjbWVtLmg+CiAjaW5jbHVkZSA8YXNtL2p1bXBfbGFiZWwuaD4KIAogc3RydWN0IG1pcHNf aGkxNiB7CkBAIC0zMiwyNiArMzAsNiBAQCBzdHJ1Y3QgbWlwc19oaTE2IHsKIHN0YXRpYyBMSVNU X0hFQUQoZGJlX2xpc3QpOwogc3RhdGljIERFRklORV9TUElOTE9DSyhkYmVfbG9jayk7CiAKLSNp ZmRlZiBNT0RVTEVTX1ZBRERSCi1zdGF0aWMgc3RydWN0IGV4ZWNtZW1faW5mbyBleGVjbWVtX2lu Zm8gX19yb19hZnRlcl9pbml0OwotCi1zdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21l bV9hcmNoX3NldHVwKHZvaWQpCi17Ci0JZXhlY21lbV9pbmZvID0gKHN0cnVjdCBleGVjbWVtX2lu Zm8pewotCQkucmFuZ2VzID0gewotCQkJW0VYRUNNRU1fREVGQVVMVF0gPSB7Ci0JCQkJLnN0YXJ0 CT0gTU9EVUxFU19WQUREUiwKLQkJCQkuZW5kCT0gTU9EVUxFU19FTkQsCi0JCQkJLnBncHJvdAk9 IFBBR0VfS0VSTkVMLAotCQkJCS5hbGlnbm1lbnQgPSAxLAotCQkJfSwKLQkJfSwKLQl9OwotCi0J cmV0dXJuICZleGVjbWVtX2luZm87Ci19Ci0jZW5kaWYKLQogc3RhdGljIHZvaWQgYXBwbHlfcl9t aXBzXzMyKHUzMiAqbG9jYXRpb24sIHUzMiBiYXNlLCBFbGZfQWRkciB2KQogewogCSpsb2NhdGlv biA9IGJhc2UgKyB2OwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL2luaXQuYyBiL2FyY2gvbWlw cy9tbS9pbml0LmMKaW5kZXggMzlmMTI5MjA1YjBjLi40NTgzZDFhMmE3M2UgMTAwNjQ0Ci0tLSBh L2FyY2gvbWlwcy9tbS9pbml0LmMKKysrIGIvYXJjaC9taXBzL21tL2luaXQuYwpAQCAtMzEsNiAr MzEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2dmcC5oPgogI2luY2x1ZGUgPGxpbnV4L2tjb3JlLmg+ CiAjaW5jbHVkZSA8bGludXgvaW5pdHJkLmg+CisjaW5jbHVkZSA8bGludXgvZXhlY21lbS5oPgog CiAjaW5jbHVkZSA8YXNtL2Jvb3RpbmZvLmg+CiAjaW5jbHVkZSA8YXNtL2NhY2hlY3RsLmg+CkBA IC01NzYsMyArNTc3LDI1IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGludmFsaWRfcG1kX3RhYmxlKTsK ICNlbmRpZgogcHRlX3QgaW52YWxpZF9wdGVfdGFibGVbUFRSU19QRVJfUFRFXSBfX3BhZ2VfYWxp Z25lZF9ic3M7CiBFWFBPUlRfU1lNQk9MKGludmFsaWRfcHRlX3RhYmxlKTsKKworI2lmZGVmIENP TkZJR19FWEVDTUVNCisjaWZkZWYgTU9EVUxFU19WQUREUgorc3RhdGljIHN0cnVjdCBleGVjbWVt X2luZm8gZXhlY21lbV9pbmZvIF9fcm9fYWZ0ZXJfaW5pdDsKKworc3RydWN0IGV4ZWNtZW1faW5m byBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQoreworCWV4ZWNtZW1faW5mbyA9IChz dHJ1Y3QgZXhlY21lbV9pbmZvKXsKKwkJLnJhbmdlcyA9IHsKKwkJCVtFWEVDTUVNX0RFRkFVTFRd ID0geworCQkJCS5zdGFydAk9IE1PRFVMRVNfVkFERFIsCisJCQkJLmVuZAk9IE1PRFVMRVNfRU5E LAorCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKKwkJCQkuYWxpZ25tZW50ID0gMSwKKwkJCX0s CisJCX0sCisJfTsKKworCXJldHVybiAmZXhlY21lbV9pbmZvOworfQorI2VuZGlmCisjZW5kaWYg LyogQ09ORklHX0VYRUNNRU0gKi8KZGlmZiAtLWdpdCBhL2FyY2gvbmlvczIva2VybmVsL21vZHVs ZS5jIGIvYXJjaC9uaW9zMi9rZXJuZWwvbW9kdWxlLmMKaW5kZXggMGQxZWU4NjYzMWZjLi5mNDQ4 MzI0MzU3OGQgMTAwNjQ0Ci0tLSBhL2FyY2gvbmlvczIva2VybmVsL21vZHVsZS5jCisrKyBiL2Fy Y2gvbmlvczIva2VybmVsL21vZHVsZS5jCkBAIC0xMywzMyArMTMsMTMgQEAKICNpbmNsdWRlIDxs aW51eC9tb2R1bGVsb2FkZXIuaD4KICNpbmNsdWRlIDxsaW51eC9lbGYuaD4KICNpbmNsdWRlIDxs aW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4K ICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KLSNpbmNsdWRlIDxsaW51eC9leGVjbWVtLmg+CiAK ICNpbmNsdWRlIDxhc20vY2FjaGVmbHVzaC5oPgogCi1zdGF0aWMgc3RydWN0IGV4ZWNtZW1faW5m byBleGVjbWVtX2luZm8gX19yb19hZnRlcl9pbml0OwotCi1zdHJ1Y3QgZXhlY21lbV9pbmZvIF9f aW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpCi17Ci0JZXhlY21lbV9pbmZvID0gKHN0cnVj dCBleGVjbWVtX2luZm8pewotCQkucmFuZ2VzID0gewotCQkJW0VYRUNNRU1fREVGQVVMVF0gPSB7 Ci0JCQkJLnN0YXJ0CT0gTU9EVUxFU19WQUREUiwKLQkJCQkuZW5kCT0gTU9EVUxFU19FTkQsCi0J CQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMX0VYRUMsCi0JCQkJLmFsaWdubWVudCA9IDEsCi0JCQl9 LAotCQl9LAotCX07Ci0KLQlyZXR1cm4gJmV4ZWNtZW1faW5mbzsKLX0KLQogaW50IGFwcGx5X3Jl bG9jYXRlX2FkZChFbGYzMl9TaGRyICpzZWNoZHJzLCBjb25zdCBjaGFyICpzdHJ0YWIsCiAJCQl1 bnNpZ25lZCBpbnQgc3ltaW5kZXgsIHVuc2lnbmVkIGludCByZWxzZWMsCiAJCQlzdHJ1Y3QgbW9k dWxlICptb2QpCmRpZmYgLS1naXQgYS9hcmNoL25pb3MyL21tL2luaXQuYyBiL2FyY2gvbmlvczIv bW0vaW5pdC5jCmluZGV4IDdiYzgyZWU4ODljOS4uMzQ1OWRmMjhhZmVlIDEwMDY0NAotLS0gYS9h cmNoL25pb3MyL21tL2luaXQuYworKysgYi9hcmNoL25pb3MyL21tL2luaXQuYwpAQCAtMjYsNiAr MjYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L21lbWJsb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvc2xh Yi5oPgogI2luY2x1ZGUgPGxpbnV4L2JpbmZtdHMuaD4KKyNpbmNsdWRlIDxsaW51eC9leGVjbWVt Lmg+CiAKICNpbmNsdWRlIDxhc20vc2V0dXAuaD4KICNpbmNsdWRlIDxhc20vcGFnZS5oPgpAQCAt MTQzLDMgKzE0NCwyMyBAQCBzdGF0aWMgY29uc3QgcGdwcm90X3QgcHJvdGVjdGlvbl9tYXBbMTZd ID0gewogCVtWTV9TSEFSRUQgfCBWTV9FWEVDIHwgVk1fV1JJVEUgfCBWTV9SRUFEXQk9IE1LUCgx LCAxLCAxKQogfTsKIERFQ0xBUkVfVk1fR0VUX1BBR0VfUFJPVAorCisjaWZkZWYgQ09ORklHX0VY RUNNRU0KK3N0YXRpYyBzdHJ1Y3QgZXhlY21lbV9pbmZvIGV4ZWNtZW1faW5mbyBfX3JvX2FmdGVy X2luaXQ7CisKK3N0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAo dm9pZCkKK3sKKwlleGVjbWVtX2luZm8gPSAoc3RydWN0IGV4ZWNtZW1faW5mbyl7CisJCS5yYW5n ZXMgPSB7CisJCQlbRVhFQ01FTV9ERUZBVUxUXSA9IHsKKwkJCQkuc3RhcnQJPSBNT0RVTEVTX1ZB RERSLAorCQkJCS5lbmQJPSBNT0RVTEVTX0VORCwKKwkJCQkucGdwcm90CT0gUEFHRV9LRVJORUxf RVhFQywKKwkJCQkuYWxpZ25tZW50ID0gMSwKKwkJCX0sCisJCX0sCisJfTsKKworCXJldHVybiAm ZXhlY21lbV9pbmZvOworfQorI2VuZGlmIC8qIENPTkZJR19FWEVDTUVNICovCmRpZmYgLS1naXQg YS9hcmNoL3BhcmlzYy9rZXJuZWwvbW9kdWxlLmMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvbW9kdWxl LmMKaW5kZXggYmRmYTg1ZTEwYzFiLi40ZTVkOTkxYjJiNjUgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFy aXNjL2tlcm5lbC9tb2R1bGUuYworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvbW9kdWxlLmMKQEAg LTQxLDcgKzQxLDYgQEAKIAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZWxvYWRlci5oPgogI2luY2x1 ZGUgPGxpbnV4L2VsZi5oPgotI2luY2x1ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxs aW51eC9mcy5oPgogI2luY2x1ZGUgPGxpbnV4L2Z0cmFjZS5oPgogI2luY2x1ZGUgPGxpbnV4L3N0 cmluZy5oPgpAQCAtNDksNyArNDgsNiBAQAogI2luY2x1ZGUgPGxpbnV4L2J1Zy5oPgogI2luY2x1 ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4 L2V4ZWNtZW0uaD4KIAogI2luY2x1ZGUgPGFzbS91bndpbmQuaD4KICNpbmNsdWRlIDxhc20vc2Vj dGlvbnMuaD4KQEAgLTE3NCwyNCArMTcyLDYgQEAgc3RhdGljIGlubGluZSBpbnQgcmVhc3NlbWJs ZV8yMihpbnQgYXMyMikKIAkJKChhczIyICYgMHgwMDAzZmYpIDw8IDMpKTsKIH0KIAotc3RhdGlj IHN0cnVjdCBleGVjbWVtX2luZm8gZXhlY21lbV9pbmZvIF9fcm9fYWZ0ZXJfaW5pdDsKLQotc3Ry dWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQotewotCWV4 ZWNtZW1faW5mbyA9IChzdHJ1Y3QgZXhlY21lbV9pbmZvKXsKLQkJLnJhbmdlcyA9IHsKLQkJCVtF WEVDTUVNX0RFRkFVTFRdID0gewotCQkJCS5zdGFydAk9IFZNQUxMT0NfU1RBUlQsCi0JCQkJLmVu ZAk9IFZNQUxMT0NfRU5ELAotCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTF9SV1gsCi0JCQkJLmFs aWdubWVudCA9IDEsCi0JCQl9LAotCQl9LAotCX07Ci0KLQlyZXR1cm4gJmV4ZWNtZW1faW5mbzsK LX0KLQogI2lmbmRlZiBDT05GSUdfNjRCSVQKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBj b3VudF9nb3RzKGNvbnN0IEVsZl9SZWxhICpyZWxhLCB1bnNpZ25lZCBsb25nIG4pCiB7CmRpZmYg LS1naXQgYS9hcmNoL3BhcmlzYy9tbS9pbml0LmMgYi9hcmNoL3BhcmlzYy9tbS9pbml0LmMKaW5k ZXggZjg3NmFmNTZlMTNmLi4zNGQ5MWNiOGIyNTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL21t L2luaXQuYworKysgYi9hcmNoL3BhcmlzYy9tbS9pbml0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNp bmNsdWRlIDxsaW51eC9ub2RlbWFzay5oPgkvKiBmb3Igbm9kZV9vbmxpbmVfbWFwICovCiAjaW5j bHVkZSA8bGludXgvcGFnZW1hcC5oPgkvKiBmb3IgcmVsZWFzZV9wYWdlcyAqLwogI2luY2x1ZGUg PGxpbnV4L2NvbXBhdC5oPgorI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KIAogI2luY2x1ZGUg PGFzbS9wZ2FsbG9jLmg+CiAjaW5jbHVkZSA8YXNtL3RsYi5oPgpAQCAtNDgxLDcgKzQ4Miw3IEBA IHZvaWQgZnJlZV9pbml0bWVtKHZvaWQpCiAJLyogZmluYWxseSBkdW1wIGFsbCB0aGUgaW5zdHJ1 Y3Rpb25zIHdoaWNoIHdlcmUgY2FjaGVkLCBzaW5jZSB0aGUKIAkgKiBwYWdlcyBhcmUgbm8tbG9u Z2VyIGV4ZWN1dGFibGUgKi8KIAlmbHVzaF9pY2FjaGVfcmFuZ2UoaW5pdF9iZWdpbiwgaW5pdF9l bmQpOwotCQorCiAJZnJlZV9pbml0bWVtX2RlZmF1bHQoUE9JU09OX0ZSRUVfSU5JVE1FTSk7CiAK IAkvKiBzZXQgdXAgYSBuZXcgbGVkIHN0YXRlIG9uIHN5c3RlbXMgc2hpcHBlZCBMRUQgU3RhdGUg cGFuZWwgKi8KQEAgLTk5MiwzICs5OTMsMjMgQEAgc3RhdGljIGNvbnN0IHBncHJvdF90IHByb3Rl Y3Rpb25fbWFwWzE2XSA9IHsKIAlbVk1fU0hBUkVEIHwgVk1fRVhFQyB8IFZNX1dSSVRFIHwgVk1f UkVBRF0JPSBQQUdFX1JXWAogfTsKIERFQ0xBUkVfVk1fR0VUX1BBR0VfUFJPVAorCisjaWZkZWYg Q09ORklHX0VYRUNNRU0KK3N0YXRpYyBzdHJ1Y3QgZXhlY21lbV9pbmZvIGV4ZWNtZW1faW5mbyBf X3JvX2FmdGVyX2luaXQ7CisKK3N0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2Fy Y2hfc2V0dXAodm9pZCkKK3sKKwlleGVjbWVtX2luZm8gPSAoc3RydWN0IGV4ZWNtZW1faW5mbyl7 CisJCS5yYW5nZXMgPSB7CisJCQlbRVhFQ01FTV9ERUZBVUxUXSA9IHsKKwkJCQkuc3RhcnQJPSBW TUFMTE9DX1NUQVJULAorCQkJCS5lbmQJPSBWTUFMTE9DX0VORCwKKwkJCQkucGdwcm90CT0gUEFH RV9LRVJORUxfUldYLAorCQkJCS5hbGlnbm1lbnQgPSAxLAorCQkJfSwKKwkJfSwKKwl9OworCisJ cmV0dXJuICZleGVjbWVtX2luZm87Cit9CisjZW5kaWYgLyogQ09ORklHX0VYRUNNRU0gKi8KZGlm ZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvbW9kdWxlLmMgYi9hcmNoL3Bvd2VycGMva2Vy bmVsL21vZHVsZS5jCmluZGV4IDJhMjNjZjdlMTQxYi4uNzdlYTgyZTlkYzVmIDEwMDY0NAotLS0g YS9hcmNoL3Bvd2VycGMva2VybmVsL21vZHVsZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwv bW9kdWxlLmMKQEAgLTcsMTAgKzcsOCBAQAogI2luY2x1ZGUgPGxpbnV4L2VsZi5oPgogI2luY2x1 ZGUgPGxpbnV4L21vZHVsZWxvYWRlci5oPgogI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgotI2luY2x1 ZGUgPGxpbnV4L3ZtYWxsb2MuaD4KICNpbmNsdWRlIDxsaW51eC9tbS5oPgogI2luY2x1ZGUgPGxp bnV4L2J1Zy5oPgotI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KICNpbmNsdWRlIDxhc20vbW9k dWxlLmg+CiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGFzbS9maXJtd2Fy ZS5oPgpAQCAtODksNjQgKzg3LDMgQEAgaW50IG1vZHVsZV9maW5hbGl6ZShjb25zdCBFbGZfRWhk ciAqaGRyLAogCiAJcmV0dXJuIDA7CiB9Ci0KLXN0YXRpYyBzdHJ1Y3QgZXhlY21lbV9pbmZvIGV4 ZWNtZW1faW5mbyBfX3JvX2FmdGVyX2luaXQ7Ci0KLXN0cnVjdCBleGVjbWVtX2luZm8gX19pbml0 ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZCkKLXsKLQlwZ3Byb3RfdCBrcHJvYmVzX3Byb3QgPSBz dHJpY3RfbW9kdWxlX3J3eF9lbmFibGVkKCkgPyBQQUdFX0tFUk5FTF9ST1ggOiBQQUdFX0tFUk5F TF9FWEVDOwotCXBncHJvdF90IHByb3QgPSBzdHJpY3RfbW9kdWxlX3J3eF9lbmFibGVkKCkgPyBQ QUdFX0tFUk5FTCA6IFBBR0VfS0VSTkVMX0VYRUM7Ci0JdW5zaWduZWQgbG9uZyBmYWxsYmFja19z dGFydCA9IDAsIGZhbGxiYWNrX2VuZCA9IDA7Ci0JdW5zaWduZWQgbG9uZyBzdGFydCwgZW5kOwot Ci0JLyoKLQkgKiBCT09LM1NfMzIgYW5kIDh4eCBkZWZpbmUgTU9EVUxFU19WQUREUiBmb3IgdGV4 dCBhbGxvY2F0aW9ucyBhbmQKLQkgKiBhbGxvdyBhbGxvY2F0aW5nIGRhdGEgaW4gdGhlIGVudGly ZSB2bWFsbG9jIHNwYWNlCi0JICovCi0jaWZkZWYgTU9EVUxFU19WQUREUgotCXVuc2lnbmVkIGxv bmcgbGltaXQgPSAodW5zaWduZWQgbG9uZylfZXRleHQgLSBTWl8zMk07Ci0KLQlCVUlMRF9CVUdf T04oVEFTS19TSVpFID4gTU9EVUxFU19WQUREUik7Ci0KLQkvKiBGaXJzdCB0cnkgd2l0aGluIDMy TSBsaW1pdCBmcm9tIF9ldGV4dCB0byBhdm9pZCBicmFuY2ggdHJhbXBvbGluZXMgKi8KLQlpZiAo TU9EVUxFU19WQUREUiA8IFBBR0VfT0ZGU0VUICYmIE1PRFVMRVNfRU5EID4gbGltaXQpIHsKLQkJ c3RhcnQgPSBsaW1pdDsKLQkJZmFsbGJhY2tfc3RhcnQgPSBNT0RVTEVTX1ZBRERSOwotCQlmYWxs YmFja19lbmQgPSBNT0RVTEVTX0VORDsKLQl9IGVsc2UgewotCQlzdGFydCA9IE1PRFVMRVNfVkFE RFI7Ci0JfQotCi0JZW5kID0gTU9EVUxFU19FTkQ7Ci0jZWxzZQotCXN0YXJ0ID0gVk1BTExPQ19T VEFSVDsKLQllbmQgPSBWTUFMTE9DX0VORDsKLSNlbmRpZgotCi0JZXhlY21lbV9pbmZvID0gKHN0 cnVjdCBleGVjbWVtX2luZm8pewotCQkucmFuZ2VzID0gewotCQkJW0VYRUNNRU1fREVGQVVMVF0g PSB7Ci0JCQkJLnN0YXJ0CT0gc3RhcnQsCi0JCQkJLmVuZAk9IGVuZCwKLQkJCQkucGdwcm90CT0g cHJvdCwKLQkJCQkuYWxpZ25tZW50ID0gMSwKLQkJCQkuZmFsbGJhY2tfc3RhcnQJPSBmYWxsYmFj a19zdGFydCwKLQkJCQkuZmFsbGJhY2tfZW5kCT0gZmFsbGJhY2tfZW5kLAotCQkJfSwKLQkJCVtF WEVDTUVNX0tQUk9CRVNdID0gewotCQkJCS5zdGFydAk9IFZNQUxMT0NfU1RBUlQsCi0JCQkJLmVu ZAk9IFZNQUxMT0NfRU5ELAotCQkJCS5wZ3Byb3QJPSBrcHJvYmVzX3Byb3QsCi0JCQkJLmFsaWdu bWVudCA9IDEsCi0JCQl9LAotCQkJW0VYRUNNRU1fTU9EVUxFX0RBVEFdID0gewotCQkJCS5zdGFy dAk9IFZNQUxMT0NfU1RBUlQsCi0JCQkJLmVuZAk9IFZNQUxMT0NfRU5ELAotCQkJCS5wZ3Byb3QJ PSBQQUdFX0tFUk5FTCwKLQkJCQkuYWxpZ25tZW50ID0gMSwKLQkJCX0sCi0JCX0sCi0JfTsKLQot CXJldHVybiAmZXhlY21lbV9pbmZvOwotfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL21l bS5jIGIvYXJjaC9wb3dlcnBjL21tL21lbS5jCmluZGV4IDNhNDQwMDA0Yjk3ZC4uNWRlNjJhM2Mx ZDRiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vbWVtLmMKKysrIGIvYXJjaC9wb3dlcnBj L21tL21lbS5jCkBAIC0xNiw2ICsxNiw3IEBACiAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgog I2luY2x1ZGUgPGxpbnV4L3N1c3BlbmQuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtZGlyZWN0Lmg+ CisjaW5jbHVkZSA8bGludXgvZXhlY21lbS5oPgogCiAjaW5jbHVkZSA8YXNtL3N3aW90bGIuaD4K ICNpbmNsdWRlIDxhc20vbWFjaGRlcC5oPgpAQCAtNDA2LDMgKzQwNyw2NiBAQCBpbnQgZGV2bWVt X2lzX2FsbG93ZWQodW5zaWduZWQgbG9uZyBwZm4pCiAgKiB0aGUgRUhFQSBkcml2ZXIuIERyb3Ag dGhpcyB3aGVuIGRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9laGVhIGlzIHJlbW92ZWQuCiAgKi8K IEVYUE9SVF9TWU1CT0xfR1BMKHdhbGtfc3lzdGVtX3JhbV9yYW5nZSk7CisKKyNpZmRlZiBDT05G SUdfRVhFQ01FTQorc3RhdGljIHN0cnVjdCBleGVjbWVtX2luZm8gZXhlY21lbV9pbmZvIF9fcm9f YWZ0ZXJfaW5pdDsKKworc3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9z ZXR1cCh2b2lkKQoreworCXBncHJvdF90IGtwcm9iZXNfcHJvdCA9IHN0cmljdF9tb2R1bGVfcnd4 X2VuYWJsZWQoKSA/IFBBR0VfS0VSTkVMX1JPWCA6IFBBR0VfS0VSTkVMX0VYRUM7CisJcGdwcm90 X3QgcHJvdCA9IHN0cmljdF9tb2R1bGVfcnd4X2VuYWJsZWQoKSA/IFBBR0VfS0VSTkVMIDogUEFH RV9LRVJORUxfRVhFQzsKKwl1bnNpZ25lZCBsb25nIGZhbGxiYWNrX3N0YXJ0ID0gMCwgZmFsbGJh Y2tfZW5kID0gMDsKKwl1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisKKwkvKgorCSAqIEJPT0sz U18zMiBhbmQgOHh4IGRlZmluZSBNT0RVTEVTX1ZBRERSIGZvciB0ZXh0IGFsbG9jYXRpb25zIGFu ZAorCSAqIGFsbG93IGFsbG9jYXRpbmcgZGF0YSBpbiB0aGUgZW50aXJlIHZtYWxsb2Mgc3BhY2UK KwkgKi8KKyNpZmRlZiBNT0RVTEVTX1ZBRERSCisJdW5zaWduZWQgbG9uZyBsaW1pdCA9ICh1bnNp Z25lZCBsb25nKV9ldGV4dCAtIFNaXzMyTTsKKworCUJVSUxEX0JVR19PTihUQVNLX1NJWkUgPiBN T0RVTEVTX1ZBRERSKTsKKworCS8qIEZpcnN0IHRyeSB3aXRoaW4gMzJNIGxpbWl0IGZyb20gX2V0 ZXh0IHRvIGF2b2lkIGJyYW5jaCB0cmFtcG9saW5lcyAqLworCWlmIChNT0RVTEVTX1ZBRERSIDwg UEFHRV9PRkZTRVQgJiYgTU9EVUxFU19FTkQgPiBsaW1pdCkgeworCQlzdGFydCA9IGxpbWl0Owor CQlmYWxsYmFja19zdGFydCA9IE1PRFVMRVNfVkFERFI7CisJCWZhbGxiYWNrX2VuZCA9IE1PRFVM RVNfRU5EOworCX0gZWxzZSB7CisJCXN0YXJ0ID0gTU9EVUxFU19WQUREUjsKKwl9CisKKwllbmQg PSBNT0RVTEVTX0VORDsKKyNlbHNlCisJc3RhcnQgPSBWTUFMTE9DX1NUQVJUOworCWVuZCA9IFZN QUxMT0NfRU5EOworI2VuZGlmCisKKwlleGVjbWVtX2luZm8gPSAoc3RydWN0IGV4ZWNtZW1faW5m byl7CisJCS5yYW5nZXMgPSB7CisJCQlbRVhFQ01FTV9ERUZBVUxUXSA9IHsKKwkJCQkuc3RhcnQJ PSBzdGFydCwKKwkJCQkuZW5kCT0gZW5kLAorCQkJCS5wZ3Byb3QJPSBwcm90LAorCQkJCS5hbGln bm1lbnQgPSAxLAorCQkJCS5mYWxsYmFja19zdGFydAk9IGZhbGxiYWNrX3N0YXJ0LAorCQkJCS5m YWxsYmFja19lbmQJPSBmYWxsYmFja19lbmQsCisJCQl9LAorCQkJW0VYRUNNRU1fS1BST0JFU10g PSB7CisJCQkJLnN0YXJ0CT0gVk1BTExPQ19TVEFSVCwKKwkJCQkuZW5kCT0gVk1BTExPQ19FTkQs CisJCQkJLnBncHJvdAk9IGtwcm9iZXNfcHJvdCwKKwkJCQkuYWxpZ25tZW50ID0gMSwKKwkJCX0s CisJCQlbRVhFQ01FTV9NT0RVTEVfREFUQV0gPSB7CisJCQkJLnN0YXJ0CT0gVk1BTExPQ19TVEFS VCwKKwkJCQkuZW5kCT0gVk1BTExPQ19FTkQsCisJCQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMLAor CQkJCS5hbGlnbm1lbnQgPSAxLAorCQkJfSwKKwkJfSwKKwl9OworCisJcmV0dXJuICZleGVjbWVt X2luZm87Cit9CisjZW5kaWYgLyogQ09ORklHX0VYRUNNRU0gKi8KZGlmZiAtLWdpdCBhL2FyY2gv cmlzY3Yva2VybmVsL21vZHVsZS5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvbW9kdWxlLmMKaW5kZXgg MGU2NDE1ZjAwZmNhLi45MDZmOWEzYTVkNjUgMTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva2VybmVs L21vZHVsZS5jCisrKyBiL2FyY2gvcmlzY3Yva2VybmVsL21vZHVsZS5jCkBAIC0xMSwxMCArMTEs OCBAQAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1ZGUgPGxpbnV4L2xvZzIuaD4K ICNpbmNsdWRlIDxsaW51eC9tb2R1bGVsb2FkZXIuaD4KLSNpbmNsdWRlIDxsaW51eC92bWFsbG9j Lmg+CiAjaW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KICNpbmNsdWRlIDxsaW51eC9wZ3RhYmxlLmg+ Ci0jaW5jbHVkZSA8bGludXgvZXhlY21lbS5oPgogI2luY2x1ZGUgPGFzbS9hbHRlcm5hdGl2ZS5o PgogI2luY2x1ZGUgPGFzbS9zZWN0aW9ucy5oPgogCkBAIC05MDYsMzggKzkwNCw2IEBAIGludCBh cHBseV9yZWxvY2F0ZV9hZGQoRWxmX1NoZHIgKnNlY2hkcnMsIGNvbnN0IGNoYXIgKnN0cnRhYiwK IAlyZXR1cm4gMDsKIH0KIAotI2lmZGVmIENPTkZJR19NTVUKLXN0YXRpYyBzdHJ1Y3QgZXhlY21l bV9pbmZvIGV4ZWNtZW1faW5mbyBfX3JvX2FmdGVyX2luaXQ7Ci0KLXN0cnVjdCBleGVjbWVtX2lu Zm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZCkKLXsKLQlleGVjbWVtX2luZm8gPSAo c3RydWN0IGV4ZWNtZW1faW5mbyl7Ci0JCS5yYW5nZXMgPSB7Ci0JCQlbRVhFQ01FTV9ERUZBVUxU XSA9IHsKLQkJCQkuc3RhcnQJPSBNT0RVTEVTX1ZBRERSLAotCQkJCS5lbmQJPSBNT0RVTEVTX0VO RCwKLQkJCQkucGdwcm90CT0gUEFHRV9LRVJORUwsCi0JCQkJLmFsaWdubWVudCA9IDEsCi0JCQl9 LAotCQkJW0VYRUNNRU1fS1BST0JFU10gPSB7Ci0JCQkJLnN0YXJ0CT0gVk1BTExPQ19TVEFSVCwK LQkJCQkuZW5kCT0gVk1BTExPQ19FTkQsCi0JCQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMX1JFQURf RVhFQywKLQkJCQkuYWxpZ25tZW50ID0gMSwKLQkJCX0sCi0JCQlbRVhFQ01FTV9CUEZdID0gewot CQkJCS5zdGFydAk9IEJQRl9KSVRfUkVHSU9OX1NUQVJULAotCQkJCS5lbmQJPSBCUEZfSklUX1JF R0lPTl9FTkQsCi0JCQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMLAotCQkJCS5hbGlnbm1lbnQgPSBQ QUdFX1NJWkUsCi0JCQl9LAotCQl9LAotCX07Ci0KLQlyZXR1cm4gJmV4ZWNtZW1faW5mbzsKLX0K LSNlbmRpZgotCiBpbnQgbW9kdWxlX2ZpbmFsaXplKGNvbnN0IEVsZl9FaGRyICpoZHIsCiAJCSAg ICBjb25zdCBFbGZfU2hkciAqc2VjaGRycywKIAkJICAgIHN0cnVjdCBtb2R1bGUgKm1lKQpkaWZm IC0tZ2l0IGEvYXJjaC9yaXNjdi9tbS9pbml0LmMgYi9hcmNoL3Jpc2N2L21tL2luaXQuYwppbmRl eCBmZThlMTU5Mzk0ZDguLmE4MjkwNjA5NTU0ZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9tbS9p bml0LmMKKysrIGIvYXJjaC9yaXNjdi9tbS9pbml0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs dWRlIDxsaW51eC9lbGYuaD4KICNlbmRpZgogI2luY2x1ZGUgPGxpbnV4L2tmZW5jZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KIAogI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KICNpbmNs dWRlIDxhc20vaW8uaD4KQEAgLTE0ODEsMyArMTQ4MiwzNyBAQCB2b2lkIF9faW5pdCBwZ3RhYmxl X2NhY2hlX2luaXQodm9pZCkKIAkJcHJlYWxsb2NhdGVfcGdkX3BhZ2VzX3JhbmdlKE1PRFVMRVNf VkFERFIsIE1PRFVMRVNfRU5ELCAiYnBmL21vZHVsZXMiKTsKIH0KICNlbmRpZgorCisjaWZkZWYg Q09ORklHX0VYRUNNRU0KKyNpZmRlZiBDT05GSUdfTU1VCitzdGF0aWMgc3RydWN0IGV4ZWNtZW1f aW5mbyBleGVjbWVtX2luZm8gX19yb19hZnRlcl9pbml0OworCitzdHJ1Y3QgZXhlY21lbV9pbmZv IF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpCit7CisJZXhlY21lbV9pbmZvID0gKHN0 cnVjdCBleGVjbWVtX2luZm8peworCQkucmFuZ2VzID0geworCQkJW0VYRUNNRU1fREVGQVVMVF0g PSB7CisJCQkJLnN0YXJ0CT0gTU9EVUxFU19WQUREUiwKKwkJCQkuZW5kCT0gTU9EVUxFU19FTkQs CisJCQkJLnBncHJvdAk9IFBBR0VfS0VSTkVMLAorCQkJCS5hbGlnbm1lbnQgPSAxLAorCQkJfSwK KwkJCVtFWEVDTUVNX0tQUk9CRVNdID0geworCQkJCS5zdGFydAk9IFZNQUxMT0NfU1RBUlQsCisJ CQkJLmVuZAk9IFZNQUxMT0NfRU5ELAorCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTF9SRUFEX0VY RUMsCisJCQkJLmFsaWdubWVudCA9IDEsCisJCQl9LAorCQkJW0VYRUNNRU1fQlBGXSA9IHsKKwkJ CQkuc3RhcnQJPSBCUEZfSklUX1JFR0lPTl9TVEFSVCwKKwkJCQkuZW5kCT0gQlBGX0pJVF9SRUdJ T05fRU5ELAorCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKKwkJCQkuYWxpZ25tZW50ID0gUEFH RV9TSVpFLAorCQkJfSwKKwkJfSwKKwl9OworCisJcmV0dXJuICZleGVjbWVtX2luZm87Cit9Cisj ZW5kaWYgLyogQ09ORklHX01NVSAqLworI2VuZGlmIC8qIENPTkZJR19FWEVDTUVNICovCmRpZmYg LS1naXQgYS9hcmNoL3MzOTAva2VybmVsL21vZHVsZS5jIGIvYXJjaC9zMzkwL2tlcm5lbC9tb2R1 bGUuYwppbmRleCA3ZmVlNjRmZGMxYmIuLjkxZTIwN2I1MDM5NCAxMDA2NDQKLS0tIGEvYXJjaC9z MzkwL2tlcm5lbC9tb2R1bGUuYworKysgYi9hcmNoL3MzOTAva2VybmVsL21vZHVsZS5jCkBAIC0z NywzMyArMzcsNiBAQAogCiAjZGVmaW5lIFBMVF9FTlRSWV9TSVpFIDIyCiAKLXN0YXRpYyBzdHJ1 Y3QgZXhlY21lbV9pbmZvIGV4ZWNtZW1faW5mbyBfX3JvX2FmdGVyX2luaXQ7Ci0KLXN0cnVjdCBl eGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZCkKLXsKLQl1bnNpZ25l ZCBsb25nIG1vZHVsZV9sb2FkX29mZnNldCA9IDA7Ci0JdW5zaWduZWQgbG9uZyBzdGFydDsKLQot CWlmIChrYXNscl9lbmFibGVkKCkpCi0JCW1vZHVsZV9sb2FkX29mZnNldCA9IGdldF9yYW5kb21f dTMyX2luY2x1c2l2ZSgxLCAxMDI0KSAqIFBBR0VfU0laRTsKLQotCXN0YXJ0ID0gTU9EVUxFU19W QUREUiArIG1vZHVsZV9sb2FkX29mZnNldDsKLQotCWV4ZWNtZW1faW5mbyA9IChzdHJ1Y3QgZXhl Y21lbV9pbmZvKXsKLQkJLnJhbmdlcyA9IHsKLQkJCVtFWEVDTUVNX0RFRkFVTFRdID0gewotCQkJ CS5mbGFncwk9IEVYRUNNRU1fS0FTQU5fU0hBRE9XLAotCQkJCS5zdGFydAk9IHN0YXJ0LAotCQkJ CS5lbmQJPSBNT0RVTEVTX0VORCwKLQkJCQkucGdwcm90CT0gUEFHRV9LRVJORUwsCi0JCQkJLmFs aWdubWVudCA9IE1PRFVMRV9BTElHTiwKLQkJCX0sCi0JCX0sCi0JfTsKLQotCXJldHVybiAmZXhl Y21lbV9pbmZvOwotfQotCiAjaWZkZWYgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUgogdm9pZCBtb2R1 bGVfYXJjaF9jbGVhbnVwKHN0cnVjdCBtb2R1bGUgKm1vZCkKIHsKZGlmZiAtLWdpdCBhL2FyY2gv czM5MC9tbS9pbml0LmMgYi9hcmNoL3MzOTAvbW0vaW5pdC5jCmluZGV4IGY2MzkxNDQyYzBjMi4u ZTc2OWQyNzI2ZjRlIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAvbW0vaW5pdC5jCisrKyBiL2FyY2gv czM5MC9tbS9pbml0LmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxhc20vdXYuaD4KICNp bmNsdWRlIDxsaW51eC92aXJ0aW9fYW5jaG9yLmg+CiAjaW5jbHVkZSA8bGludXgvdmlydGlvX2Nv bmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KIAogcGdkX3Qgc3dhcHBlcl9wZ19k aXJbUFRSU19QRVJfUEdEXSBfX3NlY3Rpb24oIi5ic3MuLnN3YXBwZXJfcGdfZGlyIik7CiBwZ2Rf dCBpbnZhbGlkX3BnX2RpcltQVFJTX1BFUl9QR0RdIF9fc2VjdGlvbigiLmJzcy4uaW52YWxpZF9w Z19kaXIiKTsKQEAgLTMwMiwzICszMDMsMzIgQEAgdm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0 IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApCiAJdm1lbV9yZW1v dmVfbWFwcGluZyhzdGFydCwgc2l6ZSk7CiB9CiAjZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQ TFVHICovCisKKyNpZmRlZiBDT05GSUdfRVhFQ01FTQorc3RhdGljIHN0cnVjdCBleGVjbWVtX2lu Zm8gZXhlY21lbV9pbmZvIF9fcm9fYWZ0ZXJfaW5pdDsKKworc3RydWN0IGV4ZWNtZW1faW5mbyBf X2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgbW9kdWxl X2xvYWRfb2Zmc2V0ID0gMDsKKwl1bnNpZ25lZCBsb25nIHN0YXJ0OworCisJaWYgKGthc2xyX2Vu YWJsZWQoKSkKKwkJbW9kdWxlX2xvYWRfb2Zmc2V0ID0gZ2V0X3JhbmRvbV91MzJfaW5jbHVzaXZl KDEsIDEwMjQpICogUEFHRV9TSVpFOworCisJc3RhcnQgPSBNT0RVTEVTX1ZBRERSICsgbW9kdWxl X2xvYWRfb2Zmc2V0OworCisJZXhlY21lbV9pbmZvID0gKHN0cnVjdCBleGVjbWVtX2luZm8pewor CQkucmFuZ2VzID0geworCQkJW0VYRUNNRU1fREVGQVVMVF0gPSB7CisJCQkJLmZsYWdzCT0gRVhF Q01FTV9LQVNBTl9TSEFET1csCisJCQkJLnN0YXJ0CT0gc3RhcnQsCisJCQkJLmVuZAk9IE1PRFVM RVNfRU5ELAorCQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKKwkJCQkuYWxpZ25tZW50ID0gTU9E VUxFX0FMSUdOLAorCQkJfSwKKwkJfSwKKwl9OworCisJcmV0dXJuICZleGVjbWVtX2luZm87Cit9 CisjZW5kaWYgLyogQ09ORklHX0VYRUNNRU0gKi8KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2Vy bmVsL21vZHVsZS5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvbW9kdWxlLmMKaW5kZXggOGI3ZWU0NWRl ZmMzLi5iOGM1MWNjMjNkOTYgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL21vZHVsZS5j CisrKyBiL2FyY2gvc3BhcmMva2VybmVsL21vZHVsZS5jCkBAIC0xNCw3ICsxNCw2IEBACiAjaW5j bHVkZSA8bGludXgvc3RyaW5nLmg+CiAjaW5jbHVkZSA8bGludXgvY3R5cGUuaD4KICNpbmNsdWRl IDxsaW51eC9tbS5oPgotI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KIAogI2luY2x1ZGUgPGFz bS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxhc20vc3BpdGZpcmUuaD4KQEAgLTIyLDI0ICsyMSw2 IEBACiAKICNpbmNsdWRlICJlbnRyeS5oIgogCi1zdGF0aWMgc3RydWN0IGV4ZWNtZW1faW5mbyBl eGVjbWVtX2luZm8gX19yb19hZnRlcl9pbml0OwotCi1zdHJ1Y3QgZXhlY21lbV9pbmZvIF9faW5p dCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpCi17Ci0JZXhlY21lbV9pbmZvID0gKHN0cnVjdCBl eGVjbWVtX2luZm8pewotCQkucmFuZ2VzID0gewotCQkJW0VYRUNNRU1fREVGQVVMVF0gPSB7Ci0J CQkJLnN0YXJ0CT0gTU9EVUxFU19WQUREUiwKLQkJCQkuZW5kCT0gTU9EVUxFU19FTkQsCi0JCQkJ LnBncHJvdAk9IFBBR0VfS0VSTkVMLAotCQkJCS5hbGlnbm1lbnQgPSAxLAotCQkJfSwKLQkJfSwK LQl9OwotCi0JcmV0dXJuICZleGVjbWVtX2luZm87Ci19Ci0KIC8qIE1ha2UgZ2VuZXJpYyBjb2Rl IGlnbm9yZSBTVFRfUkVHSVNURVIgZHVtbXkgdW5kZWZpbmVkIHN5bWJvbHMuICAqLwogaW50IG1v ZHVsZV9mcm9iX2FyY2hfc2VjdGlvbnMoRWxmX0VoZHIgKmhkciwKIAkJCSAgICAgIEVsZl9TaGRy ICpzZWNoZHJzLApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9tbS9NYWtlZmlsZSBiL2FyY2gvc3Bh cmMvbW0vTWFrZWZpbGUKaW5kZXggODA5ZDk5M2Y2ZDg4Li4yZDE3NTIxMDhkNzcgMTAwNjQ0Ci0t LSBhL2FyY2gvc3BhcmMvbW0vTWFrZWZpbGUKKysrIGIvYXJjaC9zcGFyYy9tbS9NYWtlZmlsZQpA QCAtMTQsMyArMTQsNSBAQCBvYmotJChDT05GSUdfU1BBUkMzMikgICArPSBsZW9uX21tLm8KIAog IyBPbmx5IHVzZWQgYnkgc3BhcmM2NAogb2JqLSQoQ09ORklHX0hVR0VUTEJfUEFHRSkgKz0gaHVn ZXRsYnBhZ2UubworCitvYmotJChDT05GSUdfRVhFQ01FTSkJKz0gZXhlY21lbS5vCmRpZmYgLS1n aXQgYS9hcmNoL3NwYXJjL21tL2V4ZWNtZW0uYyBiL2FyY2gvc3BhcmMvbW0vZXhlY21lbS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGZhYzk3ZGQ1NzI4Ci0tLSAv ZGV2L251bGwKKysrIGIvYXJjaC9zcGFyYy9tbS9leGVjbWVtLmMKQEAgLTAsMCArMSwyMSBAQAor Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKyNpbmNsdWRlIDxsaW51eC9tbS5o PgorI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KKworc3RhdGljIHN0cnVjdCBleGVjbWVtX2lu Zm8gZXhlY21lbV9pbmZvIF9fcm9fYWZ0ZXJfaW5pdDsKKworc3RydWN0IGV4ZWNtZW1faW5mbyBf X2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKQoreworCWV4ZWNtZW1faW5mbyA9IChzdHJ1 Y3QgZXhlY21lbV9pbmZvKXsKKwkJLnJhbmdlcyA9IHsKKwkJCVtFWEVDTUVNX0RFRkFVTFRdID0g eworCQkJCS5zdGFydAk9IE1PRFVMRVNfVkFERFIsCisJCQkJLmVuZAk9IE1PRFVMRVNfRU5ELAor CQkJCS5wZ3Byb3QJPSBQQUdFX0tFUk5FTCwKKwkJCQkuYWxpZ25tZW50ID0gMSwKKwkJCX0sCisJ CX0sCisJfTsKKworCXJldHVybiAmZXhlY21lbV9pbmZvOworfQpkaWZmIC0tZ2l0IGEvYXJjaC94 ODYva2VybmVsL21vZHVsZS5jIGIvYXJjaC94ODYva2VybmVsL21vZHVsZS5jCmluZGV4IDQ1YjFh N2MwMzM3OS4uODM3NDUwYjZlODgyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvbW9kdWxl LmMKKysrIGIvYXJjaC94ODYva2VybmVsL21vZHVsZS5jCkBAIC0xOSw3ICsxOSw2IEBACiAjaW5j bHVkZSA8bGludXgvanVtcF9sYWJlbC5oPgogI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgogI2lu Y2x1ZGUgPGxpbnV4L21lbW9yeS5oPgotI2luY2x1ZGUgPGxpbnV4L2V4ZWNtZW0uaD4KIAogI2lu Y2x1ZGUgPGFzbS90ZXh0LXBhdGNoaW5nLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KQEAgLTM3 LDMyICszNiw2IEBAIGRvIHsJCQkJCQkJXAogfSB3aGlsZSAoMCkKICNlbmRpZgogCi1zdGF0aWMg c3RydWN0IGV4ZWNtZW1faW5mbyBleGVjbWVtX2luZm8gX19yb19hZnRlcl9pbml0OwotCi1zdHJ1 Y3QgZXhlY21lbV9pbmZvIF9faW5pdCAqZXhlY21lbV9hcmNoX3NldHVwKHZvaWQpCi17Ci0JdW5z aWduZWQgbG9uZyBzdGFydCwgb2Zmc2V0ID0gMDsKLQotCWlmIChrYXNscl9lbmFibGVkKCkpCi0J CW9mZnNldCA9IGdldF9yYW5kb21fdTMyX2luY2x1c2l2ZSgxLCAxMDI0KSAqIFBBR0VfU0laRTsK LQotCXN0YXJ0ID0gTU9EVUxFU19WQUREUiArIG9mZnNldDsKLQotCWV4ZWNtZW1faW5mbyA9IChz dHJ1Y3QgZXhlY21lbV9pbmZvKXsKLQkJLnJhbmdlcyA9IHsKLQkJCVtFWEVDTUVNX0RFRkFVTFRd ID0gewotCQkJCS5mbGFncwk9IEVYRUNNRU1fS0FTQU5fU0hBRE9XLAotCQkJCS5zdGFydAk9IHN0 YXJ0LAotCQkJCS5lbmQJPSBNT0RVTEVTX0VORCwKLQkJCQkucGdwcm90CT0gUEFHRV9LRVJORUws Ci0JCQkJLmFsaWdubWVudCA9IE1PRFVMRV9BTElHTiwKLQkJCX0sCi0JCX0sCi0JfTsKLQotCXJl dHVybiAmZXhlY21lbV9pbmZvOwotfQotCiAjaWZkZWYgQ09ORklHX1g4Nl8zMgogaW50IGFwcGx5 X3JlbG9jYXRlKEVsZjMyX1NoZHIgKnNlY2hkcnMsCiAJCSAgIGNvbnN0IGNoYXIgKnN0cnRhYiwK ZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2luaXQuYyBiL2FyY2gveDg2L21tL2luaXQuYwppbmRl eCA2Nzk4OTNlYTVlNjguLmJlNGZlZTE3YjcxNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0vaW5p dC5jCisrKyBiL2FyY2gveDg2L21tL2luaXQuYwpAQCAtNyw2ICs3LDcgQEAKICNpbmNsdWRlIDxs aW51eC9zd2Fwb3BzLmg+CiAjaW5jbHVkZSA8bGludXgva21lbWxlYWsuaD4KICNpbmNsdWRlIDxs aW51eC9zY2hlZC90YXNrLmg+CisjaW5jbHVkZSA8bGludXgvZXhlY21lbS5oPgogCiAjaW5jbHVk ZSA8YXNtL3NldF9tZW1vcnkuaD4KICNpbmNsdWRlIDxhc20vY3B1X2RldmljZV9pZC5oPgpAQCAt MTA5OSwzICsxMTAwLDMxIEBAIHVuc2lnbmVkIGxvbmcgYXJjaF9tYXhfc3dhcGZpbGVfc2l6ZSh2 b2lkKQogCXJldHVybiBwYWdlczsKIH0KICNlbmRpZgorCisjaWZkZWYgQ09ORklHX0VYRUNNRU0K K3N0YXRpYyBzdHJ1Y3QgZXhlY21lbV9pbmZvIGV4ZWNtZW1faW5mbyBfX3JvX2FmdGVyX2luaXQ7 CisKK3N0cnVjdCBleGVjbWVtX2luZm8gX19pbml0ICpleGVjbWVtX2FyY2hfc2V0dXAodm9pZCkK K3sKKwl1bnNpZ25lZCBsb25nIHN0YXJ0LCBvZmZzZXQgPSAwOworCisJaWYgKGthc2xyX2VuYWJs ZWQoKSkKKwkJb2Zmc2V0ID0gZ2V0X3JhbmRvbV91MzJfaW5jbHVzaXZlKDEsIDEwMjQpICogUEFH RV9TSVpFOworCisJc3RhcnQgPSBNT0RVTEVTX1ZBRERSICsgb2Zmc2V0OworCisJZXhlY21lbV9p bmZvID0gKHN0cnVjdCBleGVjbWVtX2luZm8peworCQkucmFuZ2VzID0geworCQkJW0VYRUNNRU1f REVGQVVMVF0gPSB7CisJCQkJLmZsYWdzCT0gRVhFQ01FTV9LQVNBTl9TSEFET1csCisJCQkJLnN0 YXJ0CT0gc3RhcnQsCisJCQkJLmVuZAk9IE1PRFVMRVNfRU5ELAorCQkJCS5wZ3Byb3QJPSBQQUdF X0tFUk5FTCwKKwkJCQkuYWxpZ25tZW50ID0gTU9EVUxFX0FMSUdOLAorCQkJfSwKKwkJfSwKKwl9 OworCisJcmV0dXJuICZleGVjbWVtX2luZm87Cit9CisjZW5kaWYgLyogQ09ORklHX0VYRUNNRU0g Ki8KLS0gCjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt cmlzY3YK