Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/64s: Fix build failure when CONFIG_PPC_64S_HASH_MMU is not set

The following build failure occurs when CONFIG_PPC_64S_HASH_MMU is not
set:

arch/powerpc/kernel/setup_64.c: In function ‘setup_per_cpu_areas’:
arch/powerpc/kernel/setup_64.c:811:21: error: ‘mmu_linear_psize’ undeclared (first use in this function); did you mean ‘mmu_virtual_psize’?
811 | if (mmu_linear_psize == MMU_PAGE_4K)
| ^~~~~~~~~~~~~~~~
| mmu_virtual_psize
arch/powerpc/kernel/setup_64.c:811:21: note: each undeclared identifier is reported only once for each function it appears in

Move the declaration of mmu_linear_psize outside of
CONFIG_PPC_64S_HASH_MMU ifdef.

After the above is fixed, it fails later with the following error:

ld: arch/powerpc/kexec/file_load_64.o: in function `.arch_kexec_kernel_image_probe':
file_load_64.c:(.text+0x1c1c): undefined reference to `.add_htab_mem_range'

Fix that, too, by conditioning add_htab_mem_range() symbol to
CONFIG_PPC_64S_HASH_MMU.

Fixes: 387e220a2e5e ("powerpc/64s: Move hash MMU support code under CONFIG_PPC_64S_HASH_MMU")
Reported-by: Erhard F. <erhard_f@mailbox.org>
Signed-off-by: Murilo Opsfelder Araujo <muriloo@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215567
Link: https://lore.kernel.org/r/20220301204743.45133-1-muriloo@linux.ibm.com

authored by

Murilo Opsfelder Araujo and committed by
Michael Ellerman
58dbe9b3 fe663df7

+2 -2
+1 -1
arch/powerpc/include/asm/book3s/64/mmu.h
··· 202 202 /* 203 203 * The current system page and segment sizes 204 204 */ 205 - extern int mmu_linear_psize; 206 205 extern int mmu_virtual_psize; 207 206 extern int mmu_vmalloc_psize; 208 207 extern int mmu_io_psize; ··· 212 213 #define mmu_virtual_psize MMU_PAGE_4K 213 214 #endif 214 215 #endif 216 + extern int mmu_linear_psize; 215 217 extern int mmu_vmemmap_psize; 216 218 217 219 /* MMU initialization */
+1 -1
arch/powerpc/include/asm/kexec_ranges.h
··· 9 9 int add_mem_range(struct crash_mem **mem_ranges, u64 base, u64 size); 10 10 int add_tce_mem_ranges(struct crash_mem **mem_ranges); 11 11 int add_initrd_mem_range(struct crash_mem **mem_ranges); 12 - #ifdef CONFIG_PPC_BOOK3S_64 12 + #ifdef CONFIG_PPC_64S_HASH_MMU 13 13 int add_htab_mem_range(struct crash_mem **mem_ranges); 14 14 #else 15 15 static inline int add_htab_mem_range(struct crash_mem **mem_ranges)