mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-23 02:04:02 +00:00
Pull performance events updates from Ingo Molnar:
"Uprobes:
- Add BPF session support (Jiri Olsa)
- Switch to RCU Tasks Trace flavor for better performance (Andrii
Nakryiko)
- Massively increase uretprobe SMP scalability by SRCU-protecting
the uretprobe lifetime (Andrii Nakryiko)
- Kill xol_area->slot_count (Oleg Nesterov)
Core facilities:
- Implement targeted high-frequency profiling by adding the ability
for an event to "pause" or "resume" AUX area tracing (Adrian
Hunter)
VM profiling/sampling:
- Correct perf sampling with guest VMs (Colton Lewis)
New hardware support:
- x86/intel: Add PMU support for Intel ArrowLake-H CPUs (Dapeng Mi)
Misc fixes and enhancements:
- x86/intel/pt: Fix buffer full but size is 0 case (Adrian Hunter)
- x86/amd: Warn only on new bits set (Breno Leitao)
- x86/amd/uncore: Avoid a false positive warning about snprintf
truncation in amd_uncore_umc_ctx_init (Jean Delvare)
- uprobes: Re-order struct uprobe_task to save some space
(Christophe JAILLET)
- x86/rapl: Move the pmu allocation out of CPU hotplug (Kan Liang)
- x86/rapl: Clean up cpumask and hotplug (Kan Liang)
- uprobes: Deuglify xol_get_insn_slot/xol_free_insn_slot paths (Oleg
Nesterov)"
* tag 'perf-core-2024-11-18' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (32 commits)
perf/core: Correct perf sampling with guest VMs
perf/x86: Refactor misc flag assignments
perf/powerpc: Use perf_arch_instruction_pointer()
perf/core: Hoist perf_instruction_pointer() and perf_misc_flags()
perf/arm: Drop unused functions
uprobes: Re-order struct uprobe_task to save some space
perf/x86/amd/uncore: Avoid a false positive warning about snprintf truncation in amd_uncore_umc_ctx_init
perf/x86/intel: Do not enable large PEBS for events with aux actions or aux sampling
perf/x86/intel/pt: Add support for pause / resume
perf/core: Add aux_pause, aux_resume, aux_start_paused
perf/x86/intel/pt: Fix buffer full but size is 0 case
uprobes: SRCU-protect uretprobe lifetime (with timeout)
uprobes: allow put_uprobe() from non-sleepable softirq context
perf/x86/rapl: Clean up cpumask and hotplug
perf/x86/rapl: Move the pmu allocation out of CPU hotplug
uprobe: Add support for session consumer
uprobe: Add data pointer to consumer handlers
perf/x86/amd: Warn only on new bits set
uprobes: fold xol_take_insn_slot() into xol_get_insn_slot()
uprobes: kill xol_area->slot_count
...
59 lines
1.9 KiB
C
59 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Performance event support - s390 specific definitions.
|
|
*
|
|
* Copyright IBM Corp. 2009, 2017
|
|
* Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
|
|
* Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
|
|
*/
|
|
|
|
#ifndef _ASM_S390_PERF_EVENT_H
|
|
#define _ASM_S390_PERF_EVENT_H
|
|
|
|
#include <linux/perf_event.h>
|
|
#include <linux/device.h>
|
|
#include <asm/stacktrace.h>
|
|
|
|
/* Per-CPU flags for PMU states */
|
|
#define PMU_F_RESERVED 0x1000
|
|
#define PMU_F_ENABLED 0x2000
|
|
#define PMU_F_IN_USE 0x4000
|
|
#define PMU_F_ERR_IBE 0x0100
|
|
#define PMU_F_ERR_LSDA 0x0200
|
|
#define PMU_F_ERR_MASK (PMU_F_ERR_IBE|PMU_F_ERR_LSDA)
|
|
|
|
/* Perf definitions for PMU event attributes in sysfs */
|
|
extern __init const struct attribute_group **cpumf_cf_event_group(void);
|
|
extern ssize_t cpumf_events_sysfs_show(struct device *dev,
|
|
struct device_attribute *attr,
|
|
char *page);
|
|
#define EVENT_VAR(_cat, _name) event_attr_##_cat##_##_name
|
|
#define EVENT_PTR(_cat, _name) (&EVENT_VAR(_cat, _name).attr.attr)
|
|
|
|
#define CPUMF_EVENT_ATTR(cat, name, id) \
|
|
PMU_EVENT_ATTR(name, EVENT_VAR(cat, name), id, cpumf_events_sysfs_show)
|
|
#define CPUMF_EVENT_PTR(cat, name) EVENT_PTR(cat, name)
|
|
|
|
|
|
/* Perf callbacks */
|
|
struct pt_regs;
|
|
extern unsigned long perf_arch_instruction_pointer(struct pt_regs *regs);
|
|
extern unsigned long perf_arch_misc_flags(struct pt_regs *regs);
|
|
#define perf_arch_misc_flags(regs) perf_arch_misc_flags(regs)
|
|
#define perf_arch_bpf_user_pt_regs(regs) ®s->user_regs
|
|
|
|
/* Perf pt_regs extension for sample-data-entry indicators */
|
|
struct perf_sf_sde_regs {
|
|
unsigned char in_guest:1; /* guest sample */
|
|
unsigned long reserved:63; /* reserved */
|
|
};
|
|
|
|
#define perf_arch_fetch_caller_regs(regs, __ip) do { \
|
|
(regs)->psw.mask = 0; \
|
|
(regs)->psw.addr = (__ip); \
|
|
(regs)->gprs[15] = (unsigned long)__builtin_frame_address(0) - \
|
|
offsetof(struct stack_frame, back_chain); \
|
|
} while (0)
|
|
|
|
#endif /* _ASM_S390_PERF_EVENT_H */
|