Blame src/perfctr-2.6.x/CHANGES

Packit 577717
$Id: CHANGES,v 1.142.2.72 2010/11/07 19:48:14 mikpe Exp $
Packit 577717
Packit 577717
			CHANGES
Packit 577717
			=======
Packit 577717
Packit 577717
[High-level changes in reverse chronological order. Detailed
Packit 577717
 driver changes are in linux/drivers/perfctr/RELEASE-NOTES.]
Packit 577717
Packit 577717
Version 2.6.42, 2010-11-07
Packit 577717
- Classify Westmere processors as Westmere not Nehalem.
Packit 577717
- Update update-kernel to install arch-specific header files
Packit 577717
  in arch/$arch/include/asm/ for newer kernels.  Also make
Packit 577717
  update-kernel --test trace file installation steps.
Packit 577717
- Update usr.src/Makefile to use the LD make variable rather
Packit 577717
  than plain 'ld' if set.  Useful for cross-compilation and
Packit 577717
  builds with non-default target options.
Packit 577717
- Updated kernel support: 2.6.18-194.17.4.el5 (RHEL5).
Packit 577717
Packit 577717
Version 2.6.41, 2010-06-08
Packit 577717
- Extend examples/perfex/ to allow users to set up values for
Packit 577717
  the OFFCORE_RSP MSRs on Nehalem-based processors.
Packit 577717
- Add driver support for OFFCORE_RSP MSRs on Nehalem-based processors.
Packit 577717
- Recognise more Nehalem-based processors (models 30, 37).
Packit 577717
- Renamed PERFCTR_X86_INTEL_COREI7 symbolic CPU/PMU type constant
Packit 577717
  to PERFCTR_X86_INTEL_NHLM, since it denotes the entire Nehalem
Packit 577717
  family not just the (original) Core i7. The old constant is
Packit 577717
  also defined for now, to not break source code compatibility.
Packit 577717
- Correct Core i7 event setup in examples/global/ to actually
Packit 577717
  work. It was rejected by the driver due to a copy-paste error.
Packit 577717
- Rewrite the missing event list message in `perfex -l/-L' to
Packit 577717
  indicate that this is a user-space library omission, not an
Packit 577717
  issue with the driver or the hardware.
Packit 577717
- Updated kernel support: 2.6.18-194.3.1.el5, 2.6.18-194.el5,
Packit 577717
  2.6.18-164.15.1.el5 (RHEL5).
Packit 577717
Packit 577717
Version 2.6.40, 2010-01-30
Packit 577717
- Preliminary support for Intel Xeon 7500 (Nehalem-based) processors.
Packit 577717
- Preliminary support for Intel i7-980X Gulftown processors.
Packit 577717
- Added support for AMD Family 11h processors (compatible with fam 10h).
Packit 577717
- Updated kernel support: 2.6.32, 2.6.31, 2.6.18-164.11.1.el5 and
Packit 577717
  2.6.18-164.el5 (RHEL5), 2.6.9-89.0.19.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.39, 2009-06-11
Packit 577717
- Updated driver's AMD multicore detection code to actually work.
Packit 577717
  Tested on Istanbul and Shanghai Opterons.
Packit 577717
- Updated driver to allow per-thread counting of Northbridge events
Packit 577717
  on multicore AMD processors. Since the NB is shared between cores,
Packit 577717
  threads counting NB events will be forced via their CPU affinity
Packit 577717
  mask to core0 of the available processors. On early K8 RevE processors
Packit 577717
  NB events remain limited to global-mode counting, due to an erratum.
Packit 577717
- Updated kernel support: 2.6.30, 2.6.29, 2.6.18-128.1.10.el5 (RHEL5),
Packit 577717
  2.6.18-92.1.26.el5 (RHEL5), 2.6.9-89.EL (RHEL4), 2.6.9-78.0.22.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.38, 2009-01-23
Packit 577717
- Added rvperfctr_iresume() procedure to the user-space library.
Packit 577717
  This allows a monitor process to resume overflow counters in a
Packit 577717
  target process after the target has received an overflow signal.
Packit 577717
- Updated kernel support: 2.6.29-rc2, 2.6.28, 2.6.18-128.el5
Packit 577717
  (RHEL5.3), 2.6.9-78.0.13.EL (RHEL4).
Packit 577717
- Removed support for 2.4 kernels. 2.4 kernels have effectively
Packit 577717
  been unsupported since early 2007, this change makes it official
Packit 577717
  by removing all 2.4-specific files and #ifdefs.
Packit 577717
Packit 577717
Version 2.6.37, 2008-11-30
Packit 577717
- Preliminary support for Intel Core i7 (Nehalem) processors
Packit 577717
  (family 6 model 26). They are currently treated like Core 2s
Packit 577717
  but with four general-purpose counters, and with different
Packit 577717
  events and a new symbolic CPU type. The AnyThread evntsel flag
Packit 577717
  and "uncore" event monitoring are not yet supported.
Packit 577717
- Updated x86 driver to recognise Xeon 7400 (family 6 model 29)
Packit 577717
  as a member of the Core 2 family.
Packit 577717
- Extended x86 driver's CPU initialisation on Intel Core 2 and
Packit 577717
  newer CPUs to work around vtune leaving the performance monitor
Packit 577717
  unit in a "very" disabled state. Thanks to Mark Krentel for
Packit 577717
  reporting the problem and for facilitating tests that allowed
Packit 577717
  the cause of the problem to be identified.
Packit 577717
- Updated kernel support: 2.6.28-rc6, 2.6.18-120.el5 (RHEL5.3 beta),
Packit 577717
  2.6.18-92.1.18.el5 (RHEL5), 2.6.9-78.0.8.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.36, 2008-10-19
Packit 577717
- Fixed a driver error which caused Intel Family 6 Model 23
Packit 577717
  processors to crash kernels with general protection faults
Packit 577717
  if the fixed-function counters ran in interrupt-on-overflow
Packit 577717
  mode. Older Intel Family 6 Model 15 processors tolerate the
Packit 577717
  error which is why it was not detected before. Thanks to
Packit 577717
  Mark Krentel for reporting the problem and for facilitating
Packit 577717
  tests that allowed the cause of the problem to be identified.
Packit 577717
- Updated kernel support: 2.6.27, 2.6.26, 2.6.18-92.1.13.el5
Packit 577717
  (RHEL5), 2.6.9-78.0.5.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.35, 2008-06-30
Packit 577717
- Preliminary support for Intel Atom processors added.
Packit 577717
  These processors are very poorly documented, but they are
Packit 577717
  known to be family 6 model 28, and to support Intel's
Packit 577717
  "architectural performance monitor". Current models seem
Packit 577717
  to have two general-purpose counters, one fixed-function
Packit 577717
  counter, and to support the seven architectural events.
Packit 577717
  Thanks to Steve Blackburn for running tests on his Atom.
Packit 577717
- Updated x86 driver to recognise the Celeron model 16h
Packit 577717
  as a member of the Core2 family.
Packit 577717
- Corrected an error in the x86 driver's control validation
Packit 577717
  procedure. The error was introduced in perfctr-2.6.29 when
Packit 577717
  support for the Core2's fixed-function counters was added.
Packit 577717
  The error made the driver accept some invalid controls
Packit 577717
  (on Core2 processors only), which could result in kernel
Packit 577717
  hangs due to exceptions from invalid register accesses.
Packit 577717
  Thanks to Anton Ertl for reporting the initial problem.
Packit 577717
- Updated README to add Atom and AMD Family 10h to list of
Packit 577717
  supported processors.
Packit 577717
- Updated kernel support: 2.6.26-rc8, 2.6.18-92.1.6.el5 (RHEL5),
Packit 577717
  2.6.18-92.1.1.el5 (RHEL5), 2.6.9-67.0.20.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.35-pre1, 2008-06-23
Packit 577717
- Added optional close-on-exec feature for per-process perfctrs.
Packit 577717
  To enable it, set control.flags |= VPERFCTR_CONTROL_CLOEXEC
Packit 577717
  in a struct vperfctr_control object before passing it to
Packit 577717
  vperfctr_control(). If the flag is set when a thread executes
Packit 577717
  an execve() system call, then its perfctr state is detached
Packit 577717
  from the thread as if a call to vperfctr_unlink() had occurred.
Packit 577717
  If the flag is clear then the state survives execve() just like
Packit 577717
  it always did before.
Packit 577717
- The vperfctr_open() library function now sets close-on-exec
Packit 577717
  on the file descriptor embedded in the returned vperfctr handle.
Packit 577717
- Removed library support for the ancient /proc/<pid>/perfctr
Packit 577717
  kernel interface which hasn't worked since perfctr-2.6.0.
Packit 577717
Packit 577717
Version 2.6.34, 2008-05-29
Packit 577717
- Updated kernel support: 2.6.26-rc4, 2.6.18-92.el5 (RHEL5U2),
Packit 577717
  2.6.18-53.1.21.el5 (RHEL5), 2.6.16.42-0.12 (SuSE).
Packit 577717
- Corrected the kernel driver's version number: perfctr-2.6.33
Packit 577717
  forgot to increment it.
Packit 577717
Packit 577717
Version 2.6.33, 2008-05-18
Packit 577717
- x86: The support for Intel Family 6 Model 23 processors added in
Packit 577717
  perfctr-2.6.32 was incomplete, causing overflow interrupts to not
Packit 577717
  work properly on those processors. This has been fixed. (Thanks
Packit 577717
  to Mark Krentel for reporting the issue and testing patches.)
Packit 577717
- Updated kernel support: 2.6.26-rc2, 2.6.18-53.1.19.el5 (RHEL5),
Packit 577717
  2.6.9-67.0.15.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.32, 2008-04-20
Packit 577717
- Library: add experimental vperfctr_open_mode(mode) procedure.
Packit 577717
  The plain vperfctr_open() always opens the perfctr state in
Packit 577717
  O_CREAT|O_EXCL mode, which means that it will fail if the
Packit 577717
  invoking thread already has a perfctr state. The mode parameter
Packit 577717
  to vperfctr_open_mode() can be used to avoid this behaviour:
Packit 577717
  with mode == 0 no state will be created and a handle to the
Packit 577717
  thread's existing state (if any) is returned; to select the
Packit 577717
  current behaviour pass mode == VPERFCTR_OPEN_CREAT_EXCL to
Packit 577717
  vperfctr_open_mode(). For example:
Packit 577717
Packit 577717
  the_state_is_shared = 0;
Packit 577717
  vperfctr = vperfctr_open_mode(VPERFCTR_OPEN_CREAT_EXCL);
Packit 577717
  if (vperfctr == NULL && errno == EEXIST) {
Packit 577717
     // error out due to the resource conflict, or:
Packit 577717
     vperfctr = vperfctr_open_mode(0);
Packit 577717
     the_state_is_shared = 1;
Packit 577717
  }
Packit 577717
  ...
Packit 577717
Packit 577717
  The purpose of this API extension is to hopefully allow PAPI
Packit 577717
  to handle some use cases that currently cause it to error out.
Packit 577717
- Fix 'make install' to select the correct file to install
Packit 577717
  as <asm/perfctr.h>. Fixes regression caused by i386/x86_64
Packit 577717
  arch unification in perfctr-2.6.30. ppc32 also needed fixing.
Packit 577717
- x86: Recognize Intel Family 6 Model 23 as Core2.
Packit 577717
- Updated kernel support: 2.6.25, 2.6.18-53.1.14.el5 (RHEL5),
Packit 577717
  2.6.9-67.0.7.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.31, 2008-01-26
Packit 577717
- x86: Barcelona (AMD Family 10h) updates:
Packit 577717
  * Correct CPU type constant to read FAM10H with trailing H.
Packit 577717
    The old spelling also remains, for now.
Packit 577717
  * Barcelona event selectors are 64-bit, not 32-bit as in K8.
Packit 577717
    Add evntsel_high[] array to struct perfctr_cpu_control to
Packit 577717
    allow passing high 32 bits of evntsels to the driver.
Packit 577717
    This array overlaps the p4 control sub-struct. (Uses a GCC
Packit 577717
    anonymous union, to avoid source-incompatible changes.)
Packit 577717
    Currently only some Northbridge events need the high bits.
Packit 577717
  * Update driver to accept and check high evntsel bits on
Packit 577717
    Barcelona, and to maintain all 64 evntsel bits in PMU
Packit 577717
    context switches.
Packit 577717
  * Update examples/perfex/ to indicate how to also set up
Packit 577717
    the high 32 evntsel bits for Barcelona (run perfex -h).
Packit 577717
- Minor coding style (mostly obsolete whitespace style) fixes.
Packit 577717
- Updated kernel support: 2.6.24, 2.6.18-53.1.6.el5 (RHEL5),
Packit 577717
  2.6.9-67.0.1.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.30, 2007-10-28
Packit 577717
- Kernel 2.6.24-rc1 replaced the previously separate i386
Packit 577717
  and x86_64 source code directories with new shared x86
Packit 577717
  directories. Updated the linux/include/ hierarchy and the
Packit 577717
  update-kernel script to handle new and old source layouts.
Packit 577717
- Several driver updates to handle kernel 2.6.24-rc1 changes
Packit 577717
  on both x86 and ppc32.
Packit 577717
- Fixed a problem which could break RHEL5 kernel builds in
Packit 577717
  some configurations.
Packit 577717
- Updated kernel support: 2.6.24-rc1, 2.6.23, 2.6.18-8.1.14.el5
Packit 577717
  (RHEL5), and 2.6.9-55.0.6.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.29, 2007-10-07
Packit 577717
- Added support for the fixed-function counters in Intel Core 2
Packit 577717
  processors. To user-space they look like ordinary P6 counters,
Packit 577717
  except their PMC numbers are 0x40000000..0x40000002, and their
Packit 577717
  evntsels only need Enable, INT, and CPL fields set.
Packit 577717
- Preliminary support for AMD Family 10h processors.
Packit 577717
  Currently only events that do not need to use the high 32 bits
Packit 577717
  of the event select control registers are expected to work.
Packit 577717
- Fixed driver compilation warnings caused by perfctr needing
Packit 577717
  its own definitions of macros/constants that may or may not
Packit 577717
  be defined in the specific kernel version used.
Packit 577717
- Updated kernel support: 2.6.23-rc9, 2.6.5-7.276 (SuSE).
Packit 577717
Packit 577717
Version 2.6.28, 2007-07-18
Packit 577717
- Fixed path to udev rules file (/etc/udev.d/ -> /etc/udev/).
Packit 577717
- Updated to handle changes in the 2.6.22 kernel on ppc32.
Packit 577717
- Updated to handle changes in the 2.6.22 kernel on x86.
Packit 577717
- Updated kernel support: 2.6.22, 2.6.21, 2.6.18-8.1.8.el5 (RHEL5),
Packit 577717
  2.6.9-55.0.2.EL (RHEL4), and 2.6.9-55.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.27, 2007-04-09
Packit 577717
- Updated INSTALL with instructions for making /dev/perfctr
Packit 577717
  creation and perfctr module autoloading work with udev.
Packit 577717
  These instructions are known to work on Fedora Core 4.
Packit 577717
  Also updated the rpm package accordingly.
Packit 577717
- Updated for the RHEL5 2.6.18-8.1.1.el5 kernel. This kernel
Packit 577717
  removed a ptrace-related function that is used for perfctr's
Packit 577717
  remote-control API. For now, remote-control is disabled in
Packit 577717
  the RHEL5 kernel, but everything else should work.
Packit 577717
- Updated kernel support: 2.6.21-rc6, 2.6.18.2-34 (SuSE),
Packit 577717
  2.6.9-42.0.10.EL (RHEL4).
Packit 577717
Packit 577717
Version 2.6.26, 2007-02-11
Packit 577717
- My old @csd.uu.se email address no longer works. Updated
Packit 577717
  documentation and kernel messages to show my @it.uu.se address.
Packit 577717
- Added driver support for ARM/XScale processors. Overflow
Packit 577717
  interrupts are not yet supported, in part due to conflicts
Packit 577717
  with Intel's ixp400_eth driver. Plain event counting works.
Packit 577717
- Updated kernel support: 2.6.20, 2.6.19, 2.6.9-42.0.8.EL (RHEL4),
Packit 577717
  2.4.34, 2.4.21-47.0.1.EL (RHEL3), 2.6.16.21 (SLES10).
Packit 577717
Packit 577717
Version 2.6.25, 2006-10-15
Packit 577717
- The Intel Core 2 processors are substantially different from
Packit 577717
  the old Core processors. Core 2 processors are now mapped to a
Packit 577717
  new cpu_type PERFCTR_X86_INTEL_CORE2, and must be programmed
Packit 577717
  so that every EVNTSEL used has its Enable flag set. This is
Packit 577717
  consistent with Intel's documentation and observations made by
Packit 577717
  others on later steppings of the Core 2. Early steppings may
Packit 577717
  be more P6-like (master Enable in EVNTSEL0), but as long as a
Packit 577717
  control setup includes EVNTSEL0 it should work on any stepping.
Packit 577717
- Major x86 driver updates for changes in kernel 2.6.19-rc1.
Packit 577717
- Updated kernel support: 2.6.19-rc2, 2.6.18, 2.6.9-42.0.3.EL (RHEL4),
Packit 577717
  and 2.4.34-pre4.
Packit 577717
- Fixed perfex -l/-L to handle unavailability of event set data
Packit 577717
  gracefully and not signal an error in those cases.
Packit 577717
Packit 577717
Version 2.6.24, 2006-09-17
Packit 577717
- Fixed a driver linkage failure in 64-bit x86 kernels when
Packit 577717
  CONFIG_PERFCTR_INIT_TESTS was enabled, caused by an omission
Packit 577717
  in the perfctr-2.6.23 changes to support Intel Core 2 CPUs.
Packit 577717
- Updated kernel support: 2.6.18-rc7, 2.6.9-42.0.2.EL (RHEL4),
Packit 577717
  and 2.4.34-pre2.
Packit 577717
Packit 577717
Version 2.6.23, 2006-08-20
Packit 577717
- Intel Core 2 fixes: detect Core2 processors (Model 15) and
Packit 577717
  allow them to be used in 64-bit builds.
Packit 577717
- Updated kernel support: 2.6.18-rc4, 2.6.17, 2.6.9-34.0.2.EL (RHEL4),
Packit 577717
  2.4.33, 2.4.34-pre1, and 2.4.21-47.EL (RHEL3).
Packit 577717
- The update-kernel script is now able to automatically identify
Packit 577717
  SuSE Linux kernel versions. A SuSE kernel MUST be configured
Packit 577717
  (".config" exists) for the identification to work.
Packit 577717
Packit 577717
Version 2.6.22, 2006-06-02
Packit 577717
- Preliminary support for Intel Core (family 6 model 14) processors.
Packit 577717
- A serious error in the x86 driver's code to identify hyper-threads
Packit 577717
  was fixed. The driver logic is correct but it used a kernel function
Packit 577717
  which does not provide the required behaviour in 64-bit kernels or
Packit 577717
  older 32-bit kernels. As a result bogus data could be input to the
Packit 577717
  hyper-thread detection code, leading to various failures.
Packit 577717
- A change in the 2.6.16 32-bit x86 kernel caused a compilation error
Packit 577717
  when CONFIG_PERFCTR_INIT_TESTS was enabled. Fixed this.
Packit 577717
- Updated kernel support: 2.6.9-34.0.1 (RHEL4), 2.6.17-rc5, and
Packit 577717
  2.4.33-pre3.
Packit 577717
Packit 577717
Version 2.6.21, 2006-04-03
Packit 577717
- Updated kernel support: 2.4.21-40.EL (RHEL3), 2.6.16, and
Packit 577717
  2.6.17-rc1.
Packit 577717
- Updates for internal changes in kernels 2.6.16 and 2.6.17-rc1.
Packit 577717
- Corrected a mistake in perfctr-2.6.20 which caused compilation
Packit 577717
  errors with RHEL3 kernels.
Packit 577717
Packit 577717
Version 2.6.20, 2006-03-12
Packit 577717
- Updated kernel support: 2.6.9-34 (RHEL4), 2.6.16-rc6, and
Packit 577717
  2.4.33-pre2.
Packit 577717
Packit 577717
Version 2.6.19, 2006-01-22
Packit 577717
- Updated ppc32 driver for ppc32/ppc64 kernel merging changes
Packit 577717
  in the 2.6.16-rc1 kernel. The driver now dynamically claims
Packit 577717
  and release the hardware, allowing it to coexist with other
Packit 577717
  PMU drivers such as oprofile.
Packit 577717
- Updated kernel support: 2.6.16-rc1, 2.6.9-22.0.2 (RHEL4).
Packit 577717
Packit 577717
Version 2.6.18, 2006-01-03
Packit 577717
- Added perfctr_get_info() library API procedure, which allows
Packit 577717
  users to acquire information about the system without needing
Packit 577717
  a handle to an open perfctr (per-process or global) state.
Packit 577717
- Rearranged structure marshalling descriptor declarations to
Packit 577717
  increase code sharing for all supported architectures.
Packit 577717
- Updated kernel support: 2.6.15, 2.6.14, 2.6.9-22.0.1 (RHEL4),
Packit 577717
  2.6.5-7.201 (SuSE), 2.4.33-pre1, 2.4.32.
Packit 577717
Packit 577717
Version 2.6.17, 2005-10-02
Packit 577717
- The x86 kernel driver has been updated to work correctly
Packit 577717
  on dual-core P4 processors. Previous versions would fail
Packit 577717
  during CPU detection (on HT DC P4s) or would erroneously
Packit 577717
  restrict access for one of the cores (non-HT DC P4s).
Packit 577717
- Updated kernel support: 2.4.21-37.EL (RHEL3), 2.4.32-rc1,
Packit 577717
  and 2.6.14-rc3.
Packit 577717
Packit 577717
Version 2.6.16, 2005-09-04
Packit 577717
- The ppc32 driver will now compile in kernels that lack Open
Packit 577717
  Firmware support, which is needed for some embedded systems.
Packit 577717
- Updated kernel support: 2.6.9-11.EL (RHEL4), 2.4.21-32.0.1.EL
Packit 577717
  (RHEL3), 2.6.12, 2.6.13, 2.4.31, and 2.4.32-pre3.
Packit 577717
Packit 577717
Version 2.6.15, 2005-05-06
Packit 577717
- Preliminary code in the x86/x86-64 low-level driver to detect
Packit 577717
  multicore AMD K8 processors, and to prevent resource conflicts
Packit 577717
  and an erratum related to northbridge events. On multicore K8s,
Packit 577717
  northbridge events are only allowed when using the global-mode
Packit 577717
  counters API.
Packit 577717
- Updated kernel support: 2.6.9-5.0.5.EL (RHEL4), 2.4.21-27.0.4.EL
Packit 577717
  (RHEL3), 2.4.31-pre1, and 2.6.12-rc3.
Packit 577717
Packit 577717
Version 2.6.14, 2005-04-09
Packit 577717
- Changed vperfctr_open() so that if the thread already has
Packit 577717
  an attached perfctr state, then the call fails with EEXIST.
Packit 577717
  This allows self-monitoring code to detect if it is under
Packit 577717
  the control of an external monitoring agent, before it
Packit 577717
  changes the counters' control setup.
Packit 577717
- Reverted the workaround in perfctr-2.6.13 for the problem
Packit 577717
  that gcc-4.0 snapshots broke the x86/x86-64 low-level driver,
Packit 577717
  as recent gcc-4.0 prereleases seem to work correctly.
Packit 577717
- Updated kernel support: 2.4.30, 2.6.12-rc2, and 2.6.9-5.0.3
Packit 577717
  (RHEL4).
Packit 577717
Packit 577717
Version 2.6.13, 2005-02-13
Packit 577717
- Changed the global-mode counters to allow user-space to
Packit 577717
  disable the in-kernel sampling timer and to move the sampling
Packit 577717
  points into the read system calls. This may improve sampling
Packit 577717
  precision in some scenarios.
Packit 577717
- gcc-4.0 snapshots broke the x86/x86-64 low-level driver.
Packit 577717
  Changed the driver to prevent those problems.
Packit 577717
- Updated kernel support: 2.6.11-rc4, 2.4.30-pre1, and
Packit 577717
  2.4.21-27.0.2 (RHEL3).
Packit 577717
Packit 577717
Version 2.6.12, 2004-12-19
Packit 577717
- PPC32 driver updated to be more robust in its detection of
Packit 577717
  timebase and core clock frequencies. Some information sources
Packit 577717
  can give wrong values for those frequencies, so the driver
Packit 577717
  now tries other more reliable methods first.
Packit 577717
- On x86/x86-64, perfctr_event_codes.h now includes P4 events.
Packit 577717
- On x86-64 libraries will now be installed in PREFIX/lib64/,
Packit 577717
  as per current standards, unless overridden by LIBDIR.
Packit 577717
- Perfex had a bug in which it interpreted all numbers as hex,
Packit 577717
  even those without "0x" prefixes. Perfex now emits warnings
Packit 577717
  for ambiguous numbers. To silence the warnings, (a) prefix
Packit 577717
  hex numbers with "0x" (preferred), or (b) use the "-d" option
Packit 577717
  to enable decimal numbers, which requires "0x" prefixes on
Packit 577717
  hex numbers, or (c) use the "-x" option to force all numbers
Packit 577717
  to be interpreted as hex (deprecated). The "-d" option should
Packit 577717
  be the default, but unfortunately that would break user-level
Packit 577717
  scripts that assumed that "0x"-less numbers are still hex.
Packit 577717
- Changes in examples/signal/ to handle glibc-2.3.3 on PPC32.
Packit 577717
Packit 577717
Version 2.6.11, 2004-11-14
Packit 577717
- Workarounds for a hardware quirk on x86 and x86-64, where
Packit 577717
  interrupts can be delivered some time after the counters have
Packit 577717
  been stopped. Due to scheduling, an interrupt could be taken
Packit 577717
  in the context of an unrelated process, which would prematurely
Packit 577717
  terminate interrupt reporting for the original process.
Packit 577717
- Fixed a bug in the x86 and x86-64 kernels where the context-switch
Packit 577717
  path suspended the previous process' performance counters too late.
Packit 577717
  This could allow an overflow interrupt to be taken in the context
Packit 577717
  of an unrelated process, with effects similar to the hardware quirk
Packit 577717
  described above.
Packit 577717
- PPC32 updates: Enable overflow interrupts on all G4 processors
Packit 577717
  starting with the 7410 Rev 1.3, and all IBM G3 processors starting
Packit 577717
  with the 750FX DD2.3. Add support for MPC7447A and MPC7448.
Packit 577717
- Removed patches for obsolete kernels.
Packit 577717
Packit 577717
Version 2.6.10.3, 2004-10-24
Packit 577717
- Driver modifications to handle two significant changes in
Packit 577717
  the 2.6.10-rc1 kernel.
Packit 577717
- PPC32: added MPC7447A and MPC7448 support.
Packit 577717
- Cleanups to bring the driver closer to the development version.
Packit 577717
Packit 577717
Version 2.6.10.2, 2004-10-19
Packit 577717
- Updated kernel support: 2.6.9, 2.4.28-pre4.
Packit 577717
- Corrected the PPC32 driver's handling of MMCR0 changes due
Packit 577717
  to use of the FCECE or TRIGGER control flags.
Packit 577717
- Fixed a synchronisation error in the interface between
Packit 577717
  the per-process counters driver and the low-level drivers.
Packit 577717
  The error triggered warnings in DEBUG_SPINLOCK_SLEEP-
Packit 577717
  enabled kernels.
Packit 577717
Packit 577717
Version 2.6.10.1, 2004-09-18
Packit 577717
- Fixed a problem causing an incomplete "wrapper" file to be
Packit 577717
  installed as /usr/include/asm/perfctr.h on x86_64 systems.
Packit 577717
Packit 577717
Version 2.6.10, 2004-09-14
Packit 577717
- Eliminated a potential kernel crash on P4 model 3 Prescott
Packit 577717
  processors, due to the driver initialising two control
Packit 577717
  registers that have been removed from P4M3. The P4M3 Nocona
Packit 577717
  does not appear to have been affected by this error.
Packit 577717
- Fixed install procedure to not fail to install the shared
Packit 577717
  library's symbolic links when updating an older installation.
Packit 577717
- Updated kernel support: 2.4.21-20 (RHEL3), 2.4.28-pre3, 2.6.9-rc2.
Packit 577717
Packit 577717
Version 2.6.10-pre1, 2004-08-03
Packit 577717
- x86-64 now uses the same driver and data structures as x86.
Packit 577717
  Intel's 64-bit P4 Xeon should work in the x86-64 kernel.
Packit 577717
  x86-64 application-level data structures have changed.
Packit 577717
- Updated library and example applications to include P4
Packit 577717
  support on x86-64.
Packit 577717
- Fixed update-kernel script to use 'head' in a POSIX
Packit 577717
  compliant way.
Packit 577717
- Added kernel support for the Model 13 Pentium-M.
Packit 577717
- Many code cleanups in the x86 driver.
Packit 577717
- Event 0x76 is now officially CPU_CLK_UNHALTED on AMD64.
Packit 577717
- Updated kernel support: 2.4.27-rc4.
Packit 577717
Packit 577717
Version 2.6.9, 2004-07-27
Packit 577717
- Updated kernel support: 2.4.27-rc3, 2.6.7, 2.6.8-rc2,
Packit 577717
  2.4.21-15.0.3 (RHEL3), 2.6.5-7.95 (SuSE).
Packit 577717
- x86: enforce -fno-unit-at-a-time with gcc-3.4, to prevent
Packit 577717
  kernel crashes due to stack overflow in 2.6 kernels < 2.6.6.
Packit 577717
- x86: do sync_core() before rdtsc() in the internal micro-
Packit 577717
  benchmarking code, to avoid bogus data on K8 processors.
Packit 577717
- x86: prevent stray WRMSR at driver init time, which could
Packit 577717
  disable the NMI watchdog or Oprofile.
Packit 577717
- x86: prevent inlining from breaking code backpatching mechanism.
Packit 577717
- x86: fix CONFIG_X86_LOCAL_APIC=n linkage error in init tests.
Packit 577717
- PPC32: fix to allow 7400/7410 to specify MMCR2[THRESHMULT].
Packit 577717
- PPC32: add support for generic processors using only the
Packit 577717
  timebase register for high-resolution time measurements.
Packit 577717
Packit 577717
Version 2.6.8, 2004-05-29
Packit 577717
- Added support for the IBM PowerPC 750GX processor.
Packit 577717
- Updated kernel support: 2.4.27-pre3, 2.6.7-rc1, 2.6.7-rc1-mm1,
Packit 577717
  2.4.21-15.EL (RHEL3), 2.6.5-1.358 (FC2).
Packit 577717
- Fixed an error in the 2.4.21-193 SuSE kernel patch file which
Packit 577717
  broke compilation on x86-64.
Packit 577717
- Perfctr and Oprofile can now coexist safely in newer kernels,
Packit 577717
  thanks to changes in kernel 2.6.6. Backported support for
Packit 577717
  those changes from perfctr-2.7.1.
Packit 577717
Packit 577717
Version 2.6.7, 2004-05-04
Packit 577717
- Merged several x86_64-specific driver files with their x86
Packit 577717
  counterparts, reducing the amount of duplicated code.
Packit 577717
- Added textual descriptions to the library's P6 event sets.
Packit 577717
  From Bryan O'Sullivan.
Packit 577717
- Changed examples/signal/signal to count retired instructions
Packit 577717
  instead of retired micro-operations on AMD K7. Needed to avoid
Packit 577717
  a loop with the same instruction overflowing indefinitely.
Packit 577717
- Updated kernel support: 2.6.6-rc3, 2.4.27-pre1, 2.4.22-1.2188.nptl
Packit 577717
  (FC1), 2.4.21-9.0.1 (RHEL3), 2.4.20-31.9 (RH9).
Packit 577717
Packit 577717
Version 2.6.6, 2004-02-21
Packit 577717
- Pentium-M has an undocumented local APIC quirk which can stop
Packit 577717
  perfctr interrupt delivery. Added workaround to prevent this.
Packit 577717
- Fixed a bug in x86-64's perfctr interrupt entry code in 2.4 kernels.
Packit 577717
  Luckily, the bug turned out to be harmless (a bogus "rip" value was
Packit 577717
  retrieved, but never used by the higher-level interrupt handler).
Packit 577717
- Added support for Pentium 4 Model 3 processors, which have slight
Packit 577717
  event set changes from earlier models.
Packit 577717
- Updated kernel support: 2.6.3, 2.4.25, 2.4.22-1.2174.nptl (FC1),
Packit 577717
  2.4.20-30.9 (RH9), and 2.4.21-193 (SuSE). Removed support for some
Packit 577717
  obsolete FC1 and RH update kernels.
Packit 577717
Packit 577717
Version 2.6.5, 2004-01-26
Packit 577717
- Relaxed and corrected control checks on Pentium 4:
Packit 577717
  * Allow ESCR.CPL_T1 to be non-zero when using global-mode
Packit 577717
    counters on HT processors.
Packit 577717
  * Don't require ESCR.CPL_T0 to be non-zero. CPL_T0==0b00
Packit 577717
    is safe and potentially useful (global counters on HT).
Packit 577717
  * Require CCCR.ACTIVE_THREAD==0b11 on non-HT processors, as
Packit 577717
    documented in the IA32 Volume 3 manual. Old non-HT P4s
Packit 577717
    seem to work Ok for all four values, but this is neither
Packit 577717
    guaranteed nor useful.
Packit 577717
- Per-process counters driver updated for filp->f_mapping
Packit 577717
  change in 2.6.2-rc kernels.
Packit 577717
- Support 2.4.21-9.EL (RHEL3) and 2.4.22-1.2149.nptl (FC1) kernels.
Packit 577717
- Library updates for PowerPC:
Packit 577717
  * Added cpu_type constants for struct perfctr_info.
Packit 577717
  * Decode PVR and define perfctr_info.cpu_type accordingly.
Packit 577717
  * Added event set descriptions for 604/604e/750.
Packit 577717
Packit 577717
Version 2.6.4, 2004-01-12
Packit 577717
- Added support for PowerPC 604/7xx/74xx processors.
Packit 577717
  * Overflow interrupts are not yet supported due to a hardware
Packit 577717
    erratum affecting many 7xx and early 74xx processors.
Packit 577717
  * The user-space components support PowerPC, but CPU detection
Packit 577717
    and event set descriptions are not yet implemented.
Packit 577717
  * Supported in 2.6.1 and 2.4.23 and newer 2.4 kernels.
Packit 577717
- Updated kernel support: 2.6.1, 2.4.25-pre4, 2.4.22-1.2140.nptl
Packit 577717
  (FC1 update), 2.4.21-4.0.2.EL (RHEL update), and 2.4.20-28.x
Packit 577717
  (RH 7.x/8.0/9 update).
Packit 577717
Packit 577717
Version 2.6.3-pl1, 2004-01-01
Packit 577717
- Updated kernel support: 2.6.1-rc1, 2.4.24-pre3,
Packit 577717
  2.4.22-1.2135.nptl (FC1 update), 2.4.21-6.EL (RHEL Taroon
Packit 577717
  beta update), and 2.4.20-27.x (RH 7.x/8.0/9 update).
Packit 577717
- Moved the x86 performance counter interrupt handler code
Packit 577717
  from the driver source to the kernel, via the patch kit.
Packit 577717
  Needed to cope with changes in RedHat's 2.4.21-6.EL kernel.
Packit 577717
  This change only affects 2.4.21 and later 2.4 kernels.
Packit 577717
Packit 577717
Version 2.6.3, 2003-12-21
Packit 577717
- Fixed a bug where a read of the global-mode counters could
Packit 577717
  fail with EOVERFLOW due to an incorrect structure descriptor.
Packit 577717
  The bug only existed in perfctr-2.6.2.
Packit 577717
  (Thanks to Pavel Machek for reporting this problem.)
Packit 577717
- AMD64 IA32 emulation code cleaned up for kernel 2.4.23.
Packit 577717
- Updated kernel support: 2.6.0, 2.4.24-pre1, 2.4.23,
Packit 577717
  2.4.22-1.2129.nptl (FC1 update), 2.4.21-1.1931.2.393.ent
Packit 577717
  (RHEL Taroon beta), and 2.4.20-24 (RH 7.x/8/9 update).
Packit 577717
- User-space package rpm spec file fixes:
Packit 577717
  * Don't remove /dev/perfctr on package uninstall.
Packit 577717
  * Don't add alias to /etc/modules.conf if it's already there.
Packit 577717
Packit 577717
Version 2.6.2, 2003-11-23
Packit 577717
- libperfctr.so is now installed with proper versioning.
Packit 577717
- ABI control and info structures padded to accommodate some
Packit 577717
  extensions without breaking application/library binary
Packit 577717
  compatibility. ABI version incremented to '5'.
Packit 577717
- Driver checks that only P4 models <= 2 use IQ_ESCR0/1.
Packit 577717
- Added support for Fedora Core 1's 2.4.22-1.2115.nptl kernel.
Packit 577717
- Driver compile fix for AMD64 in SMP 2.6 kernels.
Packit 577717
Packit 577717
Version 2.6.1, 2003-10-05
Packit 577717
- Opening a process' virtual perfctrs is now done via
Packit 577717
  /dev/perfctr instead of /proc/<pid>/perfctr. This is needed
Packit 577717
  due to the changed semantics for /proc/self and /proc/<pid>/
Packit 577717
  in kernel 2.6.0-test6. User-space is not affected since the
Packit 577717
  perfctr-2.6 API and user-space library was prepared for
Packit 577717
  this access method change.
Packit 577717
  User-space code monitoring other processes should use
Packit 577717
  gettid() to identify tasks in 2.6 kernels, since getpid()
Packit 577717
  does the wrong thing for process threads.
Packit 577717
- Driver cleanups from obsoleting 2.4.15 and older kernels.
Packit 577717
- Made examples/global/global.c more robust.
Packit 577717
- Simplified usage with 2.6 kernels: it's no longer necessary
Packit 577717
  to add an 'alias' declaration in /etc/modprobe.conf.
Packit 577717
- Added support for AMD K8 Revision C processors.
Packit 577717
Packit 577717
Version 2.6.0, 2003-09-08
Packit 577717
- The driver now kills a process' performance counters if the
Packit 577717
  process migrates to a forbidden CPU. This ensures that unsafe
Packit 577717
  changes to a process' CPU affinity mask don't break the driver,
Packit 577717
  the hardware state, or other processes. (This is an issue on
Packit 577717
  hyper-threaded P4s only.)
Packit 577717
- A bug fix in perfctr-2.6.0-pre3 broke compiling the driver
Packit 577717
  non-modular in modular 2.4 kernels. Corrected that problem.
Packit 577717
Packit 577717
Version 2.6.0-pre5, 2003-08-31
Packit 577717
- Disabled driver debug code which could printk() in the kernel's
Packit 577717
  context-switch path, as that is disallowed.
Packit 577717
- 2.4.16 is now the oldest supported kernel.
Packit 577717
- Compilation fixes for driver's ia32 emulation code on x86-64.
Packit 577717
Packit 577717
Version 2.6.0-pre4, 2003-08-19
Packit 577717
- Kernel/user-space API switched to a new "sparse marshalling"
Packit 577717
  mechanism, which supports x86 application code on x86-64,
Packit 577717
  and API struct extensions w/o breaking binary compatibility.
Packit 577717
- Prepared the library for the future non-/proc/pid/perfctr API.
Packit 577717
- Fixed a bug in the per-process perfctr creation code. The
Packit 577717
  remote-control interface was racy in preemptible kernels.
Packit 577717
- Fixed a bug in the process exit code for preemptible kernels.
Packit 577717
- Changes to handle 2.6 kernels with the cpumask_t patch (-mm, -osdl):
Packit 577717
  * Driver converted to use cpumask_t API, with compatibility wrapper
Packit 577717
    for cpumask_t-free kernels.
Packit 577717
  * API change: removed the cpus and cpus_forbidden sets from the
Packit 577717
    perfctr_info struct, added new data type and commands for retrieving
Packit 577717
    these sets. (cpumask_t values cannot be exported as-is since their
Packit 577717
    sizes depend on kernel configuration, and the type definition uses
Packit 577717
    'long' which breaks 32/64-bit binary compatibility.)
Packit 577717
  * Updated library and example programs for the API change.
Packit 577717
- Fixed a dependency bug in the library Makefile.
Packit 577717
- Added support for VIA C3 Antaur/Nehemiah processors.
Packit 577717
Packit 577717
Version 2.6.0-pre3, 2003-08-03
Packit 577717
- Replaced 'long' by 'int' in the API structures to eliminate
Packit 577717
  unnecessary ABI incompatibilities between x86 and x86-64.
Packit 577717
- Simplified global-mode perfctrs API: the write-control and
Packit 577717
  read-state commands now operate on a single CPU instead of on
Packit 577717
  a set of CPUs. Added a new start command to start the counters.
Packit 577717
- Added thin library wrappers for per-process perfctr kernel calls.
Packit 577717
  Cleaned up examples/perfex and the library itself.
Packit 577717
- Removed the requirement that CCCR.ACTIVE_THREAD == 3 on P4.
Packit 577717
- Extended cascading should now work on Pentium 4 Model 2 processors.
Packit 577717
- Fixed a bug where the perfctr module's refcount could be zero with
Packit 577717
  code still running in the module. This could race with rmmod in
Packit 577717
  preemptive kernels, and in theory also in SMP kernels.
Packit 577717
Packit 577717
Version 2.6.0-pre2, 2003-07-13
Packit 577717
- Per-process perfctrs API fixes: control data is retrieved using
Packit 577717
  new READ_CONTROL operation, mmap()ed state no longer exposes the
Packit 577717
  control data, the SAMPLE operation is renamed to READ_SUM and
Packit 577717
  now updates a given user-space buffer, non-write operations are
Packit 577717
  permitted on dead perfctrs.
Packit 577717
  Retrieving control explicitly makes the user-visible mmap()ed
Packit 577717
  state binary compatible between x86 and x86-64. The other changes
Packit 577717
  simplify the user-space library and allow perfex to replace raw
Packit 577717
  mmap() accesses with higher-level operations.
Packit 577717
- Driver cleanups, including eliminating many #ifdefs and
Packit 577717
  removing some unnecessary P4-specific driver procedures.
Packit 577717
- Fixes for macro redefinition warnings in the 2.4.22-pre3 kernel.
Packit 577717
- Perfctr library RPM spec file updates from Bryan O'Sullivan.
Packit 577717
Packit 577717
Version 2.6.0-pre1, 2003-07-02
Packit 577717
- Rearranged the data structure holding the counter state to
Packit 577717
  reduce the number of caches lines needed to be touched at key
Packit 577717
  operations. The new representation is also binary compatible
Packit 577717
  between x86 and x86-64, which matters since user-space mmaps() it.
Packit 577717
- Added RPM spec file for the library. (From Bryan O'Sullivan).
Packit 577717
- Patch kit updated for kernels 2.4.22-pre2 and 2.5.73.
Packit 577717
Packit 577717
Version 2.5.5, 2003-06-15
Packit 577717
- Updates for driver model changes in kernel 2.5.71.
Packit 577717
- Minor updates to the library's event descriptions for Pentium 4.
Packit 577717
- Now supports SuSE's 2.4.19.SuSE-206 kernel for SLES 8 users.
Packit 577717
  Autodetection of SuSE kernel versions is not yet implemented:
Packit 577717
  pass "--patch=2.4.19.SuSE-206" to perfctr's update-kernel script
Packit 577717
  to ensure that the correct patch is applied.
Packit 577717
- Patch kit updates for 2.4.21 final and 2.4.20-18 RH kernels.
Packit 577717
Packit 577717
Version 2.5.4, 2003-06-01
Packit 577717
- Corrected the driver's handling of OVF_PMI+FORCE_OVF counters
Packit 577717
  on Pentium 4. This configuration didn't work at all, and
Packit 577717
  lead to various BUG messages from the driver.
Packit 577717
  These restrictions apply to OVF_PMI+FORCE_OVF counters:
Packit 577717
  * The ireset value must be -1.
Packit 577717
  * Once the counter has interrupted once, it will continue
Packit 577717
    to interrupt when the faulting instruction is restarted,
Packit 577717
    causing it to never complete. This problem also occurs
Packit 577717
    for non-FORCE_OVF interrupt-mode counters if the ireset
Packit 577717
    value is of too small magnitude, like -1.
Packit 577717
    This appears to be a P4 hardware quirk. Don't restart
Packit 577717
    FORCE_OVF interrupt-mode counters, and don't use ireset
Packit 577717
    values too small to allow instructions to complete.
Packit 577717
- Updated library's K8 event descriptions to match current
Packit 577717
  documentation. Corrected several omissions and errors.
Packit 577717
- Patch kit updated for kernels 2.5.70 and 2.4.21-rc6.
Packit 577717
Packit 577717
Version 2.5.3.1, 2003-05-21
Packit 577717
- Patch kit updated for recent RedHat 6.2/7.x/8.0/9 update kernels
Packit 577717
  (2.2.24-{6.2.3,7.0.3} and 2.4.20-13.{7,8,9}).
Packit 577717
- Fixed a driver compile warning which occurred when the driver
Packit 577717
  is built as a module in 2.4 SMP kernels using module versions.
Packit 577717
- x86-64 now uses 'long long' for 64-bit sums, like x86. This
Packit 577717
  reduces x86 and x86-64 user-space source code incompatibility.
Packit 577717
Packit 577717
Version 2.5.3, 2003-05-16
Packit 577717
- Added support for the Pentium M processor. It is mostly like
Packit 577717
  a Pentium III with some more events, except that six old
Packit 577717
  Pentium III / Pentium Pro events have been redefined.
Packit 577717
- Added support for K8 in 64-bit mode (the x86_64 kernel arch).
Packit 577717
  Updated driver, user-space library, and example programs.
Packit 577717
  The shared library libperfctr.so is now compiled with -fPIC.
Packit 577717
- K8 bug fix in examples/signal/signal.c: a missing INT flag
Packit 577717
  caused the driver to reject the control setup.
Packit 577717
- P4 event descriptions updated from recent documentation changes.
Packit 577717
Packit 577717
Version 2.5.2, 2003-04-13
Packit 577717
- Updated power management code for the local APIC and NMI
Packit 577717
  watchdog driver model changes in kernel 2.5.67.
Packit 577717
- Timer-based sampling of per-process performance counters is
Packit 577717
  now always enabled: previously it was only done on SMP.
Packit 577717
  Needed to avoid counter inaccuracies on high core-clock CPUs.
Packit 577717
- Fixes to user-space library implementation of remote-control
Packit 577717
  virtual performance counters: open() failed due to a missing
Packit 577717
  return; avoid potential buffer overflow error; fix the "read
Packit 577717
  counters" procedure for the case where the remote process is
Packit 577717
  sampling the time-stamp counter but no performance counters.
Packit 577717
- Added support for RedHat 9's 2.4.20-8 and 2.4.20-9 kernels.
Packit 577717
Packit 577717
Version 2.5.1, 2003-03-23
Packit 577717
- Fixed initialisation on hyper-threading capable P4s in
Packit 577717
  SMP kernels older than 2.4.15 to not signal an error if
Packit 577717
  hyper-threading is disabled: in this case the absence of
Packit 577717
  working set_cpus_allowed() support is not a problem.
Packit 577717
- Fixed two compilation errors in the set_cpus_allowed()
Packit 577717
  emulation affecting old 2.4 kernels configured for SMP.
Packit 577717
- INSTALL file updates.
Packit 577717
Packit 577717
Version 2.5.0, 2003-03-10
Packit 577717
- Added a simple user-space library API for accessing other
Packit 577717
  processes' virtual performance counters. This uses a new
Packit 577717
  type and a new set of operations since remote access has
Packit 577717
  different requirements than accessing one's own counters.
Packit 577717
  Following Mike Marty's suggestion, I left out the process
Packit 577717
  control calls needed around these operations (ptrace() and
Packit 577717
  wait()), so applications must handle that themselves.
Packit 577717
- Added 'make install' support for the user-space components.
Packit 577717
- Driver API cleanups. The 'eventsel_aux[]' array in 'struct
Packit 577717
  perfctr_cpu_control' has been renamed as 'escr[]' and has been
Packit 577717
  moved into the 'p4' sub-structure. (The change highlights the
Packit 577717
  fact that this field was and is P4-only.) The 'version[]' string
Packit 577717
  in 'struct perfctr_info' has been renamed to 'driver_version[]',
Packit 577717
  since perfctr_info now also contains an 'abi_version' field.
Packit 577717
  Some changes in the driver ABI: while not strictly necessary,
Packit 577717
  they clean things up and make room for future changes. The ABI
Packit 577717
  changed anyway from perfctr-2.4, so this shouldn't be a problem.
Packit 577717
- Added a perfctr_cpu_control_print() procedure to the library,
Packit 577717
  and updated the example programs to use it.
Packit 577717
- Updated the perfex example program's help text to describe the
Packit 577717
  syntax and meaning of event specifiers.
Packit 577717
- Patch kit updates for 2.2.24/2.4.18-26(RedHat)/2.5.64 kernels.
Packit 577717
Packit 577717
Version 2.5.0-pre2, 2003-03-03
Packit 577717
- Added a way for user-space to query the driver's ABI version,
Packit 577717
  and updated the library to check it.
Packit 577717
- Fixed <linux/perfctr.h> to not include <asm/perfctr.h> when
Packit 577717
  perfctr hasn't been configured. This allows the patched kernel
Packit 577717
  source to compile cleanly also in archs not supported by perfctr.
Packit 577717
- Major patch kit overhaul. Updated configuration help texts.
Packit 577717
  Removed unnecessary features and patches. Some cleanups. Added
Packit 577717
  aliasing support to the 'update-kernel' script, which allows a
Packit 577717
  patch to serve several kernels (when applicable).
Packit 577717
- The perfctr configuration option was poorly placed. It is now
Packit 577717
  at the end of the "Processor type and features" menu.
Packit 577717
- Removed "notsc" kernel option support from the 2.2 kernel patches.
Packit 577717
  To use the driver with an IDT WinChip (Centaur C6/2/3) CPU now
Packit 577717
  requires a newer kernel with native "notsc" support.
Packit 577717
- Driver fixes for changes in the 2.4.21-pre5 and 2.5.63 kernels.
Packit 577717
Packit 577717
Version 2.5.0-pre1, 2003-02-19
Packit 577717
- Fixed the driver's API to support global-mode perfctrs on 2.5
Packit 577717
  SMP kernels and asymmetric hyper-threaded P4 multiprocessors.
Packit 577717
  Updated examples/global/global.c for the new API.
Packit 577717
- Minor library cleanups. Updated example programs accordingly.
Packit 577717
- API cleanup: Removed obsolete STOP command from the driver
Packit 577717
  for virtual perfctrs. The library now uses CONTROL instead.
Packit 577717
- Proper detection and support for AMD K8 processors. They are
Packit 577717
  similar to the K7s, but the event sets are not identical.
Packit 577717
- The library's event set descriptions have been redesigned and
Packit 577717
  expanded to include unit mask descriptions and descriptions of
Packit 577717
  Intel P4 and AMD K8 events. The etc/perfctr-events.tab text file
Packit 577717
  has been removed since event_codes.h now is generated from the
Packit 577717
  library's data structures.
Packit 577717
Packit 577717
Version 2.4.5, 2003-02-09
Packit 577717
- Corrected the unit mask definition for the K7 SYSTEM_REQUEST_TYPE
Packit 577717
  event in etc/perfctr-events.tab: WC is 0x02 not 0x04.
Packit 577717
- Fixed two compile warnings which could be triggered in 2.5 kernels.
Packit 577717
- Patch kit updates for 2.4.21-pre4/2.4.18-24(RedHat)/2.5.59-osdl2 kernels.
Packit 577717
Packit 577717
Version 2.4.4, 2003-01-18
Packit 577717
- Fixed a context-switch bug where an interrupt-mode counter could
Packit 577717
  increment unexpectedly, and also miss the overflow interrupt.
Packit 577717
- Fixed some ugly log messages the new HT P4 support code added
Packit 577717
  in perfctr-2.4.3 could generate at driver initialisation time.
Packit 577717
- Added preliminary support for AMD K8 processors with the
Packit 577717
  regular 32-bit x86 kernel. The K8 performance counters appear
Packit 577717
  to be identical or very similar to the K7 performance counters.
Packit 577717
Packit 577717
Version 2.4.3, 2002-12-11
Packit 577717
- Support for hyper-threaded Pentium 4s added. In a HT P4, the
Packit 577717
  two logical processors share the performance counter state.
Packit 577717
  HT P4s are therefore _asymmetric_ multi-processors, and the
Packit 577717
  driver enforces CPU affinity masks on users of per-process
Packit 577717
  performance counters to avoid resource conflicts. (Users are
Packit 577717
  restricted to logical processor #0 in each physical CPU.)
Packit 577717
  Limitations:
Packit 577717
  * The kernel mechanism for updating a process' CPU affinity
Packit 577717
    mask uses no or very weak locking, which makes certain race
Packit 577717
    conditions possible that can break the driver's CPU affinity
Packit 577717
    mask restrictions. For now, users should NOT use the
Packit 577717
    sched_setaffinity() system call on processes using per-process
Packit 577717
    performance counters.
Packit 577717
  * Global-mode performance counters don't work on HT P4s due to
Packit 577717
    limitations in the API. This will be fixed in perfctr-2.5.
Packit 577717
  * 2.2 kernels don't have CPU affinity masks, and therefore can't
Packit 577717
    support HT P4s.
Packit 577717
Packit 577717
Version 2.4.2, 2002-11-25
Packit 577717
- Fixed a driver bug where it could fail to prevent simultaneous
Packit 577717
  use of global-mode and per-process performance counters.
Packit 577717
- Made the driver safe for preemptible 2.5 kernels.
Packit 577717
- New patches for RedHat update kernels 2.2.22-6.2.2, 2.2.22-7.0.2,
Packit 577717
  2.4.18-18.7.x, and 2.4.18-18.8.0.
Packit 577717
Packit 577717
Version 2.4.1, 2002-10-12
Packit 577717
- Support RedHat 8.0's 2.4.18-14 kernel. Building perfctr as
Packit 577717
  a module caused a namespace clash in this kernel. The fix
Packit 577717
  required a change to the driver's kernel-resident glue code.
Packit 577717
Packit 577717
Version 2.4.0, 2002-09-26
Packit 577717
- Fixed an overly strict access control check which prevented
Packit 577717
  opening another process' /proc/<pid>/perfctr when the driver
Packit 577717
  was built as a module.
Packit 577717
- Updates for kernels 2.2.22, 2.4.18-10-redhat, 2.4.20-pre8, 2.5.36.
Packit 577717
Packit 577717
Version 2.4.0-pre2, 2002-08-27
Packit 577717
- vperfctr_control() now allows the user to specify that some PMC
Packit 577717
  sums are not to be cleared when updating the control.
Packit 577717
  There is a new bitmap field `preserve' in struct vperfctr_control:
Packit 577717
  if bit i is set then PMC(i)'s sum is not cleared.
Packit 577717
  `preserve' is a simple `unsigned long' for now, since this type
Packit 577717
  fits all currently known CPU types.
Packit 577717
  This change breaks binary compatibility, but user-space code which
Packit 577717
  clears the entire control record before filling in relevant fields
Packit 577717
  will continue to work as before after a recompile.
Packit 577717
  This feature removes a limitation which some people felt was a
Packit 577717
  problem for some usage scenarios.
Packit 577717
Packit 577717
Version 2.4.0-pre1, 2002-08-12
Packit 577717
- The kernel driver has an initial implementation of a new
Packit 577717
  remote-control API for virtual per-process perfctrs.
Packit 577717
  A monitor process may access a target process' perfctrs via
Packit 577717
  open(), mmap(), and ioctl() on the target's /proc/pid/perfctr.
Packit 577717
  For open() and ioctl(), the monitor must hold the target under
Packit 577717
  ptrace ATTACH control. The user-space library and examples have
Packit 577717
  not been updated for the new API.
Packit 577717
Packit 577717
Version 2.3.12, 2002-08-12
Packit 577717
- Updated patch kit for the 2.4.19 final kernel.
Packit 577717
- Spelling fix in INSTALL.
Packit 577717
- Minor driver code size reduction on uniprocessor kernels.
Packit 577717
Packit 577717
Version 2.3.11, 2002-07-21
Packit 577717
- Interrupt-mode performance counters now have accumulated sums.
Packit 577717
  The library procedures vperfctr_read_pmc() and vperfctr_read_ctrs()
Packit 577717
  can now retrieve the sums of interrupt-mode counters.
Packit 577717
- Corrected the name of K7 event 0x42 to DATA_CACHE_REFILLS_FROM_L2.
Packit 577717
Packit 577717
Version 2.3.10, 2002-07-19
Packit 577717
- Added a script, `update-kernel', to simplify the process of
Packit 577717
  patching the kernel source code. See INSTALL for details.
Packit 577717
- The counter and control registers are now cleared when the
Packit 577717
  driver is idle. This should allow the counter hardware to
Packit 577717
  power down when not used, especially on P4.
Packit 577717
- Some Pentium MMX and Pentium Pro processors have an erratum
Packit 577717
  which causes System Management Mode to shut down if user-space
Packit 577717
  has been granted access to the RDPMC instruction. The driver
Packit 577717
  now avoids granting RDPMC access on the affected processors.
Packit 577717
  The user-space library makes this change transparent.
Packit 577717
- New CPU type code for Model 2 Pentium 4s, due to a few but
Packit 577717
  significant changes between Model 0 and 1 and Model 2 CPUs.  
Packit 577717
- The driver now supports Replay Tagging on the Pentium 4.
Packit 577717
  The perfex program has been updated to allow users to specify
Packit 577717
  values to store in PEBS_ENABLE and PEBS_MATRIX_VERT.
Packit 577717
  For example, the following command could be use to count the
Packit 577717
  number of L1 cache read misses on a Pentium 4:
Packit 577717
Packit 577717
  perfex -e 0x0003B000/0x12000204@0x8000000C --p4pe=0x01000001 --p4pmv=0x1 some_program
Packit 577717
Packit 577717
  Explanation: IQ_CCCR0 is bound to CRU_ESCR2, CRU_ESCR2 is set up
Packit 577717
  for replay_event with non-bogus uops and CPL>0, and PEBS_ENABLE
Packit 577717
  and PEBS_MATRIX_VERT are set up for the 1stL_cache_load_miss_retired
Packit 577717
  metric. Note that bit 25 is NOT set in PEBS_ENABLE.
Packit 577717
Packit 577717
Version 2.3.9, 2002-06-27
Packit 577717
- Pentium 4 bug fix: An error in older revisions of Intel's IA32
Packit 577717
  Volume 3 manual caused the driver to program the wrong control
Packit 577717
  register in a few cases, affecting uses of the uop_type event.
Packit 577717
  Revision -007 of Intel document #245472 corrects the error,
Packit 577717
  and the driver has been updated accordingly.
Packit 577717
Packit 577717
Version 2.3.8.1, 2002-06-27
Packit 577717
- Regenerated the patch file for RedHat's 2.4.18-5 kernel. The
Packit 577717
  patch file in 2.3.8 only contained an error message from 'diff'.
Packit 577717
Packit 577717
Version 2.3.8, 2002-06-26
Packit 577717
- Added counter overflow interrupt support for Intel P4.
Packit 577717
- New kernel support: standard kernels 2.2.21 and 2.4.19-rc1,
Packit 577717
  and RedHat kernels 2.2.19-7.0.16, 2.4.9-34, and 2.4.18-5.
Packit 577717
- API changes: Removed unused and obsolete fields from the vperfctr
Packit 577717
  state and control objects. Added fields to perfctr_cpu_control
Packit 577717
  to enable future support for P4 replay tagging events.
Packit 577717
  Incremented the vperfctr mmap() binary layout magic number.
Packit 577717
- Changed the "make" rule in INSTALL to build "vmlinux" before
Packit 577717
  "modules". This change is needed for RedHat kernels.
Packit 577717
- Added build of a shared (.so) version of the user-space library.
Packit 577717
- When changing a process' vperfctr control data, the TSC sum
Packit 577717
  is now preserved if the next control state includes the TSC.
Packit 577717
  It used to be preserved only if both the previous and next states
Packit 577717
  included the TSC. The difference matters when a running TSC is
Packit 577717
  stopped and then restarted by a STOP;CONTROL command sequence.
Packit 577717
- Driver cleanups. Merged P6 and K7 driver procedures.
Packit 577717
Packit 577717
Version 2.3.7, 2002-04-14
Packit 577717
- Added Pentium 4 support to examples/perfex/. The full
Packit 577717
  syntax of an event specifier is now "evntsel/aux@pmc".
Packit 577717
  All three components are 32-bit processor-specific numbers,
Packit 577717
  written in decimal or hexadecimal notation.
Packit 577717
Packit 577717
  "evntsel" is the primary processor-specific event selection
Packit 577717
  code to use for this event. This field is mandatory.
Packit 577717
Packit 577717
  "/aux" is used when additional event selection data is
Packit 577717
  needed. For the Pentium 4, "evntsel" is put in the counter's
Packit 577717
  CCCR register, and "aux" is put in the associated ESCR
Packit 577717
  register. No other processor currently needs this field.
Packit 577717
Packit 577717
  "@pmc" describes which CPU counter number to assign this
Packit 577717
  event to. When omitted, the events are assigned in the
Packit 577717
  order listed, starting from 0. Either all or none of the
Packit 577717
  event specifiers should use the "@pmc" notation.
Packit 577717
  Explicit counter assignment via "@pmc" is required on
Packit 577717
  Pentium 4 and VIA C3 processors.
Packit 577717
Packit 577717
  As an example, the following command could be used to count
Packit 577717
  the number of retired instructions on a Pentium 4:
Packit 577717
Packit 577717
  perfex -e 0x00039000/0x04000204@0x8000000C some_program
Packit 577717
Packit 577717
  Explanation: Program IQ_CCCR0 with required flags, ESCR select 4
Packit 577717
  (== CRU_ESCR0), and Enable. Program CRU_ESCR0 with event 2
Packit 577717
  (instr_retired), NBOGUSNTAG, CPL>0. Map this event to IQ_COUNTER0
Packit 577717
  (0xC) with fast RDPMC enabled.
Packit 577717
- The driver now permits cascading counters on the Pentium 4.
Packit 577717
- Preliminary driver infrastructure to support ptrace(ATTACH)
Packit 577717
  for a future remote-control interface to per-process counters.
Packit 577717
- Driver and patch kit updated for the APIC interrupt entries
Packit 577717
  changes in kernel 2.5.8-pre3.
Packit 577717
Packit 577717
Version 2.3.6, 2002-03-21
Packit 577717
- Fixed a problem with caused "BUG! resuming non-suspended perfctr"
Packit 577717
  warnings when running PAPI's test cases with a DEBUG-compiled
Packit 577717
  perfctr driver. There was no actual error, only a mismatch between
Packit 577717
  the debug code and the code for changing event selection data.
Packit 577717
- Fixed a time-stamp counter accounting error when user-space
Packit 577717
  resumed interrupt-mode perfctrs with the VPERFCTR_IRESUME ioctl.
Packit 577717
Packit 577717
Version 2.3.5, 2002-03-17
Packit 577717
- Multiprocessor AMD K7 machines should work now. A bug in current
Packit 577717
  2.2/2.4/2.5 kernels prevented correct CPU identification on these
Packit 577717
  machines, causing crashes. The driver now works around this bug.
Packit 577717
- Added support for the VIA C3 Ezra-T processor.
Packit 577717
- Added some support for interrupt-mode counters to the library.
Packit 577717
  Cleaned up examples/signal/.
Packit 577717
- Added links in OTHER to John Reiser's tsprof and Troy Baer's
Packit 577717
  lperfex tools.
Packit 577717
Packit 577717
Version 2.3.4, 2002-01-23
Packit 577717
- More detailed installation instructions in INSTALL.
Packit 577717
- Experimental support for at-retirement counting on Pentium 4.
Packit 577717
  Updated examples/global/ to count FLOPS on Pentium 4.
Packit 577717
- Fixed uses of __FUNCTION__ to comply with changes in GCC 3.0.3.
Packit 577717
Packit 577717
Version 2.3.3, 2001-12-31
Packit 577717
- Added support for the 2.4.16 and 2.4.17 kernels.
Packit 577717
- SMP bug fixed: if a process using interrupt-mode counters migrates
Packit 577717
  from CPU1 to CPU2 and then back to CPU1, then it could incorrectly
Packit 577717
  resume the stale state cached in CPU1.
Packit 577717
- P6 bug fixed: when a process resumed, it could inadvertently activate
Packit 577717
  a suspended interrupt-mode counter belonging to the previous process
Packit 577717
  using the performance counters.
Packit 577717
- Pentium 4 bug fixed: could fail to update the control registers on a
Packit 577717
  context switch.
Packit 577717
- Removed the "pmc_map[] must be the identity function" restriction
Packit 577717
  from P6 and K7.
Packit 577717
- Updated examples/global/global.c: added Pentium 4 support
Packit 577717
  (preliminary, counting MIPS not FLOPS), corrected VIA C3 handling,
Packit 577717
  and corrected 32-bit integer overflow problems affecting fast CPUs.
Packit 577717
- Removed perfctr_evntsel_num_insns() from the library: the interface
Packit 577717
  could not support the Pentium 4. examples/self/self.c now does the
Packit 577717
  setup all by itself, with Pentium 4 support.
Packit 577717
Packit 577717
Version 2.3.2, 2001-11-19
Packit 577717
- Corrected an error in the driver's mapping from counter number
Packit 577717
  to control registers on the Pentium 4. Counter 17 didn't work,
Packit 577717
  and attempts to use it could have disturbed other counters as well.
Packit 577717
- Fixed a minor omission in the Pentium 4 initialisation code.
Packit 577717
Packit 577717
Version 2.3.1, 2001-11-06
Packit 577717
- New patches for kernels 2.2.20, 2.4.9-13 (RedHat 7.2 update),
Packit 577717
  2.4.13-ac5, and 2.4.14. Minor cleanup in the P4 driver code.
Packit 577717
Packit 577717
Version 2.3, 2001-10-24
Packit 577717
- Added support for multiple interrupt-mode virtual perfctrs
Packit 577717
  with automatic restart. Updated the signal delivery interface
Packit 577717
  to pass a bitmask describing which counters overflowed; the
Packit 577717
  siginfo si_code is now fixed as SI_PMC_OVF (fault-class).
Packit 577717
- Added EXPORT_NO_SYMBOLS to init.c, for compatibility with
Packit 577717
  announced changes in modutils 2.5.
Packit 577717
- Patch set updated for recent kernels.
Packit 577717
Packit 577717
Version 2.2, 2001-10-09
Packit 577717
- Added preliminary Pentium 4 support to the driver, but only for
Packit 577717
  the simple basic features. The example applications have not
Packit 577717
  been updated, since I don't yet have a Pentium 4 for testing.
Packit 577717
Packit 577717
Version 2.1.4, 2001-09-30
Packit 577717
- Added -l/-L (--list/--long-list) options to examples/perfex
Packit 577717
  to have it list the current CPU's available events.
Packit 577717
- Added 'set of events' descriptors for each supported CPU type
Packit 577717
  to the library, and changed it to be a standard archive file.
Packit 577717
- Performance counter interrupts now work in standard kernels,
Packit 577717
  starting with kernel 2.4.10. Updated README.
Packit 577717
Packit 577717
Version 2.1.3, 2001-09-13
Packit 577717
- Fixed a problem which prevented compiling the driver as a module
Packit 577717
  in kernels older than 2.2.20pre10 if CONFIG_KMOD was disabled.
Packit 577717
- Cleaned up command-line option processing in perfex. It now
Packit 577717
  uses the GNU getopt library and accepts long option names.
Packit 577717
- Fixed a typo in perfctr-events.tab (P6's INST_DECODED was
Packit 577717
  misspelled as INST_DECODER), and updated/corrected several
Packit 577717
  unit mask descriptions.
Packit 577717
- Replaced most occurrences of "VIA Cyrix III / C3" with "VIA C3".
Packit 577717
Packit 577717
Version 2.1.2, 2001-09-05
Packit 577717
- Added MODULE_LICENSE() tag, for compatibility with the tainted/
Packit 577717
  non-tainted kernel stuff being put into 2.4.9-ac and modutils.
Packit 577717
- The VIA C3 should be supported properly now, thanks to tests run
Packit 577717
  by Dave Jones @ SuSE which clarified some aspects of the C3.
Packit 577717
- Minor bug fix in the perfctr interrupt assembly code.
Packit 577717
  (Inherited from the 2.4 kernel. Fixed in 2.4.9-ac4.)
Packit 577717
Packit 577717
Version 2.1.1, 2001-08-28
Packit 577717
- Fixed a bug in the finalise backpatching code, which could
Packit 577717
  cause a kernel hang in some configurations.
Packit 577717
- Updated for kernel 2.4.9-ac3, which required changes to
Packit 577717
  avoid conflicts in the %cr4 access methods.
Packit 577717
- Preliminary code to detect Pentium 4 processors with Performance
Packit 577717
  Monitoring features available.
Packit 577717
- Minor %cr4-related cleanups.
Packit 577717
- Minor documentation updates.
Packit 577717
- Added a link in OTHER to Curtis Janssen's vprof tool.
Packit 577717
Packit 577717
Version 2.1, 2001-08-19
Packit 577717
- Fixed a call backpatching bug, caused by an incompatibility
Packit 577717
  between the 2.4 and 2.2 kernels' xchg() macros.
Packit 577717
- Fixed a bug where an attempt to use /proc/<pid>/perfctr on an
Packit 577717
  unsupported processor would cause a (well-behaved) kernel oops.
Packit 577717
- The WinChip configuration option has been removed, and WinChip
Packit 577717
  users should instead pass "notsc" as a boot-time kernel parameter.
Packit 577717
  This permitted a cleanup of the driver and the 2.4 kernel patches,
Packit 577717
  at the expense of more code in the 2.2 kernel patches to implement
Packit 577717
  "notsc" support.
Packit 577717
Packit 577717
Version 2.0.1, 2001-08-14
Packit 577717
- The "redirect call" backpatching code in the low-lever driver
Packit 577717
  has been changed again. The change in 2.0-pre6 was insufficient,
Packit 577717
  due to a nasty SMP-related erratum in all Intel P6 processors.
Packit 577717
- Added support for 2.4.8/2.4.8-ac1 kernels.
Packit 577717
- Removed an obsolete check from the WinChip support code.
Packit 577717
Packit 577717
Version 2.0, 2001-08-08
Packit 577717
- Resurrected partial support for interrupt-mode virtual perfctrs.
Packit 577717
  virtual.c permits a single i-mode perfctr, in addition to TSC
Packit 577717
  and a number of a-mode perfctrs. BUG: The i-mode PMC must be last,
Packit 577717
  which constrains CPUs like the P6 where we currently restrict
Packit 577717
  the pmc_map[] to be the identity mapping. (Not a problem for
Packit 577717
  K7 since it is symmetric, or P4 since it is expected to use a
Packit 577717
  non-identity pmc_map[].)
Packit 577717
- Bug fix in perfctr_cpu_update_control(): start by clearing cstatus.
Packit 577717
  Prevents a failed attempt to update the control from leaving the
Packit 577717
  object in a state with old cstatus != 0 but new control.
Packit 577717
Packit 577717
Version 2.0-pre7, 2001-08-07
Packit 577717
- Updated user-space library:
Packit 577717
  * Coding tweaks to attempt to make gcc (various versions) generate
Packit 577717
    better code. (Not entirely successful. May have to resort to
Packit 577717
    hand-written assembly code.)
Packit 577717
  * New vperfctr_read_ctrs() sampling procedure.
Packit 577717
  * New perfctr_print_info() helper procedure.
Packit 577717
- Updated example applications:
Packit 577717
  * Use the library's perfctr_print_info() for consistent output.
Packit 577717
  * Counts are now printed in decimal, not hex.
Packit 577717
  * 'perfex' now checks for data layout mismatch when the child
Packit 577717
    process' virtual perfctr is mmap:ed into user space.
Packit 577717
  * 'self' uses the new vperfctr_read_ctrs() sampling procedure.
Packit 577717
  * 'signal' compiles again.
Packit 577717
- Cleaned up the driver's debugging code.
Packit 577717
- Internal driver rearrangements. The low-level driver (x86) now handles
Packit 577717
  sampling/suspending/resuming counters. Merged counter state (sums and
Packit 577717
  start values) and CPU control data to a single "CPU state" object.
Packit 577717
  This simplifies the high-level drivers, and permits some optimisations
Packit 577717
  in the low-level driver by avoiding the need to buffer tsc/pmc samples
Packit 577717
  in memory before updating the accumulated sums (not yet implemented).
Packit 577717
- Removed WinChip "fake TSC" support. The user-space library can now
Packit 577717
  sample with slightly less overhead on sane processors.
Packit 577717
Packit 577717
Version 2.0-pre6, 2001-07-27
Packit 577717
- Sampling bug fix for SMP. Normally processes are suspended and
Packit 577717
  resumed many times per second, but on SMP machines it is possible
Packit 577717
  for a process to run for a long time without being suspended.
Packit 577717
  Since sampling is performed at the suspend and resume actions,
Packit 577717
  a performance counter may wrap around more than once between
Packit 577717
  sampling points. When this occurs, the accumulated counts will
Packit 577717
  be highly variable and much lower than expected.
Packit 577717
  A software timer is now used to ensure that sampling deadlines
Packit 577717
  aren't missed on SMP machines.
Packit 577717
- Bug fix in the x86 "redirect call" backpatching routine.
Packit 577717
- Bug fix in the internal debugging code (CONFIG_PERFCTR_DEBUG).
Packit 577717
- Minor performance tweak for the P5/P5MMX read counters procedures.
Packit 577717
- To avoid undetected data layout mismatches, the user-space library
Packit 577717
  now checks the data layout version field in a virtual perfctr when
Packit 577717
  it is being mmap:ed into the user's address space.
Packit 577717
Packit 577717
Version 2.0-pre5, 2001-06-11
Packit 577717
- Structure layout changes to reduce sampling overheads.
Packit 577717
  The ABI changed slightly, but I hope this is the last such
Packit 577717
  change for some time.
Packit 577717
- Fixed two bugs related to the interaction of interrupt-mode
Packit 577717
  perfctrs and the lazy EVNTSEL MSR update cache in the low-level
Packit 577717
  driver. (Interrupt-mode support is still disabled in the
Packit 577717
  high-level drivers, however.)
Packit 577717
- Fixed a bug in examples/perfex where it forgot to initialise
Packit 577717
  the pmc_map[] control field. This caused the driver to refuse
Packit 577717
  attempts to use more than one counter. The current fix is
Packit 577717
  for P6/K7 only; a general "fixup" procedure will be added to
Packit 577717
  the user-space library later.
Packit 577717
- Added a CONFIG_PERFCTR_DEBUG option to enable some internal
Packit 577717
  consistency checking in the driver. This is a temporary
Packit 577717
  measure intended to help debug two open problem reports.
Packit 577717
Packit 577717
Version 2.0-pre4, 2001-04-30
Packit 577717
- Some module usage accounting changes which should make automatic
Packit 577717
  module loading and unloading more robust in 2.2 kernels.
Packit 577717
- Internal cleanups and a few minor bug fixes.
Packit 577717
- Some API naming changes, and O_CREAT can now be used to control
Packit 577717
  whether opening /proc/self/perfctr should create and attach
Packit 577717
  a vperfctr or not.
Packit 577717
- The user-space library has been updated for the new API.
Packit 577717
  pmc_map[] is used to map from "virtual counter i" to an actual
Packit 577717
  PMC index to be used by RDPMC -- the VIA Cyrix III / C3 is now
Packit 577717
  able to sample in user-space even though it has no PMC(0).
Packit 577717
  The layout of pmc_map[] is CPU-specific; see x86.c for details.
Packit 577717
  Since TSC sampling is specified explicitly now, perfctr_cpu_nrctrs()
Packit 577717
  has been changed to return the number of performance counters
Packit 577717
  _excluding_ the TSC.
Packit 577717
- The example programs have been updated for the new API, with the
Packit 577717
  exception of signal.c which is still non-functional.
Packit 577717
- The perfex.c example works better now that the API has a consistent
Packit 577717
  one-evntsel-per-counter model even for Intel P5-like CPUs.
Packit 577717
- The global.c example has been fixed to not cause a division by zero
Packit 577717
  on WinChip CPUs lacking a working TSC.
Packit 577717
Packit 577717
Version 2.0-pre3, 2001-04-17
Packit 577717
- Preliminary implementation of the new data structures and API
Packit 577717
  is in place. The user-space components have not yet been updated.
Packit 577717
  Interrupt-mode virtual perfctrs have been disabled pending
Packit 577717
  completion of necessary CPU driver support.
Packit 577717
- Now uses "VIA_C3" as the family name for both the VIA C3 and
Packit 577717
  the slightly older VIA Cyrix III processors. "VIA_CYRIX_III"
Packit 577717
  was just too clumsy and confusing. (It's not a Cyrix at all.)
Packit 577717
- Fixed etc/perfctr-events.tab to make Cyrix' event codes agree
Packit 577717
  with reality rather than with the Cyrix manuals. The manuals
Packit 577717
  ignore the fact that the 7-bit event codes are stored in two
Packit 577717
  distinct bit fields in the CESR.
Packit 577717
Packit 577717
Version 2.0-pre2, 2001-04-07
Packit 577717
- Removed automatic inheritance of per-process virtual perfctrs
Packit 577717
  across fork(). Unless wait4() is modified, it's difficult to
Packit 577717
  communicate the final values back to the parent: the now
Packit 577717
  abandoned code did this in a way which made it impossible
Packit 577717
  to distinguish one child's final counts from another's.
Packit 577717
  Inheritance can be implemented in user-space anyway, so the
Packit 577717
  loss is not great. The interface between the driver and the rest
Packit 577717
  of the kernel is now smaller and simpler than before.
Packit 577717
- Dropped support for kernels older than 2.2.16.
Packit 577717
- Preliminary support for the VIA C3 processor.
Packit 577717
Packit 577717
Version 2.0-pre1, 2001-03-25
Packit 577717
- First round of API and coding changes/cleanups for version 2.0.
Packit 577717
  The driver version in struct perfctr_info is now a string instead
Packit 577717
  of the previous major/minor/micro version number mess.
Packit 577717
- Internal cleanups and minor fixes.
Packit 577717
- Fixed an include file problem which made some C compilers (not gcc)
Packit 577717
  fail when compiling user-space applications using the driver.
Packit 577717
Packit 577717
Version 1.9, 2001-02-13
Packit 577717
- Fixed compilation problems for 2.2 and SMP kernels.
Packit 577717
- Corrected VIA Cyrix III support. The "VIA Cyrix III" product
Packit 577717
  has apparently used two distinct CPUs. Initial CPUs were a
Packit 577717
  Cyrix design (Joshua) while current CPUs apparently are a
Packit 577717
  Centaur design (Samuel). Added support for "Samuel" CPUs.
Packit 577717
- Two corrections in the K7 perfctr event list.
Packit 577717
- Small tweaks to vperfctr interrupt handling.
Packit 577717
- Added preliminary interrupt-mode support for AMD K7.
Packit 577717
Packit 577717
Version 1.8, 2001-01-23
Packit 577717
- Added preliminary interrupt-mode support to virtual perfctrs.
Packit 577717
  Currently for P6 only, and the local APIC must have been enabled.
Packit 577717
  Tested on 2.4.0-ac10 with CONFIG_X86_UP_APIC=y.
Packit 577717
  When an i-mode vperfctr interrupts on overflow, the counters are
Packit 577717
  suspended and a user-specified signal is sent to the process. The
Packit 577717
  user's signal handler can read the trap pc from the mmap:ed vperfctr,
Packit 577717
  and should then issue an IRESUME ioctl to restart the counters.
Packit 577717
Packit 577717
Version 1.7, 2001-01-01
Packit 577717
- Updated patches for kernels 2.2.18 and 2.4.0-prerelease.
Packit 577717
- Removed the need to ./configure the library before building it.
Packit 577717
- /dev/perfctr is now only used for global-mode perfctrs.
Packit 577717
- Library API changes to reflect new /dev/perfctr semantics.
Packit 577717
- Backported /proc/self/perfctr to kernels 2.2.13-2.2.17.
Packit 577717
- /proc/self/perfctr is now mandatory for virtual perfctrs.
Packit 577717
- Fixed a VIA Cyrix III CPU detection bug.
Packit 577717
- Fixed a minor problem in the 2.4 patch to drivers/Makefile.
Packit 577717
- Changed examples/global/global.c to count MFLOP/s instead
Packit 577717
  of branches and branch prediction hits/misses.
Packit 577717
Packit 577717
Version 1.6, 2000-11-21
Packit 577717
- Updated for kernels 2.4.0-test11 and 2.2.18pre22.
Packit 577717
- Preliminary implementation of /proc/self/perfctr as a more direct
Packit 577717
  way of accessing one's virtual perfctrs. (If this works out,
Packit 577717
  the /dev/perfctr interface to vperfctrs will be phased out.)
Packit 577717
  The driver can still be built as an autoloadable module.
Packit 577717
  (For now, only supported in 2.2.18pre22 and 2.4.0-test11.)
Packit 577717
- Some user-space library API changes to accommodate /proc/self/perfctr.
Packit 577717
- The per-process virtual TSC is no longer restarted from zero
Packit 577717
  when the perfctrs are reprogrammed, which allows it to be used
Packit 577717
  as a high-res per-process clock (i.e. gethrvtime()).
Packit 577717
- Rewrote the `command' example application to use perfctr inheritance
Packit 577717
  instead of the recently removed "remote control" facility.
