* Re: [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon [not found] <20061127143705.GC24980@frankl.hpl.hp.com> @ 2006-11-28 14:50 ` Philip J. Mucci 2006-11-28 18:20 ` Ralf Baechle 0 siblings, 1 reply; 4+ messages in thread From: Philip J. Mucci @ 2006-11-28 14:50 UTC (permalink / raw) To: eranian; +Cc: perfmon, linux-mips [-- Attachment #1: Type: text/plain, Size: 4803 bytes --] 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 [-- Attachment #2: Attached message --] [-- Type: message/rfc822, Size: 2723 bytes --] From: phil@sicortex.com (Phil Mucci) To: mucci@cs.utk.edu Subject: No Subject Date: Tue, 28 Nov 2006 09:47:09 -0500 Message-ID: <456C4BED.mailP0811VGTG@intranet.sicortex.com> 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); ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon 2006-11-28 14:50 ` [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon Philip J. Mucci @ 2006-11-28 18:20 ` Ralf Baechle 2006-11-28 19:05 ` Philip J. Mucci 0 siblings, 1 reply; 4+ messages in thread From: Ralf Baechle @ 2006-11-28 18:20 UTC (permalink / raw) To: Philip J. Mucci; +Cc: eranian, perfmon, linux-mips On Tue, Nov 28, 2006 at 03:50:27PM +0100, Philip J. Mucci wrote: > Linux-MIPS users will need the following patch to add the 'cpu' > directories to sysfs. This patch is to some file which doesn't even exist in standard kernels. Nor should it be done in the perfmon code if it did exist in the stock kernel. > 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 */ Why should there be one? I guess you were looking for topology_init which exists since Febuary 20 / linux-2.6.16-rc5 and does register all CPUs. > +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 */ Formatting style, see Documentation/CodingStyle. Ralf ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon 2006-11-28 18:20 ` Ralf Baechle @ 2006-11-28 19:05 ` Philip J. Mucci 2006-11-29 16:04 ` Ralf Baechle 0 siblings, 1 reply; 4+ messages in thread From: Philip J. Mucci @ 2006-11-28 19:05 UTC (permalink / raw) To: Ralf Baechle; +Cc: eranian, perfmon, linux-mips Hi Ralf, Forgive me, I thought Stefane had posted the announcement of the new perfmon kernel substrate on Linux/MIPS list. I see now that he did not, so it's likely that the below patch has little meaning to you folks. I do know however, that there are some broadcom folks tracking this work. This is not meant to be a patch for the Linux/MIPS tree, but rather the perfmon2 patch when applied to Linus' latest GIT tree. This hack (marked as such) gets around a NULL pointer dereference upon boot. I make no claims other than that it lets the MIPS folks play with the perfmon2 implementation. Phil On Tue, 2006-11-28 at 18:20 +0000, Ralf Baechle wrote: > On Tue, Nov 28, 2006 at 03:50:27PM +0100, Philip J. Mucci wrote: > > > Linux-MIPS users will need the following patch to add the 'cpu' > > directories to sysfs. > > This patch is to some file which doesn't even exist in standard > kernels. Nor should it be done in the perfmon code if it did exist in > the stock kernel. > > > 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 */ > > Why should there be one? I guess you were looking for topology_init > which exists since Febuary 20 / linux-2.6.16-rc5 and does register all > CPUs. > > > +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 */ > > Formatting style, see Documentation/CodingStyle. > > Ralf ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon 2006-11-28 19:05 ` Philip J. Mucci @ 2006-11-29 16:04 ` Ralf Baechle 0 siblings, 0 replies; 4+ messages in thread From: Ralf Baechle @ 2006-11-29 16:04 UTC (permalink / raw) To: Philip J. Mucci; +Cc: eranian, perfmon, linux-mips On Tue, Nov 28, 2006 at 08:05:02PM +0100, Philip J. Mucci wrote: > Forgive me, I thought Stefane had posted the announcement of the new > perfmon kernel substrate on Linux/MIPS list. I see now that he did not, > so it's likely that the below patch has little meaning to you folks. I > do know however, that there are some broadcom folks tracking this work. > > This is not meant to be a patch for the Linux/MIPS tree, but rather the > perfmon2 patch when applied to Linus' latest GIT tree. This hack (marked > as such) gets around a NULL pointer dereference upon boot. I make no > claims other than that it lets the MIPS folks play with the perfmon2 > implementation. So following our private mail exchange I've checked in below fix. Ralf commit 83eee867cf914c968933e8bc3acf7a3fe58ceaed Author: Ralf Baechle <ralf@linux-mips.org> Date: Wed Nov 29 15:04:08 2006 +0000 [MIPS] Do topology_init even on uniprocessor kernels. Otherwise CPU 0 doesn't show up in sysfs which breaks some software. Signed-off-by: Ralf Baechle <ralf@linux-mips.org> diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index cd9cec9..6bfbbed 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile @@ -6,7 +6,7 @@ extra-y := head.o init_task.o vmlinux.l obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \ ptrace.o reset.o semaphore.o setup.o signal.o syscall.o \ - time.o traps.o unaligned.o + time.o topology.o traps.o unaligned.o binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ irix5sys.o sysirix.o diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index db80957..49db516 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c @@ -463,28 +463,5 @@ void flush_tlb_one(unsigned long vaddr) smp_on_each_tlb(flush_tlb_one_ipi, (void *) vaddr); } -static DEFINE_PER_CPU(struct cpu, cpu_devices); - -static int __init topology_init(void) -{ - int i, ret; - -#ifdef CONFIG_NUMA - for_each_online_node(i) - register_one_node(i); -#endif /* CONFIG_NUMA */ - - for_each_present_cpu(i) { - ret = register_cpu(&per_cpu(cpu_devices, i), i); - if (ret) - printk(KERN_WARNING "topology_init: register_cpu %d " - "failed (%d)\n", i, ret); - } - - return 0; -} - -subsys_initcall(topology_init); - EXPORT_SYMBOL(flush_tlb_page); EXPORT_SYMBOL(flush_tlb_one); diff --git a/arch/mips/kernel/topology.c b/arch/mips/kernel/topology.c new file mode 100644 index 0000000..660e44e --- /dev/null +++ b/arch/mips/kernel/topology.c @@ -0,0 +1,29 @@ +#include <linux/cpu.h> +#include <linux/cpumask.h> +#include <linux/init.h> +#include <linux/node.h> +#include <linux/nodemask.h> +#include <linux/percpu.h> + +static DEFINE_PER_CPU(struct cpu, cpu_devices); + +static int __init topology_init(void) +{ + int i, ret; + +#ifdef CONFIG_NUMA + for_each_online_node(i) + register_one_node(i); +#endif /* CONFIG_NUMA */ + + for_each_present_cpu(i) { + ret = register_cpu(&per_cpu(cpu_devices, i), i); + if (ret) + printk(KERN_WARNING "topology_init: register_cpu %d " + "failed (%d)\n", i, ret); + } + + return 0; +} + +subsys_initcall(topology_init); ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2006-11-29 16:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20061127143705.GC24980@frankl.hpl.hp.com>
2006-11-28 14:50 ` [Perfctr-devel] 2.6.19-rc6-git10 new perfmon code base + libpfm + pfmon Philip J. Mucci
2006-11-28 18:20 ` Ralf Baechle
2006-11-28 19:05 ` Philip J. Mucci
2006-11-29 16:04 ` Ralf Baechle
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox