Message ID | 1394880478-770-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 346519a1606e196bd5f11b9f5eacaf60f70477a1 |
Headers | show |
On 03/15/2014 06:47 AM, Aneesh Kumar K.V wrote: > From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> > > We have generic code like the one in get_futex_key that assume that > a local_irq_disable prevents a parallel THP split. Support that by > adding a dummy smp call function after setting _PAGE_SPLITTING. Code > paths like get_user_pages_fast still need to check for _PAGE_SPLITTING > after disabling IRQ which indicate that a parallel THP splitting is > ongoing. Now if they don't find _PAGE_SPLITTING set, then we can be > sure that parallel split will now block in pmdp_splitting flush > until we enables IRQ > > Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Acked-by: Rik van Riel <riel@redhat.com>
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index 62bf5e8e78da..f6ce1f111f5b 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c @@ -647,6 +647,11 @@ void pmdp_splitting_flush(struct vm_area_struct *vma, if (old & _PAGE_HASHPTE) hpte_do_hugepage_flush(vma->vm_mm, address, pmdp); } + /* + * This ensures that generic code that rely on IRQ disabling + * to prevent a parallel THP split work as expected. + */ + kick_all_cpus_sync(); } /*