Packit 577717
- WinChip documentation updates and corrections.
Packit 577717
Packit 577717
Version 1.5, 2000-09-03
Packit 577717
- The virtual perfctr "remote control" facility has been removed,
Packit 577717
  resulting in major simplifications in the driver.
Packit 577717
  Since version 1.3 of the driver, the most common application of
Packit 577717
  the remote control facility (to record events from unmodified
Packit 577717
  applications) can be more easily implemented using the perfctr
Packit 577717
  inheritance facility (perfctr control setup is inherited from parent
Packit 577717
  to child processes, and a child's event counts are propagated back
Packit 577717
  to its parent). Removing the remote control facility simplified
Packit 577717
  resource management and eliminated a number of concurrency issues.
Packit 577717
- Code cleanups. Dropped support for intermediate 2.3 and early 2.4
Packit 577717
  kernels. The code now supports kernels 2.2.xx and 2.4.0-test7 or
Packit 577717
  later only (via a 2.4-on-2.2 simulation layer).
Packit 577717
- A number of changes to the user-space library. The API is now thread-
Packit 577717
  safe (the library has no internal state), and the naming scheme has
Packit 577717
  been simplified due to the removal of the remote-control facility.
Packit 577717
  The zero-syscall perfctr sampling code has been rewritten and should
