summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@google.com>2017-05-22 14:44:38 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-05-23 05:57:13 -0700
commiteba6e56ed0e22177f19ae6f0fb3114e5c3faf196 (patch)
treef602a8418bbb8da4b2368fbd59c774dbd5e83404
parentc6cfdbf669e932d60b9e743bcbbf1723352dd1c1 (diff)
downloadchrome-ec-eba6e56ed0e22177f19ae6f0fb3114e5c3faf196.tar.gz
rollback: Add CONFIG_ROLLBACK_UPDATE config option
Typically, we do not need RW section to be able to update rollback information (rollback block should be protected when RW is running), so we can save some flash space by undefining this option. BRANCH=none BUG=b:35586219 TEST=make newsizes saves ~420 bytes on hammer and staff. Change-Id: Ic457673e56ace083f2ebb1ca0f37f54bf125bfa4 Reviewed-on: https://chromium-review.googlesource.com/511983 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r--common/rollback.c40
-rw-r--r--include/config.h3
2 files changed, 24 insertions, 19 deletions
diff --git a/common/rollback.c b/common/rollback.c
index fedc899135..31775402d6 100644
--- a/common/rollback.c
+++ b/common/rollback.c
@@ -119,6 +119,7 @@ int rollback_lock(void)
return ret;
}
+#ifdef CONFIG_ROLLBACK_UPDATE
int rollback_update(int32_t next_min_version)
{
struct rollback_data data;
@@ -163,6 +164,26 @@ int rollback_update(int32_t next_min_version)
return EC_SUCCESS;
}
+static int command_rollback_update(int argc, char **argv)
+{
+ int32_t min_version;
+ char *e;
+
+ if (argc < 2)
+ return EC_ERROR_PARAM_COUNT;
+
+ min_version = strtoi(argv[1], &e, 0);
+
+ if (*e || min_version < 0)
+ return EC_ERROR_PARAM1;
+
+ return rollback_update(min_version);
+}
+DECLARE_CONSOLE_COMMAND(rollbackupdate, command_rollback_update,
+ "min_version",
+ "Update rollback info");
+#endif /* CONFIG_ROLLBACK_UPDATE */
+
static int command_rollback_info(int argc, char **argv)
{
int region, ret, min_region;
@@ -196,22 +217,3 @@ static int command_rollback_info(int argc, char **argv)
DECLARE_SAFE_CONSOLE_COMMAND(rollbackinfo, command_rollback_info,
NULL,
"Print rollback info");
-
-static int command_rollback_update(int argc, char **argv)
-{
- int32_t min_version;
- char *e;
-
- if (argc < 2)
- return EC_ERROR_PARAM_COUNT;
-
- min_version = strtoi(argv[1], &e, 0);
-
- if (*e || min_version < 0)
- return EC_ERROR_PARAM1;
-
- return rollback_update(min_version);
-}
-DECLARE_CONSOLE_COMMAND(rollbackupdate, command_rollback_update,
- "min_version",
- "Update rollback info");
diff --git a/include/config.h b/include/config.h
index aec133e624..5922da3714 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1142,6 +1142,9 @@
#undef CONFIG_ROLLBACK_OFF
#undef CONFIG_ROLLBACK_SIZE
+/* If defined, we can update rollback information (RW can unset this). */
+#define CONFIG_ROLLBACK_UPDATE
+
/*
* Current rollback version. Meaningless for RO (but provides the minimum value
* that will be written to the rollback protection at flash time).