From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 60711C2BD09 for ; Wed, 4 Dec 2019 16:32:47 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 2876E206DB for ; Wed, 4 Dec 2019 16:32:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2876E206DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A43396B0B89; Wed, 4 Dec 2019 11:32:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9F4146B0B9A; Wed, 4 Dec 2019 11:32:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9096D6B0B9B; Wed, 4 Dec 2019 11:32:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 7730C6B0B89 for ; Wed, 4 Dec 2019 11:32:46 -0500 (EST) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with SMTP id 8C00D809618F for ; Wed, 4 Dec 2019 16:32:45 +0000 (UTC) X-FDA: 76228002690.30.head04_17f035d70ae2b X-HE-Tag: head04_17f035d70ae2b X-Filterd-Recvd-Size: 5849 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf26.hostedemail.com (Postfix) with ESMTP for ; Wed, 4 Dec 2019 16:32:44 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3168F31B; Wed, 4 Dec 2019 08:32:43 -0800 (PST) Received: from arm.com (e112269-lin.cambridge.arm.com [10.1.194.43]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6B6333F52E; Wed, 4 Dec 2019 08:32:40 -0800 (PST) Date: Wed, 4 Dec 2019 16:32:35 +0000 From: Steven Price To: David Hildenbrand Cc: Qian Cai , Andrew Morton , Linux-MM , Mark Rutland , the arch/x86 maintainers , Arnd Bergmann , Ard Biesheuvel , Peter Zijlstra , Catalin Marinas , Dave Hansen , "linux-kernel@vger.kernel.org" , =?iso-8859-1?B?Suly9G1l?= Glisse , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , James Morse , Thomas Gleixner , Will Deacon , "linux-arm-kernel@lists.infradead.org" , "Liang, Kan" , Thomas Hellstrom Subject: Re: [PATCH v15 00/23] Generic page walk and ptdump Message-ID: <20191204163235.GA1597@arm.com> References: <20191101140942.51554-1-steven.price@arm.com> <1572896147.5937.116.camel@lca.pw> <7B040741-EC8A-4CC0-964B-4046AE2E617A@lca.pw> <16da6118-ac4d-a165-6202-0731a776ac72@arm.com> <911fac4a-2204-f994-a101-16a60fba12e8@redhat.com> <0FA196FD-3FCD-431A-AA3E-21BF00EA07DC@lca.pw> <9d5f1689-db82-a6da-d51d-08070aa4bad5@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9d5f1689-db82-a6da-d51d-08070aa4bad5@redhat.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Dec 04, 2019 at 02:56:58PM +0000, David Hildenbrand wrote: > On 04.12.19 15:54, Qian Cai wrote: > > > > > >> On Dec 3, 2019, at 6:02 AM, David Hildenbrand wrote: > >> > >> On 06.11.19 16:05, Steven Price wrote: > >>> On 06/11/2019 13:31, Qian Cai wrote: > >>>> > >>>> > >>>>> On Nov 4, 2019, at 2:35 PM, Qian Cai wrote: > >>>>> > >>>>> On Fri, 2019-11-01 at 14:09 +0000, Steven Price wrote: > >>> [...] > >>>>>> Changes since v14: > >>>>>> https://lore.kernel.org/lkml/20191028135910.33253-1-steven.price@arm.com/ > >>>>>> * Switch walk_page_range() into two functions, the existing > >>>>>> walk_page_range() now still requires VMAs (and treats areas without a > >>>>>> VMA as a 'hole'). The new walk_page_range_novma() ignores VMAs and > >>>>>> will report the actual page table layout. This fixes the previous > >>>>>> breakage of /proc//pagemap > >>>>>> * New patch at the end of the series which reduces the 'level' numbers > >>>>>> by 1 to simplify the code slightly > >>>>>> * Added tags > >>>>> > >>>>> Does this new version also take care of this boot crash seen with v14? Suppose > >>>>> it is now breaking CONFIG_EFI_PGT_DUMP=y? The full config is, > >>>>> > >>>>> https://raw.githubusercontent.com/cailca/linux-mm/master/x86.config > >>>>> > >>>> > >>>> V15 is indeed DOA here. > >>> > >>> Thanks for finding this, it looks like EFI causes issues here. The below fixes > >>> this for me (booting in QEMU). > >>> > >>> Andrew: do you want me to send out the entire series again for this fix, or > >>> can you squash this into mm-pagewalk-allow-walking-without-vma.patch? > >>> > >>> Thanks, > >>> > >>> Steve > >>> > >>> ---8<--- > >>> diff --git a/mm/pagewalk.c b/mm/pagewalk.c > >>> index c7529dc4f82b..70dcaa23598f 100644 > >>> --- a/mm/pagewalk.c > >>> +++ b/mm/pagewalk.c > >>> @@ -90,7 +90,7 @@ static int walk_pmd_range(pud_t *pud, unsigned long addr, unsigned long end, > >>> split_huge_pmd(walk->vma, pmd, addr); > >>> if (pmd_trans_unstable(pmd)) > >>> goto again; > >>> - } else if (pmd_leaf(*pmd)) { > >>> + } else if (pmd_leaf(*pmd) || !pmd_present(*pmd)) { > >>> continue; > >>> } > >>> > >>> @@ -141,7 +141,7 @@ static int walk_pud_range(p4d_t *p4d, unsigned long addr, unsigned long end, > >>> split_huge_pud(walk->vma, pud, addr); > >>> if (pud_none(*pud)) > >>> goto again; > >>> - } else if (pud_leaf(*pud)) { > >>> + } else if (pud_leaf(*pud) || !pud_present(*pud)) { > >>> continue; > >>> } > >>> > >>> > >> > >> Even with this fix, booting for me under QEMU fails. See > >> > >> https://lore.kernel.org/linux-mm/b7ce62f2-9a48-6e48-6685-003431e521aa@redhat.com/ > >> > > > > Yes, for some reasons, this starts to crash on almost all arches here, so it might be worth > > for Andrew to revert those in the meantime while allowing Steven to rework. > > I agree, this produces too much noise. I've bisected this problem and it's a merge conflict with: ace88f1018b8 ("mm: pagewalk: Take the pagetable lock in walk_pte_range()") Reverting that commit "fixes" the problem. That commit adds a call to pte_offset_map_lock(), however that isn't necessarily safe when considering an "unusual" mapping in the kernel. Combined with my patch set this leads to the BUG when walking the kernel's page tables. At this stage I think it's best if Andrew drops my series and I'll try to rework it on top -rc1 fixing up this conflict and the other x86 32-bit issue that has cropped up. Steve