csky/ftrace: Fixup ftrace_modify_code deadlock without CPU_HAS_ICACHE_INS
authorGuo Ren <guoren@linux.alibaba.com>
Tue, 31 Mar 2020 14:15:42 +0000 (22:15 +0800)
committerGuo Ren <guoren@linux.alibaba.com>
Tue, 31 Mar 2020 14:15:42 +0000 (22:15 +0800)
commitdd7c983e78a28ff0b22f8bcf32a303b4f79cb318
tree459801c869b68f658e573b20e7f094490b63af3e
parent89a3927a775c0a7212e2e3c4e2d42cd48895bee0
csky/ftrace: Fixup ftrace_modify_code deadlock without CPU_HAS_ICACHE_INS

If ICACHE_INS is not supported, we use IPI to sync icache on each
core. But ftrace_modify_code is called from stop_machine from default
implementation of arch_ftrace_update_code and stop_machine callback
is irq_disabled. When you call ipi with irq_disabled, a deadlock will
happen.

We couldn't use icache_flush with irq_disabled, but startup make_nop
is specific case and it needn't ipi other cores.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
arch/csky/kernel/ftrace.c
arch/csky/mm/cachev2.c