diff mbox series

[11/35] RFC: efi: Drop code that doesn't work with driver model

Message ID 20210908073355.11.Id572ddf5eb457096b95d30ae2d8675f539367fe8@changeid
State Changes Requested
Delegated to: Heinrich Schuchardt
Headers show
Series efi: Improvements to U-Boot running on top of UEFI | expand

Commit Message

Simon Glass Sept. 8, 2021, 1:33 p.m. UTC
This code should never have been added as it builds a new feature on top
of legacy code. Drop it and add a dependency on BLK for this feature.

Boards which want EFI_LOADER should migrate to driver model first.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 lib/efi_driver/Makefile          |  2 +-
 lib/efi_loader/Kconfig           |  2 +
 lib/efi_loader/efi_device_path.c | 96 +++++++-------------------------
 lib/efi_loader/efi_disk.c        | 48 ----------------
 4 files changed, 24 insertions(+), 124 deletions(-)

Comments

Heinrich Schuchardt Sept. 8, 2021, 5:44 p.m. UTC | #1
On 9/8/21 3:33 PM, Simon Glass wrote:
> This code should never have been added as it builds a new feature on top
> of legacy code. Drop it and add a dependency on BLK for this feature.
>
> Boards which want EFI_LOADER should migrate to driver model first.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>

This patch is not related to the rest of the series and the code has a
different maintainer.

So, please, separate it from the series.

Best regards

Heinrich

