• Vince Weaver's avatar
    perf/x86: Fix intel QPI uncore event definitions · c9601247
    Vince Weaver authored
    John McCalpin reports that the "drs_data" and "ncb_data" QPI
    uncore events are missing the "extra bit" and always return zero
    values unless the bit is properly set.
    
    More details from him:
    
     According to the Xeon E5-2600 Product Family Uncore Performance
     Monitoring Guide, Table 2-94, about 1/2 of the QPI Link Layer events
     (including the ones that "perf" calls "drs_data" and "ncb_data") require
     that the "extra bit" be set.
    
     This was confusing for a while -- a note at the bottom of page 94 says
     that the "extra bit" is bit 16 of the control register.
     Unfortunately, Table 2-86 clearly says that bit 16 is reserved and must
     be zero.  Looking around a bit, I found that bit 21 appears to be the
     correct "extra bit", and further investigation shows that "perf" actually
     agrees with me:
    	[root@c560-003.stampede]# cat /sys/bus/event_source/devices/uncore_qpi_0/format/event
    	config:0-7,21
    
     So the command
    	# perf -e "uncore_qpi_0/event=drs_data/"
     Is the same as
    	# perf -e "uncore_qpi_0/event=0x02,umask=0x08/"
     While it should be
    	# perf -e "uncore_qpi_0/event=0x102,umask=0x08/"
    
     I confirmed that this last version gives results that agree with the
     amount of data that I expected the STREAM benchmark to move across the QPI
     link in the second (cross-chip) test of the original script.
    Reported-by: default avatarJohn McCalpin <mccalpin@tacc.utexas.edu>
    Signed-off-by: default avatarVince Weaver <vincent.weaver@maine.edu>
    Cc: zheng.z.yan@intel.com
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: <stable@kernel.org>
    Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1308021037280.26119@vincent-weaver-1.um.maine.eduSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    c9601247
perf_event_intel_uncore.c 96.5 KB