From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.2 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67478C433EF for ; Wed, 8 Sep 2021 17:44:14 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DD2F46115C for ; Wed, 8 Sep 2021 17:44:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org DD2F46115C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 9799D8341E; Wed, 8 Sep 2021 19:44:11 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="YujBex8t"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id BCED683423; Wed, 8 Sep 2021 19:44:09 +0200 (CEST) Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 28A158341C for ; Wed, 8 Sep 2021 19:44:06 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=xypron.glpk@gmx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1631123043; bh=sMIGDJy8Qp279/S2LaxQ2szYPzHO7C4RkeExP6+EUuo=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=YujBex8tVyhnxOvkJFHiQWsMJrHjhdOE11s1zZSc6FnSUr3SSkFYx7tAvGuf3KCIA bK+9hx4sJC3hu6aoj6cB3coXIjsq/Af5vEOBYUoI9hiFkjE+oMb2R4szTGx+w52MCD iWmWRbIa9pTOVdsBo+4Z8pOV9GfvCUV0uRvKF9no= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.123.55] ([88.152.144.157]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MHXBj-1mB3BL3IjR-00DamS; Wed, 08 Sep 2021 19:44:02 +0200 Subject: Re: [PATCH 11/35] RFC: efi: Drop code that doesn't work with driver model To: Simon Glass , U-Boot Mailing List Cc: Ilias Apalodimas , Bin Meng , Tom Rini , Christian Melki , Alexander Graf References: <20210908133405.696481-1-sjg@chromium.org> <20210908073355.11.Id572ddf5eb457096b95d30ae2d8675f539367fe8@changeid> From: Heinrich Schuchardt Message-ID: Date: Wed, 8 Sep 2021 19:44:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <20210908073355.11.Id572ddf5eb457096b95d30ae2d8675f539367fe8@changeid> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:ocmVrGIv5fBcsZwprEZlqnn71RO8WJfDLX4/s5BWgs9H4rE9k93 WEi2Gfknmi3tUukRr5SjYkxOr2dreu8He9UMmr76/8zVknG7oXVvWDdraHBdMt4q1EAuKwG jAfHq4jI15a+xkKHHximZs9HZaf1yB2br8Mctsbdmz+BVUBzMnHuvHL+dTt2QlKGEuNc7P3 nwn6dfy5OtKD2qUfYaAlQ== X-UI-Out-Filterresults: notjunk:1;V03:K0:dC+0S2CKQcw=:sUoTiv57JNAQU+JuRBpgKb OxB7QxY0n9zNOVLJDKuF42kCkXaIGpcq8ZLk/1i0NOl9WvO1ayjii4F7C78h/83x0fE9lMgca mB+STt6irlWxivgo93hLtnE8fVo0zdlcWW9I7BM880EN1uCSPdW5wyrPdXsBufVFUzjDY6p9K /E2t5fHPZFEdSWFwrkXzo5bGoARt5tJPFXT2yMb1/JepSFbtsQtdU+WaDDvtXD5A4wxri5VcH 5P7Iu0OJ3cn0SApIKJpr7oOGA8HR1tORlS5oK0gEsGyPEjdrp6JWi2ePF4m2nk9/r4oP6PefU GIhePSNY9LoXXCn5E/ebzjs0Lc531z+MOZtYylWHQMweJrPXtsnSKWXHvoFGPYi0OnlNbRJ6i lDENpVmMGVd88k3hxz8cj5Rx0t49gZg3irhQTt0dX+i4mPmiGfyqFJ3zOskFusTX+LldsLq1z duMrujqBhMIGL9kQezLon7ae8HKNeqd3kA3a89dJKxT4VZYyY2UWShmP0MjuuoO/t03TkIlzR Rg6TwKPHgmPVxKf1boyeudOznFsRr/L7br+2tEhAP2pjDhOYf3kRt4FK004IB7tDr1rhf9nEl e3i8QAAbVTboJlgMi2yUkJ1y/sVCEwDDhINgRTA7kUwfSy0DHrvLlRIweS+ydAaHSo3SUVC0J DsLoOa5ik77MbNHR+FizXAWlpF7M3BfTkd8kuS4GmCYPJyistc/vS0OivFfGySPSyvoM8f8eX jQom25OmckHhEEbPMy1lLb1E64OAAr2XmCVKSa2mlmpVL9fK1nVx3zPcILMGUwErFvBFNk94r bUSp7gHWION358pXvrZ/imaSSlbEyNKcgPWj3pYMunh8MjPPgsqQyS0OlrQEKxqMorpIu66dW JngNCFWotPJka+eGLxzo2+kiud+sfKOKBk4UEzDDAFTnA9mCuKvo3zD0b3fzDHvYVT4sv2i6z hAruLb5VAfFAr+yz/JxQhwfd1PqNJiEQBbxhdpfx9/BRasgGhHbWEgFPbKNA4cE8e7QsUmcz/ Vsfmr8sPC977Qas+8KyFmQCQi4LuS4jNCA5jNrdgk/QWGkoV8N+2iJaDyyRc7hTtaEUijUbkI 7Ld0hwshsOXRv4= X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean 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 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 +=3D efi_uclass.o > -ifeq ($(CONFIG_BLK)$(CONFIG_PARTITIONS),yy) > +ifeq ($(CONFIG_PARTITIONS),y) > obj-y +=3D 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 =3D armv7 || SYS_CPU =3D armv8 > select LIB_UUID > select PARTITION_UUIDS > diff --git a/lib/efi_loader/efi_device_path.c b/lib/efi_loader/efi_devic= e_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 =3D { > .guid =3D 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_devic= e_path *dp) > return p->sub_type =3D=3D DEVICE_PATH_SUB_TYPE_INSTANCE_END; > } > > -#ifdef CONFIG_DM > /* size of device-path not including END node for device and all paren= ts > * up to the root device. > */ > @@ -503,7 +502,6 @@ __maybe_unused static unsigned int dp_size(struct ud= evice *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 ud= evice *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, struc= t udevice *dev) > *vdp =3D ROOT; > return &vdp[1]; > } > -#ifdef CONFIG_DM_ETH > +#ifdef CONFIG_NET > case UCLASS_ETH: { > struct efi_device_path_mac_addr *dp =3D > dp_fill(buf, dev->parent); > @@ -607,7 +604,6 @@ __maybe_unused static void *dp_fill(void *buf, struc= t 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, struc= t 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 =3D > dp_fill(buf, dev->parent); > @@ -676,7 +672,7 @@ __maybe_unused static void *dp_fill(void *buf, struc= t 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 =3D > dp_fill(buf, dev->parent); > @@ -727,8 +723,7 @@ __maybe_unused static void *dp_fill(void *buf, struc= t 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 =3D > dp_fill(buf, dev->parent); > @@ -770,24 +765,18 @@ __maybe_unused static void *dp_fill(void *buf, str= uct 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 =3D blk_find_device(desc->if_type, desc->devnum, &dev); > + ret =3D blk_find_device(desc->if_type, desc->devnum, &dev); > > - if (ret) > - dev =3D desc->bdev->parent; > - dpsize =3D dp_size(dev); > - } > -#else > - dpsize =3D sizeof(ROOT) + sizeof(struct efi_device_path_usb); > -#endif > + if (ret) > + dev =3D desc->bdev->parent; > + dpsize =3D dp_size(dev); > > if (part =3D=3D 0) /* the actual disk, not a partition */ > return dpsize; > @@ -877,36 +866,14 @@ static void *dp_part_node(void *buf, struct blk_de= sc *desc, int part) > */ > static void *dp_part_fill(void *buf, struct blk_desc *desc, int part) > { > -#ifdef CONFIG_BLK > - { > - struct udevice *dev; > - int ret =3D blk_find_device(desc->if_type, desc->devnum, &dev); > + struct udevice *dev; > + int ret; > > - if (ret) > - dev =3D desc->bdev->parent; > - buf =3D 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=3Dy) 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 +=3D sizeof(ROOT); > - > - udp =3D buf; > - udp->dp.type =3D DEVICE_PATH_TYPE_MESSAGING_DEVICE; > - udp->dp.sub_type =3D DEVICE_PATH_SUB_TYPE_MSG_USB; > - udp->dp.length =3D sizeof(*udp); > - udp->parent_port_number =3D desc->if_type; > - udp->usb_interface =3D desc->devnum; > - buf =3D &udp[1]; > -#endif > + ret =3D blk_find_device(desc->if_type, desc->devnum, &dev); > + > + if (ret) > + dev =3D desc->bdev->parent; > + buf =3D dp_fill(buf, dev); > > if (part =3D=3D 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 =3D 0; > > assert(eth_get_dev()); > > -#ifdef CONFIG_DM_ETH > dpsize +=3D dp_size(eth_get_dev()); > -#else > - dpsize +=3D sizeof(ROOT); > - dpsize +=3D sizeof(*ndp); > -#endif > > start =3D buf =3D dp_alloc(dpsize + sizeof(END)); > if (!buf) > return NULL; > > -#ifdef CONFIG_DM_ETH > buf =3D dp_fill(buf, eth_get_dev()); > -#else > - memcpy(buf, &ROOT, sizeof(ROOT)); > - buf +=3D sizeof(ROOT); > - > - ndp =3D buf; > - ndp->dp.type =3D DEVICE_PATH_TYPE_MESSAGING_DEVICE; > - ndp->dp.sub_type =3D DEVICE_PATH_SUB_TYPE_MSG_MAC_ADDR; > - ndp->dp.length =3D sizeof(*ndp); > - ndp->if_type =3D 1; /* Ethernet */ > - memcpy(ndp->mac.addr, eth_get_ethaddr(), ARP_HLEN); > - buf =3D &ndp[1]; > -#endif > > *((struct efi_device_path *)buf) =3D 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 =3D 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 =3D 0; if_type < IF_TYPE_COUNT; if_type++) { > - const struct blk_driver *cur_drvr; > - const char *if_typename; > - > - cur_drvr =3D blk_driver_lookup_type(if_type); > - if (!cur_drvr) > - continue; > - > - if_typename =3D cur_drvr->if_typename; > - log_info("Scanning disks on %s...\n", if_typename); > - for (i =3D 0; i < 4; i++) { > - struct blk_desc *desc; > - char devname[32] =3D { 0 }; /* dp->str is u16[32] long */ > - > - desc =3D blk_get_devnum_by_type(if_type, i); > - if (!desc) > - continue; > - if (desc->type =3D=3D DEV_TYPE_UNKNOWN) > - continue; > - > - snprintf(devname, sizeof(devname), "%s%d", > - if_typename, i); > - > - /* Add block device for the full device */ > - ret =3D efi_disk_add_dev(NULL, NULL, if_typename, desc, > - i, NULL, 0, &disk); > - if (ret =3D=3D EFI_NOT_READY) { > - log_notice("Disk %s not ready\n", devname); > - continue; > - } > - if (ret) { > - log_err("ERROR: failure to add disk device %s, r =3D %lu\n", > - devname, ret & ~EFI_ERROR_MASK); > - return ret; > - } > - disks++; > - > - /* Partitions show up as block devices in EFI */ > - disks +=3D efi_disk_create_partitions > - (&disk->header, desc, > - if_typename, i, devname); > - } > - } > -#endif > log_info("Found %d disks\n", disks); > > return EFI_SUCCESS; >