Commit 5a2d8b9c authored by Benjamin Gray's avatar Benjamin Gray Committed by Michael Ellerman
Browse files

powerpc/watchpoints: Simplify watchpoint reinsertion



We only remove watchpoints when they have the perf_single_step flag set,
so we can reinsert them during the first iteration.

Signed-off-by: default avatarBenjamin Gray <bgray@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230801011744.153973-5-bgray@linux.ibm.com
parent 1e60f356
Loading
Loading
Loading
Loading
+1 −11
Original line number Diff line number Diff line
@@ -772,16 +772,6 @@ static int single_step_dabr_instruction(struct die_args *args)
			perf_bp_event(bp, regs);

		info->perf_single_step = false;
	}

	if (!found)
		return NOTIFY_DONE;

	for (int i = 0; i < nr_wp_slots(); i++) {
		struct perf_event *bp = __this_cpu_read(bp_per_reg[i]);
		if (!bp)
			continue;

		__set_breakpoint(i, counter_arch_bp(bp));
	}

@@ -789,7 +779,7 @@ static int single_step_dabr_instruction(struct die_args *args)
	 * If the process was being single-stepped by ptrace, let the
	 * other single-step actions occur (e.g. generate SIGTRAP).
	 */
	if (test_thread_flag(TIF_SINGLESTEP))
	if (!found || test_thread_flag(TIF_SINGLESTEP))
		return NOTIFY_DONE;

	return NOTIFY_STOP;