On Sat, Jul 12, 2014 at 2:01 AM, Andi Kleen <a...@firstfloor.org> wrote: > From: Andi Kleen <a...@linux.intel.com> > > Haswell supports reporting the data address for a range > of PEBS events, including: > > UOPS_RETIRED.ALL > MEM_UOPS_RETIRED.STLB_MISS_LOADS > MEM_UOPS_RETIRED.STLB_MISS_STORES > MEM_UOPS_RETIRED.LOCK_LOADS > MEM_UOPS_RETIRED.SPLIT_LOADS > MEM_UOPS_RETIRED.SPLIT_STORES > MEM_UOPS_RETIRED.ALL_LOADS > MEM_UOPS_RETIRED.ALL_STORES > MEM_LOAD_UOPS_RETIRED.L1_HIT > MEM_LOAD_UOPS_RETIRED.L2_HIT > MEM_LOAD_UOPS_RETIRED.L3_HIT > MEM_LOAD_UOPS_RETIRED.L1_MISS > MEM_LOAD_UOPS_RETIRED.L2_MISS > MEM_LOAD_UOPS_RETIRED.L3_MISS > MEM_LOAD_UOPS_RETIRED.HIT_LFB > MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_MISS > MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HIT > MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_HITM > MEM_LOAD_UOPS_L3_HIT_RETIRED.XSNP_NONE > MEM_LOAD_UOPS_L3_MISS_RETIRED.LOCAL_DRAM > > This facility was already enabled earlier with the original Haswell > perf changes. > > However these addresses were always reports as stores by perf, which is wrong, > as they could be loads too. The hardware does not distinguish loads and > stores > for these instructions, so there's no (cheap) way for the profiler > to find out. > > Change the type to PERF_MEM_OP_NA instead. > You could do better if you tagged the event during setup as load vs. store. And then you could simply propagate the flag to the data source struct.
> Signed-off-by: Andi Kleen <a...@linux.intel.com> > --- > arch/x86/kernel/cpu/perf_event_intel_ds.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/cpu/perf_event_intel_ds.c > b/arch/x86/kernel/cpu/perf_event_intel_ds.c > index 64b4be9..13baa7c 100644 > --- a/arch/x86/kernel/cpu/perf_event_intel_ds.c > +++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c > @@ -114,7 +114,7 @@ static u64 precise_store_data_hsw(struct perf_event > *event, u64 status) > u64 cfg = event->hw.config & INTEL_ARCH_EVENT_MASK; > > dse.val = 0; > - dse.mem_op = PERF_MEM_OP_STORE; > + dse.mem_op = PERF_MEM_OP_NA; > dse.mem_lvl = PERF_MEM_LVL_NA; > > /* > -- > 1.9.3 > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/