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 6501DC71157 for ; Tue, 17 Jun 2025 15:43:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 067236B0098; Tue, 17 Jun 2025 11:43:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0175C6B0099; Tue, 17 Jun 2025 11:43:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E6F616B009A; Tue, 17 Jun 2025 11:43:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id D33F46B0098 for ; Tue, 17 Jun 2025 11:43:53 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 86F6F140541 for ; Tue, 17 Jun 2025 15:43:53 +0000 (UTC) X-FDA: 83565313146.15.7589561 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf23.hostedemail.com (Postfix) with ESMTP id 2B9B7140006 for ; Tue, 17 Jun 2025 15:43:50 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=aPKWQF1A; spf=pass (imf23.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750175031; 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-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=S9sktOEUA0QA+KblClROqq+S/PHaRyGhmuWOY3/6T7Q=; b=gyg/3DBdKWhXZcsay9G7+me/z+zXdp34pj5+Uzk0n6kKvPIX+SCfeGOdze/62tLBMwq7RD sibsYKYXCmtYJ1bTrK3KdU5bJkTM0B1/7NxBHvUxlZ5pHalY4Z15F4tJyF6Pn9s+odA/hQ g6PJleWrCfENHwOJWdKO8qdxdCS6oNY= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=aPKWQF1A; spf=pass (imf23.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750175031; a=rsa-sha256; cv=none; b=wvWjtXwUHR2FXs6bgLo/1YcRpkROU3TVP27fwAzQOEnZOzz+efqtgt1SMdo/tNFRYBjNrw ON8RIXWsw0w7scqxRrnxWGcO3kJdkIXCvqI761ADhE+XN/qxG1RTC55cAvGVa0380OoTos i0ieJV3hyQ7ynLqveoOy2hUfkJd84nw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1750175030; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=S9sktOEUA0QA+KblClROqq+S/PHaRyGhmuWOY3/6T7Q=; b=aPKWQF1A5qiXo0ECsTwmNMFFjogae4F0POpAza99obTQzVwJQmIfPF+pleZJ7E8MP3AGMD wkU3XpWiyUEJMbVeVTZ61Cnuw5EY4Y2LlkvrwUWQqPnc8wiDi0YISZ8kxpm6dQH+dGbznJ dOtWET6hZk+Udnf+hsHukFT3aAPn6yI= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-160-8DwScargMwGxmkxWeEQG_w-1; Tue, 17 Jun 2025 11:43:49 -0400 X-MC-Unique: 8DwScargMwGxmkxWeEQG_w-1 X-Mimecast-MFC-AGG-ID: 8DwScargMwGxmkxWeEQG_w_1750175028 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4532ff43376so45619565e9.3 for ; Tue, 17 Jun 2025 08:43:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750175028; x=1750779828; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=S9sktOEUA0QA+KblClROqq+S/PHaRyGhmuWOY3/6T7Q=; b=qPRlO5SYXVflO1tlSdve7pdECnVpv4xkH5pTYvp9NvyjpODtW21N+mnHyEpxk4Y7/F cPAdIucWg1TcvR4XN4jchy4sdx/W4lC7efsxdpWxqp55chiU5qJPXb6gq6PP8CRDDovL FtKz+o3+FBzMwqLxIYKv/wG0lsmfxzRiG3xq5pYd/5h7OEzwUgj28V8/XJxDxGECNF+e KATSasQsZ3o4n4uEPAyqEBwJAlraCw/I6e271c10s/aWh7oIs3egSoZVsH9c5n0bnyJS 4CK6E2Py+o7pXES+QmZbIiyp1ktYUwQ+qZ22tsuDl1iOGDBTdgVO3Pa313VTwH518V+d WNig== X-Forwarded-Encrypted: i=1; AJvYcCX+XG0N8la+bDxlDY/PoPGy+HfpLDvN1YFc40m87th0s0CoZLyczTf/jGBvDHUlqCpyC74Cj/b1dA==@kvack.org X-Gm-Message-State: AOJu0YxDRjk2xzG8UAEsJ0SccbYVSuQm1PzTbLV3IM8LEjlbFciOrQpt 3xRUyEt/Tev4i1wbB1ma8z7lWBu4O9epFiWavSZBwLkzg/cl5seJdRIeaJdNqzGcnEjymbNSdGV 8fqIRfw4ZvnMsFqfm71YeHwa88nDkbqikxxXTaUVOMVGMU8EywJRG X-Gm-Gg: ASbGncsUQjHCm930gURC1Nva8kp/EMuEQ1zwVAweZSUl6THEyjnDhyaf0Cg9OMaS5cT cAdGJuOPD8l7YHNIAboP5RvVOATqO8MXf4XVz3kbU3vMbRGZr0l9LJPUHHbcELVNLWeUPXhDPuR 5bgHqC8tRq5+JeJmk7FOPWZ/Pcte7BzCBGeaPROX14al1Dt4bGdNFoKMldmdPDgOwY7GCf4Pghw vBNxsDU3BqWr642KSPsG6Z2q0oyswy/SuGQpr/QNi3gZ8+A8syR2O4T3NbTUNkp9F/2wbI+clbe gat+PYJEZ9vVtVhCijJL2yjS+x7yAbGSJXR1c+K+IhxM+BMWSLM6djb1WA2bbTepLg7LmZe0CHG vjjfasg== X-Received: by 2002:a05:600c:1f86:b0:453:1e14:6387 with SMTP id 5b1f17b1804b1-4533f02bb07mr103882455e9.32.1750175027798; Tue, 17 Jun 2025 08:43:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFW7WAxfMB8RzBFcIgkdMMOt5efROkEp4+2gW6BG8c/KNZ4GFdHI8tPJPW7/9sULqKMn/YZhQ== X-Received: by 2002:a05:600c:1f86:b0:453:1e14:6387 with SMTP id 5b1f17b1804b1-4533f02bb07mr103881885e9.32.1750175027375; Tue, 17 Jun 2025 08:43:47 -0700 (PDT) Received: from localhost (p200300d82f3107003851c66ab6b93490.dip0.t-ipconnect.de. [2003:d8:2f31:700:3851:c66a:b6b9:3490]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-4533fb97d88sm116092365e9.36.2025.06.17.08.43.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 17 Jun 2025 08:43:46 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, nvdimm@lists.linux.dev, David Hildenbrand , Andrew Morton , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Dan Williams , Alistair Popple , Matthew Wilcox , Jan Kara , Alexander Viro , Christian Brauner , Zi Yan , Baolin Wang , Lorenzo Stoakes , "Liam R. Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Jann Horn , Pedro Falcato Subject: [PATCH RFC 00/14] mm: vm_normal_page*() + CoW PFNMAP improvements Date: Tue, 17 Jun 2025 17:43:31 +0200 Message-ID: <20250617154345.2494405-1-david@redhat.com> X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: jF-9vsP4wswA7hBd7eTAfC53vzERKwocCo5NRTwyWLk_1750175028 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Queue-Id: 2B9B7140006 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: xrhf1w3m34ns67z7kzi8zgzskbfmx9cw X-HE-Tag: 1750175030-929358 X-HE-Meta: U2FsdGVkX1+tP94NIatPwhVZ081FXXY9/zIIcEFYMARtp2zRPD9WdPyCg+5034YWbc1lvhcL04/UhisfTZgyMv1dO8/ZEcCVT3Adr/5C2D5ssGTOKzARsRT9KaHY7X2F3vd3/K7V2MTFq5P72kTfy5o0LXvNKvmWyQ2ASiy8F3Ol8OuojuzclEfapl+xfeysknPWlr7YYuqJlQYRJHu3gLDLLdIYIJZ+bioUCykNwIcH0sPRLlS+q4AnZlJ3O7T/MiXCh8OVj96ImVd/458aJTdkBLPqlq28iGh3kWk5CNzUUbchEYm88YVG9b4QMSPGtB0o8TceZybdCyksdNmIzB1eDSrSB7rTJZy4zxv+aOtpoJ5rSvLbLIkWxFFSec6oBk/HefYOOKuMPbk09tVqmY1IQUgG0cggvLO4HkbLUkoBSLYgGRLtFEXWDpPu56FkL0JcqHufgKy1xKr9yhPnZGtmQOzVX6rzZt9PFeFpFYEvYjH616C7l5ub5hhvNxxcGdKwaNBWfMPGnrKewPcA7v/9+3b+aCmOAblBBriicRzGtTLlDn3PXc7VbrjUaRlM4/TW82XsG9Q47Ldoc7wAlwVER2TsWAV4Nos9Ux4Gft/22Je6RNVw5IhnOQtFe3SBdI5Wygi48QvcmPyXigIAJGDFBVU/Zmgpq63vhdDisEIjX3uthuhABrAeFJKD0FJrJFU8SERkOXf1f4qJxyCZjDkGGqtxqZam73RgQoBnHKtrvcJyfozBw6fCNIOox2x1Yb2g/z4MlQ1iwb/qiOm2fu/0rZrdq7lr/B1mSxll09zVm9jVJZK9SDjkxr6DLETRt69QPf56BfZ/9eTHwx97pYuJZthw5RPkKp/+IUkdY479fscu2H7bEJwhiFAIfO1wK+IyWQ+aJRW4lYt3tsZnyNUtgpiRJdgHcSuFhjll9wmX2LO5Ow+EDuaS86ioGTlbIIlKVXZ68a5vdCNi84a IhSn743l Tx46TxUezbrdMoGggYP+WPF1a/5CINjUOO+f3jWTJLS9SaGGkWLcYuCKoAUXLQIBhOef/5H/b63XhibPyRq8xGCXleKojTxkOgyonB0mc3/vS+QIYBG/ewnuSdw/iTd0RFwN3IrBn80BSb+IrT1DdTqK9wGejd+SxMFeT1dMjUMD9PBtI+vmOTWNQhe+wieB0//kSygp9a8A/nTzj03UhDRA2bttwnX9MqY/OK/i38Y4Bjz47YB7SQurY5cDeJGxuM352YBYg0JUH0/eFGvwevwHb2NbZ2T8q3S+b0BJKAi0wKdPMWWGsnY7IEDTu3l5Ughl0Tv2ZZI5xV1Pi9J+ej06y9MKkK9AC6bF63c/xVnxrkTTtqAA84h8kg9D/OA5VIMWsKZYAQ/KS2K+7Eztj/EksGxqSNnFp0hfaar1IX700D97WtlZ7R5XoiLloNUh6Plc51G4tu+CaYctpXpL4DwwTBuKxnZWlwewFqbs2a5Fk/W/4Yve6f+TCpz2m24xbsADs44LGtWb1uItq3TdxI4KnvPOapVDZ1CHTOFTMuIrcj6Z+0/CVbwKRLaUGyYA7DMr6OfOQPvrFBMuxEAh2rG7G8c+/prYvqqLgHnOVrQXJCymR6MD9UKlW/kX1a4zNQEBRvgzBMI2dBBJmha/jC13iOGwQwfTJSlpqUF9E8dtCsS6ghajNurm6J6XGVDMHUE4U7wiPikJfO/jLhySPwH/cnn5R73F8+BkhZ5Xgrlk//1WZGP510/fzz+5DiXxqx1PIxCt/KFBs8NK3aJrOQnsbtodwZ49huFHkW15oAf5yUmFzn6WKPWr1wWvBhFRlpeQhTNC45MNknX4Tl/PrwUcxyZIf8oMcOU3cxhhPZTlI+QpueWeqdGS6FwOmSYTtD0q67xSS2NMSEvDyAPZwxdWKAWmyi0bdcpNrPxVe6uGXKzSbKRqXRBY1pGnfDH8FqqIBEbRhE8+1O+ezhV0jE8lmdWPf UqXpjBGh ttuqmTB8FVQ2Cp27oEegWw== 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: RFC because it's based on mm-new where some things might still change around the devmap removal stuff. While removing support for CoW PFNMAPs is a noble goal, I am not even sure if we can remove said support for e.g., /dev/mem that easily. In the end, Cow PFNMAPs are pretty simple: everything is "special" except CoW'ed anon folios, that are "normal". The only complication is: how to identify such pages without pte_special(). Because with pte_special(), it's easy. Well, of course, one day all architectures might support pte_special() ... either because we added support for pte_special() or removed support for ... these architectures from Linux. No need to wait for that day. Let's do some cleanups around vm_normal_page()/vm_normal_page_pmd() and handling of the huge zero folio, and remove the "horrible special case to handle copy-on-write behaviour" that does questionable things in remap_pfn_range() with a VMA, simply by ... looking for anonymous folios in CoW PFNMAPs to identify anonymous folios? I know, sounds crazy ;) Of course, we add sanity checks that nobody dares installing PFNMAPs of anonymous folios in these configs, that could trick us in assuming that these are due to CoW. We only have to do that without support for pte_special(); for architectures that support pte_special(), nothing changes. In the same process, add vm_normal_page_pud(), which is easy after the cleanups, and improve our documentation. Well, and clarify that "vm_ops->find_special_page" XEN thingy. Briefly tested on UML (making sure vm_normal_page() still works as expected without pte_special() support) and on x86-64 with a bunch of tests (including ndctl, and cow.c which tests the huge zero folio). Cc: Andrew Morton Cc: Juergen Gross Cc: Stefano Stabellini Cc: Oleksandr Tyshchenko Cc: Dan Williams Cc: Alistair Popple Cc: Matthew Wilcox Cc: Jan Kara Cc: Alexander Viro Cc: Christian Brauner Cc: Zi Yan Cc: Baolin Wang Cc: Lorenzo Stoakes Cc: "Liam R. Howlett" Cc: Nico Pache Cc: Ryan Roberts Cc: Dev Jain Cc: Barry Song Cc: Vlastimil Babka Cc: Mike Rapoport Cc: Suren Baghdasaryan Cc: Michal Hocko Cc: Jann Horn Cc: Pedro Falcato David Hildenbrand (14): mm/memory: drop highest_memmap_pfn sanity check in vm_normal_page() mm: drop highest_memmap_pfn mm: compare pfns only if the entry is present when inserting pfns/pages mm/huge_memory: move more common code into insert_pmd() mm/huge_memory: move more common code into insert_pud() mm/huge_memory: support huge zero folio in vmf_insert_folio_pmd() fs/dax: use vmf_insert_folio_pmd() to insert the huge zero folio mm/huge_memory: mark PMD mappings of the huge zero folio special mm/memory: introduce is_huge_zero_pfn() and use it in vm_normal_page_pmd() mm/memory: factor out common code from vm_normal_page_*() mm: remove "horrible special case to handle copy-on-write behaviour" mm: drop addr parameter from vm_normal_*_pmd() mm: introduce and use vm_normal_page_pud() mm: rename vm_ops->find_special_page() to vm_ops->find_normal_page() drivers/xen/Kconfig | 1 + drivers/xen/gntdev.c | 5 +- fs/dax.c | 47 ++---- fs/proc/task_mmu.c | 6 +- include/linux/huge_mm.h | 12 +- include/linux/mm.h | 41 +++-- mm/Kconfig | 2 + mm/huge_memory.c | 135 +++++++--------- mm/internal.h | 2 - mm/memory.c | 261 ++++++++++++++++--------------- mm/mm_init.c | 3 - mm/nommu.c | 1 - mm/pagewalk.c | 22 +-- tools/testing/vma/vma_internal.h | 18 ++- 14 files changed, 281 insertions(+), 275 deletions(-) base-commit: 2f24ee10fe6d1959d674a4298d63b66f54508a68 -- 2.49.0