From 1947c2d2a08fb07330d15fc30416969afbe61bbc Mon Sep 17 00:00:00 2001
From: Stefano Babic <sbabic@denx.de>
Date: Thu, 22 Feb 2018 12:30:41 +0100
Subject: [PATCH] bootcount: flush after storing the bootcounter

If the bootcounter address is in a cached memory,
a flush of dcache must occur after updateing the bootcounter.

Issue found on i.MX6 where bootcounter is put into the internal
(cached) IRAM.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 drivers/bootcount/bootcount.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/bootcount/bootcount.c b/drivers/bootcount/bootcount.c
index e00d81c934..a3162c97ed 100644
--- a/drivers/bootcount/bootcount.c
+++ b/drivers/bootcount/bootcount.c
@@ -18,6 +18,9 @@ __weak void bootcount_store(ulong a)
 	raw_bootcount_store(reg, a);
 	raw_bootcount_store(reg + 4, BOOTCOUNT_MAGIC);
 #endif /* defined(CONFIG_SYS_BOOTCOUNT_SINGLEWORD */
+	flush_dcache_range(CONFIG_SYS_BOOTCOUNT_ADDR,
+				CONFIG_SYS_BOOTCOUNT_ADDR +
+				CONFIG_SYS_CACHELINE_SIZE);
 }
 
 __weak ulong bootcount_load(void)
-- 
2.39.5