File itrace.branch-trace-safe.patch of Package itrace
Bug 417296 - FATE 304111/200978 SystemTap-based ITrace
Patch to fix intermittent crash when doing branch tracing
---
src/driver/ppc64/pi_itrace.c | 9 +++++++++
1 file changed, 9 insertions(+)
--- a/src/driver/ppc64/pi_itrace.c
+++ b/src/driver/ppc64/pi_itrace.c
@@ -295,6 +295,15 @@ int is_stepping_safe_br(struct pt_regs *
{
unsigned long current_addr;
+ current_addr = regs->nip;
+ while (current_addr < (regs->nip + 80)) {
+ current_addr += 4;
+ if (clears_msrri(regs, *((unsigned int *)current_addr), 1)) {
+ skip_trace_section(regs);
+ return 0;
+ }
+ }
+
for (current_addr = regs->nip - 0x20;
current_addr <= (regs->nip + 0x20); current_addr += 4)
if (reservation_inst(*((unsigned int *)current_addr))) {