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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 ---

[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux