#
a2f733ab |
|
24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
lib: Automated cleanup of cdefs and other formatting Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row. Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/ Sponsored by: Netflix
|
#
c190fb35 |
|
06-Jun-2023 |
Mitchell Horne <mhorne@FreeBSD.org> |
pmc: better distinguish pmu-events allocation path Background: The pm_ev field of struct pmc_op_pmcallocate and struct pmc traditionally contains the index of the chosen event, corresponding to the __PMC_EVENTS array in pmc_events.h. This is a static list of events, maintained by FreeBSD. In the usual case, libpmc translates the user supplied event name (string) into the pm_ev index, which is passed as an argument to the allocation syscall. On the kernel side, the allocation method for the relevant hwpmc class translates the given index into the event code that will be written to an event selection register. In 2018, a new source of performance event definitions was introduced: the pmu-events json files, which are maintained by the Linux kernel. The result was better coverage for newer Intel processors with a reduced maintenance burden for libpmc/hwpmc. Intel and AMD CPUs were unconditionally switched to allocate events from pmu-events instead of the traditional scheme (959826ca1bb0a, 81eb4dcf9e0d). Under the pmu-events scheme, the pm_ev field contains an index corresponding to the selected event from the pmu-events table, something which the kernel has no knowledge of. The configuration for the performance counting registers is instead passed via class-dependent fields (struct pmc_md_op_pmcallocate). In 2021 I changed the allocation logic so that it would attempt to pull from the pmu-events table first, and fall-back to the traditional method (dfb4fb41166bc3). Later, pmu-events support for arm64 and power8 CPUs was added (28dd6730a5d6 and b48a2770d48b). The problem that remains is that the pm_ev field is overloaded, without a definitive way to determine whether the event allocation came from the pmu-events table or FreeBSD's statically-defined PMC events. This resulted in a recent fix, 21f7397a61f7. Change: To disambiguate these two supported but separate use-cases, add a new flag, PMC_F_EV_PMU, to be set as part of the allocation, indicating that the event index came from pmu-events. This is useful in two ways: 1. On the kernel side, we can validate the syscall arguments better. Some classes support only the traditional event scheme (e.g. hwpmc_armv7), while others support only the pmu-events method (e.g. hwpmc_core for Intel). We can now check for this. The hwpmc_arm64 class supports both methods, so the new flag supersedes the existing MD flag, PM_MD_EVENT_RAW. 2. The flag will be tracked in struct pmc for the duration of its lifetime, meaning it is communicated back to userspace. This allows libpmc to perform the reverse index-to-event-name translation without speculating about the meaning of the index value. Adding the flag is a backwards-incompatible ABI change. We recently bumped the major version of the hwpmc module, so this breakage is acceptable. Reviewed by: jkoshy MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D40753
|
#
45dcc17e |
|
19-Jun-2023 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: make pmc_pmu_pmcallocate() machine-independent Have it call the platform-dependent version. For better layering, move the reset logic inside the new function. This is mainly to facilitate an upcoming change. Reviewed by: jkoshy MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D40752
|
#
1d386b48 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
Remove $FreeBSD$: one-line .c pattern Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
21f7397a |
|
07-Jun-2023 |
Jessica Clarke <jrtc27@FreeBSD.org> |
libpmc: Handle PMCALLOCATE log with PMC code on PMU event system On an arm64 system that reports as a Cortex A72 r0p3, running pmcstat -P CPU_CYCLES command works, but pmcstat -P cpu-cycles command does not. This is because the former uses the PMU event from the JSON source, resulting in pl_event in the log event being a small index (here, 5) into the generated events table, whilst the latter does not match any of the JSON events and falls back on PMC's own tables, mapping it to the PMC event 0x14111, i.e. PMC_EV_ARMV8_EVENT_11H. Then, when libpmc gets the PMCALLOCATE event, it tries to use the event as an index into the JSON-derived table, but doing so only makes sense for the former, whilst for the latter it will go way out of bounds and either read junk (which may trigger the != NULL assertion) or segfault. As far as I can tell we don't have anything lying around to tell us which of the two cases we're in, but we can exploit the fact that the first 0x1000 PMC event codes are reserved, and that none of our PMU events tables reach that number of entries yet. PR: 268857 Reviewed by: mhorne MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D39592
|
#
be75e578 |
|
01-Jun-2023 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: expand PMC_OP* defines When performing the syscall, specify the full name of the desired operation. This improves grep-ability. No functional change. Reviewed by: jkoshy MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D40334
|
#
8e63e787 |
|
30-May-2023 |
Jessica Clarke <jrtc27@FreeBSD.org> |
pmc: Initialise and check the pm_flags field for CONFIGURELOG Whilst the former is not breaking, the latter is, and so this will be followed by a bump to the pmc major version. This will allow the flags to actually be usable in future, as otherwise we cannot distinguish uninitialised stack junk from a deliberately-initialised value. Reviewed by: jhb, mhorne Differential Revision: https://reviews.freebsd.org/D40049
|
#
4d846d26 |
|
10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause. Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
|
#
1f567956 |
|
31-Aug-2022 |
Toomas Soome <tsoome@FreeBSD.org> |
libpmc: pmc_init() should avoid overflowing pmc_class_table Use calloc(). Walk the class list we get from kernel, so we will not add something the kernel does not know about. Avoid picking headers from /usr/include. Differential Revision: https://reviews.freebsd.org/D36401
|
#
dd2fd621 |
|
26-Jun-2022 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
libpmc: attempt to fix the build Try to fix the build (blindly) after e3572eb654733a94e1e765fe9e95e0579981d851. I had missed the missing #ifdef in the review. Hope that's all it takes.
|
#
e3572eb6 |
|
15-Feb-2022 |
Aleksandr Rybalko <ray@freebsd.org> |
Allocate event for DMC-620 and CMN-600 controllers PMU. Add events supported by DMC-620 and CMN-600 controllers PMU. Allocate event for DMC-620 and CMN-600 controllers PMU. Add events supported by DMC-620 and CMN-600 controllers PMU. Reviewed by: bz Sponsored By: ARM Sponsored By: Ampere Computing Differential Revision: https://reviews.freebsd.org/D35609
|
#
6bb7ba4a |
|
11-Mar-2022 |
John Baldwin <jhb@FreeBSD.org> |
arm64 hwpmc: Support restricting counters to user or kernel mode. Support the "usr" and "os" qualifiers on arm64 events to restrict event counting to either usermode or the kernel, respectively. If neither qualifier is given, events are counted in both. Reviewed by: emaste Sponsored by: University of Cambridge, Google, Inc. Differential Revision: https://reviews.freebsd.org/D34527
|
#
9f22e095 |
|
15-Feb-2022 |
Jessica Clarke <jrtc27@FreeBSD.org> |
libpmc: Allow specifying explicit EVENT_xxH events on armv7 and arm64 This is useful for processors where we don't have an event table; in those cases we default to a Cortex A8 (armv7) or Cortex A53 (arm64) in order to attempt to provide something useful, but you're then limited to the counters in those tables, some of which may also not be implemented (e.g. LD/ST_RETIRED are no longer implemented in more recent cores, replaced by LD/ST_SPEC). Adding the raw EVENT_xxH event lists to each table ensures that you can always request the exact events you want, regardless of what has been detected or is known. Reviewed by: mhorne MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D33805
|
#
99830f70 |
|
28-Jan-2022 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: remove mips support Bye bye! Reviewed by: imp, emaste Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D34083
|
#
937539e0 |
|
30-Sep-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: fix the 'cycles' event alias on x86 Looking for "tsc-tsc" in the pmu tables will fail every time. Instead, make this an alias for the static TSC event defined in pmc_events.h. This fixes 'pmcstat -s cycles' on Intel and AMD. Reviewed by: emaste MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D32197
|
#
95d619a8 |
|
29-Jul-2021 |
Leandro Lupori <luporl@FreeBSD.org> |
hwpmc: remove static POWER8 definitions After b48a2770d48b, static POWER8 definitions became unnecessary, as all of them (and much more) are already present in libpmc's PMU events. Submitted by: Leonardo Bianconi <leonardo.bianconi@eldorado.org.br> (initial version) Reviewed by: kbowling, mhorne Sponsored by: Instituto de Pesquisas Eldorado (eldorado.org.br) Differential Revision: https://reviews.freebsd.org/D31334
|
#
dfdc57e8 |
|
13-May-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: fall-back to kernel tables if pmu-events fails On x86, the pmu_events table is the source of truth for finding supported events. However, events not found there may still be present in the kernel's static event tables. For example, the pmc.soft(3) events will never be available from pmu-events. Update pmc_allocate() to search the legacy event tables if pmc_pmu_pmcallocate() fails to return a result. This allows both event sources to be consulted before giving up, thus restoring pmc.soft(3) and pmc.tsc(3) on x86. Reviewed by: emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30216
|
#
da13ef6a |
|
13-May-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: remove PMC_MDEP_TABLE logic This logic was added for handling some of the complicated relationships between events and x86 CPU models. Since that logic has been mostly removed from libpmc(3) in favor of pmu-events, this no longer serves much of a purpose. Mapping CPU types to event tables is already handled by the switch statement in pmc_init(). Reviewed by: ray, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30196
|
#
4d8d74a4 |
|
13-May-2021 |
Mitchell Horne <mhorne@FreeBSD.org> |
libpmc: remove unused PMC_MDEP_INIT_INTEL_V2 All uses of this macro were removed in e92a1350b50e. Remove cpu_has_iaf_counters as well. Reviewed by: ray, emaste MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D30195
|
#
aa76f0c3 |
|
25-Dec-2020 |
Michal Meloun <strejda@users.noreply.github.com> |
PMC: remove now orphaned PMC for INTEL XScale processors. Support for XScale architecture has been deleted in FreeBSD 13.
|
#
5cebdfc0 |
|
05-Nov-2020 |
Leandro Lupori <luporl@FreeBSD.org> |
libpmc: add support for POWER8/9 PMCs This change adds support for POWER8/9 performance counters. Reviewed by: jhibbits Sponsored by: Eldorado Research Institute (eldorado.org.br) Differential Revision: https://reviews.freebsd.org/D26113
|
#
da11e1f9 |
|
12-Aug-2020 |
Andrew Turner <andrew@FreeBSD.org> |
Add support for Cortex-A76/Neoverse-N1 to hwpmc This adds support for the Cortex-A76 and Neoverse-N1 PMU counters to pmc. While here add more PMCR_IDCODE values and check the implementers code is correct before setting the PMU type. Reviewed by: bz, emaste (looks reasonable to me) Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D25959
|
#
230754cc |
|
18-Sep-2019 |
Ruslan Bukin <br@FreeBSD.org> |
Add support for BERI statcounters. BERI stands for Bluespec Extensible RISC Implementation, based on MIPS. BERI has not implemented standard MIPS perfomance monitoring counters, instead it provides statistical counters. BERI statcounters have a several limitations: - They can't be written - They don't support start/stop operation - None of hardware interrupt is provided on a counter overflow. So make it separate to hwpmc_mips module and support process/system counting mode only. Sponsored by: DARPA, AFRL
|
#
c81b12e0 |
|
27-Jul-2018 |
Warner Losh <imp@FreeBSD.org> |
Revert r336773: it removed too much. r336773 removed all things xscale. However, some things xscale are really armv5. Revert that entirely. A more modest removal will follow. Noticed by: andrew@
|
#
626930c2 |
|
27-Jul-2018 |
Warner Losh <imp@FreeBSD.org> |
Remove xscale support The OLD XSCALE stuff hasn't been useful in a while. The original committer (cognet@) was the only one that had boards for it. He's blessed this removal. Newer XSCALE (GUMSTIX) is for hardware that's quite old. After discussion on arm@, it was clear there was no support for keeping it. Differential Review: https://reviews.freebsd.org/D16313
|
#
b2ca2e50 |
|
05-Jun-2018 |
Matt Macy <mmacy@FreeBSD.org> |
hwpmc: add summary command and further metadata extensions metadata changes: - log pmc sample rate with pmcallocate - log proc flags with thread / process logging to identify user vs kernel threads fixes: - use log cpuid to translate event id to event name Implement rudimentary summary command to track sample counts by thread and process name within a pmc log. % make -j4 buildkernel >& /dev/null & % sudo pmcstat -S unhalted_core_cycles -S llc-misses -O foo sleep 15 % pmc summary foo cpu_clk_unhalted.thread_p_any: idle: 138108207162 clang-6.0: 105336158004 sh: 72340108510 make: 8642012963 kernel: 7754011631 longest_lat_cache.miss: clang-6.0: 87502625 sh: 40901227 make: 5500165 kernel: 3300099 awk: 2000060 % pmc summary -f ~/foo idx: 278 name: cpu_clk_unhalted.thread_p_any rate: 2000003 idle: 69054 clang-6.0: 52668 sh: 36170 make: 4321 kernel: 3877 hwpmc: proc(7445): 3319 awk: 1289 xargs: 357 rand_harvestq: 181 mtree: 102 intr: 53 zfskern: 31 usb: 7 pagedaemon: 4 ntpd: 3 syslogd: 1 acpi_thermal: 1 logger: 1 syncer: 1 snmptrapd: 1 sleep: 1 idx: 17 name: longest_lat_cache.miss rate: 100003 clang-6.0: 875 sh: 409 make: 55 kernel: 33 awk: 20 hwpmc: proc(7445): 14 xargs: 9 idle: 8 intr: 3 zfskern: 2
|
#
12193215 |
|
04-Jun-2018 |
Matt Macy <mmacy@FreeBSD.org> |
libpmc: improve arg checking
|
#
cfb0dfa3 |
|
31-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
libpmc: Intel doesn't require runtime counter table init
|
#
e92a1350 |
|
31-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
hwpmc: remove unused pre-table driven bits for intel Intel now provides comprehensive tables for all performance counters and the various valid configuration permutations as text .json files. Libpmc has been converted to use these and hwpmc_core has been greatly simplified by moving to passthrough of the table values. The one gotcha is that said tables don't support pentium pro and and pentium IV. There's very few users of hwpmc on _amd64_ kernels on new hardware. It is unlikely that anyone is doing low level optimization on 15 year old Intel hardware. Nonetheless, if someone feels strongly enough to populate the corresponding tables for p4 and ppro I will reinstate the files in to the build. Code for the K8 counters and !x86 architectures remains unchanged.
|
#
8ffdc5df |
|
29-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
libpmc: squelch valgrind warnings
|
#
4f9b4ac4 |
|
29-May-2018 |
Eric van Gyzen <vangyzen@FreeBSD.org> |
pmc_annotate: adhere to the API If the 'mode' parameter was invalid, pmc_annotate() would return EINVAL instead of setting errno and returning -1. Sponsored by: Dell EMC
|
#
1a32aa0f |
|
29-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
libpmc: don't return -1 on success in pmc_allocate
|
#
ed50b918 |
|
29-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
libpmc: don't leak string in error case either Reported by: vangyzen@
|
#
731ca835 |
|
29-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
libpmc: free allocated string on return from pmc_allocate Reported by: Coverity CID: 1391359
|
#
959826ca |
|
26-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the vendor provided pmu-events tables and sundry cleanups. The vendor pmu-events tables provide counter descriptions, default sample rates, event, umask, and flag values for all the counter configuration permutations. Using this gives us: - much simpler kernel code for the MD component - helpful long and short event descriptions - simpler user code - sample rates that won't overload the system Update man page with newer sample types and remove unused sample type.
|
#
5506ceb8 |
|
26-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
Revert r334242 "pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the" because of squash commit messages
|
#
49281356 |
|
26-May-2018 |
Matt Macy <mmacy@FreeBSD.org> |
pmc(3)/hwpmc(4): update supported Intel processors to rely fully on the vendor provided pmu-events tables and sundry cleanups. The vendor pmu-events tables provide counter descriptions, default sample rates, event, umask, and flag values for all the counter configuration permutations. Using this gives us: - much simpler kernel code for the MD component - helpful long and short event descriptions - simpler user code - sample rates that won't overload the system Update man page with newer sample types and remove unused sample type. Squashed commit of the following: commit 4459d43eff815bec08ccc5533dbe5de846f03128 Author: Matt Macy <mmacy@mattmacy.io> Date: Sat May 26 00:06:31 2018 -0700 libpmc: fix pmu function signatures for non amd64 commit a2cb8bbc586c65d41f9b291430a2261ec67b59fe Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 22:38:11 2018 -0700 pmcstat: fix indentation of usage commit f686954b15ff56a833ac80404898977cb80a265b Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 22:19:49 2018 -0700 pmclog(3): add callchain and pmcallocatedyn, remove pcsample commit 73e13a0d2e9498c81c150d14d022050cee7511bb Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 22:19:00 2018 -0700 pmclog.h: GC pcsample field commit 3e93ffd65da641fa657539dad3c48e281f8b5798 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 22:05:57 2018 -0700 hwpmc: make Intel core CPUs use external event tables commit 634f5fae1e1644ac324003136c66cd9c619d1c93 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 22:00:06 2018 -0700 pmclog: update log record types, bump PMC_MAJOR - explicitly make log record types a multiple of 8 bytes - hook in pmu event types for pmc_allocate records - remove references to no longer PCSAMPLE record commit 83d84fcd2d65bdf6ddcb2e155a22f0cfa2a9c225 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 21:52:10 2018 -0700 libpmc: add support for having vendor table driven pmc_allocate commit 9e6ad63c40c2fce8404847ace5078ca6cb33a736 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 19:11:33 2018 -0700 hwpmc_core: add accessors for EVSEL & UMASK, make IAP_UMASK useful to user commit 859dceb93daa6419a48c794db99b6758e5b041c9 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 19:09:45 2018 -0700 pmcstat: update usage and man page as well as make -L consistent with pmccontrol commit 79c7d8597e28c2eb13f5f9113e65ec2792ca57b1 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 18:07:03 2018 -0700 pmu_util: add support for all current intel event keywords commit d8089c7f6a6c8527f38324252b1ffb47004694c6 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 17:45:00 2018 -0700 add description for new arguments commit 058336740bab53c62ec88a3a026ea848cf3878c6 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 17:38:15 2018 -0700 libpmc: move pmu_events table and pmu_utils out of libpmcstat so that they can be used by pmc_allocate commit 049b66b382e2f833c3f47bc8df9e750cb265709f Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 16:12:41 2018 -0700 pmcstat: hook pmu_events counter description utility routines in commit f5e01e7b37a691dc045e1aa16b3ebdd162515de8 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 16:11:59 2018 -0700 pmu_events: add utility routines for listing counters and their descriptions commit cba4d4f8907f772279f86f18f915e0d74d33ac56 Author: Matt Macy <mmacy@mattmacy.io> Date: Fri May 25 16:09:50 2018 -0700 pmu-events: expand out skylake regex to simplify string matches
|
#
b83aeb5c |
|
12-Jan-2018 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Replace the PMC class struct copy with an explicit memcpy() This should be effectively a nop for all archs, but for some reason the codegen difference on the PowerPC 970 is such that the struct assignment doesn't work (unless a printf() using one of the elements in the copied struct follows it), while the memcpy() succeeds. On all archs the memcpy() should be expanded to an inline copy, since the copy is bounded to ~16 bytes. MFC after: 3 weeks
|
#
5e53a4f9 |
|
25-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
lib: further adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 2-Clause license, however the tool I was using mis-identified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
|
#
b99b705d |
|
06-Sep-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Skylake server core PMC support for hwpmc(4). Reviewed by: emaste Sponsored by: The FreeBSD Foundation Hardware provided by: Intel MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D12221
|
#
9491ba75 |
|
06-Sep-2017 |
Konstantin Belousov <kib@FreeBSD.org> |
Minor style changes to make forthcoming code stand out less. Reviewed by: emaste Sponsored by: The FreeBSD Foundation MFC after: 2 weeks X-Differential revision: https://reviews.freebsd.org/D12221
|
#
75f46cf6 |
|
01-May-2016 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
lib: minor spelling fixes in comments. No functional change.
|
#
f19bae41 |
|
30-Nov-2015 |
Randall Stewart <rrs@FreeBSD.org> |
Add support for Intel Skylake and Intel Broadwell PMC's. The Broadwell PMC's have been tested on the Broadwell-Xeon with a hacked up version of pmcstudy -T. I still need to circle back and add in to pmcstudy all the new tests from the Broadwell Vtune guide (for the hacked up version I just made it so I could run the -T option). The Skylake CPU is not yet available (even though Intel is advertising it .. imagine that). The Skylake PMC's will need to be tested once we can get a sample skylake CPU :-) Sponsored by: Netflix Inc.
|
#
3ed01392 |
|
14-Oct-2015 |
Bjoern A. Zeeb <bz@FreeBSD.org> |
For the Cortex-A8 use the a8 and not the a9 events table. MFC after: 2 weeks Sponsored by: DARPA/AFRL Differential Revision: https://reviews.freebsd.org/D3882
|
#
3e0bfdd8 |
|
09-Jun-2015 |
Ruslan Bukin <br@FreeBSD.org> |
o Rework ARMv7 events list using aliases - same way as we have for arm64. o Extend it with Cortex A9-specific events.
|
#
0ceb54c2 |
|
19-May-2015 |
John Baldwin <jhb@FreeBSD.org> |
Use fixed enum values for PMC_CLASSES(). This removes one of the frequent causes of ABI breakage when new CPU types are added to hwpmc(4). Differential Revision: https://reviews.freebsd.org/D2586 Reviewed by: davide, emaste, gnn (earlier version) MFC after: 2 weeks
|
#
bc88bb2b |
|
19-May-2015 |
Ruslan Bukin <br@FreeBSD.org> |
Add Performance Monitoring Counters support for AArch64. Family-common and CPU-specific counters implemented. Supported CPUs: ARM Cortex A53/57/72. Reviewed by: andrew, bz, emaste, gnn, jhb Sponsored by: ARM Limited Differential Revision: https://reviews.freebsd.org/D2555
|
#
a7452468 |
|
18-Apr-2015 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Implement hwpmc(4) for Freescale e500 core. This supports e500v1, e500v2, and e500mc. Tested only on e500v2, but the performance counters are identical across all, with e500mc having some additional events. Relnotes: Yes
|
#
f6e6460d |
|
04-Apr-2015 |
Adrian Chadd <adrian@FreeBSD.org> |
Add support for the MIPS74K SoC family performance counters events. These are similar to the mips24k performance counters - some are available on perfcnt0/3, some are available on perfcnt1/4. However, the events aren't all the same. * Add the events, named the same as from Linux oprofile. * Verify they're the same as "MIPS32(R) 74KTM Processor Core Family Software User's Manual"; Document Number: MD00519; Revision 01.05. * Rename INSTRUCTIONS to something else, so it doesn't clash with the alias INSTRUCTIONS. I'll try to tidy this up later; there are a few other aliases to add and shuffle around. Tested: * QCA9558 SoC (AP135 board) - MIPS74Kc core (no FPU.) * make universe; where it didn't fail for other reasons. TODO: * It'd be nice to support the four performance counters in at least this hardware, rather than just two. Reviewed by: bsdimp ("looks good; don't break world".)
|
#
ae9975db |
|
09-Mar-2015 |
Ryan Stone <rstone@FreeBSD.org> |
Use the correct event table for Haswell Xeon events Differential Revision: https://reviews.freebsd.org/D1588 MFC after: 1 month Sponsored by: Sandvine Inc.
|
#
6411d14d |
|
28-Jan-2015 |
Ruslan Bukin <br@FreeBSD.org> |
Add ARMv7 performance monitoring counters. Differential Revision: https://reviews.freebsd.org/D1687 Reviewed by: rpaulo Sponsored by: DARPA, AFRL
|
#
d95b3509 |
|
13-Jan-2015 |
Randall Stewart <rrs@FreeBSD.org> |
Update the hwpmc driver to have the new type HASWELL_XEON. Also go back through HASWELL, IVY_BRIDGE, IVY_BRIDGE_XEON and SANDY_BRIDGE to straighten out all the missing PMCs. We also add a new pmc tool pmcstudy, this allows one to run the various formulas from the documents "Using Intel Vtune Amplifier XE on XXX Generation platforms" for IB/SB and Haswell. The tool also allows one to postulate your own formulas with any of the various PMC's. At some point I will enahance this to work with Brendan Gregg's flame-graphs so we can flamegraph various PMC interactions. Note the manual page also needs some work (lots of work) but gnn has committed to help me with that ;-) Reviewed by: gnn MFC after:1 month Sponsored by: Netflix Inc.
|
#
49fe48ab |
|
04-Jun-2014 |
Konstantin Belousov <kib@FreeBSD.org> |
For Xeon 7500 and 48XX (Nehalem EX and Westmere EX) variants of the Core i7 and Westmere processors, the uncore PMC subsystem is completely different from the uncore PMC on smaller versions of CPUs. Disable existing uncore hwpmc code for EX, otherwise non-existing MSRs are accessed. The cores PMCs seems to be identical for non-EX and EX, according to the SDM. Reviewed by: davide, fabient Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
|
#
e8f021a3 |
|
20-Mar-2014 |
Hiren Panchasara <hiren@FreeBSD.org> |
Update hwpmc to support core events for Atom Silvermont microarchitecture. (Model 0x4D as per Intel document 330061-001 01/2014) Tested by: Olivier Cochard-Labbe <olivier@cochatrd.me> MFC after: 4 weeks
|
#
169dd953 |
|
31-Jan-2014 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Add hwpmc(4) support for the PowerPC 970 class processors, direct events. This also fixes asserts on removal of the module for the mpc74xx. The PowerPC 970 processors have two different types of events: direct events and indirect events. Thus far only direct events are supported. I included some documentation in the driver on how indirect events work, but support is for the future. MFC after: 1 month
|
#
cc0c1555 |
|
28-Mar-2013 |
Sean Bruno <sbruno@FreeBSD.org> |
Update hwpmc to support Haswell class processors. 0x3C: /* Per Intel document 325462-045US 01/2013. */ Add manpage to document all the goodness that is available in this processor model. Submitted by: hiren panchasara <hiren.panchasara@gmail.com> Reviewed by: jimharris, sbruno Obtained from: Yahoo! Inc. MFC after: 2 weeks
|
#
3f929d8c |
|
31-Jan-2013 |
Sean Bruno <sbruno@FreeBSD.org> |
Update hwpmc to support the Xeon class of Ivybridge processors. case 0x3E: /* Per Intel document 325462-045US 01/2013. */ Add manpage to document all the goodness that is available in this processor model. No support for uncore events at this time. Submitted by: hiren panchasara <hiren.panchasara@gmail.com> Reviewed by: davide, jimharris, sbruno Obtained from: Yahoo! Inc. MFC after: 2 weeks
|
#
f0bbe9aa |
|
05-Nov-2012 |
Dimitry Andric <dim@FreeBSD.org> |
Fix a few warnings from newer clang 3.2 in libpmc, about comparing enum pmc_event values against integer constants which fall outside the enum range. Reviewed by: fabient, sbruno MFC after: 3 days
|
#
cdfd0cc8 |
|
23-Oct-2012 |
Sean Bruno <sbruno@FreeBSD.org> |
Cleanup and rename some variables in libpmc and hwpmc. Submitted by: hiren panchasara <hiren.panchasara@gmail.com> Reviewed by: jimharris@ sbruno@ Obtained from: Yahoo! Inc. MFC after: 2 weeks
|
#
fabe02f5 |
|
19-Oct-2012 |
Sean Bruno <sbruno@FreeBSD.org> |
Update hwpmc to support the Xeon class of Sandybridge processors. (Model 0x2D /* Per Intel document 253669-044US 08/2012. */) Add manpage to document all the goodness that is available in this processor model. No support for uncore events at this time. Submitted by: hiren panchasara <hiren.panchasara@gmail.com> Reviewed by: jimharris@ fabient@ Obtained from: Yahoo! Inc. MFC after: 2 weeks
|
#
1e862e5a |
|
06-Sep-2012 |
Fabien Thomas <fabient@FreeBSD.org> |
Add Intel Ivy Bridge support to hwpmc(9). Update offcore RSP token for Sandy Bridge. Note: No uncore support. Will works on Family 6 Model 3a. MFC after: 1 month Tested by: bapt, grehan
|
#
f5f9340b |
|
28-Mar-2012 |
Fabien Thomas <fabient@FreeBSD.org> |
Add software PMC support. New kernel events can be added at various location for sampling or counting. This will for example allow easy system profiling whatever the processor is with known tools like pmcstat(8). Simultaneous usage of software PMC and hardware PMC is possible, for example looking at the lock acquire failure, page fault while sampling on instructions. Sponsored by: NETASQ MFC after: 1 month
|
#
c2657f80 |
|
22-Mar-2012 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
Add Octeon-related parts to libpmc
|
#
2827d3e1 |
|
22-Mar-2012 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
Make reusable part of code have mips prefix, not mips24
|
#
78d763a2 |
|
01-Mar-2012 |
Davide Italiano <davide@FreeBSD.org> |
- Add support for the Intel Sandy Bridge microarchitecture (both core and uncore counting events) - New manpages with event lists. - Add MSRs for the Intel Sandy Bridge microarchitecture Reviewed by: attilio, brueffer, fabient Approved by: gnn (mentor) MFC after: 3 weeks
|
#
7b25dcca |
|
24-Dec-2011 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Implement hwpmc counting PMC support for PowerPC G4+ (MPC745x/MPC744x). Sampling is in progress. Approved by: nwhitehorn (mentor) MFC after: 9.0-RELEASE
|
#
562fc14b |
|
15-Dec-2011 |
Dimitry Andric <dim@FreeBSD.org> |
In lib/libpmc/libpmc.c, struct pmc_cputype_map's pm_cputype field should be of type 'enum pmc_cputype', not 'enum pmc_class'. MFC after: 1 week
|
#
dceed24a |
|
18-Oct-2011 |
Fabien Thomas <fabient@FreeBSD.org> |
Add a flush of the current PMC log buffer before displaying the next top. As the underlying block is 4KB if the PMC throughput is low the measurement will be reported on the next tick. pmcstat(8) use the modified flush API to reclaim current buffer before displaying next top. MFC after: 1 month
|
#
a7d5f7eb |
|
19-Oct-2010 |
Jamie Gritton <jamie@FreeBSD.org> |
A new jail(8) with a configuration file, to replace the work currently done by /etc/rc.d/jail.
|
#
2aef9dd6 |
|
05-Sep-2010 |
Fabien Thomas <fabient@FreeBSD.org> |
Fix invalid class removal when IAF is not the last class. Keep IAF class with 0 PMC and change the alias in libpmc to IAP. MFC after: 1 week
|
#
fa359228 |
|
24-May-2010 |
Ryan Stone <rstone@FreeBSD.org> |
MFC r207482 When configuring hwpmc to use the EXT_SNOOP event, only send a default cachestate qualifier on the Atom processor. Other Intel processors do not accept a cachestate qualifier and currently hwpmc will return EINVAL if you try to use the EXT_SNOOP event on those processors Approved by: emaste (mentor)
|
#
aa1b887b |
|
01-May-2010 |
Ryan Stone <rstone@FreeBSD.org> |
When configuring hwpmc to use the EXT_SNOOP event, only send a default cachestate qualifier on the Atom processor. Other Intel processors do not accept a cachestate qualifier and currently hwpmc will return EINVAL if you try to use the EXT_SNOOP event on those processors Approved by: jkoshy (mentor) MFC after: 2 weeks
|
#
cc32d5b3 |
|
16-Apr-2010 |
Fabien Thomas <fabient@FreeBSD.org> |
MFC r206089, r206684: - Support for uncore counting events: one fixed PMC with the uncore domain clock, 8 programmable PMC. - Westmere based CPU (Xeon 5600, Corei7 980X) support. - New man pages with events list for core and uncore. - Updated Corei7 events with Intel 253669-033US December 2009 doc. There is some removed events in the documentation, they have been kept in the code but documented in the man page as obsolete. - Offcore response events can be setup with rsp token. Sponsored by: NETASQ
|
#
1fa7f10b |
|
02-Apr-2010 |
Fabien Thomas <fabient@FreeBSD.org> |
- Support for uncore counting events: one fixed PMC with the uncore domain clock, 8 programmable PMC. - Westmere based CPU (Xeon 5600, Corei7 980X) support. - New man pages with events list for core and uncore. - Updated Corei7 events with Intel 253669-033US December 2009 doc. There is some removed events in the documentation, they have been kept in the code but documented in the man page as obsolete. - Offcore response events can be setup with rsp token. Sponsored by: NETASQ
|
#
fe0506d7 |
|
09-Mar-2010 |
Marcel Moolenaar <marcel@FreeBSD.org> |
Create the altix project branch. The altix project will add support for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting is a two-module system, consisting of a base compute module and a CPU expansion module. SGI's NUMAFlex architecture can be an excellent platform to test CPU affinity and NUMA-aware features in FreeBSD.
|
#
660df75e |
|
03-Mar-2010 |
George V. Neville-Neil <gnn@FreeBSD.org> |
Add support for hwpmc(4) on the MIPS 24K, 32 bit, embedded processor. Add macros for properly accessing coprocessor 0 registers that support performance counters. Reviewed by: jkoshy rpaulo fabien imp MFC after: 1 month
|
#
53b6e751 |
|
19-Jan-2010 |
Fabien Thomas <fabient@FreeBSD.org> |
MFC 202157: Bug fix: add a missing initializer.
|
#
bc315bbd |
|
12-Jan-2010 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Bug fix: add a missing initializer. Submitted by: Luca Pizzamiglio <luca.pizzamiglio at gmail dot com> PR: i386/142742
|
#
0ce207d2 |
|
23-Dec-2009 |
Rui Paulo <rpaulo@FreeBSD.org> |
Intel XScale hwpmc(4) support. This brings hwpmc(4) support for 2nd and 3rd generation XScale cores. Right now it's enabled by default to make sure we test this a bit. When the time comes it can be disabled by default. Tested on Gateworks boards. A man page is coming. Obtained from: //depot/user/rpaulo/xscalepmc/...
|
#
d7fbf69d |
|
07-Dec-2009 |
Fabien Thomas <fabient@FreeBSD.org> |
MFC 198433: Not all Intel Core (TM) CPUs implement PMC_CLASS_IAF fixed-function counters. For such CPUs, use an alternate mapping of convenience names to events supported by PMC_CLASS_IAP programmable counters.
|
#
791f5d5b |
|
23-Oct-2009 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Not all Intel Core (TM) CPUs implement PMC_CLASS_IAF fixed-function counters. For such CPUs, use an alternate mapping of convenience names to events supported by PMC_CLASS_IAP programmable counters. Testing and review by: fabient
|
#
b47ea38e |
|
09-Jun-2009 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Fix parsing of Core2 event qualifiers. Submitted by: Nikola K <laladelausanne at gmail dot com>
|
#
597979c4 |
|
27-Jan-2009 |
Jeff Roberson <jeff@FreeBSD.org> |
- Add support for nehalem/corei7 cpus. This supports all of the core counters defined in the reference manual. It does not support the 'uncore' events. Reviewed by: jkoshy Sponsored by: Nokia
|
#
b4d091f3 |
|
03-Dec-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Fixes for Core2 Extreme support. Submitted by: "Artem Belevich" <artemb at gmail dot com>
|
#
0cfab8dd |
|
27-Nov-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
- Add support for PMCs in Intel CPUs of Family 6, model 0xE (Core Solo and Core Duo), models 0xF (Core2), model 0x17 (Core2Extreme) and model 0x1C (Atom). In these CPUs, the actual numbers, kinds and widths of PMCs present need to queried at run time. Support for specific "architectural" events also needs to be queried at run time. Model 0xE CPUs support programmable PMCs, subsequent CPUs additionally support "fixed-function" counters. - Use event names that are close to vendor documentation, taking in account that: - events with identical semantics on two or more CPUs in this family can have differing names in vendor documentation, - identical vendor event names may map to differing events across CPUs, - each type of CPU supports a different subset of measurable events. Fixed-function and programmable counters both use the same vendor names for events. The use of a class name prefix ("iaf-" or "iap-" respectively) permits these to be distinguished. - In libpmc, refactor pmc_name_of_event() into a public interface and an internal helper function, for use by log handling code. - Minor code tweaks: staticize a global, freshen a few comments. Tested by: gnn
|
#
d7f03759 |
|
19-Oct-2008 |
Ulf Lilleengen <lulf@FreeBSD.org> |
- Import the HEAD csup code which is the basis for the cvsmode work.
|
#
789140c0 |
|
09-Oct-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
- Sparsely number enumerations 'pmc_cputype' and 'pmc_event' in order to reduce ABI disruptions when new cpu types and new PMC events are added in the future. - Support alternate spellings for PMC events. Derive the canonical spelling of an event name from its enumeration name in 'enum pmc_event'. - Provide a way for users to disambiguate between identically named events supported by multiple classes of PMCs in a CPU. - Change libpmc's machine-dependent event specifier parsing code to better support CPUs containing two or more classes of PMC resources.
|
#
48ddc625 |
|
16-Sep-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Whitespace fixes.
|
#
0b9b757d |
|
16-Sep-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Add event name aliases for Pentium PMCs.
|
#
6aa5a193 |
|
16-Sep-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Correct an event name alias: event "k7-dc-misses" does not support a unitmask.
|
#
484202fa |
|
12-Mar-2008 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Bring the behaviour of pmc_capabilities() and pmc_width() in line with documentation: set 'errno' and return -1 in case of an error. Update (c) years.
|
#
aa342b1f |
|
07-Dec-2007 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Improve style(9) compliance and trim a long text line.
|
#
73e2d811 |
|
10-Apr-2007 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Correct a typo in an event name alias. Reported by: Harald Servat <redcrash at gmail dot com>
|
#
d8acba2a |
|
20-Mar-2006 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Update the pmc(3) manual page's date string and freshen the year in the (c) line for pmc.3 and libpmc.c.
|
#
177a2f22 |
|
24-Feb-2006 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Add an alias 'unhalted-cycles' denoting cycles where the CPU is not in a halt or sleep state.
|
#
86a65549 |
|
03-Jul-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
- Update the CPU version check to recognize P4/EMT64 CPUs. [1] - Allow libpmc(3) to support P4/EMT64 PMCs on the amd64 architecture and AMD K8 PMCs on the i386. [2] Submitted by: ps [1] Pointy hat: myself [2] Approved by: re (scottl)
|
#
1455fcd3 |
|
09-Jun-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Fix tinderbox breakage.
|
#
f263522a |
|
09-Jun-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
MFP4: - Implement sampling modes and logging support in hwpmc(4). - Separate MI and MD parts of hwpmc(4) and allow sharing of PMC implementations across different architectures. Add support for P4 (EMT64) style PMCs to the amd64 code. - New pmcstat(8) options: -E (exit time counts) -W (counts every context switch), -R (print log file). - pmc(3) API changes, improve our ability to keep ABI compatibility in the future. Add more 'alias' names for commonly used events. - bug fixes & documentation.
|
#
c5153e19 |
|
01-May-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Add convenience APIs pmc_width() and pmc_capabilities() to -lpmc. Have pmcstat(8) and pmccontrol(8) use these APIs. Return PMC class-related constants (PMC widths and capabilities) with the OP GETCPUINFO call leaving OP PMCINFO to return only the dynamic information associated with a PMC (i.e., whether enabled, owner pid, reload count etc.). Allow pmc_read() (i.e., OPS PMCRW) on active self-attached PMCs to get upto-date values from hardware since we can guarantee that the hardware is running the correct PMC at the time of the call. Bug fixes: - (x86 class processors) Fix a bug that prevented an RDPMC instruction from being recognized as permitted till after the attached process had context switched out and back in again after a pmc_start() call. Tighten the rules for using RDPMC class instructions: a GETMSR OP is now allowed only after an OP ATTACH has been done by the PMC's owner to itself. OP GETMSR is not allowed for PMCs that track descendants, for PMCs attached to processes other than their owner processes. - (P4/HTT processors only) Fix a bug that caused the MI and MD layers to get out of sync. Add a new MD operation 'get_config()' as part of this fix. - Allow multiple system-mode PMCs at the same row-index but on different CPUs to be allocated. - Reject allocation of an administratively disabled PMC. Misc. code cleanups and refactoring. Improve a few comments.
|
#
d56c5d4b |
|
20-Apr-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Add event aliases for P6 and K8 PMCs.
|
#
04e9feb0 |
|
20-Apr-2005 |
Marcel Moolenaar <marcel@FreeBSD.org> |
o Do not include <machine/pmc_mdep.h>. It's automaticly included for us when <sys/pmc.h> is included. o Replace "#if __i386__" and "#if __amd64__" with the equivalent of "#ifdef __i386__" and "#ifdef __amd64__" (resp.) These tokens are not defined on all platforms. o Conditionally compile pmc_parse_mask() on i386 and amd64 only. It's only referenced there. This will change when support for other platforms is added, of course. Ok'd by: jkoshy@
|
#
c570de2c |
|
19-Apr-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Remove extra Id keyword.
|
#
ebccf1e3 |
|
18-Apr-2005 |
Joseph Koshy <jkoshy@FreeBSD.org> |
Bring a working snapshot of hwpmc(4), its associated libraries, userland utilities and documentation into -CURRENT. Bump FreeBSD_version. Reviewed by: alc, jhb (kernel changes)
|