[PATCH v3 0/8] Generic IRQ entry/exit support for powerpc

Venkat venkat88 at linux.ibm.com
Thu Jan 8 16:16:31 AEDT 2026


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 <mkchauras at linux.ibm.com> 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/20251214130245.43664-1-mkchauras@linux.ibm.com/
> 
> V1 -> V2
> - Fix an issue where context tracking was showing warnings for
>   incorrect context
> V1: https://lore.kernel.org/all/20251102115358.1744304-1-mkchauras@linux.ibm.com/
> 
> 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/20250908210235.137300-2-mchauras@linux.ibm.com/
> 
> 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
> 



More information about the Linuxppc-dev mailing list