From patchwork Tue Mar 21 05:34:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Harsha, Harsha" X-Patchwork-Id: 13182270 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D32D3C6FD1D for ; Tue, 21 Mar 2023 05:35:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229612AbjCUFfg (ORCPT ); Tue, 21 Mar 2023 01:35:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229484AbjCUFff (ORCPT ); Tue, 21 Mar 2023 01:35:35 -0400 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2060.outbound.protection.outlook.com [40.107.93.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 321311F92F; Mon, 20 Mar 2023 22:35:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l2ILVMGg8vOp4TP9VMYTKFZp7G489xfNyhYIpTubEKqNNDc5ji8KwhnTe083iMj+jjVPQWvmdPDYLJIVkFX6yebYEvhwRjX2yUhfldFwSTA6lkpHyldOdlwJ7NJm4Oaa9bReyAw6ADNJbVAW+1KW0OP0cmTJXHxJ4tLay8IpzgKKwrjTLlgc0BexYzzbt/qyjmCMDcX+awLocuHTpZXfQXgqJzEJMc3xRcYGRi20TH71KLaMs8UA+IjhVAgtAByMuF1IyhQmWchASJPt2AG9BrjzTvOFuk0Pc+8vBqaIeQLhl6Bi9TC9qDzZzLb0vli0Fenk0qiAeOlIZOFBo2yK9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=em2WKHdphSWEBzT622szO6xsFNYNKys9bL7PGdNfLeo=; b=bN6Bvmsx7PHUjfn8fsoO/T5yLzpfGSpFGVGMwSo42kdDNdGEcGRs0WDmBHHmywI3atR34l8MayvTfF4C0ABOHX31EE5Od0Ypuiok1ZQxSo1BcqiIpwnnP+gb3v33ZWC26cAWw85kjQXJ3d7CJvO+GGmGQQfbJ1o1o/Nn6YU8ClrsnrJTTucb0g5A5ygcijDR0T3KLIQ5VF7YbvhvVSl/7UC8Ooel91Cp1PLhKHw80qkZnbCilDoeDdk1sJVb7+Oa3dFFcSyon8byzGXVCRRZI9sTp0Wb292/V7EtDKHW/B6COiv3WS40kEbme9sc3NjjKrMi3I9sdHAfKtqOD/Ix4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=gondor.apana.org.au smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=em2WKHdphSWEBzT622szO6xsFNYNKys9bL7PGdNfLeo=; b=MjNir0yx6kJNQZ4sYug0+H/Q9QkQRC4zL4pecvD7wlzbV0Sh/rI2cyyC2E+LwRxMRyn2miZUcjYuKyfXPkqairBRIrjWlJkRta3nIQw6lpkh3TcClXzyKnX/NjXrJBxR4Bvq4akevUpLbxdAYvL2DfPWLwMWIDggkW33vTVjdyE= Received: from DM6PR06CA0039.namprd06.prod.outlook.com (2603:10b6:5:54::16) by DM6PR12MB4105.namprd12.prod.outlook.com (2603:10b6:5:217::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Tue, 21 Mar 2023 05:35:27 +0000 Received: from DS1PEPF0000E64C.namprd02.prod.outlook.com (2603:10b6:5:54:cafe::c5) by DM6PR06CA0039.outlook.office365.com (2603:10b6:5:54::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37 via Frontend Transport; Tue, 21 Mar 2023 05:35:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0000E64C.mail.protection.outlook.com (10.167.18.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6178.30 via Frontend Transport; Tue, 21 Mar 2023 05:35:26 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Mar 2023 00:35:23 -0500 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Mar 2023 00:35:17 -0500 Received: from xhdharshah40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2375.34 via Frontend Transport; Tue, 21 Mar 2023 00:35:14 -0500 From: Harsha Harsha To: , , , , , CC: , , Harsha Harsha , Dhaval Shah Subject: [PATCH V2 1/4] firmware: xilinx: Get the SoC family specific data for crypto operation Date: Tue, 21 Mar 2023 11:04:43 +0530 Message-ID: <20230321053446.4303-2-harsha.harsha@amd.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20230321053446.4303-1-harsha.harsha@amd.com> References: <20230321053446.4303-1-harsha.harsha@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0000E64C:EE_|DM6PR12MB4105:EE_ X-MS-Office365-Filtering-Correlation-Id: e2872d9f-5c3a-4f45-b967-08db29ce1305 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: P9tgG33Q+4ln54j56GF+kxn0A2tDfoeolYKneL+pKAqqnCBtiDCVAYw07J24bCEjfwlLBHzp2ClEjbTS33vZTUxTzHUn9PgV3zrWvN6IIuHyL8pp48o32gc9xmbYZGIwBFQeKwDtTrUsXU678i+cpQBd9altPbzNKu+VFX2j0zkMdP+5/bDP8ntNqPH8mVgp8TQ0L2QyjD2EwElcdy22umgiHbEP/g3sY5cmn40HPmrDi5ZWNAUd6EcqdYaj81XAYB3WecGJRkQmh9Zq51KVeihE5cVyHaye3447rH/sLZC3xK47swd0JMALyaBIjsZD73E4zEz7P1bXdNLlZ1L/U2KuF1azUN0Dnh4bO9/3IscqFXenTDwypj0sgIkJJVrb34yXFKJmhiVDCx6Npbvy4Hc/jK5gfx0koP4hhBk4ZzRZWoqLtnQ2m+zrEdEGOfar4W/vEYgv8hbXc8bPTf7yycYDT6DXF+v5z30oRZ4ndtJpxdhHxyCkAqfk6nK0DQb50w3OrShyCqxYkJCZpO3FvV8UCdppIWwfBDeGyTjQMxDM1OlVG339DqGCyQds+iPypmHCuyt0azYwOJKDbjkFm60ppC9r8GmPiyWaB5xF7oSV6Zk3znEUFJB1lOgLzsCcAqglBiikFvaBzW/GFBHEn76irbdJDZV5BcUd+LfIawsXMSqLGIwClfpQrfQ0oX0lCjWK32knCpTyGSawEI/3ichzy8+E/sq35O8m4iZ2eXyWlDECQeYRkteQHbInWYfxa1D/oMEh8Umc84cjrlImlcp0kcXhJ1qc3tSBfVs1VFvPQyiAmnWlGoiBG0APIjQ4 X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(346002)(376002)(136003)(39860400002)(396003)(451199018)(40470700004)(46966006)(36840700001)(82310400005)(83380400001)(426003)(47076005)(2616005)(86362001)(82740400003)(336012)(81166007)(110136005)(356005)(36860700001)(40460700003)(8936002)(4326008)(8676002)(36756003)(2906002)(70206006)(70586007)(44832011)(41300700001)(40480700001)(316002)(5660300002)(26005)(478600001)(1076003)(186003)(54906003)(6666004)(15583001)(36900700001)(2101003)(358055004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2023 05:35:26.1263 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e2872d9f-5c3a-4f45-b967-08db29ce1305 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0000E64C.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4105 Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Get family type and sub-family type of SoC and on basis of that, return the data specific to the SoC which can be used for the required crypto operations. Signed-off-by: Harsha Harsha Co-developed-by: Dhaval Shah Signed-off-by: Dhaval Shah --- drivers/firmware/xilinx/zynqmp.c | 79 ++++++++++++++++++++++++++++ include/linux/firmware/xlnx-zynqmp.h | 34 ++++++++++++ 2 files changed, 113 insertions(+) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index 129f68d7a6f5..10ae42a2ae22 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -339,6 +339,8 @@ int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1, static u32 pm_api_version; static u32 pm_tz_version; +static u32 pm_family_code; +static u32 pm_sub_family_code; int zynqmp_pm_register_sgi(u32 sgi_num, u32 reset) { @@ -404,6 +406,78 @@ int zynqmp_pm_get_chipid(u32 *idcode, u32 *version) } EXPORT_SYMBOL_GPL(zynqmp_pm_get_chipid); +/** + * zynqmp_pm_get_family_info() - Get family info of platform + * @family: Returned family code value + * @subfamily: Returned sub-family code value + * + * Return: Returns status, either success or error+reason + */ +static int zynqmp_pm_get_family_info(u32 *family, u32 *subfamily) +{ + u32 ret_payload[PAYLOAD_ARG_CNT]; + u32 idcode; + int ret; + + /* Check is family or sub-family code already received */ + if (pm_family_code && pm_sub_family_code) { + *family = pm_family_code; + *subfamily = pm_sub_family_code; + return 0; + } + + ret = zynqmp_pm_invoke_fn(PM_GET_CHIPID, 0, 0, 0, 0, ret_payload); + if (ret < 0) + return ret; + + idcode = ret_payload[1]; + pm_family_code = FIELD_GET(GENMASK(FAMILY_CODE_MSB, FAMILY_CODE_LSB), + idcode); + pm_sub_family_code = FIELD_GET(GENMASK(SUB_FAMILY_CODE_MSB, + SUB_FAMILY_CODE_LSB), idcode); + *family = pm_family_code; + *subfamily = pm_sub_family_code; + + return 0; +} + +/** + * xlnx_get_crypto_dev_data() - Get crypto dev data of platform + * @feature_map: List of available feature map of all platform + * + * Return: Returns crypto dev data, either address crypto dev or ERR PTR + */ +void *xlnx_get_crypto_dev_data(struct xlnx_feature *feature_map) +{ + struct xlnx_feature *feature; + u32 v, api_id; + int ret; + + ret = zynqmp_pm_get_api_version(&v); + if (ret) + return ERR_PTR(ret); + + feature = feature_map; + for (; feature->family; feature++) { + if (feature->family == pm_family_code && + (feature->subfamily == ALL_SUB_FAMILY_CODE || + feature->subfamily == pm_sub_family_code)) { + api_id = FIELD_GET(API_ID_MASK, feature->feature_id); + if (feature->family == ZYNQMP_FAMILY_CODE) { + ret = zynqmp_pm_feature(api_id); + if (ret < 0) + return ERR_PTR(ret); + } else { + return ERR_PTR(-ENODEV); + } + + return feature->data; + } + } + return ERR_PTR(-ENODEV); +} +EXPORT_SYMBOL_GPL(xlnx_get_crypto_dev_data); + /** * zynqmp_pm_get_trustzone_version() - Get secure trustzone firmware version * @version: Returned version value @@ -1855,6 +1929,11 @@ static int zynqmp_firmware_probe(struct platform_device *pdev) pr_info("%s Platform Management API v%d.%d\n", __func__, pm_api_version >> 16, pm_api_version & 0xFFFF); + /* Get the Family code and sub family code of platform */ + ret = zynqmp_pm_get_family_info(&pm_family_code, &pm_sub_family_code); + if (ret < 0) + return ret; + /* Check trustzone version number */ ret = zynqmp_pm_get_trustzone_version(&pm_tz_version); if (ret) diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index b986e267d149..cd5acfa29cbc 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -34,6 +34,20 @@ /* PM API versions */ #define PM_API_VERSION_2 2 +#define ZYNQMP_FAMILY_CODE 0x23 + +/* When all subfamily of platform need to support */ +#define ALL_SUB_FAMILY_CODE 0 +#define VERSAL_SUB_FAMILY_CODE 1 +#define VERSALNET_SUB_FAMILY_CODE 3 + +#define FAMILY_CODE_LSB 21 +#define FAMILY_CODE_MSB 27 +#define SUB_FAMILY_CODE_LSB 19 +#define SUB_FAMILY_CODE_MSB 20 + +#define API_ID_MASK GENMASK(7, 0) + /* ATF only commands */ #define TF_A_PM_REGISTER_SGI 0xa04 #define PM_GET_TRUSTZONE_VERSION 0xa03 @@ -475,12 +489,27 @@ struct zynqmp_pm_query_data { u32 arg3; }; +/** + * struct xlnx_feature - Feature data + * @family: Family code of platform + * @subfamily: Subfamily code of platform + * @feature_id: Feature id of module + * @data: Collection of all supported platform data + */ +struct xlnx_feature { + u32 family; + u32 subfamily; + u32 feature_id; + void *data; +}; + int zynqmp_pm_invoke_fn(u32 pm_api_id, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 *ret_payload); #if IS_REACHABLE(CONFIG_ZYNQMP_FIRMWARE) int zynqmp_pm_get_api_version(u32 *version); int zynqmp_pm_get_chipid(u32 *idcode, u32 *version); +void *xlnx_get_crypto_dev_data(struct xlnx_feature *feature_map); int zynqmp_pm_query_data(struct zynqmp_pm_query_data qdata, u32 *out); int zynqmp_pm_clock_enable(u32 clock_id); int zynqmp_pm_clock_disable(u32 clock_id); @@ -561,6 +590,11 @@ static inline int zynqmp_pm_get_chipid(u32 *idcode, u32 *version) return -ENODEV; } +static inline void *xlnx_get_crypto_dev_data(struct xlnx_feature *feature_map) +{ + return ERR_PTR(-ENODEV); +} + static inline int zynqmp_pm_query_data(struct zynqmp_pm_query_data qdata, u32 *out) { From patchwork Tue Mar 21 05:34:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Harsha, Harsha" X-Patchwork-Id: 13182271 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0DE7C74A5B for ; Tue, 21 Mar 2023 05:35:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229949AbjCUFfh (ORCPT ); Tue, 21 Mar 2023 01:35:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229458AbjCUFfg (ORCPT ); Tue, 21 Mar 2023 01:35:36 -0400 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2057.outbound.protection.outlook.com [40.107.102.57]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3EA620067; Mon, 20 Mar 2023 22:35:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c2TZceIACovO4U9L+T+KyTsUW8+hzaAUAsp+Irwx+UnSz81G8o7h7fP7Wc6IRgNPVYqiahQcq4vxI52adA9x5QKC6EpPtVMnW4tma61XHt59QnBhzFoQRvdHK2cWM6h7v4vkyoo1BGfz1LlsbMmyer2XvHz2YIwAhu0mpxVJljDtwzHznmwdhsd++3Ty6cjQ52UnUtBnyes3fPeS+gpmcRVRiYEq+Le2lEtgE4bRq2pnzIykwDAjBpsBHsSVm0NmrIyEm3M8YMZ6f5ppP6pcm5tg07Zx0xgSITXxEqQxE4gPZkoV6GksJC6+GHjZZHqud22ecx4IY3ln1ZS/gkrm0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=8loD21eoObdxkdy1USh64SVrdam9+M2IedaBGHLJ0kI=; b=PQVgTp8OE6AI2gfT6Hh9WvebDBw5BCaHxo0uXnqPl1lPbMU/37U0fD2c4j3jiUZ+C3bSRc954ZvKKMLqDiKQwA3rxm4Dp0QA5F82My8yOYVEeLHQ9NrE3we+5Ytisk3vZbOrvVIewGDwTI33Kd8lyyr7JHq2yrKnuCTPnhtYZWkTWij0rWlu3oEEItfDJWWn7SMFVPYgB17/g5vIBEMer88/yHffa8E/kWpNqFZQCsRdMV7Fax89ziPK6iZsv+obRwCIoETlrIB1D53xLQklt9eSlrNYo/XyyW3LE4LO9pwukhzo+6CVtBxgwdG7xeE1zGGNNmFfpoZBR3QR3px+fA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=gondor.apana.org.au smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8loD21eoObdxkdy1USh64SVrdam9+M2IedaBGHLJ0kI=; b=JQEQQfn9WPMw3JJCJHzb2Usvkxie59nBpY1PixbfdYoRdX6LwB0qxFBzeHfq0EJ2Sjr67Xjk/US//KeIxgODDocWZdrSeACmVwWZxKRVuG6eZt56K8+NmKWvsye47k7Wzft3zYMXlot5A3+A3xHPlyQYAAR25HRQeNYwDSAyV+A= Received: from DM6PR06CA0057.namprd06.prod.outlook.com (2603:10b6:5:54::34) by CY8PR12MB9034.namprd12.prod.outlook.com (2603:10b6:930:76::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Tue, 21 Mar 2023 05:35:29 +0000 Received: from DS1PEPF0000E64C.namprd02.prod.outlook.com (2603:10b6:5:54:cafe::64) by DM6PR06CA0057.outlook.office365.com (2603:10b6:5:54::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37 via Frontend Transport; Tue, 21 Mar 2023 05:35:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0000E64C.mail.protection.outlook.com (10.167.18.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6178.30 via Frontend Transport; Tue, 21 Mar 2023 05:35:28 +0000 Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Mar 2023 00:35:28 -0500 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Mar 2023 00:35:27 -0500 Received: from xhdharshah40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2375.34 via Frontend Transport; Tue, 21 Mar 2023 00:35:18 -0500 From: Harsha Harsha To: , , , , , CC: , , Harsha Harsha , Dhaval Shah Subject: [PATCH V2 2/4] firmware: xilinx: Add ZynqMP RSA API for RSA encrypt/decrypt operation Date: Tue, 21 Mar 2023 11:04:44 +0530 Message-ID: <20230321053446.4303-3-harsha.harsha@amd.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20230321053446.4303-1-harsha.harsha@amd.com> References: <20230321053446.4303-1-harsha.harsha@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0000E64C:EE_|CY8PR12MB9034:EE_ X-MS-Office365-Filtering-Correlation-Id: 6a27238f-3e0a-40c8-90c3-08db29ce14a4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +Cm9wWpJMcJstTzcY3MoCJP9Br6GdlpCm0JMlpcEexSlNZS581tx2+jIRNxLmmF24bNDpgUBI/mVNn0nf6vY3V1xWAOSRtUsL3gNGiqqP7w6sEpJEiikrAh1q6LF/RoclUL3dKkjWt/2KMhaDI4hAvrQYr8Ve79wOwKeNU0V9pAT/Mf8LN33DXHQLayd4Es17MJvsIlsE8DScgr53P9Txx5ZjOM566QRH+pUR87DJ6HFxTW3ua6ejBATtnUFEx9g96Ec2+FXZ5CKEUaqGn928aJuGwt1g3uuQTQ7qCKESFR1R0+kXeyq4imHMDUIEMD2XoQdath3u+PoeYHOJMcQLn3GgA6k+B1Ao09+obhfaZtLzrAxvaztlzgn+OYwncYdc35+pi13zaWjs8pts8t39PzdTxnIvCBm/9DBoiY5+dVbQzu5Tr9irlyAnHg9BliXGRau8d/4uI+3c+8LjoVsbM0RTgV4cpUgE2r0drqDYXxZOmC57u5erJmTHzqjF2/Zm4CZ4HwKzmU13hFZ7rMm0LwT7AZUY+fXIxcMYeYiPTZyGD9uRKDXolm4Q2km0C5fo5vn4svwXaw51QxTvRpcrg7E2/8+0hqGDcVc2mZu8y8hdrInz205BR3etCV/SLzRid1cGnCTGdtJeDg699HHrmHYOoL4pjEZCo2/U1bvRk/QsatAOreWqZfxT4B47koMYI6wstxvjLaR8CYkNPLkOacj21UHF48xnO1KXFj5LMwVcrpd9oVFtRv7rSUjBNC+ X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(396003)(376002)(136003)(346002)(451199018)(36840700001)(46966006)(40470700004)(110136005)(336012)(1076003)(2616005)(26005)(47076005)(426003)(6666004)(8676002)(4326008)(316002)(83380400001)(186003)(70206006)(70586007)(54906003)(478600001)(8936002)(5660300002)(82740400003)(44832011)(81166007)(2906002)(41300700001)(36860700001)(356005)(82310400005)(86362001)(36756003)(40480700001)(40460700003)(2101003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2023 05:35:28.8606 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6a27238f-3e0a-40c8-90c3-08db29ce14a4 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0000E64C.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB9034 Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Add zynqmp_pm_rsa API in the ZynqMP firmware to encrypt and decrypt the datai using RSA hardware engine for ZynqMP. Signed-off-by: Harsha Harsha Co-developed-by: Dhaval Shah Signed-off-by: Dhaval Shah --- drivers/firmware/xilinx/zynqmp.c | 21 +++++++++++++++++++++ include/linux/firmware/xlnx-zynqmp.h | 8 ++++++++ 2 files changed, 29 insertions(+) diff --git a/drivers/firmware/xilinx/zynqmp.c b/drivers/firmware/xilinx/zynqmp.c index 10ae42a2ae22..d6f73823bab4 100644 --- a/drivers/firmware/xilinx/zynqmp.c +++ b/drivers/firmware/xilinx/zynqmp.c @@ -1426,6 +1426,27 @@ int zynqmp_pm_sha_hash(const u64 address, const u32 size, const u32 flags) } EXPORT_SYMBOL_GPL(zynqmp_pm_sha_hash); +/** + * zynqmp_pm_rsa - Access RSA hardware to encrypt/decrypt the data with RSA. + * @address: Address of the data + * @size: Size of the data. + * @flags: + * BIT(0) - Encryption/Decryption + * 0 - RSA decryption with private key + * 1 - RSA encryption with public key. + * + * Return: Returns status, either success or error code. + */ +int zynqmp_pm_rsa(const u64 address, const u32 size, const u32 flags) +{ + u32 lower_32_bits = lower_32_bits(address); + u32 upper_32_bits = upper_32_bits(address); + + return zynqmp_pm_invoke_fn(PM_SECURE_RSA, upper_32_bits, lower_32_bits, + size, flags, NULL); +} +EXPORT_SYMBOL_GPL(zynqmp_pm_rsa); + /** * zynqmp_pm_register_notifier() - PM API for register a subsystem * to be notified about specific diff --git a/include/linux/firmware/xlnx-zynqmp.h b/include/linux/firmware/xlnx-zynqmp.h index cd5acfa29cbc..8666b0c3cd66 100644 --- a/include/linux/firmware/xlnx-zynqmp.h +++ b/include/linux/firmware/xlnx-zynqmp.h @@ -117,6 +117,7 @@ enum pm_api_id { PM_FPGA_GET_STATUS = 23, PM_GET_CHIPID = 24, PM_SECURE_SHA = 26, + PM_SECURE_RSA = 27, PM_PINCTRL_REQUEST = 28, PM_PINCTRL_RELEASE = 29, PM_PINCTRL_GET_FUNCTION = 30, @@ -542,6 +543,7 @@ int zynqmp_pm_set_requirement(const u32 node, const u32 capabilities, const enum zynqmp_pm_request_ack ack); int zynqmp_pm_aes_engine(const u64 address, u32 *out); int zynqmp_pm_sha_hash(const u64 address, const u32 size, const u32 flags); +int zynqmp_pm_rsa(const u64 address, const u32 size, const u32 flags); int zynqmp_pm_fpga_load(const u64 address, const u32 size, const u32 flags); int zynqmp_pm_fpga_get_status(u32 *value); int zynqmp_pm_write_ggs(u32 index, u32 value); @@ -744,6 +746,12 @@ static inline int zynqmp_pm_sha_hash(const u64 address, const u32 size, return -ENODEV; } +static inline int zynqmp_pm_rsa(const u64 address, const u32 size, + const u32 flags) +{ + return -ENODEV; +} + static inline int zynqmp_pm_fpga_load(const u64 address, const u32 size, const u32 flags) { From patchwork Tue Mar 21 05:34:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Harsha, Harsha" X-Patchwork-Id: 13182273 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 765DAC7619A for ; Tue, 21 Mar 2023 05:35:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230045AbjCUFfq (ORCPT ); Tue, 21 Mar 2023 01:35:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229989AbjCUFfi (ORCPT ); Tue, 21 Mar 2023 01:35:38 -0400 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2063.outbound.protection.outlook.com [40.107.220.63]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57A4920559; Mon, 20 Mar 2023 22:35:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mG/P5O4+z91Oy+gH3VKIc7Pt2CJY42GVyty17cxcyhGr2upiXPoxCHgC2zfGtZV+iSXLTlao9XBtDTii0NyrVi6K0+Z81xpTtsJju6rVg/zR+lvKvX/2TYOc+FzMglvRUd4YknKgNEHM0cbtxraJX470/sRyRHJd6HxQiP/vKVCL6Qpi4YansBAMA4puUzEDAYgMYPKOFuz5wUnyIV+hbyaBXs4HPvmlvZF2K/D9+PraIcQENQ19j8CqCXO9hZquzFTxEPTsaxaOr6OZVas30uRc6fsuHNuOEz8sQ4OWPGzAlBg5uxICgnKAd7WdNidlHZkdzlYCbSKEXKrHya1kKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=luLrKhY+4LQ/++tLWeZAjgoYcJbIL/eYulsoSYKf8+k=; b=VaVzdZa7//oy+tXT4w/Sbu65CUKI3S8iSm81zmvrPBEGX1DHyHy4CImG3JqJOW4QxtzreOhQw4r2bCOpouOEqzo9GnDuekK42j0RpjcCRAJnk3OZHNYF1O+o9534c2rrPGx8ws9qG29PGVR8jDlzDytiY9VCZce9+55yJ6q4PZASUYRlOJcjB+B2dG9f02sOLbBL2QcZWkXq7tbj8sh57CaFQUMnAVsqA23cjZE++B5+YyxgyvmkMwjGaFMgQl7TLAyYNVr3qQvTYw3IXPYng/OCkyijYzRTPy94bLYWp6NYzL/saBK/fRbpy5yDj9+sFRHNRMaGFWGtGsUYbGka6g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=gondor.apana.org.au smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=luLrKhY+4LQ/++tLWeZAjgoYcJbIL/eYulsoSYKf8+k=; b=JKypxasKMdqQwz6uwxViR+65ik5nUVUNq+aHxsf6IeQenENxuv3Hk0z/W1MAv114GX2XIhw08DBSUplZrIwRPVkZd0PUbSk9t/S2TlAGwSaBKpvRZn5xr9V3db+sM0O/YUT2G3UXvNRdP8Kgn3kPWdSA3sNkcHVO8ATxyyjoQQM= Received: from DM6PR06CA0057.namprd06.prod.outlook.com (2603:10b6:5:54::34) by CY8PR12MB7338.namprd12.prod.outlook.com (2603:10b6:930:52::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Tue, 21 Mar 2023 05:35:32 +0000 Received: from DS1PEPF0000E64C.namprd02.prod.outlook.com (2603:10b6:5:54:cafe::97) by DM6PR06CA0057.outlook.office365.com (2603:10b6:5:54::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37 via Frontend Transport; Tue, 21 Mar 2023 05:35:31 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0000E64C.mail.protection.outlook.com (10.167.18.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6178.30 via Frontend Transport; Tue, 21 Mar 2023 05:35:31 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Mar 2023 00:35:31 -0500 Received: from xhdharshah40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2375.34 via Frontend Transport; Tue, 21 Mar 2023 00:35:28 -0500 From: Harsha Harsha To: , , , , , CC: , , Harsha Harsha , Dhaval Shah Subject: [PATCH V2 3/4] crypto: xilinx: Add ZynqMP RSA driver Date: Tue, 21 Mar 2023 11:04:45 +0530 Message-ID: <20230321053446.4303-4-harsha.harsha@amd.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20230321053446.4303-1-harsha.harsha@amd.com> References: <20230321053446.4303-1-harsha.harsha@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0000E64C:EE_|CY8PR12MB7338:EE_ X-MS-Office365-Filtering-Correlation-Id: 377c9722-4fa6-4636-797b-08db29ce1675 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KZsRngS6ObX2Ve1yEOHSwXiRxs3ynlkUfjEafNS/keZYNS/3gnX0lL/WbM85m3Fz8G/J1RksRi/QPhqKLEHxh028IvIyZ5fR/vPNeVui6nRJCauwP1BhBgEFOKQDWcqUoPC8t7w5Bbg67/e+Yl1/7tpC1duT8iUa2FurqniUqdi5KCybFBTBtF1FyehjErUOCaFOR802A/+u3vJr2mI1VbRE5f3AV5hV1f880300dLI6JIk9tlEJ7re+mKFvzF04NOELkqYaBQsZtKuf7E5gY3QebBQJHCzM0NyET2Hm+pMeSZOlt+K3x/QKMvq7j4KAtWAVyOL0eAq5AT2wSYTaK9RCrbAB5D5H2DmNUuMXTdembXJZp68Keg1pTmxbGUWitKbYsG/7Jw3lSw8rmvSt3laEIPZzO8XM2f1E36rRmWYCoD9ybfh9j8TFyrP1RvYGaeSHkVWsuXv4syvz70waJAl9t6pUimR2cFIYabxJ8ifLZfun/eU+062G3Qhib9Q7FojAfup2Ls8nxF+/BQVwuoZrwe6K05IuFwCCk9Iy7ZTq9g9U+V2ylD1Py2P7+SCqIJa/G1kQq8JPXazVb2gxeUPUFBc+a1UOFYzZE0DREQNAEiS9cKgjU1W8/HqgEpBBvWgMQfivkflJas+Y8jSI3SMbmkC8xNvACVCXQjk78BfmKkcuFwjEOE4sIKA/RY76+RQDDE25m6AMqV9sVc2MQQwlan0xkZ9IqeKhPXHHqNl/7SFdAT3ChFWZ/JK1x9vy X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(396003)(39860400002)(346002)(136003)(376002)(451199018)(46966006)(40470700004)(36840700001)(8936002)(30864003)(5660300002)(41300700001)(36860700001)(4326008)(40480700001)(356005)(44832011)(86362001)(82310400005)(36756003)(40460700003)(82740400003)(81166007)(2906002)(54906003)(83380400001)(1076003)(478600001)(336012)(426003)(6666004)(47076005)(186003)(26005)(8676002)(70206006)(70586007)(2616005)(110136005)(316002)(36900700001)(2101003);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2023 05:35:31.9075 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 377c9722-4fa6-4636-797b-08db29ce1675 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0000E64C.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7338 Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Adds RSA driver support for the ZynqMP SoC. ZynqMP SoC has RSA engine used for encryption and decryption. The flow is RSA encrypt/decrypt request from Userspace -> ZynqMP RSA driver -> Firmware driver -> RSA Hardware Engine RSA Hardware engine supports 2048, 3072 and 4096 keysizes are supported. So RSA operations using these key sizes are done by hardware engine. Software fallback is being used for other key sizes. Signed-off-by: Harsha Harsha Co-developed-by: Dhaval Shah Signed-off-by: Dhaval Shah --- drivers/crypto/Kconfig | 10 + drivers/crypto/xilinx/Makefile | 1 + drivers/crypto/xilinx/xilinx-rsa.c | 490 +++++++++++++++++++++++++++++ 3 files changed, 501 insertions(+) create mode 100644 drivers/crypto/xilinx/xilinx-rsa.c diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 3b2516d1433f..a421a63fcf68 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -685,6 +685,16 @@ config CRYPTO_DEV_ROCKCHIP_DEBUG This will create /sys/kernel/debug/rk3288_crypto/stats for displaying the number of requests per algorithm and other internal stats. +config CRYPTO_DEV_XILINX_RSA + tristate "Support for Xilinx ZynqMP RSA hardware accelerator" + depends on ARCH_ZYNQMP || COMPILE_TEST + select CRYPTO_ENGINE + select CRYPTO_AKCIPHER + help + Xilinx processors have RSA hardware accelerator used for signature + generation and verification. This driver interfaces with RSA + hardware accelerator. Select this if you want to use the ZynqMP + module for RSA algorithms. config CRYPTO_DEV_ZYNQMP_AES tristate "Support for Xilinx ZynqMP AES hw accelerator" diff --git a/drivers/crypto/xilinx/Makefile b/drivers/crypto/xilinx/Makefile index 730feff5b5f2..819d82486a5d 100644 --- a/drivers/crypto/xilinx/Makefile +++ b/drivers/crypto/xilinx/Makefile @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0-only obj-$(CONFIG_CRYPTO_DEV_ZYNQMP_AES) += zynqmp-aes-gcm.o obj-$(CONFIG_CRYPTO_DEV_ZYNQMP_SHA3) += zynqmp-sha.o +obj-$(CONFIG_CRYPTO_DEV_XILINX_RSA) += xilinx-rsa.o diff --git a/drivers/crypto/xilinx/xilinx-rsa.c b/drivers/crypto/xilinx/xilinx-rsa.c new file mode 100644 index 000000000000..8c37bf2da449 --- /dev/null +++ b/drivers/crypto/xilinx/xilinx-rsa.c @@ -0,0 +1,490 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2022 - 2023, Advanced Micro Devices, Inc. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define XILINX_DMA_BIT_MASK 32U +#define XILINX_RSA_MAX_KEY_SIZE 1024 +#define XILINX_RSA_BLOCKSIZE 64 + +/* Key size in bytes */ +#define XSECURE_RSA_2048_KEY_SIZE (2048U / 8U) +#define XSECURE_RSA_3072_KEY_SIZE (3072U / 8U) +#define XSECURE_RSA_4096_KEY_SIZE (4096U / 8U) + +enum xilinx_akcipher_op { + XILINX_RSA_DECRYPT = 0, + XILINX_RSA_ENCRYPT, + XILINX_RSA_SIGN, + XILINX_RSA_VERIFY +}; + +struct xilinx_rsa_drv_ctx { + struct akcipher_alg alg; + struct device *dev; + struct crypto_engine *engine; + int (*xilinx_rsa_xcrypt)(struct akcipher_request *req); +}; + +/* + * 1st variable must be of struct crypto_engine_ctx type + */ +struct xilinx_rsa_tfm_ctx { + struct crypto_engine_ctx engine_ctx; + struct device *dev; + struct crypto_akcipher *fbk_cipher; + u8 *e_buf; + u8 *n_buf; + u8 *d_buf; + unsigned int key_len; /* in bits */ + unsigned int e_len; + unsigned int n_len; + unsigned int d_len; +}; + +struct xilinx_rsa_req_ctx { + enum xilinx_akcipher_op op; +}; + +static int zynqmp_rsa_xcrypt(struct akcipher_request *req) +{ + struct xilinx_rsa_req_ctx *rq_ctx = akcipher_request_ctx(req); + unsigned int len, offset, diff = req->dst_len - req->src_len; + struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req); + struct xilinx_rsa_tfm_ctx *tctx = akcipher_tfm_ctx(tfm); + dma_addr_t dma_addr; + char *kbuf, *buf; + size_t dma_size; + u8 padding = 0; + int ret; + + if (rq_ctx->op == XILINX_RSA_ENCRYPT) { + padding = tctx->e_len % 2; + buf = tctx->e_buf; + len = tctx->e_len; + } else { + buf = tctx->d_buf; + len = tctx->d_len; + } + + dma_size = req->dst_len + tctx->n_len + len + padding; + offset = dma_size - len; + + kbuf = dma_alloc_coherent(tctx->dev, dma_size, &dma_addr, GFP_KERNEL); + if (!kbuf) + return -ENOMEM; + + scatterwalk_map_and_copy(kbuf + diff, req->src, 0, req->src_len, 0); + memcpy(kbuf + req->dst_len, tctx->n_buf, tctx->n_len); + + memcpy(kbuf + offset, buf, len); + + ret = zynqmp_pm_rsa(dma_addr, tctx->n_len, rq_ctx->op); + if (ret < 0) + goto out; + + sg_copy_from_buffer(req->dst, sg_nents(req->dst), kbuf, req->dst_len); + +out: + dma_free_coherent(tctx->dev, dma_size, kbuf, dma_addr); + + return ret; +} + +static int xilinx_rsa_decrypt(struct akcipher_request *req) +{ + struct xilinx_rsa_req_ctx *rctx = akcipher_request_ctx(req); + struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req); + struct akcipher_alg *alg = crypto_akcipher_alg(tfm); + struct xilinx_rsa_drv_ctx *drv_ctx; + + rctx->op = XILINX_RSA_DECRYPT; + drv_ctx = container_of(alg, struct xilinx_rsa_drv_ctx, alg); + + return crypto_transfer_akcipher_request_to_engine(drv_ctx->engine, req); +} + +static int xilinx_rsa_encrypt(struct akcipher_request *req) +{ + struct xilinx_rsa_req_ctx *rctx = akcipher_request_ctx(req); + struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req); + struct akcipher_alg *alg = crypto_akcipher_alg(tfm); + struct xilinx_rsa_drv_ctx *drv_ctx; + + rctx->op = XILINX_RSA_ENCRYPT; + drv_ctx = container_of(alg, struct xilinx_rsa_drv_ctx, alg); + + return crypto_transfer_akcipher_request_to_engine(drv_ctx->engine, req); +} + +static unsigned int xilinx_rsa_max_size(struct crypto_akcipher *tfm) +{ + struct xilinx_rsa_tfm_ctx *tctx = akcipher_tfm_ctx(tfm); + + return tctx->n_len; +} + +static inline int xilinx_copy_and_save_keypart(u8 **kpbuf, unsigned int *kplen, + const u8 *buf, size_t sz) +{ + int nskip; + + for (nskip = 0; nskip < sz; nskip++) + if (buf[nskip]) + break; + + *kplen = sz - nskip; + *kpbuf = kmemdup(buf + nskip, *kplen, GFP_KERNEL); + if (!*kpbuf) + return -ENOMEM; + + return 0; +} + +static int xilinx_check_key_length(unsigned int len) +{ + if (len < 8 || len > 4096) + return -EINVAL; + return 0; +} + +static void xilinx_rsa_free_key_bufs(struct xilinx_rsa_tfm_ctx *ctx) +{ + /* Clean up old key data */ + kfree_sensitive(ctx->e_buf); + ctx->e_buf = NULL; + ctx->e_len = 0; + kfree_sensitive(ctx->n_buf); + ctx->n_buf = NULL; + ctx->n_len = 0; + kfree_sensitive(ctx->d_buf); + ctx->d_buf = NULL; + ctx->d_len = 0; +} + +static int xilinx_rsa_setkey(struct crypto_akcipher *tfm, const void *key, + unsigned int keylen, bool private) +{ + struct xilinx_rsa_tfm_ctx *tctx = akcipher_tfm_ctx(tfm); + struct rsa_key raw_key; + int ret; + + if (private) + ret = rsa_parse_priv_key(&raw_key, key, keylen); + else + ret = rsa_parse_pub_key(&raw_key, key, keylen); + if (ret) + goto n_key; + + ret = xilinx_copy_and_save_keypart(&tctx->n_buf, &tctx->n_len, + raw_key.n, raw_key.n_sz); + if (ret) + goto key_err; + + /* convert to bits */ + tctx->key_len = tctx->n_len << 3; + if (xilinx_check_key_length(tctx->key_len)) { + ret = -EINVAL; + goto key_err; + } + + ret = xilinx_copy_and_save_keypart(&tctx->e_buf, &tctx->e_len, + raw_key.e, raw_key.e_sz); + if (ret) + goto key_err; + + if (private) { + ret = xilinx_copy_and_save_keypart(&tctx->d_buf, &tctx->d_len, + raw_key.d, raw_key.d_sz); + if (ret) + goto key_err; + } + + return 0; + +key_err: + xilinx_rsa_free_key_bufs(tctx); +n_key: + return ret; +} + +static int xilinx_rsa_set_priv_key(struct crypto_akcipher *tfm, const void *key, + unsigned int keylen) +{ + struct xilinx_rsa_tfm_ctx *tfm_ctx = akcipher_tfm_ctx(tfm); + int ret; + + tfm_ctx->fbk_cipher->base.crt_flags &= ~CRYPTO_TFM_REQ_MASK; + tfm_ctx->fbk_cipher->base.crt_flags |= (tfm->base.crt_flags & + CRYPTO_TFM_REQ_MASK); + + ret = crypto_akcipher_set_priv_key(tfm_ctx->fbk_cipher, key, keylen); + if (ret) + return ret; + + return xilinx_rsa_setkey(tfm, key, keylen, true); +} + +static int xilinx_rsa_set_pub_key(struct crypto_akcipher *tfm, const void *key, + unsigned int keylen) +{ + struct xilinx_rsa_tfm_ctx *tfm_ctx = akcipher_tfm_ctx(tfm); + int ret; + + tfm_ctx->fbk_cipher->base.crt_flags &= ~CRYPTO_TFM_REQ_MASK; + tfm_ctx->fbk_cipher->base.crt_flags |= (tfm->base.crt_flags & + CRYPTO_TFM_REQ_MASK); + + ret = crypto_akcipher_set_pub_key(tfm_ctx->fbk_cipher, key, keylen); + if (ret) + return ret; + + return xilinx_rsa_setkey(tfm, key, keylen, false); +} + +static int xilinx_fallback_check(struct xilinx_rsa_tfm_ctx *tfm_ctx, + struct akcipher_request *areq) +{ + int need_fallback = 0; + + if (tfm_ctx->n_len != XSECURE_RSA_2048_KEY_SIZE && + tfm_ctx->n_len != XSECURE_RSA_3072_KEY_SIZE && + tfm_ctx->n_len != XSECURE_RSA_4096_KEY_SIZE) + need_fallback = 1; + + if (areq->src_len > areq->dst_len) + need_fallback = 1; + + return need_fallback; +} + +static int handle_rsa_req(struct crypto_engine *engine, + void *req) +{ + struct akcipher_request *areq = container_of(req, + struct akcipher_request, + base); + struct crypto_akcipher *akcipher = crypto_akcipher_reqtfm(req); + struct akcipher_alg *cipher_alg = crypto_akcipher_alg(akcipher); + struct xilinx_rsa_tfm_ctx *tfm_ctx = akcipher_tfm_ctx(akcipher); + struct xilinx_rsa_req_ctx *rq_ctx = akcipher_request_ctx(areq); + struct akcipher_request *subreq = akcipher_request_ctx(req); + struct xilinx_rsa_drv_ctx *drv_ctx; + int need_fallback, err; + + drv_ctx = container_of(cipher_alg, struct xilinx_rsa_drv_ctx, alg); + + need_fallback = xilinx_fallback_check(tfm_ctx, areq); + if (need_fallback) { + akcipher_request_set_tfm(subreq, tfm_ctx->fbk_cipher); + + akcipher_request_set_callback(subreq, areq->base.flags, + NULL, NULL); + akcipher_request_set_crypt(subreq, areq->src, areq->dst, + areq->src_len, areq->dst_len); + + if (rq_ctx->op == XILINX_RSA_ENCRYPT) + err = crypto_akcipher_encrypt(subreq); + else if (rq_ctx->op == XILINX_RSA_DECRYPT) + err = crypto_akcipher_decrypt(subreq); + } else { + err = drv_ctx->xilinx_rsa_xcrypt(areq); + } + + crypto_finalize_akcipher_request(engine, areq, err); + + return 0; +} + +static int xilinx_rsa_init(struct crypto_akcipher *tfm) +{ + struct xilinx_rsa_tfm_ctx *tfm_ctx = + (struct xilinx_rsa_tfm_ctx *)akcipher_tfm_ctx(tfm); + struct akcipher_alg *cipher_alg = crypto_akcipher_alg(tfm); + struct xilinx_rsa_drv_ctx *drv_ctx; + + drv_ctx = container_of(cipher_alg, struct xilinx_rsa_drv_ctx, alg); + tfm_ctx->dev = drv_ctx->dev; + + tfm_ctx->engine_ctx.op.do_one_request = handle_rsa_req; + tfm_ctx->engine_ctx.op.prepare_request = NULL; + tfm_ctx->engine_ctx.op.unprepare_request = NULL; + tfm_ctx->fbk_cipher = crypto_alloc_akcipher(drv_ctx->alg.base.cra_name, + 0, + CRYPTO_ALG_NEED_FALLBACK); + if (IS_ERR(tfm_ctx->fbk_cipher)) { + pr_err("%s() Error: failed to allocate fallback for %s\n", + __func__, drv_ctx->alg.base.cra_name); + return PTR_ERR(tfm_ctx->fbk_cipher); + } + + akcipher_set_reqsize(tfm, sizeof(struct xilinx_rsa_req_ctx)); + + return 0; +} + +static void xilinx_rsa_exit(struct crypto_akcipher *tfm) +{ + struct xilinx_rsa_tfm_ctx *tfm_ctx = + (struct xilinx_rsa_tfm_ctx *)akcipher_tfm_ctx(tfm); + + xilinx_rsa_free_key_bufs(tfm_ctx); + + if (tfm_ctx->fbk_cipher) { + crypto_free_akcipher(tfm_ctx->fbk_cipher); + tfm_ctx->fbk_cipher = NULL; + } + memzero_explicit(tfm_ctx, sizeof(struct xilinx_rsa_tfm_ctx)); +} + +struct xilinx_rsa_drv_ctx zynqmp_rsa_drv_ctx = { + .xilinx_rsa_xcrypt = zynqmp_rsa_xcrypt, + .alg = { + .init = xilinx_rsa_init, + .set_pub_key = xilinx_rsa_set_pub_key, + .set_priv_key = xilinx_rsa_set_priv_key, + .max_size = xilinx_rsa_max_size, + .decrypt = xilinx_rsa_decrypt, + .encrypt = xilinx_rsa_encrypt, + .sign = xilinx_rsa_decrypt, + .verify = xilinx_rsa_encrypt, + .exit = xilinx_rsa_exit, + .base = { + .cra_name = "rsa", + .cra_driver_name = "zynqmp-rsa", + .cra_priority = 200, + .cra_flags = CRYPTO_ALG_TYPE_AKCIPHER | + CRYPTO_ALG_ASYNC | + CRYPTO_ALG_KERN_DRIVER_ONLY | + CRYPTO_ALG_ALLOCATES_MEMORY | + CRYPTO_ALG_NEED_FALLBACK, + .cra_blocksize = XILINX_RSA_BLOCKSIZE, + .cra_ctxsize = sizeof(struct xilinx_rsa_tfm_ctx), + .cra_alignmask = 15, + .cra_module = THIS_MODULE, + }, + } +}; + +static struct xlnx_feature rsa_feature_map[] = { + { + .family = ZYNQMP_FAMILY_CODE, + .subfamily = ALL_SUB_FAMILY_CODE, + .feature_id = PM_SECURE_RSA, + .data = &zynqmp_rsa_drv_ctx, + }, + { /* sentinel */ } +}; + +static int xilinx_rsa_probe(struct platform_device *pdev) +{ + struct xilinx_rsa_drv_ctx *rsa_drv_ctx; + struct device *dev = &pdev->dev; + int ret; + + /* Verify the hardware is present */ + rsa_drv_ctx = xlnx_get_crypto_dev_data(rsa_feature_map); + if (IS_ERR(rsa_drv_ctx)) { + dev_err(dev, "RSA is not supported on the platform\n"); + return PTR_ERR(rsa_drv_ctx); + } + + ret = dma_set_mask_and_coherent(dev, + DMA_BIT_MASK(XILINX_DMA_BIT_MASK)); + if (ret < 0) { + dev_err(dev, "no usable DMA configuration"); + return ret; + } + + rsa_drv_ctx->engine = crypto_engine_alloc_init(dev, 1); + if (!rsa_drv_ctx->engine) { + dev_err(dev, "Cannot alloc RSA engine\n"); + return -ENOMEM; + } + + ret = crypto_engine_start(rsa_drv_ctx->engine); + if (ret) { + dev_err(dev, "Cannot start RSA engine\n"); + goto out; + } + + rsa_drv_ctx->dev = dev; + platform_set_drvdata(pdev, rsa_drv_ctx); + + ret = crypto_register_akcipher(&rsa_drv_ctx->alg); + if (ret < 0) { + dev_err(dev, "Failed to register akcipher alg.\n"); + goto out; + } + + return 0; + +out: + crypto_engine_exit(rsa_drv_ctx->engine); + + return ret; +} + +static int xilinx_rsa_remove(struct platform_device *pdev) +{ + struct xilinx_rsa_drv_ctx *rsa_drv_ctx; + + rsa_drv_ctx = platform_get_drvdata(pdev); + + crypto_engine_exit(rsa_drv_ctx->engine); + + crypto_unregister_akcipher(&rsa_drv_ctx->alg); + + return 0; +} + +static struct platform_driver xilinx_rsa_driver = { + .probe = xilinx_rsa_probe, + .remove = xilinx_rsa_remove, + .driver = { + .name = "xilinx_rsa", + }, +}; + +static int __init xilinx_rsa_driver_init(void) +{ + struct platform_device *pdev; + int ret; + + ret = platform_driver_register(&xilinx_rsa_driver); + if (ret) + return ret; + + pdev = platform_device_register_simple(xilinx_rsa_driver.driver.name, + 0, NULL, 0); + if (IS_ERR(pdev)) { + ret = PTR_ERR(pdev); + platform_driver_unregister(&xilinx_rsa_driver); + } + + return ret; +} + +static void __exit xilinx_rsa_driver_exit(void) +{ + platform_driver_unregister(&xilinx_rsa_driver); +} + +device_initcall(xilinx_rsa_driver_init); +module_exit(xilinx_rsa_driver_exit); + +MODULE_DESCRIPTION("Xilinx RSA hw acceleration support."); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Harsha "); From patchwork Tue Mar 21 05:34:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Harsha, Harsha" X-Patchwork-Id: 13182274 X-Patchwork-Delegate: herbert@gondor.apana.org.au 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0ACDFC6FD1D for ; Tue, 21 Mar 2023 05:35:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229898AbjCUFfr (ORCPT ); Tue, 21 Mar 2023 01:35:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229833AbjCUFfk (ORCPT ); Tue, 21 Mar 2023 01:35:40 -0400 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2086.outbound.protection.outlook.com [40.107.92.86]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0767A21A06; Mon, 20 Mar 2023 22:35:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z3Biw+m8L7s7gdYnt3KyNiqwpV6B1d+YgECNydeKDcb/qSqvsry0eZ4zwRS2e9NrC8i5S/wBREDvxvTROK61ryLoiNhkHMxdfdlZ/jzhNAZx05IKPqSLsuDafdUqZFrakRg9Ms1sv3XIuTtOa4r4t4pKUc38aeKZblF76qpkj5RjfpeUQSGLa6OTQEHaZn1WYYJGlLGSEyfafl1WegWpBItmOcuHWVBo123F17vKfVKUsopAZxdAUjCZjEgulr3dXUH30wU5aq2+/0U+qzFOJ+badvyMvDYc2vS42YlGzTlN/howLTczU6nwqLlfOThbgrx8XZddie5Tf4HdZzdd3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VkAUfB5JznI08JeLH9v2EaBLlRCni90g6ZC+gwzzi/0=; b=mtuWRIcjzbfi54t85fH5rXPxH+rU0IUzGO/z2CDtG6LkxRF0ayGNxkVg+klQHwnZj3YzxQzcdEBjq3V22Y3XJQlvuuQjvGHvoNrRXKZrNFnbf/079pMZbKdKGA+SLoHndb57LCLrC+uIuO8L4H5jG2eUpmW3ycevV+ihtmsFLALYf3d5lU864bDoyS+0tnIo1Kv1IlDjlixEgPYvihTGjn8MFmCZ+AUY2p0wvbfCbzkEzcSspsbMfh523m+J+C6+dDdBKmI6DxuHoAHenzs3griDr3crhlwQjAC4fsVdlR4iR7o3FE0jGWjuPXPLLFYlPnUUBXYnmiw/pGMU2MhRjA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=gondor.apana.org.au smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VkAUfB5JznI08JeLH9v2EaBLlRCni90g6ZC+gwzzi/0=; b=yA1hTnTfGjk55cZlR7YVfgOzPJO0FIJ47/YmIfCBP5wr6ssdQRyBbUIKqmv08iiTJZMdx4Big3fSJj7Qo4SDtcFa8yhByjyalPRdOjgIC5AtjIrYst+MVb48LGyIooGm2/P1N01Y3c/RvDrYX35TzoZiAWvWsxgUr8H8OzZE370= Received: from DS7PR06CA0020.namprd06.prod.outlook.com (2603:10b6:8:2a::21) by MW6PR12MB8997.namprd12.prod.outlook.com (2603:10b6:303:23e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Tue, 21 Mar 2023 05:35:36 +0000 Received: from DS1PEPF0000E649.namprd02.prod.outlook.com (2603:10b6:8:2a:cafe::ca) by DS7PR06CA0020.outlook.office365.com (2603:10b6:8:2a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37 via Frontend Transport; Tue, 21 Mar 2023 05:35:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by DS1PEPF0000E649.mail.protection.outlook.com (10.167.18.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.6178.30 via Frontend Transport; Tue, 21 Mar 2023 05:35:34 +0000 Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Tue, 21 Mar 2023 00:35:33 -0500 Received: from xhdharshah40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2375.34 via Frontend Transport; Tue, 21 Mar 2023 00:35:31 -0500 From: Harsha Harsha To: , , , , , CC: , , Harsha Harsha Subject: [PATCH V2 4/4] MAINTAINERS: Add maintainer for Xilinx ZynqMP RSA driver Date: Tue, 21 Mar 2023 11:04:46 +0530 Message-ID: <20230321053446.4303-5-harsha.harsha@amd.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20230321053446.4303-1-harsha.harsha@amd.com> References: <20230321053446.4303-1-harsha.harsha@amd.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF0000E649:EE_|MW6PR12MB8997:EE_ X-MS-Office365-Filtering-Correlation-Id: b09f8b0c-16f1-49ea-c821-08db29ce182a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: l2mLbsUkc6XLqjrMkg0ONwQHJPRgcof9FuKZyU08dwGAaRQcqyn3VbX35/AzjWG71kBt36JhN+GukyhZdqKnKn8giXgCiW3lBVYo11xarTJQLJqjOeKhXdeHlQ3IyXvJub6zCguZhNWoxGfJ0OhQnHMPCIXGZ3lAi/dxFxEaXdai3wkkIXA8S+DaZ0GM6IWQgguXG4gYnNKP/mKst3/dkYEERL5aoGizLepdtXrezgDug1xAE+Ar13APlK6F9OzLlnieXC9vncgqbL1NyG/IWJbooysUo2PATX7SdVC2FEil8RtMZ8cY9yVPcmRLqB2vGYUkH94aIEu4jrBbPdbo1NDsGjkiijXI9pUtUuql02rO+MXaQx3xmieYcpjiRcN8RVsNrq36/Z7FtXP3Gl00H4hCyBWqbVD5JjAMCuy8LQcT9vzDEMG9ky14Tn/HXSu1TU+/p/+mOw2kYmc/BPcu8rxkrOfoya3+vd8VOheTj5sLjRpotaO+Gud6WgT5oq/ZskI+fZsdZ9xULKKrU6GlSNgXWnFcd6HruEjSXsCm4booaxgtTXXLZuZuWwb3ORSGJaYMKcMD1fwFSS+eAABSxpupODsnZ3Z3Zbk4RkgrMhjSB9OhsOlXO6+8fH2b0gJLSWy9PFOvwaJUpAf9qIdlkRtMlE7vrdd3TwvqqQb8uGDvtcmCdiqGtZAen7aAPi1q9p1popOkWtxHyx9P3Gv5lSXZa4DTaBgog+EQ5qVkuBhUNUI3S5DoIDdJKvWTJU/f X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(376002)(396003)(346002)(136003)(451199018)(46966006)(36840700001)(40470700004)(44832011)(4744005)(8936002)(5660300002)(41300700001)(36860700001)(4326008)(40480700001)(356005)(86362001)(82310400005)(36756003)(40460700003)(82740400003)(81166007)(2906002)(1076003)(478600001)(47076005)(6666004)(426003)(186003)(966005)(26005)(8676002)(336012)(70206006)(70586007)(110136005)(2616005)(54906003)(316002)(2101003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2023 05:35:34.7734 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b09f8b0c-16f1-49ea-c821-08db29ce182a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF0000E649.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8997 Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org This patch adds an entry for ZynqMP RSA driver in the list of Maintainers. Signed-off-by: Harsha Harsha --- MAINTAINERS | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 7c90bc235a0a..85714c5ac916 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22913,6 +22913,11 @@ T: git https://github.com/Xilinx/linux-xlnx.git F: Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml F: drivers/phy/xilinx/phy-zynqmp.c +XILINX RSA DRIVER +M: Harsha +S: Maintained +F: drivers/crypto/xilinx/xilinx-rsa.c + XILINX ZYNQMP SHA3 DRIVER M: Harsha S: Maintained