* [U-Boot] [PATCH v2 0/3] fastboot: Fix getvar "has-slot" and cleanup
@ 2019-06-12 21:14 Sam Protsenko
2019-06-12 21:14 ` [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name Sam Protsenko
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Sam Protsenko @ 2019-06-12 21:14 UTC (permalink / raw)
To: u-boot
This patch series fixes "has-slot" fastboot variable and provides
associated refactoring, so that related code is not cluttered.
Igor Opaniuk (1):
fastboot: Check if partition really exist in getvar_has_slot()
Sam Protsenko (2):
fastboot: Use const qualifier for char *part_name
fastboot: getvar: Refactor fastboot_*_get_part_info() usage
drivers/fastboot/fb_getvar.c | 78 +++++++++++++++++++++++++++---------
drivers/fastboot/fb_mmc.c | 3 +-
drivers/fastboot/fb_nand.c | 4 +-
include/fb_mmc.h | 3 +-
include/fb_nand.h | 4 +-
5 files changed, 66 insertions(+), 26 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name
2019-06-12 21:14 [U-Boot] [PATCH v2 0/3] fastboot: Fix getvar "has-slot" and cleanup Sam Protsenko
@ 2019-06-12 21:14 ` Sam Protsenko
2019-06-13 5:45 ` Lukasz Majewski
2019-06-13 8:12 ` Igor Opaniuk
2019-06-12 21:14 ` [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage Sam Protsenko
2019-06-12 21:14 ` [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot() Sam Protsenko
2 siblings, 2 replies; 14+ messages in thread
From: Sam Protsenko @ 2019-06-12 21:14 UTC (permalink / raw)
To: u-boot
In fastboot_*_get_part_info() functions we can use stronger typing by
expecting const strings.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
drivers/fastboot/fb_mmc.c | 3 ++-
drivers/fastboot/fb_nand.c | 4 ++--
include/fb_mmc.h | 3 ++-
include/fb_nand.h | 4 ++--
4 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
index 90ca81da9b..0a335db3a6 100644
--- a/drivers/fastboot/fb_mmc.c
+++ b/drivers/fastboot/fb_mmc.c
@@ -298,7 +298,8 @@ static int fb_mmc_update_zimage(struct blk_desc *dev_desc,
* @part_info: Pointer to returned disk_partition_t
* @response: Pointer to fastboot response buffer
*/
-int fastboot_mmc_get_part_info(char *part_name, struct blk_desc **dev_desc,
+int fastboot_mmc_get_part_info(const char *part_name,
+ struct blk_desc **dev_desc,
disk_partition_t *part_info, char *response)
{
int r;
diff --git a/drivers/fastboot/fb_nand.c b/drivers/fastboot/fb_nand.c
index 526bc12307..6756ea769f 100644
--- a/drivers/fastboot/fb_nand.c
+++ b/drivers/fastboot/fb_nand.c
@@ -152,8 +152,8 @@ static lbaint_t fb_nand_sparse_reserve(struct sparse_storage *info,
* @part_info: Pointer to returned part_info pointer
* @response: Pointer to fastboot response buffer
*/
-int fastboot_nand_get_part_info(char *part_name, struct part_info **part_info,
- char *response)
+int fastboot_nand_get_part_info(const char *part_name,
+ struct part_info **part_info, char *response)
{
struct mtd_info *mtd = NULL;
diff --git a/include/fb_mmc.h b/include/fb_mmc.h
index fd5db9eac8..95db001bee 100644
--- a/include/fb_mmc.h
+++ b/include/fb_mmc.h
@@ -14,7 +14,8 @@
* @part_info: Pointer to returned disk_partition_t
* @response: Pointer to fastboot response buffer
*/
-int fastboot_mmc_get_part_info(char *part_name, struct blk_desc **dev_desc,
+int fastboot_mmc_get_part_info(const char *part_name,
+ struct blk_desc **dev_desc,
disk_partition_t *part_info, char *response);
/**
diff --git a/include/fb_nand.h b/include/fb_nand.h
index 08ab0e28a6..6d7999f262 100644
--- a/include/fb_nand.h
+++ b/include/fb_nand.h
@@ -16,8 +16,8 @@
* @part_info: Pointer to returned part_info pointer
* @response: Pointer to fastboot response buffer
*/
-int fastboot_nand_get_part_info(char *part_name, struct part_info **part_info,
- char *response);
+int fastboot_nand_get_part_info(const char *part_name,
+ struct part_info **part_info, char *response);
/**
* fastboot_nand_flash_write() - Write image to NAND for fastboot
--
2.20.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage
2019-06-12 21:14 [U-Boot] [PATCH v2 0/3] fastboot: Fix getvar "has-slot" and cleanup Sam Protsenko
2019-06-12 21:14 ` [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name Sam Protsenko
@ 2019-06-12 21:14 ` Sam Protsenko
2019-06-13 5:46 ` Lukasz Majewski
2019-06-13 8:11 ` Igor Opaniuk
2019-06-12 21:14 ` [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot() Sam Protsenko
2 siblings, 2 replies; 14+ messages in thread
From: Sam Protsenko @ 2019-06-12 21:14 UTC (permalink / raw)
To: u-boot
Extract fastboot_*_get_part_info() usage for MMC and NAND into
getvar_get_part_info() function, as it will be needed further in other
functions. This way we can avoid code duplication and mess with
preprocessor directives across all points of usage.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
drivers/fastboot/fb_getvar.c | 52 +++++++++++++++++++++++++-----------
1 file changed, 36 insertions(+), 16 deletions(-)
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c
index 4268628f5e..b23880089e 100644
--- a/drivers/fastboot/fb_getvar.c
+++ b/drivers/fastboot/fb_getvar.c
@@ -81,6 +81,41 @@ static const struct {
}
};
+#if CONFIG_IS_ENABLED(FASTBOOT_FLASH)
+/**
+ * Universal function to get partition number and size.
+ *
+ * @param[in] part_name Info for which partition name to look for
+ * @param[in,out] response Pointer to fastboot response buffer
+ * @param[out] size If not NULL, will contain partition size (in blocks)
+ * @return Partition number or negative value on error
+ */
+static int getvar_get_part_info(const char *part_name, char *response,
+ size_t *size)
+{
+ int r;
+# if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
+ struct blk_desc *dev_desc;
+ disk_partition_t part_info;
+
+ r = fastboot_mmc_get_part_info(part_name, &dev_desc, &part_info,
+ response);
+ if (r >= 0 && size)
+ *size = part_info.size;
+# elif CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)
+ struct part_info *part_info;
+
+ r = fastboot_nand_get_part_info(part_name, &part_info, response);
+ if (r >= 0 && size)
+ *size = part_info->size;
+# else
+ r = -ENODEV;
+# endif
+
+ return r;
+}
+#endif
+
static void getvar_version(char *var_parameter, char *response)
{
fastboot_okay(FASTBOOT_VERSION, response);
@@ -176,22 +211,7 @@ static void getvar_partition_size(char *part_name, char *response)
int r;
size_t size;
-#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
- struct blk_desc *dev_desc;
- disk_partition_t part_info;
-
- r = fastboot_mmc_get_part_info(part_name, &dev_desc, &part_info,
- response);
- if (r >= 0)
- size = part_info.size;
-#endif
-#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)
- struct part_info *part_info;
-
- r = fastboot_nand_get_part_info(part_name, &part_info, response);
- if (r >= 0)
- size = part_info->size;
-#endif
+ r = getvar_get_part_info(part_name, response, &size);
if (r >= 0)
fastboot_response("OKAY", response, "0x%016zx", size);
}
--
2.20.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-12 21:14 [U-Boot] [PATCH v2 0/3] fastboot: Fix getvar "has-slot" and cleanup Sam Protsenko
2019-06-12 21:14 ` [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name Sam Protsenko
2019-06-12 21:14 ` [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage Sam Protsenko
@ 2019-06-12 21:14 ` Sam Protsenko
2019-06-12 21:20 ` Sam Protsenko
` (2 more replies)
2 siblings, 3 replies; 14+ messages in thread
From: Sam Protsenko @ 2019-06-12 21:14 UTC (permalink / raw)
To: u-boot
From: Igor Opaniuk <igor.opaniuk@toradex.com>
Currently getvar_has_slot() invocation for "boot" and "system"
partitions always returns affirmative response regardless the fact of
existence of these partitions, which leads to impossibility to flash them
on old non-A/B AOSP setups, where _a/_b suffixes aren't used:
$ fastboot flash boot boot.img
Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
Writing 'boot__a' FAILED (remote: 'cannot find partition')
fastboot: error: Command failed
Although partition layout is:
-> part list mmc 0
Partition Map for MMC device 0 -- Partition Type: EFI
Part Start LBA End LBA Name
Attributes
Type GUID
Partition GUID
1 0x00000800 0x000107ff "boot"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
guid: ea2e2470-db4a-d646-b828-10167f736d63
2 0x00010800 0x000127ff "environment"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
guid: 10a819d2-6004-3d48-bd87-114e2a796db9
3 0x00012800 0x0001a7ff "recovery"
attrs: 0x0000000000000000
type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
4 0x0001a800 0x0031a7ff "system"
attrs: 0x0000000000000000
......
This patch adds checks of existence for requested partitions
on eMMC/NAND.
Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
---
drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c
index b23880089e..563bda0088 100644
--- a/drivers/fastboot/fb_getvar.c
+++ b/drivers/fastboot/fb_getvar.c
@@ -179,11 +179,29 @@ static void getvar_slot_suffixes(char *var_parameter, char *response)
static void getvar_has_slot(char *part_name, char *response)
{
- if (part_name && (!strcmp(part_name, "boot") ||
- !strcmp(part_name, "system")))
+ char part_name_wslot[PART_NAME_LEN];
+ size_t len;
+ int r;
+
+ if (!part_name)
+ goto no;
+
+ /* Append "_a" prefix to part_name */
+ len = strlcpy(part_name_wslot, part_name, PART_NAME_LEN - 3);
+ if (len > PART_NAME_LEN - 3) {
+ fastboot_fail("too long partition name", response);
+ return;
+ }
+ strcat(part_name_wslot, "_a");
+
+ /* Check if this partition exists */
+ r = getvar_get_part_info(part_name_wslot, response, NULL);
+ if (r >= 0) {
fastboot_okay("yes", response);
- else
- fastboot_okay("no", response);
+ return;
+ }
+no:
+ fastboot_okay("no", response);
}
#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
--
2.20.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-12 21:14 ` [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot() Sam Protsenko
@ 2019-06-12 21:20 ` Sam Protsenko
2019-06-13 5:47 ` Lukasz Majewski
2019-06-13 5:46 ` Lukasz Majewski
2019-06-13 11:30 ` Eugeniu Rosca
2 siblings, 1 reply; 14+ messages in thread
From: Sam Protsenko @ 2019-06-12 21:20 UTC (permalink / raw)
To: u-boot
Hi Tom,
We have broken fastboot right now... Can we please apply this series,
so that it appears in v2019.07?
Thanks!
On Thu, Jun 13, 2019 at 12:14 AM Sam Protsenko
<semen.protsenko@linaro.org> wrote:
>
> From: Igor Opaniuk <igor.opaniuk@toradex.com>
>
> Currently getvar_has_slot() invocation for "boot" and "system"
> partitions always returns affirmative response regardless the fact of
> existence of these partitions, which leads to impossibility to flash them
> on old non-A/B AOSP setups, where _a/_b suffixes aren't used:
>
> $ fastboot flash boot boot.img
> Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
> Writing 'boot__a' FAILED (remote: 'cannot find partition')
> fastboot: error: Command failed
>
> Although partition layout is:
> -> part list mmc 0
> Partition Map for MMC device 0 -- Partition Type: EFI
>
> Part Start LBA End LBA Name
> Attributes
> Type GUID
> Partition GUID
> 1 0x00000800 0x000107ff "boot"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: ea2e2470-db4a-d646-b828-10167f736d63
> 2 0x00010800 0x000127ff "environment"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: 10a819d2-6004-3d48-bd87-114e2a796db9
> 3 0x00012800 0x0001a7ff "recovery"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
> 4 0x0001a800 0x0031a7ff "system"
> attrs: 0x0000000000000000
> ......
>
> This patch adds checks of existence for requested partitions
> on eMMC/NAND.
>
> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c
> index b23880089e..563bda0088 100644
> --- a/drivers/fastboot/fb_getvar.c
> +++ b/drivers/fastboot/fb_getvar.c
> @@ -179,11 +179,29 @@ static void getvar_slot_suffixes(char *var_parameter, char *response)
>
> static void getvar_has_slot(char *part_name, char *response)
> {
> - if (part_name && (!strcmp(part_name, "boot") ||
> - !strcmp(part_name, "system")))
> + char part_name_wslot[PART_NAME_LEN];
> + size_t len;
> + int r;
> +
> + if (!part_name)
> + goto no;
> +
> + /* Append "_a" prefix to part_name */
> + len = strlcpy(part_name_wslot, part_name, PART_NAME_LEN - 3);
> + if (len > PART_NAME_LEN - 3) {
> + fastboot_fail("too long partition name", response);
> + return;
> + }
> + strcat(part_name_wslot, "_a");
> +
> + /* Check if this partition exists */
> + r = getvar_get_part_info(part_name_wslot, response, NULL);
> + if (r >= 0) {
> fastboot_okay("yes", response);
> - else
> - fastboot_okay("no", response);
> + return;
> + }
> +no:
> + fastboot_okay("no", response);
> }
>
> #if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> --
> 2.20.1
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name
2019-06-12 21:14 ` [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name Sam Protsenko
@ 2019-06-13 5:45 ` Lukasz Majewski
2019-06-13 8:12 ` Igor Opaniuk
1 sibling, 0 replies; 14+ messages in thread
From: Lukasz Majewski @ 2019-06-13 5:45 UTC (permalink / raw)
To: u-boot
On Thu, 13 Jun 2019 00:14:09 +0300
Sam Protsenko <semen.protsenko@linaro.org> wrote:
> In fastboot_*_get_part_info() functions we can use stronger typing by
> expecting const strings.
>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_mmc.c | 3 ++-
> drivers/fastboot/fb_nand.c | 4 ++--
> include/fb_mmc.h | 3 ++-
> include/fb_nand.h | 4 ++--
> 4 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
> index 90ca81da9b..0a335db3a6 100644
> --- a/drivers/fastboot/fb_mmc.c
> +++ b/drivers/fastboot/fb_mmc.c
> @@ -298,7 +298,8 @@ static int fb_mmc_update_zimage(struct blk_desc
> *dev_desc,
> * @part_info: Pointer to returned disk_partition_t
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_mmc_get_part_info(char *part_name, struct blk_desc
> **dev_desc, +int fastboot_mmc_get_part_info(const char *part_name,
> + struct blk_desc **dev_desc,
> disk_partition_t *part_info, char
> *response) {
> int r;
> diff --git a/drivers/fastboot/fb_nand.c b/drivers/fastboot/fb_nand.c
> index 526bc12307..6756ea769f 100644
> --- a/drivers/fastboot/fb_nand.c
> +++ b/drivers/fastboot/fb_nand.c
> @@ -152,8 +152,8 @@ static lbaint_t fb_nand_sparse_reserve(struct
> sparse_storage *info,
> * @part_info: Pointer to returned part_info pointer
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_nand_get_part_info(char *part_name, struct part_info
> **part_info,
> - char *response)
> +int fastboot_nand_get_part_info(const char *part_name,
> + struct part_info **part_info, char
> *response) {
> struct mtd_info *mtd = NULL;
>
> diff --git a/include/fb_mmc.h b/include/fb_mmc.h
> index fd5db9eac8..95db001bee 100644
> --- a/include/fb_mmc.h
> +++ b/include/fb_mmc.h
> @@ -14,7 +14,8 @@
> * @part_info: Pointer to returned disk_partition_t
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_mmc_get_part_info(char *part_name, struct blk_desc
> **dev_desc, +int fastboot_mmc_get_part_info(const char *part_name,
> + struct blk_desc **dev_desc,
> disk_partition_t *part_info, char
> *response);
> /**
> diff --git a/include/fb_nand.h b/include/fb_nand.h
> index 08ab0e28a6..6d7999f262 100644
> --- a/include/fb_nand.h
> +++ b/include/fb_nand.h
> @@ -16,8 +16,8 @@
> * @part_info: Pointer to returned part_info pointer
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_nand_get_part_info(char *part_name, struct part_info
> **part_info,
> - char *response);
> +int fastboot_nand_get_part_info(const char *part_name,
> + struct part_info **part_info, char
> *response);
> /**
> * fastboot_nand_flash_write() - Write image to NAND for fastboot
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190613/a0c052a5/attachment.sig>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage
2019-06-12 21:14 ` [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage Sam Protsenko
@ 2019-06-13 5:46 ` Lukasz Majewski
2019-06-13 8:11 ` Igor Opaniuk
1 sibling, 0 replies; 14+ messages in thread
From: Lukasz Majewski @ 2019-06-13 5:46 UTC (permalink / raw)
To: u-boot
On Thu, 13 Jun 2019 00:14:10 +0300
Sam Protsenko <semen.protsenko@linaro.org> wrote:
> Extract fastboot_*_get_part_info() usage for MMC and NAND into
> getvar_get_part_info() function, as it will be needed further in other
> functions. This way we can avoid code duplication and mess with
> preprocessor directives across all points of usage.
>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_getvar.c | 52
> +++++++++++++++++++++++++----------- 1 file changed, 36
> insertions(+), 16 deletions(-)
>
> diff --git a/drivers/fastboot/fb_getvar.c
> b/drivers/fastboot/fb_getvar.c index 4268628f5e..b23880089e 100644
> --- a/drivers/fastboot/fb_getvar.c
> +++ b/drivers/fastboot/fb_getvar.c
> @@ -81,6 +81,41 @@ static const struct {
> }
> };
>
> +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH)
> +/**
> + * Universal function to get partition number and size.
> + *
> + * @param[in] part_name Info for which partition name to look for
> + * @param[in,out] response Pointer to fastboot response buffer
> + * @param[out] size If not NULL, will contain partition size (in
> blocks)
> + * @return Partition number or negative value on error
> + */
> +static int getvar_get_part_info(const char *part_name, char
> *response,
> + size_t *size)
> +{
> + int r;
> +# if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> + struct blk_desc *dev_desc;
> + disk_partition_t part_info;
> +
> + r = fastboot_mmc_get_part_info(part_name, &dev_desc,
> &part_info,
> + response);
> + if (r >= 0 && size)
> + *size = part_info.size;
> +# elif CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)
> + struct part_info *part_info;
> +
> + r = fastboot_nand_get_part_info(part_name, &part_info,
> response);
> + if (r >= 0 && size)
> + *size = part_info->size;
> +# else
> + r = -ENODEV;
> +# endif
> +
> + return r;
> +}
> +#endif
> +
> static void getvar_version(char *var_parameter, char *response)
> {
> fastboot_okay(FASTBOOT_VERSION, response);
> @@ -176,22 +211,7 @@ static void getvar_partition_size(char
> *part_name, char *response) int r;
> size_t size;
>
> -#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> - struct blk_desc *dev_desc;
> - disk_partition_t part_info;
> -
> - r = fastboot_mmc_get_part_info(part_name, &dev_desc,
> &part_info,
> - response);
> - if (r >= 0)
> - size = part_info.size;
> -#endif
> -#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)
> - struct part_info *part_info;
> -
> - r = fastboot_nand_get_part_info(part_name, &part_info,
> response);
> - if (r >= 0)
> - size = part_info->size;
> -#endif
> + r = getvar_get_part_info(part_name, response, &size);
> if (r >= 0)
> fastboot_response("OKAY", response, "0x%016zx",
> size); }
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190613/cdb34018/attachment.sig>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-12 21:14 ` [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot() Sam Protsenko
2019-06-12 21:20 ` Sam Protsenko
@ 2019-06-13 5:46 ` Lukasz Majewski
2019-06-13 11:30 ` Eugeniu Rosca
2 siblings, 0 replies; 14+ messages in thread
From: Lukasz Majewski @ 2019-06-13 5:46 UTC (permalink / raw)
To: u-boot
On Thu, 13 Jun 2019 00:14:11 +0300
Sam Protsenko <semen.protsenko@linaro.org> wrote:
> From: Igor Opaniuk <igor.opaniuk@toradex.com>
>
> Currently getvar_has_slot() invocation for "boot" and "system"
> partitions always returns affirmative response regardless the fact of
> existence of these partitions, which leads to impossibility to flash
> them on old non-A/B AOSP setups, where _a/_b suffixes aren't used:
>
> $ fastboot flash boot boot.img
> Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
> Writing 'boot__a' FAILED (remote: 'cannot find
> partition') fastboot: error: Command failed
>
> Although partition layout is:
> -> part list mmc 0
> Partition Map for MMC device 0 -- Partition Type: EFI
>
> Part Start LBA End LBA Name
> Attributes
> Type GUID
> Partition GUID
> 1 0x00000800 0x000107ff "boot"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: ea2e2470-db4a-d646-b828-10167f736d63
> 2 0x00010800 0x000127ff "environment"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: 10a819d2-6004-3d48-bd87-114e2a796db9
> 3 0x00012800 0x0001a7ff "recovery"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
> 4 0x0001a800 0x0031a7ff "system"
> attrs: 0x0000000000000000
> ......
>
> This patch adds checks of existence for requested partitions
> on eMMC/NAND.
>
> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/fastboot/fb_getvar.c
> b/drivers/fastboot/fb_getvar.c index b23880089e..563bda0088 100644
> --- a/drivers/fastboot/fb_getvar.c
> +++ b/drivers/fastboot/fb_getvar.c
> @@ -179,11 +179,29 @@ static void getvar_slot_suffixes(char
> *var_parameter, char *response)
> static void getvar_has_slot(char *part_name, char *response)
> {
> - if (part_name && (!strcmp(part_name, "boot") ||
> - !strcmp(part_name, "system")))
> + char part_name_wslot[PART_NAME_LEN];
> + size_t len;
> + int r;
> +
> + if (!part_name)
> + goto no;
> +
> + /* Append "_a" prefix to part_name */
> + len = strlcpy(part_name_wslot, part_name, PART_NAME_LEN - 3);
> + if (len > PART_NAME_LEN - 3) {
> + fastboot_fail("too long partition name", response);
> + return;
> + }
> + strcat(part_name_wslot, "_a");
> +
> + /* Check if this partition exists */
> + r = getvar_get_part_info(part_name_wslot, response, NULL);
> + if (r >= 0) {
> fastboot_okay("yes", response);
> - else
> - fastboot_okay("no", response);
> + return;
> + }
> +no:
> + fastboot_okay("no", response);
> }
>
> #if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190613/9d386744/attachment.sig>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-12 21:20 ` Sam Protsenko
@ 2019-06-13 5:47 ` Lukasz Majewski
2019-06-13 12:01 ` Lukasz Majewski
0 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2019-06-13 5:47 UTC (permalink / raw)
To: u-boot
Hi Sam,
> Hi Tom,
>
> We have broken fastboot right now... Can we please apply this series,
> so that it appears in v2019.07?
I'm running Travis-CI on this series, and send PR to Marek when it
finish.
Thanks for fixing fastboot.
>
> Thanks!
>
> On Thu, Jun 13, 2019 at 12:14 AM Sam Protsenko
> <semen.protsenko@linaro.org> wrote:
> >
> > From: Igor Opaniuk <igor.opaniuk@toradex.com>
> >
> > Currently getvar_has_slot() invocation for "boot" and "system"
> > partitions always returns affirmative response regardless the fact
> > of existence of these partitions, which leads to impossibility to
> > flash them on old non-A/B AOSP setups, where _a/_b suffixes aren't
> > used:
> >
> > $ fastboot flash boot boot.img
> > Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
> > Writing 'boot__a' FAILED (remote: 'cannot find
> > partition') fastboot: error: Command failed
> >
> > Although partition layout is:
> > -> part list mmc 0
> > Partition Map for MMC device 0 -- Partition Type: EFI
> >
> > Part Start LBA End LBA Name
> > Attributes
> > Type GUID
> > Partition GUID
> > 1 0x00000800 0x000107ff "boot"
> > attrs: 0x0000000000000000
> > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > guid: ea2e2470-db4a-d646-b828-10167f736d63
> > 2 0x00010800 0x000127ff "environment"
> > attrs: 0x0000000000000000
> > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > guid: 10a819d2-6004-3d48-bd87-114e2a796db9
> > 3 0x00012800 0x0001a7ff "recovery"
> > attrs: 0x0000000000000000
> > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
> > 4 0x0001a800 0x0031a7ff "system"
> > attrs: 0x0000000000000000
> > ......
> >
> > This patch adds checks of existence for requested partitions
> > on eMMC/NAND.
> >
> > Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> > ---
> > drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
> > 1 file changed, 22 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/fastboot/fb_getvar.c
> > b/drivers/fastboot/fb_getvar.c index b23880089e..563bda0088 100644
> > --- a/drivers/fastboot/fb_getvar.c
> > +++ b/drivers/fastboot/fb_getvar.c
> > @@ -179,11 +179,29 @@ static void getvar_slot_suffixes(char
> > *var_parameter, char *response)
> >
> > static void getvar_has_slot(char *part_name, char *response)
> > {
> > - if (part_name && (!strcmp(part_name, "boot") ||
> > - !strcmp(part_name, "system")))
> > + char part_name_wslot[PART_NAME_LEN];
> > + size_t len;
> > + int r;
> > +
> > + if (!part_name)
> > + goto no;
> > +
> > + /* Append "_a" prefix to part_name */
> > + len = strlcpy(part_name_wslot, part_name, PART_NAME_LEN -
> > 3);
> > + if (len > PART_NAME_LEN - 3) {
> > + fastboot_fail("too long partition name", response);
> > + return;
> > + }
> > + strcat(part_name_wslot, "_a");
> > +
> > + /* Check if this partition exists */
> > + r = getvar_get_part_info(part_name_wslot, response, NULL);
> > + if (r >= 0) {
> > fastboot_okay("yes", response);
> > - else
> > - fastboot_okay("no", response);
> > + return;
> > + }
> > +no:
> > + fastboot_okay("no", response);
> > }
> >
> > #if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> > --
> > 2.20.1
> >
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190613/b2f5b330/attachment.sig>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage
2019-06-12 21:14 ` [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage Sam Protsenko
2019-06-13 5:46 ` Lukasz Majewski
@ 2019-06-13 8:11 ` Igor Opaniuk
1 sibling, 0 replies; 14+ messages in thread
From: Igor Opaniuk @ 2019-06-13 8:11 UTC (permalink / raw)
To: u-boot
Hi Sam,
On Thu, Jun 13, 2019 at 12:14 AM Sam Protsenko
<semen.protsenko@linaro.org> wrote:
>
> Extract fastboot_*_get_part_info() usage for MMC and NAND into
> getvar_get_part_info() function, as it will be needed further in other
> functions. This way we can avoid code duplication and mess with
> preprocessor directives across all points of usage.
>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_getvar.c | 52 +++++++++++++++++++++++++-----------
> 1 file changed, 36 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/fastboot/fb_getvar.c b/drivers/fastboot/fb_getvar.c
> index 4268628f5e..b23880089e 100644
> --- a/drivers/fastboot/fb_getvar.c
> +++ b/drivers/fastboot/fb_getvar.c
> @@ -81,6 +81,41 @@ static const struct {
> }
> };
>
> +#if CONFIG_IS_ENABLED(FASTBOOT_FLASH)
> +/**
> + * Universal function to get partition number and size.
> + *
> + * @param[in] part_name Info for which partition name to look for
> + * @param[in,out] response Pointer to fastboot response buffer
> + * @param[out] size If not NULL, will contain partition size (in blocks)
> + * @return Partition number or negative value on error
> + */
> +static int getvar_get_part_info(const char *part_name, char *response,
> + size_t *size)
> +{
> + int r;
> +# if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> + struct blk_desc *dev_desc;
> + disk_partition_t part_info;
> +
> + r = fastboot_mmc_get_part_info(part_name, &dev_desc, &part_info,
> + response);
> + if (r >= 0 && size)
> + *size = part_info.size;
> +# elif CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)
> + struct part_info *part_info;
> +
> + r = fastboot_nand_get_part_info(part_name, &part_info, response);
> + if (r >= 0 && size)
> + *size = part_info->size;
> +# else
> + r = -ENODEV;
> +# endif
> +
> + return r;
> +}
> +#endif
> +
> static void getvar_version(char *var_parameter, char *response)
> {
> fastboot_okay(FASTBOOT_VERSION, response);
> @@ -176,22 +211,7 @@ static void getvar_partition_size(char *part_name, char *response)
> int r;
> size_t size;
>
> -#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> - struct blk_desc *dev_desc;
> - disk_partition_t part_info;
> -
> - r = fastboot_mmc_get_part_info(part_name, &dev_desc, &part_info,
> - response);
> - if (r >= 0)
> - size = part_info.size;
> -#endif
> -#if CONFIG_IS_ENABLED(FASTBOOT_FLASH_NAND)
> - struct part_info *part_info;
> -
> - r = fastboot_nand_get_part_info(part_name, &part_info, response);
> - if (r >= 0)
> - size = part_info->size;
> -#endif
> + r = getvar_get_part_info(part_name, response, &size);
> if (r >= 0)
> fastboot_response("OKAY", response, "0x%016zx", size);
> }
> --
> 2.20.1
>
Reviewed-by: Igor Opaniuk <igor.opaniuk@toradex.com>
--
Best regards - Freundliche Grüsse - Meilleures salutations
Igor Opaniuk
mailto: igor.opaniuk at gmail.com
skype: igor.opanyuk
+380 (93) 836 40 67
http://ua.linkedin.com/in/iopaniuk
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name
2019-06-12 21:14 ` [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name Sam Protsenko
2019-06-13 5:45 ` Lukasz Majewski
@ 2019-06-13 8:12 ` Igor Opaniuk
1 sibling, 0 replies; 14+ messages in thread
From: Igor Opaniuk @ 2019-06-13 8:12 UTC (permalink / raw)
To: u-boot
On Thu, Jun 13, 2019 at 12:14 AM Sam Protsenko
<semen.protsenko@linaro.org> wrote:
>
> In fastboot_*_get_part_info() functions we can use stronger typing by
> expecting const strings.
>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_mmc.c | 3 ++-
> drivers/fastboot/fb_nand.c | 4 ++--
> include/fb_mmc.h | 3 ++-
> include/fb_nand.h | 4 ++--
> 4 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/fastboot/fb_mmc.c b/drivers/fastboot/fb_mmc.c
> index 90ca81da9b..0a335db3a6 100644
> --- a/drivers/fastboot/fb_mmc.c
> +++ b/drivers/fastboot/fb_mmc.c
> @@ -298,7 +298,8 @@ static int fb_mmc_update_zimage(struct blk_desc *dev_desc,
> * @part_info: Pointer to returned disk_partition_t
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_mmc_get_part_info(char *part_name, struct blk_desc **dev_desc,
> +int fastboot_mmc_get_part_info(const char *part_name,
> + struct blk_desc **dev_desc,
> disk_partition_t *part_info, char *response)
> {
> int r;
> diff --git a/drivers/fastboot/fb_nand.c b/drivers/fastboot/fb_nand.c
> index 526bc12307..6756ea769f 100644
> --- a/drivers/fastboot/fb_nand.c
> +++ b/drivers/fastboot/fb_nand.c
> @@ -152,8 +152,8 @@ static lbaint_t fb_nand_sparse_reserve(struct sparse_storage *info,
> * @part_info: Pointer to returned part_info pointer
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_nand_get_part_info(char *part_name, struct part_info **part_info,
> - char *response)
> +int fastboot_nand_get_part_info(const char *part_name,
> + struct part_info **part_info, char *response)
> {
> struct mtd_info *mtd = NULL;
>
> diff --git a/include/fb_mmc.h b/include/fb_mmc.h
> index fd5db9eac8..95db001bee 100644
> --- a/include/fb_mmc.h
> +++ b/include/fb_mmc.h
> @@ -14,7 +14,8 @@
> * @part_info: Pointer to returned disk_partition_t
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_mmc_get_part_info(char *part_name, struct blk_desc **dev_desc,
> +int fastboot_mmc_get_part_info(const char *part_name,
> + struct blk_desc **dev_desc,
> disk_partition_t *part_info, char *response);
>
> /**
> diff --git a/include/fb_nand.h b/include/fb_nand.h
> index 08ab0e28a6..6d7999f262 100644
> --- a/include/fb_nand.h
> +++ b/include/fb_nand.h
> @@ -16,8 +16,8 @@
> * @part_info: Pointer to returned part_info pointer
> * @response: Pointer to fastboot response buffer
> */
> -int fastboot_nand_get_part_info(char *part_name, struct part_info **part_info,
> - char *response);
> +int fastboot_nand_get_part_info(const char *part_name,
> + struct part_info **part_info, char *response);
>
> /**
> * fastboot_nand_flash_write() - Write image to NAND for fastboot
> --
> 2.20.1
>
Reviewed-by: Igor Opaniuk <igor.opaniuk@toradex.com>
--
Best regards - Freundliche Grüsse - Meilleures salutations
Igor Opaniuk
mailto: igor.opaniuk at gmail.com
skype: igor.opanyuk
+380 (93) 836 40 67
http://ua.linkedin.com/in/iopaniuk
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-12 21:14 ` [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot() Sam Protsenko
2019-06-12 21:20 ` Sam Protsenko
2019-06-13 5:46 ` Lukasz Majewski
@ 2019-06-13 11:30 ` Eugeniu Rosca
2 siblings, 0 replies; 14+ messages in thread
From: Eugeniu Rosca @ 2019-06-13 11:30 UTC (permalink / raw)
To: u-boot
Hi Sam, hi Igor,
On Thu, Jun 13, 2019 at 12:14:11AM +0300, Sam Protsenko wrote:
> From: Igor Opaniuk <igor.opaniuk@toradex.com>
>
> Currently getvar_has_slot() invocation for "boot" and "system"
> partitions always returns affirmative response regardless the fact of
> existence of these partitions, which leads to impossibility to flash them
> on old non-A/B AOSP setups, where _a/_b suffixes aren't used:
>
> $ fastboot flash boot boot.img
> Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
> Writing 'boot__a' FAILED (remote: 'cannot find partition')
> fastboot: error: Command failed
>
> Although partition layout is:
> -> part list mmc 0
> Partition Map for MMC device 0 -- Partition Type: EFI
>
> Part Start LBA End LBA Name
> Attributes
> Type GUID
> Partition GUID
> 1 0x00000800 0x000107ff "boot"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: ea2e2470-db4a-d646-b828-10167f736d63
> 2 0x00010800 0x000127ff "environment"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: 10a819d2-6004-3d48-bd87-114e2a796db9
> 3 0x00012800 0x0001a7ff "recovery"
> attrs: 0x0000000000000000
> type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
> 4 0x0001a800 0x0031a7ff "system"
> attrs: 0x0000000000000000
> ......
>
> This patch adds checks of existence for requested partitions
> on eMMC/NAND.
>
> Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
> drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
> 1 file changed, 22 insertions(+), 4 deletions(-)
With the https://patchwork.ozlabs.org/cover/1114844/
("[U-Boot,v2,0/3] fastboot: Fix getvar "has-slot" and cleanup")
series applied on top of v2019.07-rc4-136-gc2ea87883ef3, I get
below build failure on sandbox:
drivers/fastboot/fb_getvar.c: In function ‘getvar_has_slot’:
drivers/fastboot/fb_getvar.c:198:6: warning: implicit declaration of function ‘getvar_get_part_info’; did you mean ‘getvar_serialno’? [-Wimplicit-function-declaration]
r = getvar_get_part_info(part_name_wslot, response, NULL);
^~~~~~~~~~~~~~~~~~~~
getvar_serialno
[..]
LD u-boot
drivers/built-in.o: In function `getvar_has_slot':
/home/erosca/R/u-boot-master/drivers/fastboot/fb_getvar.c:198: undefined reference to `getvar_get_part_info'
collect2: error: ld returned 1 exit status
Makefile:1570: recipe for target 'u-boot' failed
make[1]: *** [u-boot] Error 1
Makefile:498: recipe for target '__build_one_by_one' failed
make: *** [__build_one_by_one] Error 2
--
Best Regards,
Eugeniu.
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-13 5:47 ` Lukasz Majewski
@ 2019-06-13 12:01 ` Lukasz Majewski
2019-06-13 18:12 ` Sam Protsenko
0 siblings, 1 reply; 14+ messages in thread
From: Lukasz Majewski @ 2019-06-13 12:01 UTC (permalink / raw)
To: u-boot
On Thu, 13 Jun 2019 07:47:19 +0200
Lukasz Majewski <lukma@denx.de> wrote:
> Hi Sam,
>
> > Hi Tom,
> >
> > We have broken fastboot right now... Can we please apply this
> > series, so that it appears in v2019.07?
>
> I'm running Travis-CI on this series, and send PR to Marek when it
> finish.
Unfortunately, there are several build breaks:
https://travis-ci.org/lmajewski/u-boot-dfu/jobs/545073270
Please fix them before sending v3.
Thanks in advance,
>
> Thanks for fixing fastboot.
>
> >
> > Thanks!
> >
> > On Thu, Jun 13, 2019 at 12:14 AM Sam Protsenko
> > <semen.protsenko@linaro.org> wrote:
> > >
> > > From: Igor Opaniuk <igor.opaniuk@toradex.com>
> > >
> > > Currently getvar_has_slot() invocation for "boot" and "system"
> > > partitions always returns affirmative response regardless the fact
> > > of existence of these partitions, which leads to impossibility to
> > > flash them on old non-A/B AOSP setups, where _a/_b suffixes aren't
> > > used:
> > >
> > > $ fastboot flash boot boot.img
> > > Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
> > > Writing 'boot__a' FAILED (remote: 'cannot find
> > > partition') fastboot: error: Command failed
> > >
> > > Although partition layout is:
> > > -> part list mmc 0
> > > Partition Map for MMC device 0 -- Partition Type: EFI
> > >
> > > Part Start LBA End LBA Name
> > > Attributes
> > > Type GUID
> > > Partition GUID
> > > 1 0x00000800 0x000107ff "boot"
> > > attrs: 0x0000000000000000
> > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > guid: ea2e2470-db4a-d646-b828-10167f736d63
> > > 2 0x00010800 0x000127ff "environment"
> > > attrs: 0x0000000000000000
> > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > guid: 10a819d2-6004-3d48-bd87-114e2a796db9
> > > 3 0x00012800 0x0001a7ff "recovery"
> > > attrs: 0x0000000000000000
> > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
> > > 4 0x0001a800 0x0031a7ff "system"
> > > attrs: 0x0000000000000000
> > > ......
> > >
> > > This patch adds checks of existence for requested partitions
> > > on eMMC/NAND.
> > >
> > > Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> > > ---
> > > drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
> > > 1 file changed, 22 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/fastboot/fb_getvar.c
> > > b/drivers/fastboot/fb_getvar.c index b23880089e..563bda0088 100644
> > > --- a/drivers/fastboot/fb_getvar.c
> > > +++ b/drivers/fastboot/fb_getvar.c
> > > @@ -179,11 +179,29 @@ static void getvar_slot_suffixes(char
> > > *var_parameter, char *response)
> > >
> > > static void getvar_has_slot(char *part_name, char *response)
> > > {
> > > - if (part_name && (!strcmp(part_name, "boot") ||
> > > - !strcmp(part_name, "system")))
> > > + char part_name_wslot[PART_NAME_LEN];
> > > + size_t len;
> > > + int r;
> > > +
> > > + if (!part_name)
> > > + goto no;
> > > +
> > > + /* Append "_a" prefix to part_name */
> > > + len = strlcpy(part_name_wslot, part_name, PART_NAME_LEN -
> > > 3);
> > > + if (len > PART_NAME_LEN - 3) {
> > > + fastboot_fail("too long partition name",
> > > response);
> > > + return;
> > > + }
> > > + strcat(part_name_wslot, "_a");
> > > +
> > > + /* Check if this partition exists */
> > > + r = getvar_get_part_info(part_name_wslot, response, NULL);
> > > + if (r >= 0) {
> > > fastboot_okay("yes", response);
> > > - else
> > > - fastboot_okay("no", response);
> > > + return;
> > > + }
> > > +no:
> > > + fastboot_okay("no", response);
> > > }
> > >
> > > #if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> > > --
> > > 2.20.1
> > >
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > https://lists.denx.de/listinfo/u-boot
>
>
>
>
> Best regards,
>
> Lukasz Majewski
>
> --
>
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> lukma at denx.de
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190613/18e60699/attachment.sig>
^ permalink raw reply [flat|nested] 14+ messages in thread
* [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot()
2019-06-13 12:01 ` Lukasz Majewski
@ 2019-06-13 18:12 ` Sam Protsenko
0 siblings, 0 replies; 14+ messages in thread
From: Sam Protsenko @ 2019-06-13 18:12 UTC (permalink / raw)
To: u-boot
Lukasz, Eugeniu,
Just sent v3 where build is fixed. Please review and merge, if applicable.
Thanks!
On Thu, Jun 13, 2019 at 3:01 PM Lukasz Majewski <lukma@denx.de> wrote:
>
> On Thu, 13 Jun 2019 07:47:19 +0200
> Lukasz Majewski <lukma@denx.de> wrote:
>
> > Hi Sam,
> >
> > > Hi Tom,
> > >
> > > We have broken fastboot right now... Can we please apply this
> > > series, so that it appears in v2019.07?
> >
> > I'm running Travis-CI on this series, and send PR to Marek when it
> > finish.
>
> Unfortunately, there are several build breaks:
> https://travis-ci.org/lmajewski/u-boot-dfu/jobs/545073270
>
> Please fix them before sending v3.
>
> Thanks in advance,
>
> >
> > Thanks for fixing fastboot.
> >
> > >
> > > Thanks!
> > >
> > > On Thu, Jun 13, 2019 at 12:14 AM Sam Protsenko
> > > <semen.protsenko@linaro.org> wrote:
> > > >
> > > > From: Igor Opaniuk <igor.opaniuk@toradex.com>
> > > >
> > > > Currently getvar_has_slot() invocation for "boot" and "system"
> > > > partitions always returns affirmative response regardless the fact
> > > > of existence of these partitions, which leads to impossibility to
> > > > flash them on old non-A/B AOSP setups, where _a/_b suffixes aren't
> > > > used:
> > > >
> > > > $ fastboot flash boot boot.img
> > > > Sending 'boot__a' (11301 KB) OKAY [ 0.451s]
> > > > Writing 'boot__a' FAILED (remote: 'cannot find
> > > > partition') fastboot: error: Command failed
> > > >
> > > > Although partition layout is:
> > > > -> part list mmc 0
> > > > Partition Map for MMC device 0 -- Partition Type: EFI
> > > >
> > > > Part Start LBA End LBA Name
> > > > Attributes
> > > > Type GUID
> > > > Partition GUID
> > > > 1 0x00000800 0x000107ff "boot"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: ea2e2470-db4a-d646-b828-10167f736d63
> > > > 2 0x00010800 0x000127ff "environment"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 10a819d2-6004-3d48-bd87-114e2a796db9
> > > > 3 0x00012800 0x0001a7ff "recovery"
> > > > attrs: 0x0000000000000000
> > > > type: ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
> > > > guid: 9ea116e4-8a34-0c48-8cf5-2fe9480f56cd
> > > > 4 0x0001a800 0x0031a7ff "system"
> > > > attrs: 0x0000000000000000
> > > > ......
> > > >
> > > > This patch adds checks of existence for requested partitions
> > > > on eMMC/NAND.
> > > >
> > > > Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
> > > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> > > > ---
> > > > drivers/fastboot/fb_getvar.c | 26 ++++++++++++++++++++++----
> > > > 1 file changed, 22 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/drivers/fastboot/fb_getvar.c
> > > > b/drivers/fastboot/fb_getvar.c index b23880089e..563bda0088 100644
> > > > --- a/drivers/fastboot/fb_getvar.c
> > > > +++ b/drivers/fastboot/fb_getvar.c
> > > > @@ -179,11 +179,29 @@ static void getvar_slot_suffixes(char
> > > > *var_parameter, char *response)
> > > >
> > > > static void getvar_has_slot(char *part_name, char *response)
> > > > {
> > > > - if (part_name && (!strcmp(part_name, "boot") ||
> > > > - !strcmp(part_name, "system")))
> > > > + char part_name_wslot[PART_NAME_LEN];
> > > > + size_t len;
> > > > + int r;
> > > > +
> > > > + if (!part_name)
> > > > + goto no;
> > > > +
> > > > + /* Append "_a" prefix to part_name */
> > > > + len = strlcpy(part_name_wslot, part_name, PART_NAME_LEN -
> > > > 3);
> > > > + if (len > PART_NAME_LEN - 3) {
> > > > + fastboot_fail("too long partition name",
> > > > response);
> > > > + return;
> > > > + }
> > > > + strcat(part_name_wslot, "_a");
> > > > +
> > > > + /* Check if this partition exists */
> > > > + r = getvar_get_part_info(part_name_wslot, response, NULL);
> > > > + if (r >= 0) {
> > > > fastboot_okay("yes", response);
> > > > - else
> > > > - fastboot_okay("no", response);
> > > > + return;
> > > > + }
> > > > +no:
> > > > + fastboot_okay("no", response);
> > > > }
> > > >
> > > > #if CONFIG_IS_ENABLED(FASTBOOT_FLASH_MMC)
> > > > --
> > > > 2.20.1
> > > >
> > > _______________________________________________
> > > U-Boot mailing list
> > > U-Boot at lists.denx.de
> > > https://lists.denx.de/listinfo/u-boot
> >
> >
> >
> >
> > Best regards,
> >
> > Lukasz Majewski
> >
> > --
> >
> > DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> > HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> > Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email:
> > lukma at denx.de
>
>
>
>
> Best regards,
>
> Lukasz Majewski
>
> --
>
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2019-06-13 18:12 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-12 21:14 [U-Boot] [PATCH v2 0/3] fastboot: Fix getvar "has-slot" and cleanup Sam Protsenko
2019-06-12 21:14 ` [U-Boot] [PATCH v2 1/3] fastboot: Use const qualifier for char *part_name Sam Protsenko
2019-06-13 5:45 ` Lukasz Majewski
2019-06-13 8:12 ` Igor Opaniuk
2019-06-12 21:14 ` [U-Boot] [PATCH v2 2/3] fastboot: getvar: Refactor fastboot_*_get_part_info() usage Sam Protsenko
2019-06-13 5:46 ` Lukasz Majewski
2019-06-13 8:11 ` Igor Opaniuk
2019-06-12 21:14 ` [U-Boot] [PATCH v2 3/3] fastboot: Check if partition really exist in getvar_has_slot() Sam Protsenko
2019-06-12 21:20 ` Sam Protsenko
2019-06-13 5:47 ` Lukasz Majewski
2019-06-13 12:01 ` Lukasz Majewski
2019-06-13 18:12 ` Sam Protsenko
2019-06-13 5:46 ` Lukasz Majewski
2019-06-13 11:30 ` Eugeniu Rosca
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.