> ---
>
>   lib/efi_driver/Makefile          |  2 +-
>   lib/efi_loader/Kconfig           |  2 +
>   lib/efi_loader/efi_device_path.c | 96 +++++++-------------------------
>   lib/efi_loader/efi_disk.c        | 48 ----------------
>   4 files changed, 24 insertions(+), 124 deletions(-)
>
> diff --git a/lib/efi_driver/Makefile b/lib/efi_driver/Makefile
> index 83baa1c9a49..f2b6c05cc24 100644
> --- a/lib/efi_driver/Makefile
> +++ b/lib/efi_driver/Makefile
> @@ -6,6 +6,6 @@
>   # object inclusion implicitly depends on it
>
>   obj-y += efi_uclass.o
> -ifeq ($(CONFIG_BLK)$(CONFIG_PARTITIONS),yy)
> +ifeq ($(CONFIG_PARTITIONS),y)
>   obj-y += efi_block_device.o
>   endif
> diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
> index dacc3b58810..799aa1a7512 100644
> --- a/lib/efi_loader/Kconfig
> +++ b/lib/efi_loader/Kconfig
> @@ -10,6 +10,8 @@ config EFI_LOADER
>   	depends on !EFI_STUB || !X86_64 || EFI_STUB_64BIT
>   	# We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
>   	depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
> +	depends on BLK
> +	depends on DM_ETH || !NET
>   	default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
>   	select LIB_UUID
>   	select PARTITION_UUIDS
> diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
> index cbdb466da41..a09090a32e4 100644
> --- a/lib/efi_loader/efi_device_path.c
> +++ b/lib/efi_loader/efi_device_path.c
> @@ -46,7 +46,7 @@ static const struct efi_device_path_vendor ROOT = {
>   	.guid = U_BOOT_GUID,
>   };
>
> -#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
> +#if defined(CONFIG_MMC)
>   /*
>    * Determine if an MMC device is an SD card.
>    *
> @@ -486,7 +486,6 @@ bool efi_dp_is_multi_instance(const struct efi_device_path *dp)
>   	return p->sub_type == DEVICE_PATH_SUB_TYPE_INSTANCE_END;
>   }
>
> -#ifdef CONFIG_DM
>   /* size of device-path not including END node for device and all parents
>    * up to the root device.
>    */
> @@ -503,7 +502,6 @@ __maybe_unused static unsigned int dp_size(struct udevice *dev)
>   	case UCLASS_ETH:
>   		return dp_size(dev->parent) +
>   			sizeof(struct efi_device_path_mac_addr);
> -#ifdef CONFIG_BLK
>   	case UCLASS_BLK:
>   		switch (dev->parent->uclass->uc_drv->id) {
>   #ifdef CONFIG_IDE
> @@ -511,12 +509,12 @@ __maybe_unused static unsigned int dp_size(struct udevice *dev)
>   			return dp_size(dev->parent) +
>   				sizeof(struct efi_device_path_atapi);
>   #endif
> -#if defined(CONFIG_SCSI) && defined(CONFIG_DM_SCSI)
> +#if defined(CONFIG_SCSI)
>   		case UCLASS_SCSI:
>   			return dp_size(dev->parent) +
>   				sizeof(struct efi_device_path_scsi);
>   #endif
> -#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
> +#if defined(CONFIG_MMC)
>   		case UCLASS_MMC:
>   			return dp_size(dev->parent) +
>   				sizeof(struct efi_device_path_sd_mmc_path);
> @@ -554,8 +552,7 @@ __maybe_unused static unsigned int dp_size(struct udevice *dev)
>   		default:
>   			return dp_size(dev->parent);
>   		}
> -#endif
> -#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
> +#if defined(CONFIG_MMC)
>   	case UCLASS_MMC:
>   		return dp_size(dev->parent) +
>   			sizeof(struct efi_device_path_sd_mmc_path);
> @@ -590,7 +587,7 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
>   		*vdp = ROOT;
>   		return &vdp[1];
>   	}
> -#ifdef CONFIG_DM_ETH
> +#ifdef CONFIG_NET
>   	case UCLASS_ETH: {
>   		struct efi_device_path_mac_addr *dp =
>   			dp_fill(buf, dev->parent);
> @@ -607,7 +604,6 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
>   		return &dp[1];
>   	}
>   #endif
> -#ifdef CONFIG_BLK
>   	case UCLASS_BLK:
>   		switch (dev->parent->uclass->uc_drv->id) {
>   #ifdef CONFIG_SANDBOX
> @@ -662,7 +658,7 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
>   			return &dp[1];
>   			}
>   #endif
> -#if defined(CONFIG_SCSI) && defined(CONFIG_DM_SCSI)
> +#if defined(CONFIG_SCSI)
>   		case UCLASS_SCSI: {
>   			struct efi_device_path_scsi *dp =
>   				dp_fill(buf, dev->parent);
> @@ -676,7 +672,7 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
>   			return &dp[1];
>   			}
>   #endif
> -#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
> +#if defined(CONFIG_MMC)
>   		case UCLASS_MMC: {
>   			struct efi_device_path_sd_mmc_path *sddp =
>   				dp_fill(buf, dev->parent);
> @@ -727,8 +723,7 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
>   			      dev->name, dev->parent->uclass->uc_drv->id);
>   			return dp_fill(buf, dev->parent);
>   		}
> -#endif
> -#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
> +#if defined(CONFIG_MMC)
>   	case UCLASS_MMC: {
>   		struct efi_device_path_sd_mmc_path *sddp =
>   			dp_fill(buf, dev->parent);
> @@ -770,24 +765,18 @@ __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
>   		return dp_fill(buf, dev->parent);
>   	}
>   }
> -#endif
>
>   static unsigned dp_part_size(struct blk_desc *desc, int part)
>   {
>   	unsigned dpsize;
> +	struct udevice *dev;
> +	int ret;
>
> -#ifdef CONFIG_BLK
> -	{
> -		struct udevice *dev;
> -		int ret = blk_find_device(desc->if_type, desc->devnum, &dev);
> +	ret = blk_find_device(desc->if_type, desc->devnum, &dev);
>
> -		if (ret)
> -			dev = desc->bdev->parent;
> -		dpsize = dp_size(dev);
> -	}
> -#else
> -	dpsize = sizeof(ROOT) + sizeof(struct efi_device_path_usb);
> -#endif
> +	if (ret)
> +		dev = desc->bdev->parent;
> +	dpsize = dp_size(dev);
>
>   	if (part == 0) /* the actual disk, not a partition */
>   		return dpsize;
> @@ -877,36 +866,14 @@ static void *dp_part_node(void *buf, struct blk_desc *desc, int part)
>    */
>   static void *dp_part_fill(void *buf, struct blk_desc *desc, int part)
>   {
> -#ifdef CONFIG_BLK
> -	{
> -		struct udevice *dev;
> -		int ret = blk_find_device(desc->if_type, desc->devnum, &dev);
> +	struct udevice *dev;
> +	int ret;
>
> -		if (ret)
> -			dev = desc->bdev->parent;
> -		buf = dp_fill(buf, dev);
> -	}
> -#else
> -	/*
> -	 * We *could* make a more accurate path, by looking at if_type
> -	 * and handling all the different cases like we do for non-
> -	 * legacy (i.e. CONFIG_BLK=y) case. But most important thing
> -	 * is just to have a unique device-path for if_type+devnum.
> -	 * So map things to a fictitious USB device.
> -	 */
> -	struct efi_device_path_usb *udp;
> -
> -	memcpy(buf, &ROOT, sizeof(ROOT));
> -	buf += sizeof(ROOT);
> -
> -	udp = buf;
> -	udp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
> -	udp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_USB;
> -	udp->dp.length = sizeof(*udp);
> -	udp->parent_port_number = desc->if_type;
> -	udp->usb_interface = desc->devnum;
> -	buf = &udp[1];
> -#endif
> +	ret = blk_find_device(desc->if_type, desc->devnum, &dev);
> +
> +	if (ret)
> +		dev = desc->bdev->parent;
> +	buf = dp_fill(buf, dev);
>
>   	if (part == 0) /* the actual disk, not a partition */
>   		return buf;
> @@ -1051,39 +1018,18 @@ struct efi_device_path *efi_dp_from_uart(void)
>   #ifdef CONFIG_NET
>   struct efi_device_path *efi_dp_from_eth(void)
>   {
> -#ifndef CONFIG_DM_ETH
> -	struct efi_device_path_mac_addr *ndp;
> -#endif
>   	void *buf, *start;
>   	unsigned dpsize = 0;
>
>   	assert(eth_get_dev());
>
> -#ifdef CONFIG_DM_ETH
>   	dpsize += dp_size(eth_get_dev());
> -#else
> -	dpsize += sizeof(ROOT);
> -	dpsize += sizeof(*ndp);
> -#endif
>
>   	start = buf = dp_alloc(dpsize + sizeof(END));
>   	if (!buf)
>   		return NULL;
>
> -#ifdef CONFIG_DM_ETH
>   	buf = dp_fill(buf, eth_get_dev());
> -#else
> -	memcpy(buf, &ROOT, sizeof(ROOT));
> -	buf += sizeof(ROOT);
> -
> -	ndp = buf;
> -	ndp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
> -	ndp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR;
> -	ndp->dp.length = sizeof(*ndp);
> -	ndp->if_type = 1; /* Ethernet */
> -	memcpy(ndp->mac.addr, eth_get_ethaddr(), ARP_HLEN);
> -	buf = &ndp[1];
> -#endif
>
>   	*((struct efi_device_path *)buf) = END;
>
> diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
> index 988907ecb91..ef8b5c88ff9 100644
> --- a/lib/efi_loader/efi_disk.c
> +++ b/lib/efi_loader/efi_disk.c
> @@ -555,7 +555,6 @@ efi_status_t efi_disk_register(void)
>   	struct efi_disk_obj *disk;
>   	int disks = 0;
>   	efi_status_t ret;
> -#ifdef CONFIG_BLK
>   	struct udevice *dev;
>
>   	for (uclass_first_device_check(UCLASS_BLK, &dev); dev;
> @@ -583,54 +582,7 @@ efi_status_t efi_disk_register(void)
>   					&disk->header, desc, if_typename,
>   					desc->devnum, dev->name);
>   	}
> -#else
> -	int i, if_type;
>
> -	/* Search for all available disk devices */
> -	for (if_type = 0; if_type < IF_TYPE_COUNT; if_type++) {
> -		const struct blk_driver *cur_drvr;
> -		const char *if_typename;
> -
> -		cur_drvr = blk_driver_lookup_type(if_type);
> -		if (!cur_drvr)
> -			continue;
> -
> -		if_typename = cur_drvr->if_typename;
> -		log_info("Scanning disks on %s...\n", if_typename);
> -		for (i = 0; i < 4; i++) {
> -			struct blk_desc *desc;
> -			char devname[32] = { 0 }; /* dp->str is u16[32] long */
> -
> -			desc = blk_get_devnum_by_type(if_type, i);
> -			if (!desc)
> -				continue;
> -			if (desc->type == DEV_TYPE_UNKNOWN)
> -				continue;
> -
> -			snprintf(devname, sizeof(devname), "%s%d",
> -				 if_typename, i);
> -
> -			/* Add block device for the full device */
> -			ret = efi_disk_add_dev(NULL, NULL, if_typename, desc,
> -					       i, NULL, 0, &disk);
> -			if (ret == EFI_NOT_READY) {
> -				log_notice("Disk %s not ready\n", devname);
> -				continue;
> -			}
> -			if (ret) {
> -				log_err("ERROR: failure to add disk device %s, r = %lu\n",
> -					devname, ret & ~EFI_ERROR_MASK);
> -				return ret;
> -			}
> -			disks++;
> -
> -			/* Partitions show up as block devices in EFI */
> -			disks += efi_disk_create_partitions
> -						(&disk->header, desc,
> -						 if_typename, i, devname);
> -		}
> -	}
> -#endif
>   	log_info("Found %d disks\n", disks);
>
>   	return EFI_SUCCESS;
>
Simon Glass Sept. 9, 2021, 8:57 a.m. UTC | #2
Hi Heinrich,

On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
>
>
> On 9/8/21 3:33 PM, Simon Glass wrote:
> > This code should never have been added as it builds a new feature on top
> > of legacy code. Drop it and add a dependency on BLK for this feature.
> >
> > Boards which want EFI_LOADER should migrate to driver model first.
> >
> > Signed-off-by: Simon Glass <sjg@chromium.org>
>
> This patch is not related to the rest of the series and the code has a
> different maintainer.
>
> So, please, separate it from the series.

Who is the maintainer?

I need this patch for this series to work. You can still review things
for other maintainers and in this case it is common for one maintainer
to pick up the series once the others are happy.

Regards,
Simon
Heinrich Schuchardt Sept. 9, 2021, 9:21 a.m. UTC | #3
On 9/9/21 10:57 AM, Simon Glass wrote:
> Hi Heinrich,
>
> On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>>
>>
>>
>> On 9/8/21 3:33 PM, Simon Glass wrote:
>>> This code should never have been added as it builds a new feature on top
>>> of legacy code. Drop it and add a dependency on BLK for this feature.
>>>
>>> Boards which want EFI_LOADER should migrate to driver model first.
>>>
>>> Signed-off-by: Simon Glass <sjg@chromium.org>
>>
>> This patch is not related to the rest of the series and the code has a
>> different maintainer.
>>
>> So, please, separate it from the series.
>
> Who is the maintainer?

Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
there was no official maintainer for lib/efi/ but you were the main
contributor.

But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.

I am happy if you would continue to care about U-Boot on EFI.

>
> I need this patch for this series to work. You can still review things
> for other maintainers and in this case it is common for one maintainer
> to pick up the series once the others are happy.

The direction of this patch is completely correct.

There are some things that will have to be changed, e.g we should not
require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.

I already added CONFIG_BLK as a requirement for CONFIG_EFI_LOADER in a
submitted patch.

Removing legacy code from lib/efi_loader/efi_disk.c and
lib/efi_loader/efi_device_path.c could be done before all U-Boot on EFI
patches.

Therefore I still think it makes sense to split the series in two:

1) Cleanup of the UEFI implementation
2) Rework of U-Boot on EFI

