18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef _ASM_X86_INTEL_PT_H 38c2ecf20Sopenharmony_ci#define _ASM_X86_INTEL_PT_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#define PT_CPUID_LEAVES 2 68c2ecf20Sopenharmony_ci#define PT_CPUID_REGS_NUM 4 /* number of regsters (eax, ebx, ecx, edx) */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_cienum pt_capabilities { 98c2ecf20Sopenharmony_ci PT_CAP_max_subleaf = 0, 108c2ecf20Sopenharmony_ci PT_CAP_cr3_filtering, 118c2ecf20Sopenharmony_ci PT_CAP_psb_cyc, 128c2ecf20Sopenharmony_ci PT_CAP_ip_filtering, 138c2ecf20Sopenharmony_ci PT_CAP_mtc, 148c2ecf20Sopenharmony_ci PT_CAP_ptwrite, 158c2ecf20Sopenharmony_ci PT_CAP_power_event_trace, 168c2ecf20Sopenharmony_ci PT_CAP_topa_output, 178c2ecf20Sopenharmony_ci PT_CAP_topa_multiple_entries, 188c2ecf20Sopenharmony_ci PT_CAP_single_range_output, 198c2ecf20Sopenharmony_ci PT_CAP_output_subsys, 208c2ecf20Sopenharmony_ci PT_CAP_payloads_lip, 218c2ecf20Sopenharmony_ci PT_CAP_num_address_ranges, 228c2ecf20Sopenharmony_ci PT_CAP_mtc_periods, 238c2ecf20Sopenharmony_ci PT_CAP_cycle_thresholds, 248c2ecf20Sopenharmony_ci PT_CAP_psb_periods, 258c2ecf20Sopenharmony_ci}; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#if defined(CONFIG_PERF_EVENTS) && defined(CONFIG_CPU_SUP_INTEL) 288c2ecf20Sopenharmony_civoid cpu_emergency_stop_pt(void); 298c2ecf20Sopenharmony_ciextern u32 intel_pt_validate_hw_cap(enum pt_capabilities cap); 308c2ecf20Sopenharmony_ciextern u32 intel_pt_validate_cap(u32 *caps, enum pt_capabilities cap); 318c2ecf20Sopenharmony_ciextern int is_intel_pt_event(struct perf_event *event); 328c2ecf20Sopenharmony_ci#else 338c2ecf20Sopenharmony_cistatic inline void cpu_emergency_stop_pt(void) {} 348c2ecf20Sopenharmony_cistatic inline u32 intel_pt_validate_hw_cap(enum pt_capabilities cap) { return 0; } 358c2ecf20Sopenharmony_cistatic inline u32 intel_pt_validate_cap(u32 *caps, enum pt_capabilities capability) { return 0; } 368c2ecf20Sopenharmony_cistatic inline int is_intel_pt_event(struct perf_event *event) { return 0; } 378c2ecf20Sopenharmony_ci#endif 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci#endif /* _ASM_X86_INTEL_PT_H */ 40