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))) {
openSUSE Build Service is sponsored by