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 AF93BC35FF3 for ; Fri, 21 Mar 2025 05:40:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AABD9280002; Fri, 21 Mar 2025 01:40:31 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A5D0C280001; Fri, 21 Mar 2025 01:40:31 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9251D280002; Fri, 21 Mar 2025 01:40:31 -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 74EFC280001 for ; Fri, 21 Mar 2025 01:40:31 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6D6581620B8 for ; Fri, 21 Mar 2025 05:40:31 +0000 (UTC) X-FDA: 83244458262.19.DBC0E93 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf24.hostedemail.com (Postfix) with ESMTP id 3AF3B18000F for ; Fri, 21 Mar 2025 05:40:29 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf24.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742535629; 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; bh=ocrXhRRnBmv9g4sj3f3z2di4fdLf9BXB9Hj3UP+A/GE=; b=zs7pKzHdY5SfNPd9r7uy90GsV4pdN/IvFP2jXg0MBVWdUTJpq+V/fp6PsJePSwKproPQy5 pBiY8UR11CY3Lp3WFHs57RMvUO+EBh4WPgAtUbbKsTpMPPUIs5irspHviRfvp5Pj2DWBpV iyaq8TbKWzDZaoHcm894iORSNB4dN+0= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf24.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742535629; a=rsa-sha256; cv=none; b=gXZNzEuAOPyAp215GV3ITm0Aqu5UpM9Lb6ilurMrj3yXlCeeZvA/aFQ/XWo16TYtWMXj2E 3nqqX3Jvq3LTAJSMxu/Ya4JYmWKlMm5TzGfZfSYPstIpaiX/CbznBu33EFcUq+saQ7GPQf xkASJooB9SYUQ4gkbwUDMlBWHJx8bhQ= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B28FF106F; Thu, 20 Mar 2025 22:40:35 -0700 (PDT) Received: from [10.162.16.153] (a077893.blr.arm.com [10.162.16.153]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 905973F694; Thu, 20 Mar 2025 22:40:26 -0700 (PDT) Message-ID: Date: Fri, 21 Mar 2025 11:10:23 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] mm/page_alloc: Consolidate unlikely handling in page_expected_state To: Ye Liu , akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ye Liu References: <20250321011304.549908-1-ye.liu@linux.dev> Content-Language: en-US From: Anshuman Khandual In-Reply-To: <20250321011304.549908-1-ye.liu@linux.dev> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 3AF3B18000F X-Rspamd-Server: rspam05 X-Rspam-User: X-Stat-Signature: 998ah91rk6osrgdu4d66r5q94kwug6ey X-HE-Tag: 1742535629-266129 X-HE-Meta: U2FsdGVkX1+or0hUmiNSBCfhGKrIl5IniI7HTLW08OypYK7APgm4UyqSX/gxMIKtZRm8UXOnW4p7zv23RoeBkx5rW7eT0x6poGXOD4V3sl4iZ2wpSchg7cvuqJjgx2biQAAtGA2p+32Y5H+wjBZYkTFi5ToHcCEy31rhj82yQ15ZSsSJsjrBjrzms7u3XsGiMjQpB3moYW2YeQI0BGlVrS5OEfqWxrUotcuHveA3njkwYdl9JDjwgVUsw0ZQZj5z2giqN6dHH6IMD9XcwK8vGh+06T+mhzOE3PdByUMEyYIZplOQhVd4Ve2fFbrYT2csZPRkojtkU/RoFNnycx4TVzi+0NLzNO8D0L7t69sUvEkfPzR/lJvE8Kk8txUajzVsvOgrOlUiCcdQ6hmas3BzzTNGX/Op0afohuwAXMxqY3IhBQujXhN0fJ0nXzXvqF6swTwJEzFQxFfelrZhOIY/PkDsUF8ArwmTqp0rtftarpf9X840i7jmCo2NvcyNcE1wkQjeBdzA0Epk3+517nCiZs1v2ow7CXJKJ9yuFtcrpUCxfMPwvipFjFEhl9xpDJY+Clbal6sOeVcv5CThgckDTWUtxe6Ds+fupD1J7F0nBZIGlKeeTKvv60Y3mOD2pHHlZuDg5uQZWy4RCK7SGDapb7Pb/xIi7kFs2mN+xOllQglVxqycK1zwtwe4sga1FEOOHXFpz6jRK3zP78utzXeIA9RCh+KNYtPeGTCu4znYfGlqu/cQ6WV4Zjl7c5lY70echy7SckFqgcJauSBW/l58xIgiiyjvaFXcnrh/PORHlPfHmNkg6ShrSnfqVr9m2CUv7icwjMV5fy+f2bE2F8Xo//NM8XyKKOxuy66C9xwpMiA13sDQADTnLNKCIntjzaXaXBl4VSoM9s8VMplzSJge1q6PfJdIC+cfWA5bezA9DWLQ5HveSDMdZQy4BNSLG5s7IOnzQn9DJulBUhO49ew 7Rnrf4ss spCMhF8Gzh4mTGEjpi2UI8hJCVLIYd99iKm9P1Df6Jr+Z6phedT/xY3iKcDeiXtEoWKhc7XZarYdAoPEXRB9gnDENSdifZYBhdgpVutwqgXEbp9Mg+yMfsO1/yTEIFoEsfs0c1wlI5y47Obwp2/JDebgbquKNYDhajuwsFZaYIKQ/UxUVfKIH/M2CjY49CsGNw6ZQ 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: On 3/21/25 06:43, Ye Liu wrote: > From: Ye Liu > > This patch consolidates the handling of unlikely conditions in the > page_expected_state function, reducing code duplication and improving > readability. > > Previously, the check_new_page_bad function contained logic to handle > __PG_HWPOISON flags, which was called from check_new_page. This patch > moves the handling of __PG_HWPOISON flags into the page_expected_state > function and removes the check_new_page_bad function. The check_new_page > function now directly calls bad_page if the page has unexpected flags. > > This change simplifies the code by reducing the number of functions and > centralizing the unlikely condition handling in one place. > > Signed-off-by: Ye Liu > --- > mm/page_alloc.c | 26 ++++++++++---------------- > 1 file changed, 10 insertions(+), 16 deletions(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 2842da893eea..d8d04ac1d709 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -892,6 +892,13 @@ static inline bool page_expected_state(struct page *page, > if (unlikely(atomic_read(&page->_mapcount) != -1)) > return false; > > + if (unlikely(PageHWPoison(page))) { > + /* Don't complain about hwpoisoned pages */ > + if (PageBuddy(page)) > + __ClearPageBuddy(page); > + return false; Should this be return 'true' instead ? Let's consider a scenario where PageHWPoison(page) is true. Previously bad_page() was not getting called as check_new_page_bad() will return earlier before reaching bad_page(). But now with the proposed change here page_expected_state() returns false and hence bad_page() still gets called later on in check_new_page(). There is a change in behaviour - or am I missing something here ? > + } > + > if (unlikely((unsigned long)page->mapping | > page_ref_count(page) | > #ifdef CONFIG_MEMCG > @@ -1586,29 +1593,16 @@ static __always_inline void page_del_and_expand(struct zone *zone, > account_freepages(zone, -nr_pages, migratetype); > } > > -static void check_new_page_bad(struct page *page) > -{ > - if (unlikely(PageHWPoison(page))) { > - /* Don't complain about hwpoisoned pages */ > - if (PageBuddy(page)) > - __ClearPageBuddy(page); > - return; > - } > - > - bad_page(page, > - page_bad_reason(page, PAGE_FLAGS_CHECK_AT_PREP)); > -} > - > /* > * This page is about to be returned from the page allocator > */ > static bool check_new_page(struct page *page) > { > - if (likely(page_expected_state(page, > - PAGE_FLAGS_CHECK_AT_PREP|__PG_HWPOISON))) > + if (likely(page_expected_state(page, PAGE_FLAGS_CHECK_AT_PREP))) > return false; > > - check_new_page_bad(page); > + bad_page(page, > + page_bad_reason(page, PAGE_FLAGS_CHECK_AT_PREP)); > return true; > } >