MMU notifiers and hugepage copy-on-write

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Are MMU notifiers not handling copy-on-write of hugetlb pages?
Looking at the source code, I don't see where this happens.
Non-hugetlb pages are handled via:
    do_wp_page() -> set_pte_at_notify() -> mmu_notifier_change_pte()


...but I don't see any MMU notifier callouts down the hugetlb_cow() path,
unless it fails to allocate a new_page():

        new_page = alloc_huge_page(vma, address, outside_reserve);

        if (IS_ERR(new_page)) {
                page_cache_release(old_page);

                /*
                 * If a process owning a MAP_PRIVATE mapping fails to COW,
                 * it is due to references held by a child and an insufficient
                 * huge page pool. To guarantee the original mappers
                 * reliability, unmap the page from child processes. The child
                 * may get SIGKILLed if it later faults.
                 */
                if (outside_reserve) {
                        BUG_ON(huge_pte_none(pte));
   >>>                  if (unmap_ref_private(mm, vma, old_page, address)) {


..where unmap_ref_private() calls __unmap_hugepage_range() which then
calls the MMU notifier invalidate_range functions.

Am I missing something?

Thanks,
Dean

-- 
Dean Roe
Cray Inc.
roe@xxxxxxxx

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]