With this patch set, build fails. Failure logs:
ld: warning: discarding dynamic section .glink ld: warning: discarding dynamic section .plt ld: linkage table error against `memset' ld: stubs don't match calculated size ld: can not build stubs: bad value ld: init/main.o: in function `do_one_initcall': /root/linux/init/main.c:1384: undefined reference to `memcpy' ld: arch/powerpc/kernel/process.o: in function `arch_dup_task_struct': /root/linux/arch/powerpc/kernel/process.c:1724: undefined reference to `memcpy' ld: arch/powerpc/kernel/process.o: in function `copy_thread': /root/linux/arch/powerpc/kernel/process.c:1812: undefined reference to `memcpy' ld: arch/powerpc/kernel/signal.o: in function `do_signal': /root/linux/arch/powerpc/kernel/signal.c:247: undefined reference to `memset' ld: arch/powerpc/kernel/sysfs.o: in function `show_smt_snooze_delay': /root/linux/arch/powerpc/kernel/sysfs.c:66: undefined reference to `memcpy' ld: /root/linux/arch/powerpc/kernel/sysfs.c:66: undefined reference to `memcpy' ld: arch/powerpc/kernel/time.o: in function `register_decrementer_clockevent': /root/linux/arch/powerpc/kernel/time.c:834: undefined reference to `memcpy' ld: arch/powerpc/kernel/time.o: in function `platform_device_register_resndata': /root/linux/./include/linux/platform_device.h:160: undefined reference to `memset' ld: arch/powerpc/kernel/ptrace/ptrace-noadv.o: in function `ptrace_set_debugreg': /root/linux/arch/powerpc/kernel/ptrace/ptrace-noadv.c:130: undefined reference to `memcpy' ld: arch/powerpc/kernel/paca.o: in function `init_lppaca': /root/linux/arch/powerpc/kernel/paca.c:112: undefined reference to `memset' ld: arch/powerpc/kernel/hw_breakpoint.o: in function `ptrace_triggered': /root/linux/arch/powerpc/kernel/hw_breakpoint.c:607: undefined reference to `memcpy' ld: arch/powerpc/kernel/mce.o: in function `get_mce_event': /root/linux/arch/powerpc/kernel/mce.c:206: undefined reference to `memcpy' ld: /root/linux/arch/powerpc/kernel/mce.c:206: undefined reference to `memcpy' ld: arch/powerpc/kernel/mce_power.o: in function `mce_find_instr_ea_and_phys': /root/linux/arch/powerpc/kernel/mce_power.c:461: undefined reference to `memcpy' ld: arch/powerpc/kernel/security.o: in function `cpu_show_meltdown': /root/linux/arch/powerpc/kernel/security.c:172: undefined reference to `memcpy' ld: arch/powerpc/kernel/security.o:/root/linux/arch/powerpc/kernel/security.c:166: more undefined references to `memcpy' follow ld: arch/powerpc/mm/mem.o: in function `execmem_arch_setup': /root/linux/arch/powerpc/mm/mem.c:423: undefined reference to `memset' ld: arch/powerpc/mm/book3s64/subpage_prot.o: in function `subpage_mark_vma_nohuge': /root/linux/arch/powerpc/mm/book3s64/subpage_prot.c:155: undefined reference to `memset' ld: arch/powerpc/mm/numa.o: in function `vphn_get_nid': /root/linux/arch/powerpc/mm/numa.c:676: undefined reference to `memset' ld: arch/powerpc/mm/numa.o: in function `find_and_update_cpu_nid': /root/linux/arch/powerpc/mm/numa.c:1416: undefined reference to `memset' ld: arch/powerpc/mm/numa.o: in function `cpu_to_coregroup_id': /root/linux/arch/powerpc/mm/numa.c:1438: undefined reference to `memset' ld: arch/powerpc/mm/ptdump/ptdump.o:/root/linux/arch/powerpc/mm/ptdump/ptdump.c:370: more undefined references to `memset' follow ld: arch/powerpc/lib/mem_64.o: in function `__memmove': /root/linux/arch/powerpc/lib/mem_64.S:103: undefined reference to `memcpy' /root/linux/arch/powerpc/lib/mem_64.S:103:(.text+0x10c): call to `memcpy' lacks nop, can't restore toc; (plt call stub) ld: final link failed: bad value make[2]: *** [scripts/Makefile.vmlinux:72: vmlinux.unstripped] Error 1 make[1]: *** [/root/linux/Makefile:1276: vmlinux] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:248: __sub-make] Error 2 Regards, Venkat. > On 29 Dec 2025, at 10:24 AM, Mukesh Kumar Chaurasiya > <[email protected]> wrote: > > Adding support for the generic irq entry/exit handling for PowerPC. The > goal is to bring PowerPC in line with other architectures that already > use the common irq entry infrastructure, reducing duplicated code and > making it easier to share future changes in entry/exit paths. > > This is slightly tested of ppc64le and ppc32. > > The performance benchmarks are below: > > perf bench syscall usec/op > > | Syscall | Base | New | change % | > | ------- | ---------- | ---------- | -------- | > | basic | 0.173212 | 0.133294 | -23.05 | > | execve | 363.176190 | 357.148150 | -1.66 | > | fork | 853.657880 | 840.268800 | -1.57 | > | getpgid | 0.174832 | 0.135372 | -22.57 | > > perf bench syscall ops/sec > > | Syscall | Base | New | change % | > | ------- | ------- | ------- | -------- | > | basic | 6006021 | 7502236 | +24.91 | > | execve | 2753 | 2800 | +1.71 | > | fork | 1171 | 1190 | +1.62 | > | getpgid | 5942117 | 7387040 | +24.32 | > > IPI latency benchmark > > | Metric | Base (ns) | Test (ns) | change % | > | -------------- | ------------- | ------------- | -------- | > | Dry-run | 206652.45 | 209317.37 | +1.29 | > | Self-IPI | 3567895.23 | 3590444.77 | +0.63 | > | Normal IPI | 148570416.17 | 148564173.40 | -0.00 | > | Broadcast IPI | 4033489673.38 | 4007319512.62 | -0.65 | > | Broadcast lock | 4011023005.48 | 4010267885.93 | -0.02 | > > > Thats very close to performance earlier with arch specific handling. > > Tests done: > - Build and boot on ppc64le pseries. > - Build and boot on ppc64le powernv8 powernv9 powernv10. > - Build and boot on ppc32. > - Performance benchmark done with perf syscall basic on pseries. > > Changelog: > > V2 -> V3 > - #ifdef CONFIG_GENERIC_IRQ_ENTRY removed from unnecessary places > - Some functions made __always_inline > - pt_regs padding changed to match 16byte interrupt stack alignment > - And some cosmetic changes from reviews from earlier patch > V2: > https://lore.kernel.org/all/[email protected]/ > > V1 -> V2 > - Fix an issue where context tracking was showing warnings for > incorrect context > V1: > https://lore.kernel.org/all/[email protected]/ > > RFC -> PATCH V1 > - Fix for ppc32 spitting out kuap lock warnings. > - ppc64le powernv8 crash fix. > - Review comments incorporated from previous RFC. > RFC > https://lore.kernel.org/all/[email protected]/ > > Mukesh Kumar Chaurasiya (8): > powerpc: rename arch_irq_disabled_regs > powerpc: Prepare to build with generic entry/exit framework > powerpc: introduce arch_enter_from_user_mode > powerpc: Introduce syscall exit arch functions > powerpc: add exit_flags field in pt_regs > powerpc: Prepare for IRQ entry exit > powerpc: Enable IRQ generic entry/exit path. > powerpc: Enable Generic Entry/Exit for syscalls. > > arch/powerpc/Kconfig | 2 + > arch/powerpc/include/asm/entry-common.h | 533 ++++++++++++++++++++++++ > arch/powerpc/include/asm/hw_irq.h | 4 +- > arch/powerpc/include/asm/interrupt.h | 386 +++-------------- > arch/powerpc/include/asm/ptrace.h | 6 +- > arch/powerpc/include/asm/signal.h | 1 - > arch/powerpc/include/asm/stacktrace.h | 6 + > arch/powerpc/include/asm/syscall.h | 5 + > arch/powerpc/include/asm/thread_info.h | 1 + > arch/powerpc/include/uapi/asm/ptrace.h | 14 +- > arch/powerpc/kernel/interrupt.c | 255 ++---------- > arch/powerpc/kernel/ptrace/ptrace.c | 142 +------ > arch/powerpc/kernel/signal.c | 25 +- > arch/powerpc/kernel/syscall.c | 119 +----- > arch/powerpc/kernel/traps.c | 2 +- > arch/powerpc/kernel/watchdog.c | 2 +- > arch/powerpc/perf/core-book3s.c | 2 +- > 17 files changed, 681 insertions(+), 824 deletions(-) > create mode 100644 arch/powerpc/include/asm/entry-common.h > > -- > 2.52.0 >
