lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150506133550.GA5203@kernel.org>
Date:	Wed, 6 May 2015 10:35:50 -0300
From:	Arnaldo Carvalho de Melo <acme@...nel.org>
To:	Adrian Hunter <adrian.hunter@...el.com>
Cc:	Peter Zijlstra <peterz@...radead.org>,
	linux-kernel@...r.kernel.org, David Ahern <dsahern@...il.com>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Jiri Olsa <jolsa@...hat.com>,
	Namhyung Kim <namhyung@...il.com>,
	Stephane Eranian <eranian@...gle.com>
Subject: Re: [PATCH V4 18/24] perf tools: Add Intel BTS support

Em Wed, May 06, 2015 at 10:14:36AM +0300, Adrian Hunter escreveu:
> On 06/05/15 00:09, Arnaldo Carvalho de Melo wrote:
> > Em Tue, May 05, 2015 at 04:51:41PM -0300, Arnaldo Carvalho de Melo escreveu:
> >> c3278f0231e8 perf auxtrace: Add a hashtable for caching
> >> 73f75fb1bdc5 perf auxtrace: Add processing for AUX area tracing events
> >> [acme@...andy linux]$

> >> Will try processing these BTS first, i.e. do the reorder here,

> > Not that easy...

> I am not sure what can be done.

> Any version of perf will accept a PMU event, so users can select
> intel_bts or intel_pt even though the tools have no support :-(

> For example, a v4.0 perf with no auxtrace/intel_bs/intel_pt support
> but with a kernel that does support intel_bts or intel_pt
> gives:
 
> $ tools/perf/perf record -e intel_bts//u ls
> arch   COPYING  crypto         drivers   fs       init  Kbuild   kernel  MAINTAINERS  mm   perf.data      README          samples  security  tools  virt
> block  CREDITS  Documentation  firmware  include  ipc   Kconfig  lib     Makefile     net  perf.data.old  REPORTING-BUGS  scripts  sound     usr
> [ perf record: Woken up 1 times to write data ]
> 0x1f00 [0x20]: failed to process type: 12
> Warning:
> Found 1 unknown events!
> 
> Is this an older tool processing a perf.data file generated by a more recent tool?

Well, it is the tip/perf/core tool, that at the time was my
acme/perf/core branch.

I.e. if I try to follow the example, it will "work" and will
run, but no samples will be produced:

[root@...andy ~]# perf record -a -e intel_bts//u sleep 2
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.184 MB perf.data ]
[root@...andy ~]# perf evlist -v
intel_bts//u: type: 7, size: 112, { sample_period, sample_freq }: 4000,
sample_type: IP|TID|TIME|CPU|PERIOD, disabled: 1, inherit: 1,
exclude_kernel: 1, exclude_hv: 1, mmap: 1, comm: 1, freq: 1, task: 1,
sample_id_all: 1, mmap2: 1, comm_exec: 1
[root@...andy ~]# perf script
[root@...andy ~]# perf report --stdio --header
Error:
The perf.data file has no samples!
# ========
# captured on: Wed May  6 10:30:06 2015
# hostname : ssdandy.ghostprotocols.net
# os release : 4.0.0-rc6+
# perf version : 4.0.rc6.g3698da
# arch : x86_64
# nrcpus online : 8
# nrcpus avail : 8
# cpudesc : Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz
# cpuid : GenuineIntel,6,42,7
# total memory : 16318708 kB
# cmdline : /home/acme/bin/perf record -a -e intel_bts//u sleep 2 
# event : name = intel_bts//u, , type = 7, size = 112, { sample_period,
# sample_freq } = 4000, sample_type = IP|TID|TIME|CPU|PERIOD, disabled =
# 1, inherit = 1, exclude_kernel = 1, exclude_hv 
# HEADER_CPU_TOPOLOGY info available, use -I to display
# HEADER_NUMA_TOPOLOGY info available, use -I to display
# pmu mappings: cpu = 4, intel_bts = 7, software = 1, power = 6,
# tracepoint = 2, breakpoint = 5
# ========
#
[root@...andy ~]#

But...:

[root@...andy ~]# grep bts /proc/cpuinfo  | head -1
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe
syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology
nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx
smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt
tsc_deadline_timer aes xsave avx lahf_lm ida arat epb pln pts dtherm
tpr_shadow vnmi flexpriority ept vpid xsaveopt
[root@...andy ~]# 

BTS is there and:

[root@...andy ~]# grep -i model /proc/cpuinfo  | head -2
model		: 42
model name	: Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz
[root@...andy ~]# 

[ 0.055674] smpboot: CPU0: Intel(R) Core(TM) i7-2920XM CPU @ 2.50GHz (fam: 06, model: 2a, stepping: 07)
[ 0.055697] Performance Events: PEBS fmt1+, 16-deep LBR, SandyBridge events, full-width counters, Intel PMU driver.
[ 0.055714] perf_event_intel: PEBS disabled due to CPU errata, please upgrade microcode
[ 0.055716] ... version:                3
[ 0.055717] ... bit width:              48
[ 0.055718] ... generic registers:      4
[ 0.055719] ... value mask:             0000ffffffffffff
[ 0.055720] ... max period:             0000ffffffffffff
[ 0.055720] ... fixed-purpose events:   3
[ 0.055721] ... event mask:             000000070000000f
[ 0.056454] x86: Booting SMP configuration:
[ 0.056456] .... node  #0, CPUs:      #1
[ 0.067656] Disabled fast string operations
[ 0.069850] NMI watchdog: enabled on all CPUs, permanently consumes one hw-PMU counter.

<SNIP>

[ 0.169495] perf_event_intel: PMU erratum BJ122, BV98, HSD29 worked around, HT is on


Probably I need some firmware upgrade? Forgot where to pick those, will search
later :-\

 
> If that is not the case, consider reporting to linux-kernel@...r.kernel.org.
> 
> [ perf record: Captured and wrote 0.009 MB perf.data ]
> $ tools/perf/perf report --header --stdio
> Warning:
> Found 1 unknown events!
> 
> Is this an older tool processing a perf.data file generated by a more recent tool?
> 
> If that is not the case, consider reporting to linux-kernel@...r.kernel.org.
> 
> # ========
> # captured on: Wed May  6 09:55:00 2015
> # hostname : bdw03
> # os release : 4.0.0-rc6+
> # perf version : 4.0.g39a880
> # arch : x86_64
> # nrcpus online : 4
> # nrcpus avail : 4
> # cpudesc : Intel(R) Core(TM) i5-5###U CPU @ 2.20GHz
> # cpuid : GenuineIntel,6,61,4
> # total memory : 3960092 kB
> # cmdline : /home/ahunter/git/linux/tools/perf/perf record -e intel_bts//u ls 
> # event : name = intel_bts//u, type = 7, config = 0x0, config1 = 0x0, config2 = 0x0, excl_usr = 0, excl_kern = 1, excl_host = 0, excl_guest = 0, precise_ip = 0, attr_mmap2 = 1, attr_mmap  = 1, attr_mm
> # HEADER_CPU_TOPOLOGY info available, use -I to display
> # HEADER_NUMA_TOPOLOGY info available, use -I to display
> # pmu mappings: cpu = 4, intel_bts = 7, software = 1, tracepoint = 2, breakpoint = 5, intel_pt = 6
> # ========
> #
> 
> 
> Perhaps we should disallow intel_bts and intel_pt PMU events
> explicitly and put that change back to v4.1 stable at least?
> 
> I tried adding:
> 
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index 244c66f..5d3ab7c 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -442,6 +442,10 @@ static struct perf_pmu *pmu_lookup(const char *name)
>         LIST_HEAD(aliases);
>         __u32 type;
>  
> +       /* No support for intel_bts or intel_pt so disallow them */
> +       if (!strcmp(name, "intel_bts") || !strcmp(name, "intel_pt"))
> +               return NULL;
> +
>         /*
>          * The pmu data we store & need consists of the pmu
>          * type value and format definitions. Load both right
> 
> 
> And now I get:
> 
> $ tools/perf/perf record -e intel_bts//u ls
> invalid or unsupported event: 'intel_bts//u'
> Run 'perf list' for a list of valid events

Unsure, when did we start accepting intel_bts in event names? In this patchkit?

- Arnaldo
 
>  usage: perf record [<options>] [<command>]
>     or: perf record [<options>] -- <command> [<options>]
> 
>     -e, --event <event>   event selector. use 'perf list' to list available events
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