Hi all, Today's linux-next merge of the loongarch tree got conflicts in: samples/ftrace/ftrace-direct-modify.c samples/ftrace/ftrace-direct-too.c samples/ftrace/ftrace-direct.c between commits: 23edf48309b14 ("ftrace: Replace uses of _ftrace_direct APIs with _ftrace_direct_multi") da8bdfbd42233 ("ftrace: Rename _ftrace_direct_multi APIs to _ftrace_direct APIs") from the origin tree and commit: 89451e0111632 ("LoongArch: ftrace: Add direct call trampoline samples support") from the loongarch tree. I fixed it up (see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. diff --cc samples/ftrace/ftrace-direct-modify.c index 25fba66f61c05,ca72c3b710eb5..0000000000000 --- a/samples/ftrace/ftrace-direct-modify.c +++ b/samples/ftrace/ftrace-direct-modify.c @@@ -96,8 -96,40 +96,42 @@@ asm #endif /* CONFIG_S390 */ + #ifdef CONFIG_LOONGARCH + + asm ( + " .pushsection .text, \"ax\", @progbits\n" + " .type my_tramp1, @function\n" + " .globl my_tramp1\n" + " my_tramp1:\n" + " addi.d $sp, $sp, -16\n" + " st.d $t0, $sp, 0\n" + " st.d $ra, $sp, 8\n" + " bl my_direct_func1\n" + " ld.d $t0, $sp, 0\n" + " ld.d $ra, $sp, 8\n" + " addi.d $sp, $sp, 16\n" + " jr $t0\n" + " .size my_tramp1, .-my_tramp1\n" + + " .type my_tramp2, @function\n" + " .globl my_tramp2\n" + " my_tramp2:\n" + " addi.d $sp, $sp, -16\n" + " st.d $t0, $sp, 0\n" + " st.d $ra, $sp, 8\n" + " bl my_direct_func2\n" + " ld.d $t0, $sp, 0\n" + " ld.d $ra, $sp, 8\n" + " addi.d $sp, $sp, 16\n" + " jr $t0\n" + " .size my_tramp2, .-my_tramp2\n" + " .popsection\n" + ); + + #endif /* CONFIG_LOONGARCH */ + +static struct ftrace_ops direct; + static unsigned long my_tramp = (unsigned long)my_tramp1; static unsigned long tramps[2] = { (unsigned long)my_tramp1, diff --cc samples/ftrace/ftrace-direct-too.c index f28e7b99840f0,ef64d75097737..0000000000000 --- a/samples/ftrace/ftrace-direct-too.c +++ b/samples/ftrace/ftrace-direct-too.c @@@ -70,13 -70,37 +70,40 @@@ asm #endif /* CONFIG_S390 */ + #ifdef CONFIG_LOONGARCH + + asm ( + " .pushsection .text, \"ax\", @progbits\n" + " .type my_tramp, @function\n" + " .globl my_tramp\n" + " my_tramp:\n" + " addi.d $sp, $sp, -48\n" + " st.d $a0, $sp, 0\n" + " st.d $a1, $sp, 8\n" + " st.d $a2, $sp, 16\n" + " st.d $t0, $sp, 24\n" + " st.d $ra, $sp, 32\n" + " bl my_direct_func\n" + " ld.d $a0, $sp, 0\n" + " ld.d $a1, $sp, 8\n" + " ld.d $a2, $sp, 16\n" + " ld.d $t0, $sp, 24\n" + " ld.d $ra, $sp, 32\n" + " addi.d $sp, $sp, 48\n" + " jr $t0\n" + " .size my_tramp, .-my_tramp\n" + " .popsection\n" + ); + + #endif /* CONFIG_LOONGARCH */ + +static struct ftrace_ops direct; + static int __init ftrace_direct_init(void) { - return register_ftrace_direct((unsigned long)handle_mm_fault, - (unsigned long)my_tramp); + ftrace_set_filter_ip(&direct, (unsigned long) handle_mm_fault, 0, 0); + + return register_ftrace_direct(&direct, (unsigned long) my_tramp); } static void __exit ftrace_direct_exit(void) diff --cc samples/ftrace/ftrace-direct.c index d81a9473b5851,9be720957bf8d..0000000000000 --- a/samples/ftrace/ftrace-direct.c +++ b/samples/ftrace/ftrace-direct.c @@@ -63,13 -63,33 +63,36 @@@ asm #endif /* CONFIG_S390 */ + #ifdef CONFIG_LOONGARCH + + asm ( + " .pushsection .text, \"ax\", @progbits\n" + " .type my_tramp, @function\n" + " .globl my_tramp\n" + " my_tramp:\n" + " addi.d $sp, $sp, -32\n" + " st.d $a0, $sp, 0\n" + " st.d $t0, $sp, 8\n" + " st.d $ra, $sp, 16\n" + " bl my_direct_func\n" + " ld.d $a0, $sp, 0\n" + " ld.d $t0, $sp, 8\n" + " ld.d $ra, $sp, 16\n" + " addi.d $sp, $sp, 32\n" + " jr $t0\n" + " .size my_tramp, .-my_tramp\n" + " .popsection\n" + ); + + #endif /* CONFIG_LOONGARCH */ + +static struct ftrace_ops direct; + static int __init ftrace_direct_init(void) { - return register_ftrace_direct((unsigned long)wake_up_process, - (unsigned long)my_tramp); + ftrace_set_filter_ip(&direct, (unsigned long) wake_up_process, 0, 0); + + return register_ftrace_direct(&direct, (unsigned long) my_tramp); } static void __exit ftrace_direct_exit(void)