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=-6.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 51778CA9EAF for ; Thu, 24 Oct 2019 13:05:57 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 06ADB2166E for ; Thu, 24 Oct 2019 13:05:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pqYYecC9" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 06ADB2166E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A03846B0005; Thu, 24 Oct 2019 09:05:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 98CB96B0006; Thu, 24 Oct 2019 09:05:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 855996B0007; Thu, 24 Oct 2019 09:05:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0166.hostedemail.com [216.40.44.166]) by kanga.kvack.org (Postfix) with ESMTP id 5A24B6B0005 for ; Thu, 24 Oct 2019 09:05:56 -0400 (EDT) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with SMTP id E34401801B5EE for ; Thu, 24 Oct 2019 13:05:55 +0000 (UTC) X-FDA: 76078700670.21.cent30_33a5bdbae543a X-HE-Tag: cent30_33a5bdbae543a X-Filterd-Recvd-Size: 6718 Received: from mail-lj1-f196.google.com (mail-lj1-f196.google.com [209.85.208.196]) by imf32.hostedemail.com (Postfix) with ESMTP for ; Thu, 24 Oct 2019 13:05:54 +0000 (UTC) Received: by mail-lj1-f196.google.com with SMTP id u22so6944862lji.7 for ; Thu, 24 Oct 2019 06:05:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=3v7HH2EtuoXM2xnYmFQQeluZt2onP/7EoTuMaBySF5U=; b=pqYYecC9th9J+VMMUSolsRioNbW/0/V0vjiWIHl+uu0z7rYYHip2twHnjAB8pA/e4+ NY06bM0/dAlPMsGT91KAjlvpX1B2sYR++kMK39hV5mBasK3u+6yJPcwXOmeKsosabJcY F7nlEXJnzLEY4t47EahMVbav3mRqBdpHxmO/Spi1U7knnubGN91YjpvNMrka6/ELrZzn VjyCzI6mEmQ7WrDHaXFlppakXY8WS6MM+yhLTSzTQCDwxxSTzfgbABIB2vAze3KsoLlv SvEtrjoPO1h0pB40w+Skj2BcKhdpx1QvMOS2UMXw3gt1T6VvPy1KyKALT5KNK43GlIV2 8HdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=3v7HH2EtuoXM2xnYmFQQeluZt2onP/7EoTuMaBySF5U=; b=IW+J+SDvwjMmf/YKbf8d2OBbASuFrXVsmAB+ODO+38eqElxZZdx63xX4NhQJwyaeaW MuK3DvgWUmP+w12aBnaXmn5kr2Y1DagFcd/W9bzW40LphmhUuElQyHByonDMOeTRD2Ga E7iUq9/tiaD9X1xdmmBMiEKZgRgOeg2s208Xuv+O2tLUyxzOuMm55+lsCl9ktakYsIqP GB/wz6O3xkZAko9WSHiJrIpTiBTGGPsNRYy99Yjt80Xxl7qDe57ZhUMdRsMpe5lgBVfc 1RFKxa++FMEwQTlxCkHRoxX/xuij29QmnS1XgvSqeq28vR1qs3NmEV7EVwXL6ooRLcUG VUAw== X-Gm-Message-State: APjAAAUJIRFLoDvErejwp4vmCdDuMgfXi9IdA3MUv0LFw6V7W0tVLZDm Fjjlj6ox0jeXwfGDUV+qZzHCOs1oi2z1t1Wa1Uw= X-Google-Smtp-Source: APXvYqyCfZieYyM9plUxMjd6WgwJX7NZdXwGL0kJacHdG/yeJ3DtK/SWrNwnJoNrghLsNdJEWI+EiN9bnEo6avAv3i4= X-Received: by 2002:a2e:6101:: with SMTP id v1mr26121771ljb.122.1571922353123; Thu, 24 Oct 2019 06:05:53 -0700 (PDT) MIME-Version: 1.0 References: <20191018101248.33727-1-steven.price@arm.com> <20191018101248.33727-13-steven.price@arm.com> In-Reply-To: <20191018101248.33727-13-steven.price@arm.com> From: Zong Li Date: Thu, 24 Oct 2019 21:05:41 +0800 Message-ID: Subject: Re: [PATCH v12 12/22] mm: pagewalk: Allow walking without vma To: Steven Price Cc: linux-mm@kvack.org, Andy Lutomirski , Ard Biesheuvel , Arnd Bergmann , Borislav Petkov , Catalin Marinas , Dave Hansen , Ingo Molnar , James Morse , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , Peter Zijlstra , Thomas Gleixner , Will Deacon , x86@kernel.org, "H. Peter Anvin" , linux-arm-kernel@lists.infradead.org, Linux Kernel Mailing List , Mark Rutland , "Liang, Kan" , Andrew Morton Content-Type: text/plain; charset="UTF-8" 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: Steven Price =E6=96=BC 2019=E5=B9=B410=E6=9C=8819=E6= =97=A5 =E9=80=B1=E5=85=AD =E4=B8=8B=E5=8D=884:12=E5=AF=AB=E9=81=93=EF=BC=9A > > Since 48684a65b4e3: "mm: pagewalk: fix misbehavior of walk_page_range > for vma(VM_PFNMAP)", page_table_walk() will report any kernel area as > a hole, because it lacks a vma. > > This means each arch has re-implemented page table walking when needed, > for example in the per-arch ptdump walker. > > Remove the requirement to have a vma except when trying to split huge > pages. > > Signed-off-by: Steven Price > --- > mm/pagewalk.c | 25 +++++++++++++++++-------- > 1 file changed, 17 insertions(+), 8 deletions(-) > > diff --git a/mm/pagewalk.c b/mm/pagewalk.c > index fc4d98a3a5a0..4139e9163aee 100644 > --- a/mm/pagewalk.c > +++ b/mm/pagewalk.c > @@ -38,7 +38,7 @@ static int walk_pmd_range(pud_t *pud, unsigned long add= r, unsigned long end, > do { > again: > next =3D pmd_addr_end(addr, end); > - if (pmd_none(*pmd) || !walk->vma) { > + if (pmd_none(*pmd)) { > if (ops->pte_hole) > err =3D ops->pte_hole(addr, next, walk); > if (err) > @@ -61,9 +61,14 @@ static int walk_pmd_range(pud_t *pud, unsigned long ad= dr, unsigned long end, > if (!ops->pte_entry) > continue; > > - split_huge_pmd(walk->vma, pmd, addr); > - if (pmd_trans_unstable(pmd)) > - goto again; > + if (walk->vma) { > + split_huge_pmd(walk->vma, pmd, addr); > + if (pmd_trans_unstable(pmd)) > + goto again; > + } else if (pmd_leaf(*pmd)) { > + continue; > + } > + > err =3D walk_pte_range(pmd, addr, next, walk); > if (err) > break; > @@ -84,7 +89,7 @@ static int walk_pud_range(p4d_t *p4d, unsigned long add= r, unsigned long end, > do { > again: > next =3D pud_addr_end(addr, end); > - if (pud_none(*pud) || !walk->vma) { > + if (pud_none(*pud)) { > if (ops->pte_hole) > err =3D ops->pte_hole(addr, next, walk); > if (err) > @@ -98,9 +103,13 @@ static int walk_pud_range(p4d_t *p4d, unsigned long a= ddr, unsigned long end, > break; > } > > - split_huge_pud(walk->vma, pud, addr); > - if (pud_none(*pud)) > - goto again; > + if (walk->vma) { > + split_huge_pud(walk->vma, pud, addr); > + if (pud_none(*pud)) > + goto again; > + } else if (pud_leaf(*pud)) { > + continue; > + } > > if (ops->pmd_entry || ops->pte_entry) > err =3D walk_pmd_range(pud, addr, next, walk); > -- > 2.20.1 > It's good to me. Tested-by: Zong Li