Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp172786iob; Tue, 17 May 2022 22:44:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyBNmvU78FfFE4ubjrXIUmSWWG9OaN/2Qb933dkLi2YvixzxXPmMx7je5pLheuq6z3Dj5Xi X-Received: by 2002:a05:6a00:e8e:b0:518:287c:ce82 with SMTP id bo14-20020a056a000e8e00b00518287cce82mr1746815pfb.4.1652852679655; Tue, 17 May 2022 22:44:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652852679; cv=none; d=google.com; s=arc-20160816; b=sWJUr0c8DWCdhFgxHeXb/SR+bUJIOIupGSKMhUbosOzMes0ejO7cyUyajcXOtf2dSc 50QMyAOf5SgCQ4/dov9whdM29UIdNdrMAMY7Dgpb2Duk3fCB/oXmGBx0dsaeM+RfMQnk SGl49fVjSwLhlilntLRjScGvrYAgxSz0XZ4qb65VgPjOlhC12josDliPmk+IvETbrdAJ 2j+ERiXi3pYsCs3gNXgqkGM4w+Xm8f/iVgcCk1voRQFDCu30jbfNWoV0j7BnJ4VRf1+8 pR7ERUkX5MzzMitZjcjfY7RkVwxzamn0PZaDh0KGn8eQEsrwy6MjojEkPkIIBstSXs56 NEqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=9kEkRsbbLsq2qV20KhrtybMkQdykLU0YNEuC/iZp52Q=; b=QW74T5818vWaho5Z7cVlc9S/SpwgD348WggPeRaCMOP46NR6l3sxlmrbO13+pj78zr cEP9zoxKKYRRNQOlLy8Z5C0hnUeiQOfenMo0pfLIFJy6+x7oKiEaC/28PE/rZJOaAoDd 27Q8OczJ4FP+7gw4gwq2oINJrS4s1lAw/GKQmntB6I4RiqrE0iywaNI2yp+hwFOwIXrp RWhl3nf6UhlzZEREPPSQStYjFXNQ5BNcIfWOlo1or+pjwIQ1Fm0g1GFFkQgYT9VCR/CL NhDlNwMOoVIau22BldluV8jGU10QMaB4+lll+zws/LF2Q/Xqpd67Fb7WRMZCcR1TZ9Dk pPdw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=g3ld8fRu; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id h27-20020a63211b000000b003816043f0f2si1363436pgh.743.2022.05.17.22.44.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 May 2022 22:44:39 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=g3ld8fRu; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1F10B1CB27; Tue, 17 May 2022 22:31:51 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230274AbiERFbm (ORCPT + 99 others); Wed, 18 May 2022 01:31:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57886 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230282AbiERFbf (ORCPT ); Wed, 18 May 2022 01:31:35 -0400 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A632313E9D for ; Tue, 17 May 2022 22:31:33 -0700 (PDT) Received: by mail-pg1-x52d.google.com with SMTP id h186so1194781pgc.3 for ; Tue, 17 May 2022 22:31:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=9kEkRsbbLsq2qV20KhrtybMkQdykLU0YNEuC/iZp52Q=; b=g3ld8fRujihoN2eknR81U31G0FS+U73zYUSpmkf3drtwft6xCz09BWP5LHGh21RXHM ZqMqDENux59/5mX5V3SKbj4OgNfOR82SIerS4igN9GirjvkWmFEOPxXZxJaGWj4Abein 4G5MQewmtTkjQyn6q0YPmUrm/jgXpQMfcrB9sshsTB84rkSscWZTQ7FRXErBkfE/5LY7 69qMmHhS81MFeUam+P6BcV/1bsgMlTXNe7d17BaPewtAn4hdKqBi6tYpaI/EQI5RddlD qAery9se8TulsXXoZMHQluAoLgj4AG9Kl5+tQbAUy4NRdDPGs0fn61jYIuKJcnzJQ/fM xKKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=9kEkRsbbLsq2qV20KhrtybMkQdykLU0YNEuC/iZp52Q=; b=bGyPkc3LENFfNKE6Eh+rVhJJxYqsLIYYSeJ3o5a2uJMZddkndCGNUDg3hKQUSHD8m2 UYSmNfO0BsbVskKffSB1TG1onF/nVMGvwabBrs+/eXhg8fJXKfpMU7W9Nur1Hc81Jg9/ h2xaGRmIW1yw1V+JQVZJspvpDnOjLofB73hpKo0VwkgbEvtSP8TSgPcA5EMGnFWGkem3 WwMAPEc99SPuWzNKDrat6XIIB0sWKu1f+8/854j2vviwoS71ujW3NkOeo6O6NwSRyE68 p0kvwzWnHOY9CjQPsvD5HLoI49v1g+/f8iruikNf7sVFE+PVffWnVVRO/vQZPkUMUNiu yf8g== X-Gm-Message-State: AOAM533575fXgiIPAqMuwpLG17MGgipCN03LZailogSuLX5mc+N1G06Z xfO6QiC3TIdqUC14f/khGo7miA== X-Received: by 2002:a63:2048:0:b0:3db:7de7:34b4 with SMTP id r8-20020a632048000000b003db7de734b4mr22634662pgm.105.1652851893176; Tue, 17 May 2022 22:31:33 -0700 (PDT) Received: from localhost ([139.177.225.234]) by smtp.gmail.com with ESMTPSA id in19-20020a17090b439300b001cb6527ca39sm2666824pjb.0.2022.05.17.22.31.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 May 2022 22:31:32 -0700 (PDT) Date: Wed, 18 May 2022 13:31:29 +0800 From: Muchun Song To: Yang Shi Cc: willy@infradead.org, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [v2 PATCH] mm: pvmw: check possible huge PMD map by transhuge_vma_suitable() Message-ID: References: <20220513191705.457775-1-shy828301@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220513191705.457775-1-shy828301@gmail.com> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 13, 2022 at 12:17:05PM -0700, Yang Shi wrote: > IIUC PVMW checks if the vma is possibly huge PMD mapped by > transparent_hugepage_active() and "pvmw->nr_pages >= HPAGE_PMD_NR". > > Actually pvmw->nr_pages is returned by compound_nr() or > folio_nr_pages(), so the page should be THP as long as "pvmw->nr_pages > >= HPAGE_PMD_NR". And it is guaranteed THP is allocated for valid VMA > in the first place. But it may be not PMD mapped if the VMA is file > VMA and it is not properly aligned. The transhuge_vma_suitable() > is used to do such check, so replace transparent_hugepage_active() to > it, which is too heavy and overkilling. > > Cc: Matthew Wilcox (Oracle) > Cc: Muchun Song > Signed-off-by: Yang Shi > --- > v2: * Fixed build error for !CONFIG_TRANSPARENT_HUGEPAGE > * Removed fixes tag per Willy > > include/linux/huge_mm.h | 8 ++++++-- > mm/page_vma_mapped.c | 2 +- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h > index fbf36bb1be22..c2826b1f4069 100644 > --- a/include/linux/huge_mm.h > +++ b/include/linux/huge_mm.h > @@ -117,8 +117,10 @@ extern struct kobj_attribute shmem_enabled_attr; > extern unsigned long transparent_hugepage_flags; > > static inline bool transhuge_vma_suitable(struct vm_area_struct *vma, > - unsigned long haddr) > + unsigned long addr) > { > + unsigned long haddr; > + > /* Don't have to check pgoff for anonymous vma */ > if (!vma_is_anonymous(vma)) { > if (!IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - vma->vm_pgoff, > @@ -126,6 +128,8 @@ static inline bool transhuge_vma_suitable(struct vm_area_struct *vma, > return false; > } > > + haddr = addr & HPAGE_PMD_MASK; > + > if (haddr < vma->vm_start || haddr + HPAGE_PMD_SIZE > vma->vm_end) > return false; > return true; > @@ -328,7 +332,7 @@ static inline bool transparent_hugepage_active(struct vm_area_struct *vma) > } > > static inline bool transhuge_vma_suitable(struct vm_area_struct *vma, > - unsigned long haddr) > + unsigned long addr) > { > return false; > } > diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c > index c10f839fc410..e971a467fcdf 100644 > --- a/mm/page_vma_mapped.c > +++ b/mm/page_vma_mapped.c > @@ -243,7 +243,7 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw) > * cleared *pmd but not decremented compound_mapcount(). > */ > if ((pvmw->flags & PVMW_SYNC) && > - transparent_hugepage_active(vma) && > + transhuge_vma_suitable(vma, pvmw->address) && How about the following diff? Then we do not need to change transhuge_vma_suitable(). All the users of transhuge_vma_suitable() are already do the alignment by themselves. Thanks. diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c index c10f839fc410..0aed5ca60c67 100644 --- a/mm/page_vma_mapped.c +++ b/mm/page_vma_mapped.c @@ -243,7 +243,8 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw) * cleared *pmd but not decremented compound_mapcount(). */ if ((pvmw->flags & PVMW_SYNC) && - transparent_hugepage_active(vma) && + IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) && + transhuge_vma_suitable(vma, pvmw->address & HPAGE_PMD_MASK) && (pvmw->nr_pages >= HPAGE_PMD_NR)) { spinlock_t *ptl = pmd_lock(mm, pvmw->pmd); > (pvmw->nr_pages >= HPAGE_PMD_NR)) { > spinlock_t *ptl = pmd_lock(mm, pvmw->pmd); > > -- > 2.26.3 > >