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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2A4CC433F5 for ; Sat, 30 Oct 2021 01:38:20 +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 772996103E for ; Sat, 30 Oct 2021 01:38:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 772996103E 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]:44138 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mgdK5-0001QK-Qt for qemu-devel@archiver.kernel.org; Fri, 29 Oct 2021 21:38:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40990) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mgd3y-00036t-AB for qemu-devel@nongnu.org; Fri, 29 Oct 2021 21:21:45 -0400 Received: from alexa-out-sd-01.qualcomm.com ([199.106.114.38]:7471) by eggs.gnu.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1mgd3v-0001eC-7E for qemu-devel@nongnu.org; Fri, 29 Oct 2021 21:21:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1635556895; x=1667092895; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=McnscnVtJUUHd+wh5+0E98oZQeWlZns0dJIJ7aIQ/Mw=; b=jmSg7H2GmrKPCsphfdolS6vTY/LknJeS1SYDLzPOl9UL5r7gIcOjo6vl G/hEZzg0NOtFsu+1lcyYD6C7pLiSYY67XZ/3WjayiTTSFQGBb/ezpdSai 6af1BUuoAkapzmGaBjf1ZmFve4yB+Gq5bkioFi5rRcOLWKMeGfgdQBZzb U=; Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-01.qualcomm.com with ESMTP; 29 Oct 2021 18:20:59 -0700 X-QCInternal: smtphost Received: from vu-tsimpson-aus.qualcomm.com (HELO vu-tsimpson1-aus.qualcomm.com) ([10.222.150.1]) by ironmsg03-sd.qualcomm.com with ESMTP; 29 Oct 2021 18:20:57 -0700 Received: by vu-tsimpson1-aus.qualcomm.com (Postfix, from userid 47164) id 0BAB62A48; Fri, 29 Oct 2021 20:20:57 -0500 (CDT) From: Taylor Simpson To: qemu-devel@nongnu.org Subject: [PATCH v5 12/30] Hexagon HVX (target/hexagon) TCG generation Date: Fri, 29 Oct 2021 20:20:31 -0500 Message-Id: <1635556849-18120-13-git-send-email-tsimpson@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1635556849-18120-1-git-send-email-tsimpson@quicinc.com> References: <1635556849-18120-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.38; envelope-from=tsimpson@qualcomm.com; helo=alexa-out-sd-01.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" UmV2aWV3ZWQtYnk6IFJpY2hhcmQgSGVuZGVyc29uIDxyaWNoYXJkLmhlbmRlcnNvbkBsaW5hcm8u b3JnPgpTaWduZWQtb2ZmLWJ5OiBUYXlsb3IgU2ltcHNvbiA8dHNpbXBzb25AcXVpY2luYy5jb20+ Ci0tLQogdGFyZ2V0L2hleGFnb24vdHJhbnNsYXRlLmggfCAgNjEgKysrKysrKysrKysrCiB0YXJn ZXQvaGV4YWdvbi9nZW5wdHIuYyAgICB8ICAxNSArKysKIHRhcmdldC9oZXhhZ29uL3RyYW5zbGF0 ZS5jIHwgMjM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQog MyBmaWxlcyBjaGFuZ2VkLCAzMTEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuaCBiL3RhcmdldC9oZXhhZ29uL3RyYW5z bGF0ZS5oCmluZGV4IDcwM2ZkMTMuLmZjY2ZiOTQgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29u L3RyYW5zbGF0ZS5oCisrKyBiL3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5oCkBAIC0yOSw2ICsy OSw3IEBAIHR5cGVkZWYgc3RydWN0IERpc2FzQ29udGV4dCB7CiAgICAgdWludDMyX3QgbWVtX2lk eDsKICAgICB1aW50MzJfdCBudW1fcGFja2V0czsKICAgICB1aW50MzJfdCBudW1faW5zbnM7Cisg ICAgdWludDMyX3QgbnVtX2h2eF9pbnNuczsKICAgICBpbnQgcmVnX2xvZ1tSRUdfV1JJVEVTX01B WF07CiAgICAgaW50IHJlZ19sb2dfaWR4OwogICAgIERFQ0xBUkVfQklUTUFQKHJlZ3Nfd3JpdHRl biwgVE9UQUxfUEVSX1RIUkVBRF9SRUdTKTsKQEAgLTM3LDYgKzM4LDIwIEBAIHR5cGVkZWYgc3Ry dWN0IERpc2FzQ29udGV4dCB7CiAgICAgREVDTEFSRV9CSVRNQVAocHJlZ3Nfd3JpdHRlbiwgTlVN X1BSRUdTKTsKICAgICB1aW50OF90IHN0b3JlX3dpZHRoW1NUT1JFU19NQVhdOwogICAgIGJvb2wg czFfc3RvcmVfcHJvY2Vzc2VkOworICAgIGludCBmdXR1cmVfdnJlZ3NfaWR4OworICAgIGludCBm dXR1cmVfdnJlZ3NfbnVtW1ZFQ1RPUl9URU1QU19NQVhdOworICAgIGludCB0bXBfdnJlZ3NfaWR4 OworICAgIGludCB0bXBfdnJlZ3NfbnVtW1ZFQ1RPUl9URU1QU19NQVhdOworICAgIGludCB2cmVn X2xvZ1tOVU1fVlJFR1NdOworICAgIGJvb2wgdnJlZ19pc19wcmVkaWNhdGVkW05VTV9WUkVHU107 CisgICAgaW50IHZyZWdfbG9nX2lkeDsKKyAgICBERUNMQVJFX0JJVE1BUCh2cmVnc191cGRhdGVk X3RtcCwgTlVNX1ZSRUdTKTsKKyAgICBERUNMQVJFX0JJVE1BUCh2cmVnc191cGRhdGVkLCBOVU1f VlJFR1MpOworICAgIERFQ0xBUkVfQklUTUFQKHZyZWdzX3NlbGVjdCwgTlVNX1ZSRUdTKTsKKyAg ICBpbnQgcXJlZ19sb2dbTlVNX1FSRUdTXTsKKyAgICBib29sIHFyZWdfaXNfcHJlZGljYXRlZFtO VU1fUVJFR1NdOworICAgIGludCBxcmVnX2xvZ19pZHg7CisgICAgYm9vbCBwcmVfY29tbWl0Owog fSBEaXNhc0NvbnRleHQ7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBjdHhfbG9nX3JlZ193cml0ZShE aXNhc0NvbnRleHQgKmN0eCwgaW50IHJudW0pCkBAIC02Nyw2ICs4Miw0NiBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgaXNfcHJlbG9hZGVkKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgbnVtKQogICAgIHJl dHVybiB0ZXN0X2JpdChudW0sIGN0eC0+cmVnc193cml0dGVuKTsKIH0KIAoraW50cHRyX3QgY3R4 X2Z1dHVyZV92cmVnX29mZihEaXNhc0NvbnRleHQgKmN0eCwgaW50IHJlZ251bSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IG51bSwgYm9vbCBhbGxvY19vayk7CitpbnRwdHJfdCBj dHhfdG1wX3ZyZWdfb2ZmKERpc2FzQ29udGV4dCAqY3R4LCBpbnQgcmVnbnVtLAorICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgbnVtLCBib29sIGFsbG9jX29rKTsKKworc3RhdGljIGlubGlu ZSB2b2lkIGN0eF9sb2dfdnJlZ193cml0ZShEaXNhc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJudW0sIFZSZWdXcml0ZVR5cGUgdHlwZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVk KQoreworICAgIGlmICh0eXBlICE9IEVYVF9UTVApIHsKKyAgICAgICAgY3R4LT52cmVnX2xvZ1tj dHgtPnZyZWdfbG9nX2lkeF0gPSBybnVtOworICAgICAgICBjdHgtPnZyZWdfaXNfcHJlZGljYXRl ZFtjdHgtPnZyZWdfbG9nX2lkeF0gPSBpc19wcmVkaWNhdGVkOworICAgICAgICBjdHgtPnZyZWdf bG9nX2lkeCsrOworCisgICAgICAgIHNldF9iaXQocm51bSwgY3R4LT52cmVnc191cGRhdGVkKTsK KyAgICB9CisgICAgaWYgKHR5cGUgPT0gRVhUX05FVykgeworICAgICAgICBzZXRfYml0KHJudW0s IGN0eC0+dnJlZ3Nfc2VsZWN0KTsKKyAgICB9CisgICAgaWYgKHR5cGUgPT0gRVhUX1RNUCkgewor ICAgICAgICBzZXRfYml0KHJudW0sIGN0eC0+dnJlZ3NfdXBkYXRlZF90bXApOworICAgIH0KK30K Kworc3RhdGljIGlubGluZSB2b2lkIGN0eF9sb2dfdnJlZ193cml0ZV9wYWlyKERpc2FzQ29udGV4 dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBy bnVtLCBWUmVnV3JpdGVUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm9vbCBpc19wcmVkaWNhdGVkKQoreworICAgIGN0eF9sb2dfdnJlZ193cml0 ZShjdHgsIHJudW0gXiAwLCB0eXBlLCBpc19wcmVkaWNhdGVkKTsKKyAgICBjdHhfbG9nX3ZyZWdf d3JpdGUoY3R4LCBybnVtIF4gMSwgdHlwZSwgaXNfcHJlZGljYXRlZCk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZCBjdHhfbG9nX3FyZWdfd3JpdGUoRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBybnVtLCBib29sIGlzX3ByZWRpY2F0 ZWQpCit7CisgICAgY3R4LT5xcmVnX2xvZ1tjdHgtPnFyZWdfbG9nX2lkeF0gPSBybnVtOworICAg IGN0eC0+cXJlZ19pc19wcmVkaWNhdGVkW2N0eC0+cXJlZ19sb2dfaWR4XSA9IGlzX3ByZWRpY2F0 ZWQ7CisgICAgY3R4LT5xcmVnX2xvZ19pZHgrKzsKK30KKwogZXh0ZXJuIFRDR3YgaGV4X2dwcltU T1RBTF9QRVJfVEhSRUFEX1JFR1NdOwogZXh0ZXJuIFRDR3YgaGV4X3ByZWRbTlVNX1BSRUdTXTsK IGV4dGVybiBUQ0d2IGhleF9uZXh0X1BDOwpAQCAtODUsNiArMTQwLDEyIEBAIGV4dGVybiBUQ0d2 IGhleF9kY3plcm9fYWRkcjsKIGV4dGVybiBUQ0d2IGhleF9sbHNjX2FkZHI7CiBleHRlcm4gVENH diBoZXhfbGxzY192YWw7CiBleHRlcm4gVENHdl9pNjQgaGV4X2xsc2NfdmFsX2k2NDsKK2V4dGVy biBUQ0d2IGhleF9WUmVnc191cGRhdGVkOworZXh0ZXJuIFRDR3YgaGV4X1FSZWdzX3VwZGF0ZWQ7 CitleHRlcm4gVENHdiBoZXhfdnN0b3JlX2FkZHJbVlNUT1JFU19NQVhdOworZXh0ZXJuIFRDR3Yg aGV4X3ZzdG9yZV9zaXplW1ZTVE9SRVNfTUFYXTsKK2V4dGVybiBUQ0d2IGhleF92c3RvcmVfcGVu ZGluZ1tWU1RPUkVTX01BWF07CiAKK2Jvb2wgaXNfZ2F0aGVyX3N0b3JlX2luc24oSW5zbiAqaW5z biwgUGFja2V0ICpwa3QpOwogdm9pZCBwcm9jZXNzX3N0b3JlKERpc2FzQ29udGV4dCAqY3R4LCBQ YWNrZXQgKnBrdCwgaW50IHNsb3RfbnVtKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hl eGFnb24vZ2VucHRyLmMgYi90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYwppbmRleCA0YTIxZmE1Li5k MTZmZjc0IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9nZW5wdHIuYworKysgYi90YXJnZXQv aGV4YWdvbi9nZW5wdHIuYwpAQCAtMTY1LDYgKzE2NSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBn ZW5fcmVhZF9jdHJsX3JlZyhEaXNhc0NvbnRleHQgKmN0eCwgY29uc3QgaW50IHJlZ19udW0sCiAg ICAgfSBlbHNlIGlmIChyZWdfbnVtID09IEhFWF9SRUdfUUVNVV9JTlNOX0NOVCkgewogICAgICAg ICB0Y2dfZ2VuX2FkZGlfdGwoZGVzdCwgaGV4X2dwcltIRVhfUkVHX1FFTVVfSU5TTl9DTlRdLAog ICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5udW1faW5zbnMpOworICAgIH0gZWxzZSBpZiAo cmVnX251bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICB0Y2dfZ2VuX2FkZGlf dGwoZGVzdCwgaGV4X2dwcltIRVhfUkVHX1FFTVVfSFZYX0NOVF0sCisgICAgICAgICAgICAgICAg ICAgICAgICBjdHgtPm51bV9odnhfaW5zbnMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHRjZ19n ZW5fbW92X3RsKGRlc3QsIGhleF9ncHJbcmVnX251bV0pOwogICAgIH0KQEAgLTE5MSw2ICsxOTQs MTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGdlbl9yZWFkX2N0cmxfcmVnX3BhaXIoRGlzYXNDb250 ZXh0ICpjdHgsIGNvbnN0IGludCByZWdfbnVtLAogICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJf aTY0KGRlc3QsIHBrdF9jbnQsIGluc25fY250KTsKICAgICAgICAgdGNnX3RlbXBfZnJlZShwa3Rf Y250KTsKICAgICAgICAgdGNnX3RlbXBfZnJlZShpbnNuX2NudCk7CisgICAgfSBlbHNlIGlmIChy ZWdfbnVtID09IEhFWF9SRUdfUUVNVV9IVlhfQ05UKSB7CisgICAgICAgIFRDR3YgaHZ4X2NudCA9 IHRjZ190ZW1wX25ldygpOworICAgICAgICB0Y2dfZ2VuX2FkZGlfdGwoaHZ4X2NudCwgaGV4X2dw cltIRVhfUkVHX1FFTVVfSFZYX0NOVF0sCisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPm51 bV9odnhfaW5zbnMpOworICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJfaTY0KGRlc3QsIGh2eF9j bnQsIGhleF9ncHJbcmVnX251bSArIDFdKTsKKyAgICAgICAgdGNnX3RlbXBfZnJlZShodnhfY250 KTsKICAgICB9IGVsc2UgewogICAgICAgICB0Y2dfZ2VuX2NvbmNhdF9pMzJfaTY0KGRlc3QsCiAg ICAgICAgICAgICBoZXhfZ3ByW3JlZ19udW1dLApAQCAtMjI2LDYgKzIzNSw5IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBnZW5fd3JpdGVfY3RybF9yZWcoRGlzYXNDb250ZXh0ICpjdHgsIGludCByZWdf bnVtLAogICAgICAgICBpZiAocmVnX251bSA9PSBIRVhfUkVHX1FFTVVfSU5TTl9DTlQpIHsKICAg ICAgICAgICAgIGN0eC0+bnVtX2luc25zID0gMDsKICAgICAgICAgfQorICAgICAgICBpZiAocmVn X251bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICAgICAgY3R4LT5udW1faHZ4 X2luc25zID0gMDsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMjQ3LDYgKzI1OSw5IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCBnZW5fd3JpdGVfY3RybF9yZWdfcGFpcihEaXNhc0NvbnRleHQgKmN0 eCwgaW50IHJlZ19udW0sCiAgICAgICAgICAgICBjdHgtPm51bV9wYWNrZXRzID0gMDsKICAgICAg ICAgICAgIGN0eC0+bnVtX2luc25zID0gMDsKICAgICAgICAgfQorICAgICAgICBpZiAocmVnX251 bSA9PSBIRVhfUkVHX1FFTVVfSFZYX0NOVCkgeworICAgICAgICAgICAgY3R4LT5udW1faHZ4X2lu c25zID0gMDsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFn b24vdHJhbnNsYXRlLmMgYi90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYwppbmRleCBlMTBlZjM2 Li5iNmY1NDFlIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYworKysgYi90 YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgInFl bXUvb3NkZXAuaCIKICNpbmNsdWRlICJjcHUuaCIKICNpbmNsdWRlICJ0Y2cvdGNnLW9wLmgiCisj aW5jbHVkZSAidGNnL3RjZy1vcC1ndmVjLmgiCiAjaW5jbHVkZSAiZXhlYy9jcHVfbGRzdC5oIgog I2luY2x1ZGUgImV4ZWMvbG9nLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKQEAgLTQ3LDExICs0 OCw2MCBAQCBUQ0d2IGhleF9kY3plcm9fYWRkcjsKIFRDR3YgaGV4X2xsc2NfYWRkcjsKIFRDR3Yg aGV4X2xsc2NfdmFsOwogVENHdl9pNjQgaGV4X2xsc2NfdmFsX2k2NDsKK1RDR3YgaGV4X1ZSZWdz X3VwZGF0ZWQ7CitUQ0d2IGhleF9RUmVnc191cGRhdGVkOworVENHdiBoZXhfdnN0b3JlX2FkZHJb VlNUT1JFU19NQVhdOworVENHdiBoZXhfdnN0b3JlX3NpemVbVlNUT1JFU19NQVhdOworVENHdiBo ZXhfdnN0b3JlX3BlbmRpbmdbVlNUT1JFU19NQVhdOwogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNv bnN0IGhleGFnb25fcHJlZG5hbWVzW10gPSB7CiAgICJwMCIsICJwMSIsICJwMiIsICJwMyIKIH07 CiAKK2ludHB0cl90IGN0eF9mdXR1cmVfdnJlZ19vZmYoRGlzYXNDb250ZXh0ICpjdHgsIGludCBy ZWdudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0sIGJvb2wgYWxsb2Nfb2sp Cit7CisgICAgaW50cHRyX3Qgb2Zmc2V0OworCisgICAgLyogU2VlIGlmIGl0IGlzIGFscmVhZHkg YWxsb2NhdGVkICovCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPmZ1dHVyZV92cmVnc19p ZHg7IGkrKykgeworICAgICAgICBpZiAoY3R4LT5mdXR1cmVfdnJlZ3NfbnVtW2ldID09IHJlZ251 bSkgeworICAgICAgICAgICAgcmV0dXJuIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgZnV0dXJl X1ZSZWdzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGdfYXNzZXJ0KGFsbG9jX29rKTsK KyAgICBvZmZzZXQgPSBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGZ1dHVyZV9WUmVnc1tjdHgt PmZ1dHVyZV92cmVnc19pZHhdKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bTsgaSsrKSB7 CisgICAgICAgIGN0eC0+ZnV0dXJlX3ZyZWdzX251bVtjdHgtPmZ1dHVyZV92cmVnc19pZHggKyBp XSA9IHJlZ251bSsrOworICAgIH0KKyAgICBjdHgtPmZ1dHVyZV92cmVnc19pZHggKz0gbnVtOwor ICAgIGdfYXNzZXJ0KGN0eC0+ZnV0dXJlX3ZyZWdzX2lkeCA8PSBWRUNUT1JfVEVNUFNfTUFYKTsK KyAgICByZXR1cm4gb2Zmc2V0OworfQorCitpbnRwdHJfdCBjdHhfdG1wX3ZyZWdfb2ZmKERpc2Fz Q29udGV4dCAqY3R4LCBpbnQgcmVnbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg bnVtLCBib29sIGFsbG9jX29rKQoreworICAgIGludHB0cl90IG9mZnNldDsKKworICAgIC8qIFNl ZSBpZiBpdCBpcyBhbHJlYWR5IGFsbG9jYXRlZCAqLworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg Y3R4LT50bXBfdnJlZ3NfaWR4OyBpKyspIHsKKyAgICAgICAgaWYgKGN0eC0+dG1wX3ZyZWdzX251 bVtpXSA9PSByZWdudW0pIHsKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXRvZihDUFVIZXhhZ29u U3RhdGUsIHRtcF9WUmVnc1tpXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBnX2Fzc2VydChh bGxvY19vayk7CisgICAgb2Zmc2V0ID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0YXRlLCB0bXBfVlJl Z3NbY3R4LT50bXBfdnJlZ3NfaWR4XSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW07IGkr KykgeworICAgICAgICBjdHgtPnRtcF92cmVnc19udW1bY3R4LT50bXBfdnJlZ3NfaWR4ICsgaV0g PSByZWdudW0rKzsKKyAgICB9CisgICAgY3R4LT50bXBfdnJlZ3NfaWR4ICs9IG51bTsKKyAgICBn X2Fzc2VydChjdHgtPnRtcF92cmVnc19pZHggPD0gVkVDVE9SX1RFTVBTX01BWCk7CisgICAgcmV0 dXJuIG9mZnNldDsKK30KKwogc3RhdGljIHZvaWQgZ2VuX2V4Y2VwdGlvbl9yYXcoaW50IGV4Y3Ap CiB7CiAgICAgZ2VuX2hlbHBlcl9yYWlzZV9leGNlcHRpb24oY3B1X2VudiwgdGNnX2NvbnN0YW50 X2kzMihleGNwKSk7CkBAIC02Myw2ICsxMTMsOCBAQCBzdGF0aWMgdm9pZCBnZW5fZXhlY19jb3Vu dGVycyhEaXNhc0NvbnRleHQgKmN0eCkKICAgICAgICAgICAgICAgICAgICAgaGV4X2dwcltIRVhf UkVHX1FFTVVfUEtUX0NOVF0sIGN0eC0+bnVtX3BhY2tldHMpOwogICAgIHRjZ19nZW5fYWRkaV90 bChoZXhfZ3ByW0hFWF9SRUdfUUVNVV9JTlNOX0NOVF0sCiAgICAgICAgICAgICAgICAgICAgIGhl eF9ncHJbSEVYX1JFR19RRU1VX0lOU05fQ05UXSwgY3R4LT5udW1faW5zbnMpOworICAgIHRjZ19n ZW5fYWRkaV90bChoZXhfZ3ByW0hFWF9SRUdfUUVNVV9IVlhfQ05UXSwKKyAgICAgICAgICAgICAg ICAgICAgaGV4X2dwcltIRVhfUkVHX1FFTVVfSFZYX0NOVF0sIGN0eC0+bnVtX2h2eF9pbnNucyk7 CiB9CiAKIHN0YXRpYyB2b2lkIGdlbl9lbmRfdGIoRGlzYXNDb250ZXh0ICpjdHgpCkBAIC0xNjcs MTEgKzIxOSwxOSBAQCBzdGF0aWMgdm9pZCBnZW5fc3RhcnRfcGFja2V0KERpc2FzQ29udGV4dCAq Y3R4LCBQYWNrZXQgKnBrdCkKICAgICBiaXRtYXBfemVybyhjdHgtPnJlZ3Nfd3JpdHRlbiwgVE9U QUxfUEVSX1RIUkVBRF9SRUdTKTsKICAgICBjdHgtPnByZWdfbG9nX2lkeCA9IDA7CiAgICAgYml0 bWFwX3plcm8oY3R4LT5wcmVnc193cml0dGVuLCBOVU1fUFJFR1MpOworICAgIGN0eC0+ZnV0dXJl X3ZyZWdzX2lkeCA9IDA7CisgICAgY3R4LT50bXBfdnJlZ3NfaWR4ID0gMDsKKyAgICBjdHgtPnZy ZWdfbG9nX2lkeCA9IDA7CisgICAgYml0bWFwX3plcm8oY3R4LT52cmVnc191cGRhdGVkX3RtcCwg TlVNX1ZSRUdTKTsKKyAgICBiaXRtYXBfemVybyhjdHgtPnZyZWdzX3VwZGF0ZWQsIE5VTV9WUkVH Uyk7CisgICAgYml0bWFwX3plcm8oY3R4LT52cmVnc19zZWxlY3QsIE5VTV9WUkVHUyk7CisgICAg Y3R4LT5xcmVnX2xvZ19pZHggPSAwOwogICAgIGZvciAoaSA9IDA7IGkgPCBTVE9SRVNfTUFYOyBp KyspIHsKICAgICAgICAgY3R4LT5zdG9yZV93aWR0aFtpXSA9IDA7CiAgICAgfQogICAgIHRjZ19n ZW5fbW92aV90bChoZXhfcGt0X2hhc19zdG9yZV9zMSwgcGt0LT5wa3RfaGFzX3N0b3JlX3MxKTsK ICAgICBjdHgtPnMxX3N0b3JlX3Byb2Nlc3NlZCA9IGZhbHNlOworICAgIGN0eC0+cHJlX2NvbW1p dCA9IHRydWU7CiAKICAgICBpZiAoSEVYX0RFQlVHKSB7CiAgICAgICAgIC8qIEhhbmR5IHBsYWNl IHRvIHNldCBhIGJyZWFrcG9pbnQgYmVmb3JlIHRoZSBwYWNrZXQgZXhlY3V0ZXMgKi8KQEAgLTE5 Myw2ICsyNTMsMjYgQEAgc3RhdGljIHZvaWQgZ2VuX3N0YXJ0X3BhY2tldChEaXNhc0NvbnRleHQg KmN0eCwgUGFja2V0ICpwa3QpCiAgICAgaWYgKG5lZWRfcHJlZF93cml0dGVuKHBrdCkpIHsKICAg ICAgICAgdGNnX2dlbl9tb3ZpX3RsKGhleF9wcmVkX3dyaXR0ZW4sIDApOwogICAgIH0KKworICAg IGlmIChwa3QtPnBrdF9oYXNfaHZ4KSB7CisgICAgICAgIHRjZ19nZW5fbW92aV90bChoZXhfVlJl Z3NfdXBkYXRlZCwgMCk7CisgICAgICAgIHRjZ19nZW5fbW92aV90bChoZXhfUVJlZ3NfdXBkYXRl ZCwgMCk7CisgICAgfQorfQorCitib29sIGlzX2dhdGhlcl9zdG9yZV9pbnNuKEluc24gKmluc24s IFBhY2tldCAqcGt0KQoreworICAgIGlmIChHRVRfQVRUUklCKGluc24tPm9wY29kZSwgQV9DVklf TkVXKSAmJgorICAgICAgICBpbnNuLT5uZXdfdmFsdWVfcHJvZHVjZXJfc2xvdCA9PSAxKSB7Cisg ICAgICAgIC8qIExvb2sgZm9yIGdhdGhlciBpbnN0cnVjdGlvbiAqLworICAgICAgICBmb3IgKGlu dCBpID0gMDsgaSA8IHBrdC0+bnVtX2luc25zOyBpKyspIHsKKyAgICAgICAgICAgIEluc24gKmlu ID0gJnBrdC0+aW5zbltpXTsKKyAgICAgICAgICAgIGlmIChHRVRfQVRUUklCKGluLT5vcGNvZGUs IEFfQ1ZJX0dBVEhFUikgJiYgaW4tPnNsb3QgPT0gMSkgeworICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxz ZTsKIH0KIAogLyoKQEAgLTQ0OCwxMCArNTI4LDk4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZGN6 ZXJvYShEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCiAgICAgfQogfQogCitzdGF0aWMg Ym9vbCBwa3RfaGFzX2h2eF9zdG9yZShQYWNrZXQgKnBrdCkKK3sKKyAgICBpbnQgaTsKKyAgICBm b3IgKGkgPSAwOyBpIDwgcGt0LT5udW1faW5zbnM7IGkrKykgeworICAgICAgICBpbnQgb3Bjb2Rl ID0gcGt0LT5pbnNuW2ldLm9wY29kZTsKKyAgICAgICAgaWYgKEdFVF9BVFRSSUIob3Bjb2RlLCBB X0NWSSkgJiYgR0VUX0FUVFJJQihvcGNvZGUsIEFfU1RPUkUpKSB7CisgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRp YyB2b2lkIGdlbl9jb21taXRfaHZ4KERpc2FzQ29udGV4dCAqY3R4LCBQYWNrZXQgKnBrdCkKK3sK KyAgICBpbnQgaTsKKworICAgIC8qCisgICAgICogICAgZm9yIChpID0gMDsgaSA8IGN0eC0+dnJl Z19sb2dfaWR4OyBpKyspIHsKKyAgICAgKiAgICAgICAgaW50IHJudW0gPSBjdHgtPnZyZWdfbG9n W2ldOworICAgICAqICAgICAgICBpZiAoY3R4LT52cmVnX2lzX3ByZWRpY2F0ZWRbaV0pIHsKKyAg ICAgKiAgICAgICAgICAgIGlmIChlbnYtPlZSZWdzX3VwZGF0ZWQgJiAoMSA8PCBybnVtKSkgewor ICAgICAqICAgICAgICAgICAgICAgIGVudi0+VlJlZ3Nbcm51bV0gPSBlbnYtPmZ1dHVyZV9WUmVn c1tybnVtXTsKKyAgICAgKiAgICAgICAgICAgIH0KKyAgICAgKiAgICAgICAgfSBlbHNlIHsKKyAg ICAgKiAgICAgICAgICAgIGVudi0+VlJlZ3Nbcm51bV0gPSBlbnYtPmZ1dHVyZV9WUmVnc1tybnVt XTsKKyAgICAgKiAgICAgICAgfQorICAgICAqICAgIH0KKyAgICAgKi8KKyAgICBmb3IgKGkgPSAw OyBpIDwgY3R4LT52cmVnX2xvZ19pZHg7IGkrKykgeworICAgICAgICBpbnQgcm51bSA9IGN0eC0+ dnJlZ19sb2dbaV07CisgICAgICAgIGJvb2wgaXNfcHJlZGljYXRlZCA9IGN0eC0+dnJlZ19pc19w cmVkaWNhdGVkW2ldOworICAgICAgICBpbnRwdHJfdCBkc3RvZmYgPSBvZmZzZXRvZihDUFVIZXhh Z29uU3RhdGUsIFZSZWdzW3JudW1dKTsKKyAgICAgICAgaW50cHRyX3Qgc3Jjb2ZmID0gY3R4X2Z1 dHVyZV92cmVnX29mZihjdHgsIHJudW0sIDEsIGZhbHNlKTsKKyAgICAgICAgc2l6ZV90IHNpemUg PSBzaXplb2YoTU1WZWN0b3IpOworCisgICAgICAgIGlmIChpc19wcmVkaWNhdGVkKSB7CisgICAg ICAgICAgICBUQ0d2IGNtcCA9IHRjZ190ZW1wX25ldygpOworICAgICAgICAgICAgVENHTGFiZWwg KmxhYmVsX3NraXAgPSBnZW5fbmV3X2xhYmVsKCk7CisKKyAgICAgICAgICAgIHRjZ19nZW5fYW5k aV90bChjbXAsIGhleF9WUmVnc191cGRhdGVkLCAxIDw8IHJudW0pOworICAgICAgICAgICAgdGNn X2dlbl9icmNvbmRpX3RsKFRDR19DT05EX0VRLCBjbXAsIDAsIGxhYmVsX3NraXApOworICAgICAg ICAgICAgdGNnX3RlbXBfZnJlZShjbXApOworICAgICAgICAgICAgdGNnX2dlbl9ndmVjX21vdihN T182NCwgZHN0b2ZmLCBzcmNvZmYsIHNpemUsIHNpemUpOworICAgICAgICAgICAgZ2VuX3NldF9s YWJlbChsYWJlbF9za2lwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRjZ19nZW5f Z3ZlY19tb3YoTU9fNjQsIGRzdG9mZiwgc3Jjb2ZmLCBzaXplLCBzaXplKTsKKyAgICAgICAgfQor ICAgIH0KKworICAgIC8qCisgICAgICogICAgZm9yIChpID0gMDsgaSA8IGN0eC0+cXJlZ19sb2df aWR4OyBpKyspIHsKKyAgICAgKiAgICAgICAgaW50IHJudW0gPSBjdHgtPnFyZWdfbG9nW2ldOwor ICAgICAqICAgICAgICBpZiAoY3R4LT5xcmVnX2lzX3ByZWRpY2F0ZWRbaV0pIHsKKyAgICAgKiAg ICAgICAgICAgIGlmIChlbnYtPlFSZWdzX3VwZGF0ZWQpICYgKDEgPDwgcm51bSkpIHsKKyAgICAg KiAgICAgICAgICAgICAgICBlbnYtPlFSZWdzW3JudW1dID0gZW52LT5mdXR1cmVfUVJlZ3Nbcm51 bV07CisgICAgICogICAgICAgICAgICB9CisgICAgICogICAgICAgIH0gZWxzZSB7CisgICAgICog ICAgICAgICAgICBlbnYtPlFSZWdzW3JudW1dID0gZW52LT5mdXR1cmVfUVJlZ3Nbcm51bV07Cisg ICAgICogICAgICAgIH0KKyAgICAgKiAgICB9CisgICAgICovCisgICAgZm9yIChpID0gMDsgaSA8 IGN0eC0+cXJlZ19sb2dfaWR4OyBpKyspIHsKKyAgICAgICAgaW50IHJudW0gPSBjdHgtPnFyZWdf bG9nW2ldOworICAgICAgICBib29sIGlzX3ByZWRpY2F0ZWQgPSBjdHgtPnFyZWdfaXNfcHJlZGlj YXRlZFtpXTsKKyAgICAgICAgaW50cHRyX3QgZHN0b2ZmID0gb2Zmc2V0b2YoQ1BVSGV4YWdvblN0 YXRlLCBRUmVnc1tybnVtXSk7CisgICAgICAgIGludHB0cl90IHNyY29mZiA9IG9mZnNldG9mKENQ VUhleGFnb25TdGF0ZSwgZnV0dXJlX1FSZWdzW3JudW1dKTsKKyAgICAgICAgc2l6ZV90IHNpemUg PSBzaXplb2YoTU1RUmVnKTsKKworICAgICAgICBpZiAoaXNfcHJlZGljYXRlZCkgeworICAgICAg ICAgICAgVENHdiBjbXAgPSB0Y2dfdGVtcF9uZXcoKTsKKyAgICAgICAgICAgIFRDR0xhYmVsICps YWJlbF9za2lwID0gZ2VuX25ld19sYWJlbCgpOworCisgICAgICAgICAgICB0Y2dfZ2VuX2FuZGlf dGwoY21wLCBoZXhfUVJlZ3NfdXBkYXRlZCwgMSA8PCBybnVtKTsKKyAgICAgICAgICAgIHRjZ19n ZW5fYnJjb25kaV90bChUQ0dfQ09ORF9FUSwgY21wLCAwLCBsYWJlbF9za2lwKTsKKyAgICAgICAg ICAgIHRjZ190ZW1wX2ZyZWUoY21wKTsKKyAgICAgICAgICAgIHRjZ19nZW5fZ3ZlY19tb3YoTU9f NjQsIGRzdG9mZiwgc3Jjb2ZmLCBzaXplLCBzaXplKTsKKyAgICAgICAgICAgIGdlbl9zZXRfbGFi ZWwobGFiZWxfc2tpcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0Y2dfZ2VuX2d2 ZWNfbW92KE1PXzY0LCBkc3RvZmYsIHNyY29mZiwgc2l6ZSwgc2l6ZSk7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICBpZiAocGt0X2hhc19odnhfc3RvcmUocGt0KSkgeworICAgICAgICBnZW5faGVs cGVyX2NvbW1pdF9odnhfc3RvcmVzKGNwdV9lbnYpOworICAgIH0KK30KKwogc3RhdGljIHZvaWQg dXBkYXRlX2V4ZWNfY291bnRlcnMoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogewog ICAgIGludCBudW1faW5zbnMgPSBwa3QtPm51bV9pbnNuczsKICAgICBpbnQgbnVtX3JlYWxfaW5z bnMgPSAwOworICAgIGludCBudW1faHZ4X2luc25zID0gMDsKIAogICAgIGZvciAoaW50IGkgPSAw OyBpIDwgbnVtX2luc25zOyBpKyspIHsKICAgICAgICAgaWYgKCFwa3QtPmluc25baV0uaXNfZW5k bG9vcCAmJgpAQCAtNDU5LDEzICs2MjcsMTggQEAgc3RhdGljIHZvaWQgdXBkYXRlX2V4ZWNfY291 bnRlcnMoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogICAgICAgICAgICAgIUdFVF9B VFRSSUIocGt0LT5pbnNuW2ldLm9wY29kZSwgQV9JVF9OT1ApKSB7CiAgICAgICAgICAgICBudW1f cmVhbF9pbnNucysrOwogICAgICAgICB9CisgICAgICAgIGlmIChHRVRfQVRUUklCKHBrdC0+aW5z bltpXS5vcGNvZGUsIEFfQ1ZJKSkgeworICAgICAgICAgICAgbnVtX2h2eF9pbnNucysrOworICAg ICAgICB9CiAgICAgfQogCiAgICAgY3R4LT5udW1fcGFja2V0cysrOwogICAgIGN0eC0+bnVtX2lu c25zICs9IG51bV9yZWFsX2luc25zOworICAgIGN0eC0+bnVtX2h2eF9pbnNucyArPSBudW1faHZ4 X2luc25zOwogfQogCi1zdGF0aWMgdm9pZCBnZW5fY29tbWl0X3BhY2tldChEaXNhc0NvbnRleHQg KmN0eCwgUGFja2V0ICpwa3QpCitzdGF0aWMgdm9pZCBnZW5fY29tbWl0X3BhY2tldChDUFVIZXhh Z29uU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQYWNrZXQgKnBrdCkKIHsKICAgICAvKgogICAgICAqIElmIHRoZXJlIGlzIG1vcmUg dGhhbiBvbmUgc3RvcmUgaW4gYSBwYWNrZXQsIG1ha2Ugc3VyZSB0aGV5IGFyZSBhbGwgT0sKQEAg LTQ3NCw2ICs2NDcsMTAgQEAgc3RhdGljIHZvaWQgZ2VuX2NvbW1pdF9wYWNrZXQoRGlzYXNDb250 ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogICAgICAqIGRjemVyb2EgaGFzIHRvIGJlIHRoZSBvbmx5 IHN0b3JlIG9wZXJhdGlvbiBpbiB0aGUgcGFja2V0LCBzbyB3ZSBnbwogICAgICAqIGFoZWFkIGFu ZCBwcm9jZXNzIHRoYXQgZmlyc3QuCiAgICAgICoKKyAgICAgKiBXaGVuIHRoZXJlIGlzIGFuIEhW WCBzdG9yZSwgdGhlcmUgY2FuIGFsc28gYmUgYSBzY2FsYXIgc3RvcmUgaW4gZWl0aGVyCisgICAg ICogc2xvdCAwIG9yIHNsb3QxLCBzbyB3ZSBjcmVhdGUgYSBtYXNrIGZvciB0aGUgaGVscGVyIHRv IGluZGljYXRlIHdoYXQKKyAgICAgKiB3b3JrIHRvIGRvLgorICAgICAqCiAgICAgICogV2hlbiB0 aGVyZSBhcmUgdHdvIHNjYWxhciBzdG9yZXMsIHdlIHByb2JlIHRoZSBvbmUgaW4gc2xvdCAwLgog ICAgICAqCiAgICAgICogTm90ZSB0aGF0IHdlIGRvbid0IGNhbGwgdGhlIHByb2JlIGhlbHBlciBm b3IgcGFja2V0cyB3aXRoIG9ubHkgb25lCkBAIC00ODIsMTMgKzY1OSwzNSBAQCBzdGF0aWMgdm9p ZCBnZW5fY29tbWl0X3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwgUGFja2V0ICpwa3QpCiAgICAg ICovCiAgICAgYm9vbCBoYXNfc3RvcmVfczAgPSBwa3QtPnBrdF9oYXNfc3RvcmVfczA7CiAgICAg Ym9vbCBoYXNfc3RvcmVfczEgPSAocGt0LT5wa3RfaGFzX3N0b3JlX3MxICYmICFjdHgtPnMxX3N0 b3JlX3Byb2Nlc3NlZCk7CisgICAgYm9vbCBoYXNfaHZ4X3N0b3JlID0gcGt0X2hhc19odnhfc3Rv cmUocGt0KTsKICAgICBpZiAocGt0LT5wa3RfaGFzX2RjemVyb2EpIHsKICAgICAgICAgLyoKICAg ICAgICAgICogVGhlIGRjemVyb2Egd2lsbCBiZSB0aGUgc3RvcmUgaW4gc2xvdCAwLCBjaGVjayB0 aGF0IHdlIGRvbid0IGhhdmUKLSAgICAgICAgICogYSBzdG9yZSBpbiBzbG90IDEuCisgICAgICAg ICAqIGEgc3RvcmUgaW4gc2xvdCAxIG9yIGFuIEhWWCBzdG9yZS4KICAgICAgICAgICovCi0gICAg ICAgIGdfYXNzZXJ0KGhhc19zdG9yZV9zMCAmJiAhaGFzX3N0b3JlX3MxKTsKKyAgICAgICAgZ19h c3NlcnQoaGFzX3N0b3JlX3MwICYmICFoYXNfc3RvcmVfczEgJiYgIWhhc19odnhfc3RvcmUpOwog ICAgICAgICBwcm9jZXNzX2RjemVyb2EoY3R4LCBwa3QpOworICAgIH0gZWxzZSBpZiAoaGFzX2h2 eF9zdG9yZSkgeworICAgICAgICBUQ0d2IG1lbV9pZHggPSB0Y2dfY29uc3RhbnRfdGwoY3R4LT5t ZW1faWR4KTsKKworICAgICAgICBpZiAoIWhhc19zdG9yZV9zMCAmJiAhaGFzX3N0b3JlX3MxKSB7 CisgICAgICAgICAgICBnZW5faGVscGVyX3Byb2JlX2h2eF9zdG9yZXMoY3B1X2VudiwgbWVtX2lk eCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgbWFzayA9IDA7CisgICAgICAg ICAgICBUQ0d2IG1hc2tfdGNndjsKKworICAgICAgICAgICAgaWYgKGhhc19zdG9yZV9zMCkgewor ICAgICAgICAgICAgICAgIG1hc2sgfD0gKDEgPDwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgICBpZiAoaGFzX3N0b3JlX3MxKSB7CisgICAgICAgICAgICAgICAgbWFzayB8PSAoMSA8PCAx KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChoYXNfaHZ4X3N0b3JlKSB7CisgICAg ICAgICAgICAgICAgbWFzayB8PSAoMSA8PCAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IG1hc2tfdGNndiA9IHRjZ19jb25zdGFudF90bChtYXNrKTsKKyAgICAgICAgICAgIGdlbl9oZWxw ZXJfcHJvYmVfcGt0X3NjYWxhcl9odnhfc3RvcmVzKGNwdV9lbnYsIG1hc2tfdGNndiwgbWVtX2lk eCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGhhc19zdG9yZV9zMCAmJiBoYXNfc3RvcmVf czEpIHsKICAgICAgICAgLyoKICAgICAgICAgICogcHJvY2Vzc19zdG9yZV9sb2cgd2lsbCBleGVj dXRlIHRoZSBzbG90IDEgc3RvcmUgZmlyc3QsCkBAIC01MDIsNiArNzAxLDkgQEAgc3RhdGljIHZv aWQgZ2VuX2NvbW1pdF9wYWNrZXQoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tldCAqcGt0KQogCiAg ICAgZ2VuX3JlZ193cml0ZXMoY3R4KTsKICAgICBnZW5fcHJlZF93cml0ZXMoY3R4LCBwa3QpOwor ICAgIGlmIChwa3QtPnBrdF9oYXNfaHZ4KSB7CisgICAgICAgIGdlbl9jb21taXRfaHZ4KGN0eCwg cGt0KTsKKyAgICB9CiAgICAgdXBkYXRlX2V4ZWNfY291bnRlcnMoY3R4LCBwa3QpOwogICAgIGlm IChIRVhfREVCVUcpIHsKICAgICAgICAgVENHdiBoYXNfc3QwID0KQEAgLTUxMyw2ICs3MTUsMTEg QEAgc3RhdGljIHZvaWQgZ2VuX2NvbW1pdF9wYWNrZXQoRGlzYXNDb250ZXh0ICpjdHgsIFBhY2tl dCAqcGt0KQogICAgICAgICBnZW5faGVscGVyX2RlYnVnX2NvbW1pdF9lbmQoY3B1X2VudiwgaGFz X3N0MCwgaGFzX3N0MSk7CiAgICAgfQogCisgICAgaWYgKHBrdC0+dmhpc3RfaW5zbiAhPSBOVUxM KSB7CisgICAgICAgIGN0eC0+cHJlX2NvbW1pdCA9IGZhbHNlOworICAgICAgICBwa3QtPnZoaXN0 X2luc24tPmdlbmVyYXRlKGVudiwgY3R4LCBwa3QtPnZoaXN0X2luc24sIHBrdCk7CisgICAgfQor CiAgICAgaWYgKHBrdC0+cGt0X2hhc19jb2YpIHsKICAgICAgICAgZ2VuX2VuZF90YihjdHgpOwog ICAgIH0KQEAgLTUzNyw3ICs3NDQsNyBAQCBzdGF0aWMgdm9pZCBkZWNvZGVfYW5kX3RyYW5zbGF0 ZV9wYWNrZXQoQ1BVSGV4YWdvblN0YXRlICplbnYsIERpc2FzQ29udGV4dCAqY3R4KQogICAgICAg ICBmb3IgKGkgPSAwOyBpIDwgcGt0Lm51bV9pbnNuczsgaSsrKSB7CiAgICAgICAgICAgICBnZW5f aW5zbihlbnYsIGN0eCwgJnBrdC5pbnNuW2ldLCAmcGt0KTsKICAgICAgICAgfQotICAgICAgICBn ZW5fY29tbWl0X3BhY2tldChjdHgsICZwa3QpOworICAgICAgICBnZW5fY29tbWl0X3BhY2tldChl bnYsIGN0eCwgJnBrdCk7CiAgICAgICAgIGN0eC0+YmFzZS5wY19uZXh0ICs9IHBrdC5lbmNvZF9w a3Rfc2l6ZV9pbl9ieXRlczsKICAgICB9IGVsc2UgewogICAgICAgICBnZW5fZXhjZXB0aW9uX2Vu ZF90YihjdHgsIEhFWF9FWENQX0lOVkFMSURfUEFDS0VUKTsKQEAgLTU1Miw2ICs3NTksNyBAQCBz dGF0aWMgdm9pZCBoZXhhZ29uX3RyX2luaXRfZGlzYXNfY29udGV4dChEaXNhc0NvbnRleHRCYXNl ICpkY2Jhc2UsCiAgICAgY3R4LT5tZW1faWR4ID0gTU1VX1VTRVJfSURYOwogICAgIGN0eC0+bnVt X3BhY2tldHMgPSAwOwogICAgIGN0eC0+bnVtX2luc25zID0gMDsKKyAgICBjdHgtPm51bV9odnhf aW5zbnMgPSAwOwogfQogCiBzdGF0aWMgdm9pZCBoZXhhZ29uX3RyX3RiX3N0YXJ0KERpc2FzQ29u dGV4dEJhc2UgKmRiLCBDUFVTdGF0ZSAqY3B1KQpAQCAtNjU2LDYgKzg2NCw5IEBAIHN0YXRpYyBj aGFyIHN0b3JlX2FkZHJfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogc3RhdGljIGNoYXIg c3RvcmVfd2lkdGhfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogc3RhdGljIGNoYXIgc3Rv cmVfdmFsMzJfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogc3RhdGljIGNoYXIgc3RvcmVf dmFsNjRfbmFtZXNbU1RPUkVTX01BWF1bTkFNRV9MRU5dOworc3RhdGljIGNoYXIgdnN0b3JlX2Fk ZHJfbmFtZXNbVlNUT1JFU19NQVhdW05BTUVfTEVOXTsKK3N0YXRpYyBjaGFyIHZzdG9yZV9zaXpl X25hbWVzW1ZTVE9SRVNfTUFYXVtOQU1FX0xFTl07CitzdGF0aWMgY2hhciB2c3RvcmVfcGVuZGlu Z19uYW1lc1tWU1RPUkVTX01BWF1bTkFNRV9MRU5dOwogCiB2b2lkIGhleGFnb25fdHJhbnNsYXRl X2luaXQodm9pZCkKIHsKQEAgLTcxOCw2ICs5MjksMTAgQEAgdm9pZCBoZXhhZ29uX3RyYW5zbGF0 ZV9pbml0KHZvaWQpCiAgICAgICAgIG9mZnNldG9mKENQVUhleGFnb25TdGF0ZSwgbGxzY192YWwp LCAibGxzY192YWwiKTsKICAgICBoZXhfbGxzY192YWxfaTY0ID0gdGNnX2dsb2JhbF9tZW1fbmV3 X2k2NChjcHVfZW52LAogICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIGxsc2NfdmFs X2k2NCksICJsbHNjX3ZhbF9pNjQiKTsKKyAgICBoZXhfVlJlZ3NfdXBkYXRlZCA9IHRjZ19nbG9i YWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICBvZmZzZXRvZihDUFVIZXhhZ29uU3RhdGUsIFZS ZWdzX3VwZGF0ZWQpLCAiVlJlZ3NfdXBkYXRlZCIpOworICAgIGhleF9RUmVnc191cGRhdGVkID0g dGNnX2dsb2JhbF9tZW1fbmV3KGNwdV9lbnYsCisgICAgICAgIG9mZnNldG9mKENQVUhleGFnb25T dGF0ZSwgUVJlZ3NfdXBkYXRlZCksICJRUmVnc191cGRhdGVkIik7CiAgICAgZm9yIChpID0gMDsg aSA8IFNUT1JFU19NQVg7IGkrKykgewogICAgICAgICBzbnByaW50ZihzdG9yZV9hZGRyX25hbWVz W2ldLCBOQU1FX0xFTiwgInN0b3JlX2FkZHJfJWQiLCBpKTsKICAgICAgICAgaGV4X3N0b3JlX2Fk ZHJbaV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKQEAgLTczOSw0ICs5NTQsMjAgQEAg dm9pZCBoZXhhZ29uX3RyYW5zbGF0ZV9pbml0KHZvaWQpCiAgICAgICAgICAgICBvZmZzZXRvZihD UFVIZXhhZ29uU3RhdGUsIG1lbV9sb2dfc3RvcmVzW2ldLmRhdGE2NCksCiAgICAgICAgICAgICBz dG9yZV92YWw2NF9uYW1lc1tpXSk7CiAgICAgfQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgVlNU T1JFU19NQVg7IGkrKykgeworICAgICAgICBzbnByaW50Zih2c3RvcmVfYWRkcl9uYW1lc1tpXSwg TkFNRV9MRU4sICJ2c3RvcmVfYWRkcl8lZCIsIGkpOworICAgICAgICBoZXhfdnN0b3JlX2FkZHJb aV0gPSB0Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAgICAgICAgICAgIG9mZnNldG9mKENQ VUhleGFnb25TdGF0ZSwgdnN0b3JlW2ldLnZhKSwKKyAgICAgICAgICAgIHZzdG9yZV9hZGRyX25h bWVzW2ldKTsKKworICAgICAgICBzbnByaW50Zih2c3RvcmVfc2l6ZV9uYW1lc1tpXSwgTkFNRV9M RU4sICJ2c3RvcmVfc2l6ZV8lZCIsIGkpOworICAgICAgICBoZXhfdnN0b3JlX3NpemVbaV0gPSB0 Y2dfZ2xvYmFsX21lbV9uZXcoY3B1X2VudiwKKyAgICAgICAgICAgIG9mZnNldG9mKENQVUhleGFn b25TdGF0ZSwgdnN0b3JlW2ldLnNpemUpLAorICAgICAgICAgICAgdnN0b3JlX3NpemVfbmFtZXNb aV0pOworCisgICAgICAgIHNucHJpbnRmKHZzdG9yZV9wZW5kaW5nX25hbWVzW2ldLCBOQU1FX0xF TiwgInZzdG9yZV9wZW5kaW5nXyVkIiwgaSk7CisgICAgICAgIGhleF92c3RvcmVfcGVuZGluZ1tp XSA9IHRjZ19nbG9iYWxfbWVtX25ldyhjcHVfZW52LAorICAgICAgICAgICAgb2Zmc2V0b2YoQ1BV SGV4YWdvblN0YXRlLCB2c3RvcmVfcGVuZGluZ1tpXSksCisgICAgICAgICAgICB2c3RvcmVfcGVu ZGluZ19uYW1lc1tpXSk7CisgICAgfQogfQotLSAKMi43LjQKCg==