Re: [PATCH v4 9/9] riscv: Fixup lockdep_assert_held(&text_mutex) in patch_insn_write

From: Guo Ren
Date: Wed Oct 21 2020 - 04:27:18 EST


Why?

funca:
nop addi sp,sp, -8
nop sd ra, 0(sp)
nop, nop auipc ra, 0x?
nop, nop -> jalr -?(ra)
nop ld ra,0(sp)
nop addi sp,sp, 8

When CPU0 has only changed half of them, CPU1 call funca then CPU1 broken.

On Wed, Oct 21, 2020 at 4:41 AM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> On Tue, 20 Oct 2020 19:18:01 +0800
> Guo Ren <guoren@xxxxxxxxxx> wrote:
>
> > > What platform are you testing ? We are seeing a crash while enabling
> > > any of the tracers multiple times
> > > on Qemu/HiFive Unleashed.
> > I use qemu for testing. I've changed dynamic ftrace mechanism from
> > mcount to -fpatchable-entry.
> >
> > The problem is made by the lockdep checking of text_mutex.
>
> If you are switching to "patchable-entry" you shouldn't need to use
> stop_machine for the updates. No?
>
> -- Steve



--
Best Regards
Guo Ren

ML: https://lore.kernel.org/linux-csky/