From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 41191C47077 for ; Tue, 2 Jan 2024 06:50:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=HiMCEcOrDJulYYpzJpY5lkCrTyj4FBWyfpifXQAvY/M=; b=t/O15QWbz6mJg9 SQDf+FWit7nlhiTHQ8Mbsu1aEa8x6yFQ0jSUfGXSfOiTZ9urYz0LnGLl1uF6P3bEnmbgjI896R/LP YICCO8U9VSpstaF8GYGk3+Oa8HTG2PjncFowMu72WYDrkAlD1jFyAW0umcYh29ynzbH0QkLIcJPBt eykUK6RHNYaExVn+muWzf9+vUIfS64Ox8J7cvhBXV3asCX4pQmZ9Fnhgwt/b5pIb08iMTCV65io9p EKHWmVQGdAJyg8adgogyFIeS6RpMWG2Xm07uXWqtIj3wkSkLkDlzpckCHmqKlqsRtO7S4z+cbuWuy 26haGD88uUkF/BE/xIyA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rKYbs-007CT8-3A; Tue, 02 Jan 2024 06:50:44 +0000 Received: from dfw.source.kernel.org ([2604:1380:4641:c500::1]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rKYbn-007COP-03 for linux-riscv@lists.infradead.org; Tue, 02 Jan 2024 06:50:41 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 5D11160FB3; Tue, 2 Jan 2024 06:50:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F2ABAC433C7; Tue, 2 Jan 2024 06:50:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1704178238; bh=iEYlr2/q24F+OqvdxiGpvnWKSbZkxhoT0btJ3VoUiCU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GeqI+tGkbmO0+7nv3/sRtv8gCdC5xLaPfNJOZm8A+bk+Or1VY6J7arq393gtk/yQ2 UuNJvlQsPX2G8+2YPZk3r1Y7fzgzUVO+TcSKZCSEvSDA2T5uuex48MKMZTXNOkTgyD ZSIizRIar0f8RAwQT7d6gqk9o9mqnjXnNRsEs/m1tu+LP0VusvGLIdqw5OIHxkgP4l TiZ9Yp1r7f7eHLU551WKlj4fskCJvMkvRD3PihRYjjf6y+5gRKmEcxr6qinu34BniQ nqGQnb0XsvA63/eN91U7rTj8IwADbO8pVpsOCFfUo+CDDhVY7Y2HbbmC7g8xtUp8kV A6DVUSbDNGiZA== From: Eric Biggers To: linux-crypto@vger.kernel.org, linux-riscv@lists.infradead.org, Jerry Shih Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel , Heiko Stuebner , Phoebe Chen , hongrong.hsu@sifive.com, Paul Walmsley , Palmer Dabbelt , Albert Ou , Andy Chiu , =?UTF-8?q?Christoph=20M=C3=BCllner?= , Heiko Stuebner Subject: [RFC PATCH 09/13] crypto: riscv - add vector crypto accelerated GHASH Date: Tue, 2 Jan 2024 00:47:35 -0600 Message-ID: <20240102064743.220490-10-ebiggers@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240102064743.220490-1-ebiggers@kernel.org> References: <20240102064743.220490-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240101_225039_140563_AE8C7BD4 X-CRM114-Status: GOOD ( 28.93 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgoKQWRkIGFuIGltcGxlbWVu dGF0aW9uIG9mIEdIQVNIIHVzaW5nIHRoZSB6dmtnIGV4dGVuc2lvbi4gIFRoZSBhc3NlbWJseQpj b2RlIGlzIGRlcml2ZWQgZnJvbSBPcGVuU1NMIGNvZGUgKG9wZW5zc2wvb3BlbnNzbCMyMTkyMykg dGhhdCB3YXMKZHVhbC1saWNlbnNlZCBzbyB0aGF0IGl0IGNvdWxkIGJlIHJldXNlZCBpbiB0aGUg a2VybmVsLiAgTmV2ZXJ0aGVsZXNzLAp0aGUgYXNzZW1ibHkgaGFzIGJlZW4gc2lnbmlmaWNhbnRs eSByZXdvcmtlZCBmb3IgaW50ZWdyYXRpb24gd2l0aCB0aGUKa2VybmVsLCBmb3IgZXhhbXBsZSBi eSB1c2luZyBhIHJlZ3VsYXIgLlMgZmlsZSBpbnN0ZWFkIG9mIHRoZSBzby1jYWxsZWQKcGVybGFz bSwgdXNpbmcgdGhlIGFzc2VtYmxlciBpbnN0ZWFkIG9mIGJhcmUgJy5pbnN0JywgcmVkdWNpbmcg Y29kZQpkdXBsaWNhdGlvbiwgYW5kIGVsaW1pbmF0aW5nIHVubmVjZXNzYXJ5IGVuZGlhbm5lc3Mg Y29udmVyc2lvbnMuCgpDby1kZXZlbG9wZWQtYnk6IENocmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0 b3BoLm11ZWxsbmVyQHZydWxsLmV1PgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggTcO8bGxuZXIg PGNocmlzdG9waC5tdWVsbG5lckB2cnVsbC5ldT4KQ28tZGV2ZWxvcGVkLWJ5OiBIZWlrbyBTdHVl Ym5lciA8aGVpa28uc3R1ZWJuZXJAdnJ1bGwuZXU+ClNpZ25lZC1vZmYtYnk6IEhlaWtvIFN0dWVi bmVyIDxoZWlrby5zdHVlYm5lckB2cnVsbC5ldT4KU2lnbmVkLW9mZi1ieTogSmVycnkgU2hpaCA8 amVycnkuc2hpaEBzaWZpdmUuY29tPgpDby1kZXZlbG9wZWQtYnk6IEVyaWMgQmlnZ2VycyA8ZWJp Z2dlcnNAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bn b29nbGUuY29tPgotLS0KIGFyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcgICAgICAgICAgICAgIHwg IDEwICsrCiBhcmNoL3Jpc2N2L2NyeXB0by9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMyArCiBh cmNoL3Jpc2N2L2NyeXB0by9naGFzaC1yaXNjdjY0LWdsdWUuYyB8IDE3MCArKysrKysrKysrKysr KysrKysrKysrKysrCiBhcmNoL3Jpc2N2L2NyeXB0by9naGFzaC1yaXNjdjY0LXp2a2cuUyB8ICA3 MiArKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyNTUgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGFyY2gvcmlzY3YvY3J5cHRvL2doYXNoLXJpc2N2NjQtZ2x1ZS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgYXJjaC9yaXNjdi9jcnlwdG8vZ2hhc2gtcmlzY3Y2NC16dmtnLlMKCmRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmlnIGIvYXJjaC9yaXNjdi9jcnlwdG8v S2NvbmZpZwppbmRleCBkOWE2OTIwZGY5ZTk5Li41NzM4MThiYjNlNjc3IDEwMDY0NAotLS0gYS9h cmNoL3Jpc2N2L2NyeXB0by9LY29uZmlnCisrKyBiL2FyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcK QEAgLTM3LDExICszNywyMSBAQCBjb25maWcgQ1JZUFRPX0NIQUNIQV9SSVNDVjY0CiAJdHJpc3Rh dGUgIkNpcGhlcnM6IENoYUNoYSIKIAlkZXBlbmRzIG9uIDY0QklUICYmIFJJU0NWX0lTQV9WICYm IFRPT0xDSEFJTl9IQVNfVkVDVE9SX0NSWVBUTwogCXNlbGVjdCBDUllQVE9fU0tDSVBIRVIKIAlz ZWxlY3QgQ1JZUFRPX0xJQl9DSEFDSEFfR0VORVJJQwogCWhlbHAKIAkgIExlbmd0aC1wcmVzZXJ2 aW5nIGNpcGhlcnM6IENoYUNoYTIwIHN0cmVhbSBjaXBoZXIgYWxnb3JpdGhtCiAKIAkgIEFyY2hp dGVjdHVyZTogcmlzY3Y2NCB1c2luZzoKIAkgIC0gWnZrYiB2ZWN0b3IgY3J5cHRvIGV4dGVuc2lv bgogCitjb25maWcgQ1JZUFRPX0dIQVNIX1JJU0NWNjQKKwl0cmlzdGF0ZSAiSGFzaCBmdW5jdGlv bnM6IEdIQVNIIgorCWRlcGVuZHMgb24gNjRCSVQgJiYgUklTQ1ZfSVNBX1YgJiYgVE9PTENIQUlO X0hBU19WRUNUT1JfQ1JZUFRPCisJc2VsZWN0IENSWVBUT19HQ00KKwloZWxwCisJICBHQ00gR0hB U0ggZnVuY3Rpb24gKE5JU1QgU1AgODAwLTM4RCkKKworCSAgQXJjaGl0ZWN0dXJlOiByaXNjdjY0 IHVzaW5nOgorCSAgLSBadmtnIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9uCisKIGVuZG1lbnUKZGlm ZiAtLWdpdCBhL2FyY2gvcmlzY3YvY3J5cHRvL01ha2VmaWxlIGIvYXJjaC9yaXNjdi9jcnlwdG8v TWFrZWZpbGUKaW5kZXggN2IxZTNhM2YyMDQxZi4uZDIxZDNhM2ZjMTU3YyAxMDA2NDQKLS0tIGEv YXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZp bGUKQEAgLTQsMTAgKzQsMTMgQEAKICMKIAogb2JqLSQoQ09ORklHX0NSWVBUT19BRVNfUklTQ1Y2 NCkgKz0gYWVzLXJpc2N2NjQubwogYWVzLXJpc2N2NjQteSA6PSBhZXMtcmlzY3Y2NC1nbHVlLm8g YWVzLXJpc2N2NjQtenZrbmVkLm8KIAogb2JqLSQoQ09ORklHX0NSWVBUT19BRVNfQkxPQ0tfUklT Q1Y2NCkgKz0gYWVzLWJsb2NrLXJpc2N2NjQubwogYWVzLWJsb2NrLXJpc2N2NjQteSA6PSBhZXMt cmlzY3Y2NC1ibG9jay1tb2RlLWdsdWUubyBhZXMtcmlzY3Y2NC16dmtuZWQtenZiYi16dmtnLm8g YWVzLXJpc2N2NjQtenZrbmVkLXp2a2IubwogCiBvYmotJChDT05GSUdfQ1JZUFRPX0NIQUNIQV9S SVNDVjY0KSArPSBjaGFjaGEtcmlzY3Y2NC5vCiBjaGFjaGEtcmlzY3Y2NC15IDo9IGNoYWNoYS1y aXNjdjY0LWdsdWUubyBjaGFjaGEtcmlzY3Y2NC16dmtiLm8KKworb2JqLSQoQ09ORklHX0NSWVBU T19HSEFTSF9SSVNDVjY0KSArPSBnaGFzaC1yaXNjdjY0Lm8KK2doYXNoLXJpc2N2NjQteSA6PSBn aGFzaC1yaXNjdjY0LWdsdWUubyBnaGFzaC1yaXNjdjY0LXp2a2cubwpkaWZmIC0tZ2l0IGEvYXJj aC9yaXNjdi9jcnlwdG8vZ2hhc2gtcmlzY3Y2NC1nbHVlLmMgYi9hcmNoL3Jpc2N2L2NyeXB0by9n aGFzaC1yaXNjdjY0LWdsdWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAwLi5kMjBjOTI5NzcxZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8v Z2hhc2gtcmlzY3Y2NC1nbHVlLmMKQEAgLTAsMCArMSwxNzAgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogR0hBU0ggdXNpbmcgdGhlIFJJU0MtViB2ZWN0b3Ig Y3J5cHRvIGV4dGVuc2lvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMjMgVlJVTEwgR21iSAor ICogQXV0aG9yOiBIZWlrbyBTdHVlYm5lciA8aGVpa28uc3R1ZWJuZXJAdnJ1bGwuZXU+CisgKgor ICogQ29weXJpZ2h0IChDKSAyMDIzIFNpRml2ZSwgSW5jLgorICogQXV0aG9yOiBKZXJyeSBTaGlo IDxqZXJyeS5zaGloQHNpZml2ZS5jb20+CisgKi8KKworI2luY2x1ZGUgPGFzbS9zaW1kLmg+Cisj aW5jbHVkZSA8YXNtL3ZlY3Rvci5oPgorI2luY2x1ZGUgPGNyeXB0by9naGFzaC5oPgorI2luY2x1 ZGUgPGNyeXB0by9pbnRlcm5hbC9oYXNoLmg+CisjaW5jbHVkZSA8Y3J5cHRvL2ludGVybmFsL3Np bWQuaD4KKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxl Lmg+CisKK2FzbWxpbmthZ2Ugdm9pZCBnaGFzaF96dmtnKGJlMTI4ICphY2N1bXVsYXRvciwgY29u c3QgYmUxMjggKmtleSwKKwkJCSAgIGNvbnN0IHU4ICpkYXRhLCBzaXplX3QgbGVuKTsKKworc3Ry dWN0IHJpc2N2NjRfZ2hhc2hfdGZtX2N0eCB7CisJYmUxMjgga2V5OworfTsKKworc3RydWN0IHJp c2N2NjRfZ2hhc2hfZGVzY19jdHggeworCWJlMTI4IHNoYXNoOworCXU4IGJ1ZmZlcltHSEFTSF9C TE9DS19TSVpFXTsKKwl1MzIgYnl0ZXM7Cit9OworCitzdGF0aWMgaW50IHJpc2N2NjRfZ2hhc2hf c2V0a2V5KHN0cnVjdCBjcnlwdG9fc2hhc2ggKnRmbSwgY29uc3QgdTggKmtleSwKKwkJCQl1bnNp Z25lZCBpbnQga2V5bGVuKQoreworCXN0cnVjdCByaXNjdjY0X2doYXNoX3RmbV9jdHggKnRjdHgg PSBjcnlwdG9fc2hhc2hfY3R4KHRmbSk7CisKKwlpZiAoa2V5bGVuICE9IEdIQVNIX0JMT0NLX1NJ WkUpCisJCXJldHVybiAtRUlOVkFMOworCisJbWVtY3B5KCZ0Y3R4LT5rZXksIGtleSwgR0hBU0hf QkxPQ0tfU0laRSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByaXNjdjY0X2doYXNo X2luaXQoc3RydWN0IHNoYXNoX2Rlc2MgKmRlc2MpCit7CisJc3RydWN0IHJpc2N2NjRfZ2hhc2hf ZGVzY19jdHggKmRjdHggPSBzaGFzaF9kZXNjX2N0eChkZXNjKTsKKworCSpkY3R4ID0gKHN0cnVj dCByaXNjdjY0X2doYXNoX2Rlc2NfY3R4KXt9OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bmxpbmUgdm9pZAorcmlzY3Y2NF9naGFzaF9ibG9ja3MoY29uc3Qgc3RydWN0IHJpc2N2NjRfZ2hh c2hfdGZtX2N0eCAqdGN0eCwKKwkJICAgICBzdHJ1Y3QgcmlzY3Y2NF9naGFzaF9kZXNjX2N0eCAq ZGN0eCwKKwkJICAgICBjb25zdCB1OCAqc3JjLCBzaXplX3Qgc3JjbGVuKQoreworCS8qIFRoZSBz cmNsZW4gaXMgbm9uemVybyBhbmQgYSBtdWx0aXBsZSBvZiAxNi4gKi8KKwlpZiAoY3J5cHRvX3Np bWRfdXNhYmxlKCkpIHsKKwkJa2VybmVsX3ZlY3Rvcl9iZWdpbigpOworCQlnaGFzaF96dmtnKCZk Y3R4LT5zaGFzaCwgJnRjdHgtPmtleSwgc3JjLCBzcmNsZW4pOworCQlrZXJuZWxfdmVjdG9yX2Vu ZCgpOworCX0gZWxzZSB7CisJCWRvIHsKKwkJCWNyeXB0b194b3IoKHU4ICopJmRjdHgtPnNoYXNo LCBzcmMsIEdIQVNIX0JMT0NLX1NJWkUpOworCQkJZ2YxMjhtdWxfbGxlKCZkY3R4LT5zaGFzaCwg JnRjdHgtPmtleSk7CisJCQlzcmNsZW4gLT0gR0hBU0hfQkxPQ0tfU0laRTsKKwkJCXNyYyArPSBH SEFTSF9CTE9DS19TSVpFOworCQl9IHdoaWxlIChzcmNsZW4pOworCX0KK30KKworc3RhdGljIGlu dCByaXNjdjY0X2doYXNoX3VwZGF0ZShzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywgY29uc3QgdTgg KnNyYywKKwkJCQl1bnNpZ25lZCBpbnQgc3JjbGVuKQoreworCXNpemVfdCBsZW47CisJY29uc3Qg c3RydWN0IHJpc2N2NjRfZ2hhc2hfdGZtX2N0eCAqdGN0eCA9IGNyeXB0b19zaGFzaF9jdHgoZGVz Yy0+dGZtKTsKKwlzdHJ1Y3QgcmlzY3Y2NF9naGFzaF9kZXNjX2N0eCAqZGN0eCA9IHNoYXNoX2Rl c2NfY3R4KGRlc2MpOworCisJaWYgKGRjdHgtPmJ5dGVzKSB7CisJCWlmIChkY3R4LT5ieXRlcyAr IHNyY2xlbiA8IEdIQVNIX0JMT0NLX1NJWkUpIHsKKwkJCW1lbWNweShkY3R4LT5idWZmZXIgKyBk Y3R4LT5ieXRlcywgc3JjLCBzcmNsZW4pOworCQkJZGN0eC0+Ynl0ZXMgKz0gc3JjbGVuOworCQkJ cmV0dXJuIDA7CisJCX0KKwkJbWVtY3B5KGRjdHgtPmJ1ZmZlciArIGRjdHgtPmJ5dGVzLCBzcmMs CisJCSAgICAgICBHSEFTSF9CTE9DS19TSVpFIC0gZGN0eC0+Ynl0ZXMpOworCisJCXJpc2N2NjRf Z2hhc2hfYmxvY2tzKHRjdHgsIGRjdHgsIGRjdHgtPmJ1ZmZlciwKKwkJCQkgICAgIEdIQVNIX0JM T0NLX1NJWkUpOworCisJCXNyYyArPSBHSEFTSF9CTE9DS19TSVpFIC0gZGN0eC0+Ynl0ZXM7CisJ CXNyY2xlbiAtPSBHSEFTSF9CTE9DS19TSVpFIC0gZGN0eC0+Ynl0ZXM7CisJCWRjdHgtPmJ5dGVz ID0gMDsKKwl9CisJbGVuID0gc3JjbGVuICYgfihHSEFTSF9CTE9DS19TSVpFIC0gMSk7CisKKwlp ZiAobGVuKSB7CisJCXJpc2N2NjRfZ2hhc2hfYmxvY2tzKHRjdHgsIGRjdHgsIHNyYywgbGVuKTsK KwkJc3JjICs9IGxlbjsKKwkJc3JjbGVuIC09IGxlbjsKKwl9CisKKwlpZiAoc3JjbGVuKSB7CisJ CW1lbWNweShkY3R4LT5idWZmZXIsIHNyYywgc3JjbGVuKTsKKwkJZGN0eC0+Ynl0ZXMgPSBzcmNs ZW47CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmlzY3Y2NF9naGFzaF9maW5h bChzdHJ1Y3Qgc2hhc2hfZGVzYyAqZGVzYywgdTggKm91dCkKK3sKKwljb25zdCBzdHJ1Y3Qgcmlz Y3Y2NF9naGFzaF90Zm1fY3R4ICp0Y3R4ID0gY3J5cHRvX3NoYXNoX2N0eChkZXNjLT50Zm0pOwor CXN0cnVjdCByaXNjdjY0X2doYXNoX2Rlc2NfY3R4ICpkY3R4ID0gc2hhc2hfZGVzY19jdHgoZGVz Yyk7CisJaW50IGk7CisKKwlpZiAoZGN0eC0+Ynl0ZXMpIHsKKwkJZm9yIChpID0gZGN0eC0+Ynl0 ZXM7IGkgPCBHSEFTSF9CTE9DS19TSVpFOyBpKyspCisJCQlkY3R4LT5idWZmZXJbaV0gPSAwOwor CisJCXJpc2N2NjRfZ2hhc2hfYmxvY2tzKHRjdHgsIGRjdHgsIGRjdHgtPmJ1ZmZlciwKKwkJCQkg ICAgIEdIQVNIX0JMT0NLX1NJWkUpOworCX0KKworCW1lbWNweShvdXQsICZkY3R4LT5zaGFzaCwg R0hBU0hfRElHRVNUX1NJWkUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc2hh c2hfYWxnIHJpc2N2NjRfZ2hhc2hfYWxnID0geworCS5pbml0ID0gcmlzY3Y2NF9naGFzaF9pbml0 LAorCS51cGRhdGUgPSByaXNjdjY0X2doYXNoX3VwZGF0ZSwKKwkuZmluYWwgPSByaXNjdjY0X2do YXNoX2ZpbmFsLAorCS5zZXRrZXkgPSByaXNjdjY0X2doYXNoX3NldGtleSwKKwkuZGVzY3NpemUg PSBzaXplb2Yoc3RydWN0IHJpc2N2NjRfZ2hhc2hfZGVzY19jdHgpLAorCS5kaWdlc3RzaXplID0g R0hBU0hfRElHRVNUX1NJWkUsCisJLmJhc2UgPSB7CisJCS5jcmFfYmxvY2tzaXplID0gR0hBU0hf QkxPQ0tfU0laRSwKKwkJLmNyYV9jdHhzaXplID0gc2l6ZW9mKHN0cnVjdCByaXNjdjY0X2doYXNo X3RmbV9jdHgpLAorCQkuY3JhX3ByaW9yaXR5ID0gMzAwLAorCQkuY3JhX25hbWUgPSAiZ2hhc2gi LAorCQkuY3JhX2RyaXZlcl9uYW1lID0gImdoYXNoLXJpc2N2NjQtenZrZyIsCisJCS5jcmFfbW9k dWxlID0gVEhJU19NT0RVTEUsCisJfSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHJpc2N2NjRf Z2hhc2hfbW9kX2luaXQodm9pZCkKK3sKKwlpZiAocmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFi bGUoTlVMTCwgWlZLRykgJiYKKwkgICAgcmlzY3ZfdmVjdG9yX3ZsZW4oKSA+PSAxMjgpCisJCXJl dHVybiBjcnlwdG9fcmVnaXN0ZXJfc2hhc2goJnJpc2N2NjRfZ2hhc2hfYWxnKTsKKworCXJldHVy biAtRU5PREVWOworfQorCitzdGF0aWMgdm9pZCBfX2V4aXQgcmlzY3Y2NF9naGFzaF9tb2RfZmlu aSh2b2lkKQoreworCWNyeXB0b191bnJlZ2lzdGVyX3NoYXNoKCZyaXNjdjY0X2doYXNoX2FsZyk7 Cit9CisKK21vZHVsZV9pbml0KHJpc2N2NjRfZ2hhc2hfbW9kX2luaXQpOworbW9kdWxlX2V4aXQo cmlzY3Y2NF9naGFzaF9tb2RfZmluaSk7CisKK01PRFVMRV9ERVNDUklQVElPTigiR0hBU0ggKFJJ U0MtViBhY2NlbGVyYXRlZCkiKTsKK01PRFVMRV9BVVRIT1IoIkhlaWtvIFN0dWVibmVyIDxoZWlr by5zdHVlYm5lckB2cnVsbC5ldT4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKK01PRFVMRV9B TElBU19DUllQVE8oImdoYXNoIik7CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2NyeXB0by9naGFz aC1yaXNjdjY0LXp2a2cuUyBiL2FyY2gvcmlzY3YvY3J5cHRvL2doYXNoLXJpc2N2NjQtenZrZy5T Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjdkNDA2ZWE3NDMyMjAK LS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3Jpc2N2L2NyeXB0by9naGFzaC1yaXNjdjY0LXp2a2cu UwpAQCAtMCwwICsxLDcyIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIu MCBPUiBCU0QtMi1DbGF1c2UgKi8KKy8vCisvLyBUaGlzIGZpbGUgaXMgZHVhbC1saWNlbnNlZCwg bWVhbmluZyB0aGF0IHlvdSBjYW4gdXNlIGl0IHVuZGVyIHlvdXIKKy8vIGNob2ljZSBvZiBlaXRo ZXIgb2YgdGhlIGZvbGxvd2luZyB0d28gbGljZW5zZXM6CisvLworLy8gQ29weXJpZ2h0IDIwMjMg VGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8KKy8v IExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSAyLjAgKHRoZSAiTGljZW5zZSIpLiBZ b3UgY2FuIG9idGFpbgorLy8gYSBjb3B5IGluIHRoZSBmaWxlIExJQ0VOU0UgaW4gdGhlIHNvdXJj ZSBkaXN0cmlidXRpb24gb3IgYXQKKy8vIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9s aWNlbnNlLmh0bWwKKy8vCisvLyBvcgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAyMywgQ2hyaXN0 b3BoIE3DvGxsbmVyIDxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+CisvLyBDb3B5cmlnaHQg KGMpIDIwMjMsIEplcnJ5IFNoaWggPGplcnJ5LnNoaWhAc2lmaXZlLmNvbT4KKy8vIENvcHlyaWdo dCAyMDI0IEdvb2dsZSBMTEMKKy8vIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0 cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo b3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor Ly8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLwor Ly8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E IENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNV TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH SFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO RElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO RCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K KworLy8gVGhlIGdlbmVyYXRlZCBjb2RlIG9mIHRoaXMgZmlsZSBkZXBlbmRzIG9uIHRoZSBmb2xs b3dpbmcgUklTQy1WIGV4dGVuc2lvbnM6CisvLyAtIFJWNjRJCisvLyAtIFJJU0MtViBWZWN0b3Ig KCdWJykgd2l0aCBWTEVOID49IDEyOAorLy8gLSBSSVNDLVYgVmVjdG9yIEdDTS9HTUFDIGV4dGVu c2lvbiAoJ1p2a2cnKQorCisjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorCisudGV4dAorLm9w dGlvbiBhcmNoLCArenZrZworCisjZGVmaW5lIEFDQ1VNVUxBVE9SCWEwCisjZGVmaW5lIEtFWQkJ YTEKKyNkZWZpbmUgREFUQQkJYTIKKyNkZWZpbmUgTEVOCQlhMworCisvLyB2b2lkIGdoYXNoX3p2 a2coYmUxMjggKmFjY3VtdWxhdG9yLCBjb25zdCBiZTEyOCAqa2V5LCBjb25zdCB1OCAqZGF0YSwK Ky8vCQkgICBzaXplX3QgbGVuKTsKKy8vCisvLyB8bGVufCBtdXN0IGJlIG5vbnplcm8gYW5kIGEg bXVsdGlwbGUgb2YgMTYgKEdIQVNIX0JMT0NLX1NJWkUpLgorU1lNX0ZVTkNfU1RBUlQoZ2hhc2hf enZrZykKKwl2c2V0aXZsaQl6ZXJvLCA0LCBlMzIsIG0xLCB0YSwgbWEKKwl2bGUzMi52CQl2MSwg KEFDQ1VNVUxBVE9SKQorCXZsZTMyLnYJCXYyLCAoS0VZKQorLkxuZXh0X2Jsb2NrOgorCXZsZTMy LnYJCXYzLCAoREFUQSkKKwlhZGRpCQlEQVRBLCBEQVRBLCAxNgorCWFkZGkJCUxFTiwgTEVOLCAt MTYKKwl2Z2hzaC52dgl2MSwgdjIsIHYzCisJYm5legkJTEVOLCAuTG5leHRfYmxvY2sKKworCXZz ZTMyLnYJCXYxLCAoQUNDVU1VTEFUT1IpCisJcmV0CitTWU1fRlVOQ19FTkQoZ2hhc2hfenZrZykK LS0gCjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlz Y3YK