* [PATCH 1/1] efi_driver: carve out function to create block device
@ 2022-10-04 14:29 Heinrich Schuchardt
2022-10-05 8:49 ` Ilias Apalodimas
0 siblings, 1 reply; 2+ messages in thread
From: Heinrich Schuchardt @ 2022-10-04 14:29 UTC (permalink / raw)
To: Ilias Apalodimas; +Cc: u-boot, Heinrich Schuchardt
* Carve out function efi_bl_create_block_device() from efi_bl_bind().
* Add a check for U-Boot devices to efi_bl_bind().
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
lib/efi_driver/efi_block_device.c | 32 ++++++++++++++++++++++++-------
lib/efi_driver/efi_uclass.c | 9 ---------
2 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/lib/efi_driver/efi_block_device.c b/lib/efi_driver/efi_block_device.c
index 9ccc148590..3103040870 100644
--- a/lib/efi_driver/efi_block_device.c
+++ b/lib/efi_driver/efi_block_device.c
@@ -114,21 +114,16 @@ static ulong efi_bl_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
* @interface: block io protocol
* Return: status code
*/
-static efi_status_t efi_bl_bind(efi_handle_t handle, void *interface)
+static efi_status_t
+efi_bl_create_block_device(efi_handle_t handle, void *interface)
{
struct udevice *bdev = NULL, *parent = dm_root();
efi_status_t ret;
int devnum;
char *name;
- struct efi_object *obj = efi_search_obj(handle);
struct efi_block_io *io = interface;
struct efi_blk_plat *plat;
- EFI_PRINT("%s: handle %p, interface %p\n", __func__, handle, io);
-
- if (!obj || !interface)
- return EFI_INVALID_PARAMETER;
-
devnum = blk_find_max_devnum(UCLASS_EFI_LOADER);
if (devnum == -ENODEV)
devnum = 0;
@@ -176,6 +171,29 @@ err:
return ret;
}
+/**
+ * efi_bl_bind() - bind to a block io protocol
+ *
+ * @handle: handle
+ * @interface: block io protocol
+ * Return: status code
+ */
+static efi_status_t efi_bl_bind(efi_handle_t handle, void *interface)
+{
+ efi_status_t ret;
+ struct efi_object *obj = efi_search_obj(handle);
+
+ EFI_PRINT("%s: handle %p, interface %p\n", __func__, handle, interface);
+
+ if (!obj || !interface)
+ return EFI_INVALID_PARAMETER;
+
+ if (!handle->dev)
+ ret = efi_bl_create_block_device(handle, interface);
+
+ return ret;
+}
+
/* Block device driver operators */
static const struct blk_ops efi_blk_ops = {
.read = efi_bl_read,
--
2.37.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 1/1] efi_driver: carve out function to create block device
2022-10-04 14:29 [PATCH 1/1] efi_driver: carve out function to create block device Heinrich Schuchardt
@ 2022-10-05 8:49 ` Ilias Apalodimas
0 siblings, 0 replies; 2+ messages in thread
From: Ilias Apalodimas @ 2022-10-05 8:49 UTC (permalink / raw)
Cc: u-boot
Hi Heinrich,
On Tue, Oct 04, 2022 at 04:29:25PM +0200, Heinrich Schuchardt wrote:
> * Carve out function efi_bl_create_block_device() from efi_bl_bind().
> * Add a check for U-Boot devices to efi_bl_bind().
What the code does is obvious here, can we slightly change the commit
message and explain why this is needed? Readability?
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
> ---
> lib/efi_driver/efi_block_device.c | 32 ++++++++++++++++++++++++-------
> lib/efi_driver/efi_uclass.c | 9 ---------
> 2 files changed, 25 insertions(+), 16 deletions(-)
>
> diff --git a/lib/efi_driver/efi_block_device.c b/lib/efi_driver/efi_block_device.c
> index 9ccc148590..3103040870 100644
> --- a/lib/efi_driver/efi_block_device.c
> +++ b/lib/efi_driver/efi_block_device.c
> @@ -114,21 +114,16 @@ static ulong efi_bl_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
> * @interface: block io protocol
> * Return: status code
> */
> -static efi_status_t efi_bl_bind(efi_handle_t handle, void *interface)
> +static efi_status_t
> +efi_bl_create_block_device(efi_handle_t handle, void *interface)
> {
> struct udevice *bdev = NULL, *parent = dm_root();
> efi_status_t ret;
> int devnum;
> char *name;
> - struct efi_object *obj = efi_search_obj(handle);
> struct efi_block_io *io = interface;
> struct efi_blk_plat *plat;
>
> - EFI_PRINT("%s: handle %p, interface %p\n", __func__, handle, io);
> -
> - if (!obj || !interface)
> - return EFI_INVALID_PARAMETER;
> -
> devnum = blk_find_max_devnum(UCLASS_EFI_LOADER);
> if (devnum == -ENODEV)
> devnum = 0;
> @@ -176,6 +171,29 @@ err:
> return ret;
> }
>
> +/**
> + * efi_bl_bind() - bind to a block io protocol
> + *
> + * @handle: handle
> + * @interface: block io protocol
> + * Return: status code
> + */
> +static efi_status_t efi_bl_bind(efi_handle_t handle, void *interface)
> +{
> + efi_status_t ret;
> + struct efi_object *obj = efi_search_obj(handle);
> +
> + EFI_PRINT("%s: handle %p, interface %p\n", __func__, handle, interface);
> +
> + if (!obj || !interface)
> + return EFI_INVALID_PARAMETER;
> +
> + if (!handle->dev)
> + ret = efi_bl_create_block_device(handle, interface);
Keeping in mind devices should usually be bound once (unless we reinit the
subsystem) should we print something here?
Also ret need to be initialized on the declaration.
> +
> + return ret;
> +}
> +
> /* Block device driver operators */
> static const struct blk_ops efi_blk_ops = {
> .read = efi_bl_read,
> --
> 2.37.2
>
Thanks
/Ilias
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-10-05 8:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-04 14:29 [PATCH 1/1] efi_driver: carve out function to create block device Heinrich Schuchardt
2022-10-05 8:49 ` Ilias Apalodimas
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox