From patchwork Mon Jan 15 16:29:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sumit Garg X-Patchwork-Id: 860597 X-Patchwork-Delegate: yorksun@freescale.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zKgyn0mR8z9s7v for ; Mon, 15 Jan 2018 15:55:28 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 892DDC21EBC; Mon, 15 Jan 2018 04:55:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=BAD_ENC_HEADER, DATE_IN_FUTURE_06_12, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 84B0FC21CA6; Mon, 15 Jan 2018 04:55:21 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id F3734C21CA6; Mon, 15 Jan 2018 04:55:19 +0000 (UTC) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0066.outbound.protection.outlook.com [104.47.33.66]) by lists.denx.de (Postfix) with ESMTPS id 22333C21C29 for ; Mon, 15 Jan 2018 04:55:19 +0000 (UTC) Received: from BN3PR03CA0109.namprd03.prod.outlook.com (10.174.66.27) by DM5PR03MB2697.namprd03.prod.outlook.com (10.168.197.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Mon, 15 Jan 2018 04:55:17 +0000 Received: from BL2FFO11OLC011.protection.gbl (2a01:111:f400:7c09::144) by BN3PR03CA0109.outlook.office365.com (2603:10b6:400:4::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.407.7 via Frontend Transport; Mon, 15 Jan 2018 04:55:17 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11OLC011.mail.protection.outlook.com (10.173.160.157) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Mon, 15 Jan 2018 04:55:16 +0000 Received: from b49020-OptiPlex-790.ap.freescale.net (b49020-OptiPlex-790.ap.freescale.net [10.232.132.83]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w0F4tDNa026102; Sun, 14 Jan 2018 21:55:14 -0700 From: Sumit Garg To: Date: Mon, 15 Jan 2018 21:59:38 +0530 Message-ID: <1516033778-31557-1-git-send-email-sumit.garg@nxp.com> X-Mailer: git-send-email 1.9.1 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131604657171135468; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39380400002)(39860400002)(396003)(376002)(346002)(2980300002)(1109001)(1110001)(339900001)(199004)(189003)(6916009)(8656006)(2351001)(316002)(106466001)(54906003)(105606002)(48376002)(5660300001)(305945005)(356003)(53936002)(59450400001)(50466002)(6666003)(4326008)(47776003)(51416003)(2906002)(16586007)(498600001)(36756003)(85426001)(8936002)(86362001)(104016004)(81156014)(50226002)(81166006)(8676002)(68736007)(97736004)(77096006); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2697; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC011; 1:+E6rkDyzVW/UoThON7H0Xq92dW8WeIcN+6g05QO9DUYObJsh+pFY7BnbmvX+2A/+J89eZ7ZW43vtyGLr/77YcSrmH0MJjUpHaZ84+QYEX8YqM4ZOXzhOPdUa4xUSieSP MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 984d2397-62fe-4fc2-fbec-08d55bd42bef X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603307); SRVR:DM5PR03MB2697; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2697; 3:Oc8WcE5G3RLa/wRS2rNlxlMZ2jWfkXhJA/zjii/cCItF3WBOiq/T0n4/Flb5hvBz5Dow3VdccoSI7DGaNar4HHQNDxRkiLMNSo7YJjxy4/hUnn2HBTcNf9CatzRq9H7iSnXvpOXn3MXWYps/++IOfrkvKD2LL2h6iOe3HW2QD2i/4U3CDx79DlNjd2qLGb2QawzT3m4QfNYUXjqs3aNRjSUBU5hEapDS2TF8WrUDpXKUdbI7um33577lwG4jAJxJXVp7bAnoOjsK0SRRJzguhWJN+MEV6udJ4T9j/tnkg/2vh6fEsVdEt47ydgi0b7eL+PENeLpMCss6B+gQnEs9gMwRJMaFVxYtlwYFFAQq/jg=; 25:4bJptDAnp4bpAjiqhCaKTaxGBQ0eiYkMqhktXJhgkjTY82vWU/3yCPW0ijY+x6J3KFErEU2Nn2DVzInpTaq2uRfcYKYN+hItpAv1HnPD1Ni6Dv546MYTIekS7+sExIAg8qzXWMZxdy/S0AsHUzinmDXUdOLNQ4H5CFi142jSn5Zac/zwAyvkIe3MuEQSCt+p2KLfgHMRvqmFZ1IHmpxF3mAhhit83/K8HwSuPG+B44kfj0983Q1up/SgJV/6Pje4nWR1NjenULFE2Im8HzNUD2yHEkZS8j4zqHxfDEKnJ2ouE48IDL2loZPz80lrHw0k6coAcwsNontxdwGsnoauSA== X-MS-TrafficTypeDiagnostic: DM5PR03MB2697: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2697; 31:S3AjKAdw1OeCRnRQASc5LfElAg7VL4ZNf3VCM59VSbJhhY4LPM080G3aPjaOvXbKnnCFPp88Ii+jjm69QYeE5W2tC0KDxbPVe+g2mH9jRWG9+GcW/0XM9vPYFUfkhnm2qwW0pkxWNBtezioYrvjyiyW9D+0ElDQwvrCGydy6ou/78W80Tz7BeLKQsvJB6pKikihhjP0sB/LFxtrqAEKQbLfvmcSdqckdmULWQvk3Oe8=; 4:vQzu3YDudzp29hsWDOYkRMFOjEB0oHtVA8E4lQcunBK+A2mkKzzh+tvX7rtAm7mFZz3FG1/DTy1dUbe68rdBwCwm2TK9oL8fr9vyeI1PGOhZo6LSyWPg1NYz6J7KrElX+6wCPobvM0owZJYZhgATrkdLsATaAyOeRSRkE7b9tXIpVMPphwWoyiEesY1FUSJ6I5vUMEG6E+29sFAy+HJungrJZqnFnQOuNzILZ3DmfR0ZqKwETE4kDTSyv4qctSN+bzsf7lSN7JLa5J+mdzxSboJ1vAgd69YLGMEV/HPu6AzbvfIgIGwgDHEov3+03NCi X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(3002001)(3231023)(944501161)(93006095)(93001095)(10201501046)(6055026)(6096035)(20161123561025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123563025)(20161123565025)(20161123556025)(201708071742011); SRVR:DM5PR03MB2697; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:DM5PR03MB2697; X-Forefront-PRVS: 0553CBB77A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2697; 23:wa3s4eNaQX/SpSQGRuwFPr/EDWTIT/RoxriKnvIxc?= soqn2K0kZmGiB6FgnRoW6nwYGqNCJxBWRJHyOR551YCowoZbiKuR0cEZgDYXuEf1u+1RUiLeVsFRU/zKER8K74YiArjNj/VXqGOYINeFvtaJSL+T1/o47HqIX2WnuKXEJ1IfcYM9e6AW8dS8hKvPgHP8JcDrRuJ7SzTjwS2urt1YEMZM7jGIRFFjDLRv4Y3c6sqlxN13UB0bXXwkxH0JKyhMVJW6DNoMU03VrVfjqSurib/4geaUNS3uGVo+YNKwmG5ZbhmvyxcyacmRj0o5lyhIrJvi9zOEF/ba3VOoMdabsgeGcsa+DCvDZiCvR/WbRfiGvFPliuZ8GBKPkdJfExcBSoS3ugQb5ehenrmWzYfDU3TdvA032KXnczyALyL8vXpNiiJ9p3Ipj8CiJJerNTQBXRiOebZLDFB+Gq9ocpHixZDmQsZMEa70fPEW0x0i0txaCTC8jAlDc1aEAI1QD17HApiM/1GMLdImAG9MDutz6lVOXqZ50HrGjPVxeW6wW2EC/GOyP0xDRHhJ6zqz4Ca6ozomVC7fvBANwfqPkv1ippd5+d1zjk8Oq8QxmQX4/0F6MNH3PId3kAiEVFiVIzcNsyeBShoCuxr+5u+um/QlWoHTIe2hECE7Hw+0eBtfwO/g/KRYMNztAoCVaX+I29TuTttWwPZRxsLwROhcy0YTmXbbNkfizsmaICdW64wUCQ8UQpjYHNW9oauXwdwTBeS664mda3m1SzJDWW2DHLmPbohD41h1TYie0TerlE80UIrvOVc3gUWcIISJ77boBoqtMKjef4tGc+Hpk8GGIEe3DQgs9TBaRxpijV5lHpE+MhoAvIxaTGTAg2b2qCbeAI8JUbo2uCsHq2GWv3BKBg2vvaB70pV4IZhlYt3jbkFm/NlYu/EFa9AGKJ9EYjnm5FmYUbQ+q0Pu083YZu3i/TMXnGBlRtPRj49O7LF8f85ri/NmwdvDWZVkqmWZnF3PZiASL42eZjvOGnz95gDFscY+JIplK/0ms9biVXrK0BwOks= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2697; 6:7rFwMj+SBEBcf/fnZPUv3VaDhBmGsIsxvoQ/OWYp4gDAnGEzzzaYzw65wi6hJo1pIAPEIPMqyDWQgGE/nC2NmFw6xieMKErKg8CfKEgqrxz8tlqmjuPZM/ZsM76Hpq5eNvsCTelglDxSojWEg1QxlD/dQ6F17JPBl7D63MQjTcgpCnuMPscAHZ+ikAGwaKTfo4MEe0uWdhl4qR+dT75ix3fuypUnOXIF8AM0M4sZfrDIXIaBNv9vChEFfI9ezbaPV9mRLM6GC1FObWNTYLMuK5nK/pVleGBlqr8T19P9BrTZje+mAgPWxZrJny5424SLc2j2/euRfscLmhEQ4Slykue9Z0KUS4iLmBplVrOadsY=; 5:k9QrWBEVHfDP5YTGpR6uGj5GIWiwAsvldfYMRuKDIagtfftHTB5hsDeo3egnfYlJyVH15WfhIMkrxH1o+fYtSvbZlRCqs5sWZPFMF/YBRusEBT+xGp6jmXwDpLHRdiCoSD4BLybvyAUSpWoY6mAeTAsgkI5trlvGWWHLddvpQqc=; 24:cmehA8qU8gxMySGfyUclICXNqiGjx9V+/bxad4rvXDIURIVLZqA2u8BjE5VP3yoKKMRuE+Xu/nzjOgb1ai2lHz5ZzWuqRcUZSa58wCYe78E=; 7:+23+WCc19LZrnc+SzEVrduf0zCMX0u0k2uqMnRNoxPXnFK5lORwLJ+4iz32FGsl7FaL40avvtaBt67Li4qLXyMmdgsaX3DRahaB1p+zvcA0A3vJBhsGWU4BUxTQm7BK/FOGLmydvp3fGNfgEvlGLFClteiZ3fpGcDTx2HpyS0OnFUhzNuNUtqidXZBGvJbkoZLytzOnY3lb+9rtyV8cB9ujZUtvO5Rni7vxv8ieIk3kTVBr1A0b1ZLYsUvMRkLwX SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2018 04:55:16.9419 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 984d2397-62fe-4fc2-fbec-08d55bd42bef X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2697 Cc: ruchika.gupta@nxp.com Subject: [U-Boot] [PATCH] armv8: sec_firmware: Add support for multiple loadables X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 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" Enable support for multiple loadable images in SEC firmware FIT image. Signed-off-by: Sumit Garg --- arch/arm/cpu/armv8/sec_firmware.c | 51 +++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/arch/arm/cpu/armv8/sec_firmware.c b/arch/arm/cpu/armv8/sec_firmware.c index 927eae4..28de81c 100644 --- a/arch/arm/cpu/armv8/sec_firmware.c +++ b/arch/arm/cpu/armv8/sec_firmware.c @@ -116,11 +116,13 @@ static int sec_firmware_check_copy_loadable(const void *sec_firmware_img, u32 *loadable_l, u32 *loadable_h) { phys_addr_t sec_firmware_loadable_addr = 0; - int conf_node_off, ld_node_off; + int conf_node_off, ld_node_off, images; char *conf_node_name = NULL; const void *data; size_t size; ulong load; + const char *name, *str, *type; + int len; conf_node_name = SEC_FIRMEWARE_FIT_CNF_NAME; @@ -130,11 +132,32 @@ static int sec_firmware_check_copy_loadable(const void *sec_firmware_img, return -ENOENT; } - ld_node_off = fit_conf_get_prop_node(sec_firmware_img, conf_node_off, - FIT_LOADABLE_PROP); - if (ld_node_off >= 0) { - printf("SEC Firmware: '%s' present in config\n", - FIT_LOADABLE_PROP); + /* find the node holding the images information */ + images = fdt_path_offset(sec_firmware_img, FIT_IMAGES_PATH); + if (images < 0) { + debug("%s: Cannot find /images node: %d\n", __func__, images); + return -1; + } + + type = FIT_LOADABLE_PROP; + + name = fdt_getprop(sec_firmware_img, conf_node_off, type, &len); + if (!name) { + /* Loadables not present */ + return 0; + } + + printf("SEC Firmware: '%s' present in config\n", type); + + for (str = name; str && ((str - name) < len); + str = strchr(str, '\0') + 1) { + printf("%s: '%s'\n", type, str); + ld_node_off = fdt_subnode_offset(sec_firmware_img, images, str); + if (ld_node_off < 0) { + printf("cannot find image node '%s': %d\n", str, + ld_node_off); + return -EINVAL; + } /* Verify secure firmware image */ if (!(fit_image_verify(sec_firmware_img, ld_node_off))) { @@ -164,11 +187,19 @@ static int sec_firmware_check_copy_loadable(const void *sec_firmware_img, memcpy((void *)sec_firmware_loadable_addr, data, size); flush_dcache_range(sec_firmware_loadable_addr, sec_firmware_loadable_addr + size); - } - /* Populate address ptrs for loadable image with loadbale addr */ - out_le32(loadable_l, (sec_firmware_loadable_addr & WORD_MASK)); - out_le32(loadable_h, (sec_firmware_loadable_addr >> WORD_SHIFT)); + /* Populate loadable address only for Trusted OS */ + if (!strcmp(str, "trustedOS@1")) { + /* + * Populate address ptrs for loadable image with + * loadbale addr + */ + out_le32(loadable_l, (sec_firmware_loadable_addr & + WORD_MASK)); + out_le32(loadable_h, (sec_firmware_loadable_addr >> + WORD_SHIFT)); + } + } return 0; }