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 2E8B7C61CE8 for ; Thu, 12 Jun 2025 12:09:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A4D4F6B007B; Thu, 12 Jun 2025 08:09:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A22946B0088; Thu, 12 Jun 2025 08:09:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 95EF76B0089; Thu, 12 Jun 2025 08:09:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7807A6B007B for ; Thu, 12 Jun 2025 08:09:32 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1D3F41D7983 for ; Thu, 12 Jun 2025 12:09:32 +0000 (UTC) X-FDA: 83546628984.23.8BCF518 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by imf25.hostedemail.com (Postfix) with ESMTP id 39160A0005 for ; Thu, 12 Jun 2025 12:09:30 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bpl4u0qS; spf=pass (imf25.hostedemail.com: domain of peng8420.li@gmail.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=peng8420.li@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=1749730170; 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:references:dkim-signature; bh=Qc+fJ5kUSUbKMuOdmwlhqgXfGsc4A0Ke0MUmskDWchg=; b=ja8UAfZEStLfF4p7vvwuDGHNZB/6n1+rUcDtOKDdW/bx9Y3XQcq1OZ9ivBfxL0WnVXvKkY N5Mz/yJtaZoPwaerMA7a+nmK1Vu7dLU/6IlT6wNoAG4XgI+oJ7yjUddLpkbrOokLMeLq19 pRjLPRtHrEOCKORMC2E0R4s0hkInQLk= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bpl4u0qS; spf=pass (imf25.hostedemail.com: domain of peng8420.li@gmail.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=peng8420.li@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749730170; a=rsa-sha256; cv=none; b=Nc4V8IojBj6e+Wshyu2J6Qj1M/7eb3JYKx69gxGARWwvTf/4OO2XXbbarJ5z3b48DDFQqo lDewSrTLsUNHud/HzumdHrEZngfQg8qLeeIu5SE5LUiW2zdw+Y7tAKozemZwrzOIQQY8XG hnESehXD/499kpzy7JtUKAPmEDHm2DA= Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-234d3261631so6168575ad.1 for ; Thu, 12 Jun 2025 05:09:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749730169; x=1750334969; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Qc+fJ5kUSUbKMuOdmwlhqgXfGsc4A0Ke0MUmskDWchg=; b=bpl4u0qSyf4Z1XZNyppKu2zWmaqc9zpluYlzRm+jmcE29Q26eAaZJ7N+iYMjRMeDUU Qob0qxTE5kEzr2hOcqILpzQyCbpetjlw9Z5USQPn8aGNFBnyOd9sgeA3YF49mMBKPhjT +UWZQ6AgJB9Fr02sE1hm+qWNGcGms7KXZjnBRO731I5WjqcKB/Q9sYcow7LojFaAxMYe JIfvFpbSiMet1VyLz67L1dOWUjw/BZg8Ik83Qm8mIvHVvWiv2OHgENm5vBq6NX6pmz0d GAvoX+kk5Cf8q1BTL9SBQXqIqpoa3npOwS9My7EZe3z1vMGQ26yi1oNuiiFgXuEGtfk1 3c5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749730169; x=1750334969; 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=Qc+fJ5kUSUbKMuOdmwlhqgXfGsc4A0Ke0MUmskDWchg=; b=P8ZXDOkIbSRfx42teDvS5b5evczmQx0yF0b4leTg+mwbi28PwjXl7gwDjtkSyyo7A1 NVx8RvSpGH2HnF3IL0iJmQM4DtmkDvXSX3kIyX/+NOVQAhfDzTGWo7EaO34E52XPlO79 1jbd3cbdoRhU8N8O9u5tUnn3P/i/jQ+9CMWkznhNXXOp0n2T95WKDe6AXiOfvmX+mQzX aZa5xSReWYkuH6gLFyyJs7Q4CnM7HJLhT+a/QnVP0s8o8X7WbXg7IlbF64IKrA8jKM13 KDTJ/qCbCjsV/v31w2b4tFLenaDgVPZY++GBM9wc9bioKExa+FeuAGNEqf7Lo7iCoBUx PhOw== X-Forwarded-Encrypted: i=1; AJvYcCXWvsbeBY2rMu6PzV749NiT0iqwxZ9FgkiAf3jLiUYLTZdy7jGnPH1DzAmA+AciZPzHpwYtibPiyg==@kvack.org X-Gm-Message-State: AOJu0Yyx4bWX5QQSzXfCT14TYoZfEPm9FrGraLWWu94LgWq/q5CDujr0 IIADxZC5WWc9RhzTGd1CyoOEFRNkNeo3uqSUIBlKWj86XDUxIS/UcQgVsw4nVg6z X-Gm-Gg: ASbGncs+WE21AmZe7HQ3e8YEvvRe1McP8B6m2IfnuCF+1Bfe29O1VNkQGss26II9+U4 2IbIoGT7ZrcYGN2dlV/2XN9Y0IuBaXwGeVl+pNCJKuYSpVihGsXr/ve3GhN9w41eJpJBFu4VfBX j+kIR5IlAiQqdB39l12JuexTtbnpaME4Ut8dJfun4+JGToWJU/USoKqKkk9oFw1v2C0GJjvm8CT 0sYCkZLuIDQwV0hI9VuTiuWJA+7P3LE98UAqdBpCr8et9Ut09VD8QmJ2RVwC3JebFS42ie0x6x3 Ns+U9Yoh/cAV9ACaaMo+AG9XKFNs6vrYGTPUP+KXmXeZ0fK/wRtva3HM0Fu7Z8D5qSeXtw7P0vi Y X-Google-Smtp-Source: AGHT+IG8kP612PZkW6Rpi0Vr/xRiBqYfLilslNPiXK39tjv65V4A6ZdWSeLlYYC8zylzgPFdEa1c2Q== X-Received: by 2002:a17:902:d58f:b0:235:ef79:2997 with SMTP id d9443c01a7336-2364cabaa7fmr44325705ad.47.1749730168776; Thu, 12 Jun 2025 05:09:28 -0700 (PDT) Received: from localhost.localdomain ([43.225.59.120]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2364e717293sm12166515ad.196.2025.06.12.05.09.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Jun 2025 05:09:28 -0700 (PDT) From: peng li To: david@redhat.com Cc: Andrew Morton , Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , linux-mm@kvack.org, linux-kernel@vger.kernel.org, peng li Subject: [PATCH] mm/pagewalk: Clean up folio_walk_start() by removing expose_page Date: Thu, 12 Jun 2025 20:09:03 +0800 Message-Id: <20250612120903.2678910-1-peng8420.li@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 39160A0005 X-Rspamd-Server: rspam03 X-Rspam-User: X-Stat-Signature: wb6894wsjog4zfgdrn5bhiucna415r9k X-HE-Tag: 1749730170-598096 X-HE-Meta: U2FsdGVkX1+0YaijSr/VIDnAKoq34HdiJxhQ+d/FGnKkI/R/Rlc7h+fU8AfCh1Ad+SGOiNT9ykU9UDHUHcrmQEvGV3O+vWIB6km4TSyMC6lCjj9EPtmZ+CpWrCWAl7diX6706U6NFPMBqKqd3+y+ym++pPELgfy9t4kTVvwt7JLJZVmygDTTbwX0/dVD7Kyhbesvk5CJqcylaW5q5/BHF/ayHknRNMyifJOFdbB9LXyojhNRH3Kv6x2Ag0SwEgrW8qUKQLrU/R6/3FTQxZehwstzbgg8XmFI9LnLBB9T4KBMTZb1JT0HW51ZuGpTI+wriJdkg6CPk+F1g7ezBvvRt2cFh0APY/UTzaL2NG290gIgIkebQ3Ym5SdGI0fl4Gy2JrffOyFOBhD/F9QdY1muU15Y3IyAy65+HX3ehz9+JKGBPi2tsTChtR34fz0/Lsp9s7jLDTH/naED5C0un+QZY2j9sh8WEOIxjhVd8i4QFfKVJ0Vh70w1oAFUxEa/8nS+Sv1sZT+Mf40S3VeB8luv/E/LoohQQ00tm0JAfOzUuml0rDFjBSuuji3oyR4CS5a5nhz9iQjCJPlz5hBuhh86rNkgdzi9R/r07yElrNpwHFoJcwnr04FPuwFS9OzjFwgPJQDGapTK3kx1fW74Z0Ro0Ha++KQXI6bRxlh8M616LkM4eVFvidwRIffMm4wmAdP/W8m0+onEbLYOMcJeCyZUV/bz4wBRB7l0XlVQbZlcpfIFyTiIXfU5BBq0yH7Y/JXmJfD8E8fAoN20QpxYyPOqDcNvP324fg5xFFHcuRH62ES2vamYlI8oU5JtjlaY5pfKAXSppp5z2rvIO4K5yfOQu7HWA8ft7V4dyvobnEGlmjbI9NIgj44+ASDITK0cIh+yC7nnoNF6YrD7mlMLlnl+Ad0Y6dAoFdey0uUzoFZS2RncELgFzPzPeIBxXhNi7ssR81LFiNHkLSxdLHPYL8/ 3u+sONd1 CVLhKZ7QDpZxBkjE4jEHhHl61pPAet5RNjgPGqi7551V42HlSDO68FS5AdUnLMyCJT73Bt3dBnHLF8z4BKEIwqoAcIGvA8TogXKr0UNYywgBvZ9IFZBO1yUQT2ERgFPd955E+HPSkIENaO8TbSyVh/GjNO8WV2fPoED6vnaTQuesLjgOCS8yya+NVR4ua5Ka+QY1jDdW7n1+z8Ego9chtYTqspgNEsZAM6aK85aoyecLP2Rm8Q88I5vy9u3QfHpx7tLM71E88Tc8TwCslfXCFHjYfeVLr+3p9amXfL2oPJX3De4Qm6En4ALnFZOgeDVMX49V0P5z/rYLF48SQQiAKVSvpPkGFNSbeKEavX65J+15VBWAeS7IXCZx8DN2Co7MimswkbAT87Gv6G94rLYsXQYKzsnS5KO9mG8kpcOO2kRthMunnMcz2hR5U9bxnl55kuHwL/fVBBpr0ylZwgiBTJBXLsdk3JNu4NlI9bNHiEh0lTwtoyZw7Zxn0uYg9+2Cqq79zQv3pxtt63M7nS5Cpz8KVsA== 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: The name expose_page is confusing to understand. From the code logic, it is probably meant to express "belongs to the normal page and get offset from the mapped page"? Perhaps changing "expose_page" to "normal_mapped_page" can better express its behavior? But perhaps its existence is meaningless, because fw->page can be directly confirmed and obtained from the page type without the need for a separate flag. Key changes: 1. Remove expose_page and its conditional logic 2. Always set fw->page when a valid page is found 3. Add clarifying comments about offset calculation 4. Initialize fw->page to NULL at PMD/PTE levels Signed-off-by: peng li --- mm/pagewalk.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mm/pagewalk.c b/mm/pagewalk.c index e478777c86e1..15150c27b9cf 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c @@ -831,7 +831,6 @@ struct folio *folio_walk_start(struct folio_walk *fw, folio_walk_flags_t flags) { unsigned long entry_size; - bool expose_page = true; struct page *page; pud_t *pudp, pud; pmd_t *pmdp, pmd; @@ -884,6 +883,9 @@ struct folio *folio_walk_start(struct folio_walk *fw, * support PUD mappings in VM_PFNMAP|VM_MIXEDMAP VMAs. */ page = pud_page(pud); + + /* Note: Offset from the mapped page, not the folio start. */ + fw->page = nth_page(page, (addr & (entry_size - 1)) >> PAGE_SHIFT); goto found; } @@ -902,6 +904,7 @@ struct folio *folio_walk_start(struct folio_walk *fw, fw->level = FW_LEVEL_PMD; fw->pmdp = pmdp; fw->pmd = pmd; + fw->page = NULL; if (pmd_none(pmd)) { spin_unlock(ptl); @@ -912,11 +915,12 @@ struct folio *folio_walk_start(struct folio_walk *fw, } else if (pmd_present(pmd)) { page = vm_normal_page_pmd(vma, addr, pmd); if (page) { + /* Note: Offset from the mapped page, not the folio start. */ + fw->page = nth_page(page, (addr & (entry_size - 1)) >> PAGE_SHIFT); goto found; } else if ((flags & FW_ZEROPAGE) && is_huge_zero_pmd(pmd)) { page = pfn_to_page(pmd_pfn(pmd)); - expose_page = false; goto found; } } else if ((flags & FW_MIGRATION) && @@ -924,7 +928,6 @@ struct folio *folio_walk_start(struct folio_walk *fw, swp_entry_t entry = pmd_to_swp_entry(pmd); page = pfn_swap_entry_to_page(entry); - expose_page = false; goto found; } spin_unlock(ptl); @@ -942,15 +945,18 @@ struct folio *folio_walk_start(struct folio_walk *fw, fw->level = FW_LEVEL_PTE; fw->ptep = ptep; fw->pte = pte; + fw->page = NULL; if (pte_present(pte)) { page = vm_normal_page(vma, addr, pte); - if (page) + if (page) { + /* Note: Offset from the mapped page, not the folio start. */ + fw->page = nth_page(page, (addr & (entry_size - 1)) >> PAGE_SHIFT); goto found; + } if ((flags & FW_ZEROPAGE) && is_zero_pfn(pte_pfn(pte))) { page = pfn_to_page(pte_pfn(pte)); - expose_page = false; goto found; } } else if (!pte_none(pte)) { @@ -959,7 +965,6 @@ struct folio *folio_walk_start(struct folio_walk *fw, if ((flags & FW_MIGRATION) && is_migration_entry(entry)) { page = pfn_swap_entry_to_page(entry); - expose_page = false; goto found; } } @@ -968,11 +973,6 @@ struct folio *folio_walk_start(struct folio_walk *fw, vma_pgtable_walk_end(vma); return NULL; found: - if (expose_page) - /* Note: Offset from the mapped page, not the folio start. */ - fw->page = nth_page(page, (addr & (entry_size - 1)) >> PAGE_SHIFT); - else - fw->page = NULL; fw->ptl = ptl; return page_folio(page); } base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494 -- 2.25.1