Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2202530/?format=api
{ "id": 2202530, "url": "http://patchwork.ozlabs.org/api/patches/2202530/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260227200848.114019-10-david@kernel.org/", "project": { "id": 2, "url": "http://patchwork.ozlabs.org/api/projects/2/?format=api", "name": "Linux PPC development", "link_name": "linuxppc-dev", "list_id": "linuxppc-dev.lists.ozlabs.org", "list_email": "linuxppc-dev@lists.ozlabs.org", "web_url": "https://github.com/linuxppc/wiki/wiki", "scm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git", "webscm_url": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/", "list_archive_url_format": "https://lore.kernel.org/linuxppc-dev/{}/", "commit_url_format": "https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}" }, "msgid": "<20260227200848.114019-10-david@kernel.org>", "list_archive_url": "https://lore.kernel.org/linuxppc-dev/20260227200848.114019-10-david@kernel.org/", "date": "2026-02-27T20:08:40", "name": "[v1,09/16] mm/memory: convert details->even_cows into details->skip_cows", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "fe0e1407215e928fcee2c8d7c53cd8dec5fcf6fc", "submitter": { "id": 92023, "url": "http://patchwork.ozlabs.org/api/people/92023/?format=api", "name": "David Hildenbrand (Arm)", "email": "david@kernel.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260227200848.114019-10-david@kernel.org/mbox/", "series": [ { "id": 493807, "url": "http://patchwork.ozlabs.org/api/series/493807/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=493807", "date": "2026-02-27T20:08:31", "name": "mm: cleanups around unmapping / zapping", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/493807/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2202530/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2202530/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linuxppc-dev+bounces-17417-incoming=patchwork.ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linuxppc-dev@lists.ozlabs.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=R+uZFzLt;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-17417-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)", "lists.ozlabs.org;\n arc=none smtp.remote-ip=\"2600:3c0a:e001:78e:0:1991:8:25\"", "lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org", "lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=R+uZFzLt;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=kernel.org\n (client-ip=2600:3c0a:e001:78e:0:1991:8:25; helo=sea.source.kernel.org;\n envelope-from=david@kernel.org; receiver=lists.ozlabs.org)" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fMzxS4hH7z1xxx\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Feb 2026 07:11:40 +1100 (AEDT)", "from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fMzxS2xGRz3bt1;\n\tSat, 28 Feb 2026 07:11:40 +1100 (AEDT)", "from sea.source.kernel.org (sea.source.kernel.org\n [IPv6:2600:3c0a:e001:78e:0:1991:8:25])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4fMzxR4ZFgz3bmR\n\tfor <linuxppc-dev@lists.ozlabs.org>; Sat, 28 Feb 2026 07:11:39 +1100 (AEDT)", "from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby sea.source.kernel.org (Postfix) with ESMTP id 1D4BA41843;\n\tFri, 27 Feb 2026 20:11:38 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPSA id C83C0C2BC86;\n\tFri, 27 Feb 2026 20:11:21 +0000 (UTC)" ], "ARC-Seal": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1772223100;\n\tcv=none;\n b=ExrXZaBu+tVSX+Tc4boiVou2usoV3uGnAQOOcEj6YKNi2I/BnupO7cVYN8QNYEflGhH0sX8hKkiTcCXzrVFktWb1anPizdq07mgz7/B6+0AZW11V+1TNdxUM2bm2uo+a6mUSigO9nSU9IxMWrnEYiTPXPcZkUisYwNr8Ie+j3SjkNelnkLHlGt/oarWtuLA0xDS7CgAynR7SEosakf+qoNtMaj8VFGZ6hwfa0ZzLteVz4Nbb1eZJgHS80QBDl83mkH3E5BB2tOVyfZeBIp7CJz37YDY/Egm214hkYd5kBP5r+0ouMPds3QsqpaFClHrlUOsugaBZsPNKtyLWfIln9Q==", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1772223100; c=relaxed/relaxed;\n\tbh=E0BZCGgJGIAsZxqzfZNtvPWaUpxZNAqdTK0WGsJmQPg=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=Mdrl+W+gDiH6C2OIijL4Gg7tV/S4v4VQq9esfSHdH3i4w6sWC29i/UsDTaoDwrSVNGZ5luzFJmhfKFfj4H4m5HwQn8yYHYaoezec/FOTTPjUsA7lnjOe2LyeA341CVg4GCixTevVIvVJMd0TWIPas/uUVDSuakQ/jOaC9rBW9Px6ZTWNuO3ql0J3JsJ//2KCaD4/Ja6LlpXIBAnvMZNTHjt56XdlSzSpavMpu/GSI4lihicheqgoc77+dfNk7Ch6xQT89SQqKQ6KQhZnJjTgSU1BHojmOEFpX2yiTY2+i4+0jfTLq/5dYJHF92y9BX60weGtwUuu3x8q6eH3HmQaCA==", "ARC-Authentication-Results": "i=1; lists.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=R+uZFzLt; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c0a:e001:78e:0:1991:8:25;\n helo=sea.source.kernel.org; envelope-from=david@kernel.org;\n receiver=lists.ozlabs.org) smtp.mailfrom=kernel.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1772223098;\n\tbh=KcfCcPy+dBQFq2iZWWRAzMkc9iA3mhQIqe4VKvKm/84=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=R+uZFzLtdrG65b8hmVxNKYNlrS/AesJe5C0CdRLLG0CXN4yBdaUTdPL6zW++yDFfV\n\t d9morv+7a1pkXjkKZLGhg42leomEsG3yOY/LUvmeI7p74dvImpIdlZ+hVxW2bRPJa1\n\t EnR+f8uCtq2nwqb4bowrT5fporOqCSIT2OWtiwOHYZKKevZ2sqcl0dhKRiXN/W1VTf\n\t T3JnjgarvGwRpiC+6sbx7CJfmMTNXMJbxZ+2eZvxX9FSc8qEYjP7BB1HwU+r3h1AXj\n\t QaDl1DJbAtFutxlyg3qP2d0PNjBvS5b6oUjoQZ0i0yJpmByBkdKGovCyF8vwNHNDEe\n\t YwpOXuN0+M/Ig==", "From": "\"David Hildenbrand (Arm)\" <david@kernel.org>", "To": "linux-kernel@vger.kernel.org", "Cc": "\"linux-mm @ kvack . org\" <linux-mm@kvack.org>,\n \"David Hildenbrand (Arm)\" <david@kernel.org>,\n Andrew Morton <akpm@linux-foundation.org>,\n Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,\n \"Liam R. Howlett\" <Liam.Howlett@oracle.com>,\n Vlastimil Babka <vbabka@kernel.org>, Mike Rapoport <rppt@kernel.org>,\n Suren Baghdasaryan <surenb@google.com>, Michal Hocko <mhocko@suse.com>,\n Jann Horn <jannh@google.com>, Pedro Falcato <pfalcato@suse.de>,\n David Rientjes <rientjes@google.com>, Shakeel Butt <shakeel.butt@linux.dev>,\n \"Matthew Wilcox (Oracle)\" <willy@infradead.org>,\n Alice Ryhl <aliceryhl@google.com>, Madhavan Srinivasan <maddy@linux.ibm.com>,\n Michael Ellerman <mpe@ellerman.id.au>,\n Christian Borntraeger <borntraeger@linux.ibm.com>,\n Janosch Frank <frankja@linux.ibm.com>,\n Claudio Imbrenda <imbrenda@linux.ibm.com>,\n Alexander Gordeev <agordeev@linux.ibm.com>,\n Gerald Schaefer <gerald.schaefer@linux.ibm.com>,\n Heiko Carstens <hca@linux.ibm.com>, Vasily Gorbik <gor@linux.ibm.com>,\n Jarkko Sakkinen <jarkko@kernel.org>, Thomas Gleixner <tglx@kernel.org>,\n Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,\n Greg Kroah-Hartman <gregkh@linuxfoundation.org>, =?utf-8?q?Arve_Hj=C3=B8nne?=\n\t=?utf-8?q?v=C3=A5g?= <arve@android.com>, Todd Kjos <tkjos@android.com>,\n Christian Brauner <brauner@kernel.org>, Carlos Llamas <cmllamas@google.com>,\n Ian Abbott <abbotti@mev.co.uk>,\n H Hartley Sweeten <hsweeten@visionengravers.com>,\n Jani Nikula <jani.nikula@linux.intel.com>,\n Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,\n Rodrigo Vivi <rodrigo.vivi@intel.com>, Tvrtko Ursulin <tursulin@ursulin.net>,\n David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,\n Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>,\n Dimitri Sivanich <dimitri.sivanich@hpe.com>, Arnd Bergmann <arnd@arndb.de>,\n Alexei Starovoitov <ast@kernel.org>, Daniel Borkmann <daniel@iogearbox.net>,\n Andrii Nakryiko <andrii@kernel.org>, Peter Zijlstra <peterz@infradead.org>,\n Arnaldo Carvalho de Melo <acme@kernel.org>,\n Namhyung Kim <namhyung@kernel.org>, Andy Lutomirski <luto@kernel.org>,\n Vincenzo Frascino <vincenzo.frascino@arm.com>,\n Eric Dumazet <edumazet@google.com>, Neal Cardwell <ncardwell@google.com>,\n \"David S. Miller\" <davem@davemloft.net>, David Ahern <dsahern@kernel.org>,\n Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,\n Miguel Ojeda <ojeda@kernel.org>, linuxppc-dev@lists.ozlabs.org,\n kvm@vger.kernel.org, linux-s390@vger.kernel.org, linux-sgx@vger.kernel.org,\n intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,\n linux-rdma@vger.kernel.org, bpf@vger.kernel.org,\n linux-perf-users@vger.kernel.org, linux-fsdevel@vger.kernel.org,\n netdev@vger.kernel.org, rust-for-linux@vger.kernel.org, x86@kernel.org", "Subject": "[PATCH v1 09/16] mm/memory: convert details->even_cows into\n details->skip_cows", "Date": "Fri, 27 Feb 2026 21:08:40 +0100", "Message-ID": "<20260227200848.114019-10-david@kernel.org>", "X-Mailer": "git-send-email 2.43.0", "In-Reply-To": "<20260227200848.114019-1-david@kernel.org>", "References": "<20260227200848.114019-1-david@kernel.org>", "X-Mailing-List": "linuxppc-dev@lists.ozlabs.org", "List-Id": "<linuxppc-dev.lists.ozlabs.org>", "List-Help": "<mailto:linuxppc-dev+help@lists.ozlabs.org>", "List-Owner": "<mailto:linuxppc-dev+owner@lists.ozlabs.org>", "List-Post": "<mailto:linuxppc-dev@lists.ozlabs.org>", "List-Archive": "<https://lore.kernel.org/linuxppc-dev/>,\n <https://lists.ozlabs.org/pipermail/linuxppc-dev/>", "List-Subscribe": "<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>", "List-Unsubscribe": "<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>", "Precedence": "list", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Spam-Status": "No, score=-0.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,\n\tDKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS\n\tautolearn=disabled version=4.0.1 OzLabs 8", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org" }, "content": "The current semantics are confusing: simply because someone specifies an\nempty zap_detail struct suddenly makes should_zap_cows() behave\ndifferently. The default should be to also zap CoW'ed anonymous pages.\n\nReally only unmap_mapping_pages() and friends want to skip zapping of\nthese anon folios.\n\nSo let's invert the meaning; turn the confusing \"reclaim_pt\" check that\noverrides other properties in should_zap_cows() into a safety check.\n\nNote that the only caller that sets reclaim_pt=true is\nmadvise_dontneed_single_vma(), which wants to zap any pages.\n\nSigned-off-by: David Hildenbrand (Arm) <david@kernel.org>\n---\n include/linux/mm.h | 2 +-\n mm/madvise.c | 1 -\n mm/memory.c | 12 ++++++------\n 3 files changed, 7 insertions(+), 8 deletions(-)", "diff": "diff --git a/include/linux/mm.h b/include/linux/mm.h\nindex d3ef586ee1c0..21b67c203e62 100644\n--- a/include/linux/mm.h\n+++ b/include/linux/mm.h\n@@ -2798,7 +2798,7 @@ extern void pagefault_out_of_memory(void);\n */\n struct zap_details {\n \tstruct folio *single_folio;\t/* Locked folio to be unmapped */\n-\tbool even_cows;\t\t\t/* Zap COWed private pages too? */\n+\tbool skip_cows;\t\t\t/* Do not zap COWed private pages */\n \tbool reclaim_pt;\t\t/* Need reclaim page tables? */\n \tzap_flags_t zap_flags;\t\t/* Extra flags for zapping */\n };\ndiff --git a/mm/madvise.c b/mm/madvise.c\nindex 557a360f7919..b51f216934f3 100644\n--- a/mm/madvise.c\n+++ b/mm/madvise.c\n@@ -853,7 +853,6 @@ static long madvise_dontneed_single_vma(struct madvise_behavior *madv_behavior)\n \tstruct madvise_behavior_range *range = &madv_behavior->range;\n \tstruct zap_details details = {\n \t\t.reclaim_pt = true,\n-\t\t.even_cows = true,\n \t};\n \n \tzap_page_range_single_batched(\ndiff --git a/mm/memory.c b/mm/memory.c\nindex fdcd2abf29c2..7d7c24c6917c 100644\n--- a/mm/memory.c\n+++ b/mm/memory.c\n@@ -1554,11 +1554,13 @@ copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma)\n static inline bool should_zap_cows(struct zap_details *details)\n {\n \t/* By default, zap all pages */\n-\tif (!details || details->reclaim_pt)\n+\tif (!details)\n \t\treturn true;\n \n+\tVM_WARN_ON_ONCE(details->skip_cows && details->reclaim_pt);\n+\n \t/* Or, we zap COWed pages only if the caller wants to */\n-\treturn details->even_cows;\n+\treturn !details->skip_cows;\n }\n \n /* Decides whether we should zap this folio with the folio pointer specified */\n@@ -2149,8 +2151,6 @@ void unmap_vmas(struct mmu_gather *tlb, struct unmap_desc *unmap)\n \tstruct mmu_notifier_range range;\n \tstruct zap_details details = {\n \t\t.zap_flags = ZAP_FLAG_DROP_MARKER | ZAP_FLAG_UNMAP,\n-\t\t/* Careful - we need to zap private pages too! */\n-\t\t.even_cows = true,\n \t};\n \n \tvma = unmap->first;\n@@ -4282,7 +4282,7 @@ void unmap_mapping_folio(struct folio *folio)\n \tfirst_index = folio->index;\n \tlast_index = folio_next_index(folio) - 1;\n \n-\tdetails.even_cows = false;\n+\tdetails.skip_cows = true;\n \tdetails.single_folio = folio;\n \tdetails.zap_flags = ZAP_FLAG_DROP_MARKER;\n \n@@ -4312,7 +4312,7 @@ void unmap_mapping_pages(struct address_space *mapping, pgoff_t start,\n \tpgoff_t\tfirst_index = start;\n \tpgoff_t\tlast_index = start + nr - 1;\n \n-\tdetails.even_cows = even_cows;\n+\tdetails.skip_cows = !even_cows;\n \tif (last_index < first_index)\n \t\tlast_index = ULONG_MAX;\n \n", "prefixes": [ "v1", "09/16" ] }