From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, 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 B25CAC4338F for ; Sat, 7 Aug 2021 07:31:50 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 04F5C61164 for ; Sat, 7 Aug 2021 07:31:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 04F5C61164 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=oss.nxp.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D66CA8325A; Sat, 7 Aug 2021 09:29:21 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=oss.nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=NXP1.onmicrosoft.com header.i=@NXP1.onmicrosoft.com header.b="XR6mrRdy"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 1EEA383237; Sat, 7 Aug 2021 09:28:10 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0627.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::627]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 07EEE83216 for ; Sat, 7 Aug 2021 09:27:45 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=oss.nxp.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=peng.fan@oss.nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QcMu5jY2ktoGwRIecsj10oJh3ZWINalw3SOEhECvuvbkSmUqKalPVVZhsuPxryMjNHucXa8vzFqXmxPdMznqxzJOnjY3FexqwWDN0z58glZfTlHbsh56ZXMzP2SFlU8kMiFYQxwmn1t6Av99kNCtfdbVpUtiWHCrnV7wmd2OrCjJuQzZ0WYrvzY2ykOQdXq0SIAFllSWn9sVKPIKgtzoPMcr1dvguOdXcE1R30xgMS84GVpEfRHWCp0nT77tibRO50IeNx4pu/NHdJ33gKqxusVP0kay1UwJoEyLHHCB9HHIv8VN9k+st/RgTPYHA03nN9gePN1JCQQl2Jg7xFOSEA== 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-SenderADCheck; bh=ahOaGUR1eWdqdQIdensc1593GLkExVu8nhcRaiqz6Pg=; b=fH+rl191a6wa0bdv6QpiDlNK/emY7R1LjkcqAa6JnzIInKORgd6J3VelHqFw/bSbB72a+ickrZ8kFA6WIvN96Iw/HQEo8ypIPhBYLgnQ/Lnyy1nG6ML7HCzcy1CNrYxtBHbScmyMRDtjgQ274QLMMQM0hjYCKvDEo9vuoRcR62Bm1wte1boSUcLs7fAkbN3yyVFcOlksdaknuv4A079DOzvh+wvI2o47JebtXPXqtiGWpkoNmnn8ny+13rKe9yxG62Y2haltQA9AZ0xxBzX/sRlSSmO2/ywXelv4Xct8/CeBHJtFcPeyLq1fqT1qbnoCE1i0ST/oEyltnNMF6ExDOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ahOaGUR1eWdqdQIdensc1593GLkExVu8nhcRaiqz6Pg=; b=XR6mrRdy0tgj00iy7923P7Fsep95OXRwGFZrUrg8qsdGQPxq5sLHGH2pDMRBlyk7d+wGKcE0uR3VY6V4+jsvVTg3fJT5AxovDxmkFas8ZAseFr4k+qJsN2EzGgtZ9g7ThcJP4UK5hDWTZ3mlqiAY1pW5qcRjuAGILrnPKtlER6Q= Authentication-Results: denx.de; dkim=none (message not signed) header.d=none;denx.de; dmarc=none action=none header.from=oss.nxp.com; Received: from DB6PR0402MB2760.eurprd04.prod.outlook.com (2603:10a6:4:a1::14) by DB6PR0402MB2758.eurprd04.prod.outlook.com (2603:10a6:4:96::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.16; Sat, 7 Aug 2021 07:27:40 +0000 Received: from DB6PR0402MB2760.eurprd04.prod.outlook.com ([fe80::c445:d742:eb76:86dd]) by DB6PR0402MB2760.eurprd04.prod.outlook.com ([fe80::c445:d742:eb76:86dd%9]) with mapi id 15.20.4394.019; Sat, 7 Aug 2021 07:27:40 +0000 From: "Peng Fan (OSS)" To: sbabic@denx.de, festevam@gmail.com Cc: u-boot@lists.denx.de, uboot-imx@nxp.com, Ye Li , Peng Fan Subject: [PATCH V5 23/44] drivers: misc: imx8ulp: Add S400 API for image authentication Date: Sat, 7 Aug 2021 16:00:52 +0800 Message-Id: <20210807080113.16020-24-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210807080113.16020-1-peng.fan@oss.nxp.com> References: <20210807080113.16020-1-peng.fan@oss.nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR01CA0133.apcprd01.prod.exchangelabs.com (2603:1096:4:8f::13) To DB6PR0402MB2760.eurprd04.prod.outlook.com (2603:10a6:4:a1::14) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from linux-1xn6.ap.freescale.net (119.31.174.71) by SG2PR01CA0133.apcprd01.prod.exchangelabs.com (2603:1096:4:8f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.15 via Frontend Transport; Sat, 7 Aug 2021 07:27:38 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3a4b9d19-4933-44f2-dd48-08d95974d6d6 X-MS-TrafficTypeDiagnostic: DB6PR0402MB2758: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:16; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VVoLKwO/wDQfT3gVs885tcE2h8G0VHpmIKnFyjYkONOCAxoTJXy0VK+ixsPsvspxd8mtkmR0EssW4xTZYgo+HNRi12pq1mcU4tU37SklRbjK/879fDUL//XmATX7KhFPSOm5YMfCNKTQXNKO7YuMhtUGUnDSENjxUef6ioMv0mLcyvwhokyXM+l4883vxr412tqEFGL1ySyPDMnVjswxRUnb2Ckyyn2lyaYpLw6p1wMS2sbGmQVwZKSI09cskjwuDeNrUcCJMQKrgv7UTRcoKU5dv5pZ1ZCofT/941rV06U1Dv3s8ivJbM9JzkxLr5mLLbNpUKPgRnioj1TnoJNTB2ui8xeacm+3Dk9V+DZPhqTO+cAlsAfXdJdSY1qiE/UjHQLBaCIPmnqEfi73InfNnEBzOugafFmZDQey3MwV5jo9f8+RJ0FrgrXhxjevM41XKhL4nWneNRfdv8R434HeRzmffMr3Fsn+i1WvltWw6IIR+4lbLA4P8G4hYQOfK658I+bl6CdXp1TneQpLUCKaW79WyUEcH2+/Ccb/HbnbUNl5+jwzQtMVmO13SwLwPuwHaiiXzvNHfZqlD9XgFHpCtbTGH8j3WZNn17BP5ATi670/PabtMUpsFuby4H7uDj3feJ0qn+O4pIvm0HgGnAWX0pMBRe2qw3cqhw9AtSQGKWrU/QMpIkVhMGfwwx7DeBKFpEWRKXLUJa30SCCbTbDwGRolWRWsw1bye7pAzmNb9Rw= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0402MB2760.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(136003)(396003)(39860400002)(346002)(376002)(66946007)(66556008)(66476007)(8936002)(52116002)(5660300002)(6506007)(4326008)(6512007)(6666004)(38100700002)(2906002)(38350700002)(2616005)(8676002)(478600001)(956004)(1076003)(83380400001)(186003)(26005)(86362001)(6486002)(54906003)(316002)(32563001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6iKIe7JWcDQJ/GXrlWhAbiijRuOJGkkGjFdeVFx4xwZa3Kc2mB6LpLEA9DRu?= =?us-ascii?Q?xyJra5MC9a8aHuZZZv3cs+lLwbjX3MydPOtcqbcdyL2V42IasEM2ZhGo4pe+?= =?us-ascii?Q?IGz/WJ2qS5XLRqPaChlGq4/bH3lpcmWPbq3HTDRTbnRBaMAjx7yQZ1yF1+KY?= =?us-ascii?Q?IRGLavHiimQOPJFkNSoUSr53zYH8uyjTHW9FnLdW1KRchBSbeHcic6nugp0q?= =?us-ascii?Q?2gKDdXiZI+hTzxQ7N5fFLqoJGmTy14omQAf+urO15jIXqx5LGcsvmfEKihnq?= =?us-ascii?Q?BoFH6wy02qYrxjq9rrsJ4X4jM2DbaI3rrg5Q24WRs6dU56tl7zHRO3J6rZK8?= =?us-ascii?Q?vpNK5aUYxh1QRzax6zqtfozewayIDsSa4m4fVUl1aOvVV/1BNCc330aIZhe4?= =?us-ascii?Q?o07ElwXpYWKsAhlrcV2j5yIHwbk9uYSDuSgxEICzYlpalQf0mrXtbuir711O?= =?us-ascii?Q?xsnXA7FHBjY5fB1zY5vcN8WY3yR4iRIEIyU9mF9HWdPcjsWfgsHnsVyebWaS?= =?us-ascii?Q?CC3mW0lctQccSyaQoI9I/aVNiJA6RssqDMNL6K2W8CgLjVOutCPKGYLzIwbJ?= =?us-ascii?Q?9kzDX6O/04BRXGHCiOKfAkycjGL1hCfU4WBQMflHpN85T8D5fa0mIAF8B5uW?= =?us-ascii?Q?hsdMsJcPbJhNQgUjUGnLptcfuqy6VhcKkJLUnA8z+zGryJ38iq+o6ce+Ttet?= =?us-ascii?Q?aE9HfnGn+Ij3MaVHclZY8FENXUAsWnY1aBPK7ii22mD8p5uRTBeFxJmt3d2V?= =?us-ascii?Q?t3ZxTIfaWENane943CkJ8ZZo+be0LArfAk1FwdhI13vYsBDBdEpXVaGRzaus?= =?us-ascii?Q?qaBhlRn7dNNPVDX+STwNhZJVIwSpWmjNmTzTvbuo+9IhaC6sB55R+RHKH+mt?= =?us-ascii?Q?DT53QXi3dC82kQ/I5uzzfv/5mCspBDbs/wG+0ZWukwKqaWCeqj1pKEbt9Mb9?= =?us-ascii?Q?0KJuSQpAyrzGlsH40JqI9uYBZr636EX7qcUBU87Hc5Dv3ppCelJJCaam1MMI?= =?us-ascii?Q?s8qNkygFUsYzOXIt/2EU2teHPpVEsNR8/mFoyTt+kr/7zECAHKPYT1nf/sm4?= =?us-ascii?Q?kmscgFNa63HhmRU3VFj26YRIJobpNZxMQZDALo2+dC3Z79eeM1RPSVn/GuOI?= =?us-ascii?Q?7ASVYG3Js8URCIHSj+W6mhv/S7qJ7VnGSVSudZ7eM7gsfXK4BLhgRjSEu9aJ?= =?us-ascii?Q?Ds2TbSlaaOjg/UTUAOiwVTyyD2Bwb96ulrPk5XlVtlG2OJ/2V/gNxi2Qq6LO?= =?us-ascii?Q?015JtOMeVdOBP+ixuAubinNpU+RETqLlvJnmRciEO43AVuub4NAf5VhNT26n?= =?us-ascii?Q?YLNYJQGQvixlG0dma8l17fY+?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a4b9d19-4933-44f2-dd48-08d95974d6d6 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0402MB2760.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2021 07:27:40.8198 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 5RT1QkzH2st4reaK+OpmUFLbi+wRgqztbvxmbzeKbPbaSnTwDH9iUI5I8LhP+50/v4t6xuPX840y81osYLnceQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0402MB2758 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean From: Ye Li Add S400 API for image authentication Signed-off-by: Ye Li Signed-off-by: Peng Fan --- arch/arm/include/asm/arch-imx8ulp/s400_api.h | 8 +- drivers/misc/imx8ulp/s400_api.c | 121 ++++++++++++++++++- 2 files changed, 127 insertions(+), 2 deletions(-) diff --git a/arch/arm/include/asm/arch-imx8ulp/s400_api.h b/arch/arm/include/asm/arch-imx8ulp/s400_api.h index 3ba6b525c5..30dab8be24 100644 --- a/arch/arm/include/asm/arch-imx8ulp/s400_api.h +++ b/arch/arm/include/asm/arch-imx8ulp/s400_api.h @@ -15,6 +15,7 @@ #define AHAB_VERIFY_IMG_CID 0x88 #define AHAB_RELEASE_CTNR_CID 0x89 #define AHAB_RELEASE_RDC_REQ_CID 0xC4 +#define AHAB_FWD_LIFECYCLE_UP_REQ_CID 0x95 #define S400_MAX_MSG 8U @@ -26,5 +27,10 @@ struct imx8ulp_s400_msg { u32 data[(S400_MAX_MSG - 1U)]; }; -int ahab_release_rdc(u8 core_id); +int ahab_release_rdc(u8 core_id, u32 *response); +int ahab_auth_oem_ctnr(ulong ctnr_addr, u32 *response); +int ahab_release_container(u32 *response); +int ahab_verify_image(u32 img_id, u32 *response); +int ahab_forward_lifecycle(u16 life_cycle, u32 *response); + #endif diff --git a/drivers/misc/imx8ulp/s400_api.c b/drivers/misc/imx8ulp/s400_api.c index 82fd3117a4..4047d6efee 100644 --- a/drivers/misc/imx8ulp/s400_api.c +++ b/drivers/misc/imx8ulp/s400_api.c @@ -14,7 +14,7 @@ DECLARE_GLOBAL_DATA_PTR; -int ahab_release_rdc(u8 core_id) +int ahab_release_rdc(u8 core_id, u32 *response) { struct udevice *dev = gd->arch.s400_dev; int size = sizeof(struct imx8ulp_s400_msg); @@ -37,5 +37,124 @@ int ahab_release_rdc(u8 core_id) printf("Error: %s: ret %d, core id %u, response 0x%x\n", __func__, ret, core_id, msg.data[0]); + if (response) + *response = msg.data[0]; + + return ret; +} + +int ahab_auth_oem_ctnr(ulong ctnr_addr, u32 *response) +{ + struct udevice *dev = gd->arch.s400_dev; + int size = sizeof(struct imx8ulp_s400_msg); + struct imx8ulp_s400_msg msg; + int ret; + + if (!dev) { + printf("s400 dev is not initialized\n"); + return -ENODEV; + } + + msg.version = AHAB_VERSION; + msg.tag = AHAB_CMD_TAG; + msg.size = 3; + msg.command = AHAB_AUTH_OEM_CTNR_CID; + msg.data[0] = upper_32_bits(ctnr_addr); + msg.data[1] = lower_32_bits(ctnr_addr); + + ret = misc_call(dev, false, &msg, size, &msg, size); + if (ret) + printf("Error: %s: ret %d, cntr_addr 0x%lx, response 0x%x\n", + __func__, ret, ctnr_addr, msg.data[0]); + + if (response) + *response = msg.data[0]; + + return ret; +} + +int ahab_release_container(u32 *response) +{ + struct udevice *dev = gd->arch.s400_dev; + int size = sizeof(struct imx8ulp_s400_msg); + struct imx8ulp_s400_msg msg; + int ret; + + if (!dev) { + printf("s400 dev is not initialized\n"); + return -ENODEV; + } + + msg.version = AHAB_VERSION; + msg.tag = AHAB_CMD_TAG; + msg.size = 1; + msg.command = AHAB_RELEASE_CTNR_CID; + + ret = misc_call(dev, false, &msg, size, &msg, size); + if (ret) + printf("Error: %s: ret %d, response 0x%x\n", + __func__, ret, msg.data[0]); + + if (response) + *response = msg.data[0]; + + return ret; +} + +int ahab_verify_image(u32 img_id, u32 *response) +{ + struct udevice *dev = gd->arch.s400_dev; + int size = sizeof(struct imx8ulp_s400_msg); + struct imx8ulp_s400_msg msg; + int ret; + + if (!dev) { + printf("s400 dev is not initialized\n"); + return -ENODEV; + } + + msg.version = AHAB_VERSION; + msg.tag = AHAB_CMD_TAG; + msg.size = 2; + msg.command = AHAB_VERIFY_IMG_CID; + msg.data[0] = 1 << img_id; + + ret = misc_call(dev, false, &msg, size, &msg, size); + if (ret) + printf("Error: %s: ret %d, img_id %u, response 0x%x\n", + __func__, ret, img_id, msg.data[0]); + + if (response) + *response = msg.data[0]; + + return ret; +} + +int ahab_forward_lifecycle(u16 life_cycle, u32 *response) +{ + struct udevice *dev = gd->arch.s400_dev; + int size = sizeof(struct imx8ulp_s400_msg); + struct imx8ulp_s400_msg msg; + int ret; + + if (!dev) { + printf("s400 dev is not initialized\n"); + return -ENODEV; + } + + msg.version = AHAB_VERSION; + msg.tag = AHAB_CMD_TAG; + msg.size = 2; + msg.command = AHAB_FWD_LIFECYCLE_UP_REQ_CID; + msg.data[0] = life_cycle; + + ret = misc_call(dev, false, &msg, size, &msg, size); + if (ret) + printf("Error: %s: ret %d, life_cycle 0x%x, response 0x%x\n", + __func__, ret, life_cycle, msg.data[0]); + + if (response) + *response = msg.data[0]; + return ret; } -- 2.30.0