From ef8a43c5469a855da342077fef52023ad4f32cb5 Mon Sep 17 00:00:00 2001 From: Johannes Schlatow Date: Thu, 23 Sep 2021 16:32:17 +0200 Subject: [PATCH] base-hw: cache maintenance touch each page before flushing to ensure that it's present in the page table genodelabs/genode#4279 --- repos/base-hw/src/lib/base/cache.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/repos/base-hw/src/lib/base/cache.cc b/repos/base-hw/src/lib/base/cache.cc index 7c84da3812..b2b1b61160 100644 --- a/repos/base-hw/src/lib/base/cache.cc +++ b/repos/base-hw/src/lib/base/cache.cc @@ -16,6 +16,7 @@ #include #include #include +#include using namespace Genode; @@ -32,6 +33,7 @@ static void for_cachelines(addr_t addr, size_t size, FN const & fn) while (size) { addr_t next_page = align_addr(addr+1, get_page_size_log2()); size_t s = min(size, next_page - addr); + touch_read(reinterpret_cast(addr)); fn(addr, s); addr += s; size -= s;