I hope merging in this sequence of patch series makes send to you.

Best regards

Heinrich
Simon Glass Sept. 9, 2021, 7:57 p.m. UTC | #4
Hi Heinrich,

On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
>
>
> On 9/9/21 10:57 AM, Simon Glass wrote:
> > Hi Heinrich,
> >
> > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >>
> >>
> >>
> >> On 9/8/21 3:33 PM, Simon Glass wrote:
> >>> This code should never have been added as it builds a new feature on top
> >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> >>>
> >>> Boards which want EFI_LOADER should migrate to driver model first.
> >>>
> >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> >>
> >> This patch is not related to the rest of the series and the code has a
> >> different maintainer.
> >>
> >> So, please, separate it from the series.
> >
> > Who is the maintainer?
>
> Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> there was no official maintainer for lib/efi/ but you were the main
> contributor.
>
> But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
>
> I am happy if you would continue to care about U-Boot on EFI.

OK.

>
> >
> > I need this patch for this series to work. You can still review things
> > for other maintainers and in this case it is common for one maintainer
> > to pick up the series once the others are happy.
>
> The direction of this patch is completely correct.
>
> There are some things that will have to be changed, e.g we should not
> require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.

OK, but why not require DM_ETH? The deadline passed a year ago.

>
> I already added CONFIG_BLK as a requirement for CONFIG_EFI_LOADER in a
> submitted patch.

