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=-24.8 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1,USER_IN_DEF_DKIM_WL 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 95283C433E0 for ; Sat, 26 Dec 2020 21:04:09 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 235B12184D for ; Sat, 26 Dec 2020 21:04:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 235B12184D Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 4B9728D0091; Sat, 26 Dec 2020 16:04:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 46A248D0080; Sat, 26 Dec 2020 16:04:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 37FEE8D0091; Sat, 26 Dec 2020 16:04:08 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0111.hostedemail.com [216.40.44.111]) by kanga.kvack.org (Postfix) with ESMTP id 1FB988D0080 for ; Sat, 26 Dec 2020 16:04:08 -0500 (EST) Received: from smtpin02.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id D6C34180AD807 for ; Sat, 26 Dec 2020 21:04:07 +0000 (UTC) X-FDA: 77636660934.02.gold12_2b0cb4d27485 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin02.hostedemail.com (Postfix) with ESMTP id B93D210097AA1 for ; Sat, 26 Dec 2020 21:04:07 +0000 (UTC) X-HE-Tag: gold12_2b0cb4d27485 X-Filterd-Recvd-Size: 6311 Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) by imf14.hostedemail.com (Postfix) with ESMTP for ; Sat, 26 Dec 2020 21:04:07 +0000 (UTC) Received: by mail-oi1-f179.google.com with SMTP id d189so7743442oig.11 for ; Sat, 26 Dec 2020 13:04:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version; bh=Ug2cC4COVPLC8mUYk/AU6N3XeMv07OZAJCLKe97wdjM=; b=Avq6Xe+8Li3coUSLxoaL0P41sPCfY0qsbLYDU/E+jNxRN0wRmjmQb+27bds/F8cNJn 4gLjDmqbdC3jGuDAFanZlmbz3MoqdumM/dwLw8SRD1ngOrNtArDeSKVPkQoXK9FvhpQh Vlb1MvYWxq6Log5f9ewU/mwTWCWiyL1Dmpw9CGbv83WECKFdCZL5U5wMk1hlXbuiuX+e OQG68rW7XqQuYjDTSxPFW9E5LJMQ04VCzigc6rS8hO8nq7Bz5dzOw2OF++xdy3BArH4Y 1eQjW0XL5KSaIUUEjcgyDPU2rs48dZA89dIyuF9XWu+xGxaN00ZGO+tGwx1fQbVmufiY aLug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version; bh=Ug2cC4COVPLC8mUYk/AU6N3XeMv07OZAJCLKe97wdjM=; b=oTiGHn0N6MvCHH2/Wce+KesaBUE339n46zVIEmScds2bmWGhHL2HTHeJEG/DLFN/ku dhBqR6YJ8YKR5fmHLI1rZTBRcQgWi7huPNWo01KKFz4CJOs0/d03qNA6pbUZdmhqbKnn EeSCZU03bwaDV/dkOqgJJgZeN2pA8JEJWb5onGhOuObmGTaF4xLqVnMFLMrD0kiMDkzN 2R/l+i0t7mvE1R6FMW7oKEXTffOdaGw+c3angmU2j/0BYEmnCs1TP2nxjJVUNGV0EvRR 2LdgA+2lW/03/ipTSmgLhfrSLcZqLse33PfRlqJ+ldL/BhT8Sf/+ZGDiTBNBWS7UqRIO XYqQ== X-Gm-Message-State: AOAM530Q3WqHd+l51r+9GkqhmOTu9+SbzEVKDiG30doH6Jn2m5yi8ue3 QS8h7SvxFETlTDiug6UFBB7ZVQ== X-Google-Smtp-Source: ABdhPJzWaV98BaCLOJggQeAevV7nlr+09PfWrr1zgmfPuaYmXZdbcc/YpfIPPieQfFhIyOWMZBmTug== X-Received: by 2002:aca:fc03:: with SMTP id a3mr8356823oii.145.1609016646405; Sat, 26 Dec 2020 13:04:06 -0800 (PST) Received: from eggly.attlocal.net (172-10-233-147.lightspeed.sntcca.sbcglobal.net. [172.10.233.147]) by smtp.gmail.com with ESMTPSA id y65sm7683123oie.39.2020.12.26.13.04.04 (version=TLS1 cipher=ECDHE-ECDSA-AES128-SHA bits=128/128); Sat, 26 Dec 2020 13:04:05 -0800 (PST) Date: Sat, 26 Dec 2020 13:03:53 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: "Kirill A. Shutemov" cc: Linus Torvalds , Hugh Dickins , Matthew Wilcox , "Kirill A. Shutemov" , Will Deacon , Linux Kernel Mailing List , Linux-MM , Linux ARM , Catalin Marinas , Jan Kara , Minchan Kim , Andrew Morton , Vinayak Menon , Android Kernel Team Subject: Re: [PATCH 1/2] mm: Allow architectures to request 'old' entries when prefaulting In-Reply-To: <20201226204335.dikqkrkezqet6oqf@box> Message-ID: References: <20201217105409.2gacwgg7rco2ft3m@box> <20201218110400.yve45r3zsv7qgfa3@box> <20201219124103.w6isern3ywc7xbur@box> <20201222100047.p5zdb4ghagncq2oe@box> <20201225113157.e7hmluffh56fszfc@box> <20201226204335.dikqkrkezqet6oqf@box> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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 Sat, 26 Dec 2020, Kirill A. Shutemov wrote: > On Sat, Dec 26, 2020 at 09:57:13AM -0800, Linus Torvalds wrote: > > Because not only does that get rid of the "if (page)" test, I think it > > would make things a bit clearer. When I read the patch first, the > > initial "next_page()" call confused me. > > Agreed. Here we go: > > From d12dea4abe94dbc24b7945329b191ad7d29e213a Mon Sep 17 00:00:00 2001 > From: "Kirill A. Shutemov" > Date: Sat, 19 Dec 2020 15:19:23 +0300 > Subject: [PATCH] mm: Cleanup faultaround and finish_fault() codepaths > > alloc_set_pte() has two users with different requirements: in the > faultaround code, it called from an atomic context and PTE page table > has to be preallocated. finish_fault() can sleep and allocate page table > as needed. > > PTL locking rules are also strange, hard to follow and overkill for > finish_fault(). > > Let's untangle the mess. alloc_set_pte() has gone now. All locking is > explicit. > > The price is some code duplication to handle huge pages in faultaround > path, but it should be fine, having overall improvement in readability. > > Signed-off-by: Kirill A. Shutemov Hold on. I guess this one will suffer from the same bug as the previous. I was about to report back, after satisfactory overnight testing of that version - provided that one big little bug is fixed: --- a/mm/filemap.c +++ b/mm/filemap.c @@ -2919,7 +2919,7 @@ static bool filemap_map_pmd(struct vm_fa if (pmd_none(*vmf->pmd) && PageTransHuge(page) && - do_set_pmd(vmf, page)) { + do_set_pmd(vmf, page) == 0) { unlock_page(page); return true; } (Yes, you can write that as !do_set_pmd(vmf, page), and maybe I'm odd, but even though it's very common, I have a personal aversion to using "!' on a positive-sounding function that returns 0 for success.) I'll give the new patch a try now, but with that fix added in. Without it, I got "Bad page" on compound_mapcount on file THP pages - but I run with a BUG() inside of bad_page() so I cannot miss them: I did not look to see what the eventual crash or page leak would look like without that. Hugh