From: Andi Kleen <ak@linux.intel.com>
To: Stephane Eranian <eranian@google.com>
Cc: linux-kernel@vger.kernel.org, peterz@infradead.org,
mingo@elte.hu, acme@redhat.com, jolsa@redhat.com,
namhyung.kim@lge.com
Subject: Re: [PATCH v6 07/18] perf: add generic memory sampling interface
Date: Fri, 18 Jan 2013 15:06:04 -0800 [thread overview]
Message-ID: <20130118230604.GJ4051@tassilo.jf.intel.com> (raw)
In-Reply-To: <1358264386-24633-8-git-send-email-eranian@google.com>
> extern void perf_output_sample(struct perf_output_handle *handle,
> diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
> index 7e24641..8283218 100644
> --- a/include/uapi/linux/perf_event.h
> +++ b/include/uapi/linux/perf_event.h
> @@ -133,9 +133,9 @@ enum perf_event_sample_format {
> PERF_SAMPLE_REGS_USER = 1U << 12,
> PERF_SAMPLE_STACK_USER = 1U << 13,
> PERF_SAMPLE_WEIGHT = 1U << 14,
> + PERF_SAMPLE_DSRC = 1U << 15,
This conflicts with similar extensions in the Haswell patchkit,
but that can be worked out by just moving some numbers (and making
sure the input/output calls are still in the right place)
> +union perf_mem_dsrc {
> + __u64 val;
> + struct {
> + __u64 mem_op:5, /* type of opcode */
> + mem_lvl:14, /* memory hierarchy level */
> + mem_snoop:5, /* snoop mode */
> + mem_lock:2, /* lock instr */
> + mem_dtlb:7, /* tlb access */
> + mem_rsvd:31;
> + };
> +};
> +
> +/* type of opcode (load/store/prefetch,code) */
> +#define PERF_MEM_OP_NA 0x01 /* not available */
> +#define PERF_MEM_OP_LOAD 0x02 /* load instruction */
> +#define PERF_MEM_OP_STORE 0x04 /* store instruction */
> +#define PERF_MEM_OP_PFETCH 0x08 /* prefetch */
> +#define PERF_MEM_OP_EXEC 0x10 /* code (execution) */
> +#define PERF_MEM_OP_SHIFT 0
Do we really need the shift? it's implicit in the bitfield right?
> +/* memory hierarchy (memory level, hit or miss) */
> +#define PERF_MEM_LVL_NA 0x01 /* not available */
> +#define PERF_MEM_LVL_HIT 0x02 /* hit level */
> +#define PERF_MEM_LVL_MISS 0x04 /* miss level */
> +#define PERF_MEM_LVL_L1 0x08 /* L1 */
> +#define PERF_MEM_LVL_LFB 0x10 /* Line Fill Buffer */
> +#define PERF_MEM_LVL_L2 0x20 /* L2 hit */
> +#define PERF_MEM_LVL_L3 0x40 /* L3 hit */
> +#define PERF_MEM_LVL_LOC_RAM 0x80 /* Local DRAM */
> +#define PERF_MEM_LVL_REM_RAM1 0x100 /* Remote DRAM (1 hop) */
> +#define PERF_MEM_LVL_REM_RAM2 0x200 /* Remote DRAM (2 hops) */
> +#define PERF_MEM_LVL_REM_CCE1 0x400 /* Remote Cache (1 hop) */
> +#define PERF_MEM_LVL_REM_CCE2 0x800 /* Remote Cache (2 hops) */
> +#define PERF_MEM_LVL_IO 0x1000 /* I/O memory */
> +#define PERF_MEM_LVL_UNC 0x2000 /* Uncached memory */
I would leave some free bits here, obviously this doesn't cover all
that may be possible in system architecture. Also why is this a bit mask,
you can only hit one level right? So perhaps a number.
> +/* TLB access */
> +#define PERF_MEM_TLB_NA 0x01 /* not available */
> +#define PERF_MEM_TLB_HIT 0x02 /* hit level */
> +#define PERF_MEM_TLB_MISS 0x04 /* miss level */
> +#define PERF_MEM_TLB_L1 0x08 /* L1 */
> +#define PERF_MEM_TLB_L2 0x10 /* L2 */
> +#define PERF_MEM_TLB_WK 0x20 /* Hardware Walker*/
> +#define PERF_MEM_TLB_OS 0x40 /* OS fault handler */
Same
> +#define PERF_MEM_TLB_SHIFT 26
> +
> +#define PERF_MEM_S(a, s) \
> + (((u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
Is that used by anything?
-Andi
--
ak@linux.intel.com -- Speaking for myself only
next prev parent reply other threads:[~2013-01-18 23:06 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-15 15:39 [PATCH v6 00/18] perf: add memory access sampling support Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 01/18] perf, x86: Support CPU specific sysfs events Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 02/18] perf/x86: improve sysfs event mapping with event string Stephane Eranian
2013-01-18 22:57 ` Andi Kleen
2013-01-15 15:39 ` [PATCH v6 03/18] perf/x86: add flags to event constraints Stephane Eranian
2013-01-18 22:59 ` Andi Kleen
2013-01-22 14:22 ` Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 04/18] perf, core: Add a concept of a weightened sample Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 05/18] perf: add minimal support for PERF_SAMPLE_WEIGHT Stephane Eranian
2013-01-18 23:00 ` Andi Kleen
2013-01-22 14:30 ` Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 06/18] perf: add support for PERF_SAMPLE_ADDR in dump_sampple() Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 07/18] perf: add generic memory sampling interface Stephane Eranian
2013-01-18 23:06 ` Andi Kleen [this message]
2013-01-23 16:54 ` Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 08/18] perf/x86: add memory profiling via PEBS Load Latency Stephane Eranian
2013-01-18 23:12 ` Andi Kleen
2013-01-15 15:39 ` [PATCH v6 09/18] perf/x86: export PEBS load latency threshold register to sysfs Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 10/18] perf/x86: add support for PEBS Precise Store Stephane Eranian
2013-01-18 23:21 ` Andi Kleen
2013-01-15 15:39 ` [PATCH v6 11/18] perf tools: add mem access sampling core support Stephane Eranian
2013-01-18 23:25 ` Andi Kleen
2013-01-15 15:39 ` [PATCH v6 12/18] perf report: add support for mem access profiling Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 13/18] perf record: " Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 14/18] perf tools: add new mem command for memory " Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 15/18] perf: add PERF_RECORD_MISC_MMAP_DATA to RECORD_MMAP Stephane Eranian
2013-01-18 23:25 ` Andi Kleen
2013-01-15 15:39 ` [PATCH v6 16/18] perf tools: detect data vs. text mappings Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 17/18] perf tools: Ignore ABS symbols when loading data maps Stephane Eranian
2013-01-15 15:39 ` [PATCH v6 18/18] perf tools: Fix output of symbol_daddr offset Stephane Eranian
2013-01-24 11:56 ` [PATCH v6 00/18] perf: add memory access sampling support Ingo Molnar
2013-01-24 13:39 ` Stephane Eranian
2013-01-24 13:41 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130118230604.GJ4051@tassilo.jf.intel.com \
--to=ak@linux.intel.com \
--cc=acme@redhat.com \
--cc=eranian@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=namhyung.kim@lge.com \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox