perf: Pass last sampling period to perf_sample_data_init()
We always need to pass the last sample period to perf_sample_data_init(), otherwise the event distribution will be wrong. Thus, modifiyng the function interface with the required period as argument. So basically a pattern like this: perf_sample_data_init(&data, ~0ULL); data.period = event->hw.last_period; will now be like that: perf_sample_data_init(&data, ~0ULL, event->hw.last_period); Avoids unininitialized data.period and simplifies code. Signed-off-by: Robert Richter <robert.richter@amd.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1333390758-10893-3-git-send-email-robert.richter@amd.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

parent
c75841a398
commit
fd0d000b2c
@@ -4957,7 +4957,7 @@ void __perf_sw_event(u32 event_id, u64 nr, struct pt_regs *regs, u64 addr)
|
||||
if (rctx < 0)
|
||||
return;
|
||||
|
||||
perf_sample_data_init(&data, addr);
|
||||
perf_sample_data_init(&data, addr, 0);
|
||||
|
||||
do_perf_sw_event(PERF_TYPE_SOFTWARE, event_id, nr, &data, regs);
|
||||
|
||||
@@ -5215,7 +5215,7 @@ void perf_tp_event(u64 addr, u64 count, void *record, int entry_size,
|
||||
.data = record,
|
||||
};
|
||||
|
||||
perf_sample_data_init(&data, addr);
|
||||
perf_sample_data_init(&data, addr, 0);
|
||||
data.raw = &raw;
|
||||
|
||||
hlist_for_each_entry_rcu(event, node, head, hlist_entry) {
|
||||
@@ -5318,7 +5318,7 @@ void perf_bp_event(struct perf_event *bp, void *data)
|
||||
struct perf_sample_data sample;
|
||||
struct pt_regs *regs = data;
|
||||
|
||||
perf_sample_data_init(&sample, bp->attr.bp_addr);
|
||||
perf_sample_data_init(&sample, bp->attr.bp_addr, 0);
|
||||
|
||||
if (!bp->hw.state && !perf_exclude_event(bp, regs))
|
||||
perf_swevent_event(bp, 1, &sample, regs);
|
||||
@@ -5344,8 +5344,7 @@ static enum hrtimer_restart perf_swevent_hrtimer(struct hrtimer *hrtimer)
|
||||
|
||||
event->pmu->read(event);
|
||||
|
||||
perf_sample_data_init(&data, 0);
|
||||
data.period = event->hw.last_period;
|
||||
perf_sample_data_init(&data, 0, event->hw.last_period);
|
||||
regs = get_irq_regs();
|
||||
|
||||
if (regs && !perf_exclude_event(event, regs)) {
|
||||
|
Reference in New Issue
Block a user