OK good.

>
> Removing legacy code from lib/efi_loader/efi_disk.c and
> lib/efi_loader/efi_device_path.c could be done before all U-Boot on EFI
> patches.
>
> Therefore I still think it makes sense to split the series in two:
>
> 1) Cleanup of the UEFI implementation
> 2) Rework of U-Boot on EFI
>
> I hope merging in this sequence of patch series makes send to you.

I am fine if you want to take on the clean-up stuff for BLK, etc. In
that case we can just drop this patch when applying. But I do need
some sort of patch here, for things to work.

Regards,
Simon
Tom Rini Sept. 9, 2021, 8:14 p.m. UTC | #5
On Thu, Sep 09, 2021 at 01:57:39PM -0600, Simon Glass wrote:
> Hi Heinrich,
> 
> On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >
> >
> >
> > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > Hi Heinrich,
> > >
> > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > >>
> > >>
> > >>
> > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > >>> This code should never have been added as it builds a new feature on top
> > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > >>>
> > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > >>>
> > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > >>
> > >> This patch is not related to the rest of the series and the code has a
> > >> different maintainer.
> > >>
> > >> So, please, separate it from the series.
> > >
> > > Who is the maintainer?
> >
> > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > there was no official maintainer for lib/efi/ but you were the main
> > contributor.
> >
> > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> >
> > I am happy if you would continue to care about U-Boot on EFI.
> 
> OK.
> 
> >
> > >
> > > I need this patch for this series to work. You can still review things
> > > for other maintainers and in this case it is common for one maintainer
> > > to pick up the series once the others are happy.
> >
> > The direction of this patch is completely correct.
> >
> > There are some things that will have to be changed, e.g we should not
> > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> 
> OK, but why not require DM_ETH? The deadline passed a year ago.

Note that it's still a while (about a year) before I forcefully yank out
unmigrated systems.
Mark Kettenis Sept. 9, 2021, 8:15 p.m. UTC | #6
> From: Simon Glass <sjg@chromium.org>
> Date: Thu, 9 Sep 2021 13:57:39 -0600
> 
> Hi Heinrich,
> 
> On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >
> >
> >
> > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > Hi Heinrich,
> > >
> > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > >>
> > >>
> > >>
> > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > >>> This code should never have been added as it builds a new feature on top
> > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > >>>
> > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > >>>
> > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > >>
> > >> This patch is not related to the rest of the series and the code has a
> > >> different maintainer.
> > >>
> > >> So, please, separate it from the series.
> > >
> > > Who is the maintainer?
> >
> > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > there was no official maintainer for lib/efi/ but you were the main
> > contributor.
> >
> > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> >
> > I am happy if you would continue to care about U-Boot on EFI.
> 
> OK.
> 
> >
> > >
> > > I need this patch for this series to work. You can still review things
> > > for other maintainers and in this case it is common for one maintainer
> > > to pick up the series once the others are happy.
> >
> > The direction of this patch is completely correct.
> >
> > There are some things that will have to be changed, e.g we should not
> > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> 
> OK, but why not require DM_ETH? The deadline passed a year ago.

Because we support boards without network ports?
Tom Rini Sept. 9, 2021, 8:23 p.m. UTC | #7
On Thu, Sep 09, 2021 at 10:15:44PM +0200, Mark Kettenis wrote:
> > From: Simon Glass <sjg@chromium.org>
> > Date: Thu, 9 Sep 2021 13:57:39 -0600
> > 
> > Hi Heinrich,
> > 
> > On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > >
> > >
> > >
> > > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > > Hi Heinrich,
> > > >
> > > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > >>
> > > >>
> > > >>
> > > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > > >>> This code should never have been added as it builds a new feature on top
> > > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > > >>>
> > > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > > >>>
> > > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > > >>
> > > >> This patch is not related to the rest of the series and the code has a
> > > >> different maintainer.
> > > >>
> > > >> So, please, separate it from the series.
> > > >
> > > > Who is the maintainer?
> > >
> > > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > > there was no official maintainer for lib/efi/ but you were the main
> > > contributor.
> > >
> > > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> > >
> > > I am happy if you would continue to care about U-Boot on EFI.
> > 
> > OK.
> > 
> > >
> > > >
> > > > I need this patch for this series to work. You can still review things
> > > > for other maintainers and in this case it is common for one maintainer
> > > > to pick up the series once the others are happy.
> > >
> > > The direction of this patch is completely correct.
> > >
> > > There are some things that will have to be changed, e.g we should not
> > > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> > 
> > OK, but why not require DM_ETH? The deadline passed a year ago.
> 
> Because we support boards without network ports?

Boards without networking should disable the relevant code, and as
needed the EFI code return the proper error code?
Mark Kettenis Sept. 9, 2021, 9:45 p.m. UTC | #8
> Date: Thu, 9 Sep 2021 16:23:08 -0400
> From: Tom Rini <trini@konsulko.com>
> 
> On Thu, Sep 09, 2021 at 10:15:44PM +0200, Mark Kettenis wrote:
> > > From: Simon Glass <sjg@chromium.org>
> > > Date: Thu, 9 Sep 2021 13:57:39 -0600
> > > 
> > > Hi Heinrich,
> > > 
> > > On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > >
> > > >
> > > >
> > > > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > > > Hi Heinrich,
> > > > >
> > > > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > >>
> > > > >>
> > > > >>
> > > > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > > > >>> This code should never have been added as it builds a new feature on top
> > > > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > > > >>>
> > > > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > > > >>>
> > > > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > > > >>
> > > > >> This patch is not related to the rest of the series and the code has a
> > > > >> different maintainer.
> > > > >>
> > > > >> So, please, separate it from the series.
> > > > >
> > > > > Who is the maintainer?
> > > >
> > > > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > > > there was no official maintainer for lib/efi/ but you were the main
> > > > contributor.
> > > >
> > > > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> > > >
> > > > I am happy if you would continue to care about U-Boot on EFI.
> > > 
> > > OK.
> > > 
> > > >
> > > > >
> > > > > I need this patch for this series to work. You can still review things
> > > > > for other maintainers and in this case it is common for one maintainer
> > > > > to pick up the series once the others are happy.
> > > >
> > > > The direction of this patch is completely correct.
> > > >
> > > > There are some things that will have to be changed, e.g we should not
> > > > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> > > 
> > > OK, but why not require DM_ETH? The deadline passed a year ago.
> > 
> > Because we support boards without network ports?
> 
> Boards without networking should disable the relevant code, and as
> needed the EFI code return the proper error code?

