aboutsummaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-10-21 17:26:47 -0600
committerSimon Glass <sjg@chromium.org>2019-10-27 10:56:51 -0600
commit53a4f253f129926bb5398634c8bae43ab788342d (patch)
tree643ebff2936eea09622bec6f01dbbe907ae3b6c0 /common
parent5074a8a3c0d0d1e11a1d51a7fb0ce8746668046f (diff)
downloadu-boot-53a4f253f129926bb5398634c8bae43ab788342d.zip
u-boot-53a4f253f129926bb5398634c8bae43ab788342d.tar.gz
u-boot-53a4f253f129926bb5398634c8bae43ab788342d.tar.bz2
bootstage: Store the next ID in the stash
When stashing bootstage info, store the next ID so that it can be used when the stash is restored. This avoids the ID starting at zero and potentially overwriting existing entries. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/bootstage.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/common/bootstage.c b/common/bootstage.c
index 56ef91a..257dc5d 100644
--- a/common/bootstage.c
+++ b/common/bootstage.c
@@ -41,10 +41,11 @@ enum {
};
struct bootstage_hdr {
- uint32_t version; /* BOOTSTAGE_VERSION */
- uint32_t count; /* Number of records */
- uint32_t size; /* Total data size (non-zero if valid) */
- uint32_t magic; /* Unused */
+ u32 version; /* BOOTSTAGE_VERSION */
+ u32 count; /* Number of records */
+ u32 size; /* Total data size (non-zero if valid) */
+ u32 magic; /* Magic number */
+ u32 next_id; /* Next ID to use for bootstage */
};
int bootstage_relocate(void)
@@ -392,6 +393,7 @@ int bootstage_stash(void *base, int size)
hdr->count = count;
hdr->size = 0;
hdr->magic = BOOTSTAGE_MAGIC;
+ hdr->next_id = data->next_id;
ptr += sizeof(*hdr);
/* Write the records, silently stopping when we run out of space */
@@ -485,6 +487,7 @@ int bootstage_unstash(const void *base, int size)
/* Mark the records as read */
data->rec_count += hdr->count;
+ data->next_id = hdr->next_id;
debug("Unstashed %d records\n", hdr->count);
return 0;