diff options
author | Daniel Golle <daniel@makrotopia.org> | 2021-07-12 16:54:45 +0100 |
---|---|---|
committer | Daniel Golle <daniel@makrotopia.org> | 2021-07-20 04:11:05 +0100 |
commit | 8d633bf9f71e52aaefa917c83ab8e71622253e74 (patch) | |
tree | 43c75ffdb085e8facdc594fd704a6cad7fc86dd2 /target/linux | |
parent | 932366fdd97090f909cec2c5f1dffeebd2806998 (diff) | |
download | upstream-8d633bf9f71e52aaefa917c83ab8e71622253e74.tar.gz upstream-8d633bf9f71e52aaefa917c83ab8e71622253e74.tar.bz2 upstream-8d633bf9f71e52aaefa917c83ab8e71622253e74.zip |
kernel: make uImage.FIT partition parser work on MBR partitions
Introduce new partition type 0x2e representing uImage.FIT and trigger
FIT partition parser on partitions having that type.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'target/linux')
-rw-r--r-- | target/linux/generic/files/block/partitions/fit.c | 4 | ||||
-rw-r--r-- | target/linux/generic/hack-5.10/410-block-fit-partition-parser.patch | 36 |
2 files changed, 38 insertions, 2 deletions
diff --git a/target/linux/generic/files/block/partitions/fit.c b/target/linux/generic/files/block/partitions/fit.c index 823ee715de..27e44a4af4 100644 --- a/target/linux/generic/files/block/partitions/fit.c +++ b/target/linux/generic/files/block/partitions/fit.c @@ -189,8 +189,8 @@ int parse_fit_partitions(struct parsed_partitions *state, u64 fit_start_sector, image_description = fdt_getprop(fit, node, FIT_DESC_PROP, &image_description_len); - printk(KERN_DEBUG "FIT: %16s sub-image 0x%08x - 0x%08x \"%s\" %s%s%s\n", - image_type, image_pos, image_pos + image_len, image_name, + printk(KERN_DEBUG "FIT: %16s sub-image 0x%08x..0x%08x \"%s\" %s%s%s\n", + image_type, image_pos, image_pos + image_len - 1, image_name, image_description?"(":"", image_description?:"", image_description?") ":""); if (strcmp(image_type, FIT_FILESYSTEM_PROP)) diff --git a/target/linux/generic/hack-5.10/410-block-fit-partition-parser.patch b/target/linux/generic/hack-5.10/410-block-fit-partition-parser.patch index 2528f3afa1..6c2132e85e 100644 --- a/target/linux/generic/hack-5.10/410-block-fit-partition-parser.patch +++ b/target/linux/generic/hack-5.10/410-block-fit-partition-parser.patch @@ -217,3 +217,39 @@ set_capacity(gd, ((u64)new->size * tr->blksize) >> 9); +--- a/block/partitions/msdos.c ++++ b/block/partitions/msdos.c +@@ -565,6 +565,15 @@ static void parse_minix(struct parsed_pa + #endif /* CONFIG_MINIX_SUBPARTITION */ + } + ++static void parse_fit_mbr(struct parsed_partitions *state, ++ sector_t offset, sector_t size, int origin) ++{ ++#ifdef CONFIG_FIT_PARTITION ++ u32 extra_slot = 64; ++ (void) parse_fit_partitions(state, offset, size, &extra_slot, 1); ++#endif /* CONFIG_FIT_PARTITION */ ++} ++ + static struct { + unsigned char id; + void (*parse)(struct parsed_partitions *, sector_t, sector_t, int); +@@ -576,6 +585,7 @@ static struct { + {UNIXWARE_PARTITION, parse_unixware}, + {SOLARIS_X86_PARTITION, parse_solaris_x86}, + {NEW_SOLARIS_X86_PARTITION, parse_solaris_x86}, ++ {FIT_PARTITION, parse_fit_mbr}, + {0, NULL}, + }; + +--- a/include/linux/msdos_partition.h ++++ b/include/linux/msdos_partition.h +@@ -31,6 +31,7 @@ enum msdos_sys_ind { + LINUX_LVM_PARTITION = 0x8e, + LINUX_RAID_PARTITION = 0xfd, /* autodetect RAID partition */ + ++ FIT_PARTITION = 0x2e, /* U-Boot uImage.FIT */ + SOLARIS_X86_PARTITION = 0x82, /* also Linux swap partitions */ + NEW_SOLARIS_X86_PARTITION = 0xbf, + |