Packit 577717
  be faster and more robust. (It fixed a sampling problem one user had
Packit 577717
  on a 4-way MP box.)
Packit 577717
Packit 577717
Version 1.4, 2000-08-11
Packit 577717
- Updates to comply which changes in 2.4.0-test kernels, in particular
Packit 577717
  concerning module owner and use count tracking, and the Virtual File
Packit 577717
  System (VFS) infrastructure.
Packit 577717
- A bug which prevented reclaiming VFS resources (dentries and
Packit 577717
  inodes) allocated to virtual perfctrs has been fixed. This bug
Packit 577717
  affected both 2.2.x and 2.4.0-test kernels.
Packit 577717
Packit 577717
Version 1.3, 2000-06-29
Packit 577717
- Implemented inheritance for per-process virtual perfctrs.
Packit 577717
  This means that a child's performance-monitoring counts are
Packit 577717
  attributed to its parent, similarly to how time is handled.
Packit 577717
  The parent must have active perfctrs before forking off the child,
Packit 577717
  and neither parent nor child must have reprogrammed its perfctrs
Packit 577717
  when the child exits, otherwise no propagation occurs.
Packit 577717
  Threads created implicitly by the kernel via request_module()
Packit 577717
  are protected from perfctr inheritance.
Packit 577717
- Added an example program to illustrate inheritance.
Packit 577717
- Fixed two small buglets in the driver.
Packit 577717
- Preliminary changes to make the user-space library thread-safe.
Packit 577717
- Updated driver for kernel 2.4.0-test2.
Packit 577717
- The driver now exports the CPU clock frequency to user-space,
Packit 577717
  to enable mapping of accumulated TSC counts to actual time.
