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 5334DC8303D for ; Fri, 4 Jul 2025 10:25:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2F9866B8022; Fri, 4 Jul 2025 06:25:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2D1716B800A; Fri, 4 Jul 2025 06:25:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 173B36B8022; Fri, 4 Jul 2025 06:25:45 -0400 (EDT) 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 EFC966B800A for ; Fri, 4 Jul 2025 06:25:44 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id BFFE1103D01 for ; Fri, 4 Jul 2025 10:25:44 +0000 (UTC) X-FDA: 83626201008.26.1445A92 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 B073A140006 for ; Fri, 4 Jul 2025 10:25:42 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ePi25SIX; spf=pass (imf26.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=1751624742; 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:in-reply-to:references:references:dkim-signature; bh=CYTSovr6D54lprWegV/WfQaWtrhfAm9Hhj9zhgiC0NY=; b=swMrQW8QC9ZUPnKkUPVUpLgJeJQ1npAHhtC7bERCi0GMDcPt8wfa9LWwAvQyI5mzicDZUx meZtWgmcIssl334UFmZ7h/7rZqePl87B7XB7GeFDYjirc6MtieLBWoQg/4Qey2u4Kbluki 8iBZcXNsT+x8xKxELkNr24zI5+bxfSM= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ePi25SIX; spf=pass (imf26.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=1751624742; a=rsa-sha256; cv=none; b=r3K5KygID1MSu08nACIPjAa/Ig08Sk+0YJp21Q93KcEFGb8HL+fjRavX9OMhW5fPJdlG5O DQH+GpKXT/L4WkdOy2r7E1gJsDT8ulHTjtyTzKYAdFbnR+/9nddlQOh9BQ8aUMs3XLUbpS +iHh8B7/cKHCDWUaDJ9UljNHOF1JjtQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1751624742; 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: in-reply-to:in-reply-to:references:references; bh=CYTSovr6D54lprWegV/WfQaWtrhfAm9Hhj9zhgiC0NY=; b=ePi25SIX07aLObIWf1fHZYHCeJc9JzriuP0qsGznGmfBO8eFlYC2q2i1/MF+qyalUcQs5r tmHkBbgsoOrPo791AKnEKX4w9jeBQupdyc7UbK7dfCNXNWoR+FQPMzu1w/Q3db6tRDTxub EVyyoFTgPTZ+f8PDpiPH5dkjhMNLXjQ= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-220-KPvyxi_oNWizmr21zHvkQg-1; Fri, 04 Jul 2025 06:25:40 -0400 X-MC-Unique: KPvyxi_oNWizmr21zHvkQg-1 X-Mimecast-MFC-AGG-ID: KPvyxi_oNWizmr21zHvkQg_1751624739 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-4530ec2c87cso6375915e9.0 for ; Fri, 04 Jul 2025 03:25:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751624739; x=1752229539; 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=CYTSovr6D54lprWegV/WfQaWtrhfAm9Hhj9zhgiC0NY=; b=LlPXRG0mnNy2PLmRM+0jgBvTfauzD/lMWwo4St75eEmSCYWMMy91uuhuW+HtY4E3Kg gfpImW3uBtGtOrI2+PEgq3+MS4nV5p4tn/um+QPdji5+cl+2cVptQIntwzGvTwzicKKl chLBcK664UzLNDwhw/uoZGdINJhRVzyMjlT5VWiyY6zVoiT6jmvQUR/01TN/tpC/6ae1 FkXJnLoTJ0Al2gcPJafKFE7ATnAddXAVA8T7tZE/V84xD3uPNNLP8KFTpPgEKFqxo/Zs AIGLVYuYEqqU/bTPOkWIo4N/7wmup7kkGtsKHIgyNWVKMzbcgHgIC76xYqJI365QPNXp zrjw== X-Gm-Message-State: AOJu0YwPiItu/cCzDgbqV91LYFa8mh2mF9rJwEKWPZXBV0Cb96rumL9V zFNg+gy+V++jLGDmA3JTapm9OCppn+7Bz1rmw/VkGQ6z9Haf4HI7DUMeuxK/+pAm3OXL14vLTZI w5UJO0LTxGADnFi4Pty5vEpDJSwQ4Vhmt8ZAQ+PpQSBIKGvU/voW/ X-Gm-Gg: ASbGnct8Gn5EuxiUJK7WAuuMfdOKShOPp9zKJAbD/n8CNf+YbQvOSz1+Tuvu8d+ZNV4 +5LvTj/sc4MUxrctg7+pHfeKaM+Qq0i6dkKPxw2w3yeUa5eociDrYATMJTMV0Y6WGVIKtn0MaWX zvvmzqX1QJlO/sJSiRo5r/dL4YKm5jh81ACmUeN/CK5HTqwxrkxA/X7zoj8Zzl/BLHfAFHbk6Hz +8H4onX6w2KGsUclwaqAzla6i0FfVWdrakc9miWcDeoP1pcP9asZV6dtSo3Rfvv/uPMPCPB4JKc AHCc/t6KMTcLh6VTectwgIrrySNi9WFzEyCcjX2QCpj+aLPVnSoI6fr+ooFMs1mZVvxDgbkl+it JlfvUhw== X-Received: by 2002:a05:600c:3e1a:b0:450:d01f:de6f with SMTP id 5b1f17b1804b1-454b30aff3dmr25066415e9.15.1751624739247; Fri, 04 Jul 2025 03:25:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEabPcFPa9J30O6qNf8/Kx6cfnBeZR0NWqXc94Uy+RT4akZprmrg4imDnBXRg/gEanMTx6ZJQ== X-Received: by 2002:a05:600c:3e1a:b0:450:d01f:de6f with SMTP id 5b1f17b1804b1-454b30aff3dmr25065735e9.15.1751624738758; Fri, 04 Jul 2025 03:25:38 -0700 (PDT) Received: from localhost (p200300d82f2c5500098823f9faa07232.dip0.t-ipconnect.de. [2003:d8:2f2c:5500:988:23f9:faa0:7232]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3b47285d3c6sm2121167f8f.95.2025.07.04.03.25.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 04 Jul 2025 03:25:38 -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 v2 04/29] mm/page_alloc: let page freeing clear any set page type Date: Fri, 4 Jul 2025 12:24:58 +0200 Message-ID: <20250704102524.326966-5-david@redhat.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250704102524.326966-1-david@redhat.com> References: <20250704102524.326966-1-david@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 5omjKmC7k0mTifQOCHXlcrIyJNkLOWwefo6uw4QN8Ss_1751624739 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true X-Rspamd-Queue-Id: B073A140006 X-Stat-Signature: 47quuicnyc8qiu1s8eec6pwooh55k94j X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1751624742-406413 X-HE-Meta: U2FsdGVkX192GQk7rYQ/wwF+GeClvjT5A0+3I/luYhfQC964RsWmxelrr8JjpT+s/Jcgxeyv9BIBO3Uqg50D8g7w59UJ0C5K/8x5QRhr9i8cS7L1tYrcXEZwlhqzZdtID20qsA9WpkG00QOUtuMRlnkiaBjLf1jUA2XWn2Ox5YCrQpwI92sIrRi/uAJ6QIW24tWzP5WrDTOwtllGksdnhCcW6PDisstVQ92LbGJCv3rnggfiyQSGz0E+mylUysMwCKUzlNxjpoBxGmUmZBuAIzFP5JkB1Na0GU0JnGkQtYTJTF7ZKuGQkjrOwjUcMOks+VNmjFBLnkKoTCdcB91jA3ctedntui+tO0PfnezOTlsUfBh5oiznOtXrcWgzFJQXEcx1eyK0RULIF21hXdx0TY/ugruKLMiHMWvFCtjVNk4/0BQlqGirU7hAfnpVngqBqfyVUMkuIltY1KQnWdTG8EPGwmKS0f/SSbepPRM3t9SgLXq1zDRQwm6wLpzTfYlhBWC/8M2vi/LZ96upR3BjiQK5rPCBon0AuAc8FwF6GvlRZhnrFRwFGqrWiisbMl2xPwEP4Itk802U7iGwbEot+f95po7TaERoCVtB3mSVxE5Qh8Simm5o6xQDR/vyZ6jDPvZTQF3riJ6xIgado0tpsxSRKJV5W4P7N1vvjij+KOgsJtRGd1IG/UQx/5QYHmdM34uvVMYogScRUPCq/9qx5SJBwr5EXSVnu0yMqiLrHMGNTwrLQFpY463VFznL5BK12OcohT+4W6t9mF8nL2Ee+mcGPbpsTtYjlcH0UZuP6IUSK0o+4+Z/qSDd61lDtXuiOq5fMLaCNQZzVpgaoGrsOH6ydORVKqJIv0NWEIfxUEAGK1gJRmTuhRRbLP0NWiN2gL7xE3Jmqzgv5bUdFmcE3kHisW7upP1X48KC1Q5AkEtyHTeDeW0TRarXHe3QEDzsQtdlP8zxyjW7xjyQSZJ h6RFlWDP MFQ93b9d7P+nAeQCj+k9eEAMo6Wjaktd1dL7/P8PQ9bQIPxY8hp7OqdOtYA3F4gVfKRKZTWs0mzXdqT4jT0xzLYKO5bRmOJnluNz53CytKx2iqjXO+WvVBem44vlctFii11OM5yxhoU6HcuTUOHS1oItNCdc4dtpMmobr9LlhyDDZ9RIQtX5pPA0AXBV6LIMvI9JVgDRqtIRc2pmH5We1tlfrAQ== 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: Currently, any user of page types must clear that type before freeing a page back to the buddy, otherwise we'll run into mapcount related sanity checks (because the page type currently overlays the page mapcount). Let's allow for not clearing the page type by page type users by letting the buddy handle it instead. We'll focus on having a page type set on the first page of a larger allocation only. With this change, we can reliably identify typed folios even though they might be in the process of getting freed, which will come in handy in migration code (at least in the transition phase). In the future we might want to warn on some page types. Instead of having an "allow list", let's rather wait until we know about once that should go on such a "disallow list". Reviewed-by: Zi Yan Acked-by: Harry Yoo Reviewed-by: Lorenzo Stoakes Signed-off-by: David Hildenbrand --- mm/page_alloc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 858bc17653af9..b825f224af01f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1380,6 +1380,10 @@ __always_inline bool free_pages_prepare(struct page *page, mod_mthp_stat(order, MTHP_STAT_NR_ANON, -1); page->mapping = NULL; } + if (unlikely(page_has_type(page))) + /* Reset the page_type (which overlays _mapcount) */ + page->page_type = UINT_MAX; + if (is_check_pages_enabled()) { if (free_page_is_bad(page)) bad++; -- 2.49.0