mirror of
https://github.com/torvalds/linux.git
synced 2026-08-07 07:54:18 +02:00
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. Therefore, we need to implement isolation for this purpose. 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 remove all instances of ARCH_NEEDS_WEAK_PER_CPU from the code and introduced CONFIG_ARCH_MODULE_NEEDS_WEAK_PER_CPU to replace the relevant logic. We can now conditionally define the perpcu variable _shared_alloc_tag based on CONFIG_ARCH_MODULE_NEEDS_WEAK_PER_CPU. This allows architectures (such as s390/alpha) that require weak definitions for percpu variables in modules to include the definition, while others can omit it via compile-time exclusion. Link: https://lkml.kernel.org/r/20250618015809.1235761-1-hao.ge@linux.dev Signed-off-by: Hao Ge <gehao@kylinos.cn> Suggested-by: Suren Baghdasaryan <surenb@google.com> Acked-by: Alexander Gordeev <agordeev@linux.ibm.com> [s390] Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Cc: Chistoph Lameter <cl@linux.com> Cc: Christian Borntraeger <borntraeger@linux.ibm.com> Cc: David Hildenbrand <david@redhat.com> Cc: Dennis Zhou <dennis@kernel.org> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Kent Overstreet <kent.overstreet@linux.dev> Cc: Liam Howlett <liam.howlett@oracle.com> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Cc: Matt Turner <mattst88@gmail.com> Cc: Richard Henderson <richard.henderson@linaro.org> Cc: Sven Schnelle <svens@linux.ibm.com> Cc: Tejun Heo <tj@kernel.org> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| agp_backend.h | ||
| asm-prototypes.h | ||
| atomic.h | ||
| barrier.h | ||
| bitops.h | ||
| bug.h | ||
| cache.h | ||
| cacheflush.h | ||
| checksum.h | ||
| cmpxchg.h | ||
| compiler.h | ||
| console.h | ||
| core_cia.h | ||
| core_irongate.h | ||
| core_marvel.h | ||
| core_mcpcia.h | ||
| core_polaris.h | ||
| core_t2.h | ||
| core_titan.h | ||
| core_tsunami.h | ||
| core_wildfire.h | ||
| delay.h | ||
| device.h | ||
| dma-mapping.h | ||
| dma.h | ||
| elf.h | ||
| emergency-restart.h | ||
| err_common.h | ||
| err_ev6.h | ||
| err_ev7.h | ||
| extable.h | ||
| floppy.h | ||
| fpu.h | ||
| ftrace.h | ||
| futex.h | ||
| gct.h | ||
| hardirq.h | ||
| hw_irq.h | ||
| hwrpb.h | ||
| io_trivial.h | ||
| io.h | ||
| irq.h | ||
| irqflags.h | ||
| Kbuild | ||
| linkage.h | ||
| local.h | ||
| machvec.h | ||
| mc146818rtc.h | ||
| mce.h | ||
| mmu_context.h | ||
| mmu.h | ||
| module.h | ||
| page.h | ||
| pal.h | ||
| param.h | ||
| parport.h | ||
| pci.h | ||
| percpu.h | ||
| perf_event.h | ||
| pgalloc.h | ||
| pgtable.h | ||
| processor.h | ||
| ptrace.h | ||
| rwonce.h | ||
| serial.h | ||
| setup.h | ||
| sfp-machine.h | ||
| shmparam.h | ||
| signal.h | ||
| smp.h | ||
| socket.h | ||
| sparsemem.h | ||
| special_insns.h | ||
| spinlock_types.h | ||
| spinlock.h | ||
| string.h | ||
| switch_to.h | ||
| syscall.h | ||
| thread_info.h | ||
| timex.h | ||
| tlb.h | ||
| tlbflush.h | ||
| topology.h | ||
| types.h | ||
| uaccess.h | ||
| ucontext.h | ||
| unistd.h | ||
| user.h | ||
| vga.h | ||
| vmalloc.h | ||
| word-at-a-time.h | ||
| wrperfmon.h | ||
| xor.h | ||