Commit 61d89900 authored by Kajol Jain's avatar Kajol Jain Committed by Michael Ellerman
Browse files

selftests/powerpc/pmu: Add support for branch sampling in get_intr_regs function



Add support for sample type as PERF_SAMPLE_BRANCH_STACK in sampling
tests. This change is a precursor/helper for sampling testcases, that
test branck stack feature in perf interface.

Signed-off-by: default avatarKajol Jain <kjain@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220610134113.62991-5-atrajeev@linux.vnet.ibm.com
parent 50d9c30a
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -259,13 +259,32 @@ u64 *get_intr_regs(struct event *event, void *sample_buff)
	u64 *intr_regs;
	size_t size = 0;

	if ((type ^ PERF_SAMPLE_REGS_INTR))
	if ((type ^ (PERF_SAMPLE_REGS_INTR | PERF_SAMPLE_BRANCH_STACK)) &&
			(type  ^ PERF_SAMPLE_REGS_INTR))
		return NULL;

	intr_regs = (u64 *)perf_read_first_sample(sample_buff, &size);
	if (!intr_regs)
		return NULL;

	if (type & PERF_SAMPLE_BRANCH_STACK) {
		/*
		 * PERF_RECORD_SAMPLE and PERF_SAMPLE_BRANCH_STACK:
		 * struct {
		 *     struct perf_event_header hdr;
		 *     u64 number_of_branches;
		 *     struct perf_branch_entry[number_of_branches];
		 *     u64 data[];
		 * };
		 * struct perf_branch_entry {
		 *     u64	from;
		 *     u64	to;
		 *     u64	misc;
		 * };
		 */
		intr_regs += ((*intr_regs) * 3) + 1;
	}

	/*
	 * First entry in the sample buffer used to specify
	 * PERF_SAMPLE_REGS_ABI_64, skip perf regs abi to access