From patchwork Fri Mar 28 01:47:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ye Liu X-Patchwork-Id: 14031528 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 BF0A9C3600B for ; Fri, 28 Mar 2025 01:48:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C80AF280129; Thu, 27 Mar 2025 21:48:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C30CF280120; Thu, 27 Mar 2025 21:48:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B1FF6280129; Thu, 27 Mar 2025 21:48:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 95C1A280120 for ; Thu, 27 Mar 2025 21:48:22 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 645C1161AC9 for ; Fri, 28 Mar 2025 01:48:23 +0000 (UTC) X-FDA: 83269274886.13.0E2C2C5 Received: from out-173.mta0.migadu.com (out-173.mta0.migadu.com [91.218.175.173]) by imf30.hostedemail.com (Postfix) with ESMTP id A16A280006 for ; Fri, 28 Mar 2025 01:48:20 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=iQGMvmOq; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf30.hostedemail.com: domain of ye.liu@linux.dev designates 91.218.175.173 as permitted sender) smtp.mailfrom=ye.liu@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743126501; a=rsa-sha256; cv=none; b=EPy5o4WiWc089iJjVBvEjNXWqPeOwVxkFxp3QGZhHinlsz8HndPRJ2C3Mur3tcvObJ9S6R bmHvn18M7NPxRFFvbNBbRPoAsub+5aSBXkoGOBWERR2GyYbVHF04x7j5esN9GeoMpjAQVG LwZ6r2EA93htpmOjZubQGze2luHiCIo= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=iQGMvmOq; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf30.hostedemail.com: domain of ye.liu@linux.dev designates 91.218.175.173 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=1743126501; 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=QRFdqYEjJ09RxrhZfnxAliEIiR99BsC/945vMiY5ryE=; b=GMcl9VLgxeCmvtq7W2wChsdd1LT9jIebWzr7TiFj0EBeTgIE6eMXPRmK6XikYRzwvDkf9R VlZZEizhUlGn8Y0oJLxBl1mimkcvcVILAZ8OTN3PH5FgxvZRnNbaQGRRkxueJfKFJVn6xY IX+y8A269npP+bj/Os2vzc0LqNEx178= 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=1743126498; 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=QRFdqYEjJ09RxrhZfnxAliEIiR99BsC/945vMiY5ryE=; b=iQGMvmOq+HL+CTIiFOBAl09E3NqiCY8538HJ6ss2M5fjDGlrIEmNhNngrUKceqooz+f8my TZkTALs7M3JkBP5kgMmIsfvlf808HBSHD32iQuoIVNbelG4KKghfzj+AoIeb1gKKnnyt1a wLEFjQEJ5xi1gtL5oYuj2BBa1wO9pyc= From: Ye Liu To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Markus.Elfring@web.de, Ye Liu , Sidhartha Kumar , Anshuman Khandual Subject: [PATCH v4] mm/page_alloc: Consolidate unlikely handling in page_expected_state Date: Fri, 28 Mar 2025 09:47:57 +0800 Message-Id: <20250328014757.1212737-1-ye.liu@linux.dev> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: A16A280006 X-Stat-Signature: 7wree6ficwro77hpztg3kthxx7tpsyxg X-Rspam-User: X-HE-Tag: 1743126500-89899 X-HE-Meta: U2FsdGVkX1+rmG1b0U+xaSE22FDPHkfm/sARUZ8g3bI2O83ncbxuJiEwSY4X02nT0+Mpj1OSjImvdVbYj/rQjUtxR+yngBcgKSiW7Rd8IsxiC52WrPxLzs55vhLCr+ag5GlUC0tB04lm3dCN3zVNU84p+OgyH3IKhWa5IXU5Azv00os8kJQKzS0b1AkdEc7UXv742L8SF2z/7aJ47tJHnSyoLrl/GGYpdQTc22YpA9naUjwak2IjP82ulUy32jZuXeIuULrr3xSF+03l88Sd0O3LqKh8VFTWUUKx1QhofkTddfZ4CArDkhP++V/1QgX8cHaN0TgM+RswCgB9xCX95IQDxljek6rHEWnQz9s2yT+t/cju4nsYAb095vRlf78YDg3Dzxs8DAXwbZBSCZ2gY2bppFZQ9m1y4x+ShXwVJxjBoV9Q3JMeiPUHGfp8+vreb+ZVtFdG190txiWPH+S1DB7vDRuDfkeZPXxrbJomOSS5Nr4SFIaxkvQr6o0eN5V6osEZEDu9ByX0xKh6j3e2zawboAIGrAcnZxBKE02fNqWBqck2Fw2f/5/1QTLiiZx2RBWHYkS5Uj/dMH24WbhCOZlAKBmphAvKDijod0DY8j8CxzGzpdPTTg6qi4k0zHJJ4qRd1QpEtHHg60p5DUV/TOpmvS1FH34tc/E4OUq3dlSji/ttYmloUARXbB+y5tCjVm9SjvXX3E2bpNYChkbkaIKSkCDnR1/bZGWEc5fHFak/VAprNqAvU0guEQ2AMdX+mfzfRocdu54B7CCJEFBXMgWWUKSwD4Dq6p3l5R83vyOF8jtIOLic/rxCnY6ioIOMPoSH65V0rEUnxh+Gtvu/2G8X84/f+zmJpLso+2MLMGVIHumbJ20iq/P6Hl16FlRzfZj5H9jDmQkUMzNFBeBVgaQebfEVusDbXfexAWEL38h5CZSWZNxM8U+jT4ufKjsCt4F1ajOU5u5CrS79Y6Z dTajKQ2L yI980SbWa2VKZlQ9Pzvr0yfjM3FGao32Ayy2UvXB5pGVyPdc9OHXUmLyfdRH99WOsMoq9LEqEM9gAPd5GFDMn2GmwnhQMx9LpjFNG1STY+v5y3HWyi26MZMBSN5qW5MKVBr6Ujb/kHk3FoxMLe/2FpH8PdTcMdazvF3oUE0PlVEvFhaamRoNkhBdz7R/+AUgDBJnOHOfVKETA+5w/cGEwe4n8EgaDVSJ2SBims40GR2q07gh10LoMFq/XFajQI0Ngm8gvrEx32q9xPsHv9tWSNYlPYNUw2u4LFxS4X+Ufb0uxXSI= 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 Consolidate the handling of unlikely conditions in the page_expected_state() function to reduce code duplication and improve readability. Move the logic for handling __PG_HWPOISON flags from the check_new_page_bad() function to the page_expected_state() function, and remove check_new_page_bad(). Call bad_page() directly from the check_new_page() function if the page has unexpected flags. Simplify the code by reducing the number of functions and centralizing the handling of unlikely conditions. Signed-off-by: Ye Liu Reviewed-by: Sidhartha Kumar Reviewed-by: Anshuman Khandual --- V4: Use "imperative mood" to modify the commit and append parentheses to all function names. V3: Delete 'This patch'. V2: return true instead of false in the PageHWPoison branch. --- mm/page_alloc.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 2842da893eea..e8b95c6a96c2 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -903,6 +903,12 @@ static inline bool page_expected_state(struct page *page, (page->flags & check_flags))) return false; + if (unlikely(PageHWPoison(page))) { + /* Don't complain about hwpoisoned pages */ + if (PageBuddy(page)) + __ClearPageBuddy(page); + } + return true; } @@ -1586,29 +1592,15 @@ 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; }