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=-14.0 required=3.0 tests=BAYES_00,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 6CD80C433E6 for ; Mon, 4 Jan 2021 19:03:51 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D5C0421D93 for ; Mon, 4 Jan 2021 19:03:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D5C0421D93 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=dm-devel-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-347-SEHFQfUiM7ivew6055d-Mw-1; Mon, 04 Jan 2021 14:03:47 -0500 X-MC-Unique: SEHFQfUiM7ivew6055d-Mw-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 22C74184217A; Mon, 4 Jan 2021 19:03:41 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 04FED61F2B; Mon, 4 Jan 2021 19:03:41 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id C78961809CAF; Mon, 4 Jan 2021 19:03:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 0BNMlwip014941 for ; Wed, 23 Dec 2020 17:47:58 -0500 Received: by smtp.corp.redhat.com (Postfix) id 6F2821134CC0; Wed, 23 Dec 2020 22:47:58 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 33B881134CBF for ; Wed, 23 Dec 2020 22:47:56 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-1.mimecast.com [207.211.31.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EF955186E120 for ; Wed, 23 Dec 2020 22:47:55 +0000 (UTC) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-447-PiZiql2QO5CWWlKwlYBW0A-1; Wed, 23 Dec 2020 17:47:53 -0500 X-MC-Unique: PiZiql2QO5CWWlKwlYBW0A-1 Received: by mail.kernel.org (Postfix) with ESMTPSA id C3B88224B2; Wed, 23 Dec 2020 22:39:03 +0000 (UTC) From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Date: Wed, 23 Dec 2020 23:38:33 +0100 Message-Id: <20201223223841.11311-3-ardb@kernel.org> In-Reply-To: <20201223223841.11311-1-ardb@kernel.org> References: <20201223223841.11311-1-ardb@kernel.org> MIME-Version: 1.0 X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 0BNMlwip014941 X-loop: dm-devel@redhat.com X-Mailman-Approved-At: Mon, 04 Jan 2021 14:03:11 -0500 Cc: Herbert Xu , Mike Snitzer , Ard Biesheuvel , Eric Biggers , dm-devel@redhat.com, Milan Broz , Megha Dey Subject: [dm-devel] [RFC PATCH 02/10] crypto: x86/cast6 - switch to XTS template X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Tm93IHRoYXQgdGhlIFhUUyB0ZW1wbGF0ZSBjYW4gd3JhcCBhY2NlbGVyYXRlZCBFQ0IgbW9kZXMs IGl0IGNhbiBiZQp1c2VkIHRvIGltcGxlbWVudCBDQVNUNiBpbiBYVFMgbW9kZSBhcyB3ZWxsLCB3 aGljaCB0dXJucyBvdXQgdG8KYmUgYXQgbGVhc3QgYXMgZmFzdCwgYW5kIHNvbWV0aW1lcyBldmVu IGZhc3RlcgoKU2lnbmVkLW9mZi1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4K LS0tCiBhcmNoL3g4Ni9jcnlwdG8vY2FzdDYtYXZ4LXg4Nl82NC1hc21fNjQuUyB8IDU2IC0tLS0t LS0tLS0tCiBhcmNoL3g4Ni9jcnlwdG8vY2FzdDZfYXZ4X2dsdWUuYyAgICAgICAgICB8IDk4IC0t LS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE1NCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9hcmNoL3g4Ni9jcnlwdG8vY2FzdDYtYXZ4LXg4Nl82NC1hc21fNjQuUyBiL2Fy Y2gveDg2L2NyeXB0by9jYXN0Ni1hdngteDg2XzY0LWFzbV82NC5TCmluZGV4IDkzMmEzY2UzMmE4 OC4uMGMxZWE4MzYyMTVhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9jcnlwdG8vY2FzdDYtYXZ4LXg4 Nl82NC1hc21fNjQuUworKysgYi9hcmNoL3g4Ni9jcnlwdG8vY2FzdDYtYXZ4LXg4Nl82NC1hc21f NjQuUwpAQCAtMjEyLDggKzIxMiw2IEBACiAKIC5zZWN0aW9uCS5yb2RhdGEuY3N0MTYsICJhTSIs IEBwcm9nYml0cywgMTYKIC5hbGlnbiAxNgotLkx4dHNfZ2YxMjhtdWxfYW5kX3NobDFfbWFzazoK LQkuYnl0ZSAweDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAw CiAuTGJzd2FwX21hc2s6CiAJLmJ5dGUgMywgMiwgMSwgMCwgNywgNiwgNSwgNCwgMTEsIDEwLCA5 LCA4LCAxNSwgMTQsIDEzLCAxMgogLkxic3dhcDEyOF9tYXNrOgpAQCAtNDQwLDU3ICs0MzgsMyBA QCBTWU1fRlVOQ19TVEFSVChjYXN0Nl9jdHJfOHdheSkKIAlGUkFNRV9FTkQKIAlyZXQ7CiBTWU1f RlVOQ19FTkQoY2FzdDZfY3RyXzh3YXkpCi0KLVNZTV9GVU5DX1NUQVJUKGNhc3Q2X3h0c19lbmNf OHdheSkKLQkvKiBpbnB1dDoKLQkgKgklcmRpOiBjdHgsIENUWAotCSAqCSVyc2k6IGRzdAotCSAq CSVyZHg6IHNyYwotCSAqCSVyY3g6IGl2ICh0IOKKlSDOseKBvyDiiIggR0YoMsK5wrLigbgpKQot CSAqLwotCUZSQU1FX0JFR0lOCi0JcHVzaHEgJXIxNTsKLQotCW1vdnEgJXJkaSwgQ1RYCi0JbW92 cSAlcnNpLCAlcjExOwotCi0JLyogcmVncyA8PSBzcmMsIGRzdCA8PSBJVnMsIHJlZ3MgPD0gcmVn cyB4b3IgSVZzICovCi0JbG9hZF94dHNfOHdheSglcmN4LCAlcmR4LCAlcnNpLCBSQTEsIFJCMSwg UkMxLCBSRDEsIFJBMiwgUkIyLCBSQzIsIFJEMiwKLQkJICAgICAgUlgsIFJLUiwgUktNLCAuTHh0 c19nZjEyOG11bF9hbmRfc2hsMV9tYXNrKTsKLQotCWNhbGwgX19jYXN0Nl9lbmNfYmxrODsKLQot CS8qIGRzdCA8PSByZWdzIHhvciBJVnMoaW4gZHN0KSAqLwotCXN0b3JlX3h0c184d2F5KCVyMTEs IFJBMSwgUkIxLCBSQzEsIFJEMSwgUkEyLCBSQjIsIFJDMiwgUkQyKTsKLQotCXBvcHEgJXIxNTsK LQlGUkFNRV9FTkQKLQlyZXQ7Ci1TWU1fRlVOQ19FTkQoY2FzdDZfeHRzX2VuY184d2F5KQotCi1T WU1fRlVOQ19TVEFSVChjYXN0Nl94dHNfZGVjXzh3YXkpCi0JLyogaW5wdXQ6Ci0JICoJJXJkaTog Y3R4LCBDVFgKLQkgKgklcnNpOiBkc3QKLQkgKgklcmR4OiBzcmMKLQkgKgklcmN4OiBpdiAodCDi ipUgzrHigb8g4oiIIEdGKDLCucKy4oG4KSkKLQkgKi8KLQlGUkFNRV9CRUdJTgotCXB1c2hxICVy MTU7Ci0KLQltb3ZxICVyZGksIENUWAotCW1vdnEgJXJzaSwgJXIxMTsKLQotCS8qIHJlZ3MgPD0g c3JjLCBkc3QgPD0gSVZzLCByZWdzIDw9IHJlZ3MgeG9yIElWcyAqLwotCWxvYWRfeHRzXzh3YXko JXJjeCwgJXJkeCwgJXJzaSwgUkExLCBSQjEsIFJDMSwgUkQxLCBSQTIsIFJCMiwgUkMyLCBSRDIs Ci0JCSAgICAgIFJYLCBSS1IsIFJLTSwgLkx4dHNfZ2YxMjhtdWxfYW5kX3NobDFfbWFzayk7Ci0K LQljYWxsIF9fY2FzdDZfZGVjX2Jsazg7Ci0KLQkvKiBkc3QgPD0gcmVncyB4b3IgSVZzKGluIGRz dCkgKi8KLQlzdG9yZV94dHNfOHdheSglcjExLCBSQTEsIFJCMSwgUkMxLCBSRDEsIFJBMiwgUkIy LCBSQzIsIFJEMik7Ci0KLQlwb3BxICVyMTU7Ci0JRlJBTUVfRU5ECi0JcmV0OwotU1lNX0ZVTkNf RU5EKGNhc3Q2X3h0c19kZWNfOHdheSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2NyeXB0by9jYXN0 Nl9hdnhfZ2x1ZS5jIGIvYXJjaC94ODYvY3J5cHRvL2Nhc3Q2X2F2eF9nbHVlLmMKaW5kZXggNDhl MGYzNzc5NmZhLi41YTIxZDNlOTA0MWMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2NyeXB0by9jYXN0 Nl9hdnhfZ2x1ZS5jCisrKyBiL2FyY2gveDg2L2NyeXB0by9jYXN0Nl9hdnhfZ2x1ZS5jCkBAIC0x NSw3ICsxNSw2IEBACiAjaW5jbHVkZSA8Y3J5cHRvL2FsZ2FwaS5oPgogI2luY2x1ZGUgPGNyeXB0 by9jYXN0Ni5oPgogI2luY2x1ZGUgPGNyeXB0by9pbnRlcm5hbC9zaW1kLmg+Ci0jaW5jbHVkZSA8 Y3J5cHRvL3h0cy5oPgogI2luY2x1ZGUgPGFzbS9jcnlwdG8vZ2x1ZV9oZWxwZXIuaD4KIAogI2Rl ZmluZSBDQVNUNl9QQVJBTExFTF9CTE9DS1MgOApAQCAtMjcsMjcgKzI2LDEyIEBAIGFzbWxpbmth Z2Ugdm9pZCBjYXN0Nl9jYmNfZGVjXzh3YXkoY29uc3Qgdm9pZCAqY3R4LCB1OCAqZHN0LCBjb25z dCB1OCAqc3JjKTsKIGFzbWxpbmthZ2Ugdm9pZCBjYXN0Nl9jdHJfOHdheShjb25zdCB2b2lkICpj dHgsIHU4ICpkc3QsIGNvbnN0IHU4ICpzcmMsCiAJCQkgICAgICAgbGUxMjggKml2KTsKIAotYXNt bGlua2FnZSB2b2lkIGNhc3Q2X3h0c19lbmNfOHdheShjb25zdCB2b2lkICpjdHgsIHU4ICpkc3Qs IGNvbnN0IHU4ICpzcmMsCi0JCQkJICAgbGUxMjggKml2KTsKLWFzbWxpbmthZ2Ugdm9pZCBjYXN0 Nl94dHNfZGVjXzh3YXkoY29uc3Qgdm9pZCAqY3R4LCB1OCAqZHN0LCBjb25zdCB1OCAqc3JjLAot CQkJCSAgIGxlMTI4ICppdik7Ci0KIHN0YXRpYyBpbnQgY2FzdDZfc2V0a2V5X3NrY2lwaGVyKHN0 cnVjdCBjcnlwdG9fc2tjaXBoZXIgKnRmbSwKIAkJCQkgY29uc3QgdTggKmtleSwgdW5zaWduZWQg aW50IGtleWxlbikKIHsKIAlyZXR1cm4gY2FzdDZfc2V0a2V5KCZ0Zm0tPmJhc2UsIGtleSwga2V5 bGVuKTsKIH0KIAotc3RhdGljIHZvaWQgY2FzdDZfeHRzX2VuYyhjb25zdCB2b2lkICpjdHgsIHU4 ICpkc3QsIGNvbnN0IHU4ICpzcmMsIGxlMTI4ICppdikKLXsKLQlnbHVlX3h0c19jcnlwdF8xMjhi aXRfb25lKGN0eCwgZHN0LCBzcmMsIGl2LCBfX2Nhc3Q2X2VuY3J5cHQpOwotfQotCi1zdGF0aWMg dm9pZCBjYXN0Nl94dHNfZGVjKGNvbnN0IHZvaWQgKmN0eCwgdTggKmRzdCwgY29uc3QgdTggKnNy YywgbGUxMjggKml2KQotewotCWdsdWVfeHRzX2NyeXB0XzEyOGJpdF9vbmUoY3R4LCBkc3QsIHNy YywgaXYsIF9fY2FzdDZfZGVjcnlwdCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNhc3Q2X2NyeXB0X2N0 cihjb25zdCB2b2lkICpjdHgsIHU4ICpkLCBjb25zdCB1OCAqcywgbGUxMjggKml2KQogewogCWJl MTI4IGN0cmJsazsKQEAgLTg3LDE5ICs3MSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tbW9u X2dsdWVfY3R4IGNhc3Q2X2N0ciA9IHsKIAl9IH0KIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg Y29tbW9uX2dsdWVfY3R4IGNhc3Q2X2VuY194dHMgPSB7Ci0JLm51bV9mdW5jcyA9IDIsCi0JLmZw dV9ibG9ja3NfbGltaXQgPSBDQVNUNl9QQVJBTExFTF9CTE9DS1MsCi0KLQkuZnVuY3MgPSB7IHsK LQkJLm51bV9ibG9ja3MgPSBDQVNUNl9QQVJBTExFTF9CTE9DS1MsCi0JCS5mbl91ID0geyAueHRz ID0gY2FzdDZfeHRzX2VuY184d2F5IH0KLQl9LCB7Ci0JCS5udW1fYmxvY2tzID0gMSwKLQkJLmZu X3UgPSB7IC54dHMgPSBjYXN0Nl94dHNfZW5jIH0KLQl9IH0KLX07Ci0KIHN0YXRpYyBjb25zdCBz dHJ1Y3QgY29tbW9uX2dsdWVfY3R4IGNhc3Q2X2RlYyA9IHsKIAkubnVtX2Z1bmNzID0gMiwKIAku ZnB1X2Jsb2Nrc19saW1pdCA9IENBU1Q2X1BBUkFMTEVMX0JMT0NLUywKQEAgLTEyNiwxOSArOTcs NiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbW1vbl9nbHVlX2N0eCBjYXN0Nl9kZWNfY2JjID0g ewogCX0gfQogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBjb21tb25fZ2x1ZV9jdHggY2FzdDZf ZGVjX3h0cyA9IHsKLQkubnVtX2Z1bmNzID0gMiwKLQkuZnB1X2Jsb2Nrc19saW1pdCA9IENBU1Q2 X1BBUkFMTEVMX0JMT0NLUywKLQotCS5mdW5jcyA9IHsgewotCQkubnVtX2Jsb2NrcyA9IENBU1Q2 X1BBUkFMTEVMX0JMT0NLUywKLQkJLmZuX3UgPSB7IC54dHMgPSBjYXN0Nl94dHNfZGVjXzh3YXkg fQotCX0sIHsKLQkJLm51bV9ibG9ja3MgPSAxLAotCQkuZm5fdSA9IHsgLnh0cyA9IGNhc3Q2X3h0 c19kZWMgfQotCX0gfQotfTsKLQogc3RhdGljIGludCBlY2JfZW5jcnlwdChzdHJ1Y3Qgc2tjaXBo ZXJfcmVxdWVzdCAqcmVxKQogewogCXJldHVybiBnbHVlX2VjYl9yZXFfMTI4Yml0KCZjYXN0Nl9l bmMsIHJlcSk7CkBAIC0xNjQsNDggKzEyMiw2IEBAIHN0YXRpYyBpbnQgY3RyX2NyeXB0KHN0cnVj dCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpCiAJcmV0dXJuIGdsdWVfY3RyX3JlcV8xMjhiaXQoJmNh c3Q2X2N0ciwgcmVxKTsKIH0KIAotc3RydWN0IGNhc3Q2X3h0c19jdHggewotCXN0cnVjdCBjYXN0 Nl9jdHggdHdlYWtfY3R4OwotCXN0cnVjdCBjYXN0Nl9jdHggY3J5cHRfY3R4OwotfTsKLQotc3Rh dGljIGludCB4dHNfY2FzdDZfc2V0a2V5KHN0cnVjdCBjcnlwdG9fc2tjaXBoZXIgKnRmbSwgY29u c3QgdTggKmtleSwKLQkJCSAgICB1bnNpZ25lZCBpbnQga2V5bGVuKQotewotCXN0cnVjdCBjYXN0 Nl94dHNfY3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KHRmbSk7Ci0JaW50IGVycjsKLQot CWVyciA9IHh0c192ZXJpZnlfa2V5KHRmbSwga2V5LCBrZXlsZW4pOwotCWlmIChlcnIpCi0JCXJl dHVybiBlcnI7Ci0KLQkvKiBmaXJzdCBoYWxmIG9mIHh0cy1rZXkgaXMgZm9yIGNyeXB0ICovCi0J ZXJyID0gX19jYXN0Nl9zZXRrZXkoJmN0eC0+Y3J5cHRfY3R4LCBrZXksIGtleWxlbiAvIDIpOwot CWlmIChlcnIpCi0JCXJldHVybiBlcnI7Ci0KLQkvKiBzZWNvbmQgaGFsZiBvZiB4dHMta2V5IGlz IGZvciB0d2VhayAqLwotCXJldHVybiBfX2Nhc3Q2X3NldGtleSgmY3R4LT50d2Vha19jdHgsIGtl eSArIGtleWxlbiAvIDIsIGtleWxlbiAvIDIpOwotfQotCi1zdGF0aWMgaW50IHh0c19lbmNyeXB0 KHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0ICpyZXEpCi17Ci0Jc3RydWN0IGNyeXB0b19za2NpcGhl ciAqdGZtID0gY3J5cHRvX3NrY2lwaGVyX3JlcXRmbShyZXEpOwotCXN0cnVjdCBjYXN0Nl94dHNf Y3R4ICpjdHggPSBjcnlwdG9fc2tjaXBoZXJfY3R4KHRmbSk7Ci0KLQlyZXR1cm4gZ2x1ZV94dHNf cmVxXzEyOGJpdCgmY2FzdDZfZW5jX3h0cywgcmVxLCBfX2Nhc3Q2X2VuY3J5cHQsCi0JCQkJICAg JmN0eC0+dHdlYWtfY3R4LCAmY3R4LT5jcnlwdF9jdHgsIGZhbHNlKTsKLX0KLQotc3RhdGljIGlu dCB4dHNfZGVjcnlwdChzdHJ1Y3Qgc2tjaXBoZXJfcmVxdWVzdCAqcmVxKQotewotCXN0cnVjdCBj cnlwdG9fc2tjaXBoZXIgKnRmbSA9IGNyeXB0b19za2NpcGhlcl9yZXF0Zm0ocmVxKTsKLQlzdHJ1 Y3QgY2FzdDZfeHRzX2N0eCAqY3R4ID0gY3J5cHRvX3NrY2lwaGVyX2N0eCh0Zm0pOwotCi0JcmV0 dXJuIGdsdWVfeHRzX3JlcV8xMjhiaXQoJmNhc3Q2X2RlY194dHMsIHJlcSwgX19jYXN0Nl9lbmNy eXB0LAotCQkJCSAgICZjdHgtPnR3ZWFrX2N0eCwgJmN0eC0+Y3J5cHRfY3R4LCB0cnVlKTsKLX0K LQogc3RhdGljIHN0cnVjdCBza2NpcGhlcl9hbGcgY2FzdDZfYWxnc1tdID0gewogCXsKIAkJLmJh c2UuY3JhX25hbWUJCT0gIl9fZWNiKGNhc3Q2KSIsCkBAIC0yNDksMjAgKzE2NSw2IEBAIHN0YXRp YyBzdHJ1Y3Qgc2tjaXBoZXJfYWxnIGNhc3Q2X2FsZ3NbXSA9IHsKIAkJLnNldGtleQkJCT0gY2Fz dDZfc2V0a2V5X3NrY2lwaGVyLAogCQkuZW5jcnlwdAkJPSBjdHJfY3J5cHQsCiAJCS5kZWNyeXB0 CQk9IGN0cl9jcnlwdCwKLQl9LCB7Ci0JCS5iYXNlLmNyYV9uYW1lCQk9ICJfX3h0cyhjYXN0Niki LAotCQkuYmFzZS5jcmFfZHJpdmVyX25hbWUJPSAiX194dHMtY2FzdDYtYXZ4IiwKLQkJLmJhc2Uu Y3JhX3ByaW9yaXR5CT0gMjAwLAotCQkuYmFzZS5jcmFfZmxhZ3MJCT0gQ1JZUFRPX0FMR19JTlRF Uk5BTCwKLQkJLmJhc2UuY3JhX2Jsb2Nrc2l6ZQk9IENBU1Q2X0JMT0NLX1NJWkUsCi0JCS5iYXNl LmNyYV9jdHhzaXplCT0gc2l6ZW9mKHN0cnVjdCBjYXN0Nl94dHNfY3R4KSwKLQkJLmJhc2UuY3Jh X21vZHVsZQk9IFRISVNfTU9EVUxFLAotCQkubWluX2tleXNpemUJCT0gMiAqIENBU1Q2X01JTl9L RVlfU0laRSwKLQkJLm1heF9rZXlzaXplCQk9IDIgKiBDQVNUNl9NQVhfS0VZX1NJWkUsCi0JCS5p dnNpemUJCQk9IENBU1Q2X0JMT0NLX1NJWkUsCi0JCS5zZXRrZXkJCQk9IHh0c19jYXN0Nl9zZXRr ZXksCi0JCS5lbmNyeXB0CQk9IHh0c19lbmNyeXB0LAotCQkuZGVjcnlwdAkJPSB4dHNfZGVjcnlw dCwKIAl9LAogfTsKIAotLSAKMi4xNy4xCgoKLS0KZG0tZGV2ZWwgbWFpbGluZyBsaXN0CmRtLWRl dmVsQHJlZGhhdC5jb20KaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9tYWlsbWFuL2xpc3RpbmZvL2Rt LWRldmVs 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=-19.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,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 4A78FC433E6 for ; Wed, 23 Dec 2020 22:39:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 130B122A83 for ; Wed, 23 Dec 2020 22:39:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726282AbgLWWjr (ORCPT ); Wed, 23 Dec 2020 17:39:47 -0500 Received: from mail.kernel.org ([198.145.29.99]:59244 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725811AbgLWWjq (ORCPT ); Wed, 23 Dec 2020 17:39:46 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id C3B88224B2; Wed, 23 Dec 2020 22:39:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1608763145; bh=u+uFryUmH+JxWzJkbheVciNMfp/q1G+YXDT1u1i8vCg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=C/GEKf/BvlPfinxqSX1Nx8v+D7Vr5+UsHmYHJEPab+GXtuPJEidKOzkB+/Fw7dpEq LTnVa7dF46bLnEi/jp9Z9bFsm3SmjDSP9T+e6JflQLZz1KwJyoSQGjuYYiJ+AqVXxc MwHLUORXPmXTNOPqhhKCUSNCg6kyN4uMCy9cXfBWBUdPE320y4CHCNm4i//1yC/faz /NIr3ZLWS8ecm+I7DFvfEzM6ouA8t3He678yCMJajzzkDEhIOz+YeCQSvULokFedaR JjwaB6LCx5CHoKKtaALXWMSxJtsdAnu6UvveCUq8gGKW2+RxDF/9KpcqMQNuQjjGB1 S86AfUe2cbY8g== From: Ard Biesheuvel To: linux-crypto@vger.kernel.org Cc: dm-devel@redhat.com, Ard Biesheuvel , Megha Dey , Eric Biggers , Herbert Xu , Milan Broz , Mike Snitzer Subject: [RFC PATCH 02/10] crypto: x86/cast6 - switch to XTS template Date: Wed, 23 Dec 2020 23:38:33 +0100 Message-Id: <20201223223841.11311-3-ardb@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201223223841.11311-1-ardb@kernel.org> References: <20201223223841.11311-1-ardb@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Now that the XTS template can wrap accelerated ECB modes, it can be used to implement CAST6 in XTS mode as well, which turns out to be at least as fast, and sometimes even faster Signed-off-by: Ard Biesheuvel --- arch/x86/crypto/cast6-avx-x86_64-asm_64.S | 56 ----------- arch/x86/crypto/cast6_avx_glue.c | 98 -------------------- 2 files changed, 154 deletions(-) diff --git a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S index 932a3ce32a88..0c1ea836215a 100644 --- a/arch/x86/crypto/cast6-avx-x86_64-asm_64.S +++ b/arch/x86/crypto/cast6-avx-x86_64-asm_64.S @@ -212,8 +212,6 @@ .section .rodata.cst16, "aM", @progbits, 16 .align 16 -.Lxts_gf128mul_and_shl1_mask: - .byte 0x87, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 .Lbswap_mask: .byte 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 .Lbswap128_mask: @@ -440,57 +438,3 @@ SYM_FUNC_START(cast6_ctr_8way) FRAME_END ret; SYM_FUNC_END(cast6_ctr_8way) - -SYM_FUNC_START(cast6_xts_enc_8way) - /* input: - * %rdi: ctx, CTX - * %rsi: dst - * %rdx: src - * %rcx: iv (t ⊕ αⁿ ∈ GF(2¹²⁸)) - */ - FRAME_BEGIN - pushq %r15; - - movq %rdi, CTX - movq %rsi, %r11; - - /* regs <= src, dst <= IVs, regs <= regs xor IVs */ - load_xts_8way(%rcx, %rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2, - RX, RKR, RKM, .Lxts_gf128mul_and_shl1_mask); - - call __cast6_enc_blk8; - - /* dst <= regs xor IVs(in dst) */ - store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); - - popq %r15; - FRAME_END - ret; -SYM_FUNC_END(cast6_xts_enc_8way) - -SYM_FUNC_START(cast6_xts_dec_8way) - /* input: - * %rdi: ctx, CTX - * %rsi: dst - * %rdx: src - * %rcx: iv (t ⊕ αⁿ ∈ GF(2¹²⁸)) - */ - FRAME_BEGIN - pushq %r15; - - movq %rdi, CTX - movq %rsi, %r11; - - /* regs <= src, dst <= IVs, regs <= regs xor IVs */ - load_xts_8way(%rcx, %rdx, %rsi, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2, - RX, RKR, RKM, .Lxts_gf128mul_and_shl1_mask); - - call __cast6_dec_blk8; - - /* dst <= regs xor IVs(in dst) */ - store_xts_8way(%r11, RA1, RB1, RC1, RD1, RA2, RB2, RC2, RD2); - - popq %r15; - FRAME_END - ret; -SYM_FUNC_END(cast6_xts_dec_8way) diff --git a/arch/x86/crypto/cast6_avx_glue.c b/arch/x86/crypto/cast6_avx_glue.c index 48e0f37796fa..5a21d3e9041c 100644 --- a/arch/x86/crypto/cast6_avx_glue.c +++ b/arch/x86/crypto/cast6_avx_glue.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #define CAST6_PARALLEL_BLOCKS 8 @@ -27,27 +26,12 @@ asmlinkage void cast6_cbc_dec_8way(const void *ctx, u8 *dst, const u8 *src); asmlinkage void cast6_ctr_8way(const void *ctx, u8 *dst, const u8 *src, le128 *iv); -asmlinkage void cast6_xts_enc_8way(const void *ctx, u8 *dst, const u8 *src, - le128 *iv); -asmlinkage void cast6_xts_dec_8way(const void *ctx, u8 *dst, const u8 *src, - le128 *iv); - static int cast6_setkey_skcipher(struct crypto_skcipher *tfm, const u8 *key, unsigned int keylen) { return cast6_setkey(&tfm->base, key, keylen); } -static void cast6_xts_enc(const void *ctx, u8 *dst, const u8 *src, le128 *iv) -{ - glue_xts_crypt_128bit_one(ctx, dst, src, iv, __cast6_encrypt); -} - -static void cast6_xts_dec(const void *ctx, u8 *dst, const u8 *src, le128 *iv) -{ - glue_xts_crypt_128bit_one(ctx, dst, src, iv, __cast6_decrypt); -} - static void cast6_crypt_ctr(const void *ctx, u8 *d, const u8 *s, le128 *iv) { be128 ctrblk; @@ -87,19 +71,6 @@ static const struct common_glue_ctx cast6_ctr = { } } }; -static const struct common_glue_ctx cast6_enc_xts = { - .num_funcs = 2, - .fpu_blocks_limit = CAST6_PARALLEL_BLOCKS, - - .funcs = { { - .num_blocks = CAST6_PARALLEL_BLOCKS, - .fn_u = { .xts = cast6_xts_enc_8way } - }, { - .num_blocks = 1, - .fn_u = { .xts = cast6_xts_enc } - } } -}; - static const struct common_glue_ctx cast6_dec = { .num_funcs = 2, .fpu_blocks_limit = CAST6_PARALLEL_BLOCKS, @@ -126,19 +97,6 @@ static const struct common_glue_ctx cast6_dec_cbc = { } } }; -static const struct common_glue_ctx cast6_dec_xts = { - .num_funcs = 2, - .fpu_blocks_limit = CAST6_PARALLEL_BLOCKS, - - .funcs = { { - .num_blocks = CAST6_PARALLEL_BLOCKS, - .fn_u = { .xts = cast6_xts_dec_8way } - }, { - .num_blocks = 1, - .fn_u = { .xts = cast6_xts_dec } - } } -}; - static int ecb_encrypt(struct skcipher_request *req) { return glue_ecb_req_128bit(&cast6_enc, req); @@ -164,48 +122,6 @@ static int ctr_crypt(struct skcipher_request *req) return glue_ctr_req_128bit(&cast6_ctr, req); } -struct cast6_xts_ctx { - struct cast6_ctx tweak_ctx; - struct cast6_ctx crypt_ctx; -}; - -static int xts_cast6_setkey(struct crypto_skcipher *tfm, const u8 *key, - unsigned int keylen) -{ - struct cast6_xts_ctx *ctx = crypto_skcipher_ctx(tfm); - int err; - - err = xts_verify_key(tfm, key, keylen); - if (err) - return err; - - /* first half of xts-key is for crypt */ - err = __cast6_setkey(&ctx->crypt_ctx, key, keylen / 2); - if (err) - return err; - - /* second half of xts-key is for tweak */ - return __cast6_setkey(&ctx->tweak_ctx, key + keylen / 2, keylen / 2); -} - -static int xts_encrypt(struct skcipher_request *req) -{ - struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); - struct cast6_xts_ctx *ctx = crypto_skcipher_ctx(tfm); - - return glue_xts_req_128bit(&cast6_enc_xts, req, __cast6_encrypt, - &ctx->tweak_ctx, &ctx->crypt_ctx, false); -} - -static int xts_decrypt(struct skcipher_request *req) -{ - struct crypto_skcipher *tfm = crypto_skcipher_reqtfm(req); - struct cast6_xts_ctx *ctx = crypto_skcipher_ctx(tfm); - - return glue_xts_req_128bit(&cast6_dec_xts, req, __cast6_encrypt, - &ctx->tweak_ctx, &ctx->crypt_ctx, true); -} - static struct skcipher_alg cast6_algs[] = { { .base.cra_name = "__ecb(cast6)", @@ -249,20 +165,6 @@ static struct skcipher_alg cast6_algs[] = { .setkey = cast6_setkey_skcipher, .encrypt = ctr_crypt, .decrypt = ctr_crypt, - }, { - .base.cra_name = "__xts(cast6)", - .base.cra_driver_name = "__xts-cast6-avx", - .base.cra_priority = 200, - .base.cra_flags = CRYPTO_ALG_INTERNAL, - .base.cra_blocksize = CAST6_BLOCK_SIZE, - .base.cra_ctxsize = sizeof(struct cast6_xts_ctx), - .base.cra_module = THIS_MODULE, - .min_keysize = 2 * CAST6_MIN_KEY_SIZE, - .max_keysize = 2 * CAST6_MAX_KEY_SIZE, - .ivsize = CAST6_BLOCK_SIZE, - .setkey = xts_cast6_setkey, - .encrypt = xts_encrypt, - .decrypt = xts_decrypt, }, }; -- 2.17.1