From 8c3df0bf2e530c6e6f592f5144ef4f456c9e0260 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 11 Apr 2016 16:16:18 +0200 Subject: 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 --- cmd/bootefi.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'cmd/bootefi.c') diff --git a/cmd/bootefi.c b/cmd/bootefi.c index 3add632..0d09aa1 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'; -- cgit v1.1