From: Hao Ge <hao.ge@linux.dev>
To: Andrew Morton <akpm@linux-foundation.org>,
David Hildenbrand <david@redhat.com>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
Vlastimil Babka <vbabka@suse.cz>,
Suren Baghdasaryan <surenb@google.com>,
Mike Rapoport <rppt@kernel.org>,
Richard Henderson <richard.henderson@linaro.org>,
Matt Turner <mattst88@gmail.com>, Dennis Zhou <dennis@kernel.org>,
Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Kent Overstreet <kent.overstreet@linux.dev>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-alpha@vger.kernel.org, linux-s390@vger.kernel.org,
Hao Ge <hao.ge@linux.dev>, Hao Ge <gehao@kylinos.cn>
Subject: [PATCH 0/5] mm: Restrict the static definition of the per-CPU variable _shared_alloc_tag to s390 and alpha architectures only
Date: Thu, 12 Jun 2025 16:27:25 +0800 [thread overview]
Message-ID: <cover.1749715979.git.gehao@kylinos.cn> (raw)
From: Hao Ge <gehao@kylinos.cn>
Recently discovered this entry while checking kallsyms on ARM64:
ffff800083e509c0 D _shared_alloc_tag
If ARCH_NEEDS_WEAK_PER_CPU is not defined((it is only defined for
s390 and alpha architectures),there's no need to statically define
the percpu variable _shared_alloc_tag. As the number of CPUs
increases,the wasted memory will grow correspondingly.
Therefore,we need to implement isolation for this purpose.
However,currently ARCH_NEEDS_WEAK_PER_CPU is a #define and
is enclosed within the #if defined(MODULE) conditional block.
When building the core kernel code for s390 or alpha architectures,
ARCH_NEEDS_WEAK_PER_CPU remains undefined (as it is gated
by #if defined(MODULE)). However,when building modules for these
architectures,the macro is explicitly defined.
Therefore,we need to make ARCH_NEEDS_WEAK_PER_CPU a Kconfig option.
And replace all instances of ARCH_NEEDS_WEAK_PER_CPU in the kernel
code with MODULE_NEEDS_WEAK_PER_CPU,gated
by#ifdef CONFIG_ARCH_NEEDS_WEAK_PER_CPU. Then,when defining the percpu
variable _shared_alloc_tag,wrap it with the
CONFIG_ARCH_NEEDS_WEAK_PER_CPU condition.
The following version could be regarded as Version 1:
https://lore.kernel.org/all/20250529073537.563107-1-hao.ge@linux.dev/
But unfortunately,it caused build errors on s390.
Based on Suren's guidance and suggestions,
I've refined it into this patch series.
Many thanks to Suren for his patient instruction.
Verify:
1. On Arm64:
nm vmlinux | grep "_shared_alloc_tag",no output is returned.
2. On S390:
Compile tested.
nm vmlinux | grep "_shared_alloc_tag"
00000000015605b4 r __crc__shared_alloc_tag
0000000001585fef r __kstrtab__shared_alloc_tag
0000000001586897 r __kstrtabns__shared_alloc_tag
00000000014f6548 r __ksymtab__shared_alloc_tag
0000000001a8fa28 D _shared_alloc_tag
nm net/ceph/libceph.ko | grep "_shared"
U _shared_alloc_tag
3. On alpha
Compile tested.
nm vmlinux | grep "_shared_alloc_tag"
fffffc0000b080fa r __kstrtab__shared_alloc_tag
fffffc0000b07ee7 r __kstrtabns__shared_alloc_tag
fffffc0000adee98 r __ksymtab__shared_alloc_tag
fffffc0000b83d38 D _shared_alloc_tag
nm crypto/cryptomgr.ko | grep "_share"
U _shared_alloc_tag
Hao Ge (5):
mm/Kconfig: add ARCH_NEEDS_WEAK_PER_CPU option
alpha: Modify the definition logic of WEAK_PER_CPU
s390: Modify the definition logic of WEAK_PER_CPU
mm: use MODULE_NEEDS_WEAK_PER_CPU instead of ARCH_NEEDS_WEAK_PER_CPU
mm/alloc_tag: add the CONFIG_ARCH_NEEDS_WEAK_PER_CPU macro when
statically defining the percpu variable _shared_alloc_tag
arch/alpha/Kconfig | 1 +
arch/alpha/include/asm/percpu.h | 4 ++--
arch/s390/Kconfig | 1 +
arch/s390/include/asm/percpu.h | 4 ++--
include/linux/alloc_tag.h | 6 +++---
include/linux/percpu-defs.h | 4 ++--
lib/alloc_tag.c | 2 ++
mm/Kconfig | 4 ++++
8 files changed, 17 insertions(+), 9 deletions(-)
--
2.25.1
next reply other threads:[~2025-06-12 8:27 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-12 8:27 Hao Ge [this message]
2025-06-12 8:27 ` [PATCH 1/5] mm/Kconfig: add ARCH_NEEDS_WEAK_PER_CPU option Hao Ge
2025-06-12 8:27 ` [PATCH 2/5] alpha: Modify the definition logic of WEAK_PER_CPU Hao Ge
2025-06-12 11:22 ` Heiko Carstens
2025-06-12 12:06 ` Hao Ge
2025-06-12 12:15 ` Heiko Carstens
2025-06-12 8:27 ` [PATCH 3/5] s390: " Hao Ge
2025-06-12 8:27 ` [PATCH 4/5] mm: use MODULE_NEEDS_WEAK_PER_CPU instead of ARCH_NEEDS_WEAK_PER_CPU Hao Ge
2025-06-12 8:27 ` [PATCH 5/5] mm/alloc_tag: add the CONFIG_ARCH_NEEDS_WEAK_PER_CPU macro when statically defining the percpu variable _shared_alloc_tag Hao Ge
2025-06-12 8:57 ` Mike Rapoport
2025-06-12 11:24 ` Heiko Carstens
-- strict thread matches above, loose matches on Subject: below --
2025-06-12 7:54 [PATCH 0/5] mm: Restrict the static definition of the per-CPU variable _shared_alloc_tag to s390 and alpha architectures only Hao Ge
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=cover.1749715979.git.gehao@kylinos.cn \
--to=hao.ge@linux.dev \
--cc=Liam.Howlett@oracle.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=borntraeger@linux.ibm.com \
--cc=cl@linux.com \
--cc=david@redhat.com \
--cc=dennis@kernel.org \
--cc=gehao@kylinos.cn \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=kent.overstreet@linux.dev \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-s390@vger.kernel.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=mattst88@gmail.com \
--cc=richard.henderson@linaro.org \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=svens@linux.ibm.com \
--cc=tj@kernel.org \
--cc=vbabka@suse.cz \
/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.