Commit 409bcd80 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo
Browse files

perf bpf filter: Add more weight sample data support



The weight data consists of a couple of fields with the
PERF_SAMPLE_WEIGHT_STRUCT.  Add weight{1,2,3} term to select them
separately.  Also add their aliases like 'ins_lat', 'p_stage_cyc' and
'retire_lat'.

Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Hao Luo <haoluo@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: James Clark <james.clark@arm.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ravi Bangoria <ravi.bangoria@amd.com>
Cc: Song Liu <song@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20230314234237.3008956-2-namhyung@kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 33581847
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -71,6 +71,12 @@ addr { return sample(PERF_SAMPLE_ADDR); }
period		{ return sample(PERF_SAMPLE_PERIOD); }
txn		{ return sample(PERF_SAMPLE_TRANSACTION); }
weight		{ return sample(PERF_SAMPLE_WEIGHT); }
weight1		{ return sample_part(PERF_SAMPLE_WEIGHT_STRUCT, 1); }
weight2		{ return sample_part(PERF_SAMPLE_WEIGHT_STRUCT, 2); }
weight3		{ return sample_part(PERF_SAMPLE_WEIGHT_STRUCT, 3); }
ins_lat		{ return sample_part(PERF_SAMPLE_WEIGHT_STRUCT, 2); } /* alias for weight2 */
p_stage_cyc	{ return sample_part(PERF_SAMPLE_WEIGHT_STRUCT, 3); } /* alias for weight3 */
retire_lat	{ return sample_part(PERF_SAMPLE_WEIGHT_STRUCT, 3); } /* alias for weight3 */
phys_addr	{ return sample(PERF_SAMPLE_PHYS_ADDR); }
code_pgsz	{ return sample(PERF_SAMPLE_CODE_PAGE_SIZE); }
data_pgsz	{ return sample(PERF_SAMPLE_DATA_PAGE_SIZE); }
+8 −0
Original line number Diff line number Diff line
@@ -54,6 +54,14 @@ static inline __u64 perf_get_sample(struct bpf_perf_event_data_kern *kctx,
		return kctx->data->period;
	case PERF_SAMPLE_TRANSACTION:
		return kctx->data->txn;
	case PERF_SAMPLE_WEIGHT_STRUCT:
		if (entry->part == 1)
			return kctx->data->weight.var1_dw;
		if (entry->part == 2)
			return kctx->data->weight.var2_w;
		if (entry->part == 3)
			return kctx->data->weight.var3_w;
		/* fall through */
	case PERF_SAMPLE_WEIGHT:
		return kctx->data->weight.full;
	case PERF_SAMPLE_PHYS_ADDR: