From patchwork Tue Aug 15 18:14:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: York Sun X-Patchwork-Id: 801712 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 3xX11K3y7Jz9s7h for ; Wed, 16 Aug 2017 04:17:57 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id F1E0CC21DCA; Tue, 15 Aug 2017 18:16:25 +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, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, 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 A87CCC21DC5; Tue, 15 Aug 2017 18:15:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 8744DC21DCC; Tue, 15 Aug 2017 18:15:38 +0000 (UTC) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0062.outbound.protection.outlook.com [104.47.36.62]) by lists.denx.de (Postfix) with ESMTPS id C3C7BC21DED for ; Tue, 15 Aug 2017 18:15:34 +0000 (UTC) Received: from CY4PR03CA0016.namprd03.prod.outlook.com (2603:10b6:903:33::26) by SN2PR03MB2272.namprd03.prod.outlook.com (2603:10b6:804:d::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1341.21; Tue, 15 Aug 2017 18:15:32 +0000 Received: from BN1BFFO11FD018.protection.gbl (2a01:111:f400:7c10::1:195) by CY4PR03CA0016.outlook.office365.com (2603:10b6:903:33::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1341.21 via Frontend Transport; Tue, 15 Aug 2017 18:15:32 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; ti.com; dkim=none (message not signed) header.d=none;ti.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1BFFO11FD018.mail.protection.outlook.com (10.58.144.81) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1304.16 via Frontend Transport; Tue, 15 Aug 2017 18:15:28 +0000 Received: from oslab-l16.am.freescale.net ([10.214.86.70]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v7FIEnNZ015332; Tue, 15 Aug 2017 11:15:21 -0700 From: York Sun To: U-Boot Mailing List Date: Tue, 15 Aug 2017 11:14:45 -0700 Message-ID: <1502820885-10346-6-git-send-email-york.sun@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1502820885-10346-1-git-send-email-york.sun@nxp.com> References: <1502820885-10346-1-git-send-email-york.sun@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131472945317030820; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(104016004)(76176999)(81166006)(105606002)(50986999)(8936002)(54906002)(189998001)(81156014)(626005)(48376002)(97736004)(305945005)(77096006)(8676002)(498600001)(4326008)(50466002)(6916009)(5660300001)(106466001)(47776003)(6666003)(53936002)(2950100002)(5003940100001)(356003)(33646002)(110136004)(69596002)(68736007)(2906002)(85426001)(86362001)(50226002)(8656003)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR03MB2272; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD018; 1:6t2kpa/Sulmz0Du4Nsm2aCy7Y05hEIO9WYrSni3fNE8VLAKO8TiGaAe2i/2Z+gpEalNrWiILQzOKeRnC+ZZEIEgpNTjHWChOurFEXa/1psHlfPNnOvDLH5toLTK5rIckrlvKkgfzIBkUVm/Ec6ZmU+dU/XDcv64BFvqHgGgOrzwUQixMrNfds3gibGLhbfs74sjaDJbJt72SUiTCWG71mhy7B2+L1CXC/r1D4ayOhmgwRnkraaL8fPeN2ax/QIRF7t50y+/3gEU8bYnVeUevKG0X/M0abqGDB+OlXYS5f5IN/PLpdTA1uIs1rVbaXL3pikDwvLdE3MrPBn5uyn60oBpH32bNhxA73FZk1mwPcMc5XZRM1uv9OuAaSlXs54MeAjtvGCzUZ3KBVVS3dWwcb2XYZ69sA+1UWYDGOBlVUQEUocYLfo9Rni0mnXp7P2WiAO5n5EwZik01gOMUjU5XJVMmZXIJoYjEGrkBicSlaVvYi1wsvwLwt3Pj1THgYaNCdhVA0E2eCUKmMPL396RBDy3DEWe3zNu/LwOlzyzx16YIY7TeR7T4lnIH6BI0EahyUeJz41Za88V14HS5eLknMy/2zziY3vPgDlcO/Sm+rJZC0I96XHSKRhJ6MhedLivAazZCH2WC8mQ3oHkJH5fFHYpmslgVoLZcsZofi02GLZwM94A3xlol979GD5ZeAfp13dhxxao/OSWHkQ1gaqMXeqhVzmJafD2yFmXHb0gH1uayjysAMLlMxmD5f7xaXJnUAQXheio4j7EQqpuZd4zUHhOF/H5l6uwwawEYZiesp3fF2qKTb/ONmsLBkD5byZzIJ12WCfZ7Am4tE9L0aJIrj6erTD1cYd1nIEmHPacNgKQ6qNoz5HjCvuqdg52CZ0yp MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 466f4d9f-f915-48ac-0781-08d4e4099da2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:SN2PR03MB2272; X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB2272; 3:34J0iRToMe1gEtc0vc3/cgI+uv0iYWG3bHdPuYoQdqqYnL+MplYIKFVxXxUqOMvlCsktM5nerCzf33cshZ3TrKD123Y6ITZbSfMdrxy2186qzjrm9v3cDcI+0ZI5kGVE3fcrLhWGbjxBXIIYkzxYCTfOUkAjQaGmnPH6NbKPKnQDbaQdbuRRyaJNngmSCNJAhHyA0cuT4WSJhipTCEKZpB5tvPiq7XWi9ggMleVgaUHKQvdqbOU6+Z2VEhA4gFBjINqSEw0cDGy+wsvp/KSWCjBLQwLpPGOFYb/LcfroA3GgA5hMg2e7kaChAxeqTcay9SSJVkQ5S8RagjkBnBV3Gn24InTPsKFskTbHjuTW4Lk=; 25:sjQIUBv8qfH3kXXvmy9O+HvHR1YZ3WxI1DKk/v84klyPsfTjD2xOoHPu9BSZkHKIO2cX3Veuv3hqJ9C4ACjCaEdWNdIAsNVeDYL/5rn7iM6qXrHv13MawOLTq8aozseh+b2iZDpPkvFOkIF1HTQNYrJsYr/hUgHLjYfajx5IJUYXJwaERzl3IHpNRJf4dK6T8pZ2Cla0ujx8CHCRaT1itUnNoF1QRFTSgRhKGTY1YqRRluiodNxItJm+uZXzn6l3wHayEz+VAvkAm6vBDuVMHF25SrNQSPLdPaN2ir31vfsI0RsYb0Cbh6R2m4DxvN0XDX1ShIkTbUk1xU4EccRjUg== X-MS-TrafficTypeDiagnostic: SN2PR03MB2272: X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB2272; 31:PTkrneX4xmgSL8LORXdA3Km9MIem6saBG71Imkev27J051iEMT41CsATsoX8CAClrNTbLn1va2kgQdgeFenGJ/j/VQxcC3CErWkgHE7Tpcf0lHudXp4Eo8cOhgZ717WRtFrA2uQWV3pWCaRbZpZ0t1SJCJfc5i3rHJh+WStHZWwB1gp24dqUYrZLaacKpcK2NKkhbHI+4OAp8N3vTlgg+/n5v1sj/F3AQU42PyyH8bw=; 4:1SAf0idjmXZiTxBtI7t2WKXhSofGd6mPoq5F49DcyECN9wm31aoXVfU8XX1e1JlMxVJiQ4oWlveyb0AbZocALDxf9h6TdGcmd0g0K0l3jAM7TEFvKEaU/FKvB1LbFTHHpfihDAz9qpqLvakAWC1wcX5Z2R4RZRD3xmDXc4V4GKva1ZzoohKSUaRi5r/Thq8q95l/4XNiMXPtU8km9xAukWvFkZF47id0jPdxNiQ4b0vOfk7LVe0/FtPVVQrK4kZ4DIiS7zsMTjFTNUqU53tt8ZU3MtmXBIC8z9uZJx4y2dI= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(5005006)(13016025)(8121501046)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123556025)(20161123565025)(20161123559100)(20161123563025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:SN2PR03MB2272; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:SN2PR03MB2272; X-Forefront-PRVS: 04004D94E2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR03MB2272; 23:yQztK0LgVl0V9D990tXwZM6n2u/2mJ/p7Sb5M1X8q?= =?us-ascii?Q?lQE2EGn2WjON+OuiYNtcmRKM+L3ah7uBl/VCrPwY6DDZdPFWgMkd9EgRExaH?= =?us-ascii?Q?2KHCTlNbUGXwQIZD1GiIndaHoftsmYg2p07EjIg8W2VVYDT1Q/l/6QFTO+53?= =?us-ascii?Q?EDFd2n5HMs2ErShBntps4udERQuQoNh0p2w+4kRCXOoVth68OQEe+2iYPDur?= =?us-ascii?Q?bo/e1GCJrMnOZx4l3idIS8mtb2VB8lkWqxqQPJ4XFWWbd8YI8Us/iHkHumE9?= =?us-ascii?Q?UimTuVGMkHp+bqNJfAgajW24wTV26lWlYT7JoM5Loi9hWeJiWJjimghNTvPc?= =?us-ascii?Q?agEVl4vrqyVLpb5s2sDYB4IVjmHKHIue5PHiBk6kBunkhM4/E42YhB855kgM?= =?us-ascii?Q?fWexXkqUaOVtMNJqpUoNTD8hiwXB8tX9cah+ztL6O+Je4QxU3okgdx4P4DDd?= =?us-ascii?Q?ISGWaV8P4VkW2KOjVoZRks1DWGCThxucrtNtJCjhSMW1mkGdPGoMKTFG5W5f?= =?us-ascii?Q?/XWwt6UUGlGdWEgaVR2w3CsivB5T0871OV1PU1eKEW0C6CD3vnUUQE9wDmMf?= =?us-ascii?Q?oCCogPDOKea8/ubtcAGLbaY0gGMB5JIN4yU1C/EfltBQUkURFDEZHAtnTCgL?= =?us-ascii?Q?wZQ76IvJLej7yqdZg+sSBYMmJKgvAzirXVGu2eS992/rfGtuaO7/azCc46LU?= =?us-ascii?Q?zZDjkzXbg7wIUchaczKgCOje3BWb1JN/SUDGcz11uo8TpYoSLQGBPMCgl2aj?= =?us-ascii?Q?bdH7t6vndFMOVMYFKaNnd2IGN+wwMywtdNcD8HkJ61Vnw6GVI7fQt8F/nxTb?= =?us-ascii?Q?4ChA1zMI/kbERitxCNe3Qe7E4N0DcifTqcuvyVMSkZb3B+zVx2tvntMJPKVq?= =?us-ascii?Q?lyg4LFjZj7/eRuNUXxz0E6KVEpERfFverTICjBxJpOtGB921I0vde4Bb0ZQj?= =?us-ascii?Q?goOs8/unoe2f73iUqmrpG13pllahq296EtIYKOfG1e3aUHLL38IP8MvFSOS9?= =?us-ascii?Q?Vvydv/gDCSjpBK+vU2v0QPvwYFwULwRbOqsNAVJRz4/UmyNt/SwfDCQOXePl?= =?us-ascii?Q?Fr2YBlEoOjxZS/w+pc8rBG2aeA1lrpswLERs8OjOjxqccsvt15wXGRhkAleY?= =?us-ascii?Q?hc976Ah44TVfZnZe/9Lj502gCRPv1kJ?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR03MB2272; 6:N/nlZCdIdC4m4mC7A29q38iR5fjrEtvl/d8ZAHidFQU44cibykxqL+QloNeU4MPRuFeq7nwzpmokfmkcGgVx8HPD4nxj3uj+kZ07G4uP/5gJIeQbmxyFmWEdrIUhMxO+g3WPpKXA2HYPtj+PRbJOpL0qbf0pFa5HsWCq2rtnOJ8odv8hHq4iGfFI/daDu/Fkt6FTyzPD6vfCRQ+W5MJH4n9jeig2vBgV3RPKM0AqMRlS7kW7nnJjNX0wh06dwlErbWA0/cxlXd/18hRa1jA6NfbGnEFEv9SxuC4229eju0FfTerdiPY7CJTpNdvg0LcPZ3KwdOCYGvDCfL8fLBieBQ==; 5:NosdqvsXhJp2XXqL4/5lH2x9P/4UEuKgqWjZpAqdrBmMaXCbivSOUuKCnQi9gdcNLEAkMKziB0AE0XzkpbrBOiuMJoRc82MYeM+z8m+XoLqU625XMzr26BzJDXcAAp5se3njvthRLzq7ChjDalqYZA==; 24:FL30GUGPOuYEPNyyK5hRVUgfWIfBHlBiDlW5AeOBUxaE7u2O/Yj+Vf9U98VJmNw73Hq9Dxr0m9JVTdku6fNH0vGGBWybAAAW1GehFC5S6nU=; 7:EDa2CenFuHt3lH9xDksUlD2JdrRl0c82cLOGucQIhYpmNVw6+ZKj8V8sXt1haVMfpkLw7WajBBTdy3UEMJUSc/5FY2Dj9mA3IiOBixXbyXiy1TCFUESuaEIFu6sXT6dcbJXWsvV+Ezi8BZtKHPSRdrMTTOclRl+vs9RDMdHLnVBn/SIztZArfRTuZwdcM0m636Ow9bce5FSELEghLxGWJ6hUo4DOJiTM/KhYe0Z7nkM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2017 18:15:28.6142 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR03MB2272 Cc: Andre Przywara , Jagan Teki , Lokesh Vutla , "Cooper Jr. Franklin" Subject: [U-Boot] [PATCH v3 5/5] spl: fit: Add booting OS first 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" If CONFIG_SPL_OS_BOOT is enabled, boot OS if kernel image is found in FIT structure. Signed-off-by: York Sun Reviewed-by: Tom Rini Reviewed-by: Simon Glass --- This presums the kernel image doesn't exist in a FIT image intended for U-Boot. If kernel image normally co-exists with U-Boot and other images and user intends to boot U-Boot, this patch needs to rewrite to favor "loadables" over either "firmware" or "kernel" so user can select which image to boot. Changes in v3: Update doc/uImage.FIT/multi_spl.its to explain the priority of booting image. Changes in v2: Split from previous patch, rebased on top of "SPL: FIT: allow loading multiple images" by Andre Przywara. common/spl/spl_fit.c | 60 ++++++++++++++++++++++++++++++-------------- doc/uImage.FIT/multi_spl.its | 7 ++++++ 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index 9449a22..49ccf1c 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -222,13 +222,16 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, ulong size; unsigned long count; struct spl_image_info image_info; - int node, images, ret; + bool boot_os = false; + int node = -1; + int images, ret; int base_offset, align_len = ARCH_DMA_MINALIGN - 1; int index = 0; /* - * Figure out where the external images start. This is the base for the - * data-offset properties in each image. + * For FIT with external data, figure out where the external images + * start. This is the base for the data-offset properties in each + * image. */ size = fdt_totalsize(fit); size = (size + 3) & ~3; @@ -247,6 +250,9 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, * * In fact the FIT has its own load address, but we assume it cannot * be before CONFIG_SYS_TEXT_BASE. + * + * For FIT with data embedded, data is loaded as part of FIT image. + * For FIT with external data, data is not loaded in this step. */ fit = (void *)((CONFIG_SYS_TEXT_BASE - size - info->bl_len - align_len) & ~align_len); @@ -264,8 +270,17 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, return -1; } +#ifdef CONFIG_SPL_OS_BOOT + /* Find OS image first */ + node = spl_fit_get_image_node(fit, images, FIT_KERNEL_PROP, 0); + if (node < 0) + debug("No kernel image.\n"); + else + boot_os = true; +#endif /* find the U-Boot image */ - node = spl_fit_get_image_node(fit, images, "firmware", 0); + if (node < 0) + node = spl_fit_get_image_node(fit, images, "firmware", 0); if (node < 0) { debug("could not find firmware image, trying loadables...\n"); node = spl_fit_get_image_node(fit, images, "loadables", 0); @@ -287,24 +302,31 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, if (ret) return ret; +#ifdef CONFIG_SPL_OS_BOOT + if (!fit_image_get_os(fit, node, &spl_image->os)) + debug("Image OS is %s\n", genimg_get_os_name(spl_image->os)); +#else spl_image->os = IH_OS_U_BOOT; +#endif - /* Figure out which device tree the board wants to use */ - node = spl_fit_get_image_node(fit, images, FIT_FDT_PROP, 0); - if (node < 0) { - debug("%s: cannot find FDT node\n", __func__); - return node; - } + if (!boot_os) { + /* Figure out which device tree the board wants to use */ + node = spl_fit_get_image_node(fit, images, FIT_FDT_PROP, 0); + if (node < 0) { + debug("%s: cannot find FDT node\n", __func__); + return node; + } - /* - * Read the device tree and place it after the image. - * Align the destination address to ARCH_DMA_MINALIGN. - */ - image_info.load_addr = spl_image->load_addr + spl_image->size; - ret = spl_load_fit_image(info, sector, fit, base_offset, node, - &image_info); - if (ret < 0) - return ret; + /* + * Read the device tree and place it after the image. + * Align the destination address to ARCH_DMA_MINALIGN. + */ + image_info.load_addr = spl_image->load_addr + spl_image->size; + ret = spl_load_fit_image(info, sector, fit, base_offset, node, + &image_info); + if (ret < 0) + return ret; + } /* Now check if there are more images for us to load */ for (; ; index++) { diff --git a/doc/uImage.FIT/multi_spl.its b/doc/uImage.FIT/multi_spl.its index e5551d4..d43563d 100644 --- a/doc/uImage.FIT/multi_spl.its +++ b/doc/uImage.FIT/multi_spl.its @@ -4,6 +4,13 @@ * (Bogus) example FIT image description file demonstrating the usage * of multiple images loaded by the SPL. * Several binaries will be loaded at their respective load addresses. + * + * For booting U-Boot, "firmware" is searched first. If not found, "loadables" + * is used to identify images to be loaded into memory. If falcon boot is + * enabled, "kernel" is searched first. If not found, it falls back to the + * same flow as booting U-Boot. Changing image type will result skipping + * specific image. + * * Finally the one image specifying an entry point will be entered by the SPL. */