From nobody Wed Dec 17 21:11:32 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B5E31FA165 for ; Fri, 6 Dec 2024 10:00:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733479204; cv=none; b=ugipzhCKfk8SuJumZOQFAjwQoeBC5IC/RN8PhYg9LG0ik0zgmIOhtyp3ST9irYwZEmzc1m1GHgeqiGWPZ+eDUMXfd4RYD8aEfeivtvHI9Pn0JGwZciInD7E+sWvp6n0AbLr4hPXnGoOFgWbhQEUxTaUU3IWTyWxtHJdqpsaHMJc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733479204; c=relaxed/simple; bh=pjIRO/Y7PrYFo3jwVppsJYXQAqZQuh3fOfMXy7mxQag=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S/W1Y9dkcLE2dyxLhxl5wdlszPivBNInH1ZWrO6EdVHLHXichL9WbrfPC2t8BzvPnr3frqtSxkXgEnXy0VrPoAE7ugqwBm+P5JKf2PG0huTIkjZ1+CdLEcHMNzi2+IRm/6hoFnVno9OR+e9J/4VdxYFX6cl3pIPd31vFn/3CyCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ORsI0wLg; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ORsI0wLg" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733479201; 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: in-reply-to:in-reply-to:references:references; bh=OHFxPv9O3q7cC5DJx/fwSJeTT3u7bfbiSrofwZ2W0U4=; b=ORsI0wLgOmTqR5VfiK/XzRIXA8BP48tNylwi0MQEbPGeW/Q40yKMY+idjSr7mMc02T44xS eO5dn4kO0rXBbx0XXsLlZuUPxed3PlBiAqgjWi0vipek4TSd9N1uPMk2U/GUxwWkjefK+4 e1XGdEx2Ituj3pFagbmYhRunIGojFc0= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-342-s5u-IjJBNY6UVJ6ytmW9Vw-1; Fri, 06 Dec 2024 04:59:59 -0500 X-MC-Unique: s5u-IjJBNY6UVJ6ytmW9Vw-1 X-Mimecast-MFC-AGG-ID: s5u-IjJBNY6UVJ6ytmW9Vw Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-385fdff9db5so936191f8f.0 for ; Fri, 06 Dec 2024 01:59:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733479198; x=1734083998; 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=OHFxPv9O3q7cC5DJx/fwSJeTT3u7bfbiSrofwZ2W0U4=; b=rh5dKEdTBwMCab8DQ4eGxYDO1/u0TMvwecJqs3jNsj/uEnIFmqXrPxkrITDAcxzXCv uUqEgYOHva1Z/4SmhRkNIHFy8GbNBpCUi+HJG+mlpxAN3oOMoOJmY08B+cHLjxy8MCXy zw0swv5qSEpVf2lXSMdpGQRBIWAQXa+ZzRpn40nCQw6Dk9uGnOUjCzRs2WuyOlT+iFw4 Y5+ZvzalgimxfrmQMP+0ykcD4UjHe/p1vFQYjXowco1F7IYPXMnD5NF1Hj3coXkFHDvE JUCKAN8hEfH8ZpUenoKYElKS6n5DSH9UrX9Ga+GYC0NPJi5mc52/5Td8BoKJrrQV3GJP G24g== X-Gm-Message-State: AOJu0Yxd3PlnnRXbHvYwWJoxk4iWBxkaeNJtT6fg9d8+XdGTWOzWwRjh mSzrHXeKW2DK4Oc4WbCDlKCb1i8XIMi0+0r4mGo5yU3zymXLnvLBH5924/TXNOu7GZk/N2sPBxu PvnsCcYRQTorKOgKyLpZi1nz0+Yw0IVWomHivLxTh1gvOs6qRcGmMr3pSgtWmCzkEzFI+uQe7mT IDSPWASH/whr6Ke8k3nKimGCBJHGSW0tM1TaIxtleHyA1q X-Gm-Gg: ASbGncsErfAkfCiAH8CuE23VYNuVp1feH200ZJxzoab27TY0YkTEWSMKLeXyXSWU/0Y qPmr42WUAYuExuysF3Hs84uwNqOyrsUv9XKwex+ceSh//vidYpIEDrb6NJsfQ21qVIqRD+gIGoX BLzNyibjiyGnNlSXKVGx+I7h4OHxYIkYYw9l7anPJkVdVpxDUUcbnExH6EmtUZnW1OSZn2QF1BI Es7oo89zIfkfBwbewy7vtDOwBSEcgVo+0wh/0fMxqVvkZXoredVOBkRcx9kEgEXMa5fbeOkQ4dX lA3xpFE4gRNydevLtKfmBqv9ijVx3su/TIk= X-Received: by 2002:a05:600c:470b:b0:431:52cc:877e with SMTP id 5b1f17b1804b1-434ddecfed2mr18057195e9.20.1733479198262; Fri, 06 Dec 2024 01:59:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IFe5tufop43b05VWxmmjhji+VfNWJUbfs4BReG0q0hG+8wMTpPLAIMsOI9sLBE+lqFnBAZ94w== X-Received: by 2002:a05:600c:470b:b0:431:52cc:877e with SMTP id 5b1f17b1804b1-434ddecfed2mr18056965e9.20.1733479197845; Fri, 06 Dec 2024 01:59:57 -0800 (PST) Received: from localhost (p200300cbc71bd0001d1f238eaeafdbf7.dip0.t-ipconnect.de. [2003:cb:c71b:d000:1d1f:238e:aeaf:dbf7]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-434d5273199sm88616395e9.14.2024.12.06.01.59.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 Dec 2024 01:59:56 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, David Hildenbrand , Andrew Morton , Zi Yan , Vlastimil Babka , Yu Zhao Subject: [PATCH v1 1/2] mm/page_alloc: conditionally split > pageblock_order pages in free_one_page() and move_freepages_block_isolate() Date: Fri, 6 Dec 2024 10:59:50 +0100 Message-ID: <20241206095951.98007-2-david@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241206095951.98007-1-david@redhat.com> References: <20241206095951.98007-1-david@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Let's special-case for the common scenarios that: (a) We are freeing pages <=3D pageblock_order (b) We are freeing a page <=3D MAX_PAGE_ORDER and all pageblocks match (especially, no mixture of isolated and non-isolated pageblocks) When we encounter a > MAX_PAGE_ORDER page, it can only come from alloc_contig_range(), and we can process MAX_PAGE_ORDER chunks. When we encounter a >pageblock_order <=3D MAX_PAGE_ORDER page, check whether all pageblocks match, and if so (common case), don't split them up just for the buddy to merge them back. This makes sure that when we free MAX_PAGE_ORDER chunks to the buddy, for example during system startups, memory onlining, or when isolating consecutive pageblocks via alloc_contig_range()/memory offlining, that we don't unnecessarily split up what we'll immediately merge again, because the migratetypes match. Rename split_large_buddy() to __free_one_page_maybe_split(), to make it clearer what's happening, and handle in it only natural buddy orders, not the alloc_contig_range(__GFP_COMP) special case: handle that in free_one_page() only. Signed-off-by: David Hildenbrand Acked-by: Vlastimil Babka --- mm/page_alloc.c | 71 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 14 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 48a291c485df4..ad19758a7779f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1225,24 +1225,50 @@ static void free_pcppages_bulk(struct zone *zone, i= nt count, spin_unlock_irqrestore(&zone->lock, flags); } =20 -/* Split a multi-block free page into its individual pageblocks. */ -static void split_large_buddy(struct zone *zone, struct page *page, - unsigned long pfn, int order, fpi_t fpi) +static bool pfnblock_migratetype_equal(unsigned long pfn, + unsigned long end_pfn, int mt) { - unsigned long end =3D pfn + (1 << order); + VM_WARN_ON_ONCE(!IS_ALIGNED(pfn | end_pfn, pageblock_nr_pages)); =20 + while (pfn !=3D end_pfn) { + struct page *page =3D pfn_to_page(pfn); + + if (unlikely(mt !=3D get_pfnblock_migratetype(page, pfn))) + return false; + pfn +=3D pageblock_nr_pages; + } + return true; +} + +static void __free_one_page_maybe_split(struct zone *zone, struct page *pa= ge, + unsigned long pfn, int order, fpi_t fpi_flags) +{ + const unsigned long end_pfn =3D pfn + (1 << order); + int mt =3D get_pfnblock_migratetype(page, pfn); + + VM_WARN_ON_ONCE(order > MAX_PAGE_ORDER); VM_WARN_ON_ONCE(!IS_ALIGNED(pfn, 1 << order)); /* Caller removed page from freelist, buddy info cleared! */ VM_WARN_ON_ONCE(PageBuddy(page)); =20 - if (order > pageblock_order) - order =3D pageblock_order; - - while (pfn !=3D end) { - int mt =3D get_pfnblock_migratetype(page, pfn); + /* + * With CONFIG_MEMORY_ISOLATION, we might be freeing MAX_ORDER_NR_PAGES + * pages that cover pageblocks with different migratetypes; for example + * only some migratetypes might be MIGRATE_ISOLATE. In that (unlikely) + * case, fallback to freeing individual pageblocks so they get put + * onto the right lists. + */ + if (!IS_ENABLED(CONFIG_MEMORY_ISOLATION) || + likely(order <=3D pageblock_order) || + pfnblock_migratetype_equal(pfn + pageblock_nr_pages, end_pfn, mt)) { + __free_one_page(page, pfn, zone, order, mt, fpi_flags); + return; + } =20 - __free_one_page(page, pfn, zone, order, mt, fpi); - pfn +=3D 1 << order; + while (pfn !=3D end_pfn) { + mt =3D get_pfnblock_migratetype(page, pfn); + __free_one_page(page, pfn, zone, pageblock_order, mt, fpi_flags); + pfn +=3D pageblock_nr_pages; page =3D pfn_to_page(pfn); } } @@ -1254,7 +1280,24 @@ static void free_one_page(struct zone *zone, struct = page *page, unsigned long flags; =20 spin_lock_irqsave(&zone->lock, flags); - split_large_buddy(zone, page, pfn, order, fpi_flags); + if (likely(order <=3D MAX_PAGE_ORDER)) { + __free_one_page_maybe_split(zone, page, pfn, order, fpi_flags); + } else if (IS_ENABLED(CONFIG_CONTIG_ALLOC)) { + const unsigned long end_pfn =3D pfn + (1 << order); + + /* + * The only way we can end up with order > MAX_PAGE_ORDER is + * through alloc_contig_range(__GFP_COMP). + */ + while (pfn !=3D end_pfn) { + __free_one_page_maybe_split(zone, page, pfn, + MAX_PAGE_ORDER, fpi_flags); + pfn +=3D MAX_ORDER_NR_PAGES; + page =3D pfn_to_page(pfn); + } + } else { + WARN_ON_ONCE(1); + } spin_unlock_irqrestore(&zone->lock, flags); =20 __count_vm_events(PGFREE, 1 << order); @@ -1790,7 +1833,7 @@ bool move_freepages_block_isolate(struct zone *zone, = struct page *page, del_page_from_free_list(buddy, zone, order, get_pfnblock_migratetype(buddy, pfn)); set_pageblock_migratetype(page, migratetype); - split_large_buddy(zone, buddy, pfn, order, FPI_NONE); + __free_one_page_maybe_split(zone, buddy, pfn, order, FPI_NONE); return true; } =20 @@ -1801,7 +1844,7 @@ bool move_freepages_block_isolate(struct zone *zone, = struct page *page, del_page_from_free_list(page, zone, order, get_pfnblock_migratetype(page, pfn)); set_pageblock_migratetype(page, migratetype); - split_large_buddy(zone, page, pfn, order, FPI_NONE); + __free_one_page_maybe_split(zone, page, pfn, order, FPI_NONE); return true; } move: --=20 2.47.1 From nobody Wed Dec 17 21:11:32 2025 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C07BF1FBC80 for ; Fri, 6 Dec 2024 10:00:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733479206; cv=none; b=HVJxb1OSiSh/nyXbAjn47chq7He2QPf9ggWH+TZcJBLuM6aPB3yj+7xR6J6SBvacdi3SWE8ZCjYduLx4M1WSfVqSI/Jh4ecrGxV7yNMqLbsyuPcKpv8mcJhBS0A3SQN3U2sj6W0mOLchKxaugC6ZSW2GqrWDdzJEgVdIY2G+B3w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733479206; c=relaxed/simple; bh=LFJiDpzlsP6nVVYvks1diP4hEAKXeXiGTcenZUPZU7Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YhJVoQ0S1YHNYPqitfmCiQyaTNcaA+IVLZqUJQsgesUeDI+1tvNLuMjKlvMkSqirEDisXj79IEekLFdjR42g9HBlM8myQdj16Tfv5L40v3jhzk+nRmvvGtqnIaC4SsCt9fS5+PO1Az3fXj05hT9r2v3jrwoXA75wT0JE7S2KO8Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZYB0k+N9; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZYB0k+N9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733479203; 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: in-reply-to:in-reply-to:references:references; bh=IA4ZMoyJsW9kk7MRivWjZHMd3/6CwxZEtrg2OJXZFBo=; b=ZYB0k+N9pNIYwykmS6dIK4elWSdOKMPIH1WPR2f7UxD47TaHvkR2MIxe0Wv3qofMcMubUy rUx+qkKGC/6i66911S9Ci/5FmG7lmwMdWiwgSPsk/NBBBF5U8cplFP9gRAKyH0Ci2TqKIJ EUaXYNNJ/Nga34/14rbKr23rDee63zo= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-685-aq8KjNrnOiekd6mlg0hLRw-1; Fri, 06 Dec 2024 05:00:02 -0500 X-MC-Unique: aq8KjNrnOiekd6mlg0hLRw-1 X-Mimecast-MFC-AGG-ID: aq8KjNrnOiekd6mlg0hLRw Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-385df115288so860995f8f.2 for ; Fri, 06 Dec 2024 02:00:02 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733479201; x=1734084001; 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=IA4ZMoyJsW9kk7MRivWjZHMd3/6CwxZEtrg2OJXZFBo=; b=gbERPEUECdJwXUD765L/Cp64/kLk2KW9rqdXV8S4WPNRqrTSJQcjWjuEyXQJyWHu3v OJZ5PW1Op9yK7gkzGabC9e+g4rzR6czGP/Ncg6a96VuIa+zAakO4oG3CNE+1nb6/OqdQ QqDeeLBPWseDebx3sKYWdz8UalTCYEuqKJyTmlXZEqzjXNqpl8d1E5NmYTOrv0WbcWP6 z0okIc8mztrKzG2okSp2hBZoMXZdYLnp2eaLR38xKc+7pFzC3BBv2sU76J30ch/lOcO6 eo61Au33Lgvf1BEJftzuCC/V2hlqDdl0M9l/Lq5Mmh+gFFPLhSA9NzuqCRQXhVQptZU7 ZYyQ== X-Gm-Message-State: AOJu0YycHGdTjDA6L+sT8SAP17Mkc8C1P7oM+UheeB2ptFnL+4yvW0Ez jDZD2lamVIeekYxLhGiPuqkv//iMGSpO301vY7iMSDhGRBzuJ+C/5rq6huG/1rpya+b8KHw4Ctk w/Mk8E7qUyDN+uF3TqoZQsl+h1PEEoIEJVIIp5Q8OkaoKkXeUskZZK+zCJMbQChWsX+SNWg7dEa kFAli+kaspddJ/r8PMTW42yjAP7DsUNNqZBwrVU1DF2vyb X-Gm-Gg: ASbGncsVZpwLkCYFH8zo3roWoaRn+j9SiStluto5i5xXpF/FU4qUrZDvfLdDlqmaPBI kzcnzq/ij1l7Mf1ffw3PSd3XfQFCXvhuDVtjPXiyRXvx6lRbmLMk3w9GP6zdt7d3AWxbrVMML+q 1oFKFhUq9RDVnRoPz/Pvuw3w/G0QzNWf45TMFndNTgZpcwAvzOoT3k2nse3FLiH0zi9DMEQXt3b SaLmTh9oLM3ICNXP/14Siom/IWTIl4iV6fzPcIyylrV1NeNOlJRlZO6tJ2j7HRehiIz9XEMo2DZ chRrLWrX6MCwBAQfWn+E7C7e4bxuTDlrMQs= X-Received: by 2002:a5d:64ef:0:b0:386:2ebe:7aeb with SMTP id ffacd0b85a97d-3862ebe7e3amr588712f8f.44.1733479201298; Fri, 06 Dec 2024 02:00:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IFS7q3Y3cr64iMaChXRU6kWOrDr/y/KtXu/TH4x76fjE0yJJ3g/J9U0CFiziA1wkJGitb1OUA== X-Received: by 2002:a5d:64ef:0:b0:386:2ebe:7aeb with SMTP id ffacd0b85a97d-3862ebe7e3amr588688f8f.44.1733479200834; Fri, 06 Dec 2024 02:00:00 -0800 (PST) Received: from localhost (p200300cbc71bd0001d1f238eaeafdbf7.dip0.t-ipconnect.de. [2003:cb:c71b:d000:1d1f:238e:aeaf:dbf7]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-3862e3fe716sm769370f8f.7.2024.12.06.01.59.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 Dec 2024 01:59:59 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, David Hildenbrand , Andrew Morton , Zi Yan , Vlastimil Babka , Yu Zhao Subject: [PATCH v1 2/2] mm/page_isolation: fixup isolate_single_pageblock() comment regarding splitting free pages Date: Fri, 6 Dec 2024 10:59:51 +0100 Message-ID: <20241206095951.98007-3-david@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241206095951.98007-1-david@redhat.com> References: <20241206095951.98007-1-david@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Let's fixup the comment, documenting how free_one_page_maybe_split() comes into play. Signed-off-by: David Hildenbrand Acked-by: Vlastimil Babka --- mm/page_isolation.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/mm/page_isolation.c b/mm/page_isolation.c index c608e9d728655..63fddf283e681 100644 --- a/mm/page_isolation.c +++ b/mm/page_isolation.c @@ -298,11 +298,10 @@ __first_valid_page(unsigned long pfn, unsigned long n= r_pages) * pagelbocks. * [ MAX_PAGE_ORDER ] * [ pageblock0 | pageblock1 ] - * When either pageblock is isolated, if it is a free page, the page is not - * split into separate migratetype lists, which is supposed to; if it is an - * in-use page and freed later, __free_one_page() does not split the free = page - * either. The function handles this by splitting the free page or migrati= ng - * the in-use page then splitting the free page. + * When either pageblock is isolated, if it is an in-use page and freed la= ter, + * __free_one_page_maybe_split() will split the free page if required. If = the + * page is already free, this function handles this by splitting the free = page + * through move_freepages_block_isolate()->__free_one_page_maybe_split(). */ static int isolate_single_pageblock(unsigned long boundary_pfn, int flags, bool isolate_before, bool skip_isolation, int migratetype) --=20 2.47.1