Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753000AbbEKGak (ORCPT ); Mon, 11 May 2015 02:30:40 -0400 Received: from e28smtp03.in.ibm.com ([122.248.162.3]:43360 "EHLO e28smtp03.in.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752972AbbEKGah (ORCPT ); Mon, 11 May 2015 02:30:37 -0400 From: "Aneesh Kumar K.V" To: Andrew Morton Cc: mpe@ellerman.id.au, paulus@samba.org, benh@kernel.crashing.org, kirill.shutemov@linux.intel.com, aarcange@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH V2 2/2] powerpc/thp: Serialize pmd clear against a linux page table walk. In-Reply-To: <20150508152149.7fd52bb4b7c2a0911c33be00@linux-foundation.org> References: <1430983408-24924-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <1430983408-24924-2-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <20150508152149.7fd52bb4b7c2a0911c33be00@linux-foundation.org> User-Agent: Notmuch/0.19+103~g294bb6d (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) Date: Mon, 11 May 2015 12:00:18 +0530 Message-ID: <87zj5b4oed.fsf@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 15051106-0009-0000-0000-000005568ABE Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2336 Lines: 48 Andrew Morton writes: > On Thu, 7 May 2015 12:53:28 +0530 "Aneesh Kumar K.V" wrote: > >> Serialize against find_linux_pte_or_hugepte which does lock-less >> lookup in page tables with local interrupts disabled. For huge pages >> it casts pmd_t to pte_t. Since format of pte_t is different from >> pmd_t we want to prevent transit from pmd pointing to page table >> to pmd pointing to huge page (and back) while interrupts are disabled. >> We clear pmd to possibly replace it with page table pointer in >> different code paths. So make sure we wait for the parallel >> find_linux_pte_or_hugepage to finish. > > I'm not seeing here any description of the problem which is being > fixed. Does the patch make the machine faster? Does the machine > crash? I sent v3 with updated commit message. Adding that below. powerpc/thp: Serialize pmd clear against a linux page table walk. Serialize against find_linux_pte_or_hugepte which does lock-less lookup in page tables with local interrupts disabled. For huge pages it casts pmd_t to pte_t. Since format of pte_t is different from pmd_t we want to prevent transit from pmd pointing to page table to pmd pointing to huge page (and back) while interrupts are disabled. We clear pmd to possibly replace it with page table pointer in different code paths. So make sure we wait for the parallel find_linux_pte_or_hugepage to finish. Without this patch, a find_linux_pte_or_hugepte running in parallel to __split_huge_zero_page_pmd or do_huge_pmd_wp_page_fallback or zap_huge_pmd can run into the above issue. With __split_huge_zero_page_pmd and do_huge_pmd_wp_page_fallback we clear the hugepage pte before inserting the pmd entry with a regular pgtable address. Such a clear need to wait for the parallel find_linux_pte_or_hugepte to finish. With zap_huge_pmd, we can run into issues, with a hugepage pte getting zapped due to a MADV_DONTNEED while other cpu fault it in as small pages. -aneesh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/