diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 3cced8455727953a2525571c5a62b5ad884e8bee..f1e6190aa7eaedf5adacca20c09cb7c3702bee96 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c @@ -327,6 +327,12 @@ void flush_dcache_page(struct page *page) if (page == ZERO_PAGE(0)) return; + if (!cache_ops_need_broadcast() && cache_is_vipt_nonaliasing()) { + if (test_bit(PG_dcache_clean, &page->flags)) + clear_bit(PG_dcache_clean, &page->flags); + return; + } + mapping = page_mapping(page); if (!cache_ops_need_broadcast() &&