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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62106C48BF6 for ; Tue, 27 Feb 2024 01:21:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B9C346B00EF; Mon, 26 Feb 2024 20:21:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B4D0344017F; Mon, 26 Feb 2024 20:21:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9EBF66B00FA; Mon, 26 Feb 2024 20:21:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 8AD346B00EF for ; Mon, 26 Feb 2024 20:21:53 -0500 (EST) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 381A280A2B for ; Tue, 27 Feb 2024 01:21:53 +0000 (UTC) X-FDA: 81835832106.06.F6FAEB8 Received: from mail-oi1-f173.google.com (mail-oi1-f173.google.com [209.85.167.173]) by imf10.hostedemail.com (Postfix) with ESMTP id 91175C0012 for ; Tue, 27 Feb 2024 01:21:50 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NG2Vdc5H; spf=pass (imf10.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.167.173 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=1708996910; 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=4bXxNqwNbJD6O5GdbT9Dy1UrrTpDaUAcZ2ZskrOJNpI=; b=JmsMQ68ndaV1I8tgNn+I9OPH0TDtxzS4YGBfycvcPzAZXM5Z8Jm3qSr65fWsWtA2PrQWRJ ayY0h3G6EC0DwXLmGivsZKuPtfp6xoa0GLtXuq3y1/8TPFi6IGDHF7uxzEJrYOZO5InYUv Wx2BlLD+OC7jRFW3Rj2woQr6a/Rhz0Q= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708996910; a=rsa-sha256; cv=none; b=JXPZ78NLA8sFcZvnUS+RjlD2fi3UBzCUHXAanx5f1AS71HCNphnQXsw4JeuX/Hsp0yG4hC eSgG82PnTNcc/bdC0xL4zDJnmkH4Bq/6o7sjEC8q0okfYax965o8hpV6pWjvkG2ABuSN+a RZIDl+ozvwTRRHF6Mw0uCbJzOjDB0Ak= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=NG2Vdc5H; spf=pass (imf10.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.167.173 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-oi1-f173.google.com with SMTP id 5614622812f47-3c19dd9ade5so715780b6e.3 for ; Mon, 26 Feb 2024 17:21:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708996909; x=1709601709; 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=4bXxNqwNbJD6O5GdbT9Dy1UrrTpDaUAcZ2ZskrOJNpI=; b=NG2Vdc5HRGIErkNxPQvMGpSGfHfJFEqBY63yNQRH5/A0DuG57S+fxrC8B5wOfZ82h6 1dKzObiFBvyiSI026wu+/tZEPPNqN2g2pbppb7JvjTyJKj1EIdexwP5ct2oegR3qD6a3 75WueHbNBpNMmJb0bDllGAoFvufWnVvlo8crHGzuGzudCZjxjAaeFTeMUaijmR+PZJqC iNET4nHTarxQNfuPb1GgtAa3Ggplt/jQwPJ8gFp24+i8U56OvHhsCbYS5jiT0gqh6MIZ assgvJ5tez6/lc++0i4vVCG3StnFbMl15UDKrz3ymhgTfC0rJZNgAN/fG6yVNiK7MtzK 28Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708996909; x=1709601709; 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=4bXxNqwNbJD6O5GdbT9Dy1UrrTpDaUAcZ2ZskrOJNpI=; b=PljwFeo3wQy0tLnRJiH9sxC4Y4w674fWOAbP3m1B+CUcOX4P+f9p5mi2MkVHGll44N RMxMNsyP0X6nxl+p5LH6tcgxTyqJF92ZNSmOOLd0jWTS+1c6Ke5kokxmkpCMSVKftHdA xxQQKIedefCplbsno3YstG40ZzEpiw+OdHTbgYV+vBbfl43bT99xvXdBAJVr2SuQyYBg tmt6QMNe1NmHy7GrGJV3WGsy0s5NjZj4k2rno3Q9qKH6bqRe2uiUVHl1t0Kqh2MiXldZ lV2hh4W20akCeprwQjz/ruU9zCPu3K/dzaJR5fA53UZSt50Q76foa1BhwztCtF60ysMM 8pDg== X-Forwarded-Encrypted: i=1; AJvYcCWLHqIpjQ8V/pt6SCMc6MLQ/X5rIEaMFKOKEmnWxVOs5CIfhKZNngw9I/mlLxPXWuEtZ8q4LfNKkfxXY7/HznXmvvc= X-Gm-Message-State: AOJu0YxH5olCtmSKmKC6ZhuQHbp0S9y0LtDJfxkZwgesdRuFhrXE59/0 D9VFxQbQs+fc4X9StdB9jMwRQLpU5YDAstfEKhx0RwQ8M53YW0x7 X-Google-Smtp-Source: AGHT+IEAFbS0ijHradPh292tBUy4SUWjp4a7H3ckhLynTw9fXePax/uKvPyiULegyBA1S8XpT1d6dQ== X-Received: by 2002:a05:6808:d48:b0:3c1:1398:9eca with SMTP id w8-20020a0568080d4800b003c113989ecamr969656oik.28.1708996909531; Mon, 26 Feb 2024 17:21:49 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:fae4:3bff:fecb:410]) by smtp.gmail.com with ESMTPSA id hy11-20020a056a006a0b00b006e146124ae7sm4733847pfb.186.2024.02.26.17.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 17:21:49 -0800 (PST) From: Barry Song <21cnbao@gmail.com> To: ioworker0@gmail.com Cc: 21cnbao@gmail.com, akpm@linux-foundation.org, david@redhat.com, fengwei.yin@intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mhocko@suse.com, minchan@kernel.org, peterx@redhat.com, ryan.roberts@arm.com, shy828301@gmail.com, songmuchun@bytedance.com, wangkefeng.wang@huawei.com, zokeefe@google.com, Barry Song Subject: Re: [PATCH 1/1] mm/madvise: enhance lazyfreeing with mTHP in madvise_free Date: Tue, 27 Feb 2024 14:21:27 +1300 Message-Id: <20240227012127.174048-1-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 91175C0012 X-Rspam-User: X-Stat-Signature: 6419asrxdett4qsroixgrautec8n6ik1 X-Rspamd-Server: rspam03 X-HE-Tag: 1708996910-684984 X-HE-Meta: U2FsdGVkX1+QcVUonRwB52pOOVKWjdcdpcVY2pFhtD5vsTCbbltKpltU5QbdAhzjntRXRqB0w0pPkfdB9VT8b9zinWDdnXOdfqryzGPcwY727nZJQOJho2JBAQagoIDsrItq3lSDSq9Zj89sKK11vX/3smZAJqTydYHUA9krmEN+eD/bjtINBuv6ipP4D4KEAEG91hJ7AeRFZ3Syl/O+BzSUc+YmQ3VodRaDX0Gxr0bgVEer4TY3QAIGvVc/DVlSXHcbiPI5aWuNqxmqltQFLmO21z6CuWqpgPs/bMZZnhYNfpBwFBcijQE5xYwopGlayLS5r3vjEVh+4/IWU7zdmDOZzjZne463ojhQP+p4YeVBT0QRDHP3mC9UHAnD4UWBVHH+yG+aqxQdebeWhgzKirJJIHCmuX/PHxNYSCJZ34Ot0ywNmKx0hBtg5LNBA4UBbY8lHBMzl8mCUNrYyp/J4VTtGaFO6nkBSMkcD/ea1dT152mCU1eWDYKLQ/tDlNgUh46l6Vi3Kyo3HCATlgfR17TgOajjCqt4pxkyTh9WAtt0P5gImpZ5hTNA79G0hkbFjqafh2mOVwncfgqY8GgnIU32zfGXGuabjOzLumt07neqZjbXvAd6h1zghVL/gxGoQPwc/k1coriUCIopNJSTyMX0NTC/AdzSK47JpKqBk3XVX+Mw0Bua2zV7mIXh38hAnl53pl6zU5Fqay9aBYk0VunGx2s+PP6fp9pC2zW5RBq8MU/1LB2isy5zx4iOKHceBNlzWnnbn11bP/oVXFRW81p0g5krBfqN8ogn1omSWhWb0EO6x0N7oLKNadb+tYxkwBdGIEg+tBgX/v6vys6P7Lio174swXwp8L2olG9LLhVw9NX5EdeA45wKIp+yJKN066kWgeDF/FP+BTxc6GuvORet2JnMtKVkk/OFeSWDYLqEhqijOCLlzcDf+kk7TL3igJbpFwbvYe25Thnnpx1 NsC76s7w ODpwTTR2kP2MY1cGqbBp0OkFx0SZeddsB3sinVzcEEHZ5TU0CoTOjVDajvXsG5IuKdHiNcpw1O7v6R8+WgjAJqS/cXe30o24vrxNY+Zys/OXV2nc4+eO6VDFqYy7P5d9ulPMBd85Bi6KzBmozC+1IYAVbTeQEXykBcLNX 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: > Thanks for your suggestion. I'll use folio_pte_batch() in v2. Hi Lance, Obviously, we both need this. While making large folio swap-in v2, I am exporting folio_pte_batch() as below, From: Barry Song Date: Tue, 27 Feb 2024 14:05:43 +1300 Subject: [PATCH] mm: export folio_pte_batch as a couple of modules need it MADV_FREE, MADV_PAGEOUT and some other modules might need folio_pte_batch to check if a range of PTEs are completely mapped to a large folio with contiguous physcial offset. Cc: Lance Yang Cc: Ryan Roberts Cc: David Hildenbrand Signed-off-by: Barry Song --- mm/internal.h | 13 +++++++++++++ mm/memory.c | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mm/internal.h b/mm/internal.h index 36c11ea41f47..7e11aea3eda9 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -83,6 +83,19 @@ static inline void *folio_raw_mapping(struct folio *folio) return (void *)(mapping & ~PAGE_MAPPING_FLAGS); } +/* Flags for folio_pte_batch(). */ +typedef int __bitwise fpb_t; + +/* Compare PTEs after pte_mkclean(), ignoring the dirty bit. */ +#define FPB_IGNORE_DIRTY ((__force fpb_t)BIT(0)) + +/* Compare PTEs after pte_clear_soft_dirty(), ignoring the soft-dirty bit. */ +#define FPB_IGNORE_SOFT_DIRTY ((__force fpb_t)BIT(1)) + +extern int folio_pte_batch(struct folio *folio, unsigned long addr, + pte_t *start_ptep, pte_t pte, int max_nr, fpb_t flags, + bool *any_writable); + void __acct_reclaim_writeback(pg_data_t *pgdat, struct folio *folio, int nr_throttled); static inline void acct_reclaim_writeback(struct folio *folio) diff --git a/mm/memory.c b/mm/memory.c index 6378f6bc22c5..dd9bd67f037a 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -989,7 +989,7 @@ static inline pte_t __pte_batch_clear_ignored(pte_t pte, fpb_t flags) * If "any_writable" is set, it will indicate if any other PTE besides the * first (given) PTE is writable. */ -static inline int folio_pte_batch(struct folio *folio, unsigned long addr, +int folio_pte_batch(struct folio *folio, unsigned long addr, pte_t *start_ptep, pte_t pte, int max_nr, fpb_t flags, bool *any_writable) { -- 2.34.1 > Best, > Lance Thanks Barry