From: "Lance Yang" <lance.yang@linux.dev>
To: "Andrew Morton" <akpm@linux-foundation.org>,
"David Hildenbrand" <david@redhat.com>
Cc: mingzhe.yang@ly.com, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, "Lance Yang" <ioworker0@gmail.com>
Subject: Re: [RESEND PATCH v2 1/1] mm/rmap: add CONFIG_MM_ID guard for folio_test_large_maybe_mapped_shared()
Date: Tue, 22 Apr 2025 04:35:14 +0000 [thread overview]
Message-ID: <f091c3e4183e6d6384f645e609aeed926b320818@linux.dev> (raw)
In-Reply-To: <20250421122239.710f5d63487853556cb8f57e@linux-foundation.org>
April 22, 2025 at 3:22 AM, "Andrew Morton" <akpm@linux-foundation.org> wrote:
>
> On Mon, 21 Apr 2025 05:13:03 +0000 "Lance Yang" <lance.yang@linux.dev> wrote:
>
> >
> > Can we just slap "#ifdef CONFIG_MM_ID" around the whole function? It
> >
> >
> >
> > should have no callers, right? If the linker ends up complaining then
> >
> >
> >
> > something went wrong.
> >
> >
> >
> > The reason we can't simply add #ifdef CONFIG_MM_ID around folio_test_large_maybe_mapped_shared()
> >
> > is because its caller folio_maybe_mapped_shared() relies on IS_ENABLED(CONFIG_MM_ID).
> >
> >
> >
> > If we do, with CONFIG_TRANSPARENT_HUGEPAGE=N, we'll hit compilation errors like:
> >
> >
> >
> > ./include/linux/mm.h: In function ‘folio_maybe_mapped_shared’:
> >
> > ./include/linux/mm.h:2337:16: error: implicit declaration of function ‘folio_test_large_maybe_mapped_shared’; did you mean ‘folio_maybe_mapped_shared’? [-Werror=implicit-function-declaration]
> >
> > 2337 | return folio_test_large_maybe_mapped_shared(folio);
> >
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > | folio_maybe_mapped_shared
> >
> > cc1: some warnings being treated as errors
> >
>
> That's OK - provide a declaration of folio_maybe_mapped_shared() but no
>
> definition. So the compiled-out code can be compiled and the linker
>
> will confirm that it's never actually called.
>
Got it, that works as well ;)
So if David is cool with it, I'll send out the new version like this:
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index d3909cb1e576..a762e4b4eab4 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -1230,10 +1230,15 @@ static inline int folio_has_private(const struct folio *folio)
return !!(folio->flags & PAGE_FLAGS_PRIVATE);
}
+#ifdef CONFIG_MM_ID
static inline bool folio_test_large_maybe_mapped_shared(const struct folio *folio)
{
return test_bit(FOLIO_MM_IDS_SHARED_BITNUM, &folio->_mm_ids);
}
+#else
+bool folio_test_large_maybe_mapped_shared(const struct folio *folio);
+#endif
+
Thanks,
Lance
next prev parent reply other threads:[~2025-04-22 4:35 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-18 15:22 [RESEND PATCH v2 1/1] mm/rmap: add CONFIG_MM_ID guard for folio_test_large_maybe_mapped_shared() Lance Yang
2025-04-20 23:29 ` Andrew Morton
2025-04-21 5:13 ` Lance Yang
2025-04-21 5:16 ` Lance Yang
2025-04-21 7:17 ` David Hildenbrand
2025-04-21 7:50 ` Lance Yang
2025-04-21 19:22 ` Andrew Morton
2025-04-22 4:35 ` Lance Yang [this message]
2025-04-22 7:00 ` David Hildenbrand
2025-04-22 23:20 ` Andrew Morton
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=f091c3e4183e6d6384f645e609aeed926b320818@linux.dev \
--to=lance.yang@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=ioworker0@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingzhe.yang@ly.com \
/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.