arm: mm: enable RCU fast_gup
[jlayton/linux.git] / arch / arm / mm / flush.c
index 43d54f5b26b9b08edf95dd1b48b13ff6440451af..265b836b3bd1704d0265eebafd33d4f0d1e7ea45 100644 (file)
@@ -400,3 +400,18 @@ void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned l
         */
        __cpuc_flush_dcache_area(page_address(page), PAGE_SIZE);
 }
+
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+#ifdef CONFIG_HAVE_RCU_TABLE_FREE
+void pmdp_splitting_flush(struct vm_area_struct *vma, unsigned long address,
+                         pmd_t *pmdp)
+{
+       pmd_t pmd = pmd_mksplitting(*pmdp);
+       VM_BUG_ON(address & ~PMD_MASK);
+       set_pmd_at(vma->vm_mm, address, pmdp, pmd);
+
+       /* dummy IPI to serialise against fast_gup */
+       kick_all_cpus_sync();
+}
+#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
+#endif /* CONFIG_TRANSPARENT_HUGEPAGE */