From: Ilias Apalodimas <ilias.apalodimas@linaro.org>
To: Sughosh Ganu <sughosh.ganu@linaro.org>
Cc: u-boot@lists.denx.de,
Masami Hiramatsu <masami.hiramatsu@linaro.org>,
Patrick Delaunay <patrick.delaunay@foss.st.com>,
Patrice Chotard <patrice.chotard@foss.st.com>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
Alexander Graf <agraf@csgraf.de>,
AKASHI Takahiro <takahiro.akashi@linaro.org>,
Simon Glass <sjg@chromium.org>, Bin Meng <bmeng.cn@gmail.com>,
Jose Marinho <jose.marinho@arm.com>,
Grant Likely <grant.likely@arm.com>,
Tom Rini <trini@konsulko.com>,
Etienne Carriere <etienne.carriere@linaro.org>
Subject: Re: [RFC PATCH v3 3/9] FWU: stm32mp1: Add helper functions for accessing FWU metadata
Date: Fri, 21 Jan 2022 13:52:00 +0200 [thread overview]
Message-ID: <YeqeYN9+kL1tkRJ+@hades> (raw)
In-Reply-To: <20220119185548.16730-4-sughosh.ganu@linaro.org>
Hi Sughosh,
[...]
> }
>
> U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_COPRO, board_copro_image_process);
> +
> +#if defined(CONFIG_FWU_MULTI_BANK_UPDATE)
> +#include <fwu.h>
> +#include <fwu_mdata.h>
> +
> +static int gpt_plat_get_alt_num(int dev_num, void *identifier)
> +{
> + int i;
> + int ret = -1;
> + u32 part;
> + int alt_num = dfu_get_alt_number();
> + struct dfu_entity *dfu;
> +
> + part = *(u32 *)identifier;
> + dfu_init_env_entities(NULL, NULL);
> +
> + for (i = 0; i < alt_num; i++) {
> + dfu = dfu_get_entity(i);
> +
> + if (!dfu)
> + continue;
> +
> + /*
> + * Currently, Multi Bank update
> + * feature is being supported
> + * only on GPT partitioned
> + * MMC/SD devices.
> + */
> + if (dfu->dev_type != DFU_DEV_MMC)
> + continue;
And that's fine. But can you add a pr_warn or something on this check? So
if anyone tries to implement this on a non-sd card can get a clear
indication of what's not working?
> +
> + if (dfu->layout == DFU_RAW_ADDR &&
> + dfu->data.mmc.dev_num == dev_num &&
> + dfu->data.mmc.part == part) {
> + ret = dfu->alt;
> + break;
> + }
> + }
> +
> + dfu_free_entities();
> +
> + return ret;
> +}
> +
> +int fwu_plat_get_alt_num(void *identifier)
> +{
> + int ret;
> + struct blk_desc *desc;
> +
> + ret = fwu_plat_get_blk_desc(&desc);
> + if (ret < 0) {
> + log_err("Block device not found\n");
> + return -ENODEV;
> + }
> +
> + return gpt_plat_get_alt_num(desc->devnum, identifier);
> +}
> +
> +static int plat_fill_gpt_partition_guids(struct blk_desc *desc,
> + efi_guid_t **part_guid_arr)
> +{
> + int i, ret = 0;
> + u32 part;
> + struct dfu_entity *dfu;
> + struct disk_partition info;
> + efi_guid_t part_type_guid;
> + int alt_num = dfu_get_alt_number();
> +
> + dfu_init_env_entities(NULL, NULL);
> +
> + for (i = 0, part = 1; i < alt_num; i++) {
> + dfu = dfu_get_entity(i);
> +
> + if (!dfu)
> + continue;
> +
> + /*
> + * Currently, Multi Bank update
> + * feature is being supported
> + * only on GPT partitioned
> + * MMC/SD devices.
> + */
> + if (dfu->dev_type != DFU_DEV_MMC)
ditto
> + continue;
> +
> + if (part_get_info(desc, part, &info)) {
> + part++;
> + continue;
> + }
> +
> + uuid_str_to_bin(info.type_guid, part_type_guid.b,
> + UUID_STR_FORMAT_GUID);
> + guidcpy((*part_guid_arr + i), &part_type_guid);
> + part++;
> + }
> +
> + dfu_free_entities();
> +
> + return ret;
> +}
> +
> +int fwu_plat_fill_partition_guids(efi_guid_t **part_guid_arr)
> +{
> + int ret;
> + struct blk_desc *desc;
> +
> + ret = fwu_plat_get_blk_desc(&desc);
> + if (ret < 0) {
> + log_err("Block device not found\n");
> + return -ENODEV;
> + }
> +
> + return plat_fill_gpt_partition_guids(desc, part_guid_arr);
> +}
> +
> +int fwu_plat_get_update_index(u32 *update_idx)
> +{
> + int ret;
> + u32 active_idx;
> +
> + ret = fwu_get_active_index(&active_idx);
> +
> + if (ret < 0)
> + return -1;
> +
> + *update_idx = active_idx ^= 0x1;
> +
> + return ret;
> +}
> +
> +int fwu_plat_get_blk_desc(struct blk_desc **desc)
> +{
> + int ret;
> + struct mmc *mmc;
> + struct udevice *dev;
> +
> + /*
> + * Initial support is being added for the DK2
> + * platform
> + */
> + if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) &&
> + (of_machine_is_compatible("st,stm32mp157c-dk2"))) {
> + ret = uclass_get_device(UCLASS_MMC, 0, &dev);
> + if (ret)
> + return -1;
> +
> + mmc = mmc_get_mmc_dev(dev);
> + if (!mmc)
> + return -1;
> +
> + if (mmc_init(mmc))
> + return -1;
> +
> + *desc = mmc_get_blk_desc(mmc);
> + if (!*desc)
> + return -1;
> + }
> +
> + return 0;
> +}
> +
> +struct fwu_mdata_ops *get_plat_fwu_mdata_ops(void)
> +{
> + if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) &&
> + (of_machine_is_compatible("st,stm32mp157c-dk2"))) {
> + return &fwu_gpt_blk_ops;
> + }
> +
> + return NULL;
> +}
> +#endif /* CONFIG_FWU_MULTI_BANK_UPDATE */
> diff --git a/include/fwu.h b/include/fwu.h
> index 12f7eecdb0..b23a93ac40 100644
> --- a/include/fwu.h
> +++ b/include/fwu.h
> @@ -59,4 +59,9 @@ int fwu_revert_boot_index(void);
> int fwu_accept_image(efi_guid_t *img_type_id, u32 bank);
> int fwu_clear_accept_image(efi_guid_t *img_type_id, u32 bank);
>
> +int fwu_plat_get_update_index(u32 *update_idx);
> +int fwu_plat_get_blk_desc(struct blk_desc **desc);
> +int fwu_plat_get_alt_num(void *identifier);
> +int fwu_plat_fill_partition_guids(efi_guid_t **part_guid_arr);
> +
> #endif /* _FWU_H_ */
> diff --git a/lib/fwu_updates/fwu_mdata_gpt_blk.c b/lib/fwu_updates/fwu_mdata_gpt_blk.c
> index cb47ddf4a7..796b08e76f 100644
> --- a/lib/fwu_updates/fwu_mdata_gpt_blk.c
> +++ b/lib/fwu_updates/fwu_mdata_gpt_blk.c
> @@ -37,6 +37,7 @@ static int gpt_get_mdata_partitions(struct blk_desc *desc,
> struct disk_partition info;
> const efi_guid_t fwu_mdata_guid = FWU_MDATA_GUID;
>
> + mdata_parts = 0;
> for (i = 1; i < MAX_SEARCH_PARTITIONS; i++) {
> if (part_get_info(desc, i, &info))
> continue;
> @@ -324,7 +325,7 @@ out:
> int fwu_gpt_get_active_index(u32 *active_idx)
> {
> int ret;
> - struct fwu_mdata *mdata;
> + struct fwu_mdata *mdata = NULL;
Should these be part of the original patch?
>
> ret = gpt_get_mdata(&mdata);
> if (ret < 0) {
> @@ -355,7 +356,7 @@ static int gpt_get_image_alt_num(struct blk_desc *desc,
> {
> int ret, i;
> u32 part;
> - struct fwu_mdata *mdata;
> + struct fwu_mdata *mdata = NULL;
> struct fwu_image_entry *img_entry;
> struct fwu_image_bank_info *img_bank_info;
> struct disk_partition info;
> @@ -459,7 +460,7 @@ static int fwu_gpt_set_clear_image_accept(efi_guid_t *img_type_id,
> void *buf;
> int ret, i;
> u32 nimages;
> - struct fwu_mdata *mdata;
> + struct fwu_mdata *mdata = NULL;
> struct fwu_image_entry *img_entry;
> struct fwu_image_bank_info *img_bank_info;
>
> --
> 2.17.1
>
next prev parent reply other threads:[~2022-01-21 11:52 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-19 18:55 [RFC PATCH v3 0/9] FWU: Add support for FWU Multi Bank Update feature Sughosh Ganu
2022-01-19 18:55 ` [RFC PATCH v3 1/9] FWU: Add FWU metadata structure and functions for accessing metadata Sughosh Ganu
2022-01-20 5:53 ` Masami Hiramatsu
2022-01-24 6:59 ` Sughosh Ganu
2022-01-20 6:05 ` Masami Hiramatsu
2022-01-24 7:07 ` Sughosh Ganu
2022-01-20 12:18 ` Heinrich Schuchardt
2022-01-19 18:55 ` [RFC PATCH v3 2/9] FWU: Add FWU metadata access functions for GPT partitioned block devices Sughosh Ganu
2022-01-20 8:43 ` Masami Hiramatsu
2022-01-24 6:58 ` Sughosh Ganu
2022-01-24 7:17 ` Masami Hiramatsu
2022-01-24 7:38 ` AKASHI Takahiro
2022-01-20 11:27 ` Heinrich Schuchardt
2022-01-21 10:20 ` Sughosh Ganu
2022-01-19 18:55 ` [RFC PATCH v3 3/9] FWU: stm32mp1: Add helper functions for accessing FWU metadata Sughosh Ganu
2022-01-20 10:59 ` Heinrich Schuchardt
2022-01-21 10:05 ` Sughosh Ganu
2022-01-21 11:52 ` Ilias Apalodimas [this message]
2022-01-24 2:46 ` Masami Hiramatsu
2022-01-24 7:17 ` Sughosh Ganu
2022-01-19 18:55 ` [RFC PATCH v3 4/9] FWU: STM32MP1: Add support to read boot index from backup register Sughosh Ganu
2022-01-20 12:24 ` Heinrich Schuchardt
2022-01-19 18:55 ` [RFC PATCH v3 5/9] EFI: FMP: Add provision to update image's ImageTypeId in image descriptor Sughosh Ganu
2022-01-20 5:24 ` AKASHI Takahiro
2022-01-21 7:02 ` Sughosh Ganu
2022-01-24 2:33 ` AKASHI Takahiro
2022-01-24 6:27 ` Sughosh Ganu
2022-01-19 18:55 ` [RFC PATCH v3 6/9] FWU: Add boot time checks as highlighted by the FWU specification Sughosh Ganu
2022-01-21 13:15 ` Ilias Apalodimas
2022-01-19 18:55 ` [RFC PATCH v3 7/9] FWU: Add support for FWU Multi Bank Update feature Sughosh Ganu
2022-01-20 6:07 ` Masami Hiramatsu
2022-01-21 7:17 ` Sughosh Ganu
2022-01-19 18:55 ` [RFC PATCH v3 8/9] FWU: cmd: Add a command to read FWU metadata Sughosh Ganu
2022-01-20 12:28 ` Heinrich Schuchardt
2022-01-19 18:55 ` [RFC PATCH v3 9/9] mkeficapsule: Add support for generating empty capsules Sughosh Ganu
2022-01-20 2:13 ` AKASHI Takahiro
2022-01-21 6:48 ` Sughosh Ganu
2022-01-24 2:08 ` AKASHI Takahiro
2022-01-24 2:48 ` Masami Hiramatsu
2022-01-21 13:00 ` Ilias Apalodimas
2022-01-31 13:17 ` Sughosh Ganu
2022-01-20 5:31 ` [RFC PATCH v3 0/9] FWU: Add support for FWU Multi Bank Update feature AKASHI Takahiro
2022-01-21 7:10 ` Sughosh Ganu
2022-01-20 10:08 ` Heinrich Schuchardt
2022-01-21 7:15 ` Sughosh Ganu
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=YeqeYN9+kL1tkRJ+@hades \
--to=ilias.apalodimas@linaro.org \
--cc=agraf@csgraf.de \
--cc=bmeng.cn@gmail.com \
--cc=etienne.carriere@linaro.org \
--cc=grant.likely@arm.com \
--cc=jose.marinho@arm.com \
--cc=masami.hiramatsu@linaro.org \
--cc=patrice.chotard@foss.st.com \
--cc=patrick.delaunay@foss.st.com \
--cc=sjg@chromium.org \
--cc=sughosh.ganu@linaro.org \
--cc=takahiro.akashi@linaro.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.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.