linux-stable/arch/arm64/include/asm
Colton Lewis 2c47e7a74f perf/core: Correct perf sampling with guest VMs
Previously any PMU overflow interrupt that fired while a VCPU was
loaded was recorded as a guest event whether it truly was or not. This
resulted in nonsense perf recordings that did not honor
perf_event_attr.exclude_guest and recorded guest IPs where it should
have recorded host IPs.

Rework the sampling logic to only record guest samples for events with
exclude_guest = 0. This way any host-only events with exclude_guest
set will never see unexpected guest samples. The behaviour of events
with exclude_guest = 0 is unchanged.

Note that events configured to sample both host and guest may still
misattribute a PMI that arrived in the host as a guest event depending
on KVM arch and vendor behavior.

Signed-off-by: Colton Lewis <coltonlewis@google.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Acked-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20241113190156.2145593-6-coltonlewis@google.com
2024-11-14 10:40:01 +01:00
..
stacktrace arm64: stacktrace: factor out kernel unwind state 2023-12-11 11:42:55 +00:00
vdso arm64: vDSO: Wire up getrandom() vDSO implementation 2024-09-13 17:28:36 +02:00
xen arm/xen: Introduce xen_setup_dma_ops() 2022-06-06 08:54:33 +02:00
acenv.h
acpi.h arm64: acpi: Harden get_cpu_for_acpi_id() against missing CPU entry 2024-06-28 18:38:30 +01:00
alternative-macros.h arm64: alternative: make alternative_has_cap_likely() VDSO compatible 2024-09-13 17:28:35 +02:00
alternative.h Merge branches 'for-next/kpti', 'for-next/missing-proto-warn', 'for-next/iss2-decode', 'for-next/kselftest', 'for-next/misc', 'for-next/feat_mops', 'for-next/module-alloc', 'for-next/sysreg', 'for-next/cpucap', 'for-next/acpi', 'for-next/kdump', 'for-next/acpi-doc', 'for-next/doc' and 'for-next/tpidr2-fix', remote-tracking branch 'arm64/for-next/perf' into for-next/core 2023-06-23 18:32:20 +01:00
apple_m1_pmu.h drivers/perf: Add Apple icestorm/firestorm CPU PMU driver 2022-03-08 13:32:48 +00:00
arch_gicv3.h arm64: irqchip/gic-v3: Select priorities at boot time 2024-06-24 18:16:45 +01:00
arch_timer.h arm64/arch_timer: include <linux/percpu.h> 2024-06-12 15:44:19 +01:00
archrandom.h arm64: head: Move early kernel mapping routines into C code 2024-02-16 12:42:33 +00:00
arm_dsu_pmu.h
arm_pmuv3.h perf: arm_pmuv3: Add support for Armv9.4 PMU instruction counter 2024-08-16 13:09:12 +01:00
arm-cci.h
asm_pointer_auth.h arm64/sysreg: Add _EL1 into ID_AA64ISAR2_EL1 definition names 2022-07-05 11:45:46 +01:00
asm-bug.h arm64: asm-bug: Add .align 2 to the end of __BUG_ENTRY 2024-05-21 19:08:24 +01:00
asm-extable.h arm64: start using 'asm goto' for put_user() 2024-06-19 12:33:38 -07:00
asm-offsets.h
asm-prototypes.h kasan: arm64: support specialized outlined tag mismatch checks 2021-05-26 23:31:26 +01:00
asm-uaccess.h arm64/mm: remove now-superfluous ISBs from TTBR writes 2023-06-15 17:47:54 +01:00
assembler.h Merge branch 'for-next/perf' into for-next/core 2024-05-09 15:56:10 +01:00
atomic_ll_sc.h arch: Remove cmpxchg_double 2023-06-05 09:36:39 +02:00
atomic_lse.h arch: Remove cmpxchg_double 2023-06-05 09:36:39 +02:00
atomic.h locking/atomic: make atomic*_{cmp,}xchg optional 2023-06-05 09:57:14 +02:00
barrier.h arm64: barrier: Restore spec_bar() macro 2024-05-10 12:21:56 +01:00
bitops.h include: move find.h from asm_generic to linux 2022-01-15 08:47:31 -08:00
bitrev.h
boot.h
brk-imm.h arm64: kretprobes: acquire the regs via a BRK exception 2024-02-20 18:13:57 +00:00
bug.h
cache.h arm64: Kill detection of VPIPT i-cache policy 2023-12-05 11:38:03 +00:00
cacheflush.h mm: remove page_mapping() 2024-07-03 19:29:59 -07:00
checksum.h arm64: csum: cast to the proper type 2021-03-15 10:57:21 +00:00
clocksource.h
cmpxchg.h arch: Remove cmpxchg_double 2023-06-05 09:36:39 +02:00
compat.h arm64: avoid prototype warnings for syscalls 2023-05-25 17:44:01 +01:00
compiler.h arm64: move PAC masks to <asm/pointer_auth.h> 2023-04-13 12:27:11 +01:00
cpu_ops.h arm64: cpuidle: remove generic cpuidle support 2022-06-23 14:19:33 +01:00
cpu.h S390: 2024-03-15 13:03:13 -07:00
cpucaps.h arm64: errata: Unify speculative SSBS errata logic 2024-06-12 16:07:21 +01:00
cpufeature.h arm64: context switch POR_EL0 register 2024-09-04 12:52:18 +01:00
cpuidle.h arm64: cpuidle: remove generic cpuidle support 2022-06-23 14:19:33 +01:00
cputype.h arm64: cputype: Add Neoverse-N3 definitions 2024-10-01 12:46:54 +01:00
crash_reserve.h kexec: split crashkernel reservation code out from crash_core.c 2024-02-23 17:48:21 -08:00
current.h
daifflags.h arm64: entry: always set GIC_PRIO_PSR_I_SET during entry 2021-05-05 18:13:58 +01:00
dcc.h
debug-monitors.h arm64: kgdb: Set PSTATE.SS to 1 to re-enable single-step 2023-04-14 13:39:47 +01:00
device.h
dmi.h
efi.h Merge patch series "riscv: Introduce KASLR" 2023-09-08 11:25:13 -07:00
el2_setup.h Merge branch 'for-next/poe' into for-next/core 2024-09-12 13:43:41 +01:00
elf.h arm64: remove unnecessary ifdefs around is_compat_task() 2024-02-28 18:01:23 +00:00
esr.h ARM: 2024-09-16 07:38:18 +02:00
exception.h arm64: Move do_notify_resume() to entry-common.c 2024-02-20 18:12:13 +00:00
exec.h
extable.h arm64/bpf: Remove 128MB limit for BPF JIT programs 2021-11-08 22:16:26 +01:00
fixmap.h arm64: mm: Add 5 level paging support to fixmap and swapper handling 2024-02-16 12:42:40 +00:00
fpsimd.h arm64/sve: Remove unused declaration read_smcr_features() 2024-08-16 11:48:14 +01:00
fpsimdmacros.h arm64: Delete the zero_za macro 2023-12-11 13:18:06 +00:00
fpu.h arm64: implement ARCH_HAS_KERNEL_FPU_SUPPORT 2024-05-19 14:36:18 -07:00
ftrace.h function_graph: Everyone uses HAVE_FUNCTION_GRAPH_RET_ADDR_PTR, remove it 2024-06-11 11:18:24 -04:00
futex.h arm64: extable: add a dedicated uaccess handler 2021-10-21 10:45:22 +01:00
gpr-num.h arm64: gpr-num: support W registers 2021-10-21 10:45:22 +01:00
hardirq.h
hugetlb.h mm: provide mm_struct and address to huge_ptep_get() 2024-07-12 15:52:15 -07:00
hw_breakpoint.h arm64/hw_breakpoint: Directly use ESR_ELx_WNR for an watchpoint exception 2024-03-01 17:36:51 +00:00
hwcap.h arm64: enable the Permission Overlay Extension for EL0 2024-09-04 12:52:40 +01:00
hyp_image.h KVM: arm64: Allow using kvm_nvhe_sym() in hyp code 2021-03-19 12:01:20 +00:00
hyperv-tlfs.h hyperv-tlfs: Rename some HV_REGISTER_* defines for consistency 2024-03-18 04:58:49 +00:00
hypervisor.h drivers/virt: pkvm: Add initial support for running as a protected guest 2024-08-30 16:30:41 +01:00
image.h arm64: Fix dangling references to Documentation/arm64 2023-06-21 08:53:31 -06:00
insn-def.h arm64: move AARCH64_BREAK_FAULT into insn-def.h 2022-02-22 21:25:48 +00:00
insn.h bpf, arm64: inline bpf_get_smp_processor_id() helper 2024-05-12 16:54:34 -07:00
io.h arm64: mm: Add confidential computing hook to ioremap_prot() 2024-08-30 16:30:41 +01:00
irq_work.h arch: consolidate arch_irq_work_raise prototypes 2023-11-23 11:32:29 +01:00
irq.h arm64: irq: include <linux/cpumask.h> 2024-01-12 12:44:18 +00:00
irqflags.h arm64: Remove unnecessary irqflags alternative.h include 2024-04-10 17:15:09 +01:00
jump_label.h arm64: jump_label: Ensure patched jump_labels are visible to all CPUs 2024-08-02 15:07:01 +01:00
kasan.h arm64: mm: omit redundant remap of kernel image 2024-02-16 12:42:35 +00:00
Kbuild arch, mm: move definition of node_data to generic code 2024-09-03 21:15:28 -07:00
kernel-pgtable.h arm64: kernel: Create initial ID map from C code 2024-02-16 12:42:34 +00:00
kexec.h arm64, crash: wrap crash dumping code into crash related ifdefs 2024-02-23 17:48:23 -08:00
kfence.h mm,kfence: decouple kfence from page granularity mapping judgement 2023-03-27 16:15:20 +01:00
kgdb.h
kprobes.h kprobes: unify kprobes_exceptions_nofify() prototypes 2023-11-10 19:59:05 +09:00
kvm_arm.h arm64: Add missing APTable and TCR_ELx.HPD masks 2024-08-30 12:04:19 +01:00
kvm_asm.h KVM: arm64: nv: Add emulation of AT S12E{0,1}{R,W} 2024-08-30 12:04:20 +01:00
kvm_emulate.h Merge branch kvm-arm64/nv-sve into kvmarm/next 2024-07-14 00:27:06 +00:00
kvm_host.h KVM: arm64: Fix kvm_has_feat*() handling of negative features 2024-10-03 19:35:27 +01:00
kvm_hyp.h KVM: arm64: Fix __pkvm_init_switch_pgd call ABI 2024-06-20 17:40:53 +00:00
kvm_mmu.h KVM: arm64: Register ptdump with debugfs on guest creation 2024-09-10 21:32:51 +01:00
kvm_mte.h KVM: arm64: Save/restore MTE registers 2021-06-22 14:08:05 +01:00
kvm_nested.h KVM: arm64: nv: Make ps_to_output_size() generally available 2024-08-30 12:04:20 +01:00
kvm_pgtable.h KVM: arm64: Move pagetable definitions to common header 2024-09-10 17:46:57 +01:00
kvm_pkvm.h KVM: arm64: Allocate memory mapped at hyp for host sve state in pKVM 2024-06-04 15:06:33 +01:00
kvm_ptrauth.h KVM: arm64: Tidying up PAuth code in KVM 2024-08-07 19:11:05 +00:00
kvm_ras.h KVM: arm64: Treat ESR_EL2 as a 64-bit register 2022-04-29 19:26:27 +01:00
kvm_types.h
linkage.h arm64: Extend support for CONFIG_FUNCTION_ALIGNMENT 2023-01-24 11:49:43 +00:00
lse.h arm64: Remove system_uses_lse_atomics() 2023-10-18 10:58:59 +01:00
mem_encrypt.h arm64: mm: Add top-level dispatcher for internal mem_encrypt API 2024-08-30 16:30:41 +01:00
memory.h arm64: Expose the end of the linear map in PHYSMEM_END 2024-09-04 16:39:58 +01:00
mman.h Random number generator updates for Linux 6.12-rc1. 2024-09-18 15:26:31 +02:00
mmu_context.h arm64: implement PKEYS support 2024-09-04 12:54:04 +01:00
mmu.h Merge branch 'for-next/poe' into for-next/core 2024-09-12 13:43:41 +01:00
module.h arm64: Avoid cpus_have_const_cap() for ARM64_WORKAROUND_843419 2023-10-16 14:17:06 +01:00
module.lds.h arm64: module: mandate MODULE_PLTS 2023-06-06 17:39:05 +01:00
mshyperv.h hyperv-tlfs: Change prefix of generic HV_REGISTER_* MSRs to HV_MSR_* 2024-03-04 06:59:18 +00:00
mte-def.h arm64: mte: Define the number of bytes for storing the tags in a page 2022-02-15 22:53:29 +00:00
mte-kasan.h arm64: mte: rename TCO routines 2023-04-05 19:42:43 -07:00
mte.h arm64: mte: Make mte_check_tfsr_*() conditional on KASAN instead of MTE 2024-06-12 16:01:57 +01:00
neon-intrinsics.h
neon.h
numa.h numa: Move numa implementation to common code 2021-01-14 15:08:55 -08:00
page-def.h arch: simplify architecture specific page size configuration 2024-03-06 19:29:03 +01:00
page.h mm: add vma_alloc_zeroed_movable_folio() 2023-02-02 22:33:18 -08:00
paravirt_api_clock.h sched/headers: Add initial new headers as identity mappings 2022-02-23 10:58:28 +01:00
paravirt.h x86/paravirt: Switch time pvops functions to use static_call() 2021-03-11 16:17:52 +01:00
patching.h arm64: patching: implement text_poke API 2024-02-28 13:44:47 -08:00
pci.h asm-generic: Add new pci.h and use it 2022-07-22 17:34:57 -05:00
percpu.h arch: Remove cmpxchg_double 2023-06-05 09:36:39 +02:00
perf_event.h perf/core: Correct perf sampling with guest VMs 2024-11-14 10:40:01 +01:00
pgalloc.h arm64/mm: Use generic __pud_free() helper in pud_free() implementation 2024-03-01 15:25:45 +00:00
pgtable-hwdef.h ARM: 2024-09-16 07:38:18 +02:00
pgtable-prot.h arm64: enable POE and PIE to coexist 2024-09-04 12:54:05 +01:00
pgtable-types.h arm64: mm: Add definitions to support 5 levels of paging 2024-02-16 12:42:39 +00:00
pgtable.h ALong with the usual shower of singleton patches, notable patch series in 2024-09-21 07:29:05 -07:00
pkeys.h arm64: pkeys: remove redundant WARN 2024-09-10 18:19:59 +01:00
pointer_auth.h arm64: move PAC masks to <asm/pointer_auth.h> 2023-04-13 12:27:11 +01:00
por.h arm64: implement PKEYS support 2024-09-04 12:54:04 +01:00
preempt.h arm64: Support PREEMPT_DYNAMIC 2022-02-19 11:11:09 +01:00
probes.h
proc-fns.h
processor.h Merge branch 'for-next/timers' into for-next/core 2024-09-12 13:44:03 +01:00
ptdump.h arm64: ptdump: Use the ptdump description from a local context 2024-09-10 21:32:51 +01:00
ptrace.h arm64: irqchip/gic-v3: Select priorities at boot time 2024-06-24 18:16:45 +01:00
pvclock-abi.h
runtime-const.h arm64: add 'runtime constant' support 2024-07-09 07:30:43 -07:00
rwonce.h arm64: Do not include __READ_ONCE() block in assembly files 2022-03-09 21:56:50 +00:00
scs.h arm64: head: Move early kernel mapping routines into C code 2024-02-16 12:42:33 +00:00
sdei.h arm64: sdei: abort running SDEI handlers during crash 2023-08-04 17:35:33 +01:00
seccomp.h arm64: rework compat syscall macros 2024-07-10 14:23:38 +02:00
sections.h arm64: entry: Allow the trampoline text to occupy multiple pages 2022-02-15 17:40:28 +00:00
semihost.h serial: earlycon-arm-semihost: Move smh_putc() variants in respective arch's semihost.h 2023-01-19 14:58:19 +01:00
set_memory.h arm64: mm: Add top-level dispatcher for internal mem_encrypt API 2024-08-30 16:30:41 +01:00
setup.h arm64: kernel: Remove early fdt remap code 2024-02-16 12:42:29 +00:00
shmparam.h
signal32.h
signal.h
simd.h arm64: fpsimd: Drop unneeded 'busy' flag 2023-12-12 14:29:16 +00:00
smp_plat.h arm64: Add missing header <asm/smp.h> in two files 2021-07-12 13:37:34 +01:00
smp.h arm64: implement raw_smp_processor_id() using thread_info 2024-06-12 15:44:19 +01:00
sparsemem.h mm, treewide: rename MAX_ORDER to MAX_PAGE_ORDER 2024-01-08 15:27:15 -08:00
spectre.h arm64: Fix circular header dependency 2023-12-20 19:26:30 -05:00
spinlock_types.h locking: Allow to include asm/spinlock_types.h from linux/spinlock_types_raw.h 2021-12-07 15:14:12 +01:00
spinlock.h locking/arch: Move qrwlock.h include after qspinlock.h 2021-02-11 07:59:54 -05:00
stack_pointer.h
stackprotector.h stackprotector: actually use get_random_canary() 2022-11-18 02:18:10 +01:00
stacktrace.h arm64: efi: Account for the EFI runtime stack in stack unwinder 2023-01-16 15:27:31 +01:00
stage2_pgtable.h KVM: arm64: Move VTCR_EL2 into struct s2_mmu 2023-10-23 18:48:46 +00:00
stat.h
string.h Revert "arm64: Mitigate MTE issues with str{n}cmp()" 2022-03-07 21:57:02 +00:00
suspend.h
sync_bitops.h
syscall_wrapper.h posix-timers: Get rid of [COMPAT_]SYS_NI() uses 2023-12-20 21:30:27 -08:00
syscall.h tracing: arm64: Avoid missing-prototype warnings 2023-07-12 12:06:04 -04:00
sysreg.h ARM: 2024-09-16 07:38:18 +02:00
system_misc.h arm64: die(): pass 'err' as long 2022-09-16 12:17:03 +01:00
thread_info.h arm64: Implement prctl(PR_{G,S}ET_TSC) 2024-08-27 13:38:56 +01:00
timex.h
tlb.h arm64: mm: Add support for folding PUDs at runtime 2024-02-16 12:42:41 +00:00
tlbbatch.h arm64: support batched/deferred tlb shootdown during page reclamation/migration 2023-08-18 10:12:37 -07:00
tlbflush.h arm64: tlb: Allow range operation for MAX_TLBI_RANGE_PAGES 2024-04-11 11:42:57 +01:00
topology.h arch, mm: move definition of node_data to generic code 2024-09-03 21:15:28 -07:00
trans_pgd.h arm64: trans_pgd: remove trans_pgd_map_page() 2021-10-01 13:31:01 +01:00
traps.h arm64: handle PKEY/POE faults 2024-09-04 12:53:44 +01:00
uaccess.h arm64: uaccess: correct thinko in __get_mem_asm() 2024-08-14 17:51:11 +01:00
unistd32.h arm64: convert unistd_32.h to syscall.tbl format 2024-07-10 14:23:38 +02:00
unistd.h arm64: rework compat syscall macros 2024-07-10 14:23:38 +02:00
uprobes.h arm64/uprobes: change the uprobe_opcode_t typedef to fix the sparse warning 2023-01-05 15:26:09 +00:00
vdso.h arm64: vdso32: Remove unused vdso32-offsets.h 2024-01-30 11:59:17 +00:00
vectors.h arm64: Avoid cpus_have_const_cap() for ARM64_UNMAP_KERNEL_AT_EL0 2023-10-16 14:17:06 +01:00
vermagic.h
virt.h KVM: arm64: Add is_pkvm_initialized() helper 2024-05-01 16:48:14 +01:00
vmalloc.h kasan, vmalloc, arm64: mark vmalloc mappings as pgprot_tagged 2022-03-24 19:06:47 -07:00
vmap_stack.h kasan, arm64: reset pointer tags of vmapped stacks 2022-03-24 19:06:47 -07:00
vncr_mapping.h KVM: arm64: Save/restore POE registers 2024-09-04 12:52:39 +01:00
word-at-a-time.h arm64: word-at-a-time: improve byte count calculations for LE 2024-06-19 12:35:19 -07:00
xor.h lib/xor: make xor prototypes more friendly to compiler vectorization 2022-02-11 20:39:39 +11:00