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 36141C8302D for ; Mon, 30 Jun 2025 13:00:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B85E76B00A5; Mon, 30 Jun 2025 09:00:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B5E036B00A6; Mon, 30 Jun 2025 09:00:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A73E76B00A9; Mon, 30 Jun 2025 09:00:22 -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 8E5A26B00A5 for ; Mon, 30 Jun 2025 09:00:22 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 45C3A595E3 for ; Mon, 30 Jun 2025 13:00:22 +0000 (UTC) X-FDA: 83612075484.02.D55A8DB Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf26.hostedemail.com (Postfix) with ESMTP id E2840140019 for ; Mon, 30 Jun 2025 13:00:19 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=RZibEWH1; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf26.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751288420; a=rsa-sha256; cv=none; b=mT8m2Y1YFjtSJrGeg+JjBp27iy+Ghrcw8Ta1lhq1EQ6ST6geSXwloYUtMW/xycVdy28fz2 QJItYDGq1WuiEUKx9vArESpVhw8fTiXtsLO2mw/Y+HludxS0OC3sFu7P3mIrBEUXsmrX/Z KknVeJ9ArGbt1EndED99qTBUjJ5spSA= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=RZibEWH1; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf26.hostedemail.com: domain of dhildenb@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dhildenb@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751288420; 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=vfJnfBkXpkPuvL/9X/X6rRos3axIFOlRbKihQ7zrqmc=; b=KBYwUjYJ+j4vNo7YBvRcszTbVrhI90pPlENdNU3xgovKs9CMfZQI2tRkEeDDaY7tA02PJA vVEHDQ8xrsk9KFO0QjHMiIJdqoj/TEjvI55baJuU+26/1iHt7k+BwxupyAW9CBdZ7jHzhy /OfgQAMa+JtvOuEbOf39MKw8wMzjv4I= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1751288419; 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=vfJnfBkXpkPuvL/9X/X6rRos3axIFOlRbKihQ7zrqmc=; b=RZibEWH1BWSjLAU0YJD8o9WncRjjo9PQAfZ7r+WbZDr2agQso/7sYTNoiZGTSKHyOGo0Hz Kt3h6ZZe0FgF0CPxN67U9fy3ipOLUvmvuyMeK7mw/ghwzkK7z1C5/AX5SvMVm8fk53MwA9 tR8B/z8jU9FLQJO9BMbH1r1yRkuQKLs= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-416-AyhCSmavPRaMUGoQ-8NfrQ-1; Mon, 30 Jun 2025 09:00:16 -0400 X-MC-Unique: AyhCSmavPRaMUGoQ-8NfrQ-1 X-Mimecast-MFC-AGG-ID: AyhCSmavPRaMUGoQ-8NfrQ_1751288415 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-45311704d22so14908905e9.2 for ; Mon, 30 Jun 2025 06:00:16 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751288415; x=1751893215; 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=vfJnfBkXpkPuvL/9X/X6rRos3axIFOlRbKihQ7zrqmc=; b=ineipNfN5wY1fCYwjRl/hoe3jBu7LUe8koK6ULldcuRuU7dfm4uju75PpQeTpDM/UY 3/a5Ai3xxATdZlSRmVT5PAhF82tHRMVQOhdssayNajbpoTOCX6xj2KRFoP46I3rk3ioL NUrwZbnKG7dpbrMHDnPxadssdiyWNPy8rjXhb2Oh+Bk8N73LkPFnplKFBDVVnj3RByRR kgv22YL9vo3SGCW15UvMECcj53A5giPuCgcJhIIk9o02lES5dnXcbV4xsq7QUzMpdAQe lTzrUjAhmh8uQUOsGOGV9KELmty9d6EdK+aUu4NpiX0/hdnkR8emjeubAw9p8BHQlVzN p2Zw== X-Gm-Message-State: AOJu0YwAizgzA271YUdYb0cw+b1sInz4zGoezdywGZgy+pKXXMdTE0P0 k+s6EPExo8wzQcVMunVsN7q+bcxih7DPIzMhuiH2JcRMUiMoE/64MHacvEWWRIN9lPS4M6X5zYT qzHlF8VdVT9qS42ZhAAdwhza3Etl8vswh0vXQUOGVNTq1443tH4ad X-Gm-Gg: ASbGncsIdpei/7Bx0N3WfieUYYDvJ792k4dUmuLhbMpw/WzwTwPwP4aOHJeeLVe9K7L +OK7vBWPHe2Q3Atojy3pgu+GkcRpgosL1biBbkLIqTGa5jRMfUuAgtBEIDFyfrZ+ywuANqLn3pV WGFroZkGCbIez9U/xajD+hH3ZAugTiFRE4bZDFpnjPTQfEx2JI7tj3aDzlqnGJAngasxUUcDJJK MombsD0qcA0CK/sXK9+7kblISB1pkYhAChZiYLh3Yaw3D8oeF3yac627VOLdp5xucTnF0feodoz I5cHfeGMIdOTXqNKLdtnoKgO1clV8nX7OC9X2PblcN4fYhjxsovzrUE4rMqYNSg3OD2eRaw30hC 5a/TOjv8= X-Received: by 2002:a05:600c:3f0e:b0:43d:82c:2b11 with SMTP id 5b1f17b1804b1-4538ee6fc79mr120597175e9.23.1751288414950; Mon, 30 Jun 2025 06:00:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH9Y6zMVNRx8SyemplqzZ+r/tVyw00Oe4g4/JGEqtvy2G6LpOQKRmzj2nzxeHUR41ZrxoqB6w== X-Received: by 2002:a05:600c:3f0e:b0:43d:82c:2b11 with SMTP id 5b1f17b1804b1-4538ee6fc79mr120596525e9.23.1751288414400; Mon, 30 Jun 2025 06:00:14 -0700 (PDT) Received: from localhost (p200300d82f40b30053f7d260aff47256.dip0.t-ipconnect.de. [2003:d8:2f40:b300:53f7:d260:aff4:7256]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3a892e59659sm10376300f8f.77.2025.06.30.06.00.12 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 30 Jun 2025 06:00:13 -0700 (PDT) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, linux-doc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, virtualization@lists.linux.dev, linux-fsdevel@vger.kernel.org, David Hildenbrand , Andrew Morton , Jonathan Corbet , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Jerrin Shaji George , Arnd Bergmann , Greg Kroah-Hartman , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Alexander Viro , Christian Brauner , Jan Kara , Zi Yan , Matthew Brost , Joshua Hahn , Rakie Kim , Byungchul Park , Gregory Price , Ying Huang , Alistair Popple , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , "Matthew Wilcox (Oracle)" , Minchan Kim , Sergey Senozhatsky , Brendan Jackman , Johannes Weiner , Jason Gunthorpe , John Hubbard , Peter Xu , Xu Xin , Chengming Zhou , Miaohe Lin , Naoya Horiguchi , Oscar Salvador , Rik van Riel , Harry Yoo , Qi Zheng , Shakeel Butt Subject: [PATCH v1 00/29] mm/migration: rework movable_ops page migration (part 1) Date: Mon, 30 Jun 2025 14:59:41 +0200 Message-ID: <20250630130011.330477-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: dtNha0eBAoox6KTZVXdUrStBaXwgFVX7FkMt2P-Ox3U_1751288415 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Stat-Signature: qpsd74fub91umfnmegpo6ho7yqf7i7pk X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: E2840140019 X-Rspam-User: X-HE-Tag: 1751288419-849698 X-HE-Meta: U2FsdGVkX18QFe5FAl6p7K66Bvh98+rjw/5QfxLT0PUuUhHBILwhoVuMWNnMjHh+M88WX+yvAswlaivE4qPbieicuZu/niDpTV3oiUI9WG0m0KgW5Qsw4JR+lgXO0D0reZURnKafo85Xk4Rbe5QuqDhKmMC+H0m7qSF/ib95plSRZN6oB86u975yPt0dmCgWiNmqo/7AGfoDNrDXYJSU97Hh9jXdEoaO2lOkURdNcQb5d61Uwy8PHrl0q/utu7Ve4zAsMT8mGkKoW61WmmOAD04ZLxEZTx4oMgLsWw6fXaJDeNTTAKxeZxHiJ+aGA2EcFtUMfISqTBsyH1YCE7b//Huj66XsbM2C4AV0cYbmT1JjmrO7l1xH4kIbivGDECYekb80z+imYorczulBq9NO0hMxfQrgEBMhZUa2M99afRZobC8LawjHDkpznBt9neunpSuNSz0Niiym058Q5LWgcCI59nRkwYNivBEY1vUikeClUoRm9lnKvrDCiCF1lEtsQQiP15MULzhOGhbPnPeOaQ9Dfgo4arIHXrTyfg7YfTBmLktlHDlPeB7K211p9o+t1qobdlRT+ddY49xvVUg3HDsIG8YElUcuCqWMg9kLOB5lvLJ4832X5QiCusafTPICjxFmuB5Np0y4ywc8cwPyf4KPu8VTBc1v/e3pmNgkyQO4Gxy8rfUoerKwXuEZTASBP+HqPvfU8L3Ur8VsMGMe9wVk3lG11KLuzqgX0uTSV/i0vJJ11OfYdgoTtVltxl05qkGiybORze8f0Wbeh/uazq+yW9ZLy23y9RopvrFD8o+GILmsJWK2ceKtEt0a/Baiz7Y/bqTODpsZFKC7I5eMMnooRGrecffZCSuG+mOMgnlZVy+vZ1IqmMzfrsnuCEcriTjmbmY7PkXgz3OwCMRqVOaaF8xFy3/VknLiuWFi/pAdDfDwqBZG9jQcRRH1NDAqo5Yo4oRY8Xua8bNR3X1 zrO/kGnm yiuTNwOe4wGtjbB030s/2dVgl+b1ZrxV2r/4fW2x5EwMpM3a4SFTsW7CT8jksE8T5tvRvRACtPUDT8ojxQm+F/A1BkIYSjF3YK+yjZfOUumlGjHmzcLpFXoIQMlkq4pBFpoE6zKoo1evKLlDflze3dTgy+KWKMauK8TrFrYEsyZTcmPK/3q17l1iVcDz7/YZQcRssvb9COgsZb/gDDyRMHGrexqTOdpgpsXewaM97kI8SEfFsFxvRgwmaAqc1ONeWP0Hc27JOEpd3J/ybZhdj6Slf+iwE5B4ZyYamFI3ALUuzYt7WvvcOLJw3yYWwrPsETc/yPH1bx72Rel4wr+/86f4eo0LVd+pcHlGVwBEV1wiAkepgs/4YsZbsZkHsF0MsB/LfcodFAXPZK9K1hCgUkW7OcOdeCUVLAh9EfBMfg3fzO09hsAfdLzA/0EKiVwS580b7Ptj/8ZOwyhnsok3yExEmMzHcR4ujaHcdUC31QjByyatBDv2a6JALFjq/2lyOV50/tugDQjx0iHRJycBG6/dEcHO1RLuwoc8DoDyxuvQJsqw7mqLz6AX0XcuRazzn5R+MhqpW6IDG7t0czuH+K2XpZ6+BcIS5zDnSO6mM7fEgMO0tRM5vzwTA+6IOgBYjqPoN3ztW7zOpRTmLsTehibd6F3q85MKT/gmujH0Acsnv72tuILwEDi03EOf7RLJIkj5cSN2aAn2d/qjVSP/EETjPLOPngW8mm4aBV+KjGbM/o9Hmz0Uy8obXF05Typ/MXj0Aea/Z0HZKWtA7lXrQopgc6KOhB5sgGEXyuziKZ1gHmZZpfpvXr4TFqkPbpt4Bxz9azKr6FrDv3vwqL8d3xBaO8bD6TpiDPLzTC4BmltZv/OBPa8vlRPzLbaIeYc+xI7FBCq6xCpjM4he6NAEf5PGkUJgdoHu5TfiYqBpruCewjRPOocCaN7140uI3mC7D1vQ+/ckAX/KJg7cg1ba+PpJa1X81 aF6AIDFf l+EGHMEK5I7LlLq/N/pauMI19AtZCr2Mpi+yXHgPo8yQy3ztVhXbB7gxeGz5RYcVo0nCBTBdQj4w+y9pj6y5aMvt4ve83fC0WSOWQE2W7tXLLRaizJYkpUfeiBqGWIoh1hmXx/257ixcFRwpkPmI59MH5XCDx7fkgJn8Qiv6ClfwnZg6sWFR/CUXOZVz3wkZS0Qti3ALiX+P4Z0v7euWsJfFwAHkVerVKFDVXxsRnXMcI1kvaegXgewnflSWKpKiZ5waqx57uO8WHucKZWapFo0yAZ9090+nooxUpaD15J2Av4moH/7wfGe/n/3FJXMfvpHVDI7nd3BrrbgBNa/of5AvfA2WYYFXnvNbj0DMA2PZC6RTRB7/XfkdghjJ2meaI2/+UszJL4KH9wAMQUA0s+wdQS/R5Ib0FaNdza/EkAOK8cPLW0MUKWQelliE5hjkA4cyWk8AO3B5AnthRi/m+wAiVMQIoEV4NDzj9tnFyIzIlQ6r/F2y3NXHYMm4AL2IvSVwr0juo6zdfzYokg3Q06+74Y2HphzUbXEj7xHOLersCqe0/32MvOgj4gtNk+0Z891gi1plC4TjoteQNseS0Rojop3ciCXq9PxteizAjSt8B7TgUAOJIQ== 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: Based on mm/mm-new. In the future, as we decouple "struct page" from "struct folio", pages that support "non-lru page migration" -- movable_ops page migration such as memory balloons and zsmalloc -- will no longer be folios. They will not have ->mapping, ->lru, and likely no refcount and no page lock. But they will have a type and flags :) This is the first part (other parts not written yet) of decoupling movable_ops page migration from folio migration. In this series, we get rid of the ->mapping usage, and start cleaning up the code + separating it from folio migration. Migration core will have to be further reworked to not treat movable_ops pages like folios. This is the first step into that direction. Heavily tested with virtio-balloon and lightly tested with zsmalloc on x86-64. Cross-compile-tested. RFC -> v1: * Some smaller fixups + comment changes + subject/description updates * Added ACKs/RBs (hope I didn't miss any) * "mm/migrate: move movable_ops page handling out of move_to_new_folio()" -> Fix goto out; vs goto out_unlock_both; * "mm: remove __folio_test_movable()" -> Fix page_has_movable_ops() checking wrong page Cc: Andrew Morton Cc: Jonathan Corbet Cc: Madhavan Srinivasan Cc: Michael Ellerman Cc: Nicholas Piggin Cc: Christophe Leroy Cc: Jerrin Shaji George Cc: Arnd Bergmann Cc: Greg Kroah-Hartman Cc: "Michael S. Tsirkin" Cc: David Hildenbrand Cc: Jason Wang Cc: Xuan Zhuo Cc: "Eugenio Pérez" Cc: Alexander Viro Cc: Christian Brauner Cc: Jan Kara Cc: Zi Yan Cc: Matthew Brost Cc: Joshua Hahn Cc: Rakie Kim Cc: Byungchul Park Cc: Gregory Price Cc: Ying Huang Cc: Alistair Popple Cc: Lorenzo Stoakes Cc: "Liam R. Howlett" Cc: Vlastimil Babka Cc: Mike Rapoport Cc: Suren Baghdasaryan Cc: Michal Hocko Cc: "Matthew Wilcox (Oracle)" Cc: Minchan Kim Cc: Sergey Senozhatsky Cc: Brendan Jackman Cc: Johannes Weiner Cc: Jason Gunthorpe Cc: John Hubbard Cc: Peter Xu Cc: Xu Xin Cc: Chengming Zhou Cc: Miaohe Lin Cc: Naoya Horiguchi Cc: Oscar Salvador Cc: Rik van Riel Cc: Harry Yoo Cc: Qi Zheng Cc: Shakeel Butt David Hildenbrand (29): mm/balloon_compaction: we cannot have isolated pages in the balloon list mm/balloon_compaction: convert balloon_page_delete() to balloon_page_finalize() mm/zsmalloc: drop PageIsolated() related VM_BUG_ONs mm/page_alloc: let page freeing clear any set page type mm/balloon_compaction: make PageOffline sticky until the page is freed mm/zsmalloc: make PageZsmalloc() sticky until the page is freed mm/migrate: rename isolate_movable_page() to isolate_movable_ops_page() mm/migrate: rename putback_movable_folio() to putback_movable_ops_page() mm/migrate: factor out movable_ops page handling into migrate_movable_ops_page() mm/migrate: remove folio_test_movable() and folio_movable_ops() mm/migrate: move movable_ops page handling out of move_to_new_folio() mm/zsmalloc: stop using __ClearPageMovable() mm/balloon_compaction: stop using __ClearPageMovable() mm/migrate: remove __ClearPageMovable() mm/migration: remove PageMovable() mm: rename __PageMovable() to page_has_movable_ops() mm/page_isolation: drop __folio_test_movable() check for large folios mm: remove __folio_test_movable() mm: stop storing migration_ops in page->mapping mm: convert "movable" flag in page->mapping to a page flag mm: rename PG_isolated to PG_movable_ops_isolated mm/page-flags: rename PAGE_MAPPING_MOVABLE to PAGE_MAPPING_ANON_KSM mm/page-alloc: remove PageMappingFlags() mm/page-flags: remove folio_mapping_flags() mm: simplify folio_expected_ref_count() mm: rename PAGE_MAPPING_* to FOLIO_MAPPING_* docs/mm: convert from "Non-LRU page migration" to "movable_ops page migration" mm/balloon_compaction: "movable_ops" doc updates mm/balloon_compaction: provide single balloon_page_insert() and balloon_mapping_gfp_mask() Documentation/mm/page_migration.rst | 39 ++-- arch/powerpc/platforms/pseries/cmm.c | 2 +- drivers/misc/vmw_balloon.c | 3 +- drivers/virtio/virtio_balloon.c | 4 +- fs/proc/page.c | 4 +- include/linux/balloon_compaction.h | 90 ++++----- include/linux/fs.h | 2 +- include/linux/migrate.h | 46 +---- include/linux/mm.h | 4 +- include/linux/mm_types.h | 1 - include/linux/page-flags.h | 104 ++++++---- include/linux/pagemap.h | 2 +- include/linux/zsmalloc.h | 2 + mm/balloon_compaction.c | 21 ++- mm/compaction.c | 44 +---- mm/gup.c | 4 +- mm/internal.h | 2 +- mm/ksm.c | 4 +- mm/memory-failure.c | 4 +- mm/memory_hotplug.c | 8 +- mm/migrate.c | 271 ++++++++++++++++----------- mm/page_alloc.c | 12 +- mm/page_isolation.c | 12 +- mm/rmap.c | 16 +- mm/util.c | 6 +- mm/vmscan.c | 6 +- mm/zpdesc.h | 15 +- mm/zsmalloc.c | 29 ++- 28 files changed, 365 insertions(+), 392 deletions(-) base-commit: 2e462e10265dcdce546cab85a902b716e2b26d9f -- 2.49.0