From patchwork Fri Mar 21 01:13:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ye Liu X-Patchwork-Id: 14024745 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 AA463C28B30 for ; Fri, 21 Mar 2025 01:13:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1F88E280003; Thu, 20 Mar 2025 21:13:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1811E280001; Thu, 20 Mar 2025 21:13:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 02115280003; Thu, 20 Mar 2025 21:13:19 -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 D3A0D280001 for ; Thu, 20 Mar 2025 21:13:19 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 9693E121B1B for ; Fri, 21 Mar 2025 01:13:21 +0000 (UTC) X-FDA: 83243785002.28.A5A716C Received: from out-182.mta0.migadu.com (out-182.mta0.migadu.com [91.218.175.182]) by imf02.hostedemail.com (Postfix) with ESMTP id 0EB2680009 for ; Fri, 21 Mar 2025 01:13:19 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=jLmr8YWD; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf02.hostedemail.com: domain of ye.liu@linux.dev designates 91.218.175.182 as permitted sender) smtp.mailfrom=ye.liu@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742519600; a=rsa-sha256; cv=none; b=tiR2ISkII5yCSYZxgDdrMeEWtb0u8MaU8ptaJsRYcpibNO9bcvM72sJ4XMpdezCg7AMuQv oNJQjX9Yncs+isvQl/kXDKzO0b1MzF18v4xlx+i/cILzQXHFDigNV1MSOnysoV8S2Udg0m xGCEFyzWyFy1dmj5AAyCGoXc3CZsGQA= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=jLmr8YWD; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf02.hostedemail.com: domain of ye.liu@linux.dev designates 91.218.175.182 as permitted sender) smtp.mailfrom=ye.liu@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742519600; 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=KbGMpgFUHUPbIp1VN0J4iVKPUjd5vasZbJUy7LDt1cs=; b=VQ5YQ3AUUIJ+vJpYm4ZWQiv18p9Ymm82Yh8Dg881Mo6EgmgjZllrud1pUUNreAyuT8QHDd 7LqLuW5Mujg31NGPAbv3mYtmfl6WZ2skyClDp2UJwXMD+kkSvgjTpnkuWPF6VjV43awqAA gXB2l3zp040eh/XZJQOJwLNmlETwy3g= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1742519598; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=KbGMpgFUHUPbIp1VN0J4iVKPUjd5vasZbJUy7LDt1cs=; b=jLmr8YWDNLmYeL1LOdLCsAn76LkpMSCCwveHYn87nMTiPL/GRgWzch+MIoWGFmeDSP32lh 9KumBFQY6VeWtX9ODPo9OJnprWYPCSmUs7/2sLj69WGHK0h/5mULfk0dZ+i2wGSXP3t6uI /1qC7jk42GGRGiQiK40smHMY/muUShQ= From: Ye Liu To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ye Liu Subject: [PATCH] mm/page_alloc: Consolidate unlikely handling in page_expected_state Date: Fri, 21 Mar 2025 09:13:04 +0800 Message-Id: <20250321011304.549908-1-ye.liu@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 0EB2680009 X-Stat-Signature: xpua8pymrigbsb415bjrqy3wzsj48nrb X-Rspam-User: X-HE-Tag: 1742519599-708301 X-HE-Meta: U2FsdGVkX1/jyPSOo45H+pp3T6QrA/SlMr8fvbc4+fAQy57+u/l0UPtSTVCBKOVp1xSsnmaWIudSymk1ikh4hSa7mOkiVxcqly2A56f4wBLBAabiqHj7zt7ptoWgG8p8tPPplf/jsZqpC1wl+ynyl9oa9HaiIFpmxS+QHdiIbb5z25q//tce4nvls0dxYGJD6KXXTE/WRT9g0Wa0+3EfPPE6pqC1m2QsTQgXD4uI3l4OPuoCJojFhpTRI79jm8hIDsiPdjH+Mh1pXr088tg32B/fnr9pgwO4worv0xl8h7E2KlZ0YVC3EozjZ0EKkk60par0WNf//B1mpVYApx52p5SB7c2e7asD20oHh91dW+lTz61h7CBO59qwYNExAF/0ep7QdRCRp9JPE54OWvfMsQm8muKrU5EG1/H3Y52Lf6S6XtVz3XK2xLX7dM1s/obI68xWiPe/LaOeCRskxduxtLCshoELfTcz40DGQJste7BJniTHjSstCThJYFjkniNSipnHt+n8OLcASsfTtURrZBA+VYEwcqQPvonuadQiHVcIng7ExvETDLsRZZESGZUW6WyL2UsO/sHj5djELD6QSDvT2XBzoUHHYJcqA7qL+zDGvudcTP/KHWv/C794ckktdE6zWDwDcIqUfl6Cdo99mn5slGfbw8OsPmssOB3hHaj/IsnhYafVwZdDQspRI9Mfx+kw/JXZ0a4fycih0PA3DIQO1IEpS97JKHIpT+us9pmkgBWuvm7uw1MqZVSnL7zmYWjTYaAZLPKVCoU7qyuXPCT3aw6lLLvX15bE1TUUFMdOulpf4z7QI09qT0vJ6AyGM5IVeFH53klk2yQQG/712xmKFgFBlL+w11YKk7uiWbV+UaMDzbZxFvVTursj9wpNai4GwccmCO2bwB05U4yGJu4zgrxL75iHYJfiEbuG3sQ5wPj69WGDTpy37inhXFf5oquaTw9+054HK4sLo9G HLhmhWVb o8ySgb9iXQmcZLdrkl0yG7l9sbqpbyzgvPbwFUMioGNTRLm9if6ZyAhbpPVzaN3Qsu3xQeHoU8TuQbADny6iiCGr7QYRsLD54IFDDDG6nxkCgVXA0VWPd/ajXfzNPor35NLJtSeFuNnmh21sTbulP9c6ipd6JLediCAet9JJqpxTj05gdfsTnNM+9/0jJcr1OrckUc6HV8bwz06IVCvu11JUm4A== 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: 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; + } + 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; }