My Patch File

This patch file is a diff between the current kernel which I use and the sitsang2 patched kernel provided by Intel. It includes a combination of patches, listed below. To use it, apply the sitsang2 patches to a vanilla 2.4.19 Linux kernel, then apply my patches.

$ bzip2 -dc linux-2.4.19.tar.bz2 | tar xvf -
$ cd linux-2.4.19/
$ gzip -dc ../patch-2.4.19-sitsang2.gz | patch -p1
$ gzip -dc ../leo.patch.gz | patch -p1
$ make sitsang_config
$ make oldconfig
$ make dep
$ make zImage
$ make modules

Download my patch file


Included Patches


Known Bugs/Issues


Data Collection Module

The kernel/collect.o module allows up to 8 variables to be recorded on 10ms intervals (each timer tick). It has been used to generate graphs such as the one below, tracking cache miss rates, but may be used to record any variables accessible to the kernel.

To select the variables to record, edit kernel/collect.c. The following lines record the data:

data[0] = jiffies;
data[1] = current->pid;
data[2] = current->pmu.evt0;
....
data[7] = 0;

Recompile using make modules and copy the new collect.o to the Sitsang.

Once loaded, the module creates a /proc/data_collection file providing access to the data. Any write to this file will clear all data. Reading from this file will return the data as ascii text, one 10ms interval per line, with the 8 values separated by spaces. Note that this file is constantly changing as new data is added, so it should be read atomically, using a command like dd. Example:

$ echo 0 > /proc/data_collection
$ ./my-test-program
$ dd if=/proc/data_collection of=my-data.txt bs=1000000 count=1

WDONTREAP

The WDONTREAP parameter is a quick hack to make data collection easier using the DWCS real-time scheduler. DWCS keeps statistics in each process's task_struct. This data may be read using a proc file, /proc/dwcs/info.

However, the standard behavior of the wait(2) system call is to suspend the current process to wait for a child PID to terminate, then it frees the resources of the child process, destroying the task_struct with our DWCS statistics.

The WDONTREAP parameter prevents wait() from freeing any resources. Thus, the process will still exist as a zombie so we can read statistics from its task_struct.


Updates

Monday, September 13, 2004-- Updated DVS module to support automatic voltage scaling upon frequency changes. Updated default configuration. Removed frequency change handler in the PXA framebuffer driver, which was causing slow frequency changes. Download 9/13/04 Patch File

Friday, August 20, 2004-- Original patch file. Download 8/20/04 Patch File


Last Modified: 9/13/04 by lcs@cc
Return to Intel Sitsang Resources | Leo Singleton