Message ID | 1367823588-28871-1-git-send-email-khandual@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c index c627843..09db68d 100644 --- a/arch/powerpc/perf/core-book3s.c +++ b/arch/powerpc/perf/core-book3s.c @@ -1590,6 +1590,8 @@ static void record_and_restart(struct perf_event *event, unsigned long val, if (event->attr.sample_type & PERF_SAMPLE_BRANCH_STACK) { struct cpu_hw_events *cpuhw; cpuhw = &__get_cpu_var(cpu_hw_events); + memset(cpuhw->bhrb_entries, 0, + sizeof(struct perf_branch_entry) * BHRB_MAX_ENTRIES); power_pmu_bhrb_read(cpuhw); data.br_stack = &cpuhw->bhrb_stack; }
The 'to' field inside branch entries might contain stale values from previous PMU interrupt instances which had indirect branches. So clear all the values before reading a fresh set of BHRB entries after a PMU interrupt. Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com> --- arch/powerpc/perf/core-book3s.c | 2 ++ 1 file changed, 2 insertions(+)