Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp5209999ioo; Wed, 1 Jun 2022 00:07:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAkqRKxH2G73YXUo9cKn0xnBUK6v1q+SrEUjRQQD8dirRYbbKbMxhMve6ssOcfQCmg7P0l X-Received: by 2002:a17:907:94c6:b0:6fe:d71a:b721 with SMTP id dn6-20020a17090794c600b006fed71ab721mr41767803ejc.313.1654067273232; Wed, 01 Jun 2022 00:07:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1654067273; cv=none; d=google.com; s=arc-20160816; b=lCV720TGONiAQoCthTRe8553a20+IFghULAp2xiN28bcc3WUlQDc+8sW7KgOUiOajA TDZ1bLKdFlrZSHNs09RU1mjlGfAdQqtHDerfNDLtFm9QsGyBWweFpK7NS1StKfkTKdQi cuoU4Y9XVcQzViFGDtDSYZx02bQjTGp9qenCoT+kvHzSc1h7gkxv+++CX9kHpt36pxF9 shrywrjNP0wqWQROoRFmN90uBFsbcJsnLnMXUNWSLsNHRp1jofKEmi/3/azKdod45zSM +jmaSGB3HhAzkRoqjqDNRaHDCxcWHIe0MO3bx+fRensi0wOpZSPbrPTh2SjAd4/JP7HS TfiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=qtShy+gXTM5c8a8846yJ1mSpmrTSFyjIFJTOvdhy/28=; b=FP4ARjfXsbnFhDseir4sitzh0ton03S/BPDOcjPkU3HNpjszFov3J/s2Xyky804pyl AnQoWrnjnwYXk8N1EGwbTs1+b1Oyi34HkCuGSjXxBZJRb+h3NonXHGnfK+3Bggl+N8Sc NkD7uwmj93YHcD6wpIx3eKZl3xP7Tx/yYqyiE5zjBvNokqYQ4bqnLeQKV6mTa4kCoVxO hq4EwNHGkyO51BJFtTL9EGdvDa1E8UnA1opGHOswu9m22xdEmnLbKtMg1m4xF92dD/hs 2Y7/4ReMeUfLMqb0MHnl/XBmLD13TczFhBtD4oYxY/iaqFO6CJuTVdrgdLJJSNB7cqYu jixQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="d10fl/mP"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gt12-20020a1709072d8c00b00702f3cc1da9si1164030ejc.902.2022.06.01.00.07.25; Wed, 01 Jun 2022 00:07:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="d10fl/mP"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243809AbiEaEY5 (ORCPT + 99 others); Tue, 31 May 2022 00:24:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243803AbiEaEYy (ORCPT ); Tue, 31 May 2022 00:24:54 -0400 Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C64BD76297; Mon, 30 May 2022 21:24:52 -0700 (PDT) Received: by mail-ed1-x530.google.com with SMTP id v19so8541188edd.4; Mon, 30 May 2022 21:24:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qtShy+gXTM5c8a8846yJ1mSpmrTSFyjIFJTOvdhy/28=; b=d10fl/mP42dBnwzHZoDPefbOmO6etVC+VFrYUXy8o8yi0+bFA5bhcoZ8MRAvLHrBsK Ksg1c0QfsqTYfOqA3H4rYcX6L/kXdzHOcbcmT5DMz4b8FrpBht45C5FjrGHC0jL+ncPG 0aBV8XN5o5SgdxzyqNaVnxQ9mI88BmRoOWukvo5Mbu0ckoG7zM7uKA3nKrvY4fiXZjTc oc+rINAavcU4V1cvggi5bkl32PtaFpsiFIc/ph//lZ9xFLvjOSahoXyDWGbzn+xEjDKs gFFD+KZCshw7oF+IviBmmB1hfviV7fw+FpE6j+4l1hCZ3UOmzyDXMY7RYanLi1nwrzEx ukmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qtShy+gXTM5c8a8846yJ1mSpmrTSFyjIFJTOvdhy/28=; b=LWnqs9uHFrsOFqXPIBRRaFUId4fMqAYuqVhZsFAxKSGPKMHhstSHUHb4DLeJmHWKoJ IZj1aT3o+BFBxKFcPsVF55Bo7epTdNxja8BbbCxXnG7mwc3rIuEPBtWrCUlnHLPze8mM QCBvgAAfI7t/4zkKq9EEUQY9Q7XKjYkOrRL3mTHovIq5ZIuMFK3SFz0GmTJnSKBjyn7t 2nQ/GioGWgQSirOns1AGYnO5kSOEZS0MYNq0H+8qeoYn6ozVNl2fet2rAn3d+5028fLT jYyU0vabzw2MTL/0Vl/LBL13/V6KCXw9J6jH0l7YQfAErgJuqv8ECvTSYVKdbXM0Ep7B vm2Q== X-Gm-Message-State: AOAM530aoF20CciLsKhM2W93HSDAbux1Bf/mY2m+LmuXNnkxS0vtAR0i o+xTq0txM/jejSiixAGEB9YQxSkQYDQ3B/fgheE= X-Received: by 2002:a05:6402:b09:b0:42d:bd80:11ac with SMTP id bm9-20020a0564020b0900b0042dbd8011acmr14464509edb.244.1653971091286; Mon, 30 May 2022 21:24:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Tue, 31 May 2022 16:24:40 +1200 Message-ID: Subject: Re: [PATCH v1 09/14] mm/mshare: Do not free PTEs for mshare'd PTEs To: Khalid Aziz Cc: Andrew Morton , Matthew Wilcox , Aneesh Kumar , Arnd Bergmann , Jonathan Corbet , Dave Hansen , David Hildenbrand , ebiederm@xmission.com, hagen@jauu.net, jack@suse.cz, Kees Cook , kirill@shutemov.name, kucharsk@gmail.com, linkinjeon@kernel.org, linux-fsdevel@vger.kernel.org, LKML , Linux-MM , longpeng2@huawei.com, Andy Lutomirski , markhemm@googlemail.com, Peter Collingbourne , Mike Rapoport , sieberf@amazon.com, sjpark@amazon.de, Suren Baghdasaryan , tst@schoebel-theuer.de, Iurii Zaikin Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 Tue, Apr 12, 2022 at 4:07 AM Khalid Aziz wrote: > > mshare'd PTEs should not be removed when a task exits. These PTEs > are removed when the last task sharing the PTEs exits. Add a check > for shared PTEs and skip them. > > Signed-off-by: Khalid Aziz > --- > mm/memory.c | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index c77c0d643ea8..e7c5bc6f8836 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -419,16 +419,25 @@ void free_pgtables(struct mmu_gather *tlb, struct vm_area_struct *vma, > } else { > /* > * Optimization: gather nearby vmas into one call down > + * as long as they all belong to the same mm (that > + * may not be the case if a vma is part of mshare'd > + * range > */ > while (next && next->vm_start <= vma->vm_end + PMD_SIZE > - && !is_vm_hugetlb_page(next)) { > + && !is_vm_hugetlb_page(next) > + && vma->vm_mm == tlb->mm) { > vma = next; > next = vma->vm_next; > unlink_anon_vmas(vma); > unlink_file_vma(vma); > } > - free_pgd_range(tlb, addr, vma->vm_end, > - floor, next ? next->vm_start : ceiling); > + /* > + * Free pgd only if pgd is not allocated for an > + * mshare'd range > + */ > + if (vma->vm_mm == tlb->mm) > + free_pgd_range(tlb, addr, vma->vm_end, > + floor, next ? next->vm_start : ceiling); > } > vma = next; > } > @@ -1551,6 +1560,13 @@ void unmap_page_range(struct mmu_gather *tlb, > pgd_t *pgd; > unsigned long next; > > + /* > + * If this is an mshare'd page, do not unmap it since it might > + * still be in use. > + */ > + if (vma->vm_mm != tlb->mm) > + return; > + expect unmap, have you ever tested reverse mapping in vmscan, especially folio_referenced()? are all vmas in those processes sharing page table still in the rmap of the shared page? without shared PTE, if 1000 processes share one page, we are reading 1000 PTEs, with it, are we reading just one? or are we reading the same PTE 1000 times? Have you tested it? > BUG_ON(addr >= end); > tlb_start_vma(tlb, vma); > pgd = pgd_offset(vma->vm_mm, addr); > -- > 2.32.0 > Thanks Barry