All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.