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.8 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, 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 68083C11F64 for ; Tue, 29 Jun 2021 02:04:23 +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 E0BE161CE5 for ; Tue, 29 Jun 2021 02:04:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E0BE161CE5 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=u-boot-bounces@lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EA8D78313B; Tue, 29 Jun 2021 04:00:56 +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="e2/lrRI5"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E91C283125; Tue, 29 Jun 2021 04:00:25 +0200 (CEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-ve1eur02on0612.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe06::612]) (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 D3A578310F for ; Tue, 29 Jun 2021 04:00:11 +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=LMv4BwWF2pKg05EE1lWXNerU6D4EBPZvyxnEKBC3NWnsZORWiUqF4PBNei3+cKbCfDrsJTcZJOKrg1v7+veF6tgvG74y94ohDGLL04lXZac1oCVfSoEleedP5i5fyFiAeVuXVa0hWH9EFajjaSgj6Dw/kRsUz23xgrVsmAmjt/DDj9Bnx2QapMY5ROjU56vMxiK0SN+Wwm8KmfvLkz9vxZ5UHgUR2O8go6UIKKc+T7ZhpIWmUwGI7ROfenxe8+vUtu9dNNd+gT6nqrNZknR/WQUQ2xs1n+7TacH/DMXvniwslBn9Ho3Gb+ZIKozQnHm9f157gTgIaxlY3YbQKHxNGA== 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=SpS2MsqUBU805zh+l5V7PyDi0N/ctV67U+IWya6ad8JquGTiH3aFf4dm5mcJS7TqPiJ/Nr2ZFMhMg0QtM/5lV1h1GNGPPW1y+dnwU17d7OJxy8HZoJ5dQOa3IlzPOUVSbNHzIfACtLIdraLYn3J+B/43NxdY5bODRWVycLOikIM4GyTjWw9/tf2wbptIzvuZ7g1XoSvQndIgShV9YXfpJHHAv2r6ab+ZZ5Gl1AiLslfoKB/PQV0UWgFxIgY2mt+/37UzoX5nzy6y5bDw8aw3ewWBiXE2cXpEK5cgjFgRrc9HuuW1MZwlD1Z8asZaNNGqr4Iql5nYuxW8hsitdF8Jvg== 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=e2/lrRI5Rk6Lh5N2irAReD9fJEsdfZ3wcRJ7a4cgoLAC+eTiGILFLIbCjiywV7oKRuuTeEPlAPVVVJk2WO8iRG7pUlWy92tlMiFAR+0emQkMjijb/s/Aw9C49baOrYqzwnhqdn6AfT4hjm8kToWjUZPFTw6tjr4LynhRcdWuyyE= 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 DB6PR04MB3126.eurprd04.prod.outlook.com (2603:10a6:6:7::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.23; Tue, 29 Jun 2021 02:00:09 +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.4264.026; Tue, 29 Jun 2021 02:00:09 +0000 From: "Peng Fan (OSS)" To: sbabic@denx.de, festevam@gmail.com Cc: uboot-imx@nxp.com, u-boot@lists.denx.de, Ye Li , Peng Fan Subject: [PATCH V2 23/46] drivers: misc: imx8ulp: Add S400 API for image authentication Date: Tue, 29 Jun 2021 10:32:17 +0800 Message-Id: <20210629023240.22394-24-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210629023240.22394-1-peng.fan@oss.nxp.com> References: <20210629023240.22394-1-peng.fan@oss.nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [119.31.174.71] X-ClientProxiedBy: SG2PR06CA0088.apcprd06.prod.outlook.com (2603:1096:3:14::14) 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 SG2PR06CA0088.apcprd06.prod.outlook.com (2603:1096:3:14::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4264.19 via Frontend Transport; Tue, 29 Jun 2021 02:00:07 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f7169c08-08a9-4b84-664d-08d93aa19fae X-MS-TrafficTypeDiagnostic: DB6PR04MB3126: 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-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: fMTnbkOQA8xyTXgphi3o99NlAQTz2ok8GY9lZNQenbycG+UWP7W0KOpjdNwtBGhrnWIybZxpTkb8aXj9Xwu5o6zsFRz9Z1wmIh3eyEeQJ7uxFONcFicQ6NC55v4ZyfOZMNz093yK/wLsBcUCfIADzilOBRDH3M2c9OoCYEHrsmBM1i/vaJg5eM6FJ9MyU8UZJktTK91MhVGkq8pCVuwHunCsqmQRbeCOS6ByhNf8HsiyGVcQ5Zylryl/Hy91GbvyrCn4ZkvWuG73p8CicTxoPWLdmYLZRGobKkNjTwmdZJAwTez4QfP2Xy4KBuX3Aivzb02BQxiUmqvvyusAgemLUJ2DamGbms03+iSlYDZ0LPHiPowc++NzrGm7JfwOnVkPr3qsu1WN4fDHiJxwcOR5OsTNJu1MZKS5XLcaRAI9Ye7JsLkqW5E1tYHp+cYFQoWpZdbi06sHq93O8IBfsngHV+j/eb37yGFl73IW0AkuukN9EIZ06UPXIw8GsVGSi8jYS6MtB7+r6EO7vAUIibZAUawjPie1omzhj1m40jJ1J/v1ClHUf3+F339XaIVNPNrjPCqWW6gI6x4zlbd3q2772tgM2NhGFJM//UuIl1Mc8Ej+uSEuuuPA0rMfRqctSsJZJPeDUnWsh/+F1nSxZmZaiOX3QC5u/B6Zdlpp29RWOUcVkAUXD+y8KD9/3nUArTcvgBvp5mVNKC4XR1yM4AsG1qYoKu/DeuQgepxLL7AK17A= 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)(39860400002)(346002)(366004)(376002)(396003)(136003)(66946007)(316002)(38100700002)(66476007)(52116002)(38350700002)(186003)(4326008)(956004)(6512007)(6486002)(2906002)(26005)(54906003)(16526019)(66556008)(8936002)(86362001)(478600001)(5660300002)(6506007)(8676002)(6666004)(83380400001)(1076003)(2616005)(32563001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?w4F2MK3dHC8pIQhwCFIbh6CSqoSBJs1dUwmai/YbJw4/4xasWWMsloBhGQwz?= =?us-ascii?Q?go13IWlkadk2ZSu+nWjhtxjj9TnV4qciovzRlFrzI5/gqPGXa4wc230bT0JX?= =?us-ascii?Q?iluneqFDZXIdMwZZv/ZP93NQUn56uWggJ9bBrrFj73qQ9kfuB+OY9I1iv/ts?= =?us-ascii?Q?f4CseombnSeQ1y39IKPnfyZJS3C0Zdd54WgeilpsKDb7KMlbskfGrD4u1zbO?= =?us-ascii?Q?793Fd6u/D0OvROVKe4xKz1RWoZDcqnyyjSD/3g8cANHxchpfldz7VW4nJ+Tc?= =?us-ascii?Q?Xi0d1P97+UXky2E7I2Jo/5q+ToPLskgHKSwlpHiqAYMZ+r/03uqBDF5PKuZA?= =?us-ascii?Q?OjyaoLk2NEOLKzr2bLBMIcHjVnqYUNpfXN6pPd4b1NiUsNblhXJexnfdrNU9?= =?us-ascii?Q?Y459aqyQDKSrbNw9UpZ4nIhhIEnV5yBCf9C/UKZ69uTuAQpjohO/nXRretB/?= =?us-ascii?Q?F/x99amMmuMFdDg+lMCMh9ii2BfKfU3R1B5k8hT/ZvEhq4b6oPVFD7nvhY8c?= =?us-ascii?Q?0f5acZNuDL+iWb0lhuAme31H+wSmZsVhVdjZWHSSe8K/8J4fK3g/fS04hZ76?= =?us-ascii?Q?VUjC1UzHEP48MxNFMqD5bY7hTLDfJJkqjWlRKy6E1n4CujZ19eYlsdVMcsHK?= =?us-ascii?Q?ZxB85wGyfonBG06hsYcGxlap7sTMngGCHgPq0zHuT4uIt1G+gnCYhR0lmHXv?= =?us-ascii?Q?620HsgN0uOA/4goVdzRy0NbSoezAK7/6or7TUd2D6Y4kUUzj05Fot74T9xsp?= =?us-ascii?Q?6/gjIVAc2B291CO4FG2lvbbvsyT4SzevtlmnYHCqA08AB2S6/TTW4W8MD5Ik?= =?us-ascii?Q?XMhu5YzAGnXP37mWtWB2bDYagXOFcdVg8CJGOzIs9GB9zeSqGqZswOPGG6oy?= =?us-ascii?Q?8B/lQpMiKLXmTHABUGhg6t1GWX2T63UW1UETCT2LZFT6dolPdcVLJIFpPhX9?= =?us-ascii?Q?GycyPucndZQk7wE4pTq+XMniaW0H92RxUr5dnZrpQq32EPU8JhCvMkazWwyJ?= =?us-ascii?Q?qUIxtStqv6xo3ih7nOXExqcFcqO5xAyBvIlMevTolYa1GOkoYQiIoKUQ9l+V?= =?us-ascii?Q?Zf6YQezwlij/C3/E8HLShF8N+e9xOcBDaY9ASOwPrOGpwnHOHmXks14bTAgv?= =?us-ascii?Q?cwQ5I3Ce3pS8HRsCATQdaCc5ixZ61P/WTZm2LQaA+lGB3c9xftfUW2D1RJfN?= =?us-ascii?Q?a1EIi5qnz0wnym2lkiiKRO/eND8L9+ZGBMhsHKKtm9HujtGquLw8uO4bUPHG?= =?us-ascii?Q?ylUv59hPVwrZmlme5p/55Zq320gUbga+y8SQdf7+zkHK6vDAQ3yHNU3CIiot?= =?us-ascii?Q?3OrS2uMvaKszxdz8aBv/85o/?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7169c08-08a9-4b84-664d-08d93aa19fae X-MS-Exchange-CrossTenant-AuthSource: DB6PR0402MB2760.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2021 02:00:09.4767 (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: NxTNxOmsRSTnIBYBzO1aTP+K7g0rlPqumU7e+cife77zDSHJr3VXTSCl/00YPWIVKv34Ru9UZhJZQTCd/PgTDQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR04MB3126 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