Packit 577717
- Clarified that this package is licensed under the GNU LGPL.
Packit 577717
Packit 577717
Version 1.2, 2000-05-24
Packit 577717
- Added support for kernels 2.2.16pre4 and 2.3.99-pre9-5.
Packit 577717
- Added support for generic x86 processors with a time-stamp counter
Packit 577717
  but no performance-monitoring counters. By using the driver to
Packit 577717
  virtualise the TSC, accurate cycle-count measurements are now
Packit 577717
  possible on PMC-less processors like the AMD K6.
Packit 577717
- Fixed a bug in the WinChip driver.
Packit 577717
- Miscellaneous code cleanups.
Packit 577717
Packit 577717
Version 1.1, 2000-05-13
Packit 577717
- Support for Linux kernels 2.2.14, 2.2.15 and 2.3.99-pre8.
Packit 577717
- Changes to the driver and user-space library to reduce the
Packit 577717
  number of getpid() calls. (Suggested by Ulrich Drepper.)
Packit 577717
- Added support for the VIA Cyrix III processor.
Packit 577717
- Performance improvements in the x86 driver interface.
Packit 577717
- Some code cleanups.
Packit 577717
Packit 577717
Version 1.0, 2000-01-31
Packit 577717
- Support for Linux kernels 2.3.41, 2.2.15pre5, and 2.2.14.
Packit 577717
- Code cleanups in order to handle drivers for non-x86 processors.
Packit 577717
- Changes to the x86 drivers to reduce cache footprint and
Packit 577717
  sampling overhead. (Sample low 32 bits of counters, but
Packit 577717
  maintain 64-bit sums.)
