Rick has submitted this patch to the main line kernel.
Let's hope it gets accepted so we don't have to go through this!!

Stock kernel Patches:

BadRAM-2.6.25.patch
BadRAM-2.6.24.patch **FIXED**
(BadRAM-2.6.24.3.patch from Rick's web site (credit goes to Augusto Born de Oliveira) + minor white space fix BadRAM-2.6.24.3-white-space.patch)
BadRAM-2.6.23.patch
BadRAM-2.6.22.patch
BadRAM-2.6.21.patch
BadRAM-2.6.20.patch
BadRAM-2.6.19.1.patch **FIXED**
(BadRAM-2.6.19.1.patch from Rick's web site (credit goes to Michal Schmidt) + header fix ups BadRAM-2.6.19.1-header-fixup.patch)

fedora kernel Patches:

fedora 8

Starting fedora 8, kernel configs are applied differentially.
The patch patches the base kernel config file whose name doesn't change every release.
A new patch is needed only if new kernel from kernel.org is released (e.g. 2.6.23 to 2.6.24)
(Not really true, as I learnt after kernel-2.6.23.9-85.fc8.src.rpm, check section below)
kernel-2.6.23.all-all.fc8.src.rpm.BadRAM.0.patch
applies to following kernel SRPMs:
kernel-2.6.24.5-85.fc8.src.rpm
kernel-2.6.24.4-64.fc8.src.rpm
kernel-2.6.24.3-50.fc8.src.rpm
kernel-2.6.24.3-34.fc8.src.rpm
kernel-2.6.24.3-12.fc8.src.rpm
kernel-2.6.23.all-all.fc8.src.rpm.BadRAM.2.patch
applies to following kernel SRPMs:
kernel-2.6.23.15-137.fc8.src.rpm
kernel-2.6.23.all-all.fc8.src.rpm.BadRAM.1.patch
applies to following kernel SRPMs:
kernel-2.6.23.14-115.fc8.src.rpm
kernel-2.6.23.14-107.fc8.src.rpm
kernel-2.6.23.9-85.fc8.src.rpm
kernel-2.6.23.all-all.fc8.src.rpm.BadRAM.patch
applies to following kernel SRPMs:
kernel-2.6.23.8-63.fc8.src.rpm
kernel-2.6.23.1-49.fc8.src.rpm
kernel-2.6.23.1-42.fc8.src.rpm

fedora 7

kernel-2.6.23.15-80.fc7.src.rpm.BadRAM.patch
kernel-2.6.23.14-64.fc7.src.rpm.BadRAM.patch
kernel-2.6.23.12-52.fc7.src.rpm.BadRAM.patch
kernel-2.6.23.8-34.fc7.src.rpm.BadRAM.patch
kernel-2.6.23.1-21.fc7.src.rpm.BadRAM.patch
kernel-2.6.23.1-10.fc7.src.rpm.BadRAM.patch
kernel-2.6.22.9-91.fc7.src.rpm.BadRAM.patch
kernel-2.6.22.7-85.fc7.src.rpm.BadRAM.patch
kernel-2.6.22.5-76.fc7.src.rpm.BadRAM.patch
kernel-2.6.22.4-65.fc7.src.rpm.BadRAM.patch
kernel-2.6.22.1-41.fc7.src.rpm.BadRAM.patch
kernel-2.6.22.1-27.fc7.src.rpm.BadRAM.patch
kernel-2.6.21-1.3228.fc7.src.rpm.BadRAM.patch
kernel-2.6.21-1.3194.fc7.src.rpm.BadRAM.patch

fedora core 6

kernel-2.6.22.9-61.fc6.src.rpm.BadRAM.patch
kernel-2.6.22.7-57.fc6.src.rpm.BadRAM.patch
kernel-2.6.22.5-49.fc6.src.rpm.BadRAM.patch
kernel-2.6.22.4-45.fc6.src.rpm.BadRAM.patch
kernel-2.6.22.2-42.fc6.src.rpm.BadRAM.patch
kernel-2.6.22.1-32.fc6.src.rpm.BadRAM.patch
kernel-2.6.20-1.2962.fc6.src.rpm.BadRAM.patch
kernel-2.6.20-1.2952.fc6.src.rpm.BadRAM.patch
kernel-2.6.20-1.2948.fc6.src.rpm.BadRAM.patch
kernel-2.6.20-1.2944.fc6.src.rpm.BadRAM.patch
kernel-2.6.20-1.2933.fc6.src.rpm.BadRAM.patch
kernel-2.6.20-1.2925.fc6.src.rpm.BadRAM.patch
kernel-2.6.19-1.2911.6.5.fc6.src.rpm.BadRAM.patch
I am willing to offer precompiled rpms, if I find extra bandwidth. If you want to host them, contact me : manish (at) meetamanish (dot) com

NOTE:

All patches on this page have been fixed on April 18th 2008 with a critical bug that caused crashes (especially for 64 bit machines).

Credit goes to Philippe Wautelet. Check this link for details.
The fix replaces this:
while ((str = get_longoptions (str, 3, (int *) opts), *opts)) {
with this:
while ((str = get_longoptions (str, 3, (long *) opts), *opts)) {

How to use these Patches:

These patches are meant to be applied to source rpm that you download from fedora (or a mirror) site. Follow the same compilation instruction after patch application.

Googling "compile kernel fedora way" will get you nice information about how to compile fedora kernel. I found http://www.howtoforge.com/kernel_compilation_fedora very informative.

Here are logical steps of compiling kernel-2.6.21-1.3228.fc7.BadRAM as an example:

  1. Download kernel-2.6.21-1.3228.fc7.src.rpm form fedora (or a mirror) site.
  2. Install kernel-2.6.21-1.3228.fc7.src.rpm
    	rpm -ivv kernel-2.6.21-1.3228.fc7.src.rpm
    
  3. Change directory to your rpmbuild dir
  4. Apply patch downloaded from this page
    	patch -p1 < /tmp/kernel-2.6.21-1.3228.fc7.src.rpm.BadRAM.patch
    
  5. Compile kernel

Here is a tiny script that I use:

#!/bin/bash

if [ 1 -ne $# ]; then
echo "what kernel?"
exit 0
fi

cd rpmbuild.$1
diff -pruN orig patched > $1.BadRAM.patch
rm -rf rpmbuild ../rpmbuild
cd ..
which fedora-buildrpmtree > /dev/null 2>&1
if [ $? -gt 0 ]
then
  echo "no \"fedora-buildrpmtree\" found, falling back to \"rpmdev-setuptree\" (fedora 8 onwards)."
  rpmdev-setuptree
else
  echo "found fedora-buildrpmtree"
  fedora-buildrpmtree
fi
rpm -i $1
cd rpmbuild
patch -p1 < ../rpmbuild.$1/$1.BadRAM.patch
cd SPECS
if [ -e "kernel.spec" ]
then
  time rpmbuild -ba --target=i686 --with baseonly kernel.spec
else
  time rpmbuild -ba --target=i686 --with baseonly kernel-2.6.spec
fi
cd ../..
mv rpmbuild rpmbuild.$1
An excellent hint from Mike Maravillo, add "--with baseonly" to your compilation command, that will skip kernel-debug, kernel-PAE, kernel-PAE-debug etc.

Please note:

All offerings from this website are "try at your own risk" and without guarantee/warrantee. Author(s) are not liable for any damages.

Follow this link for my Sony VAIO T260p story.