• Xianting Tian's avatar
    RISC-V: Fixup get incorrect user mode PC for kernel mode regs · 59c026c3
    Xianting Tian authored
    When use 'echo c > /proc/sysrq-trigger' to trigger kdump, riscv_crash_save_regs()
    will be called to save regs for vmcore, we found "epc" value 00ffffffa5537400
    is not a valid kernel virtual address, but is a user virtual address. Other
    regs(eg, ra, sp, gp...) are correct kernel virtual address.
    Actually 0x00ffffffb0dd9400 is the user mode PC of 'PID: 113 Comm: sh', which
    is saved in the task's stack.
    
    [   21.201701] CPU: 0 PID: 113 Comm: sh Kdump: loaded Not tainted 5.18.9 #45
    [   21.201979] Hardware name: riscv-virtio,qemu (DT)
    [   21.202160] epc : 00ffffffa5537400 ra : ffffffff80088640 sp : ff20000010333b90
    [   21.202435]  gp : ffffffff810dde38 tp : ff6000000226c200 t0 : ffffffff8032be7c
    [   21.202707]  t1 : 0720072007200720 t2 : 30203a7375746174 s0 : ff20000010333cf0
    [   21.202973]  s1 : 0000000000000000 a0 : ff20000010333b98 a1 : 0000000000000001
    [   21.203243]  a2 : 0000000000000010 a3 : 0000000000000000 a4 : 28c8f0aeffea4e00
    [   21.203519...
    59c026c3
crash_save_regs.S 1.56 KB