As part of this CL the /prof/kpctl interface has been changed back to split timer+profile. Documentation has been updated.
https://github.com/brho/akaros/compare/master...dlibenzi:devarch_msr_perf The following changes since commit 2fa42319139e4cc5ca853546363f84443d0ead00: Rename 'reallocarray' to 'kreallocarray'. (2015-11-25 18:02:04 -0500) are available in the git repository at: [email protected]:dlibenzi/akaros devarch_msr_perf for you to fetch changes up to 63a44bc73435826257ccef2c7174b58764204374: Added new perf utility to access CPU counters from userspace (2015-12-02 15:48:17 -0800) ---------------------------------------------------------------- Davide Libenzi (16): Added intptr_t definition and made error pointer code use them Make disable MTRRs the defaul configuration option Added ZERO_DATA() and COUNT_OF() macros to common.h Fixed the sys_proc_create API to use const pointers Added libpfm4 library support Added ability to declare local per CPU variables Drop the fake exception tables entries and use weak symbols Added error_assert() macro and used branch hinting Added API for read/write common integer sizes from/to memory Moved MSR read/write APIs out of devarch and into a dedicated file STFU useless printk messages Reverted /prof/kpctl interface to split start and timer Migrated devarch MSR access to new MSR API Added perfmon interrupt handling to allow overflow based profiling Created the new devarch perf file using the perfmon infrastructure Added new perf utility to access CPU counters from userspace Documentation/profiling.txt | 140 +- Makefile | 7 +- kern/arch/riscv/types.h | 1 + kern/arch/riscv/uaccess.h | 7 - kern/arch/x86/Kbuild | 1 + kern/arch/x86/Kconfig | 2 +- kern/arch/x86/devarch.c | 337 ++- kern/arch/x86/devarch.h | 14 +- kern/arch/x86/msr.c | 130 + kern/arch/x86/msr.h | 116 + kern/arch/x86/perfmon.c | 469 ++- kern/arch/x86/perfmon.h | 70 +- kern/arch/x86/ros/perfmon.h | 96 + kern/arch/x86/trap.c | 3 + kern/arch/x86/types.h | 1 + kern/arch/x86/uaccess.h | 7 - kern/drivers/dev/kprof.c | 11 +- kern/include/assert.h | 7 +- kern/include/error.h | 6 +- kern/include/percpu.h | 90 + kern/include/ros/common.h | 7 +- kern/include/ros/memops.h | 72 + kern/src/Kbuild | 1 + kern/src/ex_table.c | 71 +- kern/src/init.c | 2 + kern/src/percpu.c | 42 + kern/src/profiler.c | 4 - .../glibc-2.19-akaros/sysdeps/akaros/serialize.c | 4 +- tools/profile/perf/.gitignore | 1 + tools/profile/perf/Makefile | 42 + tools/profile/perf/akaros.c | 133 + tools/profile/perf/akaros.h | 48 + tools/profile/perf/perf.c | 175 ++ tools/profile/perf/perf_core.c | 618 ++++ tools/profile/perf/perf_core.h | 69 + tools/profile/perf/xlib.c | 100 + tools/profile/perf/xlib.h | 42 + user/parlib/include/parlib.h | 4 +- user/parlib/include/serialize.h | 4 +- user/parlib/syscall.c | 4 +- user/perfmon/Makefile | 4 + user/perfmon/events/amd64_events_fam10h.h | 2418 +++++++++++++++ user/perfmon/events/amd64_events_fam11h.h | 1403 +++++++++ user/perfmon/events/amd64_events_fam12h.h | 1758 +++++++++++ user/perfmon/events/amd64_events_fam14h.h | 1540 ++++++++++ user/perfmon/events/amd64_events_fam15h.h | 2298 +++++++++++++++ user/perfmon/events/amd64_events_fam15h_nb.h | 2022 +++++++++++++ user/perfmon/events/amd64_events_k7.h | 228 ++ user/perfmon/events/amd64_events_k8.h | 1307 +++++++++ user/perfmon/events/intel_atom_events.h | 1364 +++++++++ user/perfmon/events/intel_bdw_events.h | 2485 ++++++++++++++++ user/perfmon/events/intel_core_events.h | 1895 ++++++++++++ user/perfmon/events/intel_coreduo_events.h | 1229 ++++++++ user/perfmon/events/intel_hsw_events.h | 2646 +++++++++++++++++ user/perfmon/events/intel_ivb_events.h | 2354 +++++++++++++++ user/perfmon/events/intel_ivbep_unc_cbo_events.h | 981 +++++++ user/perfmon/events/intel_ivbep_unc_ha_events.h | 925 ++++++ user/perfmon/events/intel_ivbep_unc_imc_events.h | 644 ++++ user/perfmon/events/intel_ivbep_unc_irp_events.h | 267 ++ user/perfmon/events/intel_ivbep_unc_pcu_events.h | 479 +++ user/perfmon/events/intel_ivbep_unc_qpi_events.h | 696 +++++ .../perfmon/events/intel_ivbep_unc_r2pcie_events.h | 253 ++ user/perfmon/events/intel_ivbep_unc_r3qpi_events.h | 552 ++++ user/perfmon/events/intel_ivbep_unc_ubo_events.h | 101 + user/perfmon/events/intel_knc_events.h | 383 +++ user/perfmon/events/intel_netburst_events.h | 1549 ++++++++++ user/perfmon/events/intel_nhm_events.h | 2530 ++++++++++++++++ user/perfmon/events/intel_nhm_unc_events.h | 1247 ++++++++ user/perfmon/events/intel_p6_events.h | 716 +++++ user/perfmon/events/intel_pii_events.h | 656 +++++ user/perfmon/events/intel_pm_events.h | 930 ++++++ user/perfmon/events/intel_ppro_events.h | 525 ++++ user/perfmon/events/intel_slm_events.h | 896 ++++++ user/perfmon/events/intel_snb_events.h | 2445 ++++++++++++++++ user/perfmon/events/intel_snb_unc_events.h | 256 ++ user/perfmon/events/intel_snbep_events.h | 2466 ++++++++++++++++ user/perfmon/events/intel_snbep_unc_cbo_events.h | 801 +++++ user/perfmon/events/intel_snbep_unc_ha_events.h | 545 ++++ user/perfmon/events/intel_snbep_unc_imc_events.h | 344 +++ user/perfmon/events/intel_snbep_unc_pcu_events.h | 307 ++ user/perfmon/events/intel_snbep_unc_qpi_events.h | 429 +++ .../perfmon/events/intel_snbep_unc_r2pcie_events.h | 188 ++ user/perfmon/events/intel_snbep_unc_r3qpi_events.h | 323 +++ user/perfmon/events/intel_snbep_unc_ubo_events.h | 72 + user/perfmon/events/intel_wsm_events.h | 2579 ++++++++++++++++ user/perfmon/events/intel_wsm_unc_events.h | 1372 +++++++++ user/perfmon/events/intel_x86_arch_events.h | 63 + user/perfmon/events/perf_events.h | 410 +++ user/perfmon/examples/Makefile | 66 + user/perfmon/examples/check_events.c | 161 + user/perfmon/examples/showevtinfo.c | 913 ++++++ user/perfmon/include/perfmon/err.h | 45 + user/perfmon/include/perfmon/perf_event.h | 504 ++++ user/perfmon/include/perfmon/pfmlib.h | 490 ++++ user/perfmon/include/perfmon/pfmlib_perf_event.h | 64 + user/perfmon/pfmlib_amd64.c | 860 ++++++ user/perfmon/pfmlib_amd64_fam10h.c | 63 + user/perfmon/pfmlib_amd64_fam11h.c | 61 + user/perfmon/pfmlib_amd64_fam12h.c | 61 + user/perfmon/pfmlib_amd64_fam14h.c | 60 + user/perfmon/pfmlib_amd64_fam15h.c | 85 + user/perfmon/pfmlib_amd64_k7.c | 60 + user/perfmon/pfmlib_amd64_k8.c | 66 + user/perfmon/pfmlib_amd64_priv.h | 217 ++ user/perfmon/pfmlib_common.c | 1938 +++++++++++++ user/perfmon/pfmlib_intel_atom.c | 86 + user/perfmon/pfmlib_intel_bdw.c | 70 + user/perfmon/pfmlib_intel_core.c | 81 + user/perfmon/pfmlib_intel_coreduo.c | 83 + user/perfmon/pfmlib_intel_hsw.c | 109 + user/perfmon/pfmlib_intel_ivb.c | 106 + user/perfmon/pfmlib_intel_ivb_unc.c | 86 + user/perfmon/pfmlib_intel_ivbep_unc_cbo.c | 125 + user/perfmon/pfmlib_intel_ivbep_unc_ha.c | 97 + user/perfmon/pfmlib_intel_ivbep_unc_imc.c | 71 + user/perfmon/pfmlib_intel_ivbep_unc_irp.c | 79 + user/perfmon/pfmlib_intel_ivbep_unc_pcu.c | 97 + user/perfmon/pfmlib_intel_ivbep_unc_qpi.c | 85 + user/perfmon/pfmlib_intel_ivbep_unc_r2pcie.c | 61 + user/perfmon/pfmlib_intel_ivbep_unc_r3qpi.c | 65 + user/perfmon/pfmlib_intel_ivbep_unc_ubo.c | 61 + user/perfmon/pfmlib_intel_knc.c | 61 + user/perfmon/pfmlib_intel_netburst.c | 493 ++++ user/perfmon/pfmlib_intel_netburst_priv.h | 233 ++ user/perfmon/pfmlib_intel_nhm.c | 173 ++ user/perfmon/pfmlib_intel_nhm_unc.c | 348 +++ user/perfmon/pfmlib_intel_p6.c | 178 ++ user/perfmon/pfmlib_intel_rapl.c | 158 + user/perfmon/pfmlib_intel_slm.c | 76 + user/perfmon/pfmlib_intel_snb.c | 107 + user/perfmon/pfmlib_intel_snb_unc.c | 72 + user/perfmon/pfmlib_intel_snbep_unc.c | 630 ++++ user/perfmon/pfmlib_intel_snbep_unc_cbo.c | 107 + user/perfmon/pfmlib_intel_snbep_unc_ha.c | 93 + user/perfmon/pfmlib_intel_snbep_unc_imc.c | 67 + user/perfmon/pfmlib_intel_snbep_unc_pcu.c | 96 + user/perfmon/pfmlib_intel_snbep_unc_priv.h | 296 ++ user/perfmon/pfmlib_intel_snbep_unc_qpi.c | 84 + user/perfmon/pfmlib_intel_snbep_unc_r2pcie.c | 61 + user/perfmon/pfmlib_intel_snbep_unc_r3qpi.c | 64 + user/perfmon/pfmlib_intel_snbep_unc_ubo.c | 61 + user/perfmon/pfmlib_intel_wsm.c | 111 + user/perfmon/pfmlib_intel_x86.c | 1014 +++++++ user/perfmon/pfmlib_intel_x86_arch.c | 224 ++ user/perfmon/pfmlib_intel_x86_priv.h | 345 +++ user/perfmon/pfmlib_priv.h | 439 +++ user/perfmon/tests/Makefile | 74 + user/perfmon/tests/validate.c | 344 +++ user/perfmon/tests/validate_arm.c | 324 +++ user/perfmon/tests/validate_arm64.c | 208 ++ user/perfmon/tests/validate_mips.c | 224 ++ user/perfmon/tests/validate_power.c | 223 ++ user/perfmon/tests/validate_x86.c | 3064 ++++++++++++++++++++ 153 files changed, 71747 insertions(+), 220 deletions(-) create mode 100644 kern/arch/x86/msr.c create mode 100644 kern/arch/x86/msr.h create mode 100644 kern/arch/x86/ros/perfmon.h create mode 100644 kern/include/percpu.h create mode 100644 kern/include/ros/memops.h create mode 100644 kern/src/percpu.c create mode 100644 tools/profile/perf/.gitignore create mode 100644 tools/profile/perf/Makefile create mode 100644 tools/profile/perf/akaros.c create mode 100644 tools/profile/perf/akaros.h create mode 100644 tools/profile/perf/perf.c create mode 100644 tools/profile/perf/perf_core.c create mode 100644 tools/profile/perf/perf_core.h create mode 100644 tools/profile/perf/xlib.c create mode 100644 tools/profile/perf/xlib.h create mode 100644 user/perfmon/Makefile create mode 100644 user/perfmon/events/amd64_events_fam10h.h create mode 100644 user/perfmon/events/amd64_events_fam11h.h create mode 100644 user/perfmon/events/amd64_events_fam12h.h create mode 100644 user/perfmon/events/amd64_events_fam14h.h create mode 100644 user/perfmon/events/amd64_events_fam15h.h create mode 100644 user/perfmon/events/amd64_events_fam15h_nb.h create mode 100644 user/perfmon/events/amd64_events_k7.h create mode 100644 user/perfmon/events/amd64_events_k8.h create mode 100644 user/perfmon/events/intel_atom_events.h create mode 100644 user/perfmon/events/intel_bdw_events.h create mode 100644 user/perfmon/events/intel_core_events.h create mode 100644 user/perfmon/events/intel_coreduo_events.h create mode 100644 user/perfmon/events/intel_hsw_events.h create mode 100644 user/perfmon/events/intel_ivb_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_cbo_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_ha_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_imc_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_irp_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_pcu_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_qpi_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_r2pcie_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_r3qpi_events.h create mode 100644 user/perfmon/events/intel_ivbep_unc_ubo_events.h create mode 100644 user/perfmon/events/intel_knc_events.h create mode 100644 user/perfmon/events/intel_netburst_events.h create mode 100644 user/perfmon/events/intel_nhm_events.h create mode 100644 user/perfmon/events/intel_nhm_unc_events.h create mode 100644 user/perfmon/events/intel_p6_events.h create mode 100644 user/perfmon/events/intel_pii_events.h create mode 100644 user/perfmon/events/intel_pm_events.h create mode 100644 user/perfmon/events/intel_ppro_events.h create mode 100644 user/perfmon/events/intel_slm_events.h create mode 100644 user/perfmon/events/intel_snb_events.h create mode 100644 user/perfmon/events/intel_snb_unc_events.h create mode 100644 user/perfmon/events/intel_snbep_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_cbo_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_ha_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_imc_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_pcu_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_qpi_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_r2pcie_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_r3qpi_events.h create mode 100644 user/perfmon/events/intel_snbep_unc_ubo_events.h create mode 100644 user/perfmon/events/intel_wsm_events.h create mode 100644 user/perfmon/events/intel_wsm_unc_events.h create mode 100644 user/perfmon/events/intel_x86_arch_events.h create mode 100644 user/perfmon/events/perf_events.h create mode 100644 user/perfmon/examples/Makefile create mode 100644 user/perfmon/examples/check_events.c create mode 100644 user/perfmon/examples/showevtinfo.c create mode 100644 user/perfmon/include/perfmon/err.h create mode 100644 user/perfmon/include/perfmon/perf_event.h create mode 100644 user/perfmon/include/perfmon/pfmlib.h create mode 100644 user/perfmon/include/perfmon/pfmlib_perf_event.h create mode 100644 user/perfmon/pfmlib_amd64.c create mode 100644 user/perfmon/pfmlib_amd64_fam10h.c create mode 100644 user/perfmon/pfmlib_amd64_fam11h.c create mode 100644 user/perfmon/pfmlib_amd64_fam12h.c create mode 100644 user/perfmon/pfmlib_amd64_fam14h.c create mode 100644 user/perfmon/pfmlib_amd64_fam15h.c create mode 100644 user/perfmon/pfmlib_amd64_k7.c create mode 100644 user/perfmon/pfmlib_amd64_k8.c create mode 100644 user/perfmon/pfmlib_amd64_priv.h create mode 100644 user/perfmon/pfmlib_common.c create mode 100644 user/perfmon/pfmlib_intel_atom.c create mode 100644 user/perfmon/pfmlib_intel_bdw.c create mode 100644 user/perfmon/pfmlib_intel_core.c create mode 100644 user/perfmon/pfmlib_intel_coreduo.c create mode 100644 user/perfmon/pfmlib_intel_hsw.c create mode 100644 user/perfmon/pfmlib_intel_ivb.c create mode 100644 user/perfmon/pfmlib_intel_ivb_unc.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_cbo.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_ha.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_imc.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_irp.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_pcu.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_qpi.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_r2pcie.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_r3qpi.c create mode 100644 user/perfmon/pfmlib_intel_ivbep_unc_ubo.c create mode 100644 user/perfmon/pfmlib_intel_knc.c create mode 100644 user/perfmon/pfmlib_intel_netburst.c create mode 100644 user/perfmon/pfmlib_intel_netburst_priv.h create mode 100644 user/perfmon/pfmlib_intel_nhm.c create mode 100644 user/perfmon/pfmlib_intel_nhm_unc.c create mode 100644 user/perfmon/pfmlib_intel_p6.c create mode 100644 user/perfmon/pfmlib_intel_rapl.c create mode 100644 user/perfmon/pfmlib_intel_slm.c create mode 100644 user/perfmon/pfmlib_intel_snb.c create mode 100644 user/perfmon/pfmlib_intel_snb_unc.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_cbo.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_ha.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_imc.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_pcu.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_priv.h create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_qpi.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_r2pcie.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_r3qpi.c create mode 100644 user/perfmon/pfmlib_intel_snbep_unc_ubo.c create mode 100644 user/perfmon/pfmlib_intel_wsm.c create mode 100644 user/perfmon/pfmlib_intel_x86.c create mode 100644 user/perfmon/pfmlib_intel_x86_arch.c create mode 100644 user/perfmon/pfmlib_intel_x86_priv.h create mode 100644 user/perfmon/pfmlib_priv.h create mode 100644 user/perfmon/tests/Makefile create mode 100644 user/perfmon/tests/validate.c create mode 100644 user/perfmon/tests/validate_arm.c create mode 100644 user/perfmon/tests/validate_arm64.c create mode 100644 user/perfmon/tests/validate_mips.c create mode 100644 user/perfmon/tests/validate_power.c create mode 100644 user/perfmon/tests/validate_x86.c -- You received this message because you are subscribed to the Google Groups "Akaros" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. For more options, visit https://groups.google.com/d/optout.
