linux-mips
[Top] [All Lists]

Re: [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pf

To: eranian@hpl.hp.com
Subject: Re: [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon
From: "Philip J. Mucci" <phil@sicortex.com>
Date: Tue, 28 Nov 2006 15:50:27 +0100
Cc: perfmon@napali.hpl.hp.com, linux-mips@linux-mips.org
In-reply-to: <20061127143705.GC24980@frankl.hpl.hp.com>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20061127143705.GC24980@frankl.hpl.hp.com>
Sender: linux-mips-bounce@linux-mips.org
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@vger.kernel.orgq,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@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/perfctr-devel
--- Begin Message ---
To: mucci@cs.utk.edu
Subject: No Subject
From: phil@sicortex.com (Phil Mucci)
Date: Tue, 28 Nov 2006 09:47:09 -0500
User-agent: nail 11.4 8/29/04
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 ---
<Prev in Thread] Current Thread [Next in Thread>