Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 201e7deb authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge tag 'perf-urgent-for-mingo' of...

Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux

 into perf/urgent

Pull perf/urgent fix from Arnaldo Carvalho de Melo:

  - Do not stop processing when out of order events are detected, just count them
    and notify the user about it after processing all events. (Jiri Olsa)

Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents 7ddc6a21 f61ff6c0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ struct events_stats {
	u32 nr_invalid_chains;
	u32 nr_unknown_id;
	u32 nr_unprocessable_samples;
	u32 nr_unordered_events;
};

struct attr_event {
+5 −6
Original line number Diff line number Diff line
@@ -521,15 +521,11 @@ int perf_session_queue_event(struct perf_session *s, union perf_event *event,
		return -ETIME;

	if (timestamp < oe->last_flush) {
		WARN_ONCE(1, "Timestamp below last timeslice flush\n");

		pr_oe_time(timestamp,      "out of order event");
		pr_oe_time(timestamp,      "out of order event\n");
		pr_oe_time(oe->last_flush, "last flush, last_flush_type %d\n",
			   oe->last_flush_type);

		/* We could get out of order messages after forced flush. */
		if (oe->last_flush_type != OE_FLUSH__HALF)
			return -EINVAL;
		s->stats.nr_unordered_events++;
	}

	new = ordered_events__new(oe, timestamp, event);
@@ -1057,6 +1053,9 @@ static void perf_session__warn_about_errors(const struct perf_session *session,
			    "Do you have a KVM guest running and not using 'perf kvm'?\n",
			    session->stats.nr_unprocessable_samples);
	}

	if (session->stats.nr_unordered_events != 0)
		ui__warning("%u out of order events recorded.\n", session->stats.nr_unordered_events);
}

volatile int session_done;