<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://systems.nic.uoregon.edu/internal-wiki/index.php?action=history&amp;feed=atom&amp;title=Procedure%3APerfctr</id>
	<title>Procedure:Perfctr - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://systems.nic.uoregon.edu/internal-wiki/index.php?action=history&amp;feed=atom&amp;title=Procedure%3APerfctr"/>
	<link rel="alternate" type="text/html" href="https://systems.nic.uoregon.edu/internal-wiki/index.php?title=Procedure:Perfctr&amp;action=history"/>
	<updated>2026-08-19T08:07:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.12</generator>
	<entry>
		<id>https://systems.nic.uoregon.edu/internal-wiki/index.php?title=Procedure:Perfctr&amp;diff=3019&amp;oldid=prev</id>
		<title>Nic-systems: Created page with &quot;1. First, get the source RPM, create an rpm build tree, and install the source rpm.  2. Modify kernel-2.6.spec  &lt;pre&gt; *** kernel-2.6.spec-original    2009-06-29 11:47:25.00000...&quot;</title>
		<link rel="alternate" type="text/html" href="https://systems.nic.uoregon.edu/internal-wiki/index.php?title=Procedure:Perfctr&amp;diff=3019&amp;oldid=prev"/>
		<updated>2020-02-04T02:06:32Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;1. First, get the source RPM, create an rpm build tree, and install the source rpm.  2. Modify kernel-2.6.spec  &amp;lt;pre&amp;gt; *** kernel-2.6.spec-original    2009-06-29 11:47:25.00000...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;1. First, get the source RPM, create an rpm build tree, and install the source rpm.&lt;br /&gt;
&lt;br /&gt;
2. Modify kernel-2.6.spec&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
*** kernel-2.6.spec-original    2009-06-29 11:47:25.000000000 -0700&lt;br /&gt;
--- kernel-2.6.spec     2009-06-29 12:01:15.000000000 -0700&lt;br /&gt;
***************&lt;br /&gt;
*** 67,73 ****&lt;br /&gt;
  # by setting the define to &amp;quot;.local&amp;quot; or &amp;quot;.bz123456&amp;quot;&lt;br /&gt;
  #&lt;br /&gt;
  #% define buildid&lt;br /&gt;
! #&lt;br /&gt;
  %define sublevel 18&lt;br /&gt;
  %define kversion 2.6.%{sublevel}&lt;br /&gt;
  %define rpmversion 2.6.%{sublevel}&lt;br /&gt;
--- 67,75 ----&lt;br /&gt;
  # by setting the define to &amp;quot;.local&amp;quot; or &amp;quot;.bz123456&amp;quot;&lt;br /&gt;
  #&lt;br /&gt;
  #% define buildid&lt;br /&gt;
!&lt;br /&gt;
! %define buildid .perfctr&lt;br /&gt;
! %define perfctr 2.6.39&lt;br /&gt;
  %define sublevel 18&lt;br /&gt;
  %define kversion 2.6.%{sublevel}&lt;br /&gt;
  %define rpmversion 2.6.%{sublevel}&lt;br /&gt;
***************&lt;br /&gt;
*** 395,400 ****&lt;br /&gt;
--- 397,403 ----&lt;br /&gt;
  Source80: config-rhel-generic&lt;br /&gt;
  Source82: config-rhel-ppc64-generic&lt;br /&gt;
  Source83: config-olpc-generic&lt;br /&gt;
+ Source84: config-perfctr&lt;br /&gt;
&lt;br /&gt;
  Source100: kabi_whitelist_i686&lt;br /&gt;
  Source101: kabi_whitelist_i686PAE&lt;br /&gt;
***************&lt;br /&gt;
*** 6577,6582 ****&lt;br /&gt;
--- 6580,6590 ----&lt;br /&gt;
  %patch99999 -p1&lt;br /&gt;
  %endif&lt;br /&gt;
&lt;br /&gt;
+ # Run perfctr patch script&lt;br /&gt;
+ %ifarch i386 i586 i686 x86_64&lt;br /&gt;
+   %{_builddir}/perfctr-%{perfctr}/update-kernel --patch=&amp;quot;2.6.18-128.el5-redhat&amp;quot;&lt;br /&gt;
+ %endif&lt;br /&gt;
+&lt;br /&gt;
  # END OF PATCH APPLICATIONS&lt;br /&gt;
&lt;br /&gt;
  cp %{SOURCE10} Documentation/&lt;br /&gt;
***************&lt;br /&gt;
*** 6634,6639 ****&lt;br /&gt;
--- 6642,6657 ----&lt;br /&gt;
  rm -f kernel-%{kversion}-*-debug.config&lt;br /&gt;
  %endif&lt;br /&gt;
&lt;br /&gt;
+&lt;br /&gt;
+ # Merge in perfctr configs. Should have an arch&lt;br /&gt;
+ %ifarch i386 i586 i686 x86_64&lt;br /&gt;
+ for i in %{all_arch_configs} ; do&lt;br /&gt;
+   mv $i $i.tmp&lt;br /&gt;
+   $RPM_SOURCE_DIR/merge.pl $RPM_SOURCE_DIR/config-perfctr $i.tmp &amp;gt; $i&lt;br /&gt;
+   rm $i.tmp&lt;br /&gt;
+ done&lt;br /&gt;
+ %endif&lt;br /&gt;
+&lt;br /&gt;
  # now run oldconfig over all the config files&lt;br /&gt;
  for i in *.config&lt;br /&gt;
  do&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Create the file &amp;quot;config-perfctr&amp;quot; in the SOURCES directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; SOURCES/config-perfctr &amp;lt;&amp;lt; EOF&lt;br /&gt;
#&lt;br /&gt;
# Performance-monitoring counters support&lt;br /&gt;
#&lt;br /&gt;
CONFIG_PERFCTR=y&lt;br /&gt;
CONFIG_KPERFCTR=y&lt;br /&gt;
# CONFIG_PERFCTR_DEBUG is not set&lt;br /&gt;
CONFIG_PERFCTR_INIT_TESTS=y&lt;br /&gt;
CONFIG_PERFCTR_VIRTUAL=y&lt;br /&gt;
CONFIG_PERFCTR_GLOBAL=y&lt;br /&gt;
CONFIG_PERFCTR_INTERRUPT_SUPPORT=y&lt;br /&gt;
CONFIG_PERFCTR_CPUS_FORBIDDEN_MASK=y&lt;br /&gt;
EOF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Get perfctr and grab the spec file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd SOURCES&lt;br /&gt;
wget http://user.it.uu.se/~mikpe/linux/perfctr/current/perfctr-2.6.39.tar.gz&lt;br /&gt;
tar -xzvf perfctr-2.6.39.tar.gz&lt;br /&gt;
cp perfctr-2.6.39/perfctr.spec ../SPECS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Fix broken perfctr.spec file, remove changelog (it contains syntax errors)&lt;br /&gt;
&lt;br /&gt;
6. Build perfctr rpm&lt;br /&gt;
 rpmbuild -ba --target x86_64 SPECS/perfctr.spec&lt;br /&gt;
&lt;br /&gt;
7. Build the kernel rpm&lt;br /&gt;
&lt;br /&gt;
 rpmbuild --with baseonly --without debuginfo --without kabichk -ba SPECS/kernel-2.6.spec&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTES from ivan&lt;br /&gt;
&lt;br /&gt;
If your goal is to build RPMs, you need the following from my home directory:&lt;br /&gt;
&lt;br /&gt;
kernel-2.6.30.8-64.fc11.SPEC.patch&lt;br /&gt;
kernel-2.6.30.8-64.fc11.src.rpm&lt;br /&gt;
linux-2.6.30.i686.perfctr.patch&lt;br /&gt;
Makefile&lt;br /&gt;
rpmbuild.CLEAN&lt;br /&gt;
.ccache&lt;br /&gt;
You would just type &amp;quot;make&amp;quot; in your home directory. Please DO NOT do any of this as root, but create a new user and copy everything from my home directory to your home directory. After running &amp;quot;make&amp;quot; the RPMs would be produced in &amp;quot;rpmbuild/RPMS&amp;quot; and &amp;quot;rpmbuild/SRPMS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If your goal is to just path the kernel source with your changes, do this:&lt;br /&gt;
&lt;br /&gt;
rm -rf rpmbuild&lt;br /&gt;
rpmdev-setuptree&lt;br /&gt;
rpm -Uvh kernel-2.6.30.8-64.fc11.src.rpm&lt;br /&gt;
cd rpmbuild/BUILD&lt;br /&gt;
rsync -a kernel-2.6.30/linux-2.6.30.i586/ linux-2.6.30.i586.old/&lt;br /&gt;
rsync -a kernel-2.6.30/linux-2.6.30.i586/ linux-2.6.30.i586.new/&lt;br /&gt;
Patch the code in kernel-2.6.30/linux-2.6.30.i586/ linux-2.6.30.i586.new/&lt;br /&gt;
Then do &amp;quot;make bzImage&amp;quot;&lt;br /&gt;
Then do &amp;quot;sudo make install&amp;quot;&lt;br /&gt;
When you are all done, you can diff the old and new directory to make a new patch with your work.&lt;br /&gt;
&lt;br /&gt;
If you want to install the new RPM so you can run the PAPI kernel on the machine, just use the following RPMs:&lt;br /&gt;
&lt;br /&gt;
/home/ivan/rpmbuild.BUILT/SRPMS/kernel-2.6.30.8-64.nic.fc11.src.rpm&lt;br /&gt;
/home/ivan/rpmbuild.BUILT/RPMS/i586/kernel-firmware-2.6.30.8-64.nic.fc11.i586.rpm&lt;br /&gt;
/home/ivan/rpmbuild.BUILT/RPMS/i586/kernel-devel-2.6.30.8-64.nic.fc11.i586.rpm&lt;br /&gt;
/home/ivan/rpmbuild.BUILT/RPMS/i586/kernel-headers-2.6.30.8-64.nic.fc11.i586.rpm&lt;br /&gt;
/home/ivan/rpmbuild.BUILT/RPMS/i586/kernel-2.6.30.8-64.nic.fc11.i586.rpm&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nic-systems</name></author>
	</entry>
</feed>