├── .gitignore ├── COPYING ├── Makefile ├── README ├── config.mk ├── debian ├── README ├── README.source ├── changelog ├── compat ├── control ├── copyright ├── docs ├── libpfm4-dev.dirs ├── libpfm4-dev.install ├── libpfm4-dev.manpages ├── libpfm4.install ├── python-libpfm4.install ├── pyversions ├── rules └── source │ └── format ├── docs ├── Makefile └── man3 │ ├── libpfm.3 │ ├── libpfm_amd64.3 │ ├── libpfm_amd64_fam10h.3 │ ├── libpfm_amd64_fam15h.3 │ ├── libpfm_amd64_fam16h.3 │ ├── libpfm_amd64_fam17h.3 │ ├── libpfm_amd64_fam17h_zen2.3 │ ├── libpfm_amd64_fam19h_zen3.3 │ ├── libpfm_amd64_fam19h_zen3_l3.3 │ ├── libpfm_amd64_fam19h_zen4.3 │ ├── libpfm_amd64_fam1ah_zen5.3 │ ├── libpfm_amd64_fam1ah_zen5_l3.3 │ ├── libpfm_amd64_k7.3 │ ├── libpfm_amd64_k8.3 │ ├── libpfm_arm_a64fx.3 │ ├── libpfm_arm_ac15.3 │ ├── libpfm_arm_ac53.3 │ ├── libpfm_arm_ac55.3 │ ├── libpfm_arm_ac57.3 │ ├── libpfm_arm_ac7.3 │ ├── libpfm_arm_ac72.3 │ ├── libpfm_arm_ac76.3 │ ├── libpfm_arm_ac8.3 │ ├── libpfm_arm_ac9.3 │ ├── libpfm_arm_neoverse_n1.3 │ ├── libpfm_arm_neoverse_n2.3 │ ├── libpfm_arm_neoverse_n3.3 │ ├── libpfm_arm_neoverse_v1.3 │ ├── libpfm_arm_neoverse_v2.3 │ ├── libpfm_arm_neoverse_v3.3 │ ├── libpfm_arm_qcom_krait.3 │ ├── libpfm_arm_xgene.3 │ ├── libpfm_intel_adl_glc.3 │ ├── libpfm_intel_adl_grt.3 │ ├── libpfm_intel_atom.3 │ ├── libpfm_intel_bdw.3 │ ├── libpfm_intel_bdx_unc_cbo.3 │ ├── libpfm_intel_bdx_unc_ha.3 │ ├── libpfm_intel_bdx_unc_imc.3 │ ├── libpfm_intel_bdx_unc_irp.3 │ ├── libpfm_intel_bdx_unc_pcu.3 │ ├── libpfm_intel_bdx_unc_qpi.3 │ ├── libpfm_intel_bdx_unc_r2pcie.3 │ ├── libpfm_intel_bdx_unc_r3qpi.3 │ ├── libpfm_intel_bdx_unc_sbo.3 │ ├── libpfm_intel_bdx_unc_ubo.3 │ ├── libpfm_intel_core.3 │ ├── libpfm_intel_coreduo.3 │ ├── libpfm_intel_emr.3 │ ├── libpfm_intel_glm.3 │ ├── libpfm_intel_gnr.3 │ ├── libpfm_intel_hsw.3 │ ├── libpfm_intel_hswep_unc_cbo.3 │ ├── libpfm_intel_hswep_unc_ha.3 │ ├── libpfm_intel_hswep_unc_imc.3 │ ├── libpfm_intel_hswep_unc_irp.3 │ ├── libpfm_intel_hswep_unc_pcu.3 │ ├── libpfm_intel_hswep_unc_qpi.3 │ ├── libpfm_intel_hswep_unc_r2pcie.3 │ ├── libpfm_intel_hswep_unc_r3qpi.3 │ ├── libpfm_intel_hswep_unc_sbo.3 │ ├── libpfm_intel_hswep_unc_ubo.3 │ ├── libpfm_intel_icl.3 │ ├── libpfm_intel_icx.3 │ ├── libpfm_intel_icx_unc_cha.3 │ ├── libpfm_intel_icx_unc_iio.3 │ ├── libpfm_intel_icx_unc_imc.3 │ ├── libpfm_intel_icx_unc_irp.3 │ ├── libpfm_intel_icx_unc_m2m.3 │ ├── libpfm_intel_icx_unc_m2pcie.3 │ ├── libpfm_intel_icx_unc_m3upi.3 │ ├── libpfm_intel_icx_unc_pcu.3 │ ├── libpfm_intel_icx_unc_ubox.3 │ ├── libpfm_intel_icx_unc_upi.3 │ ├── libpfm_intel_ivb.3 │ ├── libpfm_intel_ivb_unc.3 │ ├── libpfm_intel_ivbep_unc_cbo.3 │ ├── libpfm_intel_ivbep_unc_ha.3 │ ├── libpfm_intel_ivbep_unc_imc.3 │ ├── libpfm_intel_ivbep_unc_irp.3 │ ├── libpfm_intel_ivbep_unc_pcu.3 │ ├── libpfm_intel_ivbep_unc_qpi.3 │ ├── libpfm_intel_ivbep_unc_r2pcie.3 │ ├── libpfm_intel_ivbep_unc_r3qpi.3 │ ├── libpfm_intel_ivbep_unc_ubo.3 │ ├── libpfm_intel_knc.3 │ ├── libpfm_intel_knl.3 │ ├── libpfm_intel_knm.3 │ ├── libpfm_intel_nhm.3 │ ├── libpfm_intel_nhm_unc.3 │ ├── libpfm_intel_p6.3 │ ├── libpfm_intel_rapl.3 │ ├── libpfm_intel_skl.3 │ ├── libpfm_intel_skx_unc_cha.3 │ ├── libpfm_intel_skx_unc_iio.3 │ ├── libpfm_intel_skx_unc_imc.3 │ ├── libpfm_intel_skx_unc_irp.3 │ ├── libpfm_intel_skx_unc_m2m.3 │ ├── libpfm_intel_skx_unc_m3upi.3 │ ├── libpfm_intel_skx_unc_pcu.3 │ ├── libpfm_intel_skx_unc_ubo.3 │ ├── libpfm_intel_skx_unc_upi.3 │ ├── libpfm_intel_slm.3 │ ├── libpfm_intel_snb.3 │ ├── libpfm_intel_snb_unc.3 │ ├── libpfm_intel_snbep_unc_cbo.3 │ ├── libpfm_intel_snbep_unc_ha.3 │ ├── libpfm_intel_snbep_unc_imc.3 │ ├── libpfm_intel_snbep_unc_pcu.3 │ ├── libpfm_intel_snbep_unc_qpi.3 │ ├── libpfm_intel_snbep_unc_r2pcie.3 │ ├── libpfm_intel_snbep_unc_r3qpi.3 │ ├── libpfm_intel_snbep_unc_ubo.3 │ ├── libpfm_intel_spr.3 │ ├── libpfm_intel_spr_unc_cha.3 │ ├── libpfm_intel_spr_unc_imc.3 │ ├── libpfm_intel_spr_unc_upi.3 │ ├── libpfm_intel_tmt.3 │ ├── libpfm_intel_wsm.3 │ ├── libpfm_intel_wsm_unc.3 │ ├── libpfm_intel_x86_arch.3 │ ├── libpfm_mips_74k.3 │ ├── libpfm_perf_event_raw.3 │ ├── pfm_find_event.3 │ ├── pfm_get_event_attr_info.3 │ ├── pfm_get_event_encoding.3 │ ├── pfm_get_event_info.3 │ ├── pfm_get_event_next.3 │ ├── pfm_get_os_event_encoding.3 │ ├── pfm_get_perf_event_encoding.3 │ ├── pfm_get_pmu_info.3 │ ├── pfm_get_version.3 │ ├── pfm_initialize.3 │ ├── pfm_strerror.3 │ └── pfm_terminate.3 ├── examples ├── Makefile ├── check_events.c └── showevtinfo.c ├── include ├── Makefile └── perfmon │ ├── err.h │ ├── perf_event.h │ ├── pfmlib.h │ └── pfmlib_perf_event.h ├── lib ├── Makefile ├── events │ ├── amd64_events_fam10h.h │ ├── amd64_events_fam11h.h │ ├── amd64_events_fam12h.h │ ├── amd64_events_fam14h.h │ ├── amd64_events_fam15h.h │ ├── amd64_events_fam15h_nb.h │ ├── amd64_events_fam16h.h │ ├── amd64_events_fam17h_zen1.h │ ├── amd64_events_fam17h_zen2.h │ ├── amd64_events_fam19h_zen3.h │ ├── amd64_events_fam19h_zen3_l3.h │ ├── amd64_events_fam19h_zen4.h │ ├── amd64_events_fam1ah_zen5.h │ ├── amd64_events_fam1ah_zen5_l3.h │ ├── amd64_events_k7.h │ ├── amd64_events_k8.h │ ├── arm_1176_events.h │ ├── arm_cavium_tx2_events.h │ ├── arm_cortex_a15_events.h │ ├── arm_cortex_a53_events.h │ ├── arm_cortex_a55_events.h │ ├── arm_cortex_a57_events.h │ ├── arm_cortex_a76_events.h │ ├── arm_cortex_a7_events.h │ ├── arm_cortex_a8_events.h │ ├── arm_cortex_a9_events.h │ ├── arm_fujitsu_a64fx_events.h │ ├── arm_hisilicon_kunpeng_events.h │ ├── arm_hisilicon_kunpeng_unc_events.h │ ├── arm_marvell_tx2_unc_events.h │ ├── arm_neoverse_n1_events.h │ ├── arm_neoverse_n2_events.h │ ├── arm_neoverse_n3_events.h │ ├── arm_neoverse_v1_events.h │ ├── arm_neoverse_v2_events.h │ ├── arm_neoverse_v3_events.h │ ├── arm_qcom_krait_events.h │ ├── arm_xgene_events.h │ ├── cell_events.h │ ├── intel_adl_glc_events.h │ ├── intel_adl_grt_events.h │ ├── intel_atom_events.h │ ├── intel_bdw_events.h │ ├── intel_bdx_unc_cbo_events.h │ ├── intel_bdx_unc_ha_events.h │ ├── intel_bdx_unc_imc_events.h │ ├── intel_bdx_unc_irp_events.h │ ├── intel_bdx_unc_pcu_events.h │ ├── intel_bdx_unc_qpi_events.h │ ├── intel_bdx_unc_r2pcie_events.h │ ├── intel_bdx_unc_r3qpi_events.h │ ├── intel_bdx_unc_sbo_events.h │ ├── intel_bdx_unc_ubo_events.h │ ├── intel_core_events.h │ ├── intel_coreduo_events.h │ ├── intel_glm_events.h │ ├── intel_gnr_events.h │ ├── intel_hsw_events.h │ ├── intel_hswep_unc_cbo_events.h │ ├── intel_hswep_unc_ha_events.h │ ├── intel_hswep_unc_imc_events.h │ ├── intel_hswep_unc_irp_events.h │ ├── intel_hswep_unc_pcu_events.h │ ├── intel_hswep_unc_qpi_events.h │ ├── intel_hswep_unc_r2pcie_events.h │ ├── intel_hswep_unc_r3qpi_events.h │ ├── intel_hswep_unc_sbo_events.h │ ├── intel_hswep_unc_ubo_events.h │ ├── intel_icl_events.h │ ├── intel_icx_unc_cha_events.h │ ├── intel_icx_unc_iio_events.h │ ├── intel_icx_unc_imc_events.h │ ├── intel_icx_unc_irp_events.h │ ├── intel_icx_unc_m2m_events.h │ ├── intel_icx_unc_m2pcie_events.h │ ├── intel_icx_unc_m3upi_events.h │ ├── intel_icx_unc_pcu_events.h │ ├── intel_icx_unc_ubox_events.h │ ├── intel_icx_unc_upi_events.h │ ├── intel_ivb_events.h │ ├── intel_ivbep_unc_cbo_events.h │ ├── intel_ivbep_unc_ha_events.h │ ├── intel_ivbep_unc_imc_events.h │ ├── intel_ivbep_unc_irp_events.h │ ├── intel_ivbep_unc_pcu_events.h │ ├── intel_ivbep_unc_qpi_events.h │ ├── intel_ivbep_unc_r2pcie_events.h │ ├── intel_ivbep_unc_r3qpi_events.h │ ├── intel_ivbep_unc_ubo_events.h │ ├── intel_knc_events.h │ ├── intel_knl_events.h │ ├── intel_knl_unc_cha_events.h │ ├── intel_knl_unc_edc_events.h │ ├── intel_knl_unc_imc_events.h │ ├── intel_knl_unc_m2pcie_events.h │ ├── intel_netburst_events.h │ ├── intel_nhm_events.h │ ├── intel_nhm_unc_events.h │ ├── intel_p6_events.h │ ├── intel_pii_events.h │ ├── intel_pm_events.h │ ├── intel_ppro_events.h │ ├── intel_skl_events.h │ ├── intel_skx_unc_cha_events.h │ ├── intel_skx_unc_iio_events.h │ ├── intel_skx_unc_imc_events.h │ ├── intel_skx_unc_irp_events.h │ ├── intel_skx_unc_m2m_events.h │ ├── intel_skx_unc_m3upi_events.h │ ├── intel_skx_unc_pcu_events.h │ ├── intel_skx_unc_ubo_events.h │ ├── intel_skx_unc_upi_events.h │ ├── intel_slm_events.h │ ├── intel_snb_events.h │ ├── intel_snb_unc_events.h │ ├── intel_snbep_unc_cbo_events.h │ ├── intel_snbep_unc_ha_events.h │ ├── intel_snbep_unc_imc_events.h │ ├── intel_snbep_unc_pcu_events.h │ ├── intel_snbep_unc_qpi_events.h │ ├── intel_snbep_unc_r2pcie_events.h │ ├── intel_snbep_unc_r3qpi_events.h │ ├── intel_snbep_unc_ubo_events.h │ ├── intel_spr_events.h │ ├── intel_spr_unc_cha_events.h │ ├── intel_spr_unc_imc_events.h │ ├── intel_spr_unc_upi_events.h │ ├── intel_tmt_events.h │ ├── intel_wsm_events.h │ ├── intel_wsm_unc_events.h │ ├── intel_x86_arch_events.h │ ├── itanium2_events.h │ ├── itanium_events.h │ ├── mips_74k_events.h │ ├── montecito_events.h │ ├── perf_events.h │ ├── power10_events.h │ ├── power4_events.h │ ├── power5+_events.h │ ├── power5_events.h │ ├── power6_events.h │ ├── power7_events.h │ ├── power8_events.h │ ├── power9_events.h │ ├── powerpc_events.h │ ├── powerpc_nest_events.h │ ├── ppc970_events.h │ ├── ppc970mp_events.h │ ├── s390x_cpumf_events.h │ ├── sparc_niagara1_events.h │ ├── sparc_niagara2_events.h │ ├── sparc_ultra12_events.h │ ├── sparc_ultra3_events.h │ ├── sparc_ultra3i_events.h │ ├── sparc_ultra3plus_events.h │ ├── sparc_ultra4plus_events.h │ └── torrent_events.h ├── pfmlib_amd64.c ├── pfmlib_amd64_fam10h.c ├── pfmlib_amd64_fam11h.c ├── pfmlib_amd64_fam12h.c ├── pfmlib_amd64_fam14h.c ├── pfmlib_amd64_fam15h.c ├── pfmlib_amd64_fam16h.c ├── pfmlib_amd64_fam17h.c ├── pfmlib_amd64_fam19h.c ├── pfmlib_amd64_fam19h_l3.c ├── pfmlib_amd64_fam1ah.c ├── pfmlib_amd64_fam1ah_l3.c ├── pfmlib_amd64_k7.c ├── pfmlib_amd64_k8.c ├── pfmlib_amd64_perf_event.c ├── pfmlib_amd64_priv.h ├── pfmlib_amd64_rapl.c ├── pfmlib_arm.c ├── pfmlib_arm_armv6.c ├── pfmlib_arm_armv7_pmuv1.c ├── pfmlib_arm_armv8.c ├── pfmlib_arm_armv8_kunpeng_unc.c ├── pfmlib_arm_armv8_kunpeng_unc_perf_event.c ├── pfmlib_arm_armv8_thunderx2_unc.c ├── pfmlib_arm_armv8_thunderx2_unc_perf_event.c ├── pfmlib_arm_armv8_unc.c ├── pfmlib_arm_armv8_unc_priv.h ├── pfmlib_arm_armv9.c ├── pfmlib_arm_perf_event.c ├── pfmlib_arm_priv.h ├── pfmlib_cell.c ├── pfmlib_cell_priv.h ├── pfmlib_common.c ├── pfmlib_gen_ia64.c ├── pfmlib_ia64_priv.h ├── pfmlib_intel_adl.c ├── pfmlib_intel_atom.c ├── pfmlib_intel_bdw.c ├── pfmlib_intel_bdx_unc_cbo.c ├── pfmlib_intel_bdx_unc_ha.c ├── pfmlib_intel_bdx_unc_imc.c ├── pfmlib_intel_bdx_unc_irp.c ├── pfmlib_intel_bdx_unc_pcu.c ├── pfmlib_intel_bdx_unc_qpi.c ├── pfmlib_intel_bdx_unc_r2pcie.c ├── pfmlib_intel_bdx_unc_r3qpi.c ├── pfmlib_intel_bdx_unc_sbo.c ├── pfmlib_intel_bdx_unc_ubo.c ├── pfmlib_intel_core.c ├── pfmlib_intel_coreduo.c ├── pfmlib_intel_glm.c ├── pfmlib_intel_gnr.c ├── pfmlib_intel_hsw.c ├── pfmlib_intel_hswep_unc_cbo.c ├── pfmlib_intel_hswep_unc_ha.c ├── pfmlib_intel_hswep_unc_imc.c ├── pfmlib_intel_hswep_unc_irp.c ├── pfmlib_intel_hswep_unc_pcu.c ├── pfmlib_intel_hswep_unc_qpi.c ├── pfmlib_intel_hswep_unc_r2pcie.c ├── pfmlib_intel_hswep_unc_r3qpi.c ├── pfmlib_intel_hswep_unc_sbo.c ├── pfmlib_intel_hswep_unc_ubo.c ├── pfmlib_intel_icl.c ├── pfmlib_intel_icx_unc_cha.c ├── pfmlib_intel_icx_unc_iio.c ├── pfmlib_intel_icx_unc_imc.c ├── pfmlib_intel_icx_unc_irp.c ├── pfmlib_intel_icx_unc_m2m.c ├── pfmlib_intel_icx_unc_m2pcie.c ├── pfmlib_intel_icx_unc_m3upi.c ├── pfmlib_intel_icx_unc_pcu.c ├── pfmlib_intel_icx_unc_ubox.c ├── pfmlib_intel_icx_unc_upi.c ├── pfmlib_intel_ivb.c ├── pfmlib_intel_ivb_unc.c ├── pfmlib_intel_ivbep_unc_cbo.c ├── pfmlib_intel_ivbep_unc_ha.c ├── pfmlib_intel_ivbep_unc_imc.c ├── pfmlib_intel_ivbep_unc_irp.c ├── pfmlib_intel_ivbep_unc_pcu.c ├── pfmlib_intel_ivbep_unc_qpi.c ├── pfmlib_intel_ivbep_unc_r2pcie.c ├── pfmlib_intel_ivbep_unc_r3qpi.c ├── pfmlib_intel_ivbep_unc_ubo.c ├── pfmlib_intel_knc.c ├── pfmlib_intel_knl.c ├── pfmlib_intel_knl_unc_cha.c ├── pfmlib_intel_knl_unc_edc.c ├── pfmlib_intel_knl_unc_imc.c ├── pfmlib_intel_knl_unc_m2pcie.c ├── pfmlib_intel_netburst.c ├── pfmlib_intel_netburst_perf_event.c ├── pfmlib_intel_netburst_priv.h ├── pfmlib_intel_nhm.c ├── pfmlib_intel_nhm_unc.c ├── pfmlib_intel_p6.c ├── pfmlib_intel_rapl.c ├── pfmlib_intel_skl.c ├── pfmlib_intel_skx_unc_cha.c ├── pfmlib_intel_skx_unc_iio.c ├── pfmlib_intel_skx_unc_imc.c ├── pfmlib_intel_skx_unc_irp.c ├── pfmlib_intel_skx_unc_m2m.c ├── pfmlib_intel_skx_unc_m3upi.c ├── pfmlib_intel_skx_unc_pcu.c ├── pfmlib_intel_skx_unc_ubo.c ├── pfmlib_intel_skx_unc_upi.c ├── pfmlib_intel_slm.c ├── pfmlib_intel_snb.c ├── pfmlib_intel_snb_unc.c ├── pfmlib_intel_snbep_unc.c ├── pfmlib_intel_snbep_unc_cbo.c ├── pfmlib_intel_snbep_unc_ha.c ├── pfmlib_intel_snbep_unc_imc.c ├── pfmlib_intel_snbep_unc_pcu.c ├── pfmlib_intel_snbep_unc_perf_event.c ├── pfmlib_intel_snbep_unc_priv.h ├── pfmlib_intel_snbep_unc_qpi.c ├── pfmlib_intel_snbep_unc_r2pcie.c ├── pfmlib_intel_snbep_unc_r3qpi.c ├── pfmlib_intel_snbep_unc_ubo.c ├── pfmlib_intel_spr.c ├── pfmlib_intel_spr_unc_cha.c ├── pfmlib_intel_spr_unc_imc.c ├── pfmlib_intel_spr_unc_upi.c ├── pfmlib_intel_tmt.c ├── pfmlib_intel_wsm.c ├── pfmlib_intel_x86.c ├── pfmlib_intel_x86_arch.c ├── pfmlib_intel_x86_perf_event.c ├── pfmlib_intel_x86_priv.h ├── pfmlib_itanium.c ├── pfmlib_itanium2.c ├── pfmlib_itanium2_priv.h ├── pfmlib_itanium_priv.h ├── pfmlib_mips.c ├── pfmlib_mips_74k.c ├── pfmlib_mips_perf_event.c ├── pfmlib_mips_priv.h ├── pfmlib_montecito.c ├── pfmlib_montecito_priv.h ├── pfmlib_perf_event.c ├── pfmlib_perf_event_pmu.c ├── pfmlib_perf_event_priv.h ├── pfmlib_perf_event_raw.c ├── pfmlib_power10.c ├── pfmlib_power4.c ├── pfmlib_power5.c ├── pfmlib_power6.c ├── pfmlib_power7.c ├── pfmlib_power8.c ├── pfmlib_power9.c ├── pfmlib_power_priv.h ├── pfmlib_powerpc.c ├── pfmlib_powerpc_nest.c ├── pfmlib_powerpc_perf_event.c ├── pfmlib_ppc970.c ├── pfmlib_priv.h ├── pfmlib_s390x_cpumf.c ├── pfmlib_s390x_perf_event.c ├── pfmlib_s390x_priv.h ├── pfmlib_sicortex.c ├── pfmlib_sicortex_priv.h ├── pfmlib_sparc.c ├── pfmlib_sparc_niagara.c ├── pfmlib_sparc_perf_event.c ├── pfmlib_sparc_priv.h ├── pfmlib_sparc_ultra12.c ├── pfmlib_sparc_ultra3.c ├── pfmlib_sparc_ultra4.c └── pfmlib_torrent.c ├── libpfm.spec ├── perf_examples ├── Makefile ├── branch_smpl.c ├── evt2raw.c ├── notify_group.c ├── notify_self.c ├── perf_util.c ├── perf_util.h ├── rtop.c ├── self.c ├── self_basic.c ├── self_count.c ├── self_pipe.c ├── self_smpl_multi.c ├── syst.c ├── syst_count.c ├── syst_smpl.c ├── task.c ├── task_attach_timeout.c ├── task_cpu.c ├── task_smpl.c └── x86 │ ├── Makefile │ └── bts_smpl.c ├── python ├── Makefile ├── README ├── self.py ├── setup.py ├── src │ ├── __init__.py │ ├── perfmon_int.i │ ├── pmu.py │ └── session.py └── sys.py ├── rules.mk └── tests ├── Makefile ├── validate.c ├── validate_arm.c ├── validate_arm64.c ├── validate_mips.c ├── validate_perf.c ├── validate_power.c └── validate_x86.c /.gitignore: -------------------------------------------------------------------------------- 1 | # 2 | # NOTE! Don't add files that are generated in specific 3 | # subdirectories here. Add them in the ".gitignore" file 4 | # in that subdirectory instead. 5 | # 6 | # NOTE! Please use 'git ls-files -i --exclude-standard' 7 | # command after changing this file, to see if there are 8 | # any tracked files which get ignored after the change. 9 | # 10 | # Normal rules 11 | # 12 | .* 13 | *.o 14 | *.o.* 15 | *.a 16 | *.s 17 | *.lo 18 | *.ko 19 | *.so 20 | *.so.[0-9]* 21 | *.so.dbg 22 | *.mod.c 23 | *.i 24 | *.lst 25 | *.symtypes 26 | *.order 27 | modules.builtin 28 | *.elf 29 | *.bin 30 | *.gz 31 | *.bz2 32 | *.lzma 33 | *.patch 34 | *.gcno 35 | CVS 36 | 37 | # 38 | # git files that we don't want to ignore even it they are dot-files 39 | # 40 | !.gitignore 41 | !.mailmap 42 | 43 | # stgit generated dirs 44 | patches-* 45 | 46 | # quilt's files 47 | patches 48 | series 49 | 50 | # cscope files 51 | cscope.* 52 | ncscope.* 53 | 54 | # gnu global files 55 | GPATH 56 | GRTAGS 57 | GSYMS 58 | GTAGS 59 | 60 | *.orig 61 | *~ 62 | \#*# 63 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | All other files are published under the following license: 2 | 3 | Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | of the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /debian/README: -------------------------------------------------------------------------------- 1 | The Debian Package libpfm4 2 | ---------------------------- 3 | 4 | libpfm4 packaging tested on Ubuntu Lucid (amd64). 5 | 6 | -- Arun Sharma Mon, 21 Jun 2010 15:17:22 -0700 7 | -------------------------------------------------------------------------------- /debian/README.source: -------------------------------------------------------------------------------- 1 | Sources were slightly modified to compile with -Werror 2 | 3 | -Arun Sharma (aruns@google.com) 4 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 7 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: libpfm4 2 | Priority: extra 3 | Maintainer: Stephane Eranian 4 | Build-Depends: debhelper (>= 7), python (>= 2.4), python-support, 5 | python-dev (>= 2.4), swig 6 | Standards-Version: 3.8.4 7 | Section: libs 8 | Homepage: http://perfmon2.sourceforge.net/ 9 | 10 | Package: libpfm4-dev 11 | Section: libdevel 12 | Architecture: any 13 | Depends: ${shlibs:Depends}, ${misc:Depends} 14 | Description: A library to program the performance monitoring events 15 | Libpfm4 helps convert from an event name, expressed as a string, to 16 | the event encoding. The encoding can then be used with specific OS 17 | interfaces. Libpfm4 also provides OS-specific interfaces to directly 18 | setup OS-specific data structures to be passed to the kernel. The 19 | current libpfm4, for instance, provides support for the perf_events 20 | interface which was introduced in Linux v2.6.31. 21 | 22 | Package: libpfm4 23 | Section: libs 24 | Architecture: any 25 | Depends: ${shlibs:Depends}, ${misc:Depends} 26 | Description: A library to program the performance monitoring events 27 | Libpfm4 helps convert from an event name, expressed as a string, to 28 | the event encoding. The encoding can then be used with specific OS 29 | interfaces. Libpfm4 also provides OS-specific interfaces to directly 30 | setup OS-specific data structures to be passed to the kernel. The 31 | current libpfm4, for instance, provides support for the perf_events 32 | interface which was introduced in Linux v2.6.31. 33 | 34 | Package: python-libpfm4 35 | Depends: libpfm4, python, ${shlibs:Depends}, ${misc:Depends} 36 | Architecture: any 37 | Section: python 38 | Description: Python bindings for libpfm4 39 | This package allows you to write simple python scripts that monitor 40 | various hardware performance monitoring events. It may be more efficient 41 | to use this approach instead of parsing the output of other tools. 42 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | This work was packaged for Debian by: 2 | 3 | Arun Sharma on Mon, 21 Jun 2010 15:17:22 -0700 4 | 5 | It was downloaded from: 6 | 7 | git://perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4 8 | 9 | Upstream Author(s): 10 | 11 | Stephane Eranian 12 | 13 | Packaging by: 14 | Copyright (C) 2010 Arun Sharma 15 | 16 | Library and packaging released under the following license: 17 | 18 | Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P. 19 | 20 | Permission is hereby granted, free of charge, to any person obtaining a copy 21 | of this software and associated documentation files (the "Software"), to deal 22 | in the Software without restriction, including without limitation the rights 23 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 24 | of the Software, and to permit persons to whom the Software is furnished to do so, 25 | subject to the following conditions: 26 | 27 | The above copyright notice and this permission notice shall be included in all 28 | copies or substantial portions of the Software. 29 | 30 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 31 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 32 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 33 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 34 | CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 35 | OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 36 | -------------------------------------------------------------------------------- /debian/docs: -------------------------------------------------------------------------------- 1 | README 2 | -------------------------------------------------------------------------------- /debian/libpfm4-dev.dirs: -------------------------------------------------------------------------------- 1 | usr/lib 2 | usr/include 3 | -------------------------------------------------------------------------------- /debian/libpfm4-dev.install: -------------------------------------------------------------------------------- 1 | usr/include/* 2 | usr/lib/lib*.a 3 | -------------------------------------------------------------------------------- /debian/libpfm4-dev.manpages: -------------------------------------------------------------------------------- 1 | docs/man3/*.3 2 | -------------------------------------------------------------------------------- /debian/libpfm4.install: -------------------------------------------------------------------------------- 1 | usr/lib/lib*.so.* 2 | -------------------------------------------------------------------------------- /debian/python-libpfm4.install: -------------------------------------------------------------------------------- 1 | usr/lib/python*/site-packages/perfmon/*.py 2 | usr/lib/python*/site-packages/perfmon/*.so 3 | -------------------------------------------------------------------------------- /debian/pyversions: -------------------------------------------------------------------------------- 1 | 2.4- 2 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # -*- makefile -*- 3 | # Sample debian/rules that uses debhelper. 4 | # This file was originally written by Joey Hess and Craig Small. 5 | # As a special exception, when this file is copied by dh-make into a 6 | # dh-make output file, you may use that output file without restriction. 7 | # This special exception was added by Craig Small in version 0.37 of dh-make. 8 | 9 | # Uncomment this to turn on verbose mode. 10 | #export DH_VERBOSE=1 11 | 12 | #include /usr/share/dpatch/dpatch.make 13 | 14 | override_dh_auto_install: build 15 | $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp PREFIX=/usr CONFIG_PFMLIB_NOPYTHON=n LDCONFIG=true 16 | 17 | %: 18 | dh $@ 19 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (quilt) 2 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2010" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64 - support for AMD64 processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .SH DESCRIPTION 9 | The library supports all AMD64 processors in both 32 and 64-bit modes. 10 | 11 | The support is broken down in three groups: 12 | .TP 13 | .B AMD K7 processors (family 6) 14 | .TP 15 | .B AMD K8 processors (family 15) 16 | .TP 17 | .B AMD Family 10h processors (family 16) 18 | .sp 19 | .TP 20 | Each group has a distinct man page. See links below. 21 | .SH SEE ALSO 22 | libpfm_amd64_k7(3), libpfm_amd64_k8(3), libpfm_amd64_fam10h(3) 23 | .SH AUTHORS 24 | .nf 25 | Stephane Eranian 26 | Robert Richter 27 | .if 28 | .PP 29 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam10h.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2010" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam10h - support for AMD64 Family 10h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam10h_barcelona, amd64_fam10h_shanghai, amd64_fam10h_istanbul 9 | .B PMU desc: AMD64 Fam10h Barcelona, AMD64 Fam10h Shanghai, AMD64 Fam10h Istanbul 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 10h processors in both 32 and 64-bit modes. They correspond 13 | to processor family 16. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on AMD64 Family 10h (16) processors: 17 | .TP 18 | .B u 19 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 20 | This is a boolean modifier. 21 | .TP 22 | .B k 23 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 24 | This is a boolean modifier. 25 | .TP 26 | .B h 27 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 28 | This modifier is available starting with Fam10h. This is a boolean modifier. 29 | .TP 30 | .B g 31 | Measure at while executing in guest mode (when using virtualization). This modifier is available 32 | starting with Fam10h. This is a boolean modifier. 33 | .TP 34 | .B i 35 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 36 | occurring. This is a boolean modifier 37 | .TP 38 | .B e 39 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 40 | .TP 41 | .B c 42 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 43 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 44 | modifier with values in the range [0:255]. 45 | .SH AUTHORS 46 | .nf 47 | Stephane Eranian 48 | Robert Richter 49 | .if 50 | .PP 51 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam15h.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "Nov, 2013" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam15h - support for AMD64 Family 15h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam15h_interlagos 9 | .B PMU desc: AMD64 Fam15h Interlagos 10 | .B PMU name: amd64_fam15h_nb 11 | .B PMU desc: AMD64 Fam15h Northbridge 12 | .sp 13 | .SH DESCRIPTION 14 | The library supports AMD Family 15h processors core PMU in both 32 and 64-bit modes. The 15 | uncore (NorthBridge) PMU is also supported as a separate PMU model. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on AMD64 Family 15h core PMU: 19 | .TP 20 | .B u 21 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B h 29 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 30 | This modifier is available starting with Fam10h. This is a boolean modifier. 31 | .TP 32 | .B g 33 | Measure at while executing in guest mode (when using virtualization). This modifier is available 34 | starting with Fam10h. This is a boolean modifier. 35 | .TP 36 | .B i 37 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 38 | occurring. This is a boolean modifier 39 | .TP 40 | .B e 41 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 42 | .TP 43 | .B c 44 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 45 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 46 | modifier with values in the range [0:255]. 47 | .TP 48 | The uncore (NorthBridge) PMU \fBdoes not support\fR any modifiers. 49 | 50 | .SH AUTHORS 51 | .nf 52 | Stephane Eranian 53 | Robert Richter 54 | .if 55 | .PP 56 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam16h.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "July, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam16h - support for AMD64 Family 16h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam16h 9 | .B PMU desc: AMD64 Fam16h Zen 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 16h processors core PMU in both 32 and 64-bit modes. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on AMD64 Family 16h core PMU: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B h 26 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 27 | This modifier is available starting with Fam10h. This is a boolean modifier. 28 | .TP 29 | .B g 30 | Measure at while executing in guest mode (when using virtualization). This modifier is available 31 | starting with Fam10h. This is a boolean modifier. 32 | .TP 33 | .B i 34 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 35 | occurring. This is a boolean modifier 36 | .TP 37 | .B e 38 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 39 | .TP 40 | .B c 41 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 42 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 43 | modifier with values in the range [0:255]. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Stephane Eranian 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam17h.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "July, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam17h - support for AMD64 Family 17h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam17h (deprecated), amd_fam17h_zen1 9 | .B PMU desc: AMD64 Fam17h Zen1 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 17h processors Zen1 core PMU in both 32 and 64-bit modes. 13 | The amd64_fam17h PMU model name has been deprecated in favor of amd_fam17h_zen1. The old 14 | name is maintained for backward compatibility reasons, but should not be used anymore. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on AMD64 Family 17h Zen1 core PMU: 18 | .TP 19 | .B u 20 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 21 | This is a boolean modifier. 22 | .TP 23 | .B k 24 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 25 | This is a boolean modifier. 26 | .TP 27 | .B h 28 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 29 | This modifier is available starting with Fam10h. This is a boolean modifier. 30 | .TP 31 | .B g 32 | Measure at while executing in guest mode (when using virtualization). This modifier is available 33 | starting with Fam10h. This is a boolean modifier. 34 | .TP 35 | .B i 36 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 37 | occurring. This is a boolean modifier 38 | .TP 39 | .B e 40 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 41 | .TP 42 | .B c 43 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 44 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 45 | modifier with values in the range [0:255]. 46 | 47 | .SH AUTHORS 48 | .nf 49 | Stephane Eranian 50 | .if 51 | .PP 52 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam17h_zen2.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "December, 2019" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam17h_zen2 - support for AMD64 Family 17h model 31h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam17h_zen2 9 | .B PMU desc: AMD64 Fam17h Zen2 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 17h processors Zen2 core PMU in both 32 and 64-bit modes. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on AMD64 Family 17h Zen2 core PMU: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B h 26 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 27 | This modifier is available starting with Fam10h. This is a boolean modifier. 28 | .TP 29 | .B g 30 | Measure at while executing in guest mode (when using virtualization). This modifier is available 31 | starting with Fam10h. This is a boolean modifier. 32 | .TP 33 | .B i 34 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 35 | occurring. This is a boolean modifier 36 | .TP 37 | .B e 38 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 39 | .TP 40 | .B c 41 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 42 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 43 | modifier with values in the range [0:255]. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Stephane Eranian 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam19h_zen3.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2021" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam19h_zen3 - support for AMD64 Family 19h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam19h_zen3 9 | .B PMU desc: AMD64 Fam19h Zen3 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 19h processors Zen3 core PMU in both 32 and 64-bit modes. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on AMD64 Family 19h Zen3 core PMU: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B h 26 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 27 | This modifier is available starting with Fam10h. This is a boolean modifier. 28 | .TP 29 | .B g 30 | Measure at while executing in guest mode (when using virtualization). This modifier is available 31 | starting with Fam10h. This is a boolean modifier. 32 | .TP 33 | .B i 34 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 35 | occurring. This is a boolean modifier 36 | .TP 37 | .B e 38 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 39 | .TP 40 | .B c 41 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 42 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 43 | modifier with values in the range [0:255]. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Swarup Sahoo 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam19h_zen3_l3.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "March, 2021" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam19h_zen3_l3 - support for AMD64 Family 19h L3 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam19h_zen3_l3 9 | .B PMU desc: AMD64 Fam19h Zen3 L3 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 19h processors Zen3 L3 PMU in both 32 and 64-bit modes. 13 | 14 | At this point, there is no modifier supported. 15 | .SH AUTHORS 16 | .nf 17 | Stephane Eranian 18 | .if 19 | .PP 20 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam19h_zen4.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "December, 2022" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam19h_zen4 - support for AMD64 Family 19h processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam19h_zen4 9 | .B PMU desc: AMD64 Fam19h Zen4 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 19h processors Zen4 core PMU in both 32 and 64-bit modes. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on AMD64 Family 19h Zen4 core PMU: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B h 26 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 27 | This modifier is available starting with Fam10h. This is a boolean modifier. 28 | .TP 29 | .B g 30 | Measure at while executing in guest mode (when using virtualization). This modifier is available 31 | starting with Fam10h. This is a boolean modifier. 32 | .TP 33 | .B i 34 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 35 | occurring. This is a boolean modifier 36 | .TP 37 | .B e 38 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 39 | .TP 40 | .B c 41 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 42 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 43 | modifier with values in the range [0:255]. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Stephane Eranian 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam1ah_zen5.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam1ah_zen5 - support for AMD64 Family 1Ah processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam1ah_zen5 9 | .B PMU desc: AMD64 Fam1Ah Zen5 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 1Ah processors Zen5 core PMU in both 32 and 64-bit modes. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on AMD64 Family 1Ah Zen5 core PMU: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B h 26 | Measure at while executing in host mode (when using virtualization). This corresponds to \fBPFM_PLMH\fR. 27 | This modifier is available starting with Fam10h. This is a boolean modifier. 28 | .TP 29 | .B g 30 | Measure at while executing in guest mode (when using virtualization). This modifier is available 31 | starting with Fam10h. This is a boolean modifier. 32 | .TP 33 | .B i 34 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 35 | occurring. This is a boolean modifier 36 | .TP 37 | .B e 38 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 39 | .TP 40 | .B c 41 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 42 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 43 | modifier with values in the range [0:255]. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Swarup Sahoo 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_fam1ah_zen5_l3.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_fam1ah_zen5_l3 - support for AMD64 Family 1Ah L3 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_fam1ah_zen5_l3 9 | .B PMU desc: AMD64 Fam1Ah Zen5 L3 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD Family 1Ah processors Zen5 L3 PMU in both 32 and 64-bit modes. 13 | 14 | At this point, there is no modifier supported. 15 | .SH AUTHORS 16 | .nf 17 | Swarup Sahoo 18 | .if 19 | .PP 20 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_k7.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2010" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_k7 - support for AMD64 K7 processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_k7 9 | .B PMU desc: AMD64 K7 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD K7 processors in both 32 and 64-bit modes. They correspond 13 | to processor family 6. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on AMD64 K7 processors: 17 | .TP 18 | .B u 19 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 20 | This is a boolean modifier. 21 | .TP 22 | .B k 23 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 24 | This is a boolean modifier. 25 | .TP 26 | .B i 27 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 28 | occurring. This is a boolean modifier 29 | .TP 30 | .B e 31 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 32 | .TP 33 | .B c 34 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 35 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 36 | modifier with values in the range [0:255]. 37 | .SH AUTHORS 38 | .nf 39 | Stephane Eranian 40 | Robert Richter 41 | .if 42 | .PP 43 | -------------------------------------------------------------------------------- /docs/man3/libpfm_amd64_k8.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "April, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_amd64_k8 - support for AMD64 K8 processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: amd64_k8_revb, amd64_k8_revc, amd64_k8_revd, amd64_k8_reve, amd64_k8_revf, amd64_k8_revg 9 | .B PMU desc: AMD64 K8 RevB, AMD64 K8 RevC, AMD64 K8 RevD, AMD64 K8 RevE, AMD64 K8 RevF, AMD64 K8 RevG 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports AMD K8 processors in both 32 and 64-bit modes. They correspond 13 | to processor family 15. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on AMD64 K8 processors: 17 | .TP 18 | .B u 19 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 20 | This is a boolean modifier. 21 | .TP 22 | .B k 23 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 24 | This is a boolean modifier. 25 | .TP 26 | .B i 27 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 28 | occurring. This is a boolean modifier 29 | .TP 30 | .B e 31 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 32 | .TP 33 | .B c 34 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 35 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 36 | modifier with values in the range [0:255]. 37 | .SH AUTHORS 38 | .nf 39 | Stephane Eranian 40 | Robert Richter 41 | .if 42 | .PP 43 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_a64fx.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2020" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_a64fx - support for Fujitsu A64FX PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_a64fx 9 | .B PMU desc: Fujitsu A64FX 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Fujitsu A64FX core PMU. 13 | 14 | This PMU supports 8 counters and privilege levels filtering. 15 | It can operate in 64 bit mode only. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on Fujitsu A64FX: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac15.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac15 - support for Arm Cortex A15 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac15 9 | .B PMU desc: ARM Cortex A15 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A15 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on ARM Cortex A15: 18 | .TP 19 | .B u 20 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 21 | This is a boolean modifier. 22 | .TP 23 | .B k 24 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 25 | This is a boolean modifier. 26 | .TP 27 | .B hv 28 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 29 | This is a boolean modifier. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac53.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac53 - support for ARM Cortex A53 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac53 9 | .B PMU desc: ARM Cortex A53 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A53 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Cortex A53: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac55.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac55 - support for ARM Cortex A55 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac55 9 | .B PMU desc: ARM Cortex A55 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A55 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Cortex A55: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac57.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac57 - support for Arm Cortex A57 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac57 9 | .B PMU desc: ARM Cortex A57 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A57 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Cortex A57: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac7.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac7 - support for Arm Cortex A7 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac7 9 | .B PMU desc: ARM Cortex A7 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A7 core PMU. 13 | 14 | This PMU supports 4 counters and privilege levels filtering. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on ARM Cortex A7: 18 | .TP 19 | .B u 20 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 21 | This is a boolean modifier. 22 | .TP 23 | .B k 24 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 25 | This is a boolean modifier. 26 | .TP 27 | .B hv 28 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 29 | This is a boolean modifier. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac72.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac72 - support for Arm Cortex A72 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac72 9 | .B PMU desc: ARM Cortex A72 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A72 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Cortex A72: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac76.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac76 - support for Arm Cortex A76 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac76 9 | .B PMU desc: ARM Cortex A76 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A76 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Cortex A76: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac8.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac8 - support for ARM Cortex A8 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac8 9 | .B PMU desc: ARM Cortex A8 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A8 core PMU. 13 | 14 | This PMU supports 2 counters and has no privilege levels filtering. 15 | No event modifiers are available. 16 | 17 | .SH AUTHORS 18 | .nf 19 | Stephane Eranian 20 | .if 21 | .PP 22 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_ac9.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac9 - support for ARM Cortex A9 PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_ac9 9 | .B PMU desc: ARM Cortex A9 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Cortex A9 core PMU. 13 | 14 | This PMU supports 2 counters and has no privilege levels filtering. 15 | No event modifiers are available. 16 | 17 | .SH AUTHORS 18 | .nf 19 | Stephane Eranian 20 | .if 21 | .PP 22 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_neoverse_n1.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "July, 2020" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_neoverse_n1 - support for ARM Neoverse N1 core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_n1 9 | .B PMU desc: ARM Neoverse N1 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Neoverse N1 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Neoverse N1: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_neoverse_n2.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2021" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_neoverse_n2 - support for ARM Neoverse N2 core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_n2 9 | .B PMU desc: ARM Neoverse N2 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Neoverse N2 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Neoverse N2: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_neoverse_n3.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "October, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_neoverse_n3 - support for ARM Neoverse N2 core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_n3 9 | .B PMU desc: ARM Neoverse N2 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the ARM Neoverse N2 core PMU. 13 | 14 | This PMU supports 6 or 20 64-bit counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Neoverse N3: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_neoverse_v1.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2022" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_neoverse_v1 - support for Arm Neoverse V1 core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_v1 9 | .B PMU desc: Arm Neoverse V1 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Arm Neoverse V1 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on ARM Neoverse V1: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | John Linford 35 | Stephane Eranian 36 | .if 37 | .PP -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_neoverse_v2.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2022" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_neoverse_v2 - support for Arm Neoverse V2 core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_v2 9 | .B PMU desc: Arm Neoverse V2 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Arm Neoverse V2 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on Arm Neoverse V2: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | John Linford 35 | Stephane Eranian 36 | .if 37 | .PP -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_neoverse_v3.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_neoverse_v3 - support for Arm Neoverse V3 core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_v3 9 | .B PMU desc: Arm Neoverse V3 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Arm Neoverse V3 core PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on Arm Neoverse V3: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_qcom_krait.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac15 - support for Qualcomm Krait PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: qcom_krait 9 | .B PMU desc: Qualcomm Krait 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Qualcomm Krait core PMU. 13 | 14 | This PMU supports 5 counters and privilege levels filtering. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on this PMU: 18 | .TP 19 | .B u 20 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 21 | This is a boolean modifier. 22 | .TP 23 | .B k 24 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 25 | This is a boolean modifier. 26 | .TP 27 | .B hv 28 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 29 | This is a boolean modifier. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_arm_xgene.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_arm_ac57 - support for Applied Micro X-Gene PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: arm_xgene 9 | .B PMU desc: Applied Micro X-Gene 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Applied Micro X-Gene PMU. 13 | 14 | This PMU supports 6 counters and privilege levels filtering. 15 | It can operate in both 32 and 64 bit modes. 16 | 17 | .SH MODIFIERS 18 | The following modifiers are supported on Applied Micro X-Gene: 19 | .TP 20 | .B u 21 | Measure at the user level. This corresponds to \fBPFM_PLM3\fR. 22 | This is a boolean modifier. 23 | .TP 24 | .B k 25 | Measure at the kernel level. This corresponds to \fBPFM_PLM0\fR. 26 | This is a boolean modifier. 27 | .TP 28 | .B hv 29 | Measure at the hypervisor level. This corresponds to \fBPFM_PLMH\fR. 30 | This is a boolean modifier. 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .nf 37 | William Cohen 38 | .if 39 | .PP 40 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_atom.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_atom - support for Intel Atom processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: atom 9 | .B PMU desc: Intel Atom 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports all Intel Atom-based processors that includes family 6 model 28. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Atom processors: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B i 26 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 27 | occurring. This is a boolean modifier 28 | .TP 29 | .B e 30 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 31 | .TP 32 | .B c 33 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 34 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 35 | modifier with values in the range [0:255]. 36 | .TP 37 | .B t 38 | Measure on both threads at the same time assuming hyper-threading is enabled. This is a boolean modifier. 39 | .SH AUTHORS 40 | .nf 41 | Stephane Eranian 42 | .if 43 | .PP 44 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_ha.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_ha - support for Intel Broadwell Server Home Agent (HA) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_ha0, bdx_unc_ha1 9 | .B PMU desc: Intel Broadwell Server HA uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell Server Home Agent (HA) uncore PMU. 13 | This PMU model only exists on various Broadwell models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server HA uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_imc - support for Intel Broadwell Server Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_imc[0-7] 9 | .B PMU desc: Intel Broadwell Server IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell Server Integrated Memory Controller (IMC) uncore PMU. 13 | This PMU model only exists on various Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server IMC uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IMC cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | .SH AUTHORS 31 | .nf 32 | Stephane Eranian 33 | .if 34 | .PP 35 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_irp.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_irp - support for Intel Broadwell Server IRP uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_irp 9 | .B PMU desc: Intel Broadwell Server IRP uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell Server IRP (IIO coherency) uncore PMU . 13 | This PMU model only exists various Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server IRP uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_qpi - support for Intel Broadwell Server QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_qpi0, bdx_unc_qpi1 9 | .B PMU desc: Intel Broadwell Server QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell Server QPI uncore PMU. 13 | This PMU model only exists on various Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Broadwell server QPI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of QPI cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_r2pcie.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_r2pcie - support for Intel Broadwell Server R2 PCIe uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_r2pcie 9 | .B PMU desc: Intel Broadwell Server R2 PCIe uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell server R2 PCIe uncore PMU. 13 | This PMU model only exists on Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server R2PCIe uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of R2PCIe cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_r3qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_r3qpi - support for Intel Broadwell Server R3QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_r3qpi[0-2] 9 | .B PMU desc: Intel Broadwell server R3QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell server R3QPI uncore PMU. 13 | This PMU model only exists on various Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server R3PQI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of R3QPI cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_sbo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_sbo - support for Intel Broadwell Server S-Box uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_sbo 9 | .B PMU desc: Intel Broadwell Server S-Box uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell server Ring Transfer unit (S-Box) uncore PMU. 13 | This PMU model only exists on various Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server S-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | .TP 32 | .B i 33 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 34 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 35 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 36 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 37 | 38 | .SH AUTHORS 39 | .nf 40 | Stephane Eranian 41 | .if 42 | .PP 43 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_bdx_unc_ubo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2017" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_bdx_unc_ubo - support for Intel Broadwell Server U-Box uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: bdx_unc_ubo 9 | .B PMU desc: Intel Broadwell Server U-Box uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Broadwell server system configuration unit (U-Box) uncore PMU. 13 | This PMU model only exists on various Broadwell server models (79, 86). 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Broadwell server U-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_core.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_core - support for Intel Core-based processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: core 9 | .B PMU desc: Intel Core 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports all Intel Core-based processors that includes models 15, 23, 29. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Core processors: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B i 26 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 27 | occurring. This is a boolean modifier 28 | .TP 29 | .B e 30 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event 31 | to at least one occurrence. This modifier must be combined with a counter mask modifier (m) with a value greater or equal to one. 32 | This is a boolean modifier. 33 | .TP 34 | .B c 35 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 36 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 37 | modifier with values in the range [0:255]. 38 | 39 | .SH AUTHORS 40 | .nf 41 | Stephane Eranian 42 | .if 43 | .PP 44 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_coreduo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_coreduo - support for Intel Core Duo/Solo processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: coreduo 9 | .B PMU desc: Intel Core Duo 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports all Intel Yonah-based processors such as Intel Core Duo and 13 | Intel Core Solo processors. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Core Duo processors: 17 | .TP 18 | .B u 19 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 20 | This is a boolean modifier. 21 | .TP 22 | .B k 23 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 24 | This is a boolean modifier. 25 | .TP 26 | .B i 27 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 28 | occurring. This is a boolean modifier 29 | .TP 30 | .B e 31 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 32 | .TP 33 | .B c 34 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 35 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 36 | modifier with values in the range [0:255]. 37 | 38 | .SH ENVIRONMENT VARIABLES 39 | It is possible to force activation of the Intel Core Duo support using the \fBLIBPFM_FORCE_PMU\fR variable. 40 | The PMU name, coreduo, must be passed. No additional options are supported. 41 | .SH AUTHORS 42 | .nf 43 | Stephane Eranian 44 | .if 45 | .PP 46 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_ha.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_ha - support for Intel Haswell-EP Home Agent (HA) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_ha0, hswep_unc_ha1 9 | .B PMU desc: Intel Haswell-EP HA uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell Home Agent (HA) uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell HA uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_imc - support for Intel Haswell-EP Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_imc[0-7] 9 | .B PMU desc: Intel Haswell-EP IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell Integrated Memory Controller (IMC) uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell C-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IMC cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | .SH AUTHORS 31 | .nf 32 | Stephane Eranian 33 | .if 34 | .PP 35 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_irp.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_irp - support for Intel Haswell-EP IRP uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_irp 9 | .B PMU desc: Intel Haswell-EP IRP uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell IRP uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May , 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_qpi - support for Intel Haswell-EP QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_qpi0, hswep_unc_qpi1 9 | .B PMU desc: Intel Haswell-EP QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell Power QPI uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Haswell Bridge QPI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of QPI cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_r2pcie.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_r2pcie - support for Intel Haswell-EP R2 PCIe uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_r2pcie 9 | .B PMU desc: Intel Haswell-EP R2 PCIe uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell R2 PCIe uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell R2PCIe uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of R2PCIe cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_r3qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_r3qpi - support for Intel Haswell-EP R3QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_r3qpi[0-2] 9 | .B PMU desc: Intel Haswell-EP R3QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell R3QPI uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell R3PQI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of R3QPI cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_sbo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_sbo - support for Intel Haswell-EP S-Box uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_sbo 9 | .B PMU desc: Intel Haswell-EP S-Box uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell Rrint Transfer unit (S-Box) uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell S-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | .TP 32 | .B i 33 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 34 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 35 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 36 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 37 | 38 | .SH AUTHORS 39 | .nf 40 | Stephane Eranian 41 | .if 42 | .PP 43 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_hswep_unc_ubo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "May, 2015" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_hswep_unc_ubo - support for Intel Haswell-EP U-Box uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: hswep_unc_ubo 9 | .B PMU desc: Intel Haswell-EP U-Box uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Haswell system configuration unit (U-Box) uncore PMU. 13 | This PMU model only exists on Haswell model 63. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Haswell U-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B i 27 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 28 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 29 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 30 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 31 | 32 | .SH AUTHORS 33 | .nf 34 | Stephane Eranian 35 | .if 36 | .PP 37 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_cha.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_cha - support for Intel IcelakeX Server CHA uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_cha[0-39] 9 | .B PMU desc: Intel IcelakeX CHA uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX CHA (coherency and home agent) uncore PMU. 13 | There is one CHA-box PMU per physical core. Therefore there are up forty identical CHA 14 | PMU instances numbered from 0 up to possibly 39. On dual-socket systems, the number refers to the CHA 15 | PMUs on the socket where the program runs. 16 | 17 | Each CHA PMU implements 4 generic counters. 18 | 19 | .SH MODIFIERS 20 | The following modifiers are supported on Intel IcelakeX CHA uncore PMU: 21 | .TP 22 | .B e 23 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 24 | .TP 25 | .B t 26 | Set the threshold value. When set to a non-zero value, the counter counts the number 27 | of CHA clockticks in which the number of occurrences of the event is greater or equal to 28 | the threshold. This is an integer modifier with values in the range [0:255]. 29 | .TP 30 | .B i 31 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 32 | 33 | .SH AUTHORS 34 | .nf 35 | Stephane Eranian 36 | .if 37 | .PP 38 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_iio.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_iio - support for Intel IcelakeX Server IIO uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_iio[0-5] 9 | .B PMU desc: Intel IcelakeX IIO uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX IIO (I/O controller) uncore PMU. 13 | Each IIO PMU implements 4 generic counters and free running counters (not yet supported by libpfm4). 14 | The current version of libpfm4 does not expose the \fBfc_mask\fR and \fBch_mask\fR filter because these are 15 | hardcoded in the events provided by the library. 16 | .SH MODIFIERS 17 | The following modifiers are supported on Intel IcelakeX IIO uncore PMU: 18 | .TP 19 | .B e 20 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 21 | .TP 22 | .B t 23 | Set the threshold value. When set to a non-zero value, the counter counts the number 24 | of IIO clockticks in which the number of occurrences of the event is greater or equal to 25 | the threshold. This is an integer modifier with values in the range [0:255]. 26 | .TP 27 | .B i 28 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 29 | 30 | .SH AUTHORS 31 | .nf 32 | Stephane Eranian 33 | .if 34 | .PP 35 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_imc - support for Intel Icelake X Server Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_imc[0-11] 9 | .B PMU desc: Intel Icelake X Server IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Icelake X Server Integrated Memory Controller (IMC) uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Icelake X server IMC uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of IMC cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:255]. 24 | .B i 25 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_irp.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_irp - support for Intel IcelakeX Server IRP uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_irp[0-5] 9 | .B PMU desc: Intel IcelakeX IRP uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX IRP (IIO Ring Port) uncore PMU. There is one IRP per IIO. 13 | Each IRP PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel IcelakeX IRP uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IRP clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 28 | 29 | .SH AUTHORS 30 | .nf 31 | Stephane Eranian 32 | .if 33 | .PP 34 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_m2m.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_m2m - support for Intel Icelake X Server Mesh to Memory (M2M) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_m2m[0-1] 9 | .B PMU desc: Intel Icelake X Server M2M uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Icelake X Server Mesh to Memory (M2M) uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Icelake X server M2M uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of M2M cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:255]. 24 | .B i 25 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_m2pcie.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_m2pcie - support for Intel IcelakeX Server M2PCIE uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_m2pcie[0-2] 9 | .B PMU desc: Intel IcelakeX M2PCIE uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX M2PCIE (Mesh to IIO) uncore PMU. 13 | Each M2PCIE PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel IcelakeX M2PCIE uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of M2PCIE clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 28 | 29 | .SH AUTHORS 30 | .nf 31 | Stephane Eranian 32 | .if 33 | .PP 34 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_m3upi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_m3upi - support for Intel IcelakeX Server M3UPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_m3upi[0-3] 9 | .B PMU desc: Intel IcelakeX M3UPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX M3UPI (Mesh to UPI) uncore PMU. 13 | Each M3UPI PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel IcelakeX M3UPI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IRP clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .B i 26 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 27 | .SH AUTHORS 28 | .nf 29 | Stephane Eranian 30 | .if 31 | .PP 32 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_pcu.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_pcu - support for Intel IcelakeX Server PCU uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_pcu 9 | .B PMU desc: Intel IcelakeX PCU uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX PCU (Power Control Unit) uncore PMU. There is one PCU per system. 13 | Each PCU PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel IcelakeX PCU uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of PCU clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:63]. 25 | .TP 26 | .B i 27 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 28 | .TP 29 | .B occ_i 30 | Invert the threshold (t) for occupancy events \fBPOWER_STATE_OCCUPANY\fR test from strictly greater than to less or equal to. This is a boolean modifier. 31 | .TP 32 | .B occ_e 33 | Enable edge detection for occupancy events \fBPOWER_STATE_OCCUPANCY\fR, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 34 | .TP 35 | 36 | .SH AUTHORS 37 | .nf 38 | Stephane Eranian 39 | .if 40 | .PP 41 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_ubox.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_ubox - support for Intel IcelakeX Server UBOX uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_ubox 9 | .B PMU desc: Intel IcelakeX UBOX uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX UBOX (System configuration controller) uncore PMU. There is one UBOX per processor. 13 | Each UBOX PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel IcelakeX UBOX uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of UBOX clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .TP 26 | .B i 27 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 28 | 29 | .SH AUTHORS 30 | .nf 31 | Stephane Eranian 32 | .if 33 | .PP 34 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_icx_unc_upi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2023" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_icx_unc_upi - support for Intel IcelakeX Server UPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: icx_unc_upi[0-3] 9 | .B PMU desc: Intel IcelakeX UPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel IcelakeX UPI (Ultra Path Interconnect) uncore PMU. 13 | Each UPI PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel IcelakeX UPI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IRP clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .B i 26 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 27 | .SH AUTHORS 28 | .nf 29 | Stephane Eranian 30 | .if 31 | .PP 32 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivb_unc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "June, 2013" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivb_unc - support for Intel Ivy Bridge uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivb_unc_cbo0, ivb_unc_cbo1, ivb_unc_cbo2, ivb_unc_cbo3 9 | .B PMU desc: Intel Ivy Bridge C-box uncore 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge client part (model 58) uncore PMU. 13 | The support is currently limited to the Coherency Box, so called C-Box for up 14 | to 4 physical cores. 15 | 16 | Each physical core has an associated C-Box which it uses to communicate with 17 | the L3 cache. The C-boxes all support the same set of events. However, Core 0 18 | C-box (snb_unc_cbo0) supports an additional uncore clock ticks event: \fBUNC_CLOCKTICKS\fR. 19 | 20 | 21 | .SH MODIFIERS 22 | The following modifiers are supported on Intel Ivy Bridge C-Box uncore PMU: 23 | .TP 24 | .B i 25 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 26 | occurring. This is a boolean modifier 27 | .TP 28 | .B e 29 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event 30 | to at least one occurrence. This modifier must be combined with a counter mask modifier (m) with a value greater or equal to one. 31 | This is a boolean modifier. 32 | .TP 33 | .B c 34 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 35 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 36 | modifier with values in the range [0:255]. 37 | 38 | .P 39 | Both the \fBUNC_CBO_CACHE_LOOKUP\fR and \fBUNC_CBO_XSNP_RESPONSE\fR requires two umasks to be valid. 40 | For \fBUNC_CBO_CACHE_LOOKUP\fR the first umask must be one of the MESI state umasks, the second has to be one 41 | of the filters. For \fBUNC_CBO_XSNP_RESPONSE\fR the first umask must be one of the snoop types, the second 42 | has to be one of the filters. 43 | 44 | .SH AUTHORS 45 | .nf 46 | Stephane Eranian 47 | .if 48 | .PP 49 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_ha.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_ha - support for Intel Ivy Bridge-EP Home Agent (HA) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_ha0, ivbep_unc_ha1 9 | .B PMU desc: Intel Ivy Bridge-EP HA uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge Home Agent (HA) uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge HA uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_imc - support for Intel Ivy Bridge-EP Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_imc[0-7] 9 | .B PMU desc: Intel Ivy Bridge-EP IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge Integrated Memory Controller (IMC) uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge C-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IMC cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_irp.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_irp - support for Intel Ivy Bridge-EP IRP uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_irp 9 | .B PMU desc: Intel Ivy Bridge-EP IRP uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge IRP uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_pcu.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_pcu - support for Intel Ivy Bridge-EP Power Controller Unit (PCU) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_pcu 9 | .B PMU desc: Intel Ivy Bridge-EP PCU uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge Power Controller Unit uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge PCU uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | .TP 26 | .B ff 27 | Enable frequency band filtering. This modifier applies only to the UNC_P_FREQ_BANDx_CYCLES events, where x is [0-3]. 28 | The modifiers expects an integer in the range [0-255]. The value is interpreted as a frequency value to be 29 | multiplied by 100Mhz. Thus if the value is 32, then all cycles where the processor is running at 3.2GHz and more are 30 | counted. 31 | 32 | .SH Frequency band filtering 33 | 34 | There are 3 events which support frequency band filtering, namely, UNC_P_FREQ_BAND0_CYCLES, UNC_P_FREQ_BAND1_CYCLES, 35 | UNC_P_FREQ_BAND2_CYCLES, UNC_P_FREQ_BAND3_CYCLES. The frequency filter (available via the ff modifier) is stored into 36 | a PMU shared register which hold all 4 possible frequency bands, one per event. However, the library generate the 37 | encoding for each event individually because it processes events one at a time. The caller or the underlying kernel 38 | interface may have to merge the band filter settings to program the filter register properly. 39 | 40 | .SH AUTHORS 41 | .nf 42 | Stephane Eranian 43 | .if 44 | .PP 45 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_qpi - support for Intel Ivy Bridge-EP QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_qpi0, ivbep_unc_qpi1 9 | .B PMU desc: Intel Ivy Bridge-EP QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge Power QPI uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge QPI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of QPI cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_r2pcie.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_r2pcie - support for Intel Ivy Bridge-EP R2 PCIe uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_r2pcie 9 | .B PMU desc: Intel Ivy Bridge-EP R2 PCIe uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge R2 PCIe uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge R2PCIe uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of R2PCIe cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_r3qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_r3qpi - support for Intel Ivy Bridge-EP R3QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_r3qpi0, ivbep_unc_r3qpi1, ivbep_unc_r3qpi2 9 | .B PMU desc: Intel Ivy Bridge-EP R3QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge R3QPI uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge R3PQI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of R3QPI cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_ivbep_unc_ubo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2014" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_ivbep_unc_ubo - support for Intel Ivy Bridge-EP U-Box uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ivbep_unc_ubo 9 | .B PMU desc: Intel Ivy Bridge-EP U-Box uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Ivy Bridge system configuration unit (U-Box) uncore PMU. 13 | This PMU model only exists on Ivy Bridge model 62. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Ivy Bridge U-Box uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of HA cycles in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:15]. 25 | 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_knc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_knc - support for Intel Knights Corner 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: knc 9 | .B PMU desc: Intel Knights Corner 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports Intel Knights Corner processors. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Knights Corner processors: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B i 26 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 27 | occurring. This is a boolean modifier 28 | .TP 29 | .B e 30 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 31 | .TP 32 | .B c 33 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 34 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 35 | modifier with values in the range [0:255]. 36 | .TP 37 | .B t 38 | Measure on all threads at the same time assuming hyper-threading is enabled. This is a boolean modifier. 39 | .SH AUTHORS 40 | .nf 41 | Stephane Eranian 42 | .if 43 | .PP 44 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_nhm_unc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME libpfm_intel_nhm_unc \- support for Intel Nehalem uncore PMU 3 | .SH SYNOPSIS 4 | .nf 5 | .B #include 6 | .sp 7 | .B PMU name: nhm_unc 8 | .B PMU desc: Intel Nehalem uncore 9 | .sp 10 | .SH DESCRIPTION 11 | The library supports the Nehalem uncore PMU as implemented by processors 12 | such as Intel Core i7, and Intel Core i5. 13 | 14 | The PMU is located at the socket-level and is therefore shared between 15 | the various cores. By construction it can only measure at all privilege 16 | levels. 17 | 18 | .SH MODIFIERS 19 | The following modifiers are supported on Intel Nehalem processors: 20 | .TP 21 | .B i 22 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 23 | occurring. This is a boolean modifier 24 | .TP 25 | .B e 26 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 27 | .TP 28 | .B c 29 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 30 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 31 | modifier with values in the range [0:255]. 32 | .TP 33 | .B o 34 | Causes the queue occupancy counter associated with the event to be cleared (zeroed). This is a boolean 35 | modifier. 36 | 37 | .SH AUTHORS 38 | .nf 39 | Stephane Eranian 40 | .if 41 | .PP 42 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_p6.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_p6 - support for Intel P5 based processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: pm, ppro, pii, piii, p6 9 | .B PMU desc: Intel Pentium M, Intel Pentium Pro, Intel Pentium II, Intel Pentium III, Intel P6 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports all Intel P6-based processors all the way back to the Pentium Pro. Although 13 | all those processors offers the same PMU architecture, they differ in the events they provide. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on all Intel P6 processors: 17 | .TP 18 | .B u 19 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 20 | This is a boolean modifier. 21 | .TP 22 | .B k 23 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 24 | This is a boolean modifier. 25 | .TP 26 | .B i 27 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 28 | occurring. This is a boolean modifier 29 | .TP 30 | .B e 31 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 32 | .TP 33 | .B c 34 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 35 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 36 | modifier with values in the range [0:255]. 37 | .SH AUTHORS 38 | .nf 39 | Stephane Eranian 40 | .if 41 | .PP 42 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_rapl.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "November, 2013" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_rapl - support for Intel RAPL PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: rapl 9 | .B PMU desc: Intel RAPL (Intel SandyBridge, IvyBridge, Haswell) 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Running Average Power Limit (RAPL) 13 | energy consumption counters. This is a socket-level set of counters 14 | which reports energy consumption in Joules. There are up to 3 counters 15 | each measuring only one event. The following events are defined: 16 | .TP 17 | .B RAPL_ENERGY_CORES 18 | On all processors, the event reports the number of Joules consumed by all cores. 19 | On all processors, 20 | .TP 21 | .B RAPL_ENERGYC_PKG 22 | On all processors, th event reports the number of Joules consumed by all 23 | the cores and Last Level cache (L3). 24 | .TP 25 | .B RAPL_ENERGY_DRAM 26 | On server processors, the event reports the number of Joules consumed 27 | n by the DRAM controller. 28 | 29 | By construction, the events are socket-level and can only be measured in 30 | system-wide mode. It is necessary and sufficient to measure only one CPU 31 | per socket to get meaningful results. 32 | 33 | .SH MODIFIERS 34 | The PMU does not support any modifiers. 35 | .SH AUTHORS 36 | .nf 37 | Stephane Eranian 38 | .if 39 | .PP 40 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_iio.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_ubo - support for Intel Skylake X Server IIO uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_iio[0-5] 9 | .B PMU desc: Intel Skylake X Server IIO uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X server IIO uncore PMU. The IIO PMU is used to analyze I/O traffic from the PCIe controllers. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server IIO uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of HA cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:15]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH Filters 32 | Events UNC_IO_COMP_BUF_INSERTS, UNC_IO_DATA_REQ_BY_CPU, UNC_IO_DATA_REQ_OF_CPU, support additional filtering via a set of umasks tracking requests completions. They umasks start with a FC_ prefix. The other filter is the port filter and it is hardcoded as umasks for the same events. 33 | 34 | .SH AUTHORS 35 | .nf 36 | Stephane Eranian 37 | .if 38 | .PP 39 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_imc - support for Intel Skylake X Server Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_imc[0-7] 9 | .B PMU desc: Intel Skylake X Server IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X Server Integrated Memory Controller (IMC) uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server IMC uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of IMC cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:255]. 24 | .B i 25 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 26 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 27 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 28 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 29 | .SH AUTHORS 30 | .nf 31 | Stephane Eranian 32 | .if 33 | .PP 34 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_irp.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_irp - support for Intel Broadwell Server IRP uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_irp 9 | .B PMU desc: Intel Skylake X Server IRP uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X Server IRP (IIO coherency) uncore PMU . 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server IRP uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:255]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_m2m.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_m2m - support for Intel Skylake X Server M2M uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_m2m[0-1] 9 | .B PMU desc: Intel Skylake X Server Mesh-2-Memory uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X server system configuration unit M2M uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server M2M uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of HA cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:15]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_m3upi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_m3upi - support for Intel Skylake X Server M3UPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_m3upi[0-2] 9 | .B PMU desc: Intel Skylake X server M3UPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X server M3UPI uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server M3UQI uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of M3UPI cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:15]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_pcu.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_pcu - support for Intel Skylake X Power Controller Unit (PCU) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_pcu 9 | .B PMU desc: Intel Skylake X Server PCU uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X Server Power Controller Unit uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server PCU uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of HA cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:15]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH Frequency band filtering 32 | 33 | There are 3 events which support frequency band filtering, namely, UNC_P_FREQ_BAND0_CYCLES, UNC_P_FREQ_BAND1_CYCLES, 34 | UNC_P_FREQ_BAND2_CYCLES, UNC_P_FREQ_BAND3_CYCLES. The frequency filter (available via the ff modifier) is stored into 35 | a PMU shared register which hold all 4 possible frequency bands, one per event. However, the library generate the 36 | encoding for each event individually because it processes events one at a time. The caller or the underlying kernel 37 | interface may have to merge the band filter settings to program the filter register properly. 38 | 39 | .SH AUTHORS 40 | .nf 41 | Stephane Eranian 42 | .if 43 | .PP 44 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_ubo.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_ubo - support for Intel Skylake X Server U-Box uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_ubo 9 | .B PMU desc: Intel Skylake X Server U-Box uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X server system configuration unit (U-Box) uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server U-Box uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of HA cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:15]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_skx_unc_upi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2018" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_skx_unc_upi - support for Intel Skylake X Server UPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: skx_unc_upi[0-2] 9 | .B PMU desc: Intel Skylake X Server UPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Skylake X Server UPI uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Skylake X server UPI uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of QPI cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:255]. 24 | .TP 25 | .B i 26 | Invert the meaning of the threshold or edge filter. If set, the event counts when strictly less 27 | than N occurrences occur per cycle if threshold is set to N. When invert is set, then threshold 28 | must be set to non-zero value. If set, the event counts when the event transitions from occurring 29 | to not occurring (falling edge) when edge detection is set. This is a boolean modifier 30 | 31 | .SH BASIC_HDR_MATCH events 32 | The library also supports the special \fBRXL_BASIC_HDR_MATCH\fR and \fBTXL_BASIC_HDR_MATCH\fR opcode matcher events. These events have a lot more filters available 33 | in the form of either a modifier (listed below) or specific umasks. 34 | The following modifiers are available in additional to the standard listed above: 35 | .TP 36 | .B rcsnid 37 | Specify a RCS Node identifier as an integer in the range [0-15]. Default: 0 38 | .TP 39 | .B dnid 40 | Specify a destination Node identifier as an integer in the range [0-15]. Default: 0 41 | 42 | .SH AUTHORS 43 | .nf 44 | Stephane Eranian 45 | .if 46 | .PP 47 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snb_unc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snb_unc - support for Intel Sandy Bridge uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snb_unc_cbo0, snb_unc_cbo1, snb_unc_cbo2, snb_unc_cbo3 9 | .B PMU desc: Intel Sandy Bridge C-box uncore 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge client part (model 42) uncore PMU. 13 | The support is currently limited to the Coherency Box, so called C-Box for up 14 | to 4 physical cores. 15 | 16 | Each physical core has an associated C-Box which it uses to communicate with 17 | the L3 cache. The C-boxes all support the same set of events. However, Core 0 18 | C-box (snb_unc_cbo0) supports an additional uncore clock ticks event: \fBUNC_CLOCKTICKS\fR. 19 | 20 | 21 | .SH MODIFIERS 22 | The following modifiers are supported on Intel Sandy Bridge C-Box uncore PMU: 23 | .TP 24 | .B i 25 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 26 | occurring. This is a boolean modifier 27 | .TP 28 | .B e 29 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event 30 | to at least one occurrence. This modifier must be combined with a counter mask modifier (m) with a value greater or equal to one. 31 | This is a boolean modifier. 32 | .TP 33 | .B c 34 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 35 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 36 | modifier with values in the range [0:255]. 37 | 38 | .P 39 | Both the \fBUNC_CBO_CACHE_LOOKUP\fR and \fBUNC_CBO_XSNP_RESPONSE\fR requires two umasks to be valid. 40 | For \fBUNC_CBO_CACHE_LOOKUP\fR the first umask must be one of the MESI state umasks, the second has to be one 41 | of the filters. For \fBUNC_CBO_XSNP_RESPONSE\fR the first umask must be one of the snoop types, the second 42 | has to be one of the filters. 43 | 44 | .SH AUTHORS 45 | .nf 46 | Stephane Eranian 47 | .if 48 | .PP 49 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snbep_unc_ha.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snbep_unc_ha - support for Intel Sandy Bridge-EP Home Agent (HA) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snbep_unc_ha 9 | .B PMU desc: Intel Sandy Bridge-EP HA uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge Home Agent (HA) uncore PMU. 13 | This PMU model only exists on Sandy Bridge model 45. There is only one 14 | Home Agent per processor socket. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on Intel Sandy Bridge C-Box uncore PMU: 18 | .TP 19 | .B i 20 | Invert the meaning of the event. The counter will now count HA cycles in which the 21 | event is \fBnot\fR occurring. This is a boolean modifier 22 | .TP 23 | .B e 24 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 25 | .TP 26 | .B t 27 | Set the threshold value. When set to a non-zero value, the counter counts the number 28 | of HA cycles in which the number of occurrences of the event is greater or equal to 29 | the threshold. This is an integer modifier with values in the range [0:255]. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snbep_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snbep_unc_imc - support for Intel Sandy Bridge-EP Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snbep_unc_imc[0-3] 9 | .B PMU desc: Intel Sandy Bridge-EP IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge Integrated Memory Controller (IMC) uncore PMU. 13 | This PMU model only exists on Sandy Bridge model 45. There are four IMC PMUs per socket. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel Sandy Bridge C-Box uncore PMU: 17 | .TP 18 | .B i 19 | Invert the meaning of the event. The counter will now count IMC cycles in which the 20 | event is \fBnot\fR occurring. This is a boolean modifier 21 | .TP 22 | .B e 23 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 24 | .TP 25 | .B t 26 | Set the threshold value. When set to a non-zero value, the counter counts the number 27 | of IMC cycles in which the number of occurrences of the event is greater or equal to 28 | the threshold. This is an integer modifier with values in the range [0:255]. 29 | 30 | .SH AUTHORS 31 | .nf 32 | Stephane Eranian 33 | .if 34 | .PP 35 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snbep_unc_pcu.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snbep_unc_pcu - support for Intel Sandy Bridge-EP Power Controller Unit (PCU) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snbep_unc_pcu 9 | .B PMU desc: Intel Sandy Bridge-EP PCU uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge Power Controller Unit uncore PMU. 13 | This PMU model only exists on Sandy Bridge model 45. There is only one 14 | PCU PMU per processor socket. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on Intel Sandy Bridge C-Box uncore PMU: 18 | .TP 19 | .B i 20 | Invert the meaning of the event. The counter will now count HA cycles in which the 21 | event is \fBnot\fR occurring. This is a boolean modifier 22 | .TP 23 | .B e 24 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 25 | .TP 26 | .B t 27 | Set the threshold value. When set to a non-zero value, the counter counts the number 28 | of HA cycles in which the number of occurrences of the event is greater or equal to 29 | the threshold. This is an integer modifier with values in the range [0:15]. 30 | .TP 31 | .B ff 32 | Enable frequency band filtering. This modifier applies only to the UNC_P_FREQ_BANDx_CYCLES events, where x is [0-3]. 33 | The modifiers expects an integer in the range [0-255]. The value is interpreted as a frequency value to be 34 | multiplied by 100Mhz. Thus if the value is 32, then all cycles where the processor is running at 3.2GHz and more are 35 | counted. 36 | 37 | .SH Frequency band filtering 38 | 39 | There are 3 events which support frequency band filtering, namely, UNC_P_FREQ_BAND0_CYCLES, UNC_P_FREQ_BAND1_CYCLES, 40 | UNC_P_FREQ_BAND2_CYCLES, UNC_P_FREQ_BAND3_CYCLES. The frequency filter (available via the ff modifier) is stored into 41 | a PMU shared register which hold all 4 possible frequency bands, one per event. However, the library generate the 42 | encoding for each event individually because it processes events one at a time. The caller or the underlying kernel 43 | interface may have to merge the band filter settings to program the filter register properly. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Stephane Eranian 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snbep_unc_qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snbep_unc_qpi - support for Intel Sandy Bridge-EP QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snbep_unc_qpi0, snbep_unc_qpi1 9 | .B PMU desc: Intel Sandy Bridge-EP QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge Power QPI uncore PMU. 13 | This PMU model only exists on Sandy Bridge model 45. There are 14 | two QPI PMUs per processor socket. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on Intel Sandy Bridge QPI uncore PMU: 18 | .TP 19 | .B i 20 | Invert the meaning of the event. The counter will now count QPI cycles in which the 21 | event is \fBnot\fR occurring. This is a boolean modifier 22 | .TP 23 | .B e 24 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 25 | .TP 26 | .B t 27 | Set the threshold value. When set to a non-zero value, the counter counts the number 28 | of QPI cycles in which the number of occurrences of the event is greater or equal to 29 | the threshold. This is an integer modifier with values in the range [0:255]. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snbep_unc_r2pcie.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snbep_unc_r2pcie - support for Intel Sandy Bridge-EP R2 PCIe uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snbep_unc_r2pcie 9 | .B PMU desc: Intel Sandy Bridge-EP R2 PCIe uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge R2 PCIe uncore PMU. 13 | This PMU model only exists on Sandy Bridge model 45. There is only one R2PCIe PMU 14 | per processor socket. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on Intel Sandy Bridge R2PCIe uncore PMU: 18 | .TP 19 | .B i 20 | Invert the meaning of the event. The counter will now count R2 PCIe cycles in which the 21 | event is \fBnot\fR occurring. This is a boolean modifier 22 | .TP 23 | .B e 24 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 25 | .TP 26 | .B t 27 | Set the threshold value. When set to a non-zero value, the counter counts the number 28 | of R2PCIe cycles in which the number of occurrences of the event is greater or equal to 29 | the threshold. This is an integer modifier with values in the range [0:15]. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_snbep_unc_r3qpi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "August, 2012" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_snbep_unc_r3qpi - support for Intel Sandy Bridge-EP R3QPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: snbep_unc_r3qpi0, snbep_unc_r3qpi0 9 | .B PMU desc: Intel Sandy Bridge-EP R3QPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Sandy Bridge R3QPI uncore PMU. 13 | This PMU model only exists on Sandy Bridge model 45. There are 14 | two R3QPI PMUs per processor socket. 15 | 16 | .SH MODIFIERS 17 | The following modifiers are supported on Intel Sandy Bridge R3PQI uncore PMU: 18 | .TP 19 | .B i 20 | Invert the meaning of the event. The counter will now count R3QPI cycles in which the 21 | event is \fBnot\fR occurring. This is a boolean modifier 22 | .TP 23 | .B e 24 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 25 | .TP 26 | .B t 27 | Set the threshold value. When set to a non-zero value, the counter counts the number 28 | of R3QPI cycles in which the number of occurrences of the event is greater or equal to 29 | the threshold. This is an integer modifier with values in the range [0:15]. 30 | 31 | .SH AUTHORS 32 | .nf 33 | Stephane Eranian 34 | .if 35 | .PP 36 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_spr_unc_cha.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_spr_unc_cha - support for Intel IcelakeX Server CHA uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: spr_unc_cha[0-59] 9 | .B PMU desc: Intel SapphireRapids CHA uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel SapphireRapids CHA (coherency and home agent) uncore PMU. 13 | There is one CHA-box PMU per physical core. Therefore there are up forty identical CHA 14 | PMU instances numbered from 0 up to possibly 59. On dual-socket systems, the number refers to the CHA 15 | PMUs on the socket where the program runs. 16 | 17 | Each CHA PMU implements 4 generic counters. 18 | 19 | .SH MODIFIERS 20 | The following modifiers are supported on Intel SapphireRapids CHA uncore PMU: 21 | .TP 22 | .B e 23 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 24 | .TP 25 | .B t 26 | Set the threshold value. When set to a non-zero value, the counter counts the number 27 | of CHA clockticks in which the number of occurrences of the event is greater or equal to 28 | the threshold. This is an integer modifier with values in the range [0:255]. 29 | .TP 30 | .B i 31 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 32 | 33 | .SH AUTHORS 34 | .nf 35 | Stephane Eranian 36 | .if 37 | .PP 38 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_spr_unc_imc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_spr_unc_imc - support for Intel SapphireRapids Server Integrated Memory Controller (IMC) uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: spr_unc_imc[0-11] 9 | .B PMU desc: Intel SapphireRapids Server IMC uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel SapphireRapids Server Integrated Memory Controller (IMC) uncore PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel SapphireRapids server IMC uncore PMU: 16 | .TP 17 | .B e 18 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 19 | .TP 20 | .B t 21 | Set the threshold value. When set to a non-zero value, the counter counts the number 22 | of IMC cycles in which the number of occurrences of the event is greater or equal to 23 | the threshold. This is an integer modifier with values in the range [0:255]. 24 | .B i 25 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 26 | .SH AUTHORS 27 | .nf 28 | Stephane Eranian 29 | .if 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_spr_unc_upi.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "January, 2024" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_spr_unc_upi - support for Intel SapphireRapids Server UPI uncore PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: spr_unc_upi[0-3] 9 | .B PMU desc: Intel SapphireRapids UPI uncore PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel SapphireRapids UPI (Ultra Path Interconnect) uncore PMU. 13 | Each UPI PMU implements 4 generic counters. 14 | 15 | .SH MODIFIERS 16 | The following modifiers are supported on Intel SapphireRapids UPI uncore PMU: 17 | .TP 18 | .B e 19 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event to at least one occurrence. This modifier must be combined with a threshold modifier (t) with a value greater or equal to one. This is a boolean modifier. 20 | .TP 21 | .B t 22 | Set the threshold value. When set to a non-zero value, the counter counts the number 23 | of IRP clockticks in which the number of occurrences of the event is greater or equal to 24 | the threshold. This is an integer modifier with values in the range [0:255]. 25 | .B i 26 | Invert the threshold (t) test from strictly greater than to less or equal to. This is a boolean modifier. 27 | .SH AUTHORS 28 | .nf 29 | Stephane Eranian 30 | .if 31 | .PP 32 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_tmt.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "March, 2020" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_tmt - support for Intel Tremont core PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: tmt 9 | .B PMU desc: Intel Tremont 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports the Intel Tremont core PMU. 13 | 14 | .SH MODIFIERS 15 | The following modifiers are supported on Intel Tremont processors: 16 | .TP 17 | .B u 18 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 19 | This is a boolean modifier. 20 | .TP 21 | .B k 22 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B i 26 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 27 | occurring. This is a boolean modifier 28 | .TP 29 | .B e 30 | Enable edge detection, i.e., count only when there is a state transition from no occurrence of the event 31 | to at least one occurrence. This modifier must be combined with a counter mask modifier (m) with a value greater or equal to one. 32 | This is a boolean modifier. 33 | .TP 34 | .B c 35 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 36 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 37 | modifier with values in the range [0:255]. 38 | 39 | .SH OFFCORE_RESPONSE events 40 | Intel Tremont provides two offcore_response events: 41 | \fBOFFCORE_RESPONSE_0\fR and \fBOFFCORE_RESPONSE_1\fR. The \fBOCR\fR event is aliased to \fBOFFCORE_RESPONSE_0\fR. 42 | 43 | Those events need special treatment in the performance monitoring infrastructure 44 | because each event uses an extra register to store some settings. Thus, in 45 | case multiple offcore_response events are monitored simultaneously, the kernel needs 46 | to manage the sharing of that extra register. 47 | 48 | The offcore_response event is exposed as a normal event by the library. The extra 49 | settings are exposed as regular umasks. The library takes care of encoding the 50 | events according for the underlying kernel interface. 51 | 52 | On Intel Tremont, it is not possible to combine the request, supplier, snoop, fields anymore 53 | to avoid invalid combinations. As such, the umasks provided by the library are the only ones 54 | supported and validated. 55 | 56 | .SH AUTHORS 57 | .nf 58 | Stephane Eranian 59 | .if 60 | .PP 61 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_wsm_unc.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "February, 2010" "" "Linux Programmer's Manual" 2 | .SH NAME libpfm_intel_wsm_unc \- support for Intel Westmere uncore PMU 3 | .SH SYNOPSIS 4 | .nf 5 | .B #include 6 | .sp 7 | .B PMU name: wsm_unc 8 | .B PMU desc: Intel Westmere uncore 9 | .sp 10 | .SH DESCRIPTION 11 | The library supports the Intel Westmere uncore PMU as implemented by processors 12 | such as Intel Core i7, and Intel Core i5 (models 37, 44). 13 | 14 | The PMU is located at the socket-level and is therefore shared between 15 | the various cores. By construction it can only measure at all privilege 16 | levels. 17 | 18 | .SH MODIFIERS 19 | The following modifiers are supported on Intel Westmere processors: 20 | .TP 21 | .B i 22 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 23 | occurring. This is a boolean modifier 24 | .TP 25 | .B e 26 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 27 | .TP 28 | .B c 29 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 30 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 31 | modifier with values in the range [0:255]. 32 | .TP 33 | .B o 34 | Causes the queue occupancy counter associated with the event to be cleared (zeroed). This is a boolean 35 | modifier. 36 | .SH AUTHORS 37 | .nf 38 | Stephane Eranian 39 | .if 40 | .PP 41 | -------------------------------------------------------------------------------- /docs/man3/libpfm_intel_x86_arch.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_intel_x86_arch - support for Intel X86 architectural PMU 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: ix86arch 9 | .B PMU desc: Intel X86 architectural PMU 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports \fbany\fR processor implementing the Intel architectural PMU. This is a 13 | minimal PMU with a variable number of counters but predefined set of events. It is implemented 14 | in all recent processors starting with Intel Core Duo/Core Solo. 15 | 16 | It acts as a default PMU support in case the library is run on a very recent processor for which 17 | the specific support has not yet been implemented. 18 | .SH MODIFIERS 19 | The following modifiers are supported on Intel architectural PMU: 20 | .TP 21 | .B u 22 | Measure at user level which includes privilege levels 1, 2, 3. This corresponds to \fBPFM_PLM3\fR. 23 | This is a boolean modifier. 24 | .TP 25 | .B k 26 | Measure at kernel level which includes privilege level 0. This corresponds to \fBPFM_PLM0\fR. 27 | This is a boolean modifier. 28 | .TP 29 | .B i 30 | Invert the meaning of the event. The counter will now count cycles in which the event is \fBnot\fR 31 | occurring. This is a boolean modifier 32 | .TP 33 | .B e 34 | Enable edge detection, i.e., count only when there is a state transition. This is a boolean modifier. 35 | .TP 36 | .B c 37 | Set the counter mask value. The mask acts as a threshold. The counter will count the number of cycles 38 | in which the number of occurrences of the event is greater or equal to the threshold. This is an integer 39 | modifier with values in the range [0:255]. 40 | .TP 41 | .B t 42 | Measure on both threads at the same time assuming hyper-threading is enabled. This modifier requires 43 | at least version 3 of the architectural PMU. This is a boolean modifier. 44 | 45 | .SH AUTHORS 46 | .nf 47 | Stephane Eranian 48 | .if 49 | .PP 50 | -------------------------------------------------------------------------------- /docs/man3/libpfm_mips_74k.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2011" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | libpfm_mips_74k - support for MIPS 74k processors 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .B PMU name: mips_74k 9 | .B PMU desc: MIPS 74k 10 | .sp 11 | .SH DESCRIPTION 12 | The library supports MIPS 74k processors in big or little endian modes. 13 | 14 | .SH ENCODINGS 15 | On this processor, what is measured by an event depends on the event code and 16 | on the counter it is programmed on. Usually the meaning of the event code 17 | changes between odd and even indexed counters. For instance, event code \fB0x2\fR 18 | means 'PREDICTED_JR31' when programmed on even-indexed counters and it means 'JR_31_MISPREDICTIONS' 19 | when programmed on odd-indexed counters. To correctly measure an event, one needs 20 | both the event encoding and a list of possible counters. 21 | 22 | When \fRpfm_get_os_event_encoding()\fR is used with \fBPFM_OS_NONE\fR to return the raw 23 | PMU encoding, the library returns two values: the event encoding as per the architecture 24 | manual and a bitmask of valid counters to program it on. For instance, for 'JR_31_MISPREDICTIONS' 25 | The library returns codes[0] = 0x4a, codes[1]= 0xa (supported on counter 1, 3). 26 | 27 | The encoding for a specific kernel interface may vary and is handled internally 28 | by the library. 29 | 30 | .SH MODIFIERS 31 | The following modifiers are supported on MIPS 74k. 32 | .TP 33 | .B u 34 | Measure at user level. This corresponds to \fBPFM_PLM3\fR. 35 | This is a boolean modifier. 36 | .TP 37 | .B k 38 | Measure at kernel level. This corresponds to \fBPFM_PLM0\fR. 39 | This is a boolean modifier. 40 | .TP 41 | .B e 42 | Measure at exception level. This corresponds to \fBPFM_PLM2\fR. 43 | This is a boolean modifier. 44 | .TP 45 | .B s 46 | Measure at supervisor level. This corresponds to \fBPFM_PLM1\fR. 47 | This is a boolean modifier. 48 | 49 | It should be noted that those modifiers are available for encoding as raw mode 50 | with \fBPFM_OS_NONE\fR but they may not all be present with specific kernel 51 | interfaces. 52 | 53 | .SH AUTHORS 54 | .nf 55 | Stephane Eranian 56 | .if 57 | .PP 58 | -------------------------------------------------------------------------------- /docs/man3/pfm_get_version.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | pfm_get_version \- get library version 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .BI "int pfm_get_version(void)"; 9 | .sp 10 | .SH DESCRIPTION 11 | This function can be called at any time to get the revision 12 | level of the library. It is not necessary to have invoked 13 | \fBpfm_initialize()\fR prior to calling this function. 14 | 15 | The revision number is composed of two fields: a major number 16 | and a minor number. Both can be extracted using macros provided 17 | in the header file: 18 | .TP 19 | .B PFMLIB_MAJ_VERSION(v) 20 | returns the major number encoded in v. 21 | .TP 22 | .B PFMLIB_MIN_VERSION(v) 23 | returns the minor number encoded in v. 24 | .SH RETURN 25 | The function is always successful, i.e., it always returns 26 | the 32-bit version number. 27 | .SH ERRORS 28 | .SH AUTHOR 29 | Stephane Eranian 30 | .PP 31 | -------------------------------------------------------------------------------- /docs/man3/pfm_initialize.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | pfm_initialize \- initialize library 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .BI "int pfm_initialize(void);" 9 | .sp 10 | .SH DESCRIPTION 11 | This is the first function that a program \fBmust\fR call otherwise 12 | the library will not operate. This function probes the 13 | underlying hardware looking for valid PMU event tables to activate. 14 | Multiple distinct PMU tables may be activated at the same time. 15 | 16 | The function must be called only once. If the function is called 17 | more than once, it does not execute the initialization multiple times, 18 | it simply returns the same value as for the first call. 19 | This is \fBnot a reentrant function\fR. Only one thread at a time can call 20 | the function 21 | 22 | .SH RETURN 23 | The function returns whether or not it was successful, i.e., at least 24 | one PMU was activated. A return value of \fBPFMLIB_SUCCESS\fR indicates 25 | success, otherwise the value is an error code. 26 | .SH ERRORS 27 | .TP 28 | .B PFMLIB_ERR_NOTSUPP 29 | No PMU was activated. 30 | .SH AUTHOR 31 | Stephane Eranian 32 | .PP 33 | -------------------------------------------------------------------------------- /docs/man3/pfm_strerror.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | pfm_strerror \- return constant string describing error code 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .BI "const char *pfm_strerror(int "code); 9 | .sp 10 | .SH DESCRIPTION 11 | This function returns a string which describes the libpfm error 12 | value in \fBcode\fR. The string returned by the call is \fBread-only\fR. 13 | 14 | The function must \fBonly\fR be used with libpfm calls documented to return 15 | specific error codes. The value \-1 is not considered a specific error code. 16 | Strings and \fBpfm_pmu_t\fR return values cannot be used with this function. 17 | Typically \fBNULL\fR is returned in case of error for string values, and 18 | \fBPFM_PMU_NONE\fR is returned for \fBpfm_pmu_t\fR values. 19 | 20 | The function is also not designed to handle OS system call errors, i.e., 21 | errno values. 22 | 23 | .SH RETURN 24 | The function returns a pointer to the constant string describing 25 | the error code. The string is in English. If code is invalid then 26 | a default error message is returned. 27 | .SH ERRORS 28 | If the error code is invalid, then the function returns 29 | a pointer to a string which says "unknown error code". 30 | .SH AUTHOR 31 | Stephane Eranian 32 | .PP 33 | -------------------------------------------------------------------------------- /docs/man3/pfm_terminate.3: -------------------------------------------------------------------------------- 1 | .TH LIBPFM 3 "September, 2009" "" "Linux Programmer's Manual" 2 | .SH NAME 3 | pfm_terminate \- free resources used by library 4 | .SH SYNOPSIS 5 | .nf 6 | .B #include 7 | .sp 8 | .BI "int pfm_terminate(void);" 9 | .sp 10 | .SH DESCRIPTION 11 | This is the last function that a program \fBmust\fR call to free 12 | all the resources allocated by the library, e.g., memory. 13 | The function is not reentrant, caller must ensure only one 14 | thread at a time is executing it. 15 | 16 | .SH RETURN 17 | There is no return value to this function 18 | .SH AUTHOR 19 | Stephane Eranian 20 | .PP 21 | -------------------------------------------------------------------------------- /examples/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P. 3 | # Contributed by Stephane Eranian 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | # of the Software, and to permit persons to whom the Software is furnished to do so, 10 | # subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in all 13 | # copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | # 22 | 23 | TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)/.. 24 | 25 | include $(TOPDIR)/config.mk 26 | include $(TOPDIR)/rules.mk 27 | 28 | CFLAGS+= -I. -D_GNU_SOURCE 29 | LIBS += -lm 30 | 31 | ifeq ($(SYS),Linux) 32 | CFLAGS+= -pthread 33 | LIBS += -lrt 34 | endif 35 | 36 | ifeq ($(SYS),WINDOWS) 37 | LIBS += -lgnurx 38 | endif 39 | 40 | TARGETS=showevtinfo check_events 41 | EXAMPLESDIR=$(DESTDIR)$(DOCDIR)/examples 42 | 43 | all: $(TARGETS) 44 | @set -e ; for d in $(DIRS) ; do $(MAKE) -C $$d $@ ; done 45 | 46 | $(TARGETS): %:%.o $(PFMLIB) 47 | $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $^ $(LIBS) 48 | clean: 49 | @set -e ; for d in $(DIRS) ; do $(MAKE) -C $$d $@ ; done 50 | $(RM) -f *.o $(TARGETS) *~ 51 | 52 | distclean: clean 53 | 54 | install-examples install_examples: $(TARGETS) 55 | @echo installing: $(TARGETS) 56 | -mkdir -p $(EXAMPLESDIR) 57 | $(INSTALL) -m 755 $(TARGETS) $(EXAMPLESDIR) 58 | @set -e ; for d in $(DIRS) ; do $(MAKE) -C $$d $@ ; done 59 | # 60 | # examples are installed as part of the RPM install, typically in /usr/share/doc/libpfm-X.Y/ 61 | # 62 | .PHONY: install depend install-example install_examples 63 | -------------------------------------------------------------------------------- /include/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P. 3 | # Contributed by Stephane Eranian 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | # of the Software, and to permit persons to whom the Software is furnished to do so, 10 | # subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in all 13 | # copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | # 22 | 23 | TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)/.. 24 | 25 | include $(TOPDIR)/config.mk 26 | include $(TOPDIR)/rules.mk 27 | 28 | HEADERS= perfmon/pfmlib.h \ 29 | perfmon/perf_event.h \ 30 | perfmon/pfmlib_perf_event.h 31 | 32 | dir: 33 | -mkdir -p $(DESTDIR)$(INCDIR)/perfmon 34 | 35 | install: dir 36 | $(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INCDIR)/perfmon 37 | 38 | .PHONY: all clean distclean depend dir 39 | -------------------------------------------------------------------------------- /include/perfmon/err.h: -------------------------------------------------------------------------------- 1 | /* 2 | * err.h: substitute header for compiling on Windows with MingGW 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8 | * of the Software, and to permit persons to whom the Software is furnished to do so, 9 | * subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in all 12 | * copies or substantial portions of the Software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 15 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 16 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 17 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 18 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 19 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | */ 21 | #ifndef __PFM_ERR_H__ 22 | #define __PFM_ERR_H__ 23 | 24 | #ifndef PFMLIB_WINDOWS 25 | #include 26 | #else /* PFMLIB_WINDOWS */ 27 | #define warnx(...) do { \ 28 | fprintf (stderr, __VA_ARGS__); \ 29 | fprintf (stderr, "\n"); \ 30 | } while (0) 31 | 32 | #define errx(code, ...) do { \ 33 | fprintf (stderr, __VA_ARGS__); \ 34 | fprintf (stderr, "\n"); \ 35 | exit (code); \ 36 | } while (0) 37 | 38 | #define err(code, ...) do { \ 39 | fprintf (stderr, __VA_ARGS__); \ 40 | fprintf (stderr, " : %s\n", strerror(errno)); \ 41 | exit (code); \ 42 | } while (0) 43 | #endif 44 | 45 | #endif /* __PFM_ERR_H__ */ 46 | -------------------------------------------------------------------------------- /lib/events/amd64_events_fam1ah_zen5_l3.h: -------------------------------------------------------------------------------- 1 | #include "../pfmlib_amd64_priv.h" 2 | #include "../pfmlib_priv.h" 3 | /* 4 | * Copyright (C) 2024 Advanced Micro Devices, Inc. All rights reserved. 5 | * Contributed by Swarup Sahoo 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | * 24 | * This file is part of libpfm, a performance monitoring support library for 25 | * applications on Linux. 26 | * 27 | * PMU: amd64_fam1ah_zen5_l3 (AMD64 Fam1Ah Zen3 L3) 28 | */ 29 | 30 | static const amd64_umask_t amd64_fam1ah_zen5_l3_requests[]={ 31 | { .uname = "L3_MISS", 32 | .udesc = "L3 miss", 33 | .ucode = 0x1, 34 | }, 35 | { .uname = "L3_HIT", 36 | .udesc = "L3 hit", 37 | .ucode = 0xfe, 38 | }, 39 | { .uname = "ALL", 40 | .udesc = "All types of requests", 41 | .ucode = 0xff, 42 | .uflags = AMD64_FL_NCOMBO | AMD64_FL_DFL, 43 | }, 44 | }; 45 | 46 | static const amd64_entry_t amd64_fam1ah_zen5_l3_pe[]={ 47 | { .name = "UNC_L3_REQUESTS", 48 | .desc = "Number of requests to L3 cache", 49 | .code = 0x04, 50 | .ngrp = 1, 51 | .numasks = LIBPFM_ARRAY_SIZE(amd64_fam1ah_zen5_l3_requests), 52 | .umasks = amd64_fam1ah_zen5_l3_requests, 53 | }, 54 | }; 55 | -------------------------------------------------------------------------------- /lib/events/arm_qcom_krait_events.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 by Vince Weaver 3 | * 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy 5 | * of this software and associated documentation files (the "Software"), to deal 6 | * in the Software without restriction, including without limitation the rights 7 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 8 | * of the Software, and to permit persons to whom the Software is furnished to do so, 9 | * subject to the following conditions: 10 | * 11 | * The above copyright notice and this permission notice shall be included in all 12 | * copies or substantial portions of the Software. 13 | * 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 15 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 16 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 17 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 18 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 19 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 20 | * 21 | * Qualcomm Krait Chips 22 | * based on info in the thread on linux-kernel: 23 | * [PATCH 0/7] Support Krait CPU PMUs 24 | */ 25 | static const arm_entry_t arm_qcom_krait_pe[]={ 26 | {.name = "L1D_CACHE_REFILL", 27 | .modmsk = ARMV7_A15_ATTRS, 28 | .code = 0x03, 29 | .desc = "Level 1 data cache refill" 30 | }, 31 | {.name = "L1D_CACHE_ACCESS", 32 | .modmsk = ARMV7_A15_ATTRS, 33 | .code = 0x04, 34 | .desc = "Level 1 data cache access" 35 | }, 36 | {.name = "INSTR_EXECUTED", 37 | .modmsk = ARMV7_A15_ATTRS, 38 | .code = 0x08, 39 | .desc = "Instructions architecturally executed" 40 | }, 41 | {.name = "PC_WRITE", 42 | .modmsk = ARMV7_A15_ATTRS, 43 | .code = 0x0c, 44 | .desc = "Software change of PC. Equivalent to branches" 45 | }, 46 | {.name = "PC_BRANCH_MIS_PRED", 47 | .modmsk = ARMV7_A15_ATTRS, 48 | .code = 0x10, 49 | .desc = "Branches mispredicted or not predicted" 50 | }, 51 | {.name = "CLOCK_CYCLES", 52 | .modmsk = ARMV7_A15_ATTRS, 53 | .code = 0x11, 54 | .desc = "Cycles" 55 | }, 56 | {.name = "BRANCH_PRED", 57 | .modmsk = ARMV7_A15_ATTRS, 58 | .code = 0x12, 59 | .desc = "Predictable branch speculatively executed" 60 | }, 61 | {.name = "CPU_CYCLES", 62 | .modmsk = ARMV7_A15_ATTRS, 63 | .code = 0xff, 64 | .desc = "Cycles" 65 | }, 66 | }; 67 | -------------------------------------------------------------------------------- /lib/events/powerpc_events.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Permission is hereby granted, free of charge, to any person obtaining a 3 | * copy of this software and associated documentation files (the "Software"), 4 | * to deal in the Software without restriction, including without limitation 5 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 6 | * and/or sell copies of the Software, and to permit persons to whom the 7 | * Software is furnished to do so, subject to the following conditions: 8 | * 9 | * The above copyright notice and this permission notice shall be included in 10 | * all copies or substantial portions of the Software. 11 | * 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 13 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 14 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 15 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 16 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 17 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 18 | * IN THE SOFTWARE. 19 | * 20 | * powerpc_events.h 21 | */ 22 | 23 | #ifndef _POWERPC_EVENTS_H_ 24 | #define _POWERPC_EVENTS_H_ 25 | 26 | #define PME_INSTR_COMPLETED 1 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /lib/events/powerpc_nest_events.h: -------------------------------------------------------------------------------- 1 | #ifndef __POWERPC_NEST_EVENTS_H__ 2 | #define __POWERPC_NEST_EVENTS_H__ 3 | 4 | #define POWERPC_PME_NEST_MCS_00 0 5 | #define POWERPC_PME_NEST_MCS_01 1 6 | #define POWERPC_PME_NEST_MCS_02 2 7 | #define POWERPC_PME_NEST_MCS_03 3 8 | 9 | static const pme_power_entry_t powerpc_nest_read_pe[] = { 10 | [ POWERPC_PME_NEST_MCS_00 ] = { 11 | .pme_name = "MCS_00", 12 | .pme_code = 0x118, 13 | .pme_short_desc = "Total Read Bandwidth seen on both MCS of MC0", 14 | .pme_long_desc = "Total Read Bandwidth seen on both MCS of MC0", 15 | }, 16 | [ POWERPC_PME_NEST_MCS_01 ] = { 17 | .pme_name = "MCS_01", 18 | .pme_code = 0x120, 19 | .pme_short_desc = "Total Read Bandwidth seen on both MCS of MC1", 20 | .pme_long_desc = "Total Read Bandwidth seen on both MCS of MC1", 21 | }, 22 | [ POWERPC_PME_NEST_MCS_02 ] = { 23 | .pme_name = "MCS_02", 24 | .pme_code = 0x128, 25 | .pme_short_desc = "Total Read Bandwidth seen on both MCS of MC2", 26 | .pme_long_desc = "Total Read Bandwidth seen on both MCS of MC2", 27 | }, 28 | [ POWERPC_PME_NEST_MCS_03 ] = { 29 | .pme_name = "MCS_03", 30 | .pme_code = 0x130, 31 | .pme_short_desc = "Total Read Bandwidth seen on both MCS of MC3", 32 | .pme_long_desc = "Total Read Bandwidth seen on both MCS of MC3", 33 | }, 34 | }; 35 | 36 | static const pme_power_entry_t powerpc_nest_write_pe[] = { 37 | [ POWERPC_PME_NEST_MCS_00 ] = { 38 | .pme_name = "MCS_00", 39 | .pme_code = 0x198, 40 | .pme_short_desc = "Total Write Bandwidth seen on both MCS of MC0", 41 | .pme_long_desc = "Total Write Bandwidth seen on both MCS of MC0", 42 | }, 43 | [ POWERPC_PME_NEST_MCS_01 ] = { 44 | .pme_name = "MCS_01", 45 | .pme_code = 0x1a0, 46 | .pme_short_desc = "Total Write Bandwidth seen on both MCS of MC1", 47 | .pme_long_desc = "Total Write Bandwidth seen on both MCS of MC1", 48 | }, 49 | [ POWERPC_PME_NEST_MCS_02 ] = { 50 | .pme_name = "MCS_02", 51 | .pme_code = 0x1a8, 52 | .pme_short_desc = "Total Write Bandwidth seen on both MCS of MC2", 53 | .pme_long_desc = "Total Write Bandwidth seen on both MCS of MC2", 54 | }, 55 | [ POWERPC_PME_NEST_MCS_03 ] = { 56 | .pme_name = "MCS_03", 57 | .pme_code = 0x1b0, 58 | .pme_short_desc = "Total Write Bandwidth seen on both MCS of MC3", 59 | .pme_long_desc = "Total Write Bandwidth seen on both MCS of MC3", 60 | }, 61 | }; 62 | #endif 63 | -------------------------------------------------------------------------------- /lib/events/sparc_niagara1_events.h: -------------------------------------------------------------------------------- 1 | static const sparc_entry_t niagara1_pe[] = { 2 | /* PIC1 Niagara-1 events */ 3 | { .name = "Instr_cnt", 4 | .desc = "Number of instructions completed", 5 | .ctrl = PME_CTRL_S1, 6 | .code = 0x0, 7 | }, 8 | 9 | /* PIC0 Niagara-1 events */ 10 | { .name = "SB_full", 11 | .desc = "Store-buffer full", 12 | .ctrl = PME_CTRL_S0, 13 | .code = 0x0, 14 | }, 15 | { .name = "FP_instr_cnt", 16 | .desc = "FPU instructions", 17 | .ctrl = PME_CTRL_S0, 18 | .code = 0x1, 19 | }, 20 | { .name = "IC_miss", 21 | .desc = "I-cache miss", 22 | .ctrl = PME_CTRL_S0, 23 | .code = 0x2, 24 | }, 25 | { .name = "DC_miss", 26 | .desc = "D-cache miss", 27 | .ctrl = PME_CTRL_S0, 28 | .code = 0x3, 29 | }, 30 | { .name = "ITLB_miss", 31 | .desc = "I-TLB miss", 32 | .ctrl = PME_CTRL_S0, 33 | .code = 0x4, 34 | }, 35 | { .name = "DTLB_miss", 36 | .desc = "D-TLB miss", 37 | .ctrl = PME_CTRL_S0, 38 | .code = 0x5, 39 | }, 40 | { .name = "L2_imiss", 41 | .desc = "E-cache instruction fetch miss", 42 | .ctrl = PME_CTRL_S0, 43 | .code = 0x6, 44 | }, 45 | { .name = "L2_dmiss_ld", 46 | .desc = "E-cache data load miss", 47 | .ctrl = PME_CTRL_S0, 48 | .code = 0x7, 49 | }, 50 | 51 | }; 52 | #define PME_SPARC_NIAGARA1_EVENT_COUNT (sizeof(niagara1_pe)/sizeof(sparc_entry_t)) 53 | -------------------------------------------------------------------------------- /lib/pfmlib_amd64_fam16h.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_amd64_fam16h.c : AMD64 Family 16h 3 | * 4 | * Copyright (c) 2017 by Vince Weaver 5 | * 6 | * Permission is hereby granted, free of charge, to any person obtaining a copy 7 | * of this software and associated documentation files (the "Software"), to deal 8 | * in the Software without restriction, including without limitation the rights 9 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 10 | * of the Software, and to permit persons to whom the Software is furnished to do so, 11 | * subject to the following conditions: 12 | * 13 | * The above copyright notice and this permission notice shall be included in all 14 | * copies or substantial portions of the Software. 15 | * 16 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 17 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 18 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 20 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 21 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | * 23 | */ 24 | 25 | /* private headers */ 26 | #include "pfmlib_priv.h" 27 | #include "pfmlib_amd64_priv.h" 28 | #include "events/amd64_events_fam16h.h" 29 | 30 | pfmlib_pmu_t amd64_fam16h_support={ 31 | .desc = "AMD64 Fam16h Jaguar", 32 | .name = "amd64_fam16h", 33 | .pmu = PFM_PMU_AMD64_FAM16H, 34 | .pmu_rev = AMD64_FAM16H, 35 | .pme_count = LIBPFM_ARRAY_SIZE(amd64_fam16h_pe), 36 | .type = PFM_PMU_TYPE_CORE, 37 | .supported_plm = AMD64_FAM10H_PLM, 38 | .num_cntrs = 4, 39 | .max_encoding = 1, 40 | .pe = amd64_fam16h_pe, 41 | .atdesc = amd64_mods, 42 | .flags = PFMLIB_PMU_FL_RAW_UMASK, 43 | .cpu_family = PFM_PMU_AMD64_FAM16H, 44 | .pmu_detect = pfm_amd64_family_detect, 45 | .get_event_encoding[PFM_OS_NONE] = pfm_amd64_get_encoding, 46 | PFMLIB_ENCODE_PERF(pfm_amd64_get_perf_encoding), 47 | .get_event_first = pfm_amd64_get_event_first, 48 | .get_event_next = pfm_amd64_get_event_next, 49 | .event_is_valid = pfm_amd64_event_is_valid, 50 | .validate_table = pfm_amd64_validate_table, 51 | .get_event_info = pfm_amd64_get_event_info, 52 | .get_event_attr_info = pfm_amd64_get_event_attr_info, 53 | PFMLIB_VALID_PERF_PATTRS(pfm_amd64_perf_validate_pattrs), 54 | .get_event_nattrs = pfm_amd64_get_event_nattrs, 55 | }; 56 | -------------------------------------------------------------------------------- /lib/pfmlib_amd64_k7.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_amd64_k7.c : AMD64 K7 3 | * 4 | * Copyright (c) 2010 Google, Inc 5 | * Contributed by Stephane Eranian 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | * 24 | */ 25 | 26 | /* private headers */ 27 | #include "pfmlib_priv.h" 28 | #include "pfmlib_amd64_priv.h" 29 | #include "events/amd64_events_k7.h" 30 | 31 | 32 | pfmlib_pmu_t amd64_k7_support={ 33 | .desc = "AMD64 K7", 34 | .name = "amd64_k7", 35 | .pmu = PFM_PMU_AMD64_K7, 36 | .pmu_rev = AMD64_K7, 37 | .pme_count = LIBPFM_ARRAY_SIZE(amd64_k7_pe), 38 | .type = PFM_PMU_TYPE_CORE, 39 | .supported_plm = AMD64_K7_PLM, 40 | .num_cntrs = 4, 41 | .max_encoding = 1, 42 | .pe = amd64_k7_pe, 43 | .atdesc = amd64_mods, 44 | .flags = PFMLIB_PMU_FL_RAW_UMASK, 45 | 46 | .cpu_family = PFM_PMU_AMD64_K7, 47 | .pmu_detect = pfm_amd64_family_detect, 48 | 49 | .get_event_encoding[PFM_OS_NONE] = pfm_amd64_get_encoding, 50 | PFMLIB_ENCODE_PERF(pfm_amd64_get_perf_encoding), 51 | 52 | .get_event_first = pfm_amd64_get_event_first, 53 | .get_event_next = pfm_amd64_get_event_next, 54 | .event_is_valid = pfm_amd64_event_is_valid, 55 | .validate_table = pfm_amd64_validate_table, 56 | .get_event_info = pfm_amd64_get_event_info, 57 | .get_event_attr_info = pfm_amd64_get_event_attr_info, 58 | PFMLIB_VALID_PERF_PATTRS(pfm_amd64_perf_validate_pattrs), 59 | .get_event_nattrs = pfm_amd64_get_event_nattrs, 60 | }; 61 | -------------------------------------------------------------------------------- /lib/pfmlib_arm_armv8_thunderx2_unc_perf_event.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | /* private headers */ 9 | #include "pfmlib_priv.h" 10 | #include "pfmlib_perf_event_priv.h" 11 | #include "pfmlib_arm_priv.h" 12 | #include "pfmlib_arm_armv8_unc_priv.h" 13 | 14 | static int 15 | find_pmu_type_by_name(const char *name) 16 | { 17 | char filename[PATH_MAX]; 18 | FILE *fp; 19 | int ret, type; 20 | 21 | if (!name) 22 | return PFM_ERR_NOTSUPP; 23 | 24 | sprintf(filename, "/sys/bus/event_source/devices/%s/type", name); 25 | 26 | fp = fopen(filename, "r"); 27 | if (!fp) 28 | return PFM_ERR_NOTSUPP; 29 | 30 | ret = fscanf(fp, "%d", &type); 31 | if (ret != 1) 32 | type = PFM_ERR_NOTSUPP; 33 | 34 | fclose(fp); 35 | 36 | return type; 37 | } 38 | 39 | int 40 | pfm_tx2_unc_get_perf_encoding(void *this, pfmlib_event_desc_t *e) 41 | { 42 | pfmlib_pmu_t *pmu = this; 43 | struct perf_event_attr *attr = e->os_data; 44 | tx2_unc_data_t reg; 45 | int ret; 46 | 47 | if (!pmu->get_event_encoding[PFM_OS_NONE]) 48 | return PFM_ERR_NOTSUPP; 49 | 50 | ret = pmu->get_event_encoding[PFM_OS_NONE](this, e); 51 | if (ret != PFM_SUCCESS) 52 | return ret; 53 | //get pmu type to probe 54 | ret = find_pmu_type_by_name(pmu->perf_name); 55 | if (ret < 0) 56 | return ret; 57 | 58 | attr->type = ret; 59 | //get code to provide to the uncore pmu probe 60 | reg.val = e->codes[0]; 61 | attr->config = reg.val; 62 | 63 | // if needed, can use attr->config1 or attr->config2 for extra info from event structure defines e->codes[i] 64 | 65 | // uncore measures at all priv levels 66 | attr->exclude_hv = 0; 67 | attr->exclude_kernel = 0; 68 | attr->exclude_user = 0; 69 | 70 | return PFM_SUCCESS; 71 | } 72 | -------------------------------------------------------------------------------- /lib/pfmlib_arm_armv8_unc_priv.h: -------------------------------------------------------------------------------- 1 | #ifndef PFMLIB_ARM_ARMV8_UNC_PRIV_H 2 | #define PFMLIB_ARM_ARMV8_UNC_PRIV_H 3 | 4 | #include 5 | 6 | typedef union { 7 | uint64_t val; 8 | struct { 9 | unsigned long unc_res1:32; /* reserved */ 10 | } com; /* reserved space for future extensions */ 11 | } tx2_unc_data_t; 12 | 13 | typedef struct { 14 | uint64_t val; 15 | } kunpeng_unc_data_t; 16 | 17 | extern int pfm_tx2_unc_get_perf_encoding(void *this, pfmlib_event_desc_t *e); 18 | 19 | //extern int pfm_kunpeng_get_perf_encoding(void *this, pfmlib_event_desc_t *e); 20 | 21 | extern int pfm_kunpeng_unc_get_event_encoding(void *this, pfmlib_event_desc_t *e); 22 | extern int pfm_kunpeng_unc_get_perf_encoding(void *this, pfmlib_event_desc_t *e); 23 | #endif /* PFMLIB_ARM_ARMV8_UNC_PRIV_H */ 24 | -------------------------------------------------------------------------------- /lib/pfmlib_power10.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_power10.c : IBM Power10 support 3 | * 4 | * Copyright (C) IBM Corporation, 2020. All rights reserved. 5 | * Contributed by Will Schmidt (will_schmidt@vnet.ibm.com) 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | /* private headers */ 25 | #include "pfmlib_priv.h" 26 | #include "pfmlib_power_priv.h" 27 | #include "events/power10_events.h" 28 | 29 | static int 30 | pfm_power10_detect(void* this) 31 | { 32 | if (__is_processor(PV_POWER10)) 33 | return PFM_SUCCESS; 34 | return PFM_ERR_NOTSUPP; 35 | } 36 | 37 | pfmlib_pmu_t power10_support={ 38 | .desc = "POWER10", 39 | .name = "power10", 40 | .pmu = PFM_PMU_POWER10, 41 | .pme_count = LIBPFM_ARRAY_SIZE(power10_pe), 42 | .type = PFM_PMU_TYPE_CORE, 43 | .supported_plm = POWER10_PLM, 44 | .num_cntrs = 4, 45 | .num_fixed_cntrs = 2, 46 | .max_encoding = 1, 47 | .pe = power10_pe, 48 | .pmu_detect = pfm_power10_detect, 49 | .get_event_encoding[PFM_OS_NONE] = pfm_gen_powerpc_get_encoding, 50 | PFMLIB_ENCODE_PERF(pfm_gen_powerpc_get_perf_encoding), 51 | PFMLIB_VALID_PERF_PATTRS(pfm_gen_powerpc_perf_validate_pattrs), 52 | .get_event_first = pfm_gen_powerpc_get_event_first, 53 | .get_event_next = pfm_gen_powerpc_get_event_next, 54 | .event_is_valid = pfm_gen_powerpc_event_is_valid, 55 | .validate_table = pfm_gen_powerpc_validate_table, 56 | .get_event_info = pfm_gen_powerpc_get_event_info, 57 | .get_event_attr_info = pfm_gen_powerpc_get_event_attr_info, 58 | }; 59 | 60 | -------------------------------------------------------------------------------- /lib/pfmlib_power4.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_power4.c : IBM Power4 support 3 | * 4 | * Copyright (C) IBM Corporation, 2009. All rights reserved. 5 | * Contributed by Corey Ashford (cjashfor@us.ibm.com) 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | /* private headers */ 25 | #include "pfmlib_priv.h" 26 | #include "pfmlib_power_priv.h" 27 | #include "events/power4_events.h" 28 | 29 | static int 30 | pfm_power4_detect(void* this) 31 | { 32 | if (__is_processor(PV_POWER4) || __is_processor(PV_POWER4p)) 33 | return PFM_SUCCESS; 34 | 35 | return PFM_ERR_NOTSUPP; 36 | } 37 | 38 | pfmlib_pmu_t power4_support={ 39 | .desc = "POWER4", 40 | .name = "power4", 41 | .pmu = PFM_PMU_POWER4, 42 | .pme_count = LIBPFM_ARRAY_SIZE(power4_pe), 43 | .type = PFM_PMU_TYPE_CORE, 44 | .num_cntrs = 8, 45 | .max_encoding = 1, 46 | .pe = power4_pe, 47 | .pmu_detect = pfm_power4_detect, 48 | .get_event_encoding[PFM_OS_NONE] = pfm_gen_powerpc_get_encoding, 49 | PFMLIB_ENCODE_PERF(pfm_gen_powerpc_get_perf_encoding), 50 | PFMLIB_VALID_PERF_PATTRS(pfm_gen_powerpc_perf_validate_pattrs), 51 | .get_event_first = pfm_gen_powerpc_get_event_first, 52 | .get_event_next = pfm_gen_powerpc_get_event_next, 53 | .event_is_valid = pfm_gen_powerpc_event_is_valid, 54 | .validate_table = pfm_gen_powerpc_validate_table, 55 | .get_event_info = pfm_gen_powerpc_get_event_info, 56 | .get_event_attr_info = pfm_gen_powerpc_get_event_attr_info, 57 | }; 58 | -------------------------------------------------------------------------------- /lib/pfmlib_power6.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_power6.c : IBM Power6 support 3 | * 4 | * Copyright (C) IBM Corporation, 2009. All rights reserved. 5 | * Contributed by Corey Ashford (cjashfor@us.ibm.com) 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | /* private headers */ 25 | #include "pfmlib_priv.h" 26 | #include "pfmlib_power_priv.h" 27 | #include "events/power6_events.h" 28 | 29 | static int 30 | pfm_power6_detect(void* this) 31 | { 32 | if (__is_processor(PV_POWER6)) 33 | return PFM_SUCCESS; 34 | return PFM_ERR_NOTSUPP; 35 | } 36 | 37 | pfmlib_pmu_t power6_support={ 38 | .desc = "POWER6", 39 | .name = "power6", 40 | .pmu = PFM_PMU_POWER6, 41 | .pme_count = LIBPFM_ARRAY_SIZE(power6_pe), 42 | .type = PFM_PMU_TYPE_CORE, 43 | .num_cntrs = 4, 44 | .num_fixed_cntrs = 2, 45 | .max_encoding = 1, 46 | .pe = power6_pe, 47 | .pmu_detect = pfm_power6_detect, 48 | .get_event_encoding[PFM_OS_NONE] = pfm_gen_powerpc_get_encoding, 49 | PFMLIB_ENCODE_PERF(pfm_gen_powerpc_get_perf_encoding), 50 | PFMLIB_VALID_PERF_PATTRS(pfm_gen_powerpc_perf_validate_pattrs), 51 | .get_event_first = pfm_gen_powerpc_get_event_first, 52 | .get_event_next = pfm_gen_powerpc_get_event_next, 53 | .event_is_valid = pfm_gen_powerpc_event_is_valid, 54 | .validate_table = pfm_gen_powerpc_validate_table, 55 | .get_event_info = pfm_gen_powerpc_get_event_info, 56 | .get_event_attr_info = pfm_gen_powerpc_get_event_attr_info, 57 | }; 58 | -------------------------------------------------------------------------------- /lib/pfmlib_power7.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_power7.c : IBM Power7 support 3 | * 4 | * Copyright (C) IBM Corporation, 2009. All rights reserved. 5 | * Contributed by Corey Ashford (cjashfor@us.ibm.com) 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | /* private headers */ 25 | #include "pfmlib_priv.h" 26 | #include "pfmlib_power_priv.h" 27 | #include "events/power7_events.h" 28 | 29 | static int 30 | pfm_power7_detect(void* this) 31 | { 32 | if (__is_processor(PV_POWER7) || __is_processor(PV_POWER7p)) 33 | return PFM_SUCCESS; 34 | return PFM_ERR_NOTSUPP; 35 | } 36 | 37 | pfmlib_pmu_t power7_support={ 38 | .desc = "POWER7", 39 | .name = "power7", 40 | .pmu = PFM_PMU_POWER7, 41 | .pme_count = LIBPFM_ARRAY_SIZE(power7_pe), 42 | .type = PFM_PMU_TYPE_CORE, 43 | .num_cntrs = 4, 44 | .num_fixed_cntrs = 2, 45 | .max_encoding = 1, 46 | .pe = power7_pe, 47 | .pmu_detect = pfm_power7_detect, 48 | .get_event_encoding[PFM_OS_NONE] = pfm_gen_powerpc_get_encoding, 49 | PFMLIB_ENCODE_PERF(pfm_gen_powerpc_get_perf_encoding), 50 | PFMLIB_VALID_PERF_PATTRS(pfm_gen_powerpc_perf_validate_pattrs), 51 | .get_event_first = pfm_gen_powerpc_get_event_first, 52 | .get_event_next = pfm_gen_powerpc_get_event_next, 53 | .event_is_valid = pfm_gen_powerpc_event_is_valid, 54 | .validate_table = pfm_gen_powerpc_validate_table, 55 | .get_event_info = pfm_gen_powerpc_get_event_info, 56 | .get_event_attr_info = pfm_gen_powerpc_get_event_attr_info, 57 | }; 58 | -------------------------------------------------------------------------------- /lib/pfmlib_power8.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_power8.c : IBM Power8 support 3 | * 4 | * Copyright (C) IBM Corporation, 2013-2016. All rights reserved. 5 | * Contributed by Carl Love (carll@us.ibm.com) 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | /* private headers */ 25 | #include "pfmlib_priv.h" 26 | #include "pfmlib_power_priv.h" 27 | #include "events/power8_events.h" 28 | 29 | static int 30 | pfm_power8_detect(void* this) 31 | { 32 | if (__is_processor(PV_POWER8) || 33 | __is_processor(PV_POWER8E) || 34 | __is_processor(PV_POWER8NVL)) 35 | return PFM_SUCCESS; 36 | return PFM_ERR_NOTSUPP; 37 | } 38 | 39 | pfmlib_pmu_t power8_support={ 40 | .desc = "POWER8", 41 | .name = "power8", 42 | .pmu = PFM_PMU_POWER8, 43 | .pme_count = LIBPFM_ARRAY_SIZE(power8_pe), 44 | .type = PFM_PMU_TYPE_CORE, 45 | .supported_plm = POWER8_PLM, 46 | .num_cntrs = 4, 47 | .num_fixed_cntrs = 2, 48 | .max_encoding = 1, 49 | .pe = power8_pe, 50 | .pmu_detect = pfm_power8_detect, 51 | .get_event_encoding[PFM_OS_NONE] = pfm_gen_powerpc_get_encoding, 52 | PFMLIB_ENCODE_PERF(pfm_gen_powerpc_get_perf_encoding), 53 | PFMLIB_VALID_PERF_PATTRS(pfm_gen_powerpc_perf_validate_pattrs), 54 | .get_event_first = pfm_gen_powerpc_get_event_first, 55 | .get_event_next = pfm_gen_powerpc_get_event_next, 56 | .event_is_valid = pfm_gen_powerpc_event_is_valid, 57 | .validate_table = pfm_gen_powerpc_validate_table, 58 | .get_event_info = pfm_gen_powerpc_get_event_info, 59 | .get_event_attr_info = pfm_gen_powerpc_get_event_attr_info, 60 | }; 61 | -------------------------------------------------------------------------------- /lib/pfmlib_power9.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_power9.c : IBM Power9 support 3 | * 4 | * Copyright (C) IBM Corporation, 2017. All rights reserved. 5 | * Contributed by Will Schmidt (will_schmidt@vnet.ibm.com) 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | /* private headers */ 25 | #include "pfmlib_priv.h" 26 | #include "pfmlib_power_priv.h" 27 | #include "events/power9_events.h" 28 | 29 | static int 30 | pfm_power9_detect(void* this) 31 | { 32 | if (__is_processor(PV_POWER9)) 33 | return PFM_SUCCESS; 34 | return PFM_ERR_NOTSUPP; 35 | } 36 | 37 | pfmlib_pmu_t power9_support={ 38 | .desc = "POWER9", 39 | .name = "power9", 40 | .pmu = PFM_PMU_POWER9, 41 | .pme_count = LIBPFM_ARRAY_SIZE(power9_pe), 42 | .type = PFM_PMU_TYPE_CORE, 43 | .supported_plm = POWER9_PLM, 44 | .num_cntrs = 4, 45 | .num_fixed_cntrs = 2, 46 | .max_encoding = 1, 47 | .pe = power9_pe, 48 | .pmu_detect = pfm_power9_detect, 49 | .get_event_encoding[PFM_OS_NONE] = pfm_gen_powerpc_get_encoding, 50 | PFMLIB_ENCODE_PERF(pfm_gen_powerpc_get_perf_encoding), 51 | PFMLIB_VALID_PERF_PATTRS(pfm_gen_powerpc_perf_validate_pattrs), 52 | .get_event_first = pfm_gen_powerpc_get_event_first, 53 | .get_event_next = pfm_gen_powerpc_get_event_next, 54 | .event_is_valid = pfm_gen_powerpc_event_is_valid, 55 | .validate_table = pfm_gen_powerpc_validate_table, 56 | .get_event_info = pfm_gen_powerpc_get_event_info, 57 | .get_event_attr_info = pfm_gen_powerpc_get_event_attr_info, 58 | }; 59 | -------------------------------------------------------------------------------- /lib/pfmlib_s390x_priv.h: -------------------------------------------------------------------------------- 1 | #ifndef __PFMLIB_S390X_PRIV_H__ 2 | #define __PFMLIB_S390X_PRIV_H__ 3 | 4 | #define CPUMF_COUNTER_MAX 0xffff 5 | typedef struct { 6 | uint64_t ctrnum; /* counter number */ 7 | unsigned int ctrset; /* counter set */ 8 | char *name; /* counter ID */ 9 | char *desc; /* short description */ 10 | } pme_cpumf_ctr_t; 11 | 12 | #define min(a, b) ((a) < (b) ? (a) : (b)) 13 | extern int pfm_s390x_get_perf_encoding(void *this, pfmlib_event_desc_t *e); 14 | extern void pfm_s390x_perf_validate_pattrs(void *this, pfmlib_event_desc_t *e); 15 | 16 | #endif /* __PFMLIB_S390X_PRIV_H__ */ 17 | -------------------------------------------------------------------------------- /lib/pfmlib_sparc_priv.h: -------------------------------------------------------------------------------- 1 | #ifndef __PFMLIB_SPARC_PRIV_H__ 2 | #define __PFMLIB_SPARC_PRIV_H__ 3 | 4 | typedef struct { 5 | char *uname; /* mask name */ 6 | char *udesc; /* mask description */ 7 | int ubit; /* umask bit position */ 8 | } sparc_mask_t; 9 | 10 | #define EVENT_MASK_BITS 8 11 | typedef struct { 12 | char *name; /* event name */ 13 | char *desc; /* event description */ 14 | char ctrl; /* S0 or S1 */ 15 | char __pad; 16 | int code; /* S0/S1 encoding */ 17 | int numasks; /* number of entries in masks */ 18 | sparc_mask_t umasks[EVENT_MASK_BITS]; 19 | } sparc_entry_t; 20 | 21 | typedef union { 22 | unsigned int val; 23 | struct { 24 | unsigned int ctrl_s0 : 1; 25 | unsigned int ctrl_s1 : 1; 26 | unsigned int reserved1 : 14; 27 | unsigned int code : 8; 28 | unsigned int umask : 8; 29 | } config; 30 | } pfm_sparc_reg_t; 31 | 32 | #define PME_CTRL_S0 1 33 | #define PME_CTRL_S1 2 34 | 35 | #define SPARC_ATTR_K 0 36 | #define SPARC_ATTR_U 1 37 | #define SPARC_ATTR_H 2 38 | 39 | #define SPARC_PLM (PFM_PLM0|PFM_PLM3) 40 | #define NIAGARA2_PLM (SPARC_PLM|PFM_PLMH) 41 | 42 | extern int pfm_sparc_detect(void *this); 43 | extern int pfm_sparc_get_encoding(void *this, pfmlib_event_desc_t *e); 44 | extern int pfm_sparc_get_event_first(void *this); 45 | extern int pfm_sparc_get_event_next(void *this, int idx); 46 | extern int pfm_sparc_event_is_valid(void *this, int pidx); 47 | extern int pfm_sparc_validate_table(void *this, FILE *fp); 48 | extern int pfm_sparc_get_event_attr_info(void *this, int pidx, int attr_idx, pfmlib_event_attr_info_t *info); 49 | extern int pfm_sparc_get_event_info(void *this, int idx, pfm_event_info_t *info); 50 | extern unsigned int pfm_sparc_get_event_nattrs(void *this, int pidx); 51 | 52 | extern void pfm_sparc_perf_validate_pattrs(void *this, pfmlib_event_desc_t *e); 53 | extern int pfm_sparc_get_perf_encoding(void *this, pfmlib_event_desc_t *e); 54 | #endif /* __PFMLIB_SPARC_PRIV_H__ */ 55 | -------------------------------------------------------------------------------- /lib/pfmlib_sparc_ultra12.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_sparc_ultra12.c : SPARC Ultra I, II 3 | * 4 | * Copyright (c) 2011 Google, Inc 5 | * Contributed by Stephane Eranian 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | * 24 | * Core PMU = architectural perfmon v2 + PEBS 25 | */ 26 | 27 | /* private headers */ 28 | #include "pfmlib_priv.h" 29 | #include "pfmlib_sparc_priv.h" 30 | #include "events/sparc_ultra12_events.h" 31 | 32 | pfmlib_pmu_t sparc_ultra12_support={ 33 | .desc = "Ultra Sparc I/II", 34 | .name = "ultra12", 35 | .pmu = PFM_PMU_SPARC_ULTRA12, 36 | .pme_count = LIBPFM_ARRAY_SIZE(ultra12_pe), 37 | .type = PFM_PMU_TYPE_CORE, 38 | .supported_plm = SPARC_PLM, 39 | .max_encoding = 2, 40 | .num_cntrs = 2, 41 | .pe = ultra12_pe, 42 | .atdesc = NULL, 43 | .flags = 0, 44 | 45 | .pmu_detect = pfm_sparc_detect, 46 | .get_event_encoding[PFM_OS_NONE] = pfm_sparc_get_encoding, 47 | PFMLIB_ENCODE_PERF(pfm_sparc_get_perf_encoding), 48 | .get_event_first = pfm_sparc_get_event_first, 49 | .get_event_next = pfm_sparc_get_event_next, 50 | .event_is_valid = pfm_sparc_event_is_valid, 51 | .validate_table = pfm_sparc_validate_table, 52 | .get_event_info = pfm_sparc_get_event_info, 53 | .get_event_attr_info = pfm_sparc_get_event_attr_info, 54 | PFMLIB_VALID_PERF_PATTRS(pfm_sparc_perf_validate_pattrs), 55 | .get_event_nattrs = pfm_sparc_get_event_nattrs, 56 | }; 57 | -------------------------------------------------------------------------------- /lib/pfmlib_sparc_ultra4.c: -------------------------------------------------------------------------------- 1 | /* 2 | * pfmlib_sparc_ultra4.c : SPARC Ultra 4+ 3 | * 4 | * Copyright (c) 2011 Google, Inc 5 | * Contributed by Stephane Eranian 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | * of the Software, and to permit persons to whom the Software is furnished to do so, 12 | * subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in all 15 | * copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 18 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 19 | * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 21 | * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 22 | * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 | */ 24 | 25 | /* private headers */ 26 | #include "pfmlib_priv.h" 27 | #include "pfmlib_sparc_priv.h" 28 | #include "events/sparc_ultra4plus_events.h" 29 | 30 | pfmlib_pmu_t sparc_ultra4plus_support={ 31 | .desc = "Ultra Sparc 4+", 32 | .name = "ultra4p", 33 | .pmu = PFM_PMU_SPARC_ULTRA4PLUS, 34 | .pme_count = LIBPFM_ARRAY_SIZE(ultra4plus_pe), 35 | .type = PFM_PMU_TYPE_CORE, 36 | .supported_plm = SPARC_PLM, 37 | .max_encoding = 2, 38 | .num_cntrs = 2, 39 | .pe = ultra4plus_pe, 40 | .atdesc = NULL, 41 | .flags = 0, 42 | 43 | .pmu_detect = pfm_sparc_detect, 44 | .get_event_encoding[PFM_OS_NONE] = pfm_sparc_get_encoding, 45 | PFMLIB_ENCODE_PERF(pfm_sparc_get_perf_encoding), 46 | .get_event_first = pfm_sparc_get_event_first, 47 | .get_event_next = pfm_sparc_get_event_next, 48 | .event_is_valid = pfm_sparc_event_is_valid, 49 | .validate_table = pfm_sparc_validate_table, 50 | .get_event_info = pfm_sparc_get_event_info, 51 | .get_event_attr_info = pfm_sparc_get_event_attr_info, 52 | PFMLIB_VALID_PERF_PATTRS(pfm_sparc_perf_validate_pattrs), 53 | .get_event_nattrs = pfm_sparc_get_event_nattrs, 54 | }; 55 | -------------------------------------------------------------------------------- /perf_examples/x86/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P. 3 | # Contributed by Stephane Eranian 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | # of the Software, and to permit persons to whom the Software is furnished to do so, 10 | # subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in all 13 | # copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | # 22 | 23 | TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)/../.. 24 | 25 | include $(TOPDIR)/config.mk 26 | include $(TOPDIR)/rules.mk 27 | 28 | CFLAGS+= -I. -D_GNU_SOURCE -I.. 29 | LIBS += -lm 30 | 31 | ifeq ($(SYS),Linux) 32 | CFLAGS+= -pthread 33 | endif 34 | 35 | TARGETS= 36 | 37 | ifeq ($(SYS),Linux) 38 | LPC_UTILS=../perf_util.o 39 | TARGETS += bts_smpl 40 | endif 41 | 42 | EXAMPLESDIR=$(DOCDIR)/perf_examples/x86 43 | 44 | all: $(TARGETS) 45 | 46 | $(TARGETS): %:%.o $(LPC_UTILS) $(PFMLIB) 47 | $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $^ $(LIBS) 48 | 49 | clean: 50 | $(RM) -f *.o $(TARGETS) *~ 51 | 52 | distclean: clean 53 | 54 | install_examples: $(TARGETS) 55 | @echo installing: $(TARGETS) 56 | -mkdir -p $(DESTDIR)$(EXAMPLESDIR) 57 | $(INSTALL) -m 755 $(TARGETS) $(TARGET_GEN) $(DESTDIR)$(EXAMPLESDIR) 58 | @set -e ; for d in $(DIRS) ; do $(MAKE) -C $$d $@ ; done 59 | 60 | .PHONY: install depend install_examples 61 | -------------------------------------------------------------------------------- /python/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2008 Google, Inc. 3 | # Contributed by Arun Sharma 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | # of the Software, and to permit persons to whom the Software is furnished to do so, 10 | # subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in all 13 | # copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | # 22 | 23 | TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)/.. 24 | 25 | include $(TOPDIR)/config.mk 26 | include $(TOPDIR)/rules.mk 27 | 28 | PYTHON_PREFIX=$(PREFIX) 29 | 30 | all: 31 | CFLAGS="-O2 -g" ./setup.py build 32 | 33 | install: 34 | CFLAGS="-O2 -g" ./setup.py install --prefix=$(DESTDIR)$(PYTHON_PREFIX) 35 | 36 | clean: 37 | $(RM) src/perfmon_int_wrap.c src/perfmon_int.py src/*.pyc 38 | $(RM) -r build 39 | -------------------------------------------------------------------------------- /python/README: -------------------------------------------------------------------------------- 1 | Requirements: 2 | 3 | To use the python bindings, you need the following packages: 4 | 5 | 1. swig (http://www.swig.org) 6 | 2. python-dev (http://www.python.org) 7 | 3. module-linux (http://code.google.com/p/module-linux) 8 | linux.sched is python package that comes with module-linux. 9 | -------------------------------------------------------------------------------- /python/self.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright (c) 2008 Google, Inc. 4 | # Contributed by Arun Sharma 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a 7 | # copy of this software and associated documentation files (the "Software"), 8 | # to deal in the Software without restriction, including without limitation 9 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 | # and/or sell copies of the Software, and to permit persons to whom the 11 | # Software is furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included 14 | # in all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | # OTHER DEALINGS IN THE SOFTWARE. 23 | # 24 | # Self monitoring example. Copied from self.c 25 | 26 | from __future__ import print_function 27 | import os 28 | import optparse 29 | import random 30 | import errno 31 | import struct 32 | import perfmon 33 | 34 | if __name__ == '__main__': 35 | parser = optparse.OptionParser() 36 | parser.add_option("-e", "--events", help="Events to use", 37 | action="store", dest="events") 38 | parser.set_defaults(events="PERF_COUNT_HW_CPU_CYCLES") 39 | (options, args) = parser.parse_args() 40 | 41 | if options.events: 42 | events = options.events.split(",") 43 | else: 44 | raise Exception("You need to specify events to monitor") 45 | 46 | s = perfmon.PerThreadSession(int(os.getpid()), events) 47 | s.start() 48 | 49 | # code to be measured 50 | # 51 | # note that this is not identical to what examples/self.c does 52 | # thus counts will be different in the end 53 | for i in range(1, 1000000): 54 | random.random() 55 | 56 | # read the counts 57 | for i in range(0, len(events)): 58 | count = struct.unpack("L", s.read(i))[0] 59 | print("""%s\t%lu""" % (events[i], count)) 60 | -------------------------------------------------------------------------------- /python/setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from distutils.core import setup, Extension 4 | from distutils.command.install_data import install_data 5 | 6 | setup(name='perfmon', 7 | version='4.0', 8 | author='Arun Sharma', 9 | author_email='arun.sharma@google.com', 10 | description='libpfm wrapper', 11 | packages=['perfmon'], 12 | package_dir={ 'perfmon' : 'src' }, 13 | py_modules=['perfmon.perfmon_int'], 14 | ext_modules=[Extension('perfmon._perfmon_int', 15 | sources = ['src/perfmon_int.i'], 16 | libraries = ['pfm'], 17 | library_dirs = ['../lib'], 18 | include_dirs = ['../include'], 19 | swig_opts=['-I../include'])]) 20 | -------------------------------------------------------------------------------- /python/src/__init__.py: -------------------------------------------------------------------------------- 1 | from perfmon_int import * 2 | from pmu import * 3 | from session import * 4 | 5 | pfm_initialize() 6 | -------------------------------------------------------------------------------- /python/sys.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # Copyright (c) 2008 Google, Inc. 4 | # Contributed by Arun Sharma 5 | # 6 | # Permission is hereby granted, free of charge, to any person obtaining a 7 | # copy of this software and associated documentation files (the "Software"), 8 | # to deal in the Software without restriction, including without limitation 9 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 | # and/or sell copies of the Software, and to permit persons to whom the 11 | # Software is furnished to do so, subject to the following conditions: 12 | # 13 | # The above copyright notice and this permission notice shall be included 14 | # in all copies or substantial portions of the Software. 15 | # 16 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | # OTHER DEALINGS IN THE SOFTWARE. 23 | # 24 | # System wide monitoring example. Copied from syst.c 25 | # 26 | # Run as: ./sys.py -c cpulist -e eventlist 27 | 28 | from __future__ import print_function 29 | import sys 30 | import os 31 | import optparse 32 | import time 33 | import struct 34 | import perfmon 35 | 36 | if __name__ == '__main__': 37 | parser = optparse.OptionParser() 38 | parser.add_option("-e", "--events", help="Events to use", 39 | action="store", dest="events") 40 | parser.add_option("-c", "--cpulist", help="CPUs to monitor", 41 | action="store", dest="cpulist") 42 | parser.set_defaults(cpulist="0") 43 | parser.set_defaults(events="PERF_COUNT_HW_CPU_CYCLES") 44 | (options, args) = parser.parse_args() 45 | 46 | cpus = options.cpulist.split(',') 47 | cpus = [ int(c) for c in cpus ] 48 | 49 | if options.events: 50 | events = options.events.split(",") 51 | else: 52 | raise Exception("You need to specify events to monitor") 53 | 54 | s = perfmon.SystemWideSession(cpus, events) 55 | 56 | s.start() 57 | # Measuring loop 58 | while 1: 59 | time.sleep(1) 60 | # read the counts 61 | for c in cpus: 62 | for i in range(0, len(events)): 63 | count = struct.unpack("L", s.read(c, i))[0] 64 | print("""CPU%d: %s\t%lu""" % (c, events[i], count)) 65 | -------------------------------------------------------------------------------- /rules.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2002-2006 Hewlett-Packard Development Company, L.P. 3 | # Contributed by Stephane Eranian 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | # of the Software, and to permit persons to whom the Software is furnished to do so, 10 | # subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in all 13 | # copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | # 22 | # This file is part of libpfm, a performance monitoring support library for 23 | # applications on Linux/ia64. 24 | # 25 | .SUFFIXES: .c .S .o .lo .cpp 26 | 27 | .S.o: 28 | $(CC) $(CFLAGS) -c $*.S 29 | .c.o: 30 | $(CC) $(CFLAGS) -c $*.c 31 | .cpp.o: 32 | $(CXX) $(CFLAGS) -c $*.cpp 33 | .c.lo: 34 | $(CC) -fPIC -DPIC $(CFLAGS) -c $*.c -o $*.lo 35 | .S.lo: 36 | $(CC) -fPIC -DPIC $(CFLAGS) -c $*.S -o $*.lo 37 | -------------------------------------------------------------------------------- /tests/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2010 Google, Inc 3 | # Contributed by Stephane Eranian 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | # of the Software, and to permit persons to whom the Software is furnished to do so, 10 | # subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in all 13 | # copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 16 | # INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 17 | # PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 18 | # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 19 | # CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 20 | # OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | # 22 | 23 | TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)/.. 24 | 25 | include $(TOPDIR)/config.mk 26 | include $(TOPDIR)/rules.mk 27 | 28 | SRCS=validate.c 29 | 30 | ifeq ($(CONFIG_PFMLIB_ARCH_X86),y) 31 | SRCS += validate_x86.c 32 | endif 33 | 34 | ifeq ($(CONFIG_PFMLIB_ARCH_MIPS),y) 35 | SRCS += validate_mips.c 36 | endif 37 | 38 | ifeq ($(CONFIG_PFMLIB_ARCH_ARM),y) 39 | SRCS += validate_arm.c 40 | endif 41 | 42 | ifeq ($(CONFIG_PFMLIB_ARCH_ARM64),y) 43 | SRCS += validate_arm64.c 44 | endif 45 | 46 | ifeq ($(CONFIG_PFMLIB_ARCH_POWERPC),y) 47 | SRCS += validate_power.c 48 | endif 49 | 50 | ifeq ($(SYS),Linux) 51 | SRCS += validate_perf.c 52 | endif 53 | 54 | CFLAGS+= -I. -D_GNU_SOURCE 55 | LIBS += -lm 56 | 57 | ifeq ($(SYS),Linux) 58 | CFLAGS+= -pthread 59 | endif 60 | 61 | OBJS=$(SRCS:.c=.o) 62 | 63 | TARGETS=validate 64 | 65 | all: $(TARGETS) 66 | 67 | validate: $(OBJS) $(PFMLIB) 68 | $(CC) $(CFLAGS) -o $@ $(LDFLAGS) $^ $(LIBS) 69 | 70 | clean: 71 | $(RM) -f *.o $(TARGETS) *~ 72 | 73 | distclean: clean 74 | 75 | # 76 | # examples are installed as part of the RPM install, typically in /usr/share/doc/libpfm-X.Y/ 77 | # 78 | .PHONY: install depend install_examples 79 | --------------------------------------------------------------------------------