[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YFhYHZ9onwdZMeDi@hirez.programming.kicks-ass.net>
Date: Mon, 22 Mar 2021 09:41:01 +0100
From: Peter Zijlstra <peterz@...radead.org>
To: Mike Kravetz <mike.kravetz@...cle.com>
Cc: linux-mm@...ck.org, linux-kernel@...r.kernel.org,
Michal Hocko <mhocko@...e.com>,
Shakeel Butt <shakeelb@...gle.com>,
Oscar Salvador <osalvador@...e.de>,
David Hildenbrand <david@...hat.com>,
Muchun Song <songmuchun@...edance.com>,
David Rientjes <rientjes@...gle.com>,
Miaohe Lin <linmiaohe@...wei.com>,
Matthew Wilcox <willy@...radead.org>,
HORIGUCHI NAOYA <naoya.horiguchi@....com>,
"Aneesh Kumar K . V" <aneesh.kumar@...ux.ibm.com>,
Waiman Long <longman@...hat.com>, Peter Xu <peterx@...hat.com>,
Mina Almasry <almasrymina@...gle.com>,
Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [RFC PATCH 7/8] hugetlb: add update_and_free_page_no_sleep for
irq context
On Fri, Mar 19, 2021 at 03:42:08PM -0700, Mike Kravetz wrote:
> The locks acquired in free_huge_page are irq safe. However, in certain
> circumstances the routine update_and_free_page could sleep. Since
> free_huge_page can be called from any context, it can not sleep.
>
> Use a waitqueue to defer freeing of pages if the operation may sleep. A
> new routine update_and_free_page_no_sleep provides this functionality
> and is only called from free_huge_page.
>
> Note that any 'pages' sent to the workqueue for deferred freeing have
> already been removed from the hugetlb subsystem. What is actually
> deferred is returning those base pages to the low level allocator.
So maybe I'm stupid, but why do you need that work in hugetlb? Afaict it
should be in cma_release().
Also, afaict cma_release() does free_contig_range() *first*, and then
does the 'difficult' bits. So how about you re-order
free_gigantic_page() a bit to make it unconditionally do
free_contig_range() and *then* call into CMA, which can then do a
workqueue thingy if it feels like it.
That way none of the hugetlb accounting is delayed, and only CMA gets to
suffer.
Powered by blists - more mailing lists