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 lists.gnu.org (lists.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 3821EC021B8 for ; Sat, 1 Mar 2025 05:30:47 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1toFOM-0004QY-IN; Sat, 01 Mar 2025 00:28:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFOG-000431-DG for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:27:57 -0500 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1toFOC-0008BW-UG for qemu-devel@nongnu.org; Sat, 01 Mar 2025 00:27:56 -0500 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5213Iv2l015435 for ; Sat, 1 Mar 2025 05:27:41 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= VuDfpV83Wgq/LxOT1dgAEeYv0R6hD3VAsuVKef7q4DU=; b=KNTPg8n3ZR0p6ioa zDWw1+diTk75mo9G+8S1ZQxElUJww/xzvuU6T7jPTss1hAylAHj14a6DuPCxCCJO npDa33FX0y56yRFWwF8tIH/Tb8RNT2482/Ebw8HJZJJ/4bPMAP7CFzXzaRWfhzxg i2Ld0HGUxTfI7QS1I4YUUaL2kO1JC7egI2dsW/80/wB6yxHql12mKKhzkMfWUiM2 IiPymdFlplyrA3C060s+prQLdRzikCw2eiA0y1Kkp3kE+hzrJF3RPzkYVBr/xhnq ZsoBTOz30GXHxdCduGyz3Y3pMDNsYiPWb7yGmdH2yHYwzu1Iy455OftnQLGSGGA0 lKUYkQ== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 453t7hr68c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sat, 01 Mar 2025 05:27:41 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2fed20dd70cso1134252a91.1 for ; Fri, 28 Feb 2025 21:27:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740806858; x=1741411658; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VuDfpV83Wgq/LxOT1dgAEeYv0R6hD3VAsuVKef7q4DU=; b=Nvwh+nnsY56uA16XrLOlFgE/sudVRhDYN+PlNPiD4VbZz5HQ3z8zRadFUu615xsc3T qu4BGv/NJ8bNxLbuP/jAOK94HZGS8g8JEcBf8lWOwhuzS/fxV4sOOrLA7UapDR8acjiy wyrVB0tsOkaSI8qCI3T6XpGfNyxV+7+7J6zk2oeD5UW1zhwmJEoI/n5Qx1959xBS2UJa Avoz5CXErvvJUhYgVNVU45OHGLKDSav97cWXg34ZmhlkiXUraRIW5rydqGaj2Xm6PFqC EJo7aklJDCLICJy2EcLDvV3c6qNz7fXBZBdouecWbohF+rPzWmAOCjHHOUNIaHpHgfKv cLuA== X-Gm-Message-State: AOJu0YwXONwKhY6TcoRNxhQ4mr0wVzaguCnZ+5XTwYs4BTIa7sbgcsCz 8ky4A+Rb1SI2f0Jl874ND4jOSt2pPe6ZXKe9NGwBJtVyXN28fgZzWo+DXmdxd1D7oCiAl0/rY7c qzY/p5TChBiDgBBDRBcCeWsZZSrCcI/DsCx6whunXZeG96klhvgF6cwQZF2Bncg== X-Gm-Gg: ASbGncvzDbu0hIil0prv3h8kFDuIoVKRJgUBt11ZhAC4gVEg5Yy9dIPH6Co0BODkNpv X5bWufwpg+8BfHXjRPXNkQYiF15FjsVGWYR/J90T29JtCCKrzjLXthvtlRA5maHqFWJSa7+DjbZ /p8mOKdzbi3cQRObrcmWpWwfxsKbuHFRZJ8IG0dAjrSHWlhdaZ2O+zbJ8wkE+AYjUrXNtLUiF8H K02+plRLQtliIm6GiWhc1ab4Sd8WMYavuUIyer6HuXS6EkhdU50DuAIE2xwo4AQUrY98/klMD3I IVUb+8e6PJrNJfGwOu9gehETCLnDyEVARa6pj6lS151ybzBuiKzYOVq3IKx1ngDD X-Received: by 2002:a17:90b:2fc8:b0:2fe:8282:cb9d with SMTP id 98e67ed59e1d1-2febac0466fmr9396885a91.28.1740806858305; Fri, 28 Feb 2025 21:27:38 -0800 (PST) X-Google-Smtp-Source: AGHT+IEay8h3G6k1BkMNN6VEYL7ZzBYKejN++mYTPMs/+08+nxdAz/46a27lyHFzqIou5m9rGTQ3cQ== X-Received: by 2002:a17:90b:2fc8:b0:2fe:8282:cb9d with SMTP id 98e67ed59e1d1-2febac0466fmr9396861a91.28.1740806857849; Fri, 28 Feb 2025 21:27:37 -0800 (PST) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fe825bb346sm6930596a91.18.2025.02.28.21.27.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 21:27:37 -0800 (PST) From: Brian Cain To: qemu-devel@nongnu.org Cc: brian.cain@oss.qualcomm.com, richard.henderson@linaro.org, philmd@linaro.org, quic_mathbern@quicinc.com, ale@rev.ng, anjo@rev.ng, quic_mliebel@quicinc.com, ltaylorsimpson@gmail.com, alex.bennee@linaro.org, quic_mburton@quicinc.com, sidneym@quicinc.com, Brian Cain , Michael Lambert Subject: [PATCH 38/38] target/hexagon: Add hex_interrupts support Date: Fri, 28 Feb 2025 21:26:28 -0800 Message-Id: <20250301052628.1011210-39-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250301052628.1011210-1-brian.cain@oss.qualcomm.com> References: <20250301052628.1011210-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-GUID: 1RMBpcn2ocYhqASUshSyXT_55kstWwJZ X-Proofpoint-ORIG-GUID: 1RMBpcn2ocYhqASUshSyXT_55kstWwJZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-01_01,2025-02-28_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 suspectscore=0 mlxlogscore=999 clxscore=1015 mlxscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2503010040 Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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: 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 RnJvbTogQnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+CgpDby1hdXRob3JlZC1ieTogVGF5 bG9yIFNpbXBzb24gPGx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IFNp ZCBNYW5uaW5nIDxzaWRuZXltQHF1aWNpbmMuY29tPgpDby1hdXRob3JlZC1ieTogTWljaGFlbCBM YW1iZXJ0IDxtbGFtYmVydEBxdWljaW5jLmNvbT4KU2lnbmVkLW9mZi1ieTogQnJpYW4gQ2FpbiA8 YnJpYW4uY2FpbkBvc3MucXVhbGNvbW0uY29tPgotLS0KIHRhcmdldC9oZXhhZ29uL2NwdS5oICAg ICAgICAgICAgfCAgIDEgKwogdGFyZ2V0L2hleGFnb24vaGV4X2ludGVycnVwdHMuaCB8ICAxNSAr KwogdGFyZ2V0L2hleGFnb24vY3B1LmMgICAgICAgICAgICB8ICAgMiArCiB0YXJnZXQvaGV4YWdv bi9oZXhfaW50ZXJydXB0cy5jIHwgMzI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiA0IGZpbGVzIGNoYW5nZWQsIDM0MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg dGFyZ2V0L2hleGFnb24vaGV4X2ludGVycnVwdHMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRhcmdl dC9oZXhhZ29uL2hleF9pbnRlcnJ1cHRzLmMKCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9j cHUuaCBiL3RhcmdldC9oZXhhZ29uL2NwdS5oCmluZGV4IDA0ZGViZGE4YzIuLjg5NDIxOWZkMjAg MTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL2NwdS5oCisrKyBiL3RhcmdldC9oZXhhZ29uL2Nw dS5oCkBAIC0xNzcsNiArMTc3LDcgQEAgc3RydWN0IEFyY2hDUFUgewogICAgIGJvb2wgc2hvcnRf Y2lyY3VpdDsKICNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQogICAgIHVpbnQzMl90IG51bV90bGJz OworICAgIHVpbnQzMl90IGwydmljX2Jhc2VfYWRkcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0 IGEvdGFyZ2V0L2hleGFnb24vaGV4X2ludGVycnVwdHMuaCBiL3RhcmdldC9oZXhhZ29uL2hleF9p bnRlcnJ1cHRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTdhMjQz OTQ2YwotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2hleF9pbnRlcnJ1cHRzLmgK QEAgLTAsMCArMSwxNSBAQAorLyoKKyAqIENvcHlyaWdodChjKSAyMDIyLTIwMjUgUXVhbGNvbW0g SW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorICovCisKKyNpZm5kZWYgSEVY X0lOVEVSUlVQVFNfSAorI2RlZmluZSBIRVhfSU5URVJSVVBUU19ICisKK2Jvb2wgaGV4X2NoZWNr X2ludGVycnVwdHMoQ1BVSGV4YWdvblN0YXRlICplbnYpOwordm9pZCBoZXhfY2xlYXJfaW50ZXJy dXB0cyhDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3QgbWFzaywgdWludDMyX3QgdHlwZSk7 Cit2b2lkIGhleF9yYWlzZV9pbnRlcnJ1cHRzKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJf dCBtYXNrLCB1aW50MzJfdCB0eXBlKTsKK3ZvaWQgaGV4X2ludGVycnVwdF91cGRhdGUoQ1BVSGV4 YWdvblN0YXRlICplbnYpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2Nw dS5jIGIvdGFyZ2V0L2hleGFnb24vY3B1LmMKaW5kZXggN2ZmNjc4MTk1ZC4uY2I1NmI5MjljZiAx MDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vY3B1LmMKKysrIGIvdGFyZ2V0L2hleGFnb24vY3B1 LmMKQEAgLTU5LDYgKzU5LDggQEAgc3RhdGljIE9iamVjdENsYXNzICpoZXhhZ29uX2NwdV9jbGFz c19ieV9uYW1lKGNvbnN0IGNoYXIgKmNwdV9tb2RlbCkKIHN0YXRpYyBjb25zdCBQcm9wZXJ0eSBo ZXhhZ29uX2NwdV9wcm9wZXJ0aWVzW10gPSB7CiAjaWYgIWRlZmluZWQoQ09ORklHX1VTRVJfT05M WSkKICAgICBERUZJTkVfUFJPUF9VSU5UMzIoImp0bGItZW50cmllcyIsIEhleGFnb25DUFUsIG51 bV90bGJzLCBNQVhfVExCX0VOVFJJRVMpLAorICAgIERFRklORV9QUk9QX1VJTlQzMigibDJ2aWMt YmFzZS1hZGRyIiwgSGV4YWdvbkNQVSwgbDJ2aWNfYmFzZV9hZGRyLAorICAgICAgICAweGZmZmZm ZmZmVUxMKSwKICNlbmRpZgogICAgIERFRklORV9QUk9QX0JPT0woImxsZGItY29tcGF0IiwgSGV4 YWdvbkNQVSwgbGxkYl9jb21wYXQsIGZhbHNlKSwKICAgICBERUZJTkVfUFJPUF9VTlNJR05FRCgi bGxkYi1zdGFjay1hZGp1c3QiLCBIZXhhZ29uQ1BVLCBsbGRiX3N0YWNrX2FkanVzdCwgMCwKZGlm ZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2hleF9pbnRlcnJ1cHRzLmMgYi90YXJnZXQvaGV4YWdv bi9oZXhfaW50ZXJydXB0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmZkMDBiY2ZiOWEKLS0tIC9kZXYvbnVsbAorKysgYi90YXJnZXQvaGV4YWdvbi9oZXhfaW50ZXJy dXB0cy5jCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICogQ29weXJpZ2h0KGMpIDIwMjItMjAyNSBR dWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK KyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyCisgKi8KKworI2lu Y2x1ZGUgInFlbXUvb3NkZXAuaCIKKyNpbmNsdWRlICJxZW11L2xvZy5oIgorI2luY2x1ZGUgInFl bXUvbWFpbi1sb29wLmgiCisjaW5jbHVkZSAiY3B1LmgiCisjaW5jbHVkZSAiaGV4X2ludGVycnVw dHMuaCIKKyNpbmNsdWRlICJtYWNyb3MuaCIKKyNpbmNsdWRlICJzeXNfbWFjcm9zLmgiCisjaW5j bHVkZSAic3lzdGVtL2NwdXMuaCIKKworc3RhdGljIGJvb2wgaGV4X2lzX3F1YWxpZmllZF9mb3Jf aW50KENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgaW50X251bSk7CisKK3N0YXRpYyBib29sIGdl dF9zeXNjZmdfZ2llKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIHRhcmdldF91bG9uZyBz eXNjZmcgPSBhcmNoX2dldF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdfU1lTQ0ZHKTsKKyAgICBy ZXR1cm4gR0VUX1NZU0NGR19GSUVMRChTWVNDRkdfR0lFLCBzeXNjZmcpOworfQorCitzdGF0aWMg Ym9vbCBnZXRfc3NyX2V4KENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIHRhcmdldF91bG9u ZyBzc3IgPSBhcmNoX2dldF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdfU1NSKTsKKyAgICByZXR1 cm4gR0VUX1NTUl9GSUVMRChTU1JfRVgsIHNzcik7Cit9CisKK3N0YXRpYyBib29sIGdldF9zc3Jf aWUoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgdGFyZ2V0X3Vsb25nIHNzciA9IGFyY2hf Z2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19TU1IpOworICAgIHJldHVybiBHRVRfU1NSX0ZJ RUxEKFNTUl9JRSwgc3NyKTsKK30KKworLyogRG8gdGhlc2UgdG9nZXRoZXIgc28gd2Ugb25seSBo YXZlIHRvIGNhbGwgaGV4YWdvbl9tb2RpZnlfc3NyIG9uY2UgKi8KK3N0YXRpYyB2b2lkIHNldF9z c3JfZXhfY2F1c2UoQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCBleCwgdWludDMyX3QgY2F1c2Up Cit7CisgICAgdGFyZ2V0X3Vsb25nIG9sZCA9IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhf U1JFR19TU1IpOworICAgIFNFVF9TWVNURU1fRklFTEQoZW52LCBIRVhfU1JFR19TU1IsIFNTUl9F WCwgZXgpOworICAgIFNFVF9TWVNURU1fRklFTEQoZW52LCBIRVhfU1JFR19TU1IsIFNTUl9DQVVT RSwgY2F1c2UpOworICAgIHRhcmdldF91bG9uZyBuZXcgPSBhcmNoX2dldF9zeXN0ZW1fcmVnKGVu diwgSEVYX1NSRUdfU1NSKTsKKyAgICBoZXhhZ29uX21vZGlmeV9zc3IoZW52LCBuZXcsIG9sZCk7 Cit9CisKK3N0YXRpYyBib29sIGdldF9pYWRfYml0KENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQg aW50X251bSkKK3sKKyAgICB0YXJnZXRfdWxvbmcgaXBlbmRhZCA9IGFyY2hfZ2V0X3N5c3RlbV9y ZWcoZW52LCBIRVhfU1JFR19JUEVOREFEKTsKKyAgICB0YXJnZXRfdWxvbmcgaWFkID0gR0VUX0ZJ RUxEKElQRU5EQURfSUFELCBpcGVuZGFkKTsKKyAgICByZXR1cm4gZXh0cmFjdDMyKGlhZCwgaW50 X251bSwgMSk7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9pYWRfYml0KENQVUhleGFnb25TdGF0ZSAq ZW52LCBpbnQgaW50X251bSwgaW50IHZhbCkKK3sKKyAgICB0YXJnZXRfdWxvbmcgaXBlbmRhZCA9 IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19JUEVOREFEKTsKKyAgICB0YXJnZXRf dWxvbmcgaWFkID0gR0VUX0ZJRUxEKElQRU5EQURfSUFELCBpcGVuZGFkKTsKKyAgICBpYWQgPSBk ZXBvc2l0MzIoaWFkLCBpbnRfbnVtLCAxLCB2YWwpOworICAgIGZTRVRfRklFTEQoaXBlbmRhZCwg SVBFTkRBRF9JQUQsIGlhZCk7CisgICAgYXJjaF9zZXRfc3lzdGVtX3JlZyhlbnYsIEhFWF9TUkVH X0lQRU5EQUQsIGlwZW5kYWQpOworfQorCitzdGF0aWMgdWludDMyX3QgZ2V0X2lwZW5kKENQVUhl eGFnb25TdGF0ZSAqZW52KQoreworICAgIHRhcmdldF91bG9uZyBpcGVuZGFkID0gYXJjaF9nZXRf c3lzdGVtX3JlZyhlbnYsIEhFWF9TUkVHX0lQRU5EQUQpOworICAgIHJldHVybiBHRVRfRklFTEQo SVBFTkRBRF9JUEVORCwgaXBlbmRhZCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBnZXRfaXBl bmRfYml0KENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgaW50X251bSkKK3sKKyAgICB0YXJnZXRf dWxvbmcgaXBlbmRhZCA9IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19JUEVOREFE KTsKKyAgICB0YXJnZXRfdWxvbmcgaXBlbmQgPSBHRVRfRklFTEQoSVBFTkRBRF9JUEVORCwgaXBl bmRhZCk7CisgICAgcmV0dXJuIGV4dHJhY3QzMihpcGVuZCwgaW50X251bSwgMSk7Cit9CisKK3N0 YXRpYyB2b2lkIGNsZWFyX2lwZW5kKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCBtYXNr KQoreworICAgIHRhcmdldF91bG9uZyBpcGVuZGFkID0gYXJjaF9nZXRfc3lzdGVtX3JlZyhlbnYs IEhFWF9TUkVHX0lQRU5EQUQpOworICAgIHRhcmdldF91bG9uZyBpcGVuZCA9IEdFVF9GSUVMRChJ UEVOREFEX0lQRU5ELCBpcGVuZGFkKTsKKyAgICBpcGVuZCAmPSB+bWFzazsKKyAgICBmU0VUX0ZJ RUxEKGlwZW5kYWQsIElQRU5EQURfSVBFTkQsIGlwZW5kKTsKKyAgICBhcmNoX3NldF9zeXN0ZW1f cmVnKGVudiwgSEVYX1NSRUdfSVBFTkRBRCwgaXBlbmRhZCk7Cit9CisKK3N0YXRpYyB2b2lkIHNl dF9pcGVuZChDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMyX3QgbWFzaykKK3sKKyAgICB0YXJn ZXRfdWxvbmcgaXBlbmRhZCA9IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19JUEVO REFEKTsKKyAgICB0YXJnZXRfdWxvbmcgaXBlbmQgPSBHRVRfRklFTEQoSVBFTkRBRF9JUEVORCwg aXBlbmRhZCk7CisgICAgaXBlbmQgfD0gbWFzazsKKyAgICBmU0VUX0ZJRUxEKGlwZW5kYWQsIElQ RU5EQURfSVBFTkQsIGlwZW5kKTsKKyAgICBhcmNoX3NldF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NS RUdfSVBFTkRBRCwgaXBlbmRhZCk7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9pcGVuZF9iaXQoQ1BV SGV4YWdvblN0YXRlICplbnYsIGludCBpbnRfbnVtLCBpbnQgdmFsKQoreworICAgIHRhcmdldF91 bG9uZyBpcGVuZGFkID0gYXJjaF9nZXRfc3lzdGVtX3JlZyhlbnYsIEhFWF9TUkVHX0lQRU5EQUQp OworICAgIHRhcmdldF91bG9uZyBpcGVuZCA9IEdFVF9GSUVMRChJUEVOREFEX0lQRU5ELCBpcGVu ZGFkKTsKKyAgICBpcGVuZCA9IGRlcG9zaXQzMihpcGVuZCwgaW50X251bSwgMSwgdmFsKTsKKyAg ICBmU0VUX0ZJRUxEKGlwZW5kYWQsIElQRU5EQURfSVBFTkQsIGlwZW5kKTsKKyAgICBhcmNoX3Nl dF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdfSVBFTkRBRCwgaXBlbmRhZCk7Cit9CisKK3N0YXRp YyBib29sIGdldF9pbWFza19iaXQoQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCBpbnRfbnVtKQor eworICAgIHRhcmdldF91bG9uZyBpbWFzayA9IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhf U1JFR19JTUFTSyk7CisgICAgcmV0dXJuIGV4dHJhY3QzMihpbWFzaywgaW50X251bSwgMSk7Cit9 CisKK3N0YXRpYyB1aW50MzJfdCBnZXRfcHJpbyhDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAg ICB0YXJnZXRfdWxvbmcgc3RpZCA9IGFyY2hfZ2V0X3N5c3RlbV9yZWcoZW52LCBIRVhfU1JFR19T VElEKTsKKyAgICByZXR1cm4gZXh0cmFjdDMyKHN0aWQsIHJlZ19maWVsZF9pbmZvW1NUSURfUFJJ T10ub2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgcmVnX2ZpZWxkX2luZm9bU1RJRF9QUklP XS53aWR0aCk7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9lbHIoQ1BVSGV4YWdvblN0YXRlICplbnYs IHRhcmdldF91bG9uZyB2YWwpCit7CisgICAgYXJjaF9zZXRfc3lzdGVtX3JlZyhlbnYsIEhFWF9T UkVHX0VMUiwgdmFsKTsKK30KKworc3RhdGljIGJvb2wgZ2V0X3NjaGVkY2ZnZW4oQ1BVSGV4YWdv blN0YXRlICplbnYpCit7CisgICAgdGFyZ2V0X3Vsb25nIHNjaGVkY2ZnID0gYXJjaF9nZXRfc3lz dGVtX3JlZyhlbnYsIEhFWF9TUkVHX1NDSEVEQ0ZHKTsKKyAgICByZXR1cm4gZXh0cmFjdDMyKHNj aGVkY2ZnLCByZWdfZmllbGRfaW5mb1tTQ0hFRENGR19FTl0ub2Zmc2V0LAorICAgICAgICAgICAg ICAgICAgICAgcmVnX2ZpZWxkX2luZm9bU0NIRURDRkdfRU5dLndpZHRoKTsKK30KKworc3RhdGlj IGJvb2wgaXNfbG93ZXN0X3ByaW8oQ1BVSGV4YWdvblN0YXRlICplbnYsIGludCBpbnRfbnVtKQor eworICAgIHVpbnQzMl90IG15X3ByaW8gPSBnZXRfcHJpbyhlbnYpOworICAgIENQVVN0YXRlICpj czsKKworICAgIENQVV9GT1JFQUNIKGNzKSB7CisgICAgICAgIENQVUhleGFnb25TdGF0ZSAqaGV4 X2VudiA9IGNwdV9lbnYoY3MpOworICAgICAgICBpZiAoIWhleF9pc19xdWFsaWZpZWRfZm9yX2lu dChoZXhfZW52LCBpbnRfbnVtKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K KworICAgICAgICAvKiBOb3RlIHRoYXQgbG93ZXIgdmFsdWVzIGluZGljYXRlICpoaWdoZXIqIHBy aW9yaXR5ICovCisgICAgICAgIGlmIChteV9wcmlvIDwgZ2V0X3ByaW8oaGV4X2VudikpIHsKKyAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1 ZTsKK30KKworc3RhdGljIGJvb2wgaGV4X2lzX3F1YWxpZmllZF9mb3JfaW50KENQVUhleGFnb25T dGF0ZSAqZW52LCBpbnQgaW50X251bSkKK3sKKyAgICBib29sIHN5c2NmZ19naWUgPSBnZXRfc3lz Y2ZnX2dpZShlbnYpOworICAgIGJvb2wgaWFkID0gZ2V0X2lhZF9iaXQoZW52LCBpbnRfbnVtKTsK KyAgICBib29sIHNzcl9pZSA9IGdldF9zc3JfaWUoZW52KTsKKyAgICBib29sIHNzcl9leCA9IGdl dF9zc3JfZXgoZW52KTsKKyAgICBib29sIGltYXNrID0gZ2V0X2ltYXNrX2JpdChlbnYsIGludF9u dW0pOworCisgICAgcmV0dXJuIHN5c2NmZ19naWUgJiYgIWlhZCAmJiBzc3JfaWUgJiYgIXNzcl9l eCAmJiAhaW1hc2s7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyX3BlbmRpbmdfbG9ja3MoQ1BVSGV4 YWdvblN0YXRlICplbnYpCit7CisgICAgZ19hc3NlcnQoYnFsX2xvY2tlZCgpKTsKKyAgICBpZiAo ZW52LT5rMF9sb2NrX3N0YXRlID09IEhFWF9MT0NLX1dBSVRJTkcpIHsKKyAgICAgICAgZW52LT5r MF9sb2NrX3N0YXRlID0gSEVYX0xPQ0tfVU5MT0NLRUQ7CisgICAgfQorICAgIGlmIChlbnYtPnRs Yl9sb2NrX3N0YXRlID09IEhFWF9MT0NLX1dBSVRJTkcpIHsKKyAgICAgICAgZW52LT50bGJfbG9j a19zdGF0ZSA9IEhFWF9MT0NLX1VOTE9DS0VEOworICAgIH0KK30KKworc3RhdGljIGJvb2wgc2hv dWxkX25vdF9leGVjKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIHJldHVybiAoZ2V0X2V4 ZV9tb2RlKGVudikgPT0gSEVYX0VYRV9NT0RFX1dBSVQpOworfQorCitzdGF0aWMgdm9pZCByZXN0 b3JlX3N0YXRlKENQVUhleGFnb25TdGF0ZSAqZW52LCBib29sIGludF9hY2NlcHRlZCkKK3sKKyAg ICBDUFVTdGF0ZSAqY3MgPSBlbnZfY3B1KGVudik7CisgICAgY3B1X3Jlc2V0X2ludGVycnVwdChj cywgQ1BVX0lOVEVSUlVQVF9IQVJEIHwgQ1BVX0lOVEVSUlVQVF9TV0kpOworICAgIGlmICghaW50 X2FjY2VwdGVkICYmIHNob3VsZF9ub3RfZXhlYyhlbnYpKSB7CisgICAgICAgIGNwdV9pbnRlcnJ1 cHQoY3MsIENQVV9JTlRFUlJVUFRfSEFMVCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBoZXhf YWNjZXB0X2ludChDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50IGludF9udW0pCit7CisgICAgQ1BV U3RhdGUgKmNzID0gZW52X2NwdShlbnYpOworICAgIHRhcmdldF91bG9uZyBldmIgPSBhcmNoX2dl dF9zeXN0ZW1fcmVnKGVudiwgSEVYX1NSRUdfRVZCKTsKKyAgICBjb25zdCBpbnQgZXhlX21vZGUg PSBnZXRfZXhlX21vZGUoZW52KTsKKyAgICBjb25zdCBib29sIGluX3dhaXRfbW9kZSA9IGV4ZV9t b2RlID09IEhFWF9FWEVfTU9ERV9XQUlUOworCisgICAgc2V0X2lwZW5kX2JpdChlbnYsIGludF9u dW0sIDApOworICAgIHNldF9pYWRfYml0KGVudiwgaW50X251bSwgMSk7CisgICAgc2V0X3Nzcl9l eF9jYXVzZShlbnYsIDEsIEhFWF9DQVVTRV9JTlQwIHwgaW50X251bSk7CisgICAgY3MtPmV4Y2Vw dGlvbl9pbmRleCA9IEhFWF9FVkVOVF9JTlQwICsgaW50X251bTsKKyAgICBlbnYtPmNhdXNlX2Nv ZGUgPSBIRVhfRVZFTlRfSU5UMCArIGludF9udW07CisgICAgY2xlYXJfcGVuZGluZ19sb2Nrcyhl bnYpOworICAgIGlmIChpbl93YWl0X21vZGUpIHsKKyAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVf TE9HX0lOVCwKKyAgICAgICAgICAgICIlczogdGhyZWFkICVkIHJlc3VtaW5nLCBleGl0aW5nIFdB SVQgbW9kZVxuIiwKKyAgICAgICAgICAgIF9fZnVuY19fLCBlbnYtPnRocmVhZElkKTsKKyAgICAg ICAgc2V0X2VscihlbnYsIGVudi0+d2FpdF9uZXh0X3BjKTsKKyAgICAgICAgY2xlYXJfd2FpdF9t b2RlKGVudik7CisgICAgICAgIGNzLT5oYWx0ZWQgPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKGVu di0+azBfbG9ja19zdGF0ZSA9PSBIRVhfTE9DS19XQUlUSU5HKSB7CisgICAgICAgIGdfYXNzZXJ0 X25vdF9yZWFjaGVkKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2V0X2VscihlbnYsIGVudi0+ Z3ByW0hFWF9SRUdfUENdKTsKKyAgICB9CisgICAgZW52LT5ncHJbSEVYX1JFR19QQ10gPSBldmIg fCAoY3MtPmV4Y2VwdGlvbl9pbmRleCA8PCAyKTsKKyAgICBpZiAoZ2V0X2lwZW5kKGVudikgPT0g MCkgeworICAgICAgICByZXN0b3JlX3N0YXRlKGVudiwgdHJ1ZSk7CisgICAgfQorfQorCisKK2Jv b2wgaGV4X2NoZWNrX2ludGVycnVwdHMoQ1BVSGV4YWdvblN0YXRlICplbnYpCit7CisgICAgQ1BV U3RhdGUgKmNzID0gZW52X2NwdShlbnYpOworICAgIGJvb2wgaW50X2hhbmRsZWQgPSBmYWxzZTsK KyAgICBib29sIHNzcl9leCA9IGdldF9zc3JfZXgoZW52KTsKKyAgICBpbnQgbWF4X2ludHMgPSAz MjsKKyAgICBib29sIHNjaGVkY2ZnZW47CisKKyAgICAvKiBFYXJseSBleGl0IGlmIG5vdGhpbmcg cGVuZGluZyAqLworICAgIGlmIChnZXRfaXBlbmQoZW52KSA9PSAwKSB7CisgICAgICAgIHJlc3Rv cmVfc3RhdGUoZW52LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg ICBCUUxfTE9DS19HVUFSRCgpOworICAgIC8qIE9ubHkgY2hlY2sgcHJpb3JpdGllcyB3aGVuIHNj aGVkY2ZnZW4gaXMgc2V0ICovCisgICAgc2NoZWRjZmdlbiA9IGdldF9zY2hlZGNmZ2VuKGVudik7 CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhfaW50czsgaSsrKSB7CisgICAgICAgIGlmICgh Z2V0X2lhZF9iaXQoZW52LCBpKSAmJiBnZXRfaXBlbmRfYml0KGVudiwgaSkpIHsKKyAgICAgICAg ICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19JTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICIlczogdGhyZWFkWyVkXSBwYyA9IDB4JXggZm91bmQgaW50ICVkXG4iLCBfX2Z1bmNfXywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgZW52LT50aHJlYWRJZCwgZW52LT5ncHJbSEVYX1JFR19Q Q10sIGkpOworICAgICAgICAgICAgaWYgKGhleF9pc19xdWFsaWZpZWRfZm9yX2ludChlbnYsIGkp ICYmCisgICAgICAgICAgICAgICAgKCFzY2hlZGNmZ2VuIHx8IGlzX2xvd2VzdF9wcmlvKGVudiwg aSkpKSB7CisgICAgICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX0lOVCwgIiVzOiB0 aHJlYWRbJWRdIGludCAlZCBoYW5kbGVkX1xuIiwKKyAgICAgICAgICAgICAgICAgICAgX19mdW5j X18sIGVudi0+dGhyZWFkSWQsIGkpOworICAgICAgICAgICAgICAgIGhleF9hY2NlcHRfaW50KGVu diwgaSk7CisgICAgICAgICAgICAgICAgaW50X2hhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYm9vbCBzeXNjZmdfZ2llID0g Z2V0X3N5c2NmZ19naWUoZW52KTsKKyAgICAgICAgICAgIGJvb2wgaWFkID0gZ2V0X2lhZF9iaXQo ZW52LCBpKTsKKyAgICAgICAgICAgIGJvb2wgc3NyX2llID0gZ2V0X3Nzcl9pZShlbnYpOworICAg ICAgICAgICAgYm9vbCBpbWFzayA9IGdldF9pbWFza19iaXQoZW52LCBpKTsKKworICAgICAgICAg ICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IiVzOiB0aHJlYWRbJWRdIGludCAlZCBub3QgaGFuZGxlZCwgcXVhbGlmaWVkOiAlZCwgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAic2NoZWRjZmdfZW46ICVkLCBsb3cgcHJpbyAlZFxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGVudi0+dGhyZWFkSWQsIGksCisg ICAgICAgICAgICAgICAgICAgICAgICAgIGhleF9pc19xdWFsaWZpZWRfZm9yX2ludChlbnYsIGkp LCBzY2hlZGNmZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpc19sb3dlc3RfcHJpbyhl bnYsIGkpKTsKKworICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVfTE9HX0lOVCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIiVzOiB0aHJlYWRbJWRdIGludCAlZCBub3QgaGFuZGxlZCwg R0lFICVkLCBpYWQgJWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlNTUjpJRSAlZCwg U1NSOkVYOiAlZCwgaW1hc2sgYml0ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBf X2Z1bmNfXywgZW52LT50aHJlYWRJZCwgaSwgc3lzY2ZnX2dpZSwgaWFkLCBzc3JfaWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIHNzcl9leCwgaW1hc2spOworICAgICAgICB9CisgICAgfQor CisgICAgLyoKKyAgICAgKiBJZiB3ZSBkaWRuJ3QgaGFuZGxlIHRoZSBpbnRlcnJ1cHQgYW5kIGl0 IHdhc24ndAorICAgICAqIGJlY2F1c2Ugd2Ugd2VyZSBpbiBFWCBzdGF0ZSwgdGhlbiB3ZSB3b24n dCBiZSBhYmxlCisgICAgICogdG8gZXhlY3V0ZSB0aGUgaW50ZXJydXB0IG9uIHRoaXMgQ1BVIHVu bGVzcyBzb21ldGhpbmcKKyAgICAgKiBjaGFuZ2VzIGluIHRoZSBDUFUgc3RhdGUuICBDbGVhciB0 aGUgaW50ZXJydXB0X3JlcXVlc3QgYml0cworICAgICAqIHdoaWxlIHByZXNlcnZpbmcgdGhlIElQ RU5EIGJpdHMsIGFuZCB3ZSBjYW4gcmUtYXNzZXJ0IHRoZQorICAgICAqIGludGVycnVwdF9yZXF1 ZXN0IGJpdChzKSB3aGVuIHdlIGV4ZWN1dGUgb25lIG9mIHRob3NlIGluc3RydWN0aW9ucy4KKyAg ICAgKi8KKyAgICBpZiAoIWludF9oYW5kbGVkICYmICFzc3JfZXgpIHsKKyAgICAgICAgcmVzdG9y ZV9zdGF0ZShlbnYsIGludF9oYW5kbGVkKTsKKyAgICB9IGVsc2UgaWYgKGludF9oYW5kbGVkKSB7 CisgICAgICAgIGFzc2VydCghY3MtPmhhbHRlZCk7CisgICAgfQorCisgICAgcmV0dXJuIGludF9o YW5kbGVkOworfQorCit2b2lkIGhleF9jbGVhcl9pbnRlcnJ1cHRzKENQVUhleGFnb25TdGF0ZSAq ZW52LCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCB0eXBlKQoreworICAgIGlmIChtYXNrID09IDAp IHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogTm90aWZ5IGFsbCBD UFVzIHRoYXQgdGhlIGludGVycnVwdCBoYXMgaGFwcGVuZWQKKyAgICAgKi8KKyAgICBCUUxfTE9D S19HVUFSRCgpOworICAgIGNsZWFyX2lwZW5kKGVudiwgbWFzayk7CisgICAgaGV4X2ludGVycnVw dF91cGRhdGUoZW52KTsKK30KKwordm9pZCBoZXhfcmFpc2VfaW50ZXJydXB0cyhDUFVIZXhhZ29u U3RhdGUgKmVudiwgdWludDMyX3QgbWFzaywgdWludDMyX3QgdHlwZSkKK3sKKyAgICBnX2Fzc2Vy dChicWxfbG9ja2VkKCkpOworICAgIGlmIChtYXNrID09IDApIHsKKyAgICAgICAgcmV0dXJuOwor ICAgIH0KKworICAgIC8qCisgICAgICogTm90aWZ5IGFsbCBDUFVzIHRoYXQgdGhlIGludGVycnVw dCBoYXMgaGFwcGVuZWQKKyAgICAgKi8KKyAgICBzZXRfaXBlbmQoZW52LCBtYXNrKTsKKyAgICBo ZXhfaW50ZXJydXB0X3VwZGF0ZShlbnYpOworfQorCit2b2lkIGhleF9pbnRlcnJ1cHRfdXBkYXRl KENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIENQVVN0YXRlICpjczsKKworICAgIGdfYXNz ZXJ0KGJxbF9sb2NrZWQoKSk7CisgICAgaWYgKGdldF9pcGVuZChlbnYpICE9IDApIHsKKyAgICAg ICAgQ1BVX0ZPUkVBQ0goY3MpIHsKKyAgICAgICAgICAgIENQVUhleGFnb25TdGF0ZSAqaGV4X2Vu diA9IGNwdV9lbnYoY3MpOworICAgICAgICAgICAgY29uc3QgaW50IGV4ZV9tb2RlID0gZ2V0X2V4 ZV9tb2RlKGhleF9lbnYpOworICAgICAgICAgICAgaWYgKGV4ZV9tb2RlICE9IEhFWF9FWEVfTU9E RV9PRkYpIHsKKyAgICAgICAgICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lO VEVSUlVQVF9TV0k7CisgICAgICAgICAgICAgICAgY3B1X3Jlc3VtZShjcyk7CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICB9Cit9Ci0tIAoyLjM0LjEKCg==