mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm: mm: flush_page_to_ram() only need to clean to PoC
At the moment, flush_page_to_ram() is both cleaning and invalidate to PoC the page. The goal of flush_page_to_ram() is to prevent corruption when the guest has disabled the cache (the cache line may be dirty) and the guest to read previous content. Per this definition, the invalidating the line is not necessary. So invalidating the cache is unnecessary. In fact, it may be counter- productive as the line may be (speculatively) accessed a bit after. So this will incurr an expensive access to the memory. More generally, we should avoid interferring too much with cache. Therefore, flush_page_to_ram() is updated to only clean to PoC the page. The performance impact of this change will depend on your workload/processor. Signed-off-by: Julien Grall <jgrall@amazon.com> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com> Acked-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
1 parent
5c3c410bd2
commit
9617d5f9c1
1 file changed
+1
-1
+1
-1
@@ -529,7 +529,7 @@ void flush_page_to_ram(unsigned long mfn, bool sync_icache)
|
||||
{
|
||||
void *v = map_domain_page(_mfn(mfn));
|
||||
|
||||
clean_and_invalidate_dcache_va_range(v, PAGE_SIZE);
|
||||
clean_dcache_va_range(v, PAGE_SIZE);
|
||||
unmap_domain_page(v);
|
||||
|
||||
/*
|
||||
|
||||