Re: [PATCH v1 1/1] mm/page_alloc: Mark has_unaccepted_memory() with __maybe_unused

From: Andrew Morton
Date: Thu Sep 05 2024 - 17:22:30 EST


On Thu, 5 Sep 2024 20:15:53 +0300 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:

> When has_unaccepted_memory() is unused, it prevents kernel builds
> with clang, `make W=1` and CONFIG_WERROR=y:
>
> mm/page_alloc.c:7036:20: error: unused function 'has_unaccepted_memory' [-Werror,-Wunused-function]
> 7036 | static inline bool has_unaccepted_memory(void)
> | ^~~~~~~~~~~~~~~~~~~~~
>
> Fix this by marking it with __maybe_unused (all cases for the sake of
> symmetry).
>
> See also commit 6863f5643dd7 ("kbuild: allow Clang to find unused static
> inline functions for W=1 build").
>

has_unaccepted_memory() has no callers if CONFIG_UNACCEPTED_MEMORY=n.
Can't we do this better thing?


--- a/mm/page_alloc.c~a
+++ a/mm/page_alloc.c
@@ -288,7 +288,6 @@ EXPORT_SYMBOL(nr_online_nodes);
static bool page_contains_unaccepted(struct page *page, unsigned int order);
static void accept_page(struct page *page, unsigned int order);
static bool cond_accept_memory(struct zone *zone, unsigned int order);
-static inline bool has_unaccepted_memory(void);
static bool __free_unaccepted(struct page *page);

int page_group_by_mobility_disabled __read_mostly;
@@ -6963,6 +6962,11 @@ static bool try_to_accept_memory_one(str
return true;
}

+static inline bool has_unaccepted_memory(void)
+{
+ return static_branch_unlikely(&zones_with_unaccepted_pages);
+}
+
static bool cond_accept_memory(struct zone *zone, unsigned int order)
{
long to_accept;
@@ -6990,11 +6994,6 @@ static bool cond_accept_memory(struct zo
return ret;
}

-static inline bool has_unaccepted_memory(void)
-{
- return static_branch_unlikely(&zones_with_unaccepted_pages);
-}
-
static bool __free_unaccepted(struct page *page)
{
struct zone *zone = page_zone(page);
@@ -7032,11 +7031,6 @@ static bool cond_accept_memory(struct zo
{
return false;
}
-
-static inline bool has_unaccepted_memory(void)
-{
- return false;
-}

static bool __free_unaccepted(struct page *page)
{
_