config: colibri_vf: enable mtd partitions via dt
[oweals/u-boot.git] / cmd / avb.c
index dd389cdaf008bed3aa9a6f8445450f1b5eb596b2..ff00be4cee38e9d82f473776c64b3f9a01fac47b 100644 (file)
--- a/cmd/avb.c
+++ b/cmd/avb.c
@@ -35,6 +35,8 @@ int do_avb_init(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (avb_ops)
                return CMD_RET_SUCCESS;
 
+       printf("Failed to initialize avb2\n");
+
        return CMD_RET_FAILURE;
 }
 
@@ -65,6 +67,8 @@ int do_avb_read_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return CMD_RET_SUCCESS;
        }
 
+       printf("Failed to read from partition\n");
+
        return CMD_RET_FAILURE;
 }
 
@@ -108,6 +112,8 @@ int do_avb_read_part_hex(cmd_tbl_t *cmdtp, int flag, int argc,
                return CMD_RET_SUCCESS;
        }
 
+       printf("Failed to read from partition\n");
+
        free(buffer);
        return CMD_RET_FAILURE;
 }
@@ -138,6 +144,8 @@ int do_avb_write_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return CMD_RET_SUCCESS;
        }
 
+       printf("Failed to write in partition\n");
+
        return CMD_RET_FAILURE;
 }
 
@@ -158,9 +166,12 @@ int do_avb_read_rb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        if (avb_ops->read_rollback_index(avb_ops, index, &rb_idx) ==
            AVB_IO_RESULT_OK) {
-               printf("Rollback index: %llu\n", rb_idx);
+               printf("Rollback index: %llx\n", rb_idx);
                return CMD_RET_SUCCESS;
        }
+
+       printf("Failed to read rollback index\n");
+
        return CMD_RET_FAILURE;
 }
 
@@ -184,6 +195,8 @@ int do_avb_write_rb(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
            AVB_IO_RESULT_OK)
                return CMD_RET_SUCCESS;
 
+       printf("Failed to write rollback index\n");
+
        return CMD_RET_FAILURE;
 }
 
@@ -210,6 +223,8 @@ int do_avb_get_uuid(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_SUCCESS;
        }
 
+       printf("Failed to read UUID\n");
+
        return CMD_RET_FAILURE;
 }
 
@@ -218,6 +233,8 @@ int do_avb_verify_part(cmd_tbl_t *cmdtp, int flag,
 {
        AvbSlotVerifyResult slot_result;
        AvbSlotVerifyData *out_data;
+       char *cmdline;
+       char *extra_args;
 
        bool unlocked = false;
        int res = CMD_RET_FAILURE;
@@ -249,10 +266,23 @@ int do_avb_verify_part(cmd_tbl_t *cmdtp, int flag,
 
        switch (slot_result) {
        case AVB_SLOT_VERIFY_RESULT_OK:
+               /* Until we don't have support of changing unlock states, we
+                * assume that we are by default in locked state.
+                * So in this case we can boot only when verification is
+                * successful; we also supply in cmdline GREEN boot state
+                */
                printf("Verification passed successfully\n");
 
                /* export additional bootargs to AVB_BOOTARGS env var */
-               env_set(AVB_BOOTARGS, out_data->cmdline);
+
+               extra_args = avb_set_state(avb_ops, AVB_GREEN);
+               if (extra_args)
+                       cmdline = append_cmd_line(out_data->cmdline,
+                                                 extra_args);
+               else
+                       cmdline = out_data->cmdline;
+
+               env_set(AVB_BOOTARGS, cmdline);
 
                res = CMD_RET_SUCCESS;
                break;
@@ -305,6 +335,8 @@ int do_avb_is_unlocked(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_SUCCESS;
        }
 
+       printf("Can't determine device lock state.\n");
+
        return CMD_RET_FAILURE;
 }