From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C551AC433EF for ; Mon, 20 Sep 2021 21:34:58 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 52588611AF for ; Mon, 20 Sep 2021 21:34:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 52588611AF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=quicinc.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=nongnu.org Received: from localhost ([::1]:35026 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mSQwD-0000l4-FA for qemu-devel@archiver.kernel.org; Mon, 20 Sep 2021 17:34:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60374) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mSQmO-0001rO-UM for qemu-devel@nongnu.org; Mon, 20 Sep 2021 17:24:48 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:9862) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1mSQmM-00023A-AJ for qemu-devel@nongnu.org; Mon, 20 Sep 2021 17:24:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1632173086; x=1663709086; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QD3qYRCA313asrZcswjTMrDRpCOKpuUlnc9M/G+6mqQ=; b=f6H7gZ55Y+UzVDz/9cZNRY4hmcZfbnbU9Bq+cnjFyFT4X9GQWDedgbMM J3jUxJ2Vw7smka+TJUKcDd2SYEKstb/wlYQjT9p8GO0pnUhVlyLaE8SvZ B5eHBeTsr1WmKQE/7WnV6UEGgb8mWCRQPdnX7G2xuusWBOWsWvB/RbIa5 U=; Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by alexa-out-sd-02.qualcomm.com with ESMTP; 20 Sep 2021 14:24:37 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg02-sd.qualcomm.com with ESMTP; 20 Sep 2021 14:24:36 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id AF3A51632; Mon, 20 Sep 2021 16:24:35 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v3 12/30] Hexagon HVX (target/hexagon) TCG generation Date: Mon, 20 Sep 2021 16:24:07 -0500 Message-Id: <1632173065-18522-13-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1632173065-18522-1-git-send-email-tsimpson@quicinc.com> References: <1632173065-18522-1-git-send-email-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=199.106.114.39; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-02.qualcomm.com X-Spam_score_int: -39 X-Spam_score: -4.0 X-Spam_bar: ---- X-Spam_report: (-4.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_MED=-2.3, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ale@rev.ng, bcain@quicinc.com, tsimpson@quicinc.com, richard.henderson@linaro.org, f4bug@amsat.org Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" U2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0K IHRhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5oIHwgIDYxICsrKysrKysrKysrKysKIHRhcmdldC9o ZXhhZ29uL2dlbnB0ci5jICAgIHwgIDE1ICsrKysKIHRhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5j IHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBm aWxlcyBjaGFuZ2VkLCAyODcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaCBiL3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0 ZS5oCmluZGV4IDcwM2ZkMTMuLmZjY2ZiOTQgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL3Ry YW5zbGF0ZS5oCisrKyBiL3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5oCkBAIC0yOSw2ICsyOSw3 IEBAIHR5cGVkZWYgc3RydWN0IERpc2FzQ29udGV4dCB7CiAgICAgdWludDMyX3QgbWVtX2lkeDsK ICAgICB1aW50MzJfdCBudW1fcGFja2V0czsKICAgICB1aW50MzJfdCBudW1faW5zbnM7CisgICAg dWludDMyX3QgbnVtX2h2eF9pbnNuczsKICAgICBpbnQgcmVnX2xvZ1tSRUdfV1JJVEVTX01BWF07 CiAgICAgaW50IHJlZ19sb2dfaWR4OwogICAgIERFQ0xBUkVfQklUTUFQKHJlZ3Nfd3JpdHRlbiwg VE9UQUxfUEVSX1RIUkVBRF9SRUdTKTsKQEAgLTM3LDYgKzM4LDIwIEBAIHR5cGVkZWYgc3RydWN0 IERpc2FzQ29udGV4dCB7CiAgICAgREVDTEFSRV9CSVRNQVAocHJlZ3Nfd3JpdHRlbiwgTlVNX1BS RUdTKTsKICAgICB1aW50OF90IHN0b3JlX3dpZHRoW1NUT1JFU19NQVhdOwogICAgIGJvb2wgczFf c3RvcmVfcHJvY2Vzc2VkOworICAgIGludCBmdXR1cmVfdnJlZ3NfaWR4OworICAgIGludCBmdXR1 cmVfdnJlZ3NfbnVtW1ZFQ1RPUl9URU1QU19NQVhdOworICAgIGludCB0bXBfdnJlZ3NfaWR4Owor ICAgIGludCB0bXBfdnJlZ3NfbnVtW1ZFQ1RPUl9URU1QU19NQVhdOworICAgIGludCB2cmVnX2xv Z1tOVU1fVlJFR1NdOworICAgIGJvb2wgdnJlZ19pc19wcmVkaWNhdGVkW05VTV9WUkVHU107Cisg ICAgaW50IHZyZWdfbG9nX2lkeDsKKyAgICBERUNMQVJFX0JJVE1BUCh2cmVnc191cGRhdGVkX3Rt cCwgTlVNX1ZSRUdTKTsKKyAgICBERUNMQVJFX0JJVE1BUCh2cmVnc191cGRhdGVkLCBOVU1fVlJF R1MpOworICAgIERFQ0xBUkVfQklUTUFQKHZyZWdzX3NlbGVjdCwgTlVNX1ZSRUdTKTsKKyAgICBp bnQgcXJlZ19sb2dbTlVNX1FSRUdTXTsKKyAgICBib29sIHFyZWdfaXNfcHJlZGljYXRlZFtOVU1f UVJFR1NdOworICAgIGludCBxcmVnX2xvZ19pZHg7CisgICAgYm9vbCBwcmVfY29tbWl0OwogfSBE aXNhc0NvbnRleHQ7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjdHhfbG9nX3JlZ193cml0ZShEaXNh c0NvbnRleHQgKmN0eCwgaW50IHJudW0pCkBAIC02Nyw2ICs4Miw0NiBAQCBzdGF0aWMgaW5saW5l IGJvb2wgaXNfcHJlbG9hZGVkKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgbnVtKQogICAgIHJldHVy biB0ZXN0X2JpdChudW0sIGN0eC0+cmVnc193cml0dGVuKTsKIH0KIAoraW50cHRyX3QgY3R4X2Z1 dHVyZV92cmVnX29mZihEaXNhc0NvbnRleHQgKmN0eCwgaW50IHJlZ251bSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IG51bSwgYm9vbCBhbGxvY19vayk7CitpbnRwdHJfdCBjdHhf dG1wX3ZyZWdfb2ZmKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgcmVnbnVtLAorICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgbnVtLCBib29sIGFsbG9jX29rKTsKKworc3RhdGljIGlubGluZSB2 b2lkIGN0eF9sb2dfdnJlZ193cml0ZShEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJudW0sIFZSZWdXcml0ZVR5cGUgdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVkKQor eworICAgIGlmICh0eXBlICE9IEVYVF9UTVApIHsKKyAgICAgICAgY3R4LT52cmVnX2xvZ1tjdHgt PnZyZWdfbG9nX2lkeF0gPSBybnVtOworICAgICAgICBjdHgtPnZyZWdfaXNfcHJlZGljYXRlZFtj dHgtPnZyZWdfbG9nX2lkeF0gPSBpc19wcmVkaWNhdGVkOworICAgICAgICBjdHgtPnZyZWdfbG9n X2lkeCsrOworCisgICAgICAgIHNldF9iaXQocm51bSwgY3R4LT52cmVnc191cGRhdGVkKTsKKyAg ICB9CisgICAgaWYgKHR5cGUgPT0gRVhUX05FVykgeworICAgICAgICBzZXRfYml0KHJudW0sIGN0 eC0+dnJlZ3Nfc2VsZWN0KTsKKyAgICB9CisgICAgaWYgKHR5cGUgPT0gRVhUX1RNUCkgeworICAg ICAgICBzZXRfYml0KHJudW0sIGN0eC0+dnJlZ3NfdXBkYXRlZF90bXApOworICAgIH0KK30KKwor c3RhdGljIGlubGluZSB2b2lkIGN0eF9sb2dfdnJlZ193cml0ZV9wYWlyKERpc2FzQ29udGV4dCAq Y3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBybnVt LCBWUmVnV3JpdGVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVkKQoreworICAgIGN0eF9sb2dfdnJlZ193cml0ZShj dHgsIHJudW0gXiAwLCB0eXBlLCBpc19wcmVkaWNhdGVkKTsKKyAgICBjdHhfbG9nX3ZyZWdfd3Jp dGUoY3R4LCBybnVtIF4gMSwgdHlwZSwgaXNfcHJlZGljYXRlZCk7Cit9CisKK3N0YXRpYyBpbmxp bmUgdm9pZCBjdHhfbG9nX3FyZWdfd3JpdGUoRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBybnVtLCBib29sIGlzX3ByZWRpY2F0ZWQp Cit7CisgICAgY3R4LT5xcmVnX2xvZ1tjdHgtPnFyZWdfbG9nX2lkeF0gPSBybnVtOworICAgIGN0 eC0+cXJlZ19pc19wcmVkaWNhdGVkW2N0eC0+cXJlZ19sb2dfaWR4XSA9IGlzX3ByZWRpY2F0ZWQ7 CisgICAgY3R4LT5xcmVnX2xvZ19pZHgrKzsKK30KKwogZXh0ZXJuIFRDR3YgaGV4X2dwcltUT1RB TF9QRVJfVEhSRUFEX1JFR1NdOwogZXh0ZXJuIFRDR3YgaGV4X3ByZWRbTlVNX1BSRUdTXTsKIGV4 dGVybiBUQ0d2IGhleF9uZXh0X1BDOwpAQCAtODUsNiArMTQwLDEyIEBAIGV4dGVybiBUQ0d2IGhl eF9kY3plcm9fYWRkcjsKIGV4dGVybiBUQ0d2IGhleF9sbHNjX2FkZHI7CiBleHRlcm4gVENHdiBo ZXhfbGxzY192YWw7CiBleHRlcm4gVENHdl9pNjQgaGV4X2xsc2NfdmFsX2k2NDsKK2V4dGVybiBU Q0d2IGhleF9WUmVnc191cGRhdGVkOworZXh0ZXJuIFRDR3YgaGV4X1FSZWdzX3VwZGF0ZWQ7Citl eHRlcm4gVENHdiBoZXhfdnN0b3JlX2FkZHJbVlNUT1JFU19NQVhdOworZXh0ZXJuIFRDR3YgaGV4 X3ZzdG9yZV9zaXplW1ZTVE9SRVNfTUFYXTsKK2V4dGVybiBUQ0d2IGhleF92c3RvcmVfcGVuZGlu Z1tWU1RPUkVTX01BWF07CiAKK2Jvb2wgaXNfZ2F0aGVyX3N0b3JlX2luc24oSW5zbiAqaW5zbiwg UGFja2V0ICpwa3QpOwogdm9pZCBwcm9jZXNzX3N0b3JlKERpc2FzQ29udGV4dCAqY3R4LCBQYWNr ZXQgKnBrdCwgaW50IHNsb3RfbnVtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwppbmRleCA3MzMzMjk5Li5kYTg1 MjdkIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYworKysgYi90YXJnZXQvaGV4 YWdvbi9nZW5wdHIuYwpAQCAtMTY3LDYgKzE2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZW5f cmVhZF9jdHJsX3JlZyhEaXNhc0NvbnRleHQgKmN0eCwgY29uc3QgaW50IHJlZ19udW0sCiAgICAg fSBlbHNlIGlmIChyZWdfbnVtID09IEhFWF9SRUdfUUVNVV9JTlNOX0NOVCkgewogICAgICAgICB0 Y2dfZ2VuX2FkZGlfdGwoZGVzdCwgaGV4X2dwcltIRVhfUkVHX1FFTVVfSU5TTl9DTlRdLAogICAg ICAgICAgICAgICAgICAgICAgICAgY3R4LT5udW1faW5zbnMpOworICAgIH0gZWxzZSBpZiAocmVn X251bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwo ZGVzdCwgaGV4X2dwcltIRVhfUkVHX1FFTVVfSFZYX0NOVF0sCisgICAgICAgICAgICAgICAgICAg ICAgICBjdHgtPm51bV9odnhfaW5zbnMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRjZ19nZW5f bW92X3RsKGRlc3QsIGhleF9ncHJbcmVnX251bV0pOwogICAgIH0KQEAgLTE5NCw2ICsxOTcsMTIg QEAgc3RhdGljIGlubGluZSB2b2lkIGdlbl9yZWFkX2N0cmxfcmVnX3BhaXIoRGlzYXNDb250ZXh0 ICpjdHgsIGNvbnN0IGludCByZWdfbnVtLAogICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJfaTY0 KGRlc3QsIHBrdF9jbnQsIGluc25fY250KTsKICAgICAgICAgdGNnX3RlbXBfZnJlZShwa3RfY250 KTsKICAgICAgICAgdGNnX3RlbXBfZnJlZShpbnNuX2NudCk7CisgICAgfSBlbHNlIGlmIChyZWdf bnVtID09IEhFWF9SRUdfUUVNVV9IVlhfQ05UKSB7CisgICAgICAgIFRDR3YgaHZ4X2NudCA9IHRj Z190ZW1wX25ldygpOworICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoaHZ4X2NudCwgaGV4X2dwcltI RVhfUkVHX1FFTVVfSFZYX0NOVF0sCisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm51bV9o dnhfaW5zbnMpOworICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJfaTY0KGRlc3QsIGh2eF9jbnQs IGhleF9ncHJbcmVnX251bSArIDFdKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZShodnhfY250KTsK ICAgICB9IGVsc2UgewogICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJfaTY0KGRlc3QsCiAgICAg ICAgICAgICBoZXhfZ3ByW3JlZ19udW1dLApAQCAtMjI5LDYgKzIzOCw5IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBnZW5fd3JpdGVfY3RybF9yZWcoRGlzYXNDb250ZXh0ICpjdHgsIGludCByZWdfbnVt LAogICAgICAgICBpZiAocmVnX251bSA9PSBIRVhfUkVHX1FFTVVfSU5TTl9DTlQpIHsKICAgICAg ICAgICAgIGN0eC0+bnVtX2luc25zID0gMDsKICAgICAgICAgfQorICAgICAgICBpZiAocmVnX251 bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICAgICAgY3R4LT5udW1faHZ4X2lu c25zID0gMDsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMjUwLDYgKzI2Miw5IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBnZW5fd3JpdGVfY3RybF9yZWdfcGFpcihEaXNhc0NvbnRleHQgKmN0eCwg aW50IHJlZ19udW0sCiAgICAgICAgICAgICBjdHgtPm51bV9wYWNrZXRzID0gMDsKICAgICAgICAg ICAgIGN0eC0+bnVtX2luc25zID0gMDsKICAgICAgICAgfQorICAgICAgICBpZiAocmVnX251bSA9 PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICAgICAgY3R4LT5udW1faHZ4X2luc25z ID0gMDsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24v dHJhbnNsYXRlLmMgYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYwppbmRleCA2ZmI0ZTY4Li45 MTVhNTQxIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYworKysgYi90YXJn ZXQvaGV4YWdvbi90cmFuc2xhdGUuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgInFlbXUv b3NkZXAuaCIKICNpbmNsdWRlICJjcHUuaCIKICNpbmNsdWRlICJ0Y2cvdGNnLW9wLmgiCisjaW5j bHVkZSAidGNnL3RjZy1vcC1ndmVjLmgiCiAjaW5jbHVkZSAiZXhlYy9jcHVfbGRzdC5oIgogI2lu Y2x1ZGUgImV4ZWMvbG9nLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKQEAgLTQ3LDExICs0OCw2 MCBAQCBUQ0d2IGhleF9kY3plcm9fYWRkcjsKIFRDR3YgaGV4X2xsc2NfYWRkcjsKIFRDR3YgaGV4 X2xsc2NfdmFsOwogVENHdl9pNjQgaGV4X2xsc2NfdmFsX2k2NDsKK1RDR3YgaGV4X1ZSZWdzX3Vw ZGF0ZWQ7CitUQ0d2IGhleF9RUmVnc191cGRhdGVkOworVENHdiBoZXhfdnN0b3JlX2FkZHJbVlNU T1JFU19NQVhdOworVENHdiBoZXhfdnN0b3JlX3NpemVbVlNUT1JFU19NQVhdOworVENHdiBoZXhf dnN0b3JlX3BlbmRpbmdbVlNUT1JFU19NQVhdOwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IGhleGFnb25fcHJlZG5hbWVzW10gPSB7CiAgICJwMCIsICJwMSIsICJwMiIsICJwMyIKIH07CiAK K2ludHB0cl90IGN0eF9mdXR1cmVfdnJlZ19vZmYoRGlzYXNDb250ZXh0ICpjdHgsIGludCByZWdu dW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0sIGJvb2wgYWxsb2Nfb2spCit7 CisgICAgaW50cHRyX3Qgb2Zmc2V0OworCisgICAgLyogU2VlIGlmIGl0IGlzIGFscmVhZHkgYWxs b2NhdGVkICovCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPmZ1dHVyZV92cmVnc19pZHg7 IGkrKykgeworICAgICAgICBpZiAoY3R4LT5mdXR1cmVfdnJlZ3NfbnVtW2ldID09IHJlZ251bSkg eworICAgICAgICAgICAgcmV0dXJuIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgZnV0dXJlX1ZS ZWdzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdfYXNzZXJ0KGFsbG9jX29rKTsKKyAg ICBvZmZzZXQgPSBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGZ1dHVyZV9WUmVnc1tjdHgtPmZ1 dHVyZV92cmVnc19pZHhdKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgaSsrKSB7Cisg ICAgICAgIGN0eC0+ZnV0dXJlX3ZyZWdzX251bVtjdHgtPmZ1dHVyZV92cmVnc19pZHggKyBpXSA9 IHJlZ251bSsrOworICAgIH0KKyAgICBjdHgtPmZ1dHVyZV92cmVnc19pZHggKz0gbnVtOworICAg IGdfYXNzZXJ0KGN0eC0+ZnV0dXJlX3ZyZWdzX2lkeCA8PSBWRUNUT1JfVEVNUFNfTUFYKTsKKyAg ICByZXR1cm4gb2Zmc2V0OworfQorCitpbnRwdHJfdCBjdHhfdG1wX3ZyZWdfb2ZmKERpc2FzQ29u dGV4dCAqY3R4LCBpbnQgcmVnbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVt LCBib29sIGFsbG9jX29rKQoreworICAgIGludHB0cl90IG9mZnNldDsKKworICAgIC8qIFNlZSBp ZiBpdCBpcyBhbHJlYWR5IGFsbG9jYXRlZCAqLworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3R4 LT50bXBfdnJlZ3NfaWR4OyBpKyspIHsKKyAgICAgICAgaWYgKGN0eC0+dG1wX3ZyZWdzX251bVtp XSA9PSByZWdudW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihDUFVIZXhhZ29uU3Rh dGUsIHRtcF9WUmVnc1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnX2Fzc2VydChhbGxv Y19vayk7CisgICAgb2Zmc2V0ID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB0bXBfVlJlZ3Nb Y3R4LT50bXBfdnJlZ3NfaWR4XSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07IGkrKykg eworICAgICAgICBjdHgtPnRtcF92cmVnc19udW1bY3R4LT50bXBfdnJlZ3NfaWR4ICsgaV0gPSBy ZWdudW0rKzsKKyAgICB9CisgICAgY3R4LT50bXBfdnJlZ3NfaWR4ICs9IG51bTsKKyAgICBnX2Fz c2VydChjdHgtPnRtcF92cmVnc19pZHggPD0gVkVDVE9SX1RFTVBTX01BWCk7CisgICAgcmV0dXJu IG9mZnNldDsKK30KKwogc3RhdGljIHZvaWQgZ2VuX2V4Y2VwdGlvbl9yYXcoaW50IGV4Y3ApCiB7 CiAgICAgVENHdl9pMzIgaGVscGVyX3RtcCA9IHRjZ19jb25zdF9pMzIoZXhjcCk7CkBAIC02NSw2 ICsxMTUsOCBAQCBzdGF0aWMgdm9pZCBnZW5fZXhlY19jb3VudGVycyhEaXNhc0NvbnRleHQgKmN0 eCkKICAgICAgICAgICAgICAgICAgICAgaGV4X2dwcltIRVhfUkVHX1FFTVVfUEtUX0NOVF0sIGN0 eC0+bnVtX3BhY2tldHMpOwogICAgIHRjZ19nZW5fYWRkaV90bChoZXhfZ3ByW0hFWF9SRUdfUUVN VV9JTlNOX0NOVF0sCiAgICAgICAgICAgICAgICAgICAgIGhleF9ncHJbSEVYX1JFR19RRU1VX0lO U05fQ05UXSwgY3R4LT5udW1faW5zbnMpOworICAgIHRjZ19nZW5fYWRkaV90bChoZXhfZ3ByW0hF WF9SRUdfUUVNVV9IVlhfQ05UXSwKKyAgICAgICAgICAgICAgICAgICAgaGV4X2dwcltIRVhfUkVH X1FFTVVfSFZYX0NOVF0sIGN0eC0+bnVtX2h2eF9pbnNucyk7CiB9CiAKIHN0YXRpYyB2b2lkIGdl bl9lbmRfdGIoRGlzYXNDb250ZXh0ICpjdHgpCkBAIC0xNzMsMTEgKzIyNSwxOSBAQCBzdGF0aWMg dm9pZCBnZW5fc3RhcnRfcGFja2V0KERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkKICAg ICBiaXRtYXBfemVybyhjdHgtPnJlZ3Nfd3JpdHRlbiwgVE9UQUxfUEVSX1RIUkVBRF9SRUdTKTsK ICAgICBjdHgtPnByZWdfbG9nX2lkeCA9IDA7CiAgICAgYml0bWFwX3plcm8oY3R4LT5wcmVnc193 cml0dGVuLCBOVU1fUFJFR1MpOworICAgIGN0eC0+ZnV0dXJlX3ZyZWdzX2lkeCA9IDA7CisgICAg Y3R4LT50bXBfdnJlZ3NfaWR4ID0gMDsKKyAgICBjdHgtPnZyZWdfbG9nX2lkeCA9IDA7CisgICAg Yml0bWFwX3plcm8oY3R4LT52cmVnc191cGRhdGVkX3RtcCwgTlVNX1ZSRUdTKTsKKyAgICBiaXRt YXBfemVybyhjdHgtPnZyZWdzX3VwZGF0ZWQsIE5VTV9WUkVHUyk7CisgICAgYml0bWFwX3plcm8o Y3R4LT52cmVnc19zZWxlY3QsIE5VTV9WUkVHUyk7CisgICAgY3R4LT5xcmVnX2xvZ19pZHggPSAw OwogICAgIGZvciAoaSA9IDA7IGkgPCBTVE9SRVNfTUFYOyBpKyspIHsKICAgICAgICAgY3R4LT5z dG9yZV93aWR0aFtpXSA9IDA7CiAgICAgfQogICAgIHRjZ19nZW5fbW92aV90bChoZXhfcGt0X2hh c19zdG9yZV9zMSwgcGt0LT5wa3RfaGFzX3N0b3JlX3MxKTsKICAgICBjdHgtPnMxX3N0b3JlX3By b2Nlc3NlZCA9IGZhbHNlOworICAgIGN0eC0+cHJlX2NvbW1pdCA9IHRydWU7CiAKICAgICBpZiAo SEVYX0RFQlVHKSB7CiAgICAgICAgIC8qIEhhbmR5IHBsYWNlIHRvIHNldCBhIGJyZWFrcG9pbnQg YmVmb3JlIHRoZSBwYWNrZXQgZXhlY3V0ZXMgKi8KQEAgLTE5OSw2ICsyNTksMjYgQEAgc3RhdGlj IHZvaWQgZ2VuX3N0YXJ0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCiAg ICAgaWYgKG5lZWRfcHJlZF93cml0dGVuKHBrdCkpIHsKICAgICAgICAgdGNnX2dlbl9tb3ZpX3Rs KGhleF9wcmVkX3dyaXR0ZW4sIDApOwogICAgIH0KKworICAgIGlmIChwa3QtPnBrdF9oYXNfaHZ4 KSB7CisgICAgICAgIHRjZ19nZW5fbW92aV90bChoZXhfVlJlZ3NfdXBkYXRlZCwgMCk7CisgICAg ICAgIHRjZ19nZW5fbW92aV90bChoZXhfUVJlZ3NfdXBkYXRlZCwgMCk7CisgICAgfQorfQorCiti b29sIGlzX2dhdGhlcl9zdG9yZV9pbnNuKEluc24gKmluc24sIFBhY2tldCAqcGt0KQoreworICAg IGlmIChHRVRfQVRUUklCKGluc24tPm9wY29kZSwgQV9DVklfTkVXKSAmJgorICAgICAgICBpbnNu LT5uZXdfdmFsdWVfcHJvZHVjZXJfc2xvdCA9PSAxKSB7CisgICAgICAgIC8qIExvb2sgZm9yIGdh dGhlciBpbnN0cnVjdGlvbiAqLworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHBrdC0+bnVt X2luc25zOyBpKyspIHsKKyAgICAgICAgICAgIEluc24gKmluID0gJnBrdC0+aW5zbltpXTsKKyAg ICAgICAgICAgIGlmIChHRVRfQVRUUklCKGluLT5vcGNvZGUsIEFfQ1ZJX0dBVEhFUikgJiYgaW4t PnNsb3QgPT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg fQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogLyoKQEAgLTQ1Miwx MCArNTMyLDEwMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RjemVyb2EoRGlzYXNDb250ZXh0ICpj dHgsIFBhY2tldCAqcGt0KQogICAgIH0KIH0KIAorc3RhdGljIGJvb2wgcGt0X2hhc19odnhfc3Rv cmUoUGFja2V0ICpwa3QpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IHBrdC0+ bnVtX2luc25zOyBpKyspIHsKKyAgICAgICAgaW50IG9wY29kZSA9IHBrdC0+aW5zbltpXS5vcGNv ZGU7CisgICAgICAgIGlmIChHRVRfQVRUUklCKG9wY29kZSwgQV9DVkkpICYmIEdFVF9BVFRSSUIo b3Bjb2RlLCBBX1NUT1JFKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBnZW5fY29tbWl0X2h2 eChEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCit7CisgICAgaW50IGk7CisKKyAgICAv KgorICAgICAqICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPnZyZWdfbG9nX2lkeDsgaSsrKSB7Cisg ICAgICogICAgICAgIGludCBybnVtID0gY3R4LT52cmVnX2xvZ1tpXTsKKyAgICAgKiAgICAgICAg aWYgKGN0eC0+dnJlZ19pc19wcmVkaWNhdGVkW2ldKSB7CisgICAgICogICAgICAgICAgICBpZiAo ZW52LT5WUmVnc191cGRhdGVkICYgKDEgPDwgcm51bSkpIHsKKyAgICAgKiAgICAgICAgICAgICAg ICBlbnYtPlZSZWdzW3JudW1dID0gZW52LT5mdXR1cmVfVlJlZ3Nbcm51bV07CisgICAgICogICAg ICAgICAgICB9CisgICAgICogICAgICAgIH0gZWxzZSB7CisgICAgICogICAgICAgICAgICBlbnYt PlZSZWdzW3JudW1dID0gZW52LT5mdXR1cmVfVlJlZ3Nbcm51bV07CisgICAgICogICAgICAgIH0K KyAgICAgKiAgICB9CisgICAgICovCisgICAgZm9yIChpID0gMDsgaSA8IGN0eC0+dnJlZ19sb2df aWR4OyBpKyspIHsKKyAgICAgICAgaW50IHJudW0gPSBjdHgtPnZyZWdfbG9nW2ldOworICAgICAg ICBib29sIGlzX3ByZWRpY2F0ZWQgPSBjdHgtPnZyZWdfaXNfcHJlZGljYXRlZFtpXTsKKyAgICAg ICAgaW50cHRyX3QgZHN0b2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBWUmVnc1tybnVt XSk7CisgICAgICAgIGludHB0cl90IHNyY29mZiA9IGN0eF9mdXR1cmVfdnJlZ19vZmYoY3R4LCBy bnVtLCAxLCBmYWxzZSk7CisgICAgICAgIHNpemVfdCBzaXplID0gc2l6ZW9mKE1NVmVjdG9yKTsK KworICAgICAgICBpZiAoaXNfcHJlZGljYXRlZCkgeworICAgICAgICAgICAgVENHdiBjbXAgPSB0 Y2dfdGVtcF9sb2NhbF9uZXcoKTsKKyAgICAgICAgICAgIFRDR0xhYmVsICpsYWJlbF9za2lwID0g Z2VuX25ld19sYWJlbCgpOworCisgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlfdGwoY21wLCBoZXhf VlJlZ3NfdXBkYXRlZCwgMSA8PCBybnVtKTsKKyAgICAgICAgICAgIHRjZ19nZW5fYnJjb25kaV90 bChUQ0dfQ09ORF9FUSwgY21wLCAwLCBsYWJlbF9za2lwKTsKKyAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICB0Y2dfZ2VuX2d2ZWNfbW92KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZSwg c2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnZW5fc2V0X2xhYmVsKGxhYmVsX3Nr aXApOworICAgICAgICAgICAgdGNnX3RlbXBfZnJlZShjbXApOworICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgICAgdGNnX2dlbl9ndmVjX21vdihNT182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemUs IHNpemUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgICBmb3IgKGkgPSAw OyBpIDwgY3R4LT5xcmVnX2xvZ19pZHg7IGkrKykgeworICAgICAqICAgICAgICBpbnQgcm51bSA9 IGN0eC0+cXJlZ19sb2dbaV07CisgICAgICogICAgICAgIGlmIChjdHgtPnFyZWdfaXNfcHJlZGlj YXRlZFtpXSkgeworICAgICAqICAgICAgICAgICAgaWYgKGVudi0+UVJlZ3NfdXBkYXRlZCkgJiAo MSA8PCBybnVtKSkgeworICAgICAqICAgICAgICAgICAgICAgIGVudi0+UVJlZ3Nbcm51bV0gPSBl bnYtPmZ1dHVyZV9RUmVnc1tybnVtXTsKKyAgICAgKiAgICAgICAgICAgIH0KKyAgICAgKiAgICAg ICAgfSBlbHNlIHsKKyAgICAgKiAgICAgICAgICAgIGVudi0+UVJlZ3Nbcm51bV0gPSBlbnYtPmZ1 dHVyZV9RUmVnc1tybnVtXTsKKyAgICAgKiAgICAgICAgfQorICAgICAqICAgIH0KKyAgICAgKi8K KyAgICBmb3IgKGkgPSAwOyBpIDwgY3R4LT5xcmVnX2xvZ19pZHg7IGkrKykgeworICAgICAgICBp bnQgcm51bSA9IGN0eC0+cXJlZ19sb2dbaV07CisgICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCA9 IGN0eC0+cXJlZ19pc19wcmVkaWNhdGVkW2ldOworICAgICAgICBpbnRwdHJfdCBkc3RvZmYgPSBv ZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIFFSZWdzW3JudW1dKTsKKyAgICAgICAgaW50cHRyX3Qg c3Jjb2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCBmdXR1cmVfUVJlZ3Nbcm51bV0pOwor ICAgICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihNTVFSZWcpOworCisgICAgICAgIGlmIChpc19w cmVkaWNhdGVkKSB7CisgICAgICAgICAgICBUQ0d2IGNtcCA9IHRjZ190ZW1wX2xvY2FsX25ldygp OworICAgICAgICAgICAgVENHTGFiZWwgKmxhYmVsX3NraXAgPSBnZW5fbmV3X2xhYmVsKCk7CisK KyAgICAgICAgICAgIHRjZ19nZW5fYW5kaV90bChjbXAsIGhleF9RUmVnc191cGRhdGVkLCAxIDw8 IHJudW0pOworICAgICAgICAgICAgdGNnX2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0VRLCBjbXAs IDAsIGxhYmVsX3NraXApOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRjZ19nZW5f Z3ZlY19tb3YoTU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLCBzaXplLCBzaXplKTsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIGdlbl9zZXRfbGFiZWwobGFiZWxfc2tpcCk7CisgICAgICAgICAgICB0 Y2dfdGVtcF9mcmVlKGNtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0Y2dfZ2Vu X2d2ZWNfbW92KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZSwgc2l6ZSk7CisgICAgICAgIH0K KyAgICB9CisKKyAgICBpZiAocGt0X2hhc19odnhfc3RvcmUocGt0KSkgeworICAgICAgICBnZW5f aGVscGVyX2NvbW1pdF9odnhfc3RvcmVzKGNwdV9lbnYpOworICAgIH0KK30KKwogc3RhdGljIHZv aWQgdXBkYXRlX2V4ZWNfY291bnRlcnMoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQog ewogICAgIGludCBudW1faW5zbnMgPSBwa3QtPm51bV9pbnNuczsKICAgICBpbnQgbnVtX3JlYWxf aW5zbnMgPSAwOworICAgIGludCBudW1faHZ4X2luc25zID0gMDsKIAogICAgIGZvciAoaW50IGkg PSAwOyBpIDwgbnVtX2luc25zOyBpKyspIHsKICAgICAgICAgaWYgKCFwa3QtPmluc25baV0uaXNf ZW5kbG9vcCAmJgpAQCAtNDYzLDE4ICs2MzUsMjYgQEAgc3RhdGljIHZvaWQgdXBkYXRlX2V4ZWNf Y291bnRlcnMoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogICAgICAgICAgICAgIUdF VF9BVFRSSUIocGt0LT5pbnNuW2ldLm9wY29kZSwgQV9JVF9OT1ApKSB7CiAgICAgICAgICAgICBu dW1fcmVhbF9pbnNucysrOwogICAgICAgICB9CisgICAgICAgIGlmIChHRVRfQVRUUklCKHBrdC0+ aW5zbltpXS5vcGNvZGUsIEFfQ1ZJKSkgeworICAgICAgICAgICAgbnVtX2h2eF9pbnNucysrOwor ICAgICAgICB9CiAgICAgfQogCiAgICAgY3R4LT5udW1fcGFja2V0cysrOwogICAgIGN0eC0+bnVt X2luc25zICs9IG51bV9yZWFsX2luc25zOworICAgIGN0eC0+bnVtX2h2eF9pbnNucyArPSBudW1f aHZ4X2luc25zOwogfQogCi1zdGF0aWMgdm9pZCBnZW5fY29tbWl0X3BhY2tldChEaXNhc0NvbnRl eHQgKmN0eCwgUGFja2V0ICpwa3QpCitzdGF0aWMgdm9pZCBnZW5fY29tbWl0X3BhY2tldChDUFVI ZXhhZ29uU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQYWNrZXQgKnBrdCkKIHsKICAgICBnZW5fcmVnX3dyaXRlcyhjdHgpOwogICAg IGdlbl9wcmVkX3dyaXRlcyhjdHgsIHBrdCk7CiAgICAgcHJvY2Vzc19zdG9yZV9sb2coY3R4LCBw a3QpOwogICAgIHByb2Nlc3NfZGN6ZXJvYShjdHgsIHBrdCk7CisgICAgaWYgKHBrdC0+cGt0X2hh c19odngpIHsKKyAgICAgICAgZ2VuX2NvbW1pdF9odngoY3R4LCBwa3QpOworICAgIH0KICAgICB1 cGRhdGVfZXhlY19jb3VudGVycyhjdHgsIHBrdCk7CiAgICAgaWYgKEhFWF9ERUJVRykgewogICAg ICAgICBUQ0d2IGhhc19zdDAgPQpAQCAtNDg5LDYgKzY2OSwxMSBAQCBzdGF0aWMgdm9pZCBnZW5f Y29tbWl0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCiAgICAgICAgIHRj Z190ZW1wX2ZyZWUoaGFzX3N0MSk7CiAgICAgfQogCisgICAgaWYgKHBrdC0+dmhpc3RfaW5zbiAh PSBOVUxMKSB7CisgICAgICAgIGN0eC0+cHJlX2NvbW1pdCA9IGZhbHNlOworICAgICAgICBwa3Qt PnZoaXN0X2luc24tPmdlbmVyYXRlKGVudiwgY3R4LCBwa3QtPnZoaXN0X2luc24sIHBrdCk7Cisg ICAgfQorCiAgICAgaWYgKHBrdC0+cGt0X2hhc19jb2YpIHsKICAgICAgICAgZ2VuX2VuZF90Yihj dHgpOwogICAgIH0KQEAgLTUxMyw3ICs2OTgsNyBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfYW5kX3Ry YW5zbGF0ZV9wYWNrZXQoQ1BVSGV4YWdvblN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4KQog ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGt0Lm51bV9pbnNuczsgaSsrKSB7CiAgICAgICAgICAg ICBnZW5faW5zbihlbnYsIGN0eCwgJnBrdC5pbnNuW2ldLCAmcGt0KTsKICAgICAgICAgfQotICAg ICAgICBnZW5fY29tbWl0X3BhY2tldChjdHgsICZwa3QpOworICAgICAgICBnZW5fY29tbWl0X3Bh Y2tldChlbnYsIGN0eCwgJnBrdCk7CiAgICAgICAgIGN0eC0+YmFzZS5wY19uZXh0ICs9IHBrdC5l bmNvZF9wa3Rfc2l6ZV9pbl9ieXRlczsKICAgICB9IGVsc2UgewogICAgICAgICBnZW5fZXhjZXB0 aW9uX2VuZF90YihjdHgsIEhFWF9FWENQX0lOVkFMSURfUEFDS0VUKTsKQEAgLTUyOCw2ICs3MTMs NyBAQCBzdGF0aWMgdm9pZCBoZXhhZ29uX3RyX2luaXRfZGlzYXNfY29udGV4dChEaXNhc0NvbnRl eHRCYXNlICpkY2Jhc2UsCiAgICAgY3R4LT5tZW1faWR4ID0gTU1VX1VTRVJfSURYOwogICAgIGN0 eC0+bnVtX3BhY2tldHMgPSAwOwogICAgIGN0eC0+bnVtX2luc25zID0gMDsKKyAgICBjdHgtPm51 bV9odnhfaW5zbnMgPSAwOwogfQogCiBzdGF0aWMgdm9pZCBoZXhhZ29uX3RyX3RiX3N0YXJ0KERp c2FzQ29udGV4dEJhc2UgKmRiLCBDUFVTdGF0ZSAqY3B1KQpAQCAtNjM2LDYgKzgyMiw5IEBAIHN0 YXRpYyBjaGFyIHN0b3JlX2FkZHJfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogc3RhdGlj IGNoYXIgc3RvcmVfd2lkdGhfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogc3RhdGljIGNo YXIgc3RvcmVfdmFsMzJfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogc3RhdGljIGNoYXIg c3RvcmVfdmFsNjRfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOworc3RhdGljIGNoYXIgdnN0 b3JlX2FkZHJfbmFtZXNbVlNUT1JFU19NQVhdW05BTUVfTEVOXTsKK3N0YXRpYyBjaGFyIHZzdG9y ZV9zaXplX25hbWVzW1ZTVE9SRVNfTUFYXVtOQU1FX0xFTl07CitzdGF0aWMgY2hhciB2c3RvcmVf cGVuZGluZ19uYW1lc1tWU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogCiB2b2lkIGhleGFnb25fdHJh bnNsYXRlX2luaXQodm9pZCkKIHsKQEAgLTY5OCw2ICs4ODcsMTAgQEAgdm9pZCBoZXhhZ29uX3Ry YW5zbGF0ZV9pbml0KHZvaWQpCiAgICAgICAgIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgbGxz Y192YWwpLCAibGxzY192YWwiKTsKICAgICBoZXhfbGxzY192YWxfaTY0ID0gdGNnX2dsb2JhbF9t ZW1fbmV3X2k2NChjcHVfZW52LAogICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGxs c2NfdmFsX2k2NCksICJsbHNjX3ZhbF9pNjQiKTsKKyAgICBoZXhfVlJlZ3NfdXBkYXRlZCA9IHRj Z19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3Rh dGUsIFZSZWdzX3VwZGF0ZWQpLCAiVlJlZ3NfdXBkYXRlZCIpOworICAgIGhleF9RUmVnc191cGRh dGVkID0gdGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCisgICAgICAgIG9mZnNldG9mKENQVUhl eGFnb25TdGF0ZSwgUVJlZ3NfdXBkYXRlZCksICJRUmVnc191cGRhdGVkIik7CiAgICAgZm9yIChp ID0gMDsgaSA8IFNUT1JFU19NQVg7IGkrKykgewogICAgICAgICBzbnByaW50ZihzdG9yZV9hZGRy X25hbWVzW2ldLCBOQU1FX0xFTiwgInN0b3JlX2FkZHJfJWQiLCBpKTsKICAgICAgICAgaGV4X3N0 b3JlX2FkZHJbaV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKQEAgLTcxOSw0ICs5MTIs MjAgQEAgdm9pZCBoZXhhZ29uX3RyYW5zbGF0ZV9pbml0KHZvaWQpCiAgICAgICAgICAgICBvZmZz ZXRvZihDUFVIZXhhZ29uU3RhdGUsIG1lbV9sb2dfc3RvcmVzW2ldLmRhdGE2NCksCiAgICAgICAg ICAgICBzdG9yZV92YWw2NF9uYW1lc1tpXSk7CiAgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBp IDwgVlNUT1JFU19NQVg7IGkrKykgeworICAgICAgICBzbnByaW50Zih2c3RvcmVfYWRkcl9uYW1l c1tpXSwgTkFNRV9MRU4sICJ2c3RvcmVfYWRkcl8lZCIsIGkpOworICAgICAgICBoZXhfdnN0b3Jl X2FkZHJbaV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAgICAgICAgICAgIG9mZnNl dG9mKENQVUhleGFnb25TdGF0ZSwgdnN0b3JlW2ldLnZhKSwKKyAgICAgICAgICAgIHZzdG9yZV9h ZGRyX25hbWVzW2ldKTsKKworICAgICAgICBzbnByaW50Zih2c3RvcmVfc2l6ZV9uYW1lc1tpXSwg TkFNRV9MRU4sICJ2c3RvcmVfc2l6ZV8lZCIsIGkpOworICAgICAgICBoZXhfdnN0b3JlX3NpemVb aV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAgICAgICAgICAgIG9mZnNldG9mKENQ VUhleGFnb25TdGF0ZSwgdnN0b3JlW2ldLnNpemUpLAorICAgICAgICAgICAgdnN0b3JlX3NpemVf bmFtZXNbaV0pOworCisgICAgICAgIHNucHJpbnRmKHZzdG9yZV9wZW5kaW5nX25hbWVzW2ldLCBO QU1FX0xFTiwgInZzdG9yZV9wZW5kaW5nXyVkIiwgaSk7CisgICAgICAgIGhleF92c3RvcmVfcGVu ZGluZ1tpXSA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICAgICAgb2Zmc2V0 b2YoQ1BVSGV4YWdvblN0YXRlLCB2c3RvcmVfcGVuZGluZ1tpXSksCisgICAgICAgICAgICB2c3Rv cmVfcGVuZGluZ19uYW1lc1tpXSk7CisgICAgfQogfQotLSAKMi43LjQKCg==