All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: mark.kettenis@xs4all.nl, u-boot@lists.denx.de,
	Simon Glass <sjg@chromium.org>
Subject: Re: [PATCH] efi_loader: disk: allow blk devices even without UCLASS_PARTITION
Date: Thu, 28 Apr 2022 12:43:03 +0200	[thread overview]
Message-ID: <706b0e6e-59d1-52f7-3fc9-55285491bf62@gmx.de> (raw)
In-Reply-To: <20220428044916.52250-1-takahiro.akashi@linaro.org>

On 4/28/22 06:49, AKASHI Takahiro wrote:
> While GPT partition is mandated in UEFI specification, CONFIG_PARTITION is
> seen optional under the current implementation.
> So modify efi_disk_rw_blocks() to allow accepting UCLASS_BLK devices.
>
> Fixes: commit d97e98c887ed ("efi_loader: disk: use udevice instead of blk_desc")
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> ---
>   lib/efi_loader/efi_disk.c | 29 +++++++++++++++--------------
>   1 file changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
> index 8fb5b2363c45..f5b462fb164a 100644
> --- a/lib/efi_loader/efi_disk.c
> +++ b/lib/efi_loader/efi_disk.c
> @@ -99,21 +99,22 @@ static efi_status_t efi_disk_rw_blocks(struct efi_block_io *this,
>   	if (buffer_size & (blksz - 1))
>   		return EFI_BAD_BUFFER_SIZE;
>
> -#if CONFIG_IS_ENABLED(PARTITIONS)
> -	if (direction == EFI_DISK_READ)
> -		n = dev_read(diskobj->dev, lba, blocks, buffer);
> -	else
> -		n = dev_write(diskobj->dev, lba, blocks, buffer);
> -#else
> -	/* dev is always a block device (UCLASS_BLK) */
> -	struct blk_desc *desc;
> +	if (CONFIG_IS_ENABLED(PARTITIONS) &&
> +	    device_get_uclass_id(diskobj->dev) == UCLASS_PARTITION) {
> +		if (direction == EFI_DISK_READ)
> +			n = dev_read(diskobj->dev, lba, blocks, buffer);
> +		else
> +			n = dev_write(diskobj->dev, lba, blocks, buffer);

Thanks for the patch. It solves the problem with the block IO protocol.

Why should dev_read() and dev_write only work for UCLASS_PARTITION?
Can't we make it work for any block device? I think the treatment of
different types of block devices should be moved to disk/disk-uclass.c.

I will pull this patch as a fast fix. But this should not be the final
design.

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>

> +	} else {
> +		/* dev is a block device (UCLASS_BLK) */
> +		struct blk_desc *desc;
>
> -	desc = dev_get_uclass_plat(diskobj->dev);
> -	if (direction == EFI_DISK_READ)
> -		n = blk_dread(desc, lba, blocks, buffer);
> -	else
> -		n = blk_dwrite(desc, lba, blocks, buffer);
> -#endif
> +		desc = dev_get_uclass_plat(diskobj->dev);
> +		if (direction == EFI_DISK_READ)
> +			n = blk_dread(desc, lba, blocks, buffer);
> +		else
> +			n = blk_dwrite(desc, lba, blocks, buffer);
> +	}
>
>   	/* We don't do interrupts, so check for timers cooperatively */
>   	efi_timer_check();


  reply	other threads:[~2022-04-28 10:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-28  4:49 [PATCH] efi_loader: disk: allow blk devices even without UCLASS_PARTITION AKASHI Takahiro
2022-04-28 10:43 ` Heinrich Schuchardt [this message]
2022-05-09  5:33   ` AKASHI Takahiro
2022-05-19  5:11     ` AKASHI Takahiro
2022-06-01  0:29       ` AKASHI Takahiro
2022-04-28 20:08 ` Mark Kettenis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=706b0e6e-59d1-52f7-3fc9-55285491bf62@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=mark.kettenis@xs4all.nl \
    --cc=sjg@chromium.org \
    --cc=takahiro.akashi@linaro.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.