Yes, but it means you can't make DM_ETH a (hard) requirement for
EFI_LOADER support.  What I mean is that it should still be possible
to build U-Boot with EFI_LOADER support even if DM_EFI isn't set for a
board.  It should just result in a UEFI implementation with no network
support instead.
Tom Rini Sept. 9, 2021, 10:06 p.m. UTC | #9
On Thu, Sep 09, 2021 at 11:45:08PM +0200, Mark Kettenis wrote:
> > Date: Thu, 9 Sep 2021 16:23:08 -0400
> > From: Tom Rini <trini@konsulko.com>
> > 
> > On Thu, Sep 09, 2021 at 10:15:44PM +0200, Mark Kettenis wrote:
> > > > From: Simon Glass <sjg@chromium.org>
> > > > Date: Thu, 9 Sep 2021 13:57:39 -0600
> > > > 
> > > > Hi Heinrich,
> > > > 
> > > > On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > >
> > > > >
> > > > >
> > > > > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > > > > Hi Heinrich,
> > > > > >
> > > > > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > > >>
> > > > > >>
> > > > > >>
> > > > > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > > > > >>> This code should never have been added as it builds a new feature on top
> > > > > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > > > > >>>
> > > > > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > > > > >>>
> > > > > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > > > > >>
> > > > > >> This patch is not related to the rest of the series and the code has a
> > > > > >> different maintainer.
> > > > > >>
> > > > > >> So, please, separate it from the series.
> > > > > >
> > > > > > Who is the maintainer?
> > > > >
> > > > > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > > > > there was no official maintainer for lib/efi/ but you were the main
> > > > > contributor.
> > > > >
> > > > > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> > > > >
> > > > > I am happy if you would continue to care about U-Boot on EFI.
> > > > 
> > > > OK.
> > > > 
> > > > >
> > > > > >
> > > > > > I need this patch for this series to work. You can still review things
> > > > > > for other maintainers and in this case it is common for one maintainer
> > > > > > to pick up the series once the others are happy.
> > > > >
> > > > > The direction of this patch is completely correct.
> > > > >
> > > > > There are some things that will have to be changed, e.g we should not
> > > > > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> > > > 
> > > > OK, but why not require DM_ETH? The deadline passed a year ago.
> > > 
> > > Because we support boards without network ports?
> > 
> > Boards without networking should disable the relevant code, and as
> > needed the EFI code return the proper error code?
> 
> Yes, but it means you can't make DM_ETH a (hard) requirement for
> EFI_LOADER support.  What I mean is that it should still be possible
> to build U-Boot with EFI_LOADER support even if DM_EFI isn't set for a
> board.  It should just result in a UEFI implementation with no network
> support instead.

Yes, agreed.  I was just trying to say that in the context of what DM
code EFI_LOADER can demand, the deadline for BLK has passed and
everything that didn't support it has been removed, so that's a good
requirement and area of code to clean up as needed.  But DM_ETH-or-bust
isn't there, yet.
Simon Glass Sept. 24, 2021, 2:48 a.m. UTC | #10
Hi Mark,

On Thu, 9 Sept 2021 at 15:45, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
>
> > Date: Thu, 9 Sep 2021 16:23:08 -0400
> > From: Tom Rini <trini@konsulko.com>
> >
> > On Thu, Sep 09, 2021 at 10:15:44PM +0200, Mark Kettenis wrote:
> > > > From: Simon Glass <sjg@chromium.org>
> > > > Date: Thu, 9 Sep 2021 13:57:39 -0600
> > > >
> > > > Hi Heinrich,
> > > >
> > > > On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > >
> > > > >
> > > > >
> > > > > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > > > > Hi Heinrich,
> > > > > >
> > > > > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > > >>
> > > > > >>
> > > > > >>
> > > > > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > > > > >>> This code should never have been added as it builds a new feature on top
> > > > > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > > > > >>>
> > > > > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > > > > >>>
> > > > > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > > > > >>
> > > > > >> This patch is not related to the rest of the series and the code has a
> > > > > >> different maintainer.
> > > > > >>
> > > > > >> So, please, separate it from the series.
> > > > > >
> > > > > > Who is the maintainer?
> > > > >
> > > > > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > > > > there was no official maintainer for lib/efi/ but you were the main
> > > > > contributor.
> > > > >
> > > > > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> > > > >
> > > > > I am happy if you would continue to care about U-Boot on EFI.
> > > >
> > > > OK.
> > > >
> > > > >
> > > > > >
> > > > > > I need this patch for this series to work. You can still review things
> > > > > > for other maintainers and in this case it is common for one maintainer
> > > > > > to pick up the series once the others are happy.
> > > > >
> > > > > The direction of this patch is completely correct.
> > > > >
> > > > > There are some things that will have to be changed, e.g we should not
> > > > > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> > > >
> > > > OK, but why not require DM_ETH? The deadline passed a year ago.
> > >
> > > Because we support boards without network ports?
> >
> > Boards without networking should disable the relevant code, and as
> > needed the EFI code return the proper error code?
>
> Yes, but it means you can't make DM_ETH a (hard) requirement for
> EFI_LOADER support.  What I mean is that it should still be possible
> to build U-Boot with EFI_LOADER support even if DM_EFI isn't set for a
> board.  It should just result in a UEFI implementation with no network
> support instead.