Packit 577717
Packit 577717
Version 0.11, 2000-01-30
Packit 577717
- Support for Linux kernels 2.3.41 and 2.2.14.
Packit 577717
- Minor code cleanups and fixes.
Packit 577717
- The CR4.PCE flag is now globally enabled on x86, except for
Packit 577717
  those processors which does not support it. This is done in part
Packit 577717
  to reduce the overhead of virtualising the performance counters,
Packit 577717
  but it is also necessary due to changes in kernel 2.3.40.
Packit 577717
Packit 577717
Version 0.10, 2000-01-23
Packit 577717
- Support for Linux kernels 2.3.40 and 2.2.14.
Packit 577717
- Global-mode performance counters are now implemented.
Packit 577717
- Added hardware support for the WinChip 3 processor.
Packit 577717
- More source code reorganisation.
Packit 577717
Packit 577717
Version 0.9, 2000-01-02
Packit 577717
- Support for Linux kernels 2.3.35, 2.2.14pre18, and 2.2.13.
Packit 577717
- The driver can now be built as a module.
Packit 577717
- The driver now installs itself as the /dev/perfctr device instead
Packit 577717
  of adding a system call.
Packit 577717
- Significant source code reorganisation.
Packit 577717
Packit 577717
Version 0.8, 1999-11-14
Packit 577717
- Support for Linux kernels 2.3.28 and 2.2.13.
Packit 577717
- Major updates to reduce the overhead of maintaining virtual
Packit 577717
  performance-monitoring counters:
Packit 577717
    - The control registers are cached and updated lazily.
Packit 577717
    - The counter registers are no longer written to.
Packit 577717
    - Unused counters are no longer manipulated at all.
Packit 577717
      (This matters especially for the AMD K7.)
Packit 577717
- Reduced the process scheduling overhead for processes not
Packit 577717
  using performance-monitoring counters.
Packit 577717
- Minor code cleanups, bug fixes, and documentation updates.
Packit 577717
Packit 577717
Version 0.7, 1999-10-25
Packit 577717
- Support for Linux kernels 2.3.22 and 2.2.13.
Packit 577717
- Improved performance. (Uses RDPMC instead of RDMSR when possible.)
Packit 577717
- The AMD K7 Athlon should now work properly.
Packit 577717
- User-space now uses mmap() to read the kernel's accumulated
Packit 577717
  counter state.
Packit 577717
- The driver is now invoked via a new sys_perfctr() system call,
Packit 577717
  instead of abusing prctl().
Packit 577717
- The kernel patch has been cleaned up. The "#ifdef CONFIG_PERFCTR"
Packit 577717
  mess has been eliminated.
Packit 577717
Packit 577717
Version 0.6, 1999-09-08
Packit 577717
- Version 0.6 with support for Linux kernels 2.3.17 and 2.2.12.
Packit 577717
- Preliminary support for AMD Athlon added.
Packit 577717
Packit 577717
Version 0.5, 1999-08-29
Packit 577717
- Support for Linux kernel 2.3.15.
Packit 577717
- The user-space buffer is updated whenever state.status changes,
Packit 577717
  even when a remote command triggers the change.
Packit 577717
- Reworked and simplified the high-level code. All accesses
Packit 577717
  now require an attached file in order to implement proper
Packit 577717
  accounting and syncronisation. The only exception is UNLINK:
Packit 577717
  a process may always UNLINK its own PMCs.
Packit 577717
- Fixed counting bug in sys_perfctr_read().
Packit 577717
- Improved support for the Intel Pentium III.
Packit 577717
- Another WinChip fix: fake TSC update at process resume.
Packit 577717
- The code should now be safe for 'gcc -fstrict-aliasing'.
Packit 577717
Packit 577717
Version 0.4, 1999-07-31
Packit 577717
- Support for Linux kernel 2.3.12.
Packit 577717
- Implemented PERFCTR_ATTACH and PERFCTR_{READ,CONTROL,STOP,UNLINK}
Packit 577717
  on attached perfctrs. An attached perfctr is represented as a file.
Packit 577717
- Fixed an error in the WinChip-specific code.
Packit 577717
- Perfctrs now survive exec().
Packit 577717
Packit 577717
Version 0.3, 1999-07-22
Packit 577717
- Support for Linux kernel 2.3.11.
Packit 577717
- Interface now via sys_prctl() instead of /dev/perfctr.
Packit 577717
- Added NYI stubs for accessing other processes' perfctrs.
Packit 577717
- Moved to dynamic allocation of a task's perfctr state.
Packit 577717
- Minor code cleanups.
Packit 577717
Packit 577717
Version 0.2, 1999-06-07
Packit 577717
- Support for Linux kernel 2.3.5.
Packit 577717
- Added support for WinChip CPUs.
Packit 577717
- Restart counters from zero, not their previous values. This
Packit 577717
  corrected a problem for Intel P6 (WRMSR writes 32 bits to a PERFCTR
Packit 577717
  MSR and then sign-extends to 40 bits), and also simplified the code.
Packit 577717
- Added support for syncing the kernel's counter values to a user-
Packit 577717
  provided buffer each time a process is resumed. This feature, and
Packit 577717
  the fact that the driver enables RDPMC in processes using PMCs,
Packit 577717
  allows user-level computation of a process' accumulated counter
Packit 577717
  values without incurring the overhead of making a system call.
Packit 577717
Packit 577717
Version 0.1, 1999-05-30
Packit 577717
- First public release for Linux kernel 2.3.3.