Lines Matching +full:add +full:- +full:pmem
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
5 * Copyright (C) 2008-2009, Thomas Gleixner <tglx@linutronix.de>
6 * Copyright (C) 2008-2011, Red Hat, Inc., Ingo Molnar
7 * Copyright (C) 2008-2011, Red Hat, Inc., Peter Zijlstra
13 * For licencing details see kernel-base/COPYING
23 * User-space ABI bits:
37 PERF_TYPE_MAX, /* non-ABI */
75 PERF_COUNT_HW_MAX, /* non-ABI */
81 * { L1-D, L1-I, LLC, ITLB, DTLB, BPU, NODE } x
94 PERF_COUNT_HW_CACHE_MAX, /* non-ABI */
102 PERF_COUNT_HW_CACHE_OP_MAX, /* non-ABI */
109 PERF_COUNT_HW_CACHE_RESULT_MAX, /* non-ABI */
132 PERF_COUNT_SW_MAX, /* non-ABI */
166 PERF_SAMPLE_MAX = 1U << 25, /* non-ABI */
209 PERF_SAMPLE_BRANCH_MAX_SHIFT /* non-ABI */
274 PERF_BR_NON_SPEC_CORRECT_PATH = 2, /* Non-speculative but on correct path */
332 PERF_TXN_MAX = (1 << 8), /* non-ABI */
369 PERF_FORMAT_MAX = 1U << 5, /* non-ABI */
373 #define PERF_ATTR_SIZE_VER1 72 /* add: config2 */
374 #define PERF_ATTR_SIZE_VER2 80 /* add: branch_sample_type */
375 #define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */
376 /* add: sample_stack_user */
377 #define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */
378 #define PERF_ATTR_SIZE_VER5 112 /* add: aux_watermark */
379 #define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */
380 #define PERF_ATTR_SIZE_VER7 128 /* add: sig_data */
381 #define PERF_ATTR_SIZE_VER8 136 /* add: config3 */
432 * 0 - SAMPLE_IP can have arbitrary skid
433 * 1 - SAMPLE_IP must have constant skid
434 * 2 - SAMPLE_IP requested to have 0 skid
435 * 3 - SAMPLE_IP must have 0 skid
440 mmap_data : 1, /* non-exec mmap data */
500 * - precise = 0: PMU interrupt
501 * - precise > 0: sampled instruction
519 * Note, siginfo_t::si_perf_data is long-sized, and sig_data will be
576 * Bits needed to read the hw events in user-space.
584 * seq = pc->lock;
587 * enabled = pc->time_enabled;
588 * running = pc->time_running;
590 * if (pc->cap_usr_time && enabled != running) {
592 * time_offset = pc->time_offset;
593 * time_mult = pc->time_mult;
594 * time_shift = pc->time_shift;
597 * index = pc->index;
598 * count = pc->offset;
599 * if (pc->cap_user_rdpmc && index) {
600 * width = pc->pmc_width;
601 * pmc = rdpmc(index - 1);
605 * } while (pc->lock != seq);
607 * NOTE: for obvious reason this only works on self-monitoring
612 __s64 offset; /* add to hardware event value */
630 * If cap_user_rdpmc this field provides the bit-width of the value
634 * pmc <<= 64 - width;
635 * pmc >>= 64 - width; // signed shift right
648 * rem = cyc & (((u64)1 << time_shift) - 1);
671 * time = timestamp - time_zero;
679 * rem = cyc & (((u64)1 << time_shift) - 1);
692 * cyc = time_cycles + ((cyc - time_cycles) & time_mask)
711 * User-space reading the @data_head value should issue an smp_rmb(),
716 * an smp_mb() to separate the data read from the ->data_tail store.
717 * In this case the kernel will not over-write unread data.
725 __u64 data_tail; /* user-space written tail */
748 * ('|' used bit, '-' unused bit)
751 * |||---------||||
754 * 0-2 CPUMODE_MASK
778 * PERF_RECORD_MISC_MMAP_DATA - PERF_RECORD_MMAP* events
779 * PERF_RECORD_MISC_COMM_EXEC - PERF_RECORD_COMM event
780 * PERF_RECORD_MISC_FORK_EXEC - PERF_RECORD_FORK event (perf internal)
781 * PERF_RECORD_MISC_SWITCH_OUT - PERF_RECORD_SWITCH* events
791 * PERF_RECORD_MISC_EXACT_IP - PERF_RECORD_SAMPLE of precise events
792 * PERF_RECORD_MISC_SWITCH_OUT_PREEMPT - PERF_RECORD_SWITCH* events
793 * PERF_RECORD_MISC_MMAP_BUILD_ID - PERF_RECORD_MMAP2 event
1036 * The MMAP2 records are an augmented version of MMAP, they add
1118 * CPU-wide version of PERF_RECORD_SWITCH with next_prev_pid and
1188 * Records changes to kernel text i.e. self-modified code. 'old_len' is
1207 * to be matched to the event by an architecture-specific hardware ID.
1209 * event ID. e.g. Intel PT uses this record to disambiguate PEBS-via-PT
1220 PERF_RECORD_MAX, /* non-ABI */
1227 * Out of line code such as kprobe-replaced instructions or optimized
1231 PERF_RECORD_KSYMBOL_TYPE_MAX /* non-ABI */
1240 PERF_BPF_EVENT_MAX, /* non-ABI */
1247 PERF_CONTEXT_HV = (__u64)-32,
1248 PERF_CONTEXT_KERNEL = (__u64)-128,
1249 PERF_CONTEXT_USER = (__u64)-512,
1251 PERF_CONTEXT_GUEST = (__u64)-2048,
1252 PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176,
1253 PERF_CONTEXT_GUEST_USER = (__u64)-2560,
1255 PERF_CONTEXT_MAX = (__u64)-4095,
1273 #define PERF_FLAG_PID_CGROUP (1UL << 2) /* pid=cgroup id, per-cpu mode only */
1352 /* 5-0x7 available */
1359 #define PERF_MEM_LVLNUM_PMEM 0x0e /* PMEM */
1402 /* 5-7 available */