Hi folks,
Linux-MIPS users will need the following patch to add the 'cpu'
directories to sysfs.
Phil
On Mon, 2006-11-27 at 06:37 -0800, Stephane Eranian wrote:
> Hello,
>
> I have released another version of the perfmon new code base package.
> This version of the kernel patch is relative to 2.6.19-rc6-git10.
>
> This is a major update because it completes the changes requested
> during the code review on LKML. As a consequence, the kernel interface
> is NOT backward compatible with previous v2.2 versions. This release has
> the v2.3 version number. Backward compatibility with v2.0 is maintained
> on Itanium processors.
>
> The kernel patch is split between infrastructure work and perfmon2 proper.
> The infrastructure contains the following changes which will be integrated
> into mainline before perfmon2 is. Those changes should appear in 2.6.20.
> They are provided in the base.diff file.
>
> The infrastructure changes include:
> - x86_64: fix idle_notifier to cover all interrupts entry/exit for idle thread
> - i386 : add idle notifier (copy of x86_64 notifier)
> - ia64 : idle notifier (copy of x86_64 notifier)
> - i386 : add X86_FEATURE_ceforge.net, linux-kernel@xxxxxxxxxxxxxxxx,X86_FEATURE_PEBS to cpufeature.h
> - x86_64: add X86_FEATURE_BTS,X86_FEATURE_PEBS to cpufeature.h
> - i386 : add PMU related MSR definitions to msr.h
> - x86_64: NMI watchdog uses PERFCTR1 to allow PEBS on Intel Core (requires PERFCTR0)
> - all : remove unused carta_random32.h
>
>
> The perfmon2 kernel changes the release to v2.3 and includes the following changes:
> - updated to 2.6.19-rc6-git10
> - sampling format identified with clear text string, not UUID anymore
> - pfm_create_context() returns file descriptor
> - sampling format name passed as argument
> - struct pfarg_ctx_t simplified
> - using random32() instead of carta_random32() (now obsolete)
> - in struct pfarg_pmd, reg_random_seed is obsolete
> - added support for Intel Core processors (Core 2 Duo)
> - unified PEBS support between P4 and Intel Core
> - fix bugs with munmap() of sampling buffer
> - changed sysfs to handle new naming for sampling formats
> - change rsvd_mask logic in PMU description modules
> - make idle notifier registration lazy (only when needed)
> - rewritten NMI integration using die_notifier()
> - NMI watchdog support and auto-detection for AMD K8, Intel Core
> - fix potential issues with locking/irq masking using LockDep checker
> - cleaned MIPS PMU description table setup
> - various MIPS bugs fixes (Phil Mucci, Manoj Ekbote)
> - various PowerPC updates include PPC32 description table (Phil Mucci)
>
> Due to problems with the git10 tree, the MIPS kernel does not compile regardless of
> perfmon2. A new patch will be generated once this problem is removed.
>
> I have also released a new libpfm, libpfm-3.2-061127, with lots of
> changes. Here are some of the most important ones:
>
> - added support for Intel Core (Core 2 Duo)
> - updated all example, header files to perfmon v2.3
> - updated man pages
> - Intel Core PEBS example
> - fixed rtop on 32-bit platforms
> - various MIPS updates (Phil Mucci)
> - big-endian support for MIPS
> - various Makefile improvements
>
> Also a new version of pfmon, pfmon-3.2-061127, with a lot
> of changes as well:
> - updated to perfmon v2.3 interface
> - support for Intel Core processors (Core 2 Duo)
> - support for Intel Core PEBS as a sampling format
> - complete rewrite of system-wide core loops to avoid race conditions with signals
> - added --print-interval to print intermediate deltas in system-wide mode
> - better handling of perfmon errors
> - corrected Montecito checks for L2D_CANCEL events
> - factorized 'detailed' sampling format for all arch
> - inst-hist default formats for all arch
> - corrected sampling buffer auto-sizing based on resource limit constraints
> - updated online documentation
>
> This version of pfmon requires libpfm-3.2-061127.
>
> You can get a more detailed log of changes the the CVS tree.
>
> You can grab the new packages at our web site:
>
> http://perfmon2.sf.net
>
> Enjoy,
>
> PS: I will post a kernel patch to LKML and a diffstat on the perfmon mailing list.
> --
>
> -Stephane
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Perfctr-devel mailing list
> Perfctr-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/perfctr-devel
--- Begin Message ---
Index: perfmon/perfmon_sysfs.c
===================================================================
--- perfmon/perfmon_sysfs.c (.../perfmon2-post-sf-pre-fixup) (revision 27882)
+++ perfmon/perfmon_sysfs.c (.../perfmon2-post-sf-post-fixup) (revision 27882)
@@ -79,6 +79,10 @@
static struct kobject pfm_kernel_kobj, pfm_kernel_fmt_kobj;
+/* Remove this after mips get topology.c files */
+
+struct cpu sysfs_cpus[NR_CPUS];
+
static void pfm_reset_stats(int cpu)
{
struct pfm_stats *st;
@@ -400,6 +404,19 @@
int done_kobj_fmt = 0, done_kobj_kernel = 0;
int i, cpu = -1;
+ /* This is a hack to be removed */
+
+ for_each_present_cpu(i) {
+ ret = register_cpu(&sysfs_cpus[i],i,NULL);
+ if (ret)
+ {
+ PFM_INFO("cannot register cpu %d: %d\n",i,ret);
+ goto error;
+ }
+ }
+
+ /* End hack */
+
ret = subsystem_register(&pfm_fmt_subsys);
if (ret) {
PFM_INFO("cannot register pfm_fmt_subsys: %d", ret);
--- End Message ---