ARM: 7693/1: mm: clean-up in order to reduce to call kmap_high_get()
[platform/adaptation/renesas_rcar/renesas_kernel.git] / arch / arm / mm / flush.c
index 1c8f7f5..0d473cc 100644 (file)
@@ -170,15 +170,18 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page)
        if (!PageHighMem(page)) {
                __cpuc_flush_dcache_area(page_address(page), PAGE_SIZE);
        } else {
-               void *addr = kmap_high_get(page);
-               if (addr) {
-                       __cpuc_flush_dcache_area(addr, PAGE_SIZE);
-                       kunmap_high(page);
-               } else if (cache_is_vipt()) {
-                       /* unmapped pages might still be cached */
+               void *addr;
+
+               if (cache_is_vipt_nonaliasing()) {
                        addr = kmap_atomic(page);
                        __cpuc_flush_dcache_area(addr, PAGE_SIZE);
                        kunmap_atomic(addr);
+               } else {
+                       addr = kmap_high_get(page);
+                       if (addr) {
+                               __cpuc_flush_dcache_area(addr, PAGE_SIZE);
+                               kunmap_high(page);
+                       }
                }
        }