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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham 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 402ABC433DF for ; Fri, 21 Aug 2020 08:01:57 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 0ACB12078D for ; Fri, 21 Aug 2020 08:01:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0ACB12078D 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 C93808D0021; Fri, 21 Aug 2020 04:01:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C43C18D0006; Fri, 21 Aug 2020 04:01:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B81AD8D0021; Fri, 21 Aug 2020 04:01:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0059.hostedemail.com [216.40.44.59]) by kanga.kvack.org (Postfix) with ESMTP id A3BF58D0006 for ; Fri, 21 Aug 2020 04:01:55 -0400 (EDT) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 6B0B0180AD817 for ; Fri, 21 Aug 2020 08:01:55 +0000 (UTC) X-FDA: 77173832190.16.toe95_270022a27037 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin16.hostedemail.com (Postfix) with ESMTP id 364F8100E6912 for ; Fri, 21 Aug 2020 08:01:55 +0000 (UTC) X-HE-Tag: toe95_270022a27037 X-Filterd-Recvd-Size: 7426 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf38.hostedemail.com (Postfix) with ESMTP for ; Fri, 21 Aug 2020 08:01:54 +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 B055E30E; Fri, 21 Aug 2020 01:01:53 -0700 (PDT) Received: from [10.163.67.49] (unknown [10.163.67.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2854E3F66B; Fri, 21 Aug 2020 01:01:51 -0700 (PDT) From: Anshuman Khandual Subject: Re: [PATCH v2 00/13] mm/debug_vm_pgtable fixes To: "Aneesh Kumar K.V" , linux-mm@kvack.org, akpm@linux-foundation.org Cc: mpe@ellerman.id.au, linuxppc-dev@lists.ozlabs.org References: <20200819130107.478414-1-aneesh.kumar@linux.ibm.com> <87tuwyvjei.fsf@linux.ibm.com> <856eb6d7-9c09-728e-b374-d787145ac052@arm.com> <46cc2987-0d1e-f8e8-ecaf-2d246b33413e@linux.ibm.com> Message-ID: <6927a5cf-4100-e43e-6aba-5d7bc0533276@arm.com> Date: Fri, 21 Aug 2020 13:31:21 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <46cc2987-0d1e-f8e8-ecaf-2d246b33413e@linux.ibm.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US X-Rspamd-Queue-Id: 364F8100E6912 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam05 Content-Transfer-Encoding: quoted-printable 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 08/21/2020 12:23 PM, Aneesh Kumar K.V wrote: > On 8/21/20 9:03 AM, Anshuman Khandual wrote: >> >> >> On 08/19/2020 07:15 PM, Aneesh Kumar K.V wrote: >>> "Aneesh Kumar K.V" writes: >>> >>>> This patch series includes fixes for debug_vm_pgtable test code so t= hat >>>> they follow page table updates rules correctly. The first two patche= s introduce >>>> changes w.r.t ppc64. The patches are included in this series for com= pleteness. We can >>>> merge them via ppc64 tree if required. >>>> >>>> Hugetlb test is disabled on ppc64 because that needs larger change t= o satisfy >>>> page table update rules. >>>> >>>> Changes from V1: >>>> * Address review feedback >>>> * drop test specific pfn_pte and pfn_pmd. >>>> * Update ppc64 page table helper to add _PAGE_PTE >>>> >>>> Aneesh Kumar K.V (13): >>>> =C2=A0=C2=A0 powerpc/mm: Add DEBUG_VM WARN for pmd_clear >>>> =C2=A0=C2=A0 powerpc/mm: Move setting pte specific flags to pfn_pte >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/ppc64: Avoid setting top bits in ra= dom value >>>> =C2=A0=C2=A0 mm/debug_vm_pgtables/hugevmap: Use the arch helper to i= dentify huge >>>> =C2=A0=C2=A0=C2=A0=C2=A0 vmap support. >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/savedwrite: Enable savedwrite test = with >>>> =C2=A0=C2=A0=C2=A0=C2=A0 CONFIG_NUMA_BALANCING >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/THP: Mark the pte entry huge before= using >>>> =C2=A0=C2=A0=C2=A0=C2=A0 set_pmd/pud_at >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/set_pte/pmd/pud: Don't use set_*_at= to update an >>>> =C2=A0=C2=A0=C2=A0=C2=A0 existing pte entry >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/thp: Use page table depost/withdraw= with THP >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/locks: Move non page table modifyin= g test together >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/locks: Take correct page table lock >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/pmd_clear: Don't use pmd/pud_clear = on pte entries >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable/hugetlb: Disable hugetlb test on pp= c64 >>>> =C2=A0=C2=A0 mm/debug_vm_pgtable: populate a pte entry before fetchi= ng it >>>> >>>> =C2=A0 arch/powerpc/include/asm/book3s/64/pgtable.h |=C2=A0 29 +++- >>>> =C2=A0 arch/powerpc/include/asm/nohash/pgtable.h=C2=A0=C2=A0=C2=A0 |= =C2=A0=C2=A0 5 - >>>> =C2=A0 arch/powerpc/mm/book3s64/pgtable.c=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 2 +- >>>> =C2=A0 arch/powerpc/mm/pgtable.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 |=C2=A0=C2=A0 5 - >>>> =C2=A0 include/linux/io.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 12 ++ >>>> =C2=A0 mm/debug_vm_pgtable.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 | 151 +++++++++++-------- >>>> =C2=A0 6 files changed, 127 insertions(+), 77 deletions(-) >>>> >>> >>> BTW I picked a wrong branch when sending this. Attaching the diff >>> against what I want to send.=C2=A0 pfn_pmd() no more updates _PAGE_PT= E >>> because that is handled by pmd_mkhuge(). >>> >>> diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/boo= k3s64/pgtable.c >>> index 3b4da7c63e28..e18ae50a275c 100644 >>> --- a/arch/powerpc/mm/book3s64/pgtable.c >>> +++ b/arch/powerpc/mm/book3s64/pgtable.c >>> @@ -141,7 +141,7 @@ pmd_t pfn_pmd(unsigned long pfn, pgprot_t pgprot) >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned long pmdv; >>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pmdv =3D (pfn << PAGE_SHIFT) & = PTE_RPN_MASK; >>> -=C2=A0=C2=A0=C2=A0 return __pmd(pmdv | pgprot_val(pgprot) | _PAGE_PT= E); >>> +=C2=A0=C2=A0=C2=A0 return pmd_set_protbits(__pmd(pmdv), pgprot); >>> =C2=A0 } >>> =C2=A0 =C2=A0 pmd_t mk_pmd(struct page *page, pgprot_t pgprot) >>> diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c >>> index 7d9f8e1d790f..cad61d22f33a 100644 >>> --- a/mm/debug_vm_pgtable.c >>> +++ b/mm/debug_vm_pgtable.c >>> @@ -229,7 +229,7 @@ static void __init pmd_huge_tests(pmd_t *pmdp, un= signed long pfn, pgprot_t prot) >>> =C2=A0 =C2=A0 static void __init pmd_savedwrite_tests(unsigned long p= fn, pgprot_t prot) >>> =C2=A0 { >>> -=C2=A0=C2=A0=C2=A0 pmd_t pmd =3D pfn_pmd(pfn, prot); >>> +=C2=A0=C2=A0=C2=A0 pmd_t pmd =3D pmd_mkhuge(pfn_pmd(pfn, prot)); >>> =C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!IS_ENABLED(CONFIG_NUMA_BAL= ANCING)) >>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return; >>> >> >> Cover letter does not mention which branch or tag this series applies = on. >> Just assumed it to be 5.9-rc1. Should the above changes be captured as= a >> pre-requisite patch ? >> >> Anyways, the series fails to be build on arm64. >> >> A) Without CONFIG_TRANSPARENT_HUGEPAGE >> >> mm/debug_vm_pgtable.c: In function =E2=80=98debug_vm_pgtable=E2=80=99: >> mm/debug_vm_pgtable.c:1045:2: error: too many arguments to function =E2= =80=98pmd_advanced_tests=E2=80=99 >> =C2=A0=C2=A0 pmd_advanced_tests(mm, vma, pmdp, pmd_aligned, vaddr, pro= t, saved_ptep); >> =C2=A0=C2=A0 ^~~~~~~~~~~~~~~~~~ >> mm/debug_vm_pgtable.c:366:20: note: declared here >> =C2=A0 static void __init pmd_advanced_tests(struct mm_struct *mm, >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ^~~~~~~~~~~~~~~~~~ >> >> B) As mentioned previously, this should be solved by including >> >> mm/debug_vm_pgtable.c: In function =E2=80=98pmd_huge_tests=E2=80=99: >> mm/debug_vm_pgtable.c:215:7: error: implicit declaration of function =E2= =80=98arch_ioremap_pmd_supported=E2=80=99; did you mean =E2=80=98arch_dis= able_smp_support=E2=80=99? [-Werror=3Dimplicit-function-declaration] >> =C2=A0=C2=A0 if (!arch_ioremap_pmd_supported()) >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> >> Please make sure that the series builds on all enabled platforms i.e x= 86, >> arm64, ppc32, ppc64, arc, s390 along with selectively enabling/disabli= ng >> all the features that make various #ifdefs in the test. >> >=20 > I was hoping to get kernel test robot build report to verify that. But = if you can help with that i have pushed a branch to github with reported = build failure fixes. >=20 > https://github.com/kvaneesh/linux/tree/debug_vm_pgtable >=20 > I still haven't looked at the PMD_FOLDED feedback from Christophe becau= se I am not sure i follow why we are checking for PMD folded there. If this series does not build on existing enabled platforms, wondering how effective the review could be, assuming that things would need to change again to fix those build failures on various platforms. Getting this to build here is essential, as not all page table constructs are available across these platforms. Hence wondering, it might be better if you could resend the series after fixing build issues.