Queued for 5.20,thanks. Huacai On Sat, Aug 6, 2022 at 4:10 PM Qing Zhang <zhangqing@xxxxxxxxxxx> wrote: > > This series in order to add stacktrace support, Some upcoming features require > these changes, like trace, divide unwinder into guess unwinder and prologue > unwinder is to add new unwinders in the future. > eg:unwinder_frame, unwinder_orc .etc. > > Three stages when we do unwind, > 1) unwind_start(), the prapare of unwinding, fill unwind_state. > 2) unwind_done(), judge whether the unwind process is finished or not. > 3) unwind_next_frame(), unwind the next frame. > > you can test them by: > 1) echo t > /proc/sysrq-trigger > 2) cat /proc/*/stack > 3) ftrace: function graph > 4) uprobe: echo 1 > ./options/userstacktrace > > Changes from v1 to v2: > > - Add the judgment of the offset value of ra in the prologue. > (Suggested by Youling). > - Create an inline function to check the sign bit, which is convenient > for extending other types of immediates. (Suggested by Jinyang). > - Fix sparse warning : > arch/loongarch/include/asm/uaccess.h:232:32: sparse: sparse: incorrect > type in argument 2 (different address spaces) @@ expected void const > *from @@ got void const [noderef] __user *from @@ > - Add USER_STACKTRACE support as a series. > > Changes from v2 to v3: > > - Move unwind_start definition and use location, remove #ifdef in unwind_state > and use type instead of enable. (Suggested by Huacai). > - Separated fixes for uaccess.h. (Suggested by Huacai). > > Changes from v3 to v4: > > - Add get wchan implement. (Suggested by Huacai). > > Qing Zhang (4): > LoongArch: Add guess unwinder support > LoongArch: Add prologue unwinder support > LoongArch: Add stacktrace and get_wchan support > LoongArch: Add USER_STACKTRACE support > > arch/loongarch/Kconfig | 6 + > arch/loongarch/Kconfig.debug | 28 ++++ > arch/loongarch/include/asm/inst.h | 52 +++++++ > arch/loongarch/include/asm/processor.h | 9 ++ > arch/loongarch/include/asm/stacktrace.h | 22 +++ > arch/loongarch/include/asm/switch_to.h | 14 +- > arch/loongarch/include/asm/unwind.h | 47 +++++++ > arch/loongarch/kernel/Makefile | 4 + > arch/loongarch/kernel/asm-offsets.c | 2 + > arch/loongarch/kernel/process.c | 91 ++++++++++++- > arch/loongarch/kernel/stacktrace.c | 78 +++++++++++ > arch/loongarch/kernel/switch.S | 2 + > arch/loongarch/kernel/traps.c | 24 ++-- > arch/loongarch/kernel/unwind_guess.c | 67 +++++++++ > arch/loongarch/kernel/unwind_prologue.c | 173 ++++++++++++++++++++++++ > 15 files changed, 602 insertions(+), 17 deletions(-) > create mode 100644 arch/loongarch/include/asm/unwind.h > create mode 100644 arch/loongarch/kernel/stacktrace.c > create mode 100644 arch/loongarch/kernel/unwind_guess.c > create mode 100644 arch/loongarch/kernel/unwind_prologue.c > > -- > 2.20.1 >