Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp2260374rdh; Tue, 26 Sep 2023 18:50:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFp0Pg86W7CW5fh4yCvx2fwncBUwjB3cAxP7owCQEHQ4y5Rm0AUkuEdL3Uyv/muruozFrXs X-Received: by 2002:a25:d196:0:b0:d81:bb7e:f47f with SMTP id i144-20020a25d196000000b00d81bb7ef47fmr644284ybg.44.1695779407209; Tue, 26 Sep 2023 18:50:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695779407; cv=none; d=google.com; s=arc-20160816; b=qhg3zPCIaAo5AMe9D/SCpyvPvzywx0iIrxGiiBKglUPP4VhohRKaMbV0Y5ru9NlFdj jyuqDy22UGRxic8KUP0Whmv8x/wafo0fdtdVn/H8h1iaLCAEc4z/vgijkwMiyNRXkcA7 sc+fhBxjFCR8Ak0arIZ2HS9capQ58lRAy1+h0Oxb/djlM/mdA5FgK7NNsXQbRwvefTn3 kuEP+0RRmnFrVffHXIsYXx3NNN+qeDvQSPSmGRS1gBrRDM2uV54Yor1kXN/7sMyQ2/Br CmbfZBfLcEgxE3vFAq/WFuzr3VdaTQsPaqBMFxn+246UlwctKiGM5hyllabzchKXq9YN p/sQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=y/yEtlXtVxm4kjBMlSVby9WafwRCEzcrWM1EGka6xJY=; fh=Zd9bfVVNueBcrzoH5EjVodtINgoTCdlPMRHLo+0JXJk=; b=hW0dhRB3IP3gHi0w1BG09/i71IiZsBBDkRpk9t34Yc6WwFRmNr6VxkSgaVJyYbzdiG hsLhnQ8Qi4gW5h1ceoecQkbSyAaWMlkN03Sw1RVCgXVSTCglOtM5PYVSGBZa7oBeAwG1 6bsTcj31cCirNnbwzTWHQHePPkd9lAz1UZF/L7u1aZUaR0B8Io1n++3kx8HFSZaJpq1/ MgJ/Sou6JfLfWy52w43m/7++dgI1KX5Qg5Y3HzzgwtUObvV+3xwFRWuMUMM+H5WrCNwF XD8q203bfMVkpPdFvlKCVMgP0j4QpnKIiTgkhIh3P8YpsGDyW5RadZA+BftGmCr6jXAx od+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VQu93rpD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [2620:137:e000::3:3]) by mx.google.com with ESMTPS id g125-20020a636b83000000b0056476f15584si14503966pgc.541.2023.09.26.18.49.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Sep 2023 18:50:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) client-ip=2620:137:e000::3:3; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=VQu93rpD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:3 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id B0CEA803796F; Tue, 26 Sep 2023 15:17:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230189AbjIZWRv (ORCPT + 99 others); Tue, 26 Sep 2023 18:17:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230320AbjIZWPu (ORCPT ); Tue, 26 Sep 2023 18:15:50 -0400 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0139711657B for ; Tue, 26 Sep 2023 14:39:19 -0700 (PDT) Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1c5bf7871dcso76025695ad.1 for ; Tue, 26 Sep 2023 14:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695764358; x=1696369158; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=y/yEtlXtVxm4kjBMlSVby9WafwRCEzcrWM1EGka6xJY=; b=VQu93rpDRTTEvebpSLZIigaMG9WblREm9dAK6jQablFsuy2gcMDlecoElod02wdUnO Qhe5Nx5ercFzvCVWGJ1fNNgifnGWMg4meS/wSyIe3z2Y71xaCvY7SXQrBIMA8KezsBka g1Zak57AtLcm2tPEuaMuqr88l/dECBjucDwIQhj9srZUXfeXJXQuOr4863tzPM06PA0X Y6S/1ZEHCZSEWduSxq1xMbTOaif8Wegrq2npQg7cnEllNEivwJPp98vpjLs0bA2sfazc U6dnGIFRnIKZ2roGog976Lzmh/mcES8SnVStvlfPQNgjSCUSxDpbnADUZIsryhbsLWaH Tmow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695764358; x=1696369158; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y/yEtlXtVxm4kjBMlSVby9WafwRCEzcrWM1EGka6xJY=; b=ILWAFjF+3d8u+LPWIJmHmIKFd4qgAGhWfZhwO54z00H6tj8jxrOzPS+4wIA1c/OLes UCxKZyLFAEksQ+fe5iq1pmSyvZI8VLi4G2q44poUnwW0DKw07u7mTr/emXHsQc1zC1Z4 IT6d8K7fkgC1cFdJf5ZAtrUZba7fPLPSJH+GR+LMJgpPEe1HQaydpM5U7tuMYIZXbEFy asCothyys9i2RZZhFyVCj81Drvpkz9gacyeUr/jvl0hoS1CleY55fEwF8E8WPk0cKOv0 sORg8HAatggq0xkWtzia/vvfShLXpTpYyRWvqfOV+h5EHiB0i1/Fo7vDueHHoN9atOxV CzKg== X-Gm-Message-State: AOJu0YxU5uy8WE0+ObFp+9dEbiqY0C519dTP62p+p8YLv5xLKfTbZyeM YRc/OrlQ8lkGhbDhVgBWpO5kQ2R75XlImjViTPQ= X-Received: by 2002:a17:90a:7f8c:b0:274:6839:6a89 with SMTP id m12-20020a17090a7f8c00b0027468396a89mr8054307pjl.27.1695764358364; Tue, 26 Sep 2023 14:39:18 -0700 (PDT) MIME-Version: 1.0 References: <20230925200110.1979606-1-zokeefe@google.com> In-Reply-To: <20230925200110.1979606-1-zokeefe@google.com> From: Yang Shi Date: Tue, 26 Sep 2023 14:39:06 -0700 Message-ID: Subject: Re: [PATCH v4] mm/thp: fix "mm: thp: kill __transhuge_page_enabled()" To: "Zach O'Keefe" Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Saurabh Singh Sengar , Matthew Wilcox , David Hildenbrand Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 26 Sep 2023 15:17:55 -0700 (PDT) On Mon, Sep 25, 2023 at 1:01=E2=80=AFPM Zach O'Keefe w= rote: > > The 6.0 commits: > > commit 9fec51689ff6 ("mm: thp: kill transparent_hugepage_active()") > commit 7da4e2cb8b1f ("mm: thp: kill __transhuge_page_enabled()") > > merged "can we have THPs in this VMA?" logic that was previously done > separately by fault-path, khugepaged, and smaps "THPeligible" checks. > > During the process, the semantics of the fault path check changed in two > ways: > > 1) A VM_NO_KHUGEPAGED check was introduced (also added to smaps path). > 2) We no longer checked if non-anonymous memory had a vm_ops->huge_fault > handler that could satisfy the fault. Previously, this check had been > done in create_huge_pud() and create_huge_pmd() routines, but after > the changes, we never reach those routines. > > During the review of the above commits, it was determined that in-tree > users weren't affected by the change; most notably, since the only releva= nt > user (in terms of THP) of VM_MIXEDMAP or ->huge_fault is DAX, which is > explicitly approved early in approval logic. However, this was a bad > assumption to make as it assumes the only reason to support ->huge_fault > was for DAX (which is not true in general). > > Remove the VM_NO_KHUGEPAGED check when not in collapse path and give > any ->huge_fault handler a chance to handle the fault. Note that we > don't validate the file mode or mapping alignment, which is consistent > with the behavior before the aforementioned commits. Looks good to me. Reviewed-by: Yang Shi > > Fixes: 7da4e2cb8b1f ("mm: thp: kill __transhuge_page_enabled()") > Reported-by: Saurabh Singh Sengar > Signed-off-by: Zach O'Keefe > Cc: Yang Shi > Cc: Matthew Wilcox > Cc: David Hildenbrand > --- > I've updated the changelog to reflect discussions in [1] -- leaving > ack to David / Matthew on whether to take the patch. > > Changed from v3[1]: > - [akpm / David H. / M. Wilcox] Updated log to capture email disc= ussion > Changed from v2[2]: > - Fixed false negative in smaps check when !dax && ->huge_fault > Changed from v1[3]: > - [Saurabhi] Allow ->huge_fault handler to handle fault, if it ex= ists > > [1] https://lore.kernel.org/linux-mm/20230821234844.699818-1-zokeefe@goog= le.com/ > [2] https://lore.kernel.org/linux-mm/20230818211533.2523697-1-zokeefe@goo= gle.com/ > [3] https://lore.kernel.org/linux-mm/CAAa6QmQw+F=3Do6htOn=3D6ADD6mwvMO=3D= Ow_67f3ifBv3GpXx9Xg_g@mail.gmail.com/ > > --- > mm/huge_memory.c | 20 +++++++++++++------- > 1 file changed, 13 insertions(+), 7 deletions(-) > > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index 0f93a73115f73..797fe617e51ab 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -100,11 +100,11 @@ bool hugepage_vma_check(struct vm_area_struct *vma,= unsigned long vm_flags, > return in_pf; > > /* > - * Special VMA and hugetlb VMA. > + * khugepaged special VMA and hugetlb VMA. > * Must be checked after dax since some dax mappings may have > * VM_MIXEDMAP set. > */ > - if (vm_flags & VM_NO_KHUGEPAGED) > + if (!in_pf && !smaps && (vm_flags & VM_NO_KHUGEPAGED)) > return false; > > /* > @@ -132,12 +132,18 @@ bool hugepage_vma_check(struct vm_area_struct *vma,= unsigned long vm_flags, > !hugepage_flags_always()))) > return false; > > - /* Only regular file is valid */ > - if (!in_pf && file_thp_enabled(vma)) > - return true; > - > - if (!vma_is_anonymous(vma)) > + if (!vma_is_anonymous(vma)) { > + /* > + * Trust that ->huge_fault() handlers know what they are = doing > + * in fault path. > + */ > + if (((in_pf || smaps)) && vma->vm_ops->huge_fault) > + return true; > + /* Only regular file is valid in collapse path */ > + if (((!in_pf || smaps)) && file_thp_enabled(vma)) > + return true; > return false; > + } > > if (vma_is_temporary_stack(vma)) > return false; > -- > 2.42.0.515.g380fc7ccd1-goog >