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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 75FBFC433EF for ; Sat, 5 Feb 2022 09:02:35 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 1B04383A8D; Sat, 5 Feb 2022 10:02:33 +0100 (CET) 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="kSlK/ide"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id AEE3783A99; Sat, 5 Feb 2022 10:02:31 +0100 (CET) Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (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 7A5EE83A8A for ; Sat, 5 Feb 2022 10:02:28 +0100 (CET) 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=1644051741; bh=vI8JN2ZuyLAOlc8KzywdC0QX0tr5YmPWuqQYBPTv3b0=; h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:In-Reply-To; b=kSlK/idebKfC26tELLMJNruuebUGIvT7+mGRgHhyvCiI6xmsM3PXPD3GK7v+CYxV4 B/Nh7O+Z6S39ddh2mkd5flKMYxk3txLShSGBYQNfigo1aooJH/yND1OCX3Z6DODoSI MLkrPIMzqRE41Y9c5imFMCdKYO/t+liGYVhXfAJQ= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.123.94] ([88.152.144.107]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N17YY-1mE5pP1QZG-012bfe; Sat, 05 Feb 2022 10:02:21 +0100 Message-ID: <6666dd65-2546-659a-57bf-3af714fd6c23@gmx.de> Date: Sat, 5 Feb 2022 10:02:19 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.1 Subject: Re: [PATCH 17/19] efi_loader: disk: use udevice instead of blk_desc Content-Language: en-US To: AKASHI Takahiro Cc: masami.hiramatsu@linaro.org, u-boot@lists.denx.de, lukma@denx.de, peng.fan@nxp.com, peng.ma@nxp.com, sjg@chromium.org, ilias.apalodimas@linaro.org, sr@denx.de, jh80.chung@samsung.com, bmeng.cn@gmail.com References: <20220202010853.40405-1-takahiro.akashi@linaro.org> <20220202010853.40405-18-takahiro.akashi@linaro.org> From: Heinrich Schuchardt In-Reply-To: <20220202010853.40405-18-takahiro.akashi@linaro.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:QMlvLWO7ems8fZHA/mxwmeUWeZWIoJvwxy8QgBE22AqRXTxQ8PV oOT0xPby0TnGJ/kcxl4Iqm1ItYXthwlqqg8Xl9wcVaPuQ6I0usJuFVHk1X46DHNOu/yyHxS aLB8JyNmTPZLVdsJhzXHHIOipyMLRYJjm9394a8ElDm8nojRCstbFKlGW/5OFKdXd3OElYJ 2ktSdJIeaS0pzTXaZsQrg== X-UI-Out-Filterresults: notjunk:1;V03:K0:CRAxQ33O1vQ=:ROIAsTkxNZadn6/ehAqJT4 AhCyLyLVFntb94insRAGIbzzByVcVZtJor9KzGLgyLedmQz5JDWBA3OTwiNnNr+/KLYLjsNVy 1ypxoictqgWi1G/wXVYldRXU6zopyaEvVANphRWmzgD7XBM0zRkGpvawHCC4xsirVVXrrPu9M pH+VWQabQfhGKejvAy53KxgZKqLdezcjOKsOuQxOhmA6x4lQHhfT2PjpVYBxO63L2Vo1xbguL NIcai24oRzPHhmbRvITGAa5Tj4hpkS3TJOa9MObU3ReZRdRUaZ9h5CaHzCcaF2xlmOVN/YSl0 9snzsA9ihMUZbhZ9jQYQvC43XjlrpyNNHKxsfz6AjxjsacIMi8UmojsfckKSdyirYllxIRmg9 jr+rh6LirK2gF3QsGVrRJ90hnQSfHrHxOzhZt9tjUG2m9gzh6+PdCaFHCJmMlzPSgjeQbp36r 4nwCFs2nwIO7GQWCXdiQJ2j/9sR5TUe+8d/Eup6s9aOLxIjCcyeXfC3/noGgzSEV1aGp2AAl2 g8rnS5W/6yHC0CTYi8ZG4dCTmc7sCHjTz9CPOUVy+I7q6fQpfSXHJbvmsmhjc8pxlmqsk/ZAL KsquLNWbvFITHIe2GrITQQAnNY/maSJcFAfYVSGgrfgDD0ThcxIBkjQjh23Dk32alSY5TiqqY tQKFenBfPXz9iFjxXYe2pJAe/THBpoygXYiUgApEuAKzL0H3De62j2eDyiUEHA+TuIQjpJu1F Hjz/qesn7eCzr8o2s4LCBQM1rl/f9YfaXTxj99o4sg5mpmD7AHYfKjeQ1SzyQYwpnFrL9Cmou V1MqaZO0ypJmwjEFgKbNnUmJPwzla8D1bM70NTbAYSdy+AxC/xYxnUtdhXp2G1r1n+B2rSuZv 0B8cKIanc0OQmDkxvXjjJNbSR+nv0HFYQUSLnPmnbG5g1zrASVPeN+UB1tn0UlNF3jF3bedUA BEc8RlpCHKqgu8F8soLITNTUBkqWDL2NIKZqnmn+mL1t4VLpvwC3dWfRb1s68QHvneTsYr3XL LwbAAAY3QNW574d8J7cRl7+fXbXpNNjrrp7lTGCQqQrT+i/pO66KgCKUhOXMI7/1m4D9Y/fVq /esrOwYOH9iJIg= X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.5 at phobos.denx.de X-Virus-Status: Clean On 2/2/22 02:08, AKASHI Takahiro wrote: > In most of all cases, we can avoid using blk_desc which is expected > to be private to udevice(UCLASS_BLK), that is, the data should not > be manupulated outside the device driver unless really needed. > > Now efi_disk's internally use dev_read/write() interfaces. > > Signed-off-by: AKASHI Takahiro > Reviewed-by: Simon Glass > --- > lib/efi_loader/efi_disk.c | 25 ++++++++++++------------- > 1 file changed, 12 insertions(+), 13 deletions(-) > > diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c > index 8dc7534278da..8e33af76711f 100644 > --- a/lib/efi_loader/efi_disk.c > +++ b/lib/efi_loader/efi_disk.c > @@ -48,7 +48,7 @@ struct efi_disk_obj { > unsigned int part; > struct efi_simple_file_system_protocol *volume; > lbaint_t offset; > - struct blk_desc *desc; > + struct udevice *dev; /* TODO: move it to efi_object */ This breaks 'make htmldocs'. Add the missing description. ./include/asm-generic/global_data.h:474: warning: Function parameter or member 'event_state' not described in 'global_data' Best regards Heinrich > }; > > /** > @@ -83,14 +83,12 @@ static efi_status_t efi_disk_rw_blocks(struct efi_bl= ock_io *this, > void *buffer, enum efi_disk_direction direction) > { > struct efi_disk_obj *diskobj; > - struct blk_desc *desc; > int blksz; > int blocks; > unsigned long n; > > diskobj =3D container_of(this, struct efi_disk_obj, ops); > - desc =3D (struct blk_desc *) diskobj->desc; > - blksz =3D desc->blksz; > + blksz =3D diskobj->media.block_size; > blocks =3D buffer_size / blksz; > lba +=3D diskobj->offset; > > @@ -102,9 +100,9 @@ static efi_status_t efi_disk_rw_blocks(struct efi_bl= ock_io *this, > return EFI_BAD_BUFFER_SIZE; > > if (direction =3D=3D EFI_DISK_READ) > - n =3D blk_dread(desc, lba, blocks, buffer); > + n =3D dev_read(diskobj->dev, lba, blocks, buffer); > else > - n =3D blk_dwrite(desc, lba, blocks, buffer); > + n =3D dev_write(diskobj->dev, lba, blocks, buffer); > > /* We don't do interrupts, so check for timers cooperatively */ > efi_timer_check(); > @@ -446,7 +444,6 @@ static efi_status_t efi_disk_add_dev( > diskobj->ops =3D block_io_disk_template; > diskobj->ifname =3D if_typename; > diskobj->dev_index =3D dev_index; > - diskobj->desc =3D desc; > > /* Fill in EFI IO Media info (for read/write callbacks) */ > diskobj->media.removable_media =3D desc->removable; > @@ -745,20 +742,22 @@ bool efi_disk_is_system_part(efi_handle_t handle) > { > struct efi_handler *handler; > struct efi_disk_obj *diskobj; > - struct disk_partition info; > + struct udevice *dev; > + struct disk_part *part; > efi_status_t ret; > - int r; > > /* check if this is a block device */ > ret =3D efi_search_protocol(handle, &efi_block_io_guid, &handler); > if (ret !=3D EFI_SUCCESS) > return false; > > + /* find a partition udevice */ > diskobj =3D container_of(handle, struct efi_disk_obj, header); > - > - r =3D part_get_info(diskobj->desc, diskobj->part, &info); > - if (r) > + dev =3D diskobj->dev; > + if (!dev || dev->driver->id !=3D UCLASS_PARTITION) > return false; > > - return !!(info.bootable & PART_EFI_SYSTEM_PARTITION); > + part =3D dev_get_uclass_plat(dev); > + > + return !!(part->gpt_part_info.bootable & PART_EFI_SYSTEM_PARTITION); > }