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 485EBC636C9 for ; Wed, 21 Jul 2021 13:47:58 +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 C8EEF60FF1 for ; Wed, 21 Jul 2021 13:47:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C8EEF60FF1 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 EBAAA82D92; Wed, 21 Jul 2021 15:45:41 +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="YUlbi/20"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6D9AB82C95; Wed, 21 Jul 2021 15:44:29 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-db5eur03on0622.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0a::622]) (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 82F6782C49 for ; Wed, 21 Jul 2021 15:44:17 +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=Ou4Js5MLNv6QzqD/1fDJHQPXT27lPUfsoQv1P30WwXvmis7V8QS6clcs0eGzefSNhjN17uuYwAz5tW3akJZB/MiuwDL0dHaCw90QJ7MJ1Eq7QPA24wh3u47o4T0bwFbjIep3vXq/3rCga60Fn89Nk+zAvP/VTM/ZsQ24D1M68hQne3hJa76kpl542Shh+k3tEbuPoGVyBzSnVYo/aRJFmKnGLC5gP6OWbZJqfGUjVLgKDKh4ha++2RjpOrkJgPLnQu6gmRbT8FeXcWBNAKIeA+NY0PLn6E++/QRiNFxosfe1BZEzdUzeW6jJWufZhvpNfhfRmdcPQJGRku3as+Q+1Q== 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=Qbopb5eg+qZq2SCpy1rqmN0aVLFu3u8KYUbyTHzfueK9XOQP4+i+3PvxFqxRjUkdGLqzrVnAOckv+Gj08hI0VY6U3s3Ixyk8gZSLcOMw/ZSNBxX6N5BdfKTnPquMhGNQbr0O4llQOofMCE3YFUmbuSacxMJMH+8dbltFel3wzaiNIb2nkcx90WcEOxYApY1PnTwgfiUPx2vmg5LKkZBOtP9mT6gta9JIf96tQ6GYxFpEKoQhgAFx9HAQDDjC8s2Zmgarplvw7YkJoOXL1fiGteKVAWBOQgWUhFrZbONn9upKpVGkpaHIjNnEepbD0O7f7hZxa5PZ+KkVCgQvzLFZ8w== 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=YUlbi/20yqUnPLCV++tO0plrTfd2t13jwj8vXPkc78UOoNxCwD1EmF6APrCQTTLXHh9czWK7aQdrBui/hurcah0GPu006yaPfp0bI0dzE1Cde8u4kzJUwF3qVM99qJDnXkdC4Y6CvHkDw5Iz/yG1jx9BgecmLoZjj0hwKl7KOOI= 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 DB7PR04MB4633.eurprd04.prod.outlook.com (2603:10a6:5:36::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21; Wed, 21 Jul 2021 13:44:16 +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.4331.034; Wed, 21 Jul 2021 13:44:16 +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 V4 23/44] drivers: misc: imx8ulp: Add S400 API for image authentication Date: Wed, 21 Jul 2021 22:17:04 +0800 Message-Id: <20210721141725.23346-24-peng.fan@oss.nxp.com> X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210721141725.23346-1-peng.fan@oss.nxp.com> References: <20210721141725.23346-1-peng.fan@oss.nxp.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR0401CA0015.apcprd04.prod.outlook.com (2603:1096:3:1::25) 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 SG2PR0401CA0015.apcprd04.prod.outlook.com (2603:1096:3:1::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4331.21 via Frontend Transport; Wed, 21 Jul 2021 13:44:13 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 307959f3-2844-4a24-1118-08d94c4da199 X-MS-TrafficTypeDiagnostic: DB7PR04MB4633: 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: G5ZUysJwuIfsfNMDUmskOZAkvUv40AKfw/Pnw0EPqsAdVuFfOWvI7mALZtOrnwIiBopXERbyU39oYZB+MWyD/pKC99wDzsn5I6erxcUoFl38sYPhe5IneOK6CsSibGpJJO8tUHY+Hjd8DOLX6wXTdxMlEeYIGiKxH+GwZT1lL36otV4RUOKbd+801jJcP/a62V+Ubh4Canxomk5QVmLyecwyhTOmfz1M8dfuX4gxtNtnOz4gtF6oXTyqFrcOn4kwmigO8veNfeOnSmeV9ifXYD7OdwZSgV/UBUGLMkNTxa4yNSR33hT8oxTXD3YOFOzE5O5VSauLQ1ymJGePkcEN4aCpP5mrTt/TtUm8r1MokSN5rHvLKlJCD8QPS2FfWVNUQXMkt6aevrNHmV+sjJ3TuXj5a462VpIBHFtecOKy57cDh0erPEp0zAVbFIp2g8yKuQKIMAYKgXYXtCRq5sVZKbQi62/e9Y3/m4oOES/jFulqNdlBxA2Pg/o709E+IZTaYIbUVP5qBxG8yYSr28fMJwCGzYNqTUXXXsgw2RRuRGyAPshv631cQoDowGYUuo2FWazuj8Jgh89IwH20T9P5FSzP8ChpSIOP8j8GseY0i/lLJwT4hBJt9RR48YoeC0D2amO8u6SDuMRY4UqjTY+TcCztm572MO9rHixtHCs/GGWxZxWMcHoRTEwoHv/I7+EZ489Qe1vNz+EW1452q66OXwg4WQB9T+tkINcsmuRf1to= 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)(136003)(376002)(366004)(346002)(39860400002)(396003)(2906002)(6486002)(6666004)(6512007)(38100700002)(38350700002)(956004)(5660300002)(83380400001)(86362001)(8676002)(26005)(2616005)(66556008)(66946007)(6506007)(66476007)(54906003)(478600001)(1076003)(316002)(52116002)(8936002)(4326008)(186003)(32563001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?6WEWJQqsUXZIEBO9BpoumGomFCJ5SEHvqyjWYtpZr/tP/jO+7h56H15eTTM3?= =?us-ascii?Q?gIEfgeq49l8bjys+CgLVSsPwXPa9SM6ldQb2hEGjKAAZV1cK2YBQt4Lr4L15?= =?us-ascii?Q?Kvi2RVUcEECeILSIHUdNhFws97VzHm+gJcT0ARvbtsnVRuyYYfxvM2miQPYM?= =?us-ascii?Q?xJt8BhppFriU5n91MMZonT6FWhrKsC2g1Gmv9n3L0tLxLFB2o1gaOxXHXrEp?= =?us-ascii?Q?YS3w5iWSKr8lEYRBF1+D9Yl0zs33wPF0IQHqRb+oJm8ljSDudf5btxbyYKNP?= =?us-ascii?Q?Gq/Tt8Pi/wxy+vXzU2WDc+TCcur9T8QV8i/268yA2GJNMSHbVqDINKaajd4g?= =?us-ascii?Q?cccB14PSEqHAh5PR3Z6JkszO9vHjGieERv08eSeD+l37/Ebe2PkMOtq9lCwg?= =?us-ascii?Q?l4zdrW2YAHfU3zj9E5qIGjO+G+x0Vlt1lN/smGX2vsQvZSo6AY4AF/ZKwRIt?= =?us-ascii?Q?G+Lh6ak9idNWH38y1fMYSnzcSVPdTvu77fP7Bbb119bgGvce1bLT4fuqqteP?= =?us-ascii?Q?DpPA9y0R0jIRvJEex2F1qHGiB4pzXWUVffc9XKh7ykiQYOwmsAeeYVop69u0?= =?us-ascii?Q?pCAP/L3UEkNYfxwZ1tgmApfZalQMAe6PmovljjIsq+K4C5Jh1vjfkYfhesO+?= =?us-ascii?Q?0DgTkH5d1oJO5bSPiOLINVb1dUetAHGPFwoegoBHqen5zvSQ8EjF3fbh7RCf?= =?us-ascii?Q?vqtJaMndguoD3pE/OiqMsPODOM1AqMkr+Dg8Blw+Dn07Mc/zDlj9ForUZTS7?= =?us-ascii?Q?116srMla3wuynr73mPbn925FZ/iWLhvmU0Gnt4N6JXAraXrmFqAsxzJ9NCWT?= =?us-ascii?Q?/Rb6u4GaIHelCUvmBchHzEA56D/Ts8xjox0Av0Te30Gd/MGc89+9Qt3qTH/D?= =?us-ascii?Q?BWomnkk167XNSvQ3uIO+s1+lNYLzuBxyNUYauML7itx2hSYcRgq6bLfdpPl+?= =?us-ascii?Q?BQ5Lak0lP9ixItwZGO3dEUdvtvgqNKU2tylVTk8Bum0uL6RtoiqxAjDTEkUX?= =?us-ascii?Q?GZzyGlMhoN3zwzT0D1wEGGzuupls1Gr8fkwN1glDHsxCrzK+eRLOHdb1hRUp?= =?us-ascii?Q?a2k/SZnchzWyjCJ2uKnqTSQgBPiQ+mqVAtuKyi70kztz1h3QnSqQ9m72rnK9?= =?us-ascii?Q?DHZQui/DV/UHMeWddzPe7yAW3vBy/axi/q+KTW+hrRQxZbz7O5SSQPTnlW6A?= =?us-ascii?Q?TXllk5PiWG9+mzeFJxSy4J8zk2tZiLmaY5Y0aUuz9hjCgFglHq4/2PYKPxAx?= =?us-ascii?Q?mzzRYu55k2Ylh347jv23Vv7Y1gDvkaYEfRW4m6n32s40QrY92stJewN29DEz?= =?us-ascii?Q?EHTdIuKHX+3VWoJvVF31xWeq?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 307959f3-2844-4a24-1118-08d94c4da199 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0402MB2760.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jul 2021 13:44:15.9200 (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: aPPRMI9CJSJhQsxyWtbNDKxPy/EeKK0m3siSwpZEsEPBijNCDMULWJkebYhxLCADRlpJO7ee1eiOuZSmG5HD8g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB4633 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