All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"Borislav Petkov (AMD)" <bp@alien8.de>,
	Mel Gorman <mgorman@suse.de>, Vlastimil Babka <vbabka@suse.cz>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	David Hildenbrand <david@redhat.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/8] mm: Accept memory in __alloc_pages_bulk().
Date: Tue, 6 Aug 2024 10:52:35 +0300	[thread overview]
Message-ID: <ZrHWQ/+EC5CApJ3M@kernel.org> (raw)
In-Reply-To: <20240805145940.2911011-3-kirill.shutemov@linux.intel.com>

On Mon, Aug 05, 2024 at 05:59:34PM +0300, Kirill A. Shutemov wrote:
> Currently, the kernel only accepts memory in get_page_from_freelist(),
> but there is another path that directly takes pages from free lists -
> __alloc_page_bulk(). This function can consume all accepted memory and
> will resort to __alloc_pages_noprof() if necessary.
> 
> Conditionally accepted in __alloc_pages_bulk().
> 
> The same issue may arise due to deferred page initialization. Kick the
> deferred initialization machinery before abandoning the zone, as the
> kernel does in get_page_from_freelist().
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>

Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

> ---
>  mm/page_alloc.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index aa9b1eaa638c..90a1f01d5996 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4576,12 +4576,25 @@ unsigned long alloc_pages_bulk_noprof(gfp_t gfp, int preferred_nid,
>  			goto failed;
>  		}
>  
> +		cond_accept_memory(zone, 0);
> +retry_this_zone:
>  		mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK) + nr_pages;
>  		if (zone_watermark_fast(zone, 0,  mark,
>  				zonelist_zone_idx(ac.preferred_zoneref),
>  				alloc_flags, gfp)) {
>  			break;
>  		}
> +
> +		if (cond_accept_memory(zone, 0))
> +			goto retry_this_zone;
> +
> +#ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT
> +		/* Try again if zone has deferred pages */
> +		if (deferred_pages_enabled()) {
> +			if (_deferred_grow_zone(zone, 0))
> +				goto retry_this_zone;
> +		}
> +#endif
>  	}
>  
>  	/*
> -- 
> 2.43.0
> 


  reply	other threads:[~2024-08-06  7:52 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-05 14:59 [PATCH 0/8] mm: Fix several issues with unaccepted memory Kirill A. Shutemov
2024-08-05 14:59 ` [PATCH 1/8] mm: Fix endless reclaim on machines " Kirill A. Shutemov
2024-08-06 12:00   ` David Hildenbrand
2024-08-05 14:59 ` [PATCH 2/8] mm: Accept memory in __alloc_pages_bulk() Kirill A. Shutemov
2024-08-06  7:52   ` Mike Rapoport [this message]
2024-08-06 12:02   ` David Hildenbrand
2024-08-05 14:59 ` [PATCH 3/8] mm: Introduce PageUnaccepted() page type Kirill A. Shutemov
2024-08-06 12:06   ` David Hildenbrand
2024-08-09  8:28     ` Kirill A. Shutemov
2024-08-05 14:59 ` [PATCH 4/8] mm: Rename accept_page() to accept_page_memory() Kirill A. Shutemov
2024-08-06 12:18   ` David Hildenbrand
2024-08-05 14:59 ` [PATCH 5/8] mm: Add a helper to accept page Kirill A. Shutemov
2024-08-06 12:20   ` David Hildenbrand
2024-08-05 14:59 ` [PATCH 6/8] mm: page_isolation: Handle unaccepted memory isolation Kirill A. Shutemov
2024-08-05 14:59 ` [PATCH 7/8] mm: Introduce promo_wmark_pages() Kirill A. Shutemov
2024-08-05 17:04   ` Johannes Weiner
2024-08-06  7:19     ` Kirill A. Shutemov
2024-08-05 14:59 ` [PATCH 8/8] mm: Accept to promo watermark Kirill A. Shutemov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZrHWQ/+EC5CApJ3M@kernel.org \
    --to=rppt@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=david@redhat.com \
    --cc=hannes@cmpxchg.org \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@suse.de \
    --cc=thomas.lendacky@amd.com \
    --cc=vbabka@suse.cz \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.