diff options
| author | Alexander Graf <[email protected]> | 2016-04-11 16:16:18 +0200 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2016-04-18 17:11:36 -0400 |
| commit | 8c3df0bf2e530c6e6f592f5144ef4f456c9e0260 (patch) | |
| tree | 0d412d7149894a05380224ac84ad07e2643c6d2f /cmd | |
| parent | 4a12a97c14217a5b02791040e464449f779fce43 (diff) | |
efi_loader: Add el torito support
When loading an el torito image, uEFI exposes said image as a raw
block device to the payload.
Let's do the same by creating new block devices with added offsets for
the respective el torito partitions.
Signed-off-by: Alexander Graf <[email protected]>
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/bootefi.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 3add632bc4b..0d09aa1e3b9 100644 --- a/cmd/bootefi.c +++ b/cmd/bootefi.c @@ -194,12 +194,26 @@ U_BOOT_CMD( void efi_set_bootdev(const char *dev, const char *devnr) { + __maybe_unused struct blk_desc *desc; char devname[16] = { 0 }; /* dp->str is u16[16] long */ char *colon; /* Assemble the condensed device name we use in efi_disk.c */ snprintf(devname, sizeof(devname), "%s%s", dev, devnr); colon = strchr(devname, ':'); + +#ifdef CONFIG_ISO_PARTITION + /* For ISOs we create partition block devices */ + desc = blk_get_dev(dev, simple_strtol(devnr, NULL, 10)); + if (desc && (desc->type != DEV_TYPE_UNKNOWN) && + (desc->part_type == PART_TYPE_ISO)) { + if (!colon) + snprintf(devname, sizeof(devname), "%s%s:1", dev, + devnr); + colon = NULL; + } +#endif + if (colon) *colon = '\0'; |
