Unverified Commit b29a76eb authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!15334 perf/core: Save raw sample data conditionally based on sample type

parents ab1d02b6 c81ca2ce
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -977,7 +977,7 @@ static int cfdiag_push_sample(struct perf_event *event,
	if (event->attr.sample_type & PERF_SAMPLE_RAW) {
		raw.frag.size = cpuhw->usedss;
		raw.frag.data = cpuhw->stop;
		perf_sample_save_raw_data(&data, &raw);
		perf_sample_save_raw_data(&data, event, &raw);
	}

	overflow = perf_event_overflow(event, &data, &regs);
+1 −1
Original line number Diff line number Diff line
@@ -365,7 +365,7 @@ static int paicrypt_push_sample(void)
	if (event->attr.sample_type & PERF_SAMPLE_RAW) {
		raw.frag.size = rawsize;
		raw.frag.data = cpump->save;
		perf_sample_save_raw_data(&data, &raw);
		perf_sample_save_raw_data(&data, event, &raw);
	}

	overflow = perf_event_overflow(event, &data, &regs);
+1 −1
Original line number Diff line number Diff line
@@ -454,7 +454,7 @@ static int paiext_push_sample(void)
	if (event->attr.sample_type & PERF_SAMPLE_RAW) {
		raw.frag.size = rawsize;
		raw.frag.data = cpump->save;
		perf_sample_save_raw_data(&data, &raw);
		perf_sample_save_raw_data(&data, event, &raw);
	}

	overflow = perf_event_overflow(event, &data, &regs);
+1 −1
Original line number Diff line number Diff line
@@ -1118,7 +1118,7 @@ static int perf_ibs_handle_irq(struct perf_ibs *perf_ibs, struct pt_regs *iregs)
				.data = ibs_data.data,
			},
		};
		perf_sample_save_raw_data(&data, &raw);
		perf_sample_save_raw_data(&data, event, &raw);
	}

	if (perf_ibs == &perf_ibs_op)
+6 −0
Original line number Diff line number Diff line
@@ -1287,12 +1287,18 @@ static inline void perf_sample_save_callchain(struct perf_sample_data *data,
}

static inline void perf_sample_save_raw_data(struct perf_sample_data *data,
					     struct perf_event *event,
					     struct perf_raw_record *raw)
{
	struct perf_raw_frag *frag = &raw->frag;
	u32 sum = 0;
	int size;

	if (!(event->attr.sample_type & PERF_SAMPLE_RAW))
		return;
	if (WARN_ON_ONCE(data->sample_flags & PERF_SAMPLE_RAW))
		return;

	do {
		sum += frag->size;
		if (perf_raw_frag_last(frag))
Loading