Message ID | 20240530001733.1407654-5-samuel.holland@sifive.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | riscv: Frame pointer fixes and enhancements | expand |
Hi Samuel, kernel test robot noticed the following build errors: [auto build test ERROR on linus/master] [also build test ERROR on v6.10-rc1 next-20240529] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Samuel-Holland/riscv-Fix-32-bit-call_on_irq_stack-frame-pointer-ABI/20240530-081923 base: linus/master patch link: https://lore.kernel.org/r/20240530001733.1407654-5-samuel.holland%40sifive.com patch subject: [PATCH 4/4] riscv: entry: Save a frame record for exceptions config: riscv-randconfig-002-20240530 (https://download.01.org/0day-ci/archive/20240530/202405302103.1V3ufzgK-lkp@intel.com/config) compiler: riscv64-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240530/202405302103.1V3ufzgK-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202405302103.1V3ufzgK-lkp@intel.com/ All errors (new ones prefixed by >>): arch/riscv/kernel/probes/rethook_trampoline.S: Assembler messages: >> arch/riscv/kernel/probes/rethook_trampoline.S:79: Error: illegal operands `addi sp,sp,-(PT_SIZE_ON_STACK)' >> arch/riscv/kernel/probes/rethook_trampoline.S:90: Error: illegal operands `addi sp,sp,PT_SIZE_ON_STACK' vim +79 arch/riscv/kernel/probes/rethook_trampoline.S c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 9 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 10 .text c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 11 .altmacro c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 12 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 13 .macro save_all_base_regs c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 14 REG_S x1, PT_RA(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 15 REG_S x3, PT_GP(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 16 REG_S x4, PT_TP(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 17 REG_S x5, PT_T0(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 18 REG_S x6, PT_T1(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 19 REG_S x7, PT_T2(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 20 REG_S x8, PT_S0(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 21 REG_S x9, PT_S1(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 22 REG_S x10, PT_A0(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 23 REG_S x11, PT_A1(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 24 REG_S x12, PT_A2(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 25 REG_S x13, PT_A3(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 26 REG_S x14, PT_A4(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 27 REG_S x15, PT_A5(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 28 REG_S x16, PT_A6(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 29 REG_S x17, PT_A7(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 30 REG_S x18, PT_S2(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 31 REG_S x19, PT_S3(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 32 REG_S x20, PT_S4(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 33 REG_S x21, PT_S5(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 34 REG_S x22, PT_S6(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 35 REG_S x23, PT_S7(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 36 REG_S x24, PT_S8(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 37 REG_S x25, PT_S9(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 38 REG_S x26, PT_S10(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 39 REG_S x27, PT_S11(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 40 REG_S x28, PT_T3(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 41 REG_S x29, PT_T4(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 42 REG_S x30, PT_T5(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 43 REG_S x31, PT_T6(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 44 .endm c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 45 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 46 .macro restore_all_base_regs c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 47 REG_L x3, PT_GP(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 48 REG_L x4, PT_TP(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 49 REG_L x5, PT_T0(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 50 REG_L x6, PT_T1(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 51 REG_L x7, PT_T2(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 52 REG_L x8, PT_S0(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 53 REG_L x9, PT_S1(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 54 REG_L x10, PT_A0(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 55 REG_L x11, PT_A1(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 56 REG_L x12, PT_A2(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 57 REG_L x13, PT_A3(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 58 REG_L x14, PT_A4(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 59 REG_L x15, PT_A5(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 60 REG_L x16, PT_A6(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 61 REG_L x17, PT_A7(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 62 REG_L x18, PT_S2(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 63 REG_L x19, PT_S3(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 64 REG_L x20, PT_S4(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 65 REG_L x21, PT_S5(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 66 REG_L x22, PT_S6(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 67 REG_L x23, PT_S7(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 68 REG_L x24, PT_S8(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 69 REG_L x25, PT_S9(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 70 REG_L x26, PT_S10(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 71 REG_L x27, PT_S11(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 72 REG_L x28, PT_T3(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 73 REG_L x29, PT_T4(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 74 REG_L x30, PT_T5(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 75 REG_L x31, PT_T6(sp) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 76 .endm c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 77 76329c693924d8 arch/riscv/kernel/probes/rethook_trampoline.S Clément Léger 2023-10-24 78 SYM_CODE_START(arch_rethook_trampoline) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 @79 addi sp, sp, -(PT_SIZE_ON_STACK) c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 80 save_all_base_regs c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 81 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 82 move a0, sp /* pt_regs */ c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 83 b57c2f12409845 arch/riscv/kernel/probes/rethook_trampoline.S Binglei Wang 2022-10-25 84 call arch_rethook_trampoline_callback c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 85 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 86 /* use the result as the return-address */ c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 87 move ra, a0 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 88 c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 89 restore_all_base_regs c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 @90 addi sp, sp, PT_SIZE_ON_STACK
Hi Samuel,
kernel test robot noticed the following build errors:
[auto build test ERROR on linus/master]
[also build test ERROR on v6.10-rc1 next-20240529]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Samuel-Holland/riscv-Fix-32-bit-call_on_irq_stack-frame-pointer-ABI/20240530-081923
base: linus/master
patch link: https://lore.kernel.org/r/20240530001733.1407654-5-samuel.holland%40sifive.com
patch subject: [PATCH 4/4] riscv: entry: Save a frame record for exceptions
config: riscv-randconfig-001-20240530 (https://download.01.org/0day-ci/archive/20240530/202405302207.M9bDz8l3-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project bafda89a0944d947fc4b3b5663185e07a397ac30)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240530/202405302207.M9bDz8l3-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405302207.M9bDz8l3-lkp@intel.com/
All errors (new ones prefixed by >>):
>> arch/riscv/kernel/probes/rethook_trampoline.S:79:15: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047]
addi sp, sp, -(PT_SIZE_ON_STACK)
^
arch/riscv/kernel/probes/rethook_trampoline.S:90:15: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047]
addi sp, sp, PT_SIZE_ON_STACK
^
vim +79 arch/riscv/kernel/probes/rethook_trampoline.S
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 9
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 10 .text
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 11 .altmacro
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 12
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 13 .macro save_all_base_regs
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 14 REG_S x1, PT_RA(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 15 REG_S x3, PT_GP(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 16 REG_S x4, PT_TP(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 17 REG_S x5, PT_T0(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 18 REG_S x6, PT_T1(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 19 REG_S x7, PT_T2(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 20 REG_S x8, PT_S0(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 21 REG_S x9, PT_S1(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 22 REG_S x10, PT_A0(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 23 REG_S x11, PT_A1(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 24 REG_S x12, PT_A2(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 25 REG_S x13, PT_A3(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 26 REG_S x14, PT_A4(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 27 REG_S x15, PT_A5(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 28 REG_S x16, PT_A6(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 29 REG_S x17, PT_A7(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 30 REG_S x18, PT_S2(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 31 REG_S x19, PT_S3(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 32 REG_S x20, PT_S4(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 33 REG_S x21, PT_S5(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 34 REG_S x22, PT_S6(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 35 REG_S x23, PT_S7(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 36 REG_S x24, PT_S8(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 37 REG_S x25, PT_S9(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 38 REG_S x26, PT_S10(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 39 REG_S x27, PT_S11(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 40 REG_S x28, PT_T3(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 41 REG_S x29, PT_T4(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 42 REG_S x30, PT_T5(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 43 REG_S x31, PT_T6(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 44 .endm
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 45
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 46 .macro restore_all_base_regs
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 47 REG_L x3, PT_GP(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 48 REG_L x4, PT_TP(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 49 REG_L x5, PT_T0(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 50 REG_L x6, PT_T1(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 51 REG_L x7, PT_T2(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 52 REG_L x8, PT_S0(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 53 REG_L x9, PT_S1(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 54 REG_L x10, PT_A0(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 55 REG_L x11, PT_A1(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 56 REG_L x12, PT_A2(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 57 REG_L x13, PT_A3(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 58 REG_L x14, PT_A4(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 59 REG_L x15, PT_A5(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 60 REG_L x16, PT_A6(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 61 REG_L x17, PT_A7(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 62 REG_L x18, PT_S2(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 63 REG_L x19, PT_S3(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 64 REG_L x20, PT_S4(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 65 REG_L x21, PT_S5(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 66 REG_L x22, PT_S6(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 67 REG_L x23, PT_S7(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 68 REG_L x24, PT_S8(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 69 REG_L x25, PT_S9(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 70 REG_L x26, PT_S10(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 71 REG_L x27, PT_S11(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 72 REG_L x28, PT_T3(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 73 REG_L x29, PT_T4(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 74 REG_L x30, PT_T5(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 75 REG_L x31, PT_T6(sp)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 76 .endm
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 77
76329c693924d8 arch/riscv/kernel/probes/rethook_trampoline.S Clément Léger 2023-10-24 78 SYM_CODE_START(arch_rethook_trampoline)
c22b0bcb1dd024 arch/riscv/kernel/probes/kprobes_trampoline.S Guo Ren 2020-12-17 @79 addi sp, sp, -(PT_SIZE_ON_STACK)
diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index 68c3432dc6ea..ccbb1e363c7f 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -144,9 +144,14 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset, .align_ctl = PR_UNALIGN_NOPRINT, \ } +#ifdef CONFIG_FRAME_POINTER +#define EXCEPTION_FRAME_SIZE ALIGN(sizeof(struct pt_regs) + sizeof(struct stackframe), STACK_ALIGN) +#else +#define EXCEPTION_FRAME_SIZE ALIGN(sizeof(struct pt_regs), STACK_ALIGN) +#endif + #define task_pt_regs(tsk) \ - ((struct pt_regs *)(task_stack_page(tsk) + THREAD_SIZE \ - - ALIGN(sizeof(struct pt_regs), STACK_ALIGN))) + ((struct pt_regs *)(task_stack_page(tsk) + THREAD_SIZE - EXCEPTION_FRAME_SIZE)) #define KSTK_EIP(tsk) (task_pt_regs(tsk)->epc) #define KSTK_ESP(tsk) (task_pt_regs(tsk)->sp) diff --git a/arch/riscv/include/asm/ptrace.h b/arch/riscv/include/asm/ptrace.h index b5b0adcc85c1..f475f6acec49 100644 --- a/arch/riscv/include/asm/ptrace.h +++ b/arch/riscv/include/asm/ptrace.h @@ -12,6 +12,11 @@ #ifndef __ASSEMBLY__ +struct stackframe { + unsigned long fp; + unsigned long ra; +}; + struct pt_regs { unsigned long epc; unsigned long ra; diff --git a/arch/riscv/include/asm/stacktrace.h b/arch/riscv/include/asm/stacktrace.h index b1495a7e06ce..3019558f747c 100644 --- a/arch/riscv/include/asm/stacktrace.h +++ b/arch/riscv/include/asm/stacktrace.h @@ -6,11 +6,6 @@ #include <linux/sched.h> #include <asm/ptrace.h> -struct stackframe { - unsigned long fp; - unsigned long ra; -}; - extern void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, bool (*fn)(void *, unsigned long), void *arg); extern void dump_backtrace(struct pt_regs *regs, struct task_struct *task, diff --git a/arch/riscv/kernel/asm-offsets.c b/arch/riscv/kernel/asm-offsets.c index 84c056f5ee09..582b52713e93 100644 --- a/arch/riscv/kernel/asm-offsets.c +++ b/arch/riscv/kernel/asm-offsets.c @@ -477,10 +477,10 @@ void asm_offsets(void) ); /* - * We allocate a pt_regs on the stack when entering the kernel. This - * ensures the alignment is sane. + * We allocate a pt_regs and possibly a stackframe on the stack when + * entering the kernel. This ensures the alignment is sane. */ - DEFINE(PT_SIZE_ON_STACK, ALIGN(sizeof(struct pt_regs), STACK_ALIGN)); + DEFINE(EXCEPTION_FRAME_SIZE, EXCEPTION_FRAME_SIZE); OFFSET(KERNEL_MAP_VIRT_ADDR, kernel_mapping, virt_addr); OFFSET(SBI_HART_BOOT_TASK_PTR_OFFSET, sbi_hart_boot_data, task_ptr); diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index bd1c5621df45..cdb58ce32cbb 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -33,7 +33,7 @@ SYM_CODE_START(handle_exception) REG_S sp, TASK_TI_KERNEL_SP(tp) #ifdef CONFIG_VMAP_STACK - addi sp, sp, -(PT_SIZE_ON_STACK) + addi sp, sp, -EXCEPTION_FRAME_SIZE srli sp, sp, THREAD_SHIFT andi sp, sp, 0x1 bnez sp, handle_kernel_stack_overflow @@ -43,7 +43,7 @@ SYM_CODE_START(handle_exception) .Lsave_context: REG_S sp, TASK_TI_USER_SP(tp) REG_L sp, TASK_TI_KERNEL_SP(tp) - addi sp, sp, -(PT_SIZE_ON_STACK) + addi sp, sp, -EXCEPTION_FRAME_SIZE REG_S x1, PT_RA(sp) REG_S x3, PT_GP(sp) REG_S x5, PT_T0(sp) @@ -83,6 +83,12 @@ SYM_CODE_START(handle_exception) /* Load the kernel shadow call stack pointer if coming from userspace */ scs_load_current_if_task_changed s5 +#ifdef CONFIG_FRAME_POINTER + REG_S ra, (EXCEPTION_FRAME_SIZE + STACKFRAME_RA)(sp) + REG_S s0, (EXCEPTION_FRAME_SIZE + STACKFRAME_FP)(sp) + addi s0, sp, EXCEPTION_FRAME_SIZE +#endif + #ifdef CONFIG_RISCV_ISA_V_PREEMPTIVE move a0, sp call riscv_v_context_nesting_start @@ -136,7 +142,7 @@ SYM_CODE_START_NOALIGN(ret_from_exception) bnez t0, 1f /* Save unwound kernel stack pointer in thread_info */ - addi t0, sp, PT_SIZE_ON_STACK + addi t0, sp, EXCEPTION_FRAME_SIZE REG_S t0, TASK_TI_KERNEL_SP(tp) /* Save the kernel shadow call stack pointer */ @@ -192,14 +198,12 @@ SYM_CODE_START_LOCAL(handle_kernel_stack_overflow) /* we reach here from kernel context, sscratch must be 0 */ csrrw x31, CSR_SCRATCH, x31 asm_per_cpu sp, overflow_stack, x31 - li x31, OVERFLOW_STACK_SIZE + li x31, OVERFLOW_STACK_SIZE - EXCEPTION_FRAME_SIZE add sp, sp, x31 /* zero out x31 again and restore x31 */ xor x31, x31, x31 csrrw x31, CSR_SCRATCH, x31 - addi sp, sp, -(PT_SIZE_ON_STACK) - //save context to overflow stack REG_S x1, PT_RA(sp) REG_S x3, PT_GP(sp) diff --git a/arch/riscv/kernel/head.S b/arch/riscv/kernel/head.S index 4236a69c35cb..09ee5e6c2a98 100644 --- a/arch/riscv/kernel/head.S +++ b/arch/riscv/kernel/head.S @@ -290,9 +290,8 @@ SYM_CODE_START(_start_kernel) /* Initialize page tables and relocate to virtual addresses */ la tp, init_task - la sp, init_thread_union + THREAD_SIZE + la sp, init_thread_union + THREAD_SIZE - EXCEPTION_FRAME_SIZE XIP_FIXUP_OFFSET sp - addi sp, sp, -PT_SIZE_ON_STACK scs_load_init_stack #ifdef CONFIG_BUILTIN_DTB la a0, __dtb_start @@ -310,8 +309,7 @@ SYM_CODE_START(_start_kernel) call .Lsetup_trap_vector /* Restore C environment */ la tp, init_task - la sp, init_thread_union + THREAD_SIZE - addi sp, sp, -PT_SIZE_ON_STACK + la sp, init_thread_union + THREAD_SIZE - EXCEPTION_FRAME_SIZE scs_load_current #ifdef CONFIG_KASAN diff --git a/arch/riscv/kernel/stacktrace.c b/arch/riscv/kernel/stacktrace.c index 528ec7cc9a62..6be8f8942f6b 100644 --- a/arch/riscv/kernel/stacktrace.c +++ b/arch/riscv/kernel/stacktrace.c @@ -16,8 +16,6 @@ #ifdef CONFIG_FRAME_POINTER -extern asmlinkage void ret_from_exception(void); - static inline int fp_is_valid(unsigned long fp, unsigned long sp) { unsigned long low, high; @@ -70,13 +68,6 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, fp = frame->fp; pc = ftrace_graph_ret_addr(current, NULL, frame->ra, &frame->ra); - if (pc == (unsigned long)ret_from_exception) { - if (unlikely(!__kernel_text_address(pc) || !fn(arg, pc))) - break; - - pc = ((struct pt_regs *)sp)->epc; - fp = ((struct pt_regs *)sp)->s0; - } } }
This follows the frame pointer ABI and allows stack traces to cross exception boundaries without a special case in the stack walking code. Signed-off-by: Samuel Holland <samuel.holland@sifive.com> --- arch/riscv/include/asm/processor.h | 9 +++++++-- arch/riscv/include/asm/ptrace.h | 5 +++++ arch/riscv/include/asm/stacktrace.h | 5 ----- arch/riscv/kernel/asm-offsets.c | 6 +++--- arch/riscv/kernel/entry.S | 16 ++++++++++------ arch/riscv/kernel/head.S | 6 ++---- arch/riscv/kernel/stacktrace.c | 9 --------- 7 files changed, 27 insertions(+), 29 deletions(-)