[PATCH] powerpc/hw_breakpoint: Only disable hw breakpoint if cpu supports it
Naveen N. Rao
naveen.n.rao at linux.vnet.ibm.com
Wed Apr 4 20:41:16 AEST 2018
We get the below warning if we try to use kexec on P9:
kexec_core: Starting new kernel
WARNING: CPU: 0 PID: 1223 at arch/powerpc/kernel/process.c:826 __set_breakpoint+0xb4/0x140
[snip]
NIP [c00000000001bf44] __set_breakpoint+0xb4/0x140
LR [c000000000061268] kexec_prepare_cpus_wait+0x58/0x150
Call Trace:
[c0000000ee70fad0] [c0000000ee70fb20] 0xc0000000ee70fb20 (unreliable)
[c0000000ee70faf0] [c0000000ee70fb20] 0xc0000000ee70fb20
[c0000000ee70fbb0] [c000000000061884] default_machine_kexec+0x234/0x2c0
[c0000000ee70fc40] [c0000000000605c4] machine_kexec+0x84/0x90
[c0000000ee70fc70] [c000000000206548] kernel_kexec+0xd8/0xe0
[c0000000ee70fce0] [c000000000169e74] SyS_reboot+0x214/0x2c0
[c0000000ee70fe30] [c00000000000bd60] system_call+0x58/0x6c
This happens since we are trying to clear hw breakpoint on POWER9, though
we don't have CPU_FTR_DAWR enabled. Guard __set_breakpoint() within
hw_breakpoint_disable() with ppc_breakpoint_available() to address this.
Signed-off-by: Naveen N. Rao <naveen.n.rao at linux.vnet.ibm.com>
---
arch/powerpc/include/asm/hw_breakpoint.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h
index 90c708e5e7c4..8e7b09703ca4 100644
--- a/arch/powerpc/include/asm/hw_breakpoint.h
+++ b/arch/powerpc/include/asm/hw_breakpoint.h
@@ -80,7 +80,8 @@ static inline void hw_breakpoint_disable(void)
brk.address = 0;
brk.type = 0;
brk.len = 0;
- __set_breakpoint(&brk);
+ if (ppc_breakpoint_available())
+ __set_breakpoint(&brk);
}
extern void thread_change_pc(struct task_struct *tsk, struct pt_regs *regs);
int hw_breakpoint_handler(struct die_args *args);
--
2.16.2
More information about the Linuxppc-dev
mailing list