SPL: add support to boot from a partition type
PATCH 1/1 SPL: add support to boot from a partition type
From: Dalon Westergreen <[email protected]>
the socfpga bootrom supports mmc booting from either a raw image starting at 0x0, or from a partition of type 0xa2. This patch adds support for locating the boot image in the first type 0xa2 partition found.
--- common/spl/Kconfig | 17 +++++++++++++++++ common/spl/spl_mmc.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- disk/part_dos.c | 1 + include/part.h | 1 + 4 files changed, 63 insertions(+), 1 deletion(-)
common/spl/Kconfig +17 -0
@@ -97,6 +97,23 @@ config SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR Address on the MMC to load U-Boot from, when the MMC is being used in raw mode. Units: MMC sectors (1 sector = 512 bytes). +config SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE + bool "MMC raw mode: by partition type" + depends on SPL + default y if ARCH_SOCFPGA + help + Use partition type for specifying U-Boot partition on MMC/SD in + raw mode. U-Boot will be loaded from the first partition of this + type to be found. + +config SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE + hex "Partition Type on the MMC to load U-Boot from" + depends on SPL && SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE + default 0xa2 if ARCH_SOCFPGA + help + Partition Type on the MMC to load U-Boot from, when the MMC is being + used in raw mode. + config TPL bool depends on SPL && SUPPORT_TPL
common/spl/spl_mmc.c +44 -1
62 lines not on this page · raw message
disk/part_dos.c +1 -0
@@ -217,6 +217,7 @@ static int part_get_info_extended(struct blk_desc *dev_desc,#ifdef CONFIG_PARTITION_UUIDS sprintf (info->uuid,"%08x-%02x" , disksig, part_num);#endif + info->sys_ind = pt->sys_ind;return 0 ; }
include/part.h +1 -0
@@ -59,6 +59,7 @@ typedef struct disk_partition {#ifdef CONFIG_PARTITION_TYPE_GUID char type_guid[37 ];/* type GUID as string, if exists */ #endif +uchar sys_ind;/* partition type */ } disk_partition_t;/* Misc _get_dev functions */
Signature · 1 line
2.7.4
PATCH 1/1 SPL: add support to boot from a partition type
Quoted 7 lines · Dalon Westergreen
From: Dalon Westergreen <[email protected]>
the socfpga bootrom supports mmc booting from either a raw image starting at
0x0, or from a partition of type0xa2. This patch adds support for locating the boot image in the first type0xa2partition found.
Quoted 7 lines
Signed-off-by Dalon Westergreen <[email protected]>--- common/spl/Kconfig | 17 +++++++++++++++++ common/spl/spl_mmc.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- disk/part_dos.c | 1 + include/part.h | 1 + 4 files changed, 63 insertions(+), 1 deletion(-)
Today socfpga sets SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION to 1. Do you really have enough cases where the special partition isn't going to be likely known when building U-Boot for a given platform?
The code itself looks fine (I don't see an easy way to get at the max_entries field of the partition type struct, but assuming that the ROM only support MBR tables today you could use the DOS_ENTRY_NUMBERS constant with a comment above it). But we're making this bit of code even more complex and adding more #ifdefs.
[snip]
common/spl/spl_mmc.c int spl_mmc_load_image(struct spl_image_info *spl_image, · line 376
Quoted 11 lines
common/spl/spl_mmc.c +7
-0@@ -331,12 +367,19 @@ int spl_mmc_load_image(struct spl_image_info *spl_image, CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION);if (!err)return err; + +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE + err =mmc_load_image_raw_partition_type (spl_image, mmc, +CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE ); +if (!err) +return err; +#endif
... but couldn't we re-structure things so that both of the "boot from a partition" options take the same point from spl_mmc_load_image() instead set a partition variable depending on static/dynamic partition # being used? Or would that make things even messier looking? Thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170128/0ea9879a/attachment.sig>
Westergreen
PATCH 1/1 SPL: add support to boot from a partition type
Quoted 18 lines · Tom Rini
Quoted 8 lines · Dalon Westergreen
From: Dalon Westergreen <[email protected]>
the socfpga bootrom supports mmc booting from either a raw image starting at
0x0, or from a partition of type 0xa2.??This patch adds support for locating the boot image in the first type0xa2partition found.Quoted 7 lines
Signed-off-by Dalon Westergreen <[email protected]>---
?common/spl/Kconfig???| 17 +++++++++++++++++ ?common/spl/spl_mmc.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- ?disk/part_dos.c??????|??1 + ?include/part.h???????|??1 +?4 files changed, 63 insertions(+), 1 deletion(-)
Quoted 3 lines
Today socfpga sets
SYS_MMCSD_RAW_MODE_U_BOOT_PARTITIONto 1.??Do you really have enough cases where the special partition isn't going to be likely known when building U-Boot for a given platform?
All of our kits actually ship with the third partition being the 0xa2 partition. ?Normally the 1 partition is the fat partition. ?I want to support the case where the 0xa2 partition is arbitrary and used only for the SPL. ?the 1 partition is a fat partition with the full u-boot image.
Quoted 18 lines
The code itself looks fine (I don't see an easy way to get at the
max_entriesfield of the partition type struct, but assuming that the ROM only support MBR tables today you could use theDOS_ENTRY_NUMBERSconstant with a comment above it).??But we're making this bit of code even more complex and adding more #ifdefs.[snip]
Quoted 10 lines
common/spl/spl_mmc.c +4
-0@@ -331,12 +367,19 @@ int spl_mmc_load_image(struct spl_image_info *spl_image, ? CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION); ? if (!err) ? return err; + +#ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE + err = mmc_load_image_raw_partition_type(spl_image, mmc, + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_TYPE);
Quoted 9 lines
common/spl/spl_mmc.c int spl_mmc_load_image(struct spl_image_info *spl_image, · line 376
Quoted 3 lines
common/spl/spl_mmc.c +3
-0+if (!err) +return err; +#endif ... but couldn't we re-structure things so that both of the "boot from a partition" options take the same point from
spl_mmc_load_image()instead set a partition variable depending on static/dynamic partition # being used???Or would that make things even messier looking???Thanks!
yes, i like this. ?seems cleaner.
Quoted 4 lines
_______________________________________________
U-Boot mailing list
U-Boot at lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot
PATCH 1/1 SPL: add support to boot from a partition type
Quoted 19 lines · Dalon
Quoted 18 lines · Tom Rini
Quoted 15 lines · Dalon Westergreen
From: Dalon Westergreen <[email protected]>
the socfpga bootrom supports mmc booting from either a raw image starting at
0x0, or from a partition of type 0xa2.??This patch adds support for locating the boot image in the first type0xa2partition found.Signed-off-by Dalon Westergreen <[email protected]>---
?common/spl/Kconfig???| 17 +++++++++++++++++ ?common/spl/spl_mmc.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- ?disk/part_dos.c??????|??1 + ?include/part.h???????|??1 +?4 files changed, 63 insertions(+), 1 deletion(-)
Quoted 7 lines
Quoted 3 lines
Today socfpga sets
SYS_MMCSD_RAW_MODE_U_BOOT_PARTITIONto 1.??Do you really have enough cases where the special partition isn't going to be likely known when building U-Boot for a given platform?All of our kits actually ship with the third partition being the
0xa2partition. ?Normally the 1 partition is the fat partition. ?I want to support the case where the0xa2partition is arbitrary and used only for the SPL. ?the 1 partition is a fat partition with the full u-boot image.
Er, this code is where we determine where to load U-Boot from, SPL is running. So if I follow you, the bootrom would load SPL from the partition with 0xa2 as the type, usually #3 and then we load U-Boot from the FAT partition (which would be SPL_FS_LOAD_PAYLOAD_NAME and such) ?
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170128/a8059bb0/attachment.sig>
Westergreen
PATCH 1/1 SPL: add support to boot from a partition type
Quoted 31 lines · Tom Rini
Quoted 22 lines · Dalon
Quoted 20 lines · Tom Rini
Quoted 16 lines · Dalon Westergreen
From: Dalon Westergreen <[email protected]>
the socfpga bootrom supports mmc booting from either a raw image starting at
0x0, or from a partition of type 0xa2.??This patch adds support for locating the boot image in the first type0xa2partition found.Signed-off-by Dalon Westergreen <[email protected]>---
?common/spl/Kconfig???| 17 +++++++++++++++++ ?common/spl/spl_mmc.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- ?disk/part_dos.c??????|??1 + ?include/part.h???????|??1 +?4 files changed, 63 insertions(+), 1 deletion(-)
Quoted 7 lines
Quoted 3 lines
Today socfpga sets
SYS_MMCSD_RAW_MODE_U_BOOT_PARTITIONto 1.??Do you really have enough cases where the special partition isn't going to be likely known when building U-Boot for a given platform?All of our kits actually ship with the third partition being the
0xa2partition. ?Normally the 1 partition is the fat partition. ?I want to support the case where the0xa2partition is arbitrary and used only for the SPL. ?the 1 partition is a fat partition with the full u-boot image.
Quoted 5 lines
Er, this code is where we determine where to load U-Boot from, SPL is running.??So if I follow you, the bootrom would load SPL from the partition with
0xa2as the type, usually #3 and then we load U-Boot from the FAT partition (which would beSPL_FS_LOAD_PAYLOAD_NAMEand such) ?
yes, or if FAT isn't enabled, the spl would load the image in the 0xa2 partition or the?CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION offset by CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR. ?Both are reasonable and? supported. ?my current thought is if partition = -1 and? CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE is set then search for the a2 partition. ?work for you?
--dalon