From patchwork Tue Apr 2 07:32:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Barry Song <21cnbao@gmail.com> X-Patchwork-Id: 13613508 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3BAECD1293 for ; Tue, 2 Apr 2024 07:33:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 446A46B0098; Tue, 2 Apr 2024 03:33:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F4866B0099; Tue, 2 Apr 2024 03:33:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 295646B009A; Tue, 2 Apr 2024 03:33:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 0B6FF6B0098 for ; Tue, 2 Apr 2024 03:33:20 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 8EF3AC04C8 for ; Tue, 2 Apr 2024 07:33:19 +0000 (UTC) X-FDA: 81963776118.25.C68D400 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) by imf08.hostedemail.com (Postfix) with ESMTP id AD895160018 for ; Tue, 2 Apr 2024 07:33:17 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="jOdV/n6S"; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.181 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712043197; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VVdqk/euRe/6YNu7J/p5kBNan1T8d3Q5WxOyEpgBot8=; b=UJc9zIm4/Cp+a7iHssqW9Ya4GCjoeGl4fIBinAcXwTiigHW+fYmVDpvexo3EorRqZNtknf Yws6WOX8Hl0SKY5Ylt17no1xKMcRuY9SwM5cds9vzMtnep/6PysnUzQFWXlqrvIp3sQDi8 bsEPNcmUqLQKxUkU82kvw2QOTTzosjc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712043197; a=rsa-sha256; cv=none; b=HWBuBWIdzQW8JSn9hQ/8xe4OjJ0u6crbdQsaCUv0JtCFd0oxzn+CD+bwZNG4zrFH16X1kh RqnyYo7tp1KPLxxqV6C6SL4wQSPjaxwsiWjmX6Mt0KvUgrSnQSQYOAbo4Iwd171VSjSXan gWI71ubL5/8EgFMe/knPAUHOJELuQmM= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="jOdV/n6S"; spf=pass (imf08.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.181 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-6e6b22af648so4122400b3a.0 for ; Tue, 02 Apr 2024 00:33:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712043196; x=1712647996; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VVdqk/euRe/6YNu7J/p5kBNan1T8d3Q5WxOyEpgBot8=; b=jOdV/n6SBnd3YksFI/wnBHcolU7RiDnnBgkroE4FaKctqSczCdx/8kLVbLaqBcUFIj 051bvwnvqBNiVnHCA70JVS0icfKVkx+nyduCbD8WFZUfXUhRfxqWNVEHwKgltmfczNql z5A4v0yB6aZzmeJRMuBouXZ2X0Oh0t7iCnIj6twZEkDV8UczRiUGikB9xSxJnu0zPf9P wtyi6tyA+dlNqJO1MJgbhyqvFeVOR7zcQjei9JQeOF1WAJ9M8UTdGPJ9GJ2PLM1duSiZ 1NqTtlt/KKg1w1SMlNvceq0f5euRqDM1xeEYrkvrcqWYNPVbwhUR8G4cIFpN/ruqksUf IgAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712043196; x=1712647996; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VVdqk/euRe/6YNu7J/p5kBNan1T8d3Q5WxOyEpgBot8=; b=f4lSH7oxxJA5zu+lXwydn8eHQSft++xMgeigwLxr6iSN3fS1MTaxFcGT0UrlwqeUWs owlvOi+VFRhbxdlN42T5gJy1lGg2ZIAuDLgC79Bwyx44bZZsvmO30lxZ4H2WxGM1Sxg+ 1Ov12VPgO0MHZk2Nw66sCWyxWhPthlUZnN70Y3tOVW9xYqXY9E79EYEeq9Q/uF43zeH7 ZAAtWKHesnKiqV0ZhjpsATW/fMTOMpdJBd1c3WvdHVktFgajZDq4mNEF0zKGjBC3NVMB QlyNX3P0Egn1MdE4We/ujlg2T+r+rCdpXgEUFtSkFJGoUxyQ0Uc8KxNbAK6fAn/A6Usm UIEg== X-Forwarded-Encrypted: i=1; AJvYcCVPKn73ThjpDG4Gel3HDYKNsJ0MLcVCzaPiIKC3vFxnVfR8Bze4FyYSDS7qOtMxUp8F9bTAmc/c5aiyJ9IzupdyG0A= X-Gm-Message-State: AOJu0Yy1INiPRAVLKt/F3cPQx4hNJ38WL8WzecL1U+AXkzc/Ou7e5IuF XSlXOVui9aQjVHvmdcWU78Qy2irk45B36Q07L3Us6g+eFY/2RCJb X-Google-Smtp-Source: AGHT+IHjqcwqXBgyea3FcZfcTEPqa/n4oleP8gsVIrG7pfCassAxs0TZG0eP0GNwLl26jpY0q6OzTQ== X-Received: by 2002:a17:903:22cf:b0:1e0:73d:9172 with SMTP id y15-20020a17090322cf00b001e0073d9172mr22662352plg.23.1712043196476; Tue, 02 Apr 2024 00:33:16 -0700 (PDT) Received: from localhost.localdomain ([2407:7000:8942:5500:aaa1:59ff:fe57:eb97]) by smtp.gmail.com with ESMTPSA id x15-20020a170902ec8f00b001dc9422891esm10187588plg.30.2024.04.02.00.33.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Apr 2024 00:33:16 -0700 (PDT) From: Barry Song <21cnbao@gmail.com> To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: david@redhat.com, willy@infradead.org, ryan.roberts@arm.com, yosryahmed@google.com, hughd@google.com, hannes@cmpxchg.org, surenb@google.com, xiang@kernel.org, yuzhao@google.com, ying.huang@intel.com, chrisl@kernel.org, kasong@tencent.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, hanchuanhua@oppo.com, Barry Song Subject: [PATCH 3/4] mm: swap_pte_batch: add an output argument to reture if all swap entries are exclusive Date: Tue, 2 Apr 2024 20:32:36 +1300 Message-Id: <20240402073237.240995-4-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240402073237.240995-1-21cnbao@gmail.com> References: <20240402073237.240995-1-21cnbao@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: AD895160018 X-Rspam-User: X-Stat-Signature: zhiww9p9ywep9bsrjfs1dstqmqtcd7z6 X-Rspamd-Server: rspam03 X-HE-Tag: 1712043197-514031 X-HE-Meta: U2FsdGVkX1/Dk+bH1LVKMRo6RlTbXGezrngRCUeDjJo9u4BRpltTYomBp6xjP60dlL4dkEcnYJ+9Hefe/edEFUGAdii6ZFiuTxAP1IdsPcAUSd5UTxZxavcTEb1yHxF+CQ5r9vJnHSPt8CG89vyXpKGf9IHdyw6CZjIfoxNX4z867SMMqyl1WJA5HVBS9CtLqihqohYPc/9dWSobMHPKo9Ki2Pylb6HOO0V5I5Pf0A+9FOlzJiQkQli8K2kO5mxWW/FhIj0skTekcjkT/Hw8i0ujlSmmjhI2WIbbbFeeqKwrtG9SKqDH5Ona8ymT1jYUFvkXmrjhALiMjPtBo+pxijUs0jQvbtNXC2TdwYQlKLhhQOBEhJlQoxHzgYMPcNHhnWhTNyGv9mixq0c+7yG5HLK96c7wm0hNAkzeh97UN/OEOOqSozYRFLQ91DTLv91EprfoAvOdIijgTPbOgr+ix4r46ffMnnIX2qi6yb890C6fUDOBvhaN6qLZ3Qsx2KhXLJh0aAc7uAR/vb1TRJFj26ab5Mx3R9OFqFpsAm+uqYQV9lyGyu8VDAC+kdkfGgiXbKMVmePUfewKcmIShLp4wEiw+jwAvw0RGqk82hpxRshGLCmXIBZ3C2npTxebm8edCx7ZBezLtWjBI5eH3UXbAjauI/E7xRtnj6dyLG6uDsMI/lkTNmvTb4oBUm0PYVGvaJs764SYL31z5E9pZcCW2eOYbRuYnmBZjZqxTf3H573GZ98UXo/j8YHMr4ylXOLlObAfVxwO5nJw9iG8gdVgdIVSngc4/IeglK97VtwTGnLqgkUOLWn0FZ1BzTykV2vkH4toNAkwPyz5nQbswXtzsAc6HR3GQdtl0hJSbjo3YUSBbxbccGnqVZ+m4n4LNroRtpmqHe4s366J4bxKC/h093w1/joP+qmisvncxZeRUa+nihnLqa+gEEHtPU2AsObIwCYQ53eRk8oQf5T4dWC tlRPJiYz DRITTObTNlqYvNMg21/IbXqbSRBj7AISE4db8g0C+SVUe27REk5hWCkrp4KCdBfqU7oU58I2xjEN1Mim+2wEPAQHlEdR/d9p4/SFyFH3xoPlBC4rP+CQ51ghniBDemfgAjBIKjifLAMez9hrYPETUFeoxv2SQFc5W1jdQqdmNpSRmwP/jUKCpEtrMjAXGpjUDw3N22OFxJ+pGgWvJ8i3IRwckCG/T8K3umzvmplm7xdOUcccWATELfcOf1dF1UDRqWHM7+xl/VfHCSczKgB/AMTWKjHFQ7k1Xajo3/29fK0idymCvMLSNXCr0L7trNKF1EY2OjW5M7/c63Mp5EjHqZEIiZ72WdtP2ilwkj2qjy2x1PZycSzUVdDpus2s9JW2BDhodzk6mMR5IB866FwBMdzYwNmoFJLsUemdOED1HxBfivZCuCkjLHqzG1acGxCAjPZBnfLxcIRPio36Q3RJgOli3oiJhtZR6TQaXPaivQbgn6liZFDUHAjDbUZINOVqcGSeWzFczrqNkNO+hBbPdqPptvG7CXiJYde3OA4WZrcghPOTqQECrp9fWESjDRnmVhwqT 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: List-Subscribe: List-Unsubscribe: From: Barry Song Add a boolean argument named any_shared. If any of the swap entries are non-exclusive, set any_shared to true. The function do_swap_page() can then utilize this information to determine whether the entire large folio can be reused. Signed-off-by: Barry Song --- mm/internal.h | 5 ++++- mm/madvise.c | 2 +- mm/memory.c | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 9512de7398d5..ffdd1b049c77 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -216,7 +216,7 @@ static inline int folio_pte_batch(struct folio *folio, unsigned long addr, * Return: the number of table entries in the batch. */ static inline int swap_pte_batch(pte_t *start_ptep, int max_nr, - swp_entry_t entry) + swp_entry_t entry, bool *any_shared) { const pte_t *end_ptep = start_ptep + max_nr; unsigned long expected_offset = swp_offset(entry) + 1; @@ -239,6 +239,9 @@ static inline int swap_pte_batch(pte_t *start_ptep, int max_nr, swp_offset(entry) != expected_offset) break; + if (any_shared) + *any_shared |= !pte_swp_exclusive(pte); + expected_offset++; ptep++; } diff --git a/mm/madvise.c b/mm/madvise.c index bd00b83e7c50..d4624fb92665 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -672,7 +672,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr, entry = pte_to_swp_entry(ptent); if (!non_swap_entry(entry)) { max_nr = (end - addr) / PAGE_SIZE; - nr = swap_pte_batch(pte, max_nr, entry); + nr = swap_pte_batch(pte, max_nr, entry, NULL); nr_swap -= nr; free_swap_and_cache_nr(entry, nr); clear_not_present_full_ptes(mm, addr, pte, nr, tlb->fullmm); diff --git a/mm/memory.c b/mm/memory.c index f6377cc4c1ca..0a80e75af22c 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -1632,7 +1632,7 @@ static unsigned long zap_pte_range(struct mmu_gather *tlb, folio_put(folio); } else if (!non_swap_entry(entry)) { max_nr = (end - addr) / PAGE_SIZE; - nr = swap_pte_batch(pte, max_nr, entry); + nr = swap_pte_batch(pte, max_nr, entry, NULL); /* Genuine swap entries, hence a private anon pages */ if (!should_zap_cows(details)) continue;