From: AKASHI Takahiro <takahiro.akashi@linaro.org>
To: u-boot@lists.denx.de
Subject: [PATCH v3 2/2] efi_loader: identify EFI system partition
Date: Thu, 23 Apr 2020 09:19:53 +0900 [thread overview]
Message-ID: <20200423001953.GC28438@laputa> (raw)
In-Reply-To: <20200422175133.6664-3-xypron.glpk@gmx.de>
Heinrich,
On Wed, Apr 22, 2020 at 07:51:33PM +0200, Heinrich Schuchardt wrote:
> In subsequent patches UEFI variables shalled be stored on the EFI system
> partition. Hence we need to identify the EFI system partition.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> v3:
> adjust commit message
I said 'no' along with my counter proposals[1], and you haven't
replied yet.
[1] https://lists.denx.de/pipermail/u-boot/2020-April/406678.html
-Takahiro Akashi
> v2:
> no change
> ---
> include/efi_loader.h | 7 +++++++
> lib/efi_loader/efi_disk.c | 20 ++++++++++++++++++++
> 2 files changed, 27 insertions(+)
>
> diff --git a/include/efi_loader.h b/include/efi_loader.h
> index 0ba9a1f702..b7bccf50b3 100644
> --- a/include/efi_loader.h
> +++ b/include/efi_loader.h
> @@ -47,6 +47,13 @@ static inline void *guidcpy(void *dst, const void *src)
> /* Root node */
> extern efi_handle_t efi_root;
>
> +/* EFI system partition */
> +extern struct efi_system_partition {
> + enum if_type if_type;
> + int devnum;
> + u8 part;
> +} efi_system_partition;
> +
> int __efi_entry_check(void);
> int __efi_exit_check(void);
> const char *__efi_nesting(void);
> diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
> index fd8fe17567..fd3df80b0b 100644
> --- a/lib/efi_loader/efi_disk.c
> +++ b/lib/efi_loader/efi_disk.c
> @@ -13,6 +13,8 @@
> #include <part.h>
> #include <malloc.h>
>
> +struct efi_system_partition efi_system_partition;
> +
> const efi_guid_t efi_block_io_guid = EFI_BLOCK_IO_PROTOCOL_GUID;
>
> /**
> @@ -418,6 +420,24 @@ static efi_status_t efi_disk_add_dev(
> diskobj->ops.media = &diskobj->media;
> if (disk)
> *disk = diskobj;
> +
> + /* Store first EFI system partition */
> + if (part && !efi_system_partition.if_type) {
> + int r;
> + disk_partition_t info;
> +
> + r = part_get_info(desc, part, &info);
> + if (r)
> + return EFI_DEVICE_ERROR;
> + if (info.bootable & PART_EFI_SYSTEM_PARTITION) {
> + efi_system_partition.if_type = desc->if_type;
> + efi_system_partition.devnum = desc->devnum;
> + efi_system_partition.part = part;
> + EFI_PRINT("EFI system partition: %s %d:%d\n",
> + blk_get_if_type_name(desc->if_type),
> + desc->devnum, part);
> + }
> + }
> return EFI_SUCCESS;
> }
>
> --
> 2.26.1
>
next prev parent reply other threads:[~2020-04-23 0:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-22 17:51 [PATCH v3 0/2] efi_loader: identify EFI system partition Heinrich Schuchardt
2020-04-22 17:51 ` [PATCH v3 1/2] part: detect " Heinrich Schuchardt
2020-04-22 17:51 ` [PATCH v3 2/2] efi_loader: identify " Heinrich Schuchardt
2020-04-23 0:19 ` AKASHI Takahiro [this message]
2020-04-30 5:20 ` Heinrich Schuchardt
2020-05-06 12:51 ` Patrick Wildt
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=20200423001953.GC28438@laputa \
--to=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.