I think you are misunderstanding my patch. I have:

depends on DM_ETH || !NET

which means that if NET is used, DM_ETH must be. I think that is reasonable.

Regards,
Simon
Mark Kettenis Sept. 24, 2021, 10:36 a.m. UTC | #11
> From: Simon Glass <sjg@chromium.org>
> Date: Thu, 23 Sep 2021 20:48:42 -0600
> 
> Hi Mark,
> 
> On Thu, 9 Sept 2021 at 15:45, Mark Kettenis <mark.kettenis@xs4all.nl> wrote:
> >
> > > Date: Thu, 9 Sep 2021 16:23:08 -0400
> > > From: Tom Rini <trini@konsulko.com>
> > >
> > > On Thu, Sep 09, 2021 at 10:15:44PM +0200, Mark Kettenis wrote:
> > > > > From: Simon Glass <sjg@chromium.org>
> > > > > Date: Thu, 9 Sep 2021 13:57:39 -0600
> > > > >
> > > > > Hi Heinrich,
> > > > >
> > > > > On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > > On 9/9/21 10:57 AM, Simon Glass wrote:
> > > > > > > Hi Heinrich,
> > > > > > >
> > > > > > > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> > > > > > >>
> > > > > > >>
> > > > > > >>
> > > > > > >> On 9/8/21 3:33 PM, Simon Glass wrote:
> > > > > > >>> This code should never have been added as it builds a new feature on top
> > > > > > >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> > > > > > >>>
> > > > > > >>> Boards which want EFI_LOADER should migrate to driver model first.
> > > > > > >>>
> > > > > > >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> > > > > > >>
> > > > > > >> This patch is not related to the rest of the series and the code has a
> > > > > > >> different maintainer.
> > > > > > >>
> > > > > > >> So, please, separate it from the series.
> > > > > > >
> > > > > > > Who is the maintainer?
> > > > > >
> > > > > > Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> > > > > > there was no official maintainer for lib/efi/ but you were the main
> > > > > > contributor.
> > > > > >
> > > > > > But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
> > > > > >
> > > > > > I am happy if you would continue to care about U-Boot on EFI.
> > > > >
> > > > > OK.
> > > > >
> > > > > >
> > > > > > >
> > > > > > > I need this patch for this series to work. You can still review things
> > > > > > > for other maintainers and in this case it is common for one maintainer
> > > > > > > to pick up the series once the others are happy.
> > > > > >
> > > > > > The direction of this patch is completely correct.
> > > > > >
> > > > > > There are some things that will have to be changed, e.g we should not
> > > > > > require CONFIG_DM_ETH=y. I will work on reviewing this patch in detail.
> > > > >
> > > > > OK, but why not require DM_ETH? The deadline passed a year ago.
> > > >
> > > > Because we support boards without network ports?
> > >
> > > Boards without networking should disable the relevant code, and as
> > > needed the EFI code return the proper error code?
> >
> > Yes, but it means you can't make DM_ETH a (hard) requirement for
> > EFI_LOADER support.  What I mean is that it should still be possible
> > to build U-Boot with EFI_LOADER support even if DM_EFI isn't set for a
> > board.  It should just result in a UEFI implementation with no network
> > support instead.
> 
> I think you are misunderstanding my patch. I have:
> 
> depends on DM_ETH || !NET
> 
> which means that if NET is used, DM_ETH must be. I think that is reasonable.

Yes, that should be fine (Kconfig stuff doesn't always make sense to me).
Simon Glass Sept. 24, 2021, 12:32 p.m. UTC | #12
Hi Heinrich,

On Thu, 9 Sept 2021 at 03:26, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
>
>
> On 9/9/21 10:57 AM, Simon Glass wrote:
> > Hi Heinrich,
> >
> > On Wed, 8 Sept 2021 at 11:44, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
> >>
> >>
> >>
> >> On 9/8/21 3:33 PM, Simon Glass wrote:
> >>> This code should never have been added as it builds a new feature on top
> >>> of legacy code. Drop it and add a dependency on BLK for this feature.
> >>>
> >>> Boards which want EFI_LOADER should migrate to driver model first.
> >>>
> >>> Signed-off-by: Simon Glass <sjg@chromium.org>
> >>
> >> This patch is not related to the rest of the series and the code has a
> >> different maintainer.
> >>
> >> So, please, separate it from the series.
> >
> > Who is the maintainer?
>
> Until 623b3a57976 ("efi_selftest: provide an EFI selftest application")
> there was no official maintainer for lib/efi/ but you were the main
> contributor.
>
> But with that patch directory lib/efi/ was assigned to EFI PAYLOAD.
>
> I am happy if you would continue to care about U-Boot on EFI.

I can add myself as maintainer of that part of EFI if you like. I will
include it in the v2 series. But it is a little fiddling because there
are shared files, so I will just add a few for now.

Perhaps you could be co-maintainer for the app, given your EFI
knowledge and that you review them? Also I expect they would still go
through your tree.

Regards,
Simon
diff mbox series

Patch

diff --git a/lib/efi_driver/Makefile b/lib/efi_driver/Makefile
index 83baa1c9a49..f2b6c05cc24 100644
--- a/lib/efi_driver/Makefile
+++ b/lib/efi_driver/Makefile
@@ -6,6 +6,6 @@ 
 # object inclusion implicitly depends on it
 
 obj-y += efi_uclass.o
-ifeq ($(CONFIG_BLK)$(CONFIG_PARTITIONS),yy)
+ifeq ($(CONFIG_PARTITIONS),y)
 obj-y += efi_block_device.o
 endif
diff --git a/lib/efi_loader/Kconfig b/lib/efi_loader/Kconfig
index dacc3b58810..799aa1a7512 100644
--- a/lib/efi_loader/Kconfig
+++ b/lib/efi_loader/Kconfig
@@ -10,6 +10,8 @@  config EFI_LOADER
 	depends on !EFI_STUB || !X86_64 || EFI_STUB_64BIT
 	# We need EFI_STUB_32BIT to be set on x86_32 with EFI_STUB
 	depends on !EFI_STUB || !X86 || X86_64 || EFI_STUB_32BIT
+	depends on BLK
+	depends on DM_ETH || !NET
 	default y if !ARM || SYS_CPU = armv7 || SYS_CPU = armv8
 	select LIB_UUID
 	select PARTITION_UUIDS
diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_device_path.c
index cbdb466da41..a09090a32e4 100644
--- a/lib/efi_loader/efi_device_path.c
+++ b/lib/efi_loader/efi_device_path.c
@@ -46,7 +46,7 @@  static const struct efi_device_path_vendor ROOT = {
 	.guid = U_BOOT_GUID,
 };
 
-#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
+#if defined(CONFIG_MMC)
 /*
  * Determine if an MMC device is an SD card.
  *
@@ -486,7 +486,6 @@  bool efi_dp_is_multi_instance(const struct efi_device_path *dp)
 	return p->sub_type == DEVICE_PATH_SUB_TYPE_INSTANCE_END;
 }
 
-#ifdef CONFIG_DM
 /* size of device-path not including END node for device and all parents
  * up to the root device.
  */
@@ -503,7 +502,6 @@  __maybe_unused static unsigned int dp_size(struct udevice *dev)
 	case UCLASS_ETH:
 		return dp_size(dev->parent) +
 			sizeof(struct efi_device_path_mac_addr);
-#ifdef CONFIG_BLK
 	case UCLASS_BLK:
 		switch (dev->parent->uclass->uc_drv->id) {
 #ifdef CONFIG_IDE
@@ -511,12 +509,12 @@  __maybe_unused static unsigned int dp_size(struct udevice *dev)
 			return dp_size(dev->parent) +
 				sizeof(struct efi_device_path_atapi);
 #endif
-#if defined(CONFIG_SCSI) && defined(CONFIG_DM_SCSI)
+#if defined(CONFIG_SCSI)
 		case UCLASS_SCSI:
 			return dp_size(dev->parent) +
 				sizeof(struct efi_device_path_scsi);
 #endif
-#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
+#if defined(CONFIG_MMC)
 		case UCLASS_MMC:
 			return dp_size(dev->parent) +
 				sizeof(struct efi_device_path_sd_mmc_path);
@@ -554,8 +552,7 @@  __maybe_unused static unsigned int dp_size(struct udevice *dev)
 		default:
 			return dp_size(dev->parent);
 		}
-#endif
-#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
+#if defined(CONFIG_MMC)
 	case UCLASS_MMC:
 		return dp_size(dev->parent) +
 			sizeof(struct efi_device_path_sd_mmc_path);
@@ -590,7 +587,7 @@  __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 		*vdp = ROOT;
 		return &vdp[1];
 	}
-#ifdef CONFIG_DM_ETH
+#ifdef CONFIG_NET
 	case UCLASS_ETH: {
 		struct efi_device_path_mac_addr *dp =
 			dp_fill(buf, dev->parent);
@@ -607,7 +604,6 @@  __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 		return &dp[1];
 	}
 #endif
-#ifdef CONFIG_BLK
 	case UCLASS_BLK:
 		switch (dev->parent->uclass->uc_drv->id) {
 #ifdef CONFIG_SANDBOX
@@ -662,7 +658,7 @@  __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 			return &dp[1];
 			}
 #endif
-#if defined(CONFIG_SCSI) && defined(CONFIG_DM_SCSI)
+#if defined(CONFIG_SCSI)
 		case UCLASS_SCSI: {
 			struct efi_device_path_scsi *dp =
 				dp_fill(buf, dev->parent);
@@ -676,7 +672,7 @@  __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 			return &dp[1];
 			}
 #endif
-#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
+#if defined(CONFIG_MMC)
 		case UCLASS_MMC: {
 			struct efi_device_path_sd_mmc_path *sddp =
 				dp_fill(buf, dev->parent);
@@ -727,8 +723,7 @@  __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 			      dev->name, dev->parent->uclass->uc_drv->id);
 			return dp_fill(buf, dev->parent);
 		}
-#endif
-#if defined(CONFIG_DM_MMC) && defined(CONFIG_MMC)
+#if defined(CONFIG_MMC)
 	case UCLASS_MMC: {
 		struct efi_device_path_sd_mmc_path *sddp =
 			dp_fill(buf, dev->parent);
@@ -770,24 +765,18 @@  __maybe_unused static void *dp_fill(void *buf, struct udevice *dev)
 		return dp_fill(buf, dev->parent);
 	}
 }
