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 lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (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 3E3D1CD98C6 for ; Thu, 11 Jun 2026 05:32:51 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXY05-0000n6-OD; Thu, 11 Jun 2026 01:30:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXXzV-00087X-QG for qemu-devel@nongnu.org; Thu, 11 Jun 2026 01:30:10 -0400 Received: from mx0a-0031df01.pphosted.com ([205.220.168.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXXzS-00016G-Ph for qemu-devel@nongnu.org; Thu, 11 Jun 2026 01:30:09 -0400 Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65B5GE543724528 for ; Thu, 11 Jun 2026 05:29:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Q7NPPOUXj3HDeYwRp1CtggspxgVobpa1Qy4SdRDJKf0=; b=XcPUtsB8PEOAP5GL qkARxH7IPz6Ku+rt5OWi2tYKstvHxNEe0LWdKALemDRe2ujB3GUAlwNCkB0/7zol TvhXmWknjxeqksRTGvQ9KxOo5qnbxzwMT6clC9czFQuKtVaCE3qSbPjSeC37OInW pmC9kd9Oz21IbEv0i2sV6UIWK53h7tEqXzm9IvjeIm5N3H7bKA6iKmRILDK09Wg4 WUI/fGzKEjiasS3zoWdqVSu8Swe5PPc44Z+abA9oJflN/4Ttu6BLHsKxU3XSmatk c2V2S969aL4jTcNtmxrrX9US7El8vL1U4BDYkZbqZeSEfNlvhK807gLO5dDtvupO yWccSQ== Received: from mail-dy1-f198.google.com (mail-dy1-f198.google.com [74.125.82.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4eqe6v9qcr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 11 Jun 2026 05:29:55 +0000 (GMT) Received: by mail-dy1-f198.google.com with SMTP id 5a478bee46e88-304ec73b015so4232223eec.1 for ; Wed, 10 Jun 2026 22:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781155795; x=1781760595; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q7NPPOUXj3HDeYwRp1CtggspxgVobpa1Qy4SdRDJKf0=; b=SJIlxsEH9blxcKaFINDK9NbL4x3ST5GcN3nh1DzdpcdSRFjldreQPMGuabompYW2Av u7fm5QIforBoAY1uq/YL2zYoav5WilqKiu0oOCidUbfOv2022NUS84zT8lfnowMSYpBP iW7C2qkXEUg/kJqAEkfdY4yhattFk+ct1pfu4wFUnS3ewMATP2bKhvDP198/Gdk46peo z1dJ+qmUJ9KNPT1EPnnsBH1kVsOVv91+3vBtLEtrjLs1bOCwO2rWXlLQ7Lsk45Ry8tkE 8lXCuaNrZQbQuczTlULcVEjtpLeQydU7IDNVkNLlSElCtPRj7vdpy52/qajpCGPc6pj3 gjPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781155795; x=1781760595; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Q7NPPOUXj3HDeYwRp1CtggspxgVobpa1Qy4SdRDJKf0=; b=NpWmSMLmjFpsCBLFyw9yM9VKrOB0YNCQcanYdnHxupYpi9hmtMhtKlvWYf8OZdwz/t 4XC0vJlbcThnaDHfzpNRxpCJtCdm+cwxQ/1C+hQn9Wwv2vpnA+8CQDkgH+Nuw0PqhCw4 ovvBcDZf7+bnAon+O1WKc+LLaS1vYI6E/KOOtHFi0c6iiL+tBa06G8HMHjQCclPEmRhu LrYALCqRZbf0Ue7D6Yc2Xbk5AzappjiDFkvf6t5jJDSkCWkOMIDi6Yy5dVfooPOrqlOU U9MH+R5Fzigfsqvu/9VyDS+LUnBJ/InjvK+lb6rlyVwrGo+3A8imVbJnclUUf/ilQw6N iQDQ== X-Gm-Message-State: AOJu0YyVGAQzKoEvQHqVzAKpyAJlsfEgPPm99zV2lnkMJgnfIK2R0DD0 ATUhwI/QqwZekbmr3Jx2GuDMBU+j03YzfAfmy546DfQeoTdxF+octz5kNB+J4CC6d2tID8rcbvj MVEEaxoRZsjvwG384OlUmhZbS/9nawaRYElf3dFhUbZTwrNC7SJ3mNlXSmk2WzjqpIw== X-Gm-Gg: Acq92OGVtrOPxej/M9kC/GeWccNKr43I6U16kXI7RCp19BjDc7dtR8z8avTakehSYiV Y1SfjCSZTpfsNrs/rM90qbSs3oh25GsXUsux9dqpkWFhSTZbBybSFpODMhLI83zs3NZpCW77wRw CXudCgxDVKh92WwyJ7bxO8h3Lojoymc5qdJvmEG5b0LhxFhhE8v/7iC138TikFMDdiq1PcDAmp+ EPGX6cLsbKLOFG52GmtpKAdpYhARFjdBoweWuac0D31A9nflETadzfNpfQAsZPgrtTer4BY/EDR Cq0P2vNw1B8rPstuZ+j3oSwGFUT8M4Fjjbn7ul//jH24xF/a1jcrDmvQ/KNq3jicN9rgHF97K7C fqWGws66DXCM2eDVEHOK9OPcz9C/IQC5OJkI3CkStDQTGombl69V5N9QoXYOBB3QFQpvGBpWNW6 alWQLD X-Received: by 2002:a05:7301:578c:b0:2d9:fa9c:87a9 with SMTP id 5a478bee46e88-3080479acb4mr1238903eec.5.1781155794572; Wed, 10 Jun 2026 22:29:54 -0700 (PDT) X-Received: by 2002:a05:7301:578c:b0:2d9:fa9c:87a9 with SMTP id 5a478bee46e88-3080479acb4mr1238872eec.5.1781155794014; Wed, 10 Jun 2026 22:29:54 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30806e8a402sm880475eec.17.2026.06.10.22.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 22:29:53 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, matheus.bernardino@oss.qualcomm.com, pierrick.bouvier@oss.qualcomm.com, ltaylorsimpson@gmail.com, philmd@mailo.org, philmd@oss.qualcomm.com Subject: [PATCH v8] target/hexagon: Update TARGET_PAGE_BITS, stubs for modify_ssr/get_exe_mode Date: Wed, 10 Jun 2026 22:28:55 -0700 Message-Id: <20260611052857.3911981-35-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260611052857.3911981-1-brian.cain@oss.qualcomm.com> References: <20260611052857.3911981-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-ORIG-GUID: fZpQ8Duf9-VacmJ4WkYVVeWkj1qGxa-W X-Proofpoint-Spam-Info: AW1haW4tMjYwNjExMDA1MSBTYWx0ZWRfXzv82oNStw0Xp fkySlNrI6COr7gJx7ixgnSJsBqKrfU32kuciOEJIMKaUcYpj7hCSKwS38pB6G2hTraq8dTitJeZ 2tifmYRS+HiFYf01LleNBfwxCKOOE9A= X-Proofpoint-GUID: fZpQ8Duf9-VacmJ4WkYVVeWkj1qGxa-W X-Authority-Analysis: v=2.4 cv=UsRT8ewB c=1 sm=1 tr=0 ts=6a2a47d3 cx=c_pps a=wEP8DlPgTf/vqF+yE6f9lg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=1eS9DRoYkSOUxsN_X7IA:9 a=QEXdDO2ut3YA:10 a=bBxd6f-gb0O0v-kibOvt:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjExMDA1MSBTYWx0ZWRfX12W6mMDM5zsW +A8KRDLKOrO3BSt6wfUMfTfZHvPFVFxAsnSXELYKO8kDKvNNEs1gDzxGlYIiR7wtFr+82OHKvZL CxHZqdv80aKbeYT4c5PPLa1iRWcXHaWfb4FoC0t1tlJL5OXfpfhXH4+TCoQwGMXT50AO9A4ZJec +X+9PFwiWrfSk6xkWwpwh3UTlew4NqCR0VE3pEphAQLRLIA7mWT6fXhZy+sHE7kR9GHZEq5i4DY iOI0n3pEnEusOnSeBOf+Bh43SutqDtq5UJ4Hfqj27o4pjXLf9cqPM72e7KueGza3AOcH+5LP56x IlOO7Qsq2XwxxI1tlzhf6ryWItMQQwvSg95PEnDwmDTItWPZBXcoa43MzaCt5Sj+hIwXHcoyTzp 6ksEBvpGD2+gHmx13s5pvHKhdaFMpmG4qDUImx7PtPQkQ+YWidlOg+QoI92+O+6+Aw/JGQQqU6F UsNsHUvwVWc84w/8o7A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-11_01,2026-06-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 clxscore=1015 lowpriorityscore=0 spamscore=0 adultscore=0 bulkscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606040000 definitions=main-2606110051 Received-SPF: pass client-ip=205.220.168.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0a-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org QWRkIGhleF9tbXUuW2NoXSwgY3B1IG1vZGUgaGVscGVycywgYW5kIGFkZGl0aW9uYWwgaW5jbHVk ZXMvc3R1YnMKdGhhdCBpbnRlZ3JhdGUgdGhlIFRMQiBkZXZpY2Ugd2l0aCB0aGUgQ1BVIG1vZGVs LgoKU2lnbmVkLW9mZi1ieTogQnJpYW4gQ2FpbiA8YnJpYW4uY2FpbkBvc3MucXVhbGNvbW0uY29t PgotLS0KIHRhcmdldC9oZXhhZ29uL2NwdS1wYXJhbS5oICB8ICAgMiArLQogdGFyZ2V0L2hleGFn b24vY3B1LmggICAgICAgIHwgIDIxICsrKwogdGFyZ2V0L2hleGFnb24vaGV4X21tdS5oICAgIHwg IDI2ICsrKysKIHRhcmdldC9oZXhhZ29uL2ludGVybmFsLmggICB8ICAgOSArKwogdGFyZ2V0L2hl eGFnb24vc3lzX21hY3Jvcy5oIHwgICAzICsKIHRhcmdldC9oZXhhZ29uL2NwdS5jICAgICAgICB8 ICAzNiArKysrKwogdGFyZ2V0L2hleGFnb24vaGV4X21tdS5jICAgIHwgMjY4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2hl eF9tbXUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdldC9oZXhhZ29uL2hleF9tbXUuYwoKZGlm ZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2NwdS1wYXJhbS5oIGIvdGFyZ2V0L2hleGFnb24vY3B1 LXBhcmFtLmgKaW5kZXggMWYwZjIyYTc5NjguLmJmZTlhODY4ZDYzIDEwMDY0NAotLS0gYS90YXJn ZXQvaGV4YWdvbi9jcHUtcGFyYW0uaAorKysgYi90YXJnZXQvaGV4YWdvbi9jcHUtcGFyYW0uaApA QCAtMTgsNyArMTgsNyBAQAogI2lmbmRlZiBIRVhBR09OX0NQVV9QQVJBTV9ICiAjZGVmaW5lIEhF WEFHT05fQ1BVX1BBUkFNX0gKIAotI2RlZmluZSBUQVJHRVRfUEFHRV9CSVRTIDE2ICAgICAvKiA2 NEsgcGFnZXMgKi8KKyNkZWZpbmUgVEFSR0VUX1BBR0VfQklUUyAxMiAgICAgLyogNEsgcGFnZXMg Ki8KIAogI2RlZmluZSBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMgMzIKIApkaWZmIC0tZ2l0 IGEvdGFyZ2V0L2hleGFnb24vY3B1LmggYi90YXJnZXQvaGV4YWdvbi9jcHUuaAppbmRleCA3YmEx ZDMwNDdkZi4uZGJkYzQ1NmQ3MzIgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL2NwdS5oCisr KyBiL3RhcmdldC9oZXhhZ29uL2NwdS5oCkBAIC0yNyw2ICsyNyw5IEBACiAjZGVmaW5lIFNSRUdf V1JJVEVTX01BWCAyCiAjZW5kaWYKIAordHlwZWRlZiBzdHJ1Y3QgSGV4YWdvblRMQlN0YXRlIEhl eGFnb25UTEJTdGF0ZTsKK3R5cGVkZWYgc3RydWN0IEhleGFnb25HbG9iYWxSZWdTdGF0ZSBIZXhh Z29uR2xvYmFsUmVnU3RhdGU7CisKICNpbmNsdWRlICJjcHUtcW9tLmgiCiAjaW5jbHVkZSAiZXhl Yy9jcHUtY29tbW9uLmgiCiAjaW5jbHVkZSAiZXhlYy90YXJnZXRfbG9uZy5oIgpAQCAtMzksNiAr NDIsNyBAQAogI2Vycm9yICJIZXhhZ29uIGRvZXMgbm90IHN1cHBvcnQgc3lzdGVtIGVtdWxhdGlv biIKICNlbmRpZgogCisKICNkZWZpbmUgTlVNX1BSRUdTIDQKICNkZWZpbmUgVE9UQUxfUEVSX1RI UkVBRF9SRUdTIDY0CiAKQEAgLTQ3LDEwICs1MSwxMyBAQAogI2RlZmluZSBSRUdfV1JJVEVTX01B WCAzMgogI2RlZmluZSBQUkVEX1dSSVRFU19NQVggNSAgICAgICAgICAgICAgICAgICAvKiA0IGlu c25zICsgZW5kbG9vcCAqLwogI2RlZmluZSBWU1RPUkVTX01BWCAyCisjZGVmaW5lIE1BWF9UTEJf RU5UUklFUyAxMDI0CiAKICNkZWZpbmUgQ1BVX1JFU09MVklOR19UWVBFIFRZUEVfSEVYQUdPTl9D UFUKICNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQogI2RlZmluZSBDUFVfSU5URVJSVVBUX1NXSSAg ICAgIENQVV9JTlRFUlJVUFRfVEdUX0lOVF8wCisjZGVmaW5lIENQVV9JTlRFUlJVUFRfSzBfVU5M T0NLIENQVV9JTlRFUlJVUFRfVEdUX0lOVF8xCisjZGVmaW5lIENQVV9JTlRFUlJVUFRfVExCX1VO TE9DSyBDUFVfSU5URVJSVVBUX1RHVF9JTlRfMgogCiAjZGVmaW5lIEhFWF9DUFVfTU9ERV9VU0VS ICAgIDEKICNkZWZpbmUgSEVYX0NQVV9NT0RFX0dVRVNUICAgMgpAQCAtNjcsNiArNzQsMTIgQEAK ICNkZWZpbmUgTU1VX0dVRVNUX0lEWCAgICAgICAgMQogI2RlZmluZSBNTVVfS0VSTkVMX0lEWCAg ICAgICAyCiAKK3R5cGVkZWYgZW51bSB7CisgICAgSEVYX0xPQ0tfVU5MT0NLRUQgICAgICAgPSAw LAorICAgIEhFWF9MT0NLX1dBSVRJTkcgICAgICAgID0gMSwKKyAgICBIRVhfTE9DS19PV05FUiAg ICAgICAgICA9IDIsCisgICAgSEVYX0xPQ0tfUVVFVUVEICAgICAgICA9IDMKK30gaGV4X2xvY2tf c3RhdGVfdDsKICNlbmRpZgogCiAKQEAgLTEyOCw2ICsxNDEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg Q1BVQXJjaFN0YXRlIHsKIAogICAgIC8qIFRoaXMgYWxpYXMgb2YgQ1BVU3RhdGUuY3B1X2luZGV4 IGlzIHVzZWQgYnkgaW1wb3J0ZWQgc291cmNlczogKi8KICAgICB1aW50MzJfdCB0aHJlYWRJZDsK KyAgICBoZXhfbG9ja19zdGF0ZV90IHRsYl9sb2NrX3N0YXRlOworICAgIGhleF9sb2NrX3N0YXRl X3QgazBfbG9ja19zdGF0ZTsKKyAgICB1aW50MzJfdCB0bGJfbG9ja19jb3VudDsKKyAgICB1aW50 MzJfdCBrMF9sb2NrX2NvdW50OwogICAgIHVpbnQ2NF90IHRfY3ljbGVfY291bnQ7CiAjZW5kaWYK ICAgICB1aW50MzJfdCBuZXh0X1BDOwpAQCAtMTc4LDYgKzE5NSwxMCBAQCBzdHJ1Y3QgQXJjaENQ VSB7CiAgICAgYm9vbCBsbGRiX2NvbXBhdDsKICAgICB0YXJnZXRfdWxvbmcgbGxkYl9zdGFja19h ZGp1c3Q7CiAgICAgYm9vbCBzaG9ydF9jaXJjdWl0OworI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZ CisgICAgSGV4YWdvblRMQlN0YXRlICp0bGI7CisgICAgdWludDMyX3QgaHRpZDsKKyNlbmRpZgog fTsKIAogI2luY2x1ZGUgImNwdV9iaXRzLmgiCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9o ZXhfbW11LmggYi90YXJnZXQvaGV4YWdvbi9oZXhfbW11LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjRmNTU2YzcxNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0 L2hleGFnb24vaGV4X21tdS5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMp IFF1YWxjb21tIFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy4KKyAq CisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorICovCisKKyNp Zm5kZWYgSEVYQUdPTl9NTVVfSAorI2RlZmluZSBIRVhBR09OX01NVV9ICisKKyNpbmNsdWRlICJj cHUuaCIKKyNpbmNsdWRlICJtb25pdG9yL21vbml0b3IuaCIKKworZXh0ZXJuIHZvaWQgaGV4X3Rs YncoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IGluZGV4LCB1aW50NjRfdCB2YWx1ZSk7 CitleHRlcm4gdWludDMyX3QgaGV4X3RsYl9sb29rdXAoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVp bnQzMl90IHNzciwgdWludDMyX3QgVkEpOworZXh0ZXJuIHZvaWQgaGV4X21tdV9vbihDUFVIZXhh Z29uU3RhdGUgKmVudik7CitleHRlcm4gdm9pZCBoZXhfbW11X29mZihDUFVIZXhhZ29uU3RhdGUg KmVudik7CitleHRlcm4gdm9pZCBoZXhfbW11X21vZGVfY2hhbmdlKENQVUhleGFnb25TdGF0ZSAq ZW52KTsKK2V4dGVybiBib29sIGhleF90bGJfZmluZF9tYXRjaChDUFVIZXhhZ29uU3RhdGUgKmVu diwgdWludDMyX3QgVkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTU1VQWNjZXNz VHlwZSBhY2Nlc3NfdHlwZSwgaHdhZGRyICpQQSwgaW50ICpwcm90LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ2NF90ICpzaXplLCBpbnQzMl90ICpleGNwLCBpbnQgbW11X2lk eCk7CitleHRlcm4gaW50IGhleF90bGJfY2hlY2tfb3ZlcmxhcChDUFVIZXhhZ29uU3RhdGUgKmVu diwgdWludDY0X3QgZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBpbmRleCk7CitleHRlcm4gdm9pZCBoZXhfdGxiX2xvY2soQ1BVSGV4YWdvblN0YXRlICpl bnYpOworZXh0ZXJuIHZvaWQgaGV4X3RsYl91bmxvY2soQ1BVSGV4YWdvblN0YXRlICplbnYpOwor dm9pZCBkdW1wX21tdShNb25pdG9yICptb24sIENQVUhleGFnb25TdGF0ZSAqZW52KTsKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaW50ZXJuYWwuaCBiL3RhcmdldC9oZXhhZ29u L2ludGVybmFsLmgKaW5kZXggMzNkNzNlZDE4ZDEuLjQzMzg5MTRlZmI1IDEwMDY0NAotLS0gYS90 YXJnZXQvaGV4YWdvbi9pbnRlcm5hbC5oCisrKyBiL3RhcmdldC9oZXhhZ29uL2ludGVybmFsLmgK QEAgLTM2LDYgKzM2LDE1IEBAIHZvaWQgR19OT1JFVFVSTiBkb19yYWlzZV9leGNlcHRpb24oQ1BV SGV4YWdvblN0YXRlICplbnYsCiAgICAgICAgIHVpbnQzMl90IFBDLAogICAgICAgICB1aW50cHRy X3QgcmV0YWRkcik7CiAKKyNkZWZpbmUgaGV4YWdvbl9jcHVfbW11X2VuYWJsZWQoZW52KSAoeyBc CisgICAgSGV4YWdvbkNQVSAqY3B1ID0gZW52X2FyY2hjcHUoZW52KTsgXAorICAgIGNwdS0+Z2xv YmFscmVncyA/IFwKKyAgICAgICAgR0VUX1NZU0NGR19GSUVMRChTWVNDRkdfTU1VRU4sIFwKKyAg ICAgICAgICAgIGhleGFnb25fZ2xvYmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhFWF9TUkVHX1NZU0NGRywgKGVudiktPnRo cmVhZElkKSkgOiBcCisgICAgICAgIDA7IFwKK30pCisKICNpZm5kZWYgQ09ORklHX1VTRVJfT05M WQogZXh0ZXJuIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2hleGFnb25fY3B1Owog I2VuZGlmCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9zeXNfbWFjcm9zLmggYi90YXJnZXQv aGV4YWdvbi9zeXNfbWFjcm9zLmgKaW5kZXggMDlkNzhiMDAyZTYuLjhiODFlMWNhMGFmIDEwMDY0 NAotLS0gYS90YXJnZXQvaGV4YWdvbi9zeXNfbWFjcm9zLmgKKysrIGIvdGFyZ2V0L2hleGFnb24v c3lzX21hY3Jvcy5oCkBAIC0xMzksNiArMTM5LDkgQEAKICNkZWZpbmUgZkRDSU5WSURYKFJFRykK ICNkZWZpbmUgZkRDSU5WQShSRUcpIGRvIHsgUkVHID0gUkVHOyB9IHdoaWxlICgwKSAvKiBOb3Ro aW5nIHRvIGRvIGluIHFlbXUgKi8KIAorI2RlZmluZSBmU0VUX1RMQl9MT0NLKCkgICAgICAgaGV4 X3RsYl9sb2NrKGVudik7CisjZGVmaW5lIGZDTEVBUl9UTEJfTE9DSygpICAgICBoZXhfdGxiX3Vu bG9jayhlbnYpOworCiAjZGVmaW5lIGZUTEJfSURYTUFTSyhJTkRFWCkgXAogICAgICgoSU5ERVgp ICYgKGZQT1cyX1JPVU5EVVAoIFwKICAgICAgICAgZkNBU1Q0dShoZXhhZ29uX3RsYl9nZXRfbnVt X2VudHJpZXMoZW52X2FyY2hjcHUoZW52KS0+dGxiKSkpIC0gMSkpCmRpZmYgLS1naXQgYS90YXJn ZXQvaGV4YWdvbi9jcHUuYyBiL3RhcmdldC9oZXhhZ29uL2NwdS5jCmluZGV4IDYyNjEwMGQ0M2Zk Li43M2FjYTBhNDIxNyAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vY3B1LmMKKysrIGIvdGFy Z2V0L2hleGFnb24vY3B1LmMKQEAgLTIzLDkgKzIzLDE3IEBACiAjaW5jbHVkZSAicWFwaS9lcnJv ci5oIgogI2luY2x1ZGUgImh3L2NvcmUvcWRldi1wcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiZnB1 L3NvZnRmbG9hdC1oZWxwZXJzLmgiCisjaW5jbHVkZSAiaHcvaGV4YWdvbi9oZXhhZ29uX3RsYi5o IgogI2luY2x1ZGUgInRjZy90Y2cuaCIKICNpbmNsdWRlICJleGVjL2dkYnN0dWIuaCIKICNpbmNs dWRlICJhY2NlbC90Y2cvY3B1LW9wcy5oIgorI2luY2x1ZGUgImNwdV9oZWxwZXIuaCIKKyNpbmNs dWRlICJoZXhfbW11LmgiCisKKyNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQorI2luY2x1ZGUgInN5 c19tYWNyb3MuaCIKKyNpbmNsdWRlICJhY2NlbC90Y2cvY3B1LWxkc3QuaCIKKyNlbmRpZgogCiBz dGF0aWMgT2JqZWN0Q2xhc3MgKmhleGFnb25fY3B1X2NsYXNzX2J5X25hbWUoY29uc3QgY2hhciAq Y3B1X21vZGVsKQogewpAQCAtNDMsNiArNTEsMTEgQEAgc3RhdGljIE9iamVjdENsYXNzICpoZXhh Z29uX2NwdV9jbGFzc19ieV9uYW1lKGNvbnN0IGNoYXIgKmNwdV9tb2RlbCkKIH0KIAogc3RhdGlj IGNvbnN0IFByb3BlcnR5IGhleGFnb25fY3B1X3Byb3BlcnRpZXNbXSA9IHsKKyNpZm5kZWYgQ09O RklHX1VTRVJfT05MWQorICAgIERFRklORV9QUk9QX0xJTksoInRsYiIsIEhleGFnb25DUFUsIHRs YiwgVFlQRV9IRVhBR09OX1RMQiwKKyAgICAgICAgICAgICAgICAgICAgIEhleGFnb25UTEJTdGF0 ZSAqKSwKKyAgICBERUZJTkVfUFJPUF9VSU5UMzIoImh0aWQiLCBIZXhhZ29uQ1BVLCBodGlkLCAw KSwKKyNlbmRpZgogICAgIERFRklORV9QUk9QX0JPT0woImxsZGItY29tcGF0IiwgSGV4YWdvbkNQ VSwgbGxkYl9jb21wYXQsIGZhbHNlKSwKICAgICBERUZJTkVfUFJPUF9VTlNJR05FRCgibGxkYi1z dGFjay1hZGp1c3QiLCBIZXhhZ29uQ1BVLCBsbGRiX3N0YWNrX2FkanVzdCwgMCwKICAgICAgICAg ICAgICAgICAgICAgICAgICBxZGV2X3Byb3BfdWludDMyLCB0YXJnZXRfdWxvbmcpLApAQCAtMjY5 LDcgKzI4MiwxMSBAQCBzdGF0aWMgVENHVEJDUFVTdGF0ZSBoZXhhZ29uX2dldF90Yl9jcHVfc3Rh dGUoQ1BVU3RhdGUgKmNzKQogICAgIH0KIAogI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZCisgICAg aGV4X2ZsYWdzID0gRklFTERfRFAzMihoZXhfZmxhZ3MsIFRCX0ZMQUdTLCBNTVVfSU5ERVgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfbW11X2luZGV4KGVudl9jcHUoZW52KSwgZmFs c2UpKTsKICAgICBoZXhfZmxhZ3MgPSBGSUVMRF9EUDMyKGhleF9mbGFncywgVEJfRkxBR1MsIFBD WUNMRV9FTkFCTEVELCAxKTsKKyNlbHNlCisgICAgaGV4X2ZsYWdzID0gRklFTERfRFAzMihoZXhf ZmxhZ3MsIFRCX0ZMQUdTLCBNTVVfSU5ERVgsIE1NVV9VU0VSX0lEWCk7CiAjZW5kaWYKIAogICAg IHJldHVybiAoVENHVEJDUFVTdGF0ZSl7IC5wYyA9IHBjLCAuZmxhZ3MgPSBoZXhfZmxhZ3MgfTsK QEAgLTI4OSwxMSArMzA2LDE1IEBAIHN0YXRpYyB2b2lkIGhleGFnb25fcmVzdG9yZV9zdGF0ZV90 b19vcGMoQ1BVU3RhdGUgKmNzLAogICAgIGNwdV9lbnYoY3MpLT5ncHJbSEVYX1JFR19QQ10gPSBk YXRhWzBdOwogfQogCisKIHN0YXRpYyB2b2lkIGhleGFnb25fY3B1X3Jlc2V0X2hvbGQoT2JqZWN0 ICpvYmosIFJlc2V0VHlwZSB0eXBlKQogewogICAgIENQVVN0YXRlICpjcyA9IENQVShvYmopOwog ICAgIEhleGFnb25DUFVDbGFzcyAqbWNjID0gSEVYQUdPTl9DUFVfR0VUX0NMQVNTKG9iaik7CiAg ICAgQ1BVSGV4YWdvblN0YXRlICplbnYgPSBjcHVfZW52KGNzKTsKKyNpZm5kZWYgQ09ORklHX1VT RVJfT05MWQorICAgIEhleGFnb25DUFUgKmNwdSA9IEhFWEFHT05fQ1BVKGNzKTsKKyNlbmRpZgog CiAgICAgaWYgKG1jYy0+cGFyZW50X3BoYXNlcy5ob2xkKSB7CiAgICAgICAgIG1jYy0+cGFyZW50 X3BoYXNlcy5ob2xkKG9iaiwgdHlwZSk7CkBAIC0zMDcsNyArMzI4LDE0IEBAIHN0YXRpYyB2b2lk IGhleGFnb25fY3B1X3Jlc2V0X2hvbGQoT2JqZWN0ICpvYmosIFJlc2V0VHlwZSB0eXBlKQogICAg IG1lbXNldChlbnYtPnRfc3JlZywgMCwgc2l6ZW9mKHVpbnQzMl90KSAqIE5VTV9TUkVHUyk7CiAg ICAgbWVtc2V0KGVudi0+Z3JlZywgMCwgc2l6ZW9mKHVpbnQzMl90KSAqIE5VTV9HUkVHUyk7CiAg ICAgZW52LT53YWl0X25leHRfcGMgPSAwOworICAgIGVudi0+dGxiX2xvY2tfc3RhdGUgPSBIRVhf TE9DS19VTkxPQ0tFRDsKKyAgICBlbnYtPmswX2xvY2tfc3RhdGUgPSBIRVhfTE9DS19VTkxPQ0tF RDsKKyAgICBlbnYtPnRsYl9sb2NrX2NvdW50ID0gMDsKKyAgICBlbnYtPmswX2xvY2tfY291bnQg PSAwOwogICAgIGVudi0+bmV4dF9QQyA9IDA7CisKKyAgICBlbnYtPnRfc3JlZ1tIRVhfU1JFR19I VElEXSA9IGNwdS0+aHRpZDsKKyAgICBlbnYtPnRocmVhZElkID0gY3B1LT5odGlkOwogI2VuZGlm CiAgICAgZW52LT5jYXVzZV9jb2RlID0gSEVYX0VWRU5UX05PTkU7CiB9CkBAIC0zMzcsNyArMzY1 LDE1IEBAIHN0YXRpYyB2b2lkIGhleGFnb25fY3B1X3JlYWxpemUoRGV2aWNlU3RhdGUgKmRldiwg RXJyb3IgKiplcnJwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXhhZ29uX2h2eF9n ZGJfd3JpdGVfcmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9maW5k X3N0YXRpY19mZWF0dXJlKCJoZXhhZ29uLWh2eC54bWwiKSk7CiAKKyNpZm5kZWYgQ09ORklHX1VT RVJfT05MWQorICAgIGlmICghSEVYQUdPTl9DUFUoZGV2KS0+dGxiKSB7CisgICAgICAgIGVycm9y X3NldGcoZXJycCwgImhleGFnb24gY3B1IHJlcXVpcmVzICd0bGInIGxpbmsgcHJvcGVydHkgdG8g YmUgc2V0Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIHFlbXVfaW5p dF92Y3B1KGNzKTsKKwogICAgIGNwdV9yZXNldChjcyk7CiAgICAgbWNjLT5wYXJlbnRfcmVhbGl6 ZShkZXYsIGVycnApOwogfQpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaGV4X21tdS5jIGIv dGFyZ2V0L2hleGFnb24vaGV4X21tdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5jOTIxZTgyYjM3NwotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2hl eF9tbXUuYwpAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgUXVhbGNvbW0g VGVjaG5vbG9naWVzLCBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLgorICoKKyAqIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCisgKi8KKworI2luY2x1ZGUgInFl bXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11L2xvZy5oIgorI2luY2x1ZGUgInFlbXUvbWFpbi1s b29wLmgiCisjaW5jbHVkZSAicWVtdS9xZW11LXByaW50LmgiCisjaW5jbHVkZSAiY3B1LmgiCisj aW5jbHVkZSAic3lzdGVtL2NwdXMuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorI2luY2x1ZGUg ImV4ZWMvY3B1LWludGVycnVwdC5oIgorI2luY2x1ZGUgImNwdV9oZWxwZXIuaCIKKyNpbmNsdWRl ICJleGVjL2NwdXRsYi5oIgorI2luY2x1ZGUgImhleF9tbXUuaCIKKyNpbmNsdWRlICJtYWNyb3Mu aCIKKyNpbmNsdWRlICJzeXNfbWFjcm9zLmgiCisjaW5jbHVkZSAiaHcvaGV4YWdvbi9oZXhhZ29u X3RsYi5oIgorI2luY2x1ZGUgImh3L2hleGFnb24vaGV4YWdvbl9nbG9iYWxyZWcuaCIKKworc3Rh dGljIGlubGluZSB2b2lkIGhleF9sb2dfdGxidyh1aW50MzJfdCBpbmRleCwgdWludDY0X3QgZW50 cnkpCit7CisgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX01NVSwKKyAgICAgICAgICAgICAgICAg ICJ0bGJ3WyUwMyIgUFJJdTMyICJdOiAweCUwMTYiIFBSSXg2NCAiXG4iLAorICAgICAgICAgICAg ICAgICAgaW5kZXgsIGVudHJ5KTsKK30KKwordm9pZCBoZXhfdGxidyhDUFVIZXhhZ29uU3RhdGUg KmVudiwgdWludDMyX3QgaW5kZXgsIHVpbnQ2NF90IHZhbHVlKQoreworICAgIHVpbnQzMl90IG15 aWR4ID0gZlRMQl9OT05QT1cyV1JBUChmVExCX0lEWE1BU0soaW5kZXgpKTsKKyAgICBIZXhhZ29u VExCU3RhdGUgKnRsYiA9IGVudl9hcmNoY3B1KGVudiktPnRsYjsKKyAgICB1aW50NjRfdCBvbGRf ZW50cnkgPSBoZXhhZ29uX3RsYl9yZWFkKHRsYiwgbXlpZHgpOworCisgICAgYm9vbCBvbGRfZW50 cnlfdmFsaWQgPSBleHRyYWN0NjQob2xkX2VudHJ5LCA2MywgMSk7CisgICAgaWYgKG9sZF9lbnRy eV92YWxpZCAmJiBoZXhhZ29uX2NwdV9tbXVfZW5hYmxlZChlbnYpKSB7CisgICAgICAgIENQVVN0 YXRlICpjcyA9IGVudl9jcHUoZW52KTsKKyAgICAgICAgdGxiX2ZsdXNoKGNzKTsKKyAgICB9Cisg ICAgaGV4YWdvbl90bGJfd3JpdGUodGxiLCBteWlkeCwgdmFsdWUpOworICAgIGhleF9sb2dfdGxi dyhteWlkeCwgdmFsdWUpOworfQorCit2b2lkIGhleF9tbXVfb24oQ1BVSGV4YWdvblN0YXRlICpl bnYpCit7CisgICAgQ1BVU3RhdGUgKmNzID0gZW52X2NwdShlbnYpOworICAgIHFlbXVfbG9nX21h c2soQ1BVX0xPR19NTVUsICJIZXhhZ29uIE1NVSB0dXJuZWQgb24hXG4iKTsKKyAgICB0bGJfZmx1 c2goY3MpOworfQorCit2b2lkIGhleF9tbXVfb2ZmKENQVUhleGFnb25TdGF0ZSAqZW52KQorewor ICAgIENQVVN0YXRlICpjcyA9IGVudl9jcHUoZW52KTsKKyAgICBxZW11X2xvZ19tYXNrKENQVV9M T0dfTU1VLCAiSGV4YWdvbiBNTVUgdHVybmVkIG9mZiFcbiIpOworICAgIHRsYl9mbHVzaChjcyk7 Cit9CisKK3ZvaWQgaGV4X21tdV9tb2RlX2NoYW5nZShDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sK KyAgICBxZW11X2xvZ19tYXNrKENQVV9MT0dfTU1VLCAiSGV4YWdvbiBtb2RlIGNoYW5nZSFcbiIp OworICAgIENQVVN0YXRlICpjcyA9IGVudl9jcHUoZW52KTsKKyAgICB0bGJfZmx1c2goY3MpOwor fQorCitib29sIGhleF90bGJfZmluZF9tYXRjaChDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMy X3QgVkEsCisgICAgICAgICAgICAgICAgICAgICAgICBNTVVBY2Nlc3NUeXBlIGFjY2Vzc190eXBl LCBod2FkZHIgKlBBLCBpbnQgKnByb3QsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCAqc2l6ZSwgaW50MzJfdCAqZXhjcCwgaW50IG1tdV9pZHgpCit7CisgICAgSGV4YWdvbkNQVSAq Y3B1ID0gZW52X2FyY2hjcHUoZW52KTsKKyAgICB1aW50MzJfdCBzc3IgPSBlbnYtPnRfc3JlZ1tI RVhfU1JFR19TU1JdOworICAgIHVpbnQ4X3QgYXNpZCA9IEdFVF9TU1JfRklFTEQoU1NSX0FTSUQs IHNzcik7CisgICAgaW50IGNhdXNlX2NvZGUgPSAwOworCisgICAgYm9vbCBmb3VuZCA9IGhleGFn b25fdGxiX2ZpbmRfbWF0Y2goY3B1LT50bGIsIGFzaWQsIFZBLCBhY2Nlc3NfdHlwZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQSwgcHJvdCwgc2l6ZSwgZXhjcCwg JmNhdXNlX2NvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW11 X2lkeCk7CisgICAgaWYgKGNhdXNlX2NvZGUpIHsKKyAgICAgICAgZW52LT5jYXVzZV9jb2RlID0g Y2F1c2VfY29kZTsKKyAgICB9CisgICAgcmV0dXJuIGZvdW5kOworfQorCisvKiBDYWxsZWQgZnJv bSB0bGJwIGluc3RydWN0aW9uICovCit1aW50MzJfdCBoZXhfdGxiX2xvb2t1cChDUFVIZXhhZ29u U3RhdGUgKmVudiwgdWludDMyX3Qgc3NyLCB1aW50MzJfdCBWQSkKK3sKKyAgICBIZXhhZ29uQ1BV ICpjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIHVpbnQ4X3QgYXNpZCA9IEdFVF9TU1JfRklF TEQoU1NSX0FTSUQsIHNzcik7CisgICAgaW50IGNhdXNlX2NvZGUgPSAwOworCisgICAgdWludDMy X3QgcmVzdWx0ID0gaGV4YWdvbl90bGJfbG9va3VwKGNwdS0+dGxiLCBhc2lkLCBWQSwgJmNhdXNl X2NvZGUpOworICAgIGlmIChjYXVzZV9jb2RlKSB7CisgICAgICAgIGVudi0+Y2F1c2VfY29kZSA9 IGNhdXNlX2NvZGU7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBSZXR1 cm4gY29kZXM6CisgKiAwIG9yIHBvc2l0aXZlICAgICAgICAgICAgIGluZGV4IG9mIG1hdGNoCisg KiAtMSAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIG1hdGNoZXMKKyAqIC0yICAgICAg ICAgICAgICAgICAgICAgICAgbm8gbWF0Y2gKKyAqLworaW50IGhleF90bGJfY2hlY2tfb3Zlcmxh cChDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDY0X3QgZW50cnksIHVpbnQ2NF90IGluZGV4KQor eworICAgIEhleGFnb25DUFUgKmNwdSA9IGVudl9hcmNoY3B1KGVudik7CisgICAgcmV0dXJuIGhl eGFnb25fdGxiX2NoZWNrX292ZXJsYXAoY3B1LT50bGIsIGVudHJ5LCBpbmRleCk7Cit9CisKK3Zv aWQgZHVtcF9tbXUoTW9uaXRvciAqbW9uLCBDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBI ZXhhZ29uQ1BVICpjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIGhleGFnb25fdGxiX2R1bXAo bW9uLCBjcHUtPnRsYik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwcmludF90aHJlYWQoY29u c3QgY2hhciAqc3RyLCBDUFVTdGF0ZSAqY3MpCit7CisgICAgZ19hc3NlcnQoYnFsX2xvY2tlZCgp KTsKKyAgICBDUFVIZXhhZ29uU3RhdGUgKnRocmVhZCA9IGNwdV9lbnYoY3MpOworICAgIGJvb2wg aXNfc3RvcHBlZCA9IGNwdV9pc19zdG9wcGVkKGNzKTsKKyAgICBpbnQgZXhlX21vZGUgPSBnZXRf ZXhlX21vZGUodGhyZWFkKTsKKyAgICBoZXhfbG9ja19zdGF0ZV90IGxvY2tfc3RhdGUgPSB0aHJl YWQtPnRsYl9sb2NrX3N0YXRlOworICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19NTVUsCisgICAg ICAgICAgICIlczogdGhyZWFkSWQgPSAlIiBQUkl1MzIgIjogJXMsIGV4ZV9tb2RlID0gJXMsIHRs Yl9sb2NrX3N0YXRlID0gJXNcbiIsCisgICAgICAgICAgIHN0ciwKKyAgICAgICAgICAgdGhyZWFk LT50aHJlYWRJZCwKKyAgICAgICAgICAgaXNfc3RvcHBlZCA/ICJzdG9wcGVkIiA6ICJydW5uaW5n IiwKKyAgICAgICAgICAgZXhlX21vZGUgPT0gSEVYX0VYRV9NT0RFX09GRiA/ICJvZmYiIDoKKyAg ICAgICAgICAgZXhlX21vZGUgPT0gSEVYX0VYRV9NT0RFX1JVTiA/ICJydW4iIDoKKyAgICAgICAg ICAgZXhlX21vZGUgPT0gSEVYX0VYRV9NT0RFX1dBSVQgPyAid2FpdCIgOgorICAgICAgICAgICBl eGVfbW9kZSA9PSBIRVhfRVhFX01PREVfREVCVUcgPyAiZGVidWciIDoKKyAgICAgICAgICAgInVu a25vd24iLAorICAgICAgICAgICBsb2NrX3N0YXRlID09IEhFWF9MT0NLX1VOTE9DS0VEID8gInVu bG9ja2VkIiA6CisgICAgICAgICAgIGxvY2tfc3RhdGUgPT0gSEVYX0xPQ0tfV0FJVElORyA/ICJ3 YWl0aW5nIiA6CisgICAgICAgICAgIGxvY2tfc3RhdGUgPT0gSEVYX0xPQ0tfT1dORVIgPyAib3du ZXIiIDoKKyAgICAgICAgICAgInVua25vd24iKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHBy aW50X3RocmVhZF9zdGF0ZXMoY29uc3QgY2hhciAqc3RyKQoreworICAgIENQVVN0YXRlICpjczsK KyAgICBDUFVfRk9SRUFDSChjcykgeworICAgICAgICBwcmludF90aHJlYWQoc3RyLCBjcyk7Cisg ICAgfQorfQorCit2b2lkIGhleF90bGJfbG9jayhDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAg ICBxZW11X2xvZ19tYXNrKENQVV9MT0dfTU1VLCAiaGV4X3RsYl9sb2NrOiAiIFRBUkdFVF9GTVRf bGQgIlxuIiwKKyAgICAgICAgICAgICAgICAgIGVudi0+dGhyZWFkSWQpOworICAgIEJRTF9MT0NL X0dVQVJEKCk7CisgICAgZ19hc3NlcnQoKGVudi0+dGxiX2xvY2tfY291bnQgPT0gMCkgfHwgKGVu di0+dGxiX2xvY2tfY291bnQgPT0gMSkpOworCisgICAgSGV4YWdvbkNQVSAqY3B1ID0gZW52X2Fy Y2hjcHUoZW52KTsKKyAgICB1aW50MzJfdCBzeXNjZmcgPSBjcHUtPmdsb2JhbHJlZ3MgPworICAg ICAgICBoZXhhZ29uX2dsb2JhbHJlZ19yZWFkKGNwdS0+Z2xvYmFscmVncywgSEVYX1NSRUdfU1lT Q0ZHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+dGhyZWFkSWQpIDogMDsK KyAgICB1aW50OF90IHRsYl9sb2NrID0gR0VUX1NZU0NGR19GSUVMRChTWVNDRkdfVExCTE9DSywg c3lzY2ZnKTsKKyAgICBpZiAodGxiX2xvY2spIHsKKyAgICAgICAgaWYgKGVudi0+dGxiX2xvY2tf c3RhdGUgPT0gSEVYX0xPQ0tfUVVFVUVEKSB7CisgICAgICAgICAgICBlbnYtPm5leHRfUEMgKz0g NDsKKyAgICAgICAgICAgIGVudi0+dGxiX2xvY2tfY291bnQrKzsKKyAgICAgICAgICAgIGVudi0+ dGxiX2xvY2tfc3RhdGUgPSBIRVhfTE9DS19PV05FUjsKKyAgICAgICAgICAgIFNFVF9TWVNDRkdf RklFTEQoZW52LCBTWVNDRkdfVExCTE9DSywgMSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKyAgICAgICAgaWYgKGVudi0+dGxiX2xvY2tfc3RhdGUgPT0gSEVYX0xPQ0tfT1dORVIp IHsKKyAgICAgICAgICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19NTVUgfCBMT0dfR1VFU1RfRVJS T1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJEb3VibGUgdGxibG9jayBhdCBQQzogMHgl IiBQUkl4MzIgIiwgdGhyZWFkIG1heSBoYW5nXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBlbnYtPm5leHRfUEMpOworICAgICAgICAgICAgZW52LT5uZXh0X1BDICs9IDQ7CisgICAgICAg ICAgICBDUFVTdGF0ZSAqY3MgPSBlbnZfY3B1KGVudik7CisgICAgICAgICAgICBjcHVfaW50ZXJy dXB0KGNzLCBDUFVfSU5URVJSVVBUX0hBTFQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICB9CisgICAgICAgIGVudi0+dGxiX2xvY2tfc3RhdGUgPSBIRVhfTE9DS19XQUlUSU5HOworICAg ICAgICBDUFVTdGF0ZSAqY3MgPSBlbnZfY3B1KGVudik7CisgICAgICAgIGNwdV9pbnRlcnJ1cHQo Y3MsIENQVV9JTlRFUlJVUFRfSEFMVCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW52LT5uZXh0 X1BDICs9IDQ7CisgICAgICAgIGVudi0+dGxiX2xvY2tfY291bnQrKzsKKyAgICAgICAgZW52LT50 bGJfbG9ja19zdGF0ZSA9IEhFWF9MT0NLX09XTkVSOworICAgICAgICBTRVRfU1lTQ0ZHX0ZJRUxE KGVudiwgU1lTQ0ZHX1RMQkxPQ0ssIDEpOworICAgIH0KKworICAgIGlmIChxZW11X2xvZ2xldmVs X21hc2soQ1BVX0xPR19NTVUpKSB7CisgICAgICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19NTVUs ICJUaHJlYWRzIGFmdGVyIGhleF90bGJfbG9jazpcbiIpOworICAgICAgICBwcmludF90aHJlYWRf c3RhdGVzKCJcdFRocmVhZCIpOworICAgIH0KK30KKwordm9pZCBoZXhfdGxiX3VubG9jayhDUFVI ZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBCUUxfTE9DS19HVUFSRCgpOworICAgIGdfYXNzZXJ0 KChlbnYtPnRsYl9sb2NrX2NvdW50ID09IDApIHx8IChlbnYtPnRsYl9sb2NrX2NvdW50ID09IDEp KTsKKworICAgIC8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIFRMQiBpc24ndCBsb2NrZWQgYnkgdGhp cyB0aHJlYWQgKi8KKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAg IHVpbnQzMl90IHN5c2NmZyA9IGNwdS0+Z2xvYmFscmVncyA/CisgICAgICAgIGhleGFnb25fZ2xv YmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBIRVhfU1JFR19TWVNDRkcsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW52LT50aHJlYWRJZCkgOiAwOworICAgIHVpbnQ4X3QgdGxi X2xvY2sgPSBHRVRfU1lTQ0ZHX0ZJRUxEKFNZU0NGR19UTEJMT0NLLCBzeXNjZmcpOworICAgIGlm ICgodGxiX2xvY2sgPT0gMCkgfHwKKyAgICAgICAgKGVudi0+dGxiX2xvY2tfc3RhdGUgIT0gSEVY X0xPQ0tfT1dORVIpKSB7CisgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAor ICAgICAgICAgICAgICAgICAgICAgICJ0aHJlYWQgJSIgUFJJdTMyICIgYXR0ZW1wdGVkIHRvIHRs YnVubG9jayB3aXRob3V0IGhhdmluZyB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICJsb2Nr LCB0bGJfbG9jayBzdGF0ZSA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGVudi0+dGhy ZWFkSWQsIGVudi0+dGxiX2xvY2tfc3RhdGUpOworICAgICAgICBnX2Fzc2VydChlbnYtPnRsYl9s b2NrX3N0YXRlICE9IEhFWF9MT0NLX1dBSVRJTkcpOworICAgICAgICByZXR1cm47CisgICAgfQor CisgICAgZW52LT50bGJfbG9ja19jb3VudC0tOworICAgIGVudi0+dGxiX2xvY2tfc3RhdGUgPSBI RVhfTE9DS19VTkxPQ0tFRDsKKyAgICBTRVRfU1lTQ0ZHX0ZJRUxEKGVudiwgU1lTQ0ZHX1RMQkxP Q0ssIDApOworCisgICAgLyogTG9vayBmb3IgYSB0aHJlYWQgdG8gdW5sb2NrICovCisgICAgdW5z aWduZWQgaW50IHRoaXNfdGhyZWFkSWQgPSBlbnYtPnRocmVhZElkOworICAgIENQVUhleGFnb25T dGF0ZSAqdW5sb2NrX3RocmVhZCA9IE5VTEw7CisgICAgQ1BVU3RhdGUgKmNzOworICAgIENQVV9G T1JFQUNIKGNzKSB7CisgICAgICAgIENQVUhleGFnb25TdGF0ZSAqdGhyZWFkID0gY3B1X2Vudihj cyk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhlIGhhcmR3YXJlIGltcGxlbWVudHMgcm91 bmQtcm9iaW4gZmFpcm5lc3MsIHNvIHdlIGxvb2sgZm9yIHRocmVhZHMKKyAgICAgICAgICogc3Rh cnRpbmcgYXQgZW52LT50aHJlYWRJZCArIDEgYW5kIGluY3JlbWVudGluZyBtb2R1bG8gdGhlIG51 bWJlciBvZgorICAgICAgICAgKiB0aHJlYWRzLgorICAgICAgICAgKgorICAgICAgICAgKiBUbyBp bXBsZW1lbnQgdGhpcywgd2UgY2hlY2sgaWYgdGhyZWFkIGlzIGEgZWFybGllciBpbiB0aGUgbW9k dWxvCisgICAgICAgICAqIHNlcXVlbmNlIHRoYW4gdW5sb2NrX3RocmVhZC4KKyAgICAgICAgICog ICAgIGlmIHVubG9jayB0aHJlYWQgaXMgaGlnaGVyIHRoYW4gdGhpcyB0aHJlYWQKKyAgICAgICAg ICogICAgICAgICB0aHJlYWQgbXVzdCBiZSBiZXR3ZWVuIHRoaXMgdGhyZWFkIGFuZCB1bmxvY2tf dGhyZWFkCisgICAgICAgICAqICAgICBlbHNlCisgICAgICAgICAqICAgICAgICAgdGhyZWFkIGhp Z2hlciB0aGFuIHRoaXMgdGhyZWFkIGlzIGFoZWFkIG9mIHVubG9ja190aHJlYWQKKyAgICAgICAg ICogICAgICAgICB0aHJlYWQgbXVzdCBiZSBsb3dlciB0aGVuIHVubG9jayB0aHJlYWQKKyAgICAg ICAgICovCisgICAgICAgIGlmICh0aHJlYWQtPnRsYl9sb2NrX3N0YXRlID09IEhFWF9MT0NLX1dB SVRJTkcpIHsKKyAgICAgICAgICAgIGlmICghdW5sb2NrX3RocmVhZCkgeworICAgICAgICAgICAg ICAgIHVubG9ja190aHJlYWQgPSB0aHJlYWQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHVubG9j a190aHJlYWQtPnRocmVhZElkID4gdGhpc190aHJlYWRJZCkgeworICAgICAgICAgICAgICAgIGlm ICh0aGlzX3RocmVhZElkIDwgdGhyZWFkLT50aHJlYWRJZCAmJgorICAgICAgICAgICAgICAgICAg ICB0aHJlYWQtPnRocmVhZElkIDwgdW5sb2NrX3RocmVhZC0+dGhyZWFkSWQpIHsKKyAgICAgICAg ICAgICAgICAgICAgdW5sb2NrX3RocmVhZCA9IHRocmVhZDsKKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0aHJlYWQtPnRocmVhZElk ID4gdGhpc190aHJlYWRJZCkgeworICAgICAgICAgICAgICAgICAgICB1bmxvY2tfdGhyZWFkID0g dGhyZWFkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhyZWFkLT50 aHJlYWRJZCA8IHVubG9ja190aHJlYWQtPnRocmVhZElkKSB7CisgICAgICAgICAgICAgICAgICAg IHVubG9ja190aHJlYWQgPSB0aHJlYWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgfQorICAgIGlmICh1bmxvY2tfdGhyZWFkKSB7CisgICAgICAgIGNz ID0gZW52X2NwdSh1bmxvY2tfdGhyZWFkKTsKKyAgICAgICAgcHJpbnRfdGhyZWFkKCJcdFdhaXRp bmcgdGhyZWFkIGZvdW5kIiwgY3MpOworICAgICAgICB1bmxvY2tfdGhyZWFkLT50bGJfbG9ja19z dGF0ZSA9IEhFWF9MT0NLX1FVRVVFRDsKKyAgICAgICAgU0VUX1NZU0NGR19GSUVMRCh1bmxvY2tf dGhyZWFkLCBTWVNDRkdfVExCTE9DSywgMSk7CisgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQ VV9JTlRFUlJVUFRfVExCX1VOTE9DSyk7CisgICAgfQorCisgICAgaWYgKHFlbXVfbG9nbGV2ZWxf bWFzayhDUFVfTE9HX01NVSkpIHsKKyAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX01NVSwg IlRocmVhZHMgYWZ0ZXIgaGV4X3RsYl91bmxvY2s6XG4iKTsKKyAgICAgICAgcHJpbnRfdGhyZWFk X3N0YXRlcygiXHRUaHJlYWQiKTsKKyAgICB9CisKK30KLS0gCjIuMzQuMQoK