-#endif
 
 static unsigned dp_part_size(struct blk_desc *desc, int part)
 {
 	unsigned dpsize;
+	struct udevice *dev;
+	int ret;
 
-#ifdef CONFIG_BLK
-	{
-		struct udevice *dev;
-		int ret = blk_find_device(desc->if_type, desc->devnum, &dev);
+	ret = blk_find_device(desc->if_type, desc->devnum, &dev);
 
-		if (ret)
-			dev = desc->bdev->parent;
-		dpsize = dp_size(dev);
-	}
-#else
-	dpsize = sizeof(ROOT) + sizeof(struct efi_device_path_usb);
-#endif
+	if (ret)
+		dev = desc->bdev->parent;
+	dpsize = dp_size(dev);
 
 	if (part == 0) /* the actual disk, not a partition */
 		return dpsize;
@@ -877,36 +866,14 @@  static void *dp_part_node(void *buf, struct blk_desc *desc, int part)
  */
 static void *dp_part_fill(void *buf, struct blk_desc *desc, int part)
 {
-#ifdef CONFIG_BLK
-	{
-		struct udevice *dev;
-		int ret = blk_find_device(desc->if_type, desc->devnum, &dev);
+	struct udevice *dev;
+	int ret;
 
-		if (ret)
-			dev = desc->bdev->parent;
-		buf = dp_fill(buf, dev);
-	}
-#else
-	/*
-	 * We *could* make a more accurate path, by looking at if_type
-	 * and handling all the different cases like we do for non-
-	 * legacy (i.e. CONFIG_BLK=y) case. But most important thing
-	 * is just to have a unique device-path for if_type+devnum.
-	 * So map things to a fictitious USB device.
-	 */
-	struct efi_device_path_usb *udp;
-
-	memcpy(buf, &ROOT, sizeof(ROOT));
-	buf += sizeof(ROOT);
-
-	udp = buf;
-	udp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
-	udp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_USB;
-	udp->dp.length = sizeof(*udp);
-	udp->parent_port_number = desc->if_type;
-	udp->usb_interface = desc->devnum;
-	buf = &udp[1];
-#endif
+	ret = blk_find_device(desc->if_type, desc->devnum, &dev);
+
+	if (ret)
+		dev = desc->bdev->parent;
+	buf = dp_fill(buf, dev);
 
 	if (part == 0) /* the actual disk, not a partition */
 		return buf;
@@ -1051,39 +1018,18 @@  struct efi_device_path *efi_dp_from_uart(void)
 #ifdef CONFIG_NET
 struct efi_device_path *efi_dp_from_eth(void)
 {
-#ifndef CONFIG_DM_ETH
-	struct efi_device_path_mac_addr *ndp;
-#endif
 	void *buf, *start;
 	unsigned dpsize = 0;
 
 	assert(eth_get_dev());
 
-#ifdef CONFIG_DM_ETH
 	dpsize += dp_size(eth_get_dev());
-#else
-	dpsize += sizeof(ROOT);
-	dpsize += sizeof(*ndp);
-#endif
 
 	start = buf = dp_alloc(dpsize + sizeof(END));
 	if (!buf)
 		return NULL;
 
-#ifdef CONFIG_DM_ETH
 	buf = dp_fill(buf, eth_get_dev());
-#else
-	memcpy(buf, &ROOT, sizeof(ROOT));
-	buf += sizeof(ROOT);
-
-	ndp = buf;
-	ndp->dp.type = DEVICE_PATH_TYPE_MESSAGING_DEVICE;
-	ndp->dp.sub_type = DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR;
-	ndp->dp.length = sizeof(*ndp);
-	ndp->if_type = 1; /* Ethernet */
-	memcpy(ndp->mac.addr, eth_get_ethaddr(), ARP_HLEN);
-	buf = &ndp[1];
-#endif
 
 	*((struct efi_device_path *)buf) = END;
 
diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
index 988907ecb91..ef8b5c88ff9 100644
--- a/lib/efi_loader/efi_disk.c
+++ b/lib/efi_loader/efi_disk.c
@@ -555,7 +555,6 @@  efi_status_t efi_disk_register(void)
 	struct efi_disk_obj *disk;
 	int disks = 0;
 	efi_status_t ret;
-#ifdef CONFIG_BLK
 	struct udevice *dev;
 
 	for (uclass_first_device_check(UCLASS_BLK, &dev); dev;
@@ -583,54 +582,7 @@  efi_status_t efi_disk_register(void)
 					&disk->header, desc, if_typename,
 					desc->devnum, dev->name);
 	}
-#else
-	int i, if_type;
 
-	/* Search for all available disk devices */
-	for (if_type = 0; if_type < IF_TYPE_COUNT; if_type++) {
-		const struct blk_driver *cur_drvr;
-		const char *if_typename;
-
-		cur_drvr = blk_driver_lookup_type(if_type);
-		if (!cur_drvr)
-			continue;
-
-		if_typename = cur_drvr->if_typename;
-		log_info("Scanning disks on %s...\n", if_typename);
-		for (i = 0; i < 4; i++) {
-			struct blk_desc *desc;
-			char devname[32] = { 0 }; /* dp->str is u16[32] long */
-
-			desc = blk_get_devnum_by_type(if_type, i);
-			if (!desc)
-				continue;
-			if (desc->type == DEV_TYPE_UNKNOWN)
-				continue;
-
-			snprintf(devname, sizeof(devname), "%s%d",
-				 if_typename, i);
-
-			/* Add block device for the full device */
-			ret = efi_disk_add_dev(NULL, NULL, if_typename, desc,
-					       i, NULL, 0, &disk);
-			if (ret == EFI_NOT_READY) {
-				log_notice("Disk %s not ready\n", devname);
-				continue;
-			}
-			if (ret) {
-				log_err("ERROR: failure to add disk device %s, r = %lu\n",
-					devname, ret & ~EFI_ERROR_MASK);
-				return ret;
-			}
-			disks++;
-
-			/* Partitions show up as block devices in EFI */
-			disks += efi_disk_create_partitions
-						(&disk->header, desc,
-						 if_typename, i, devname);
-		}
-	}
-#endif
 	log_info("Found %d disks\n", disks);
 
 	return EFI_SUCCESS;