Initial checkin



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/bin/autotest b/bin/autotest
new file mode 100755
index 0000000..dd97442
--- /dev/null
+++ b/bin/autotest
@@ -0,0 +1,21 @@
+#!/usr/bin/python2.3
+
+import os,sys
+import job, kernel, test
+from autotest_utils import *
+
+autodirbin = os.path.abspath(os.path.dirname(sys.argv[0]))
+autodir = os.path.dirname(autodirbin)
+
+print 'AUTODIRBIN: ' + autodirbin
+print 'AUTODIR: ' + autodir
+
+sys.path.insert(0, autodirbin+'/tests')
+sys.path.insert(0, autodirbin)
+
+# Need to expand the dirname for this, as if they do "foo" and it's not in
+# the path, we need to do "./foo"
+fullpath = os.path.dirname(sys.argv[1]) + '/' + os.path.basename(sys.argv[1])
+
+argv = sys.argv[2:]
+execfile(fullpath)
diff --git a/bin/autotest.py b/bin/autotest.py
new file mode 100755
index 0000000..f506476
--- /dev/null
+++ b/bin/autotest.py
@@ -0,0 +1,21 @@
+from autotest_utils import *
+import os, sys
+
+class system:
+	def __init__(self):
+		self.autodir = os.environ['AUTODIR']
+		self.resultdir = self.autodir + '/results'
+		self.tmpdir = self.autodir + '/tmp'
+
+		if not os.path.isdir(self.resultdir):
+			os.mkdir(self.resultdir)
+		if not os.path.isdir(self.tmpdir):
+			os.mkdir(self.tmpdir)
+#		self.stdout = fd_stack(1, sys.stdout)
+#		self.stderr = fd_stack(2, sys.stderr)
+		return None
+
+
+	def boot(self, tag=None):
+		print "I OUGHT TO REBOOT NOW!"
+
diff --git a/bin/autotest_utils.py b/bin/autotest_utils.py
new file mode 100755
index 0000000..e58c984
--- /dev/null
+++ b/bin/autotest_utils.py
@@ -0,0 +1,161 @@
+import os,os.path,shutil,urllib,sys,signal
+
+def grep(pattern, file):
+# This is mainly to fix the return code inversion from grep
+	return not os.system('grep "' + pattern + '" "' + file + '"')
+	
+	
+def difflist(list1, list2):	
+# returns items in list 2 that are not in list 1
+	diff = [];
+	for x in list2:
+		if x not in list1:
+			diff.append(x)
+	return diff
+
+
+def cat_file_to_cmd(file, command):
+	if file.endswith('.bz2'):
+		os.system('bzcat ' + file + ' | ' + command)
+	elif file.endswith('.gz'):
+		os.system('zcat ' + file + ' | ' + command)
+	else:
+		os.system('cat ' + file + ' | ' + command)
+	
+
+def get_file(src, dest):
+	# get a file, either from url or local
+	if (src.startswith('http://')) or (src.startswith('ftp://')):
+		print 'PWD: ' + os.getcwd()
+		print 'Fetching \n\t', src, '\n\t->', dest
+		try:
+			urllib.urlretrieve(src, dest)
+		except IOError:
+			sys.stderr.write("Unable to retrieve %s (to %s)\n" % (src, dest))
+			sys.exit(1)
+		return dest
+	# elif os.path.isfile(src):
+	shutil.copyfile(src, dest)
+	return dest
+
+def basename(path):
+	i = path.rfind('/');
+	return path[i+1:]
+
+
+def force_copy(src, dest):
+	if os.path.isfile(dest):
+		os.remove(dest)
+	return shutil.copyfile(src, dest)
+
+
+def get_target_arch():
+# Work out which CPU architecture we're running on
+	if not os.system("egrep '^cpu.*(RS64|POWER(3|4|5)|PPC970|Broadband Engine)' /proc/cpuinfo"):
+		return 'ppc64'
+	elif not os.system("grep -q 'Opteron' /proc/cpuinfo"):
+		# THIS IS WRONG, needs Intel too
+		return 'x86_64'
+	else:
+		return 'i386'
+
+
+def kernelexpand(kernel):
+	# if not (kernel.startswith('http://') or kernel.startswith('ftp://') or os.path.isfile(kernel)):
+	if kernel.find('/'):
+		w, r = os.popen2('./kernelexpand ' + kernel)
+
+		kernel = r.readline().strip()
+		r.close()
+		w.close()
+	return kernel
+
+
+def count_cpus():
+	f = file('/proc/cpuinfo', 'r')
+	cpus = 0
+	for line in f.readlines():
+		if line.startswith('processor'):
+			cpus += 1
+	return cpus
+
+
+# We have our own definiton of system here, as the stock os.system doesn't
+# correctly handle sigpipe (ie things like "yes | head" will hang because
+# yes doesn't get the SIGPIPE).
+def system(cmd):
+	signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+	try:
+		os.system(cmd)
+	finally:
+		signal.signal(signal.SIGPIPE, signal.SIG_IGN)
+
+
+def where_art_thy_filehandles():
+	os.system("ls -l /proc/%d/fd >> /dev/tty" % os.getpid())
+
+
+def print_to_tty(string):
+	os.system("echo " + string + " >> /dev/tty")
+
+
+class fd_stack:
+	# Note that we need to redirect both the sys.stdout type descriptor
+	# (which print, etc use) and the low level OS numbered descriptor
+	# which os.system() etc use.
+
+	def __init__(self, fd, filehandle):
+		self.fd = fd				# eg 1
+		self.filehandle = filehandle		# eg sys.stdout
+		self.stack = [(fd, filehandle)]
+
+
+	def redirect(self, filename):
+		fdcopy = os.dup(self.fd)
+		self.stack.append( (fdcopy, self.filehandle) )
+		# self.filehandle = file(filename, 'w')
+		if (os.path.isfile(filename)):
+			newfd = os.open(filename, os.O_WRONLY)
+		else:
+			newfd = os.open(filename, os.O_WRONLY | os.O_CREAT)
+		os.dup2(newfd, self.fd)
+		os.close(newfd)
+		self.filehandle = os.fdopen(self.fd, 'w')
+
+
+	def tee_redirect(self, filename):
+		print_to_tty("tee_redirect to " + filename)
+		where_art_thy_filehandles()
+		fdcopy = os.dup(self.fd)
+		self.stack.append( (fdcopy, self.filehandle) )
+		r, w = os.pipe()
+		pid = os.fork()
+		if pid:			# parent
+			os.close(r)
+			os.dup2(w, self.fd)
+			os.close(w)
+		else:			# child
+			os.close(w)
+			os.dup2(r, 0)
+			os.dup2(2, 1)
+			os.execlp('tee', 'tee', filename)
+		self.filehandle = os.fdopen(self.fd, 'w')
+		where_art_thy_filehandles()
+		print_to_tty("done tee_redirect to " + filename)
+
+	
+	def restore(self):
+		print_to_tty("ENTERING RESTORE %d" % self.fd)
+		# where_art_thy_filehandles()
+		(old_fd, old_filehandle) = self.stack.pop()
+		# print_to_tty("old_fd %d" % old_fd)
+		# print_to_tty("self.fd %d" % self.fd)
+		self.filehandle.close()   # seems to close old_fd as well.
+		# where_art_thy_filehandles()
+		os.dup2(old_fd, self.fd)
+		# print_to_tty("CLOSING FD %d" % old_fd)
+		os.close(old_fd)
+		# where_art_thy_filehandles()
+		self.filehandle = old_filehandle
+		# where_art_thy_filehandles()
+		# print_to_tty("EXIT RESTORE %d" % self.fd)
diff --git a/bin/grub.py b/bin/grub.py
new file mode 100644
index 0000000..68b9bc5
--- /dev/null
+++ b/bin/grub.py
@@ -0,0 +1,193 @@
+# we regard the grub file as a preamble, plus a sequence of entry stanzas
+# starting in 'title'. Whilst probably not entirely accurate, it works
+# well enough, and is designed not to be lossy
+
+import shutil
+import re
+import os 
+import os.path
+import string
+
+class grub:
+	config_locations = ['/boot/grub/grub.conf', '/boot/grub/menu.lst',
+				'/etc/grub.conf']
+
+	def __init__(self, config_file=None):
+		if config_file:
+			self.config = config_file
+		else:
+			self.config = self.detect()
+		self.read()
+
+
+	def read(self):
+		conf_file = file(self.config, 'r')
+		self.lines = conf_file.readlines()
+		conf_file.close()
+
+		self.entries = []			# list of stanzas
+		self.titles = {}			# dictionary of titles
+		entry = grub_entry(-1)
+		count = 0
+		for line in self.lines:
+			if re.match(r'\s*title', line):
+				self.entries.append(entry)
+				entry = grub_entry(count)
+				count = count + 1
+				title = line.replace('title ', '')
+				title = title.rstrip('\n')
+				entry.set('title', title)
+				self.titles[title] = entry
+			# if line.startswith('initrd'):
+			if re.match(r'\s*initrd', line):
+				entry.set('initrd',
+					re.sub(r'\s*initrd\s+', '', line))
+			if re.match(r'\s*kernel', line):
+				entry.set('kernel',
+					re.sub(r'\s*kernel\s+', '', line))
+			entry.lines.append(line)
+		self.entries.append(entry)
+		self.preamble = self.entries.pop(0)	# separate preamble
+
+
+	def write(self):
+		conf_file = file(self.config, 'w')
+		conf_file.write(self.preamble)
+		for entry in self.entries:
+			conf_file.write(entry.lines)
+		conf_file.close()
+
+
+	def dump(self):
+		for line in self.preamble.lines:
+			print line,
+		for entry in self.entries:
+			for line in entry.lines:
+				print line,
+
+	def backup(self):
+		shutil.copyfile(self.config, self.config+'.bak')
+		restore = file(autodir + '/var/autotest.boot.restore', 'w')
+		restore.write('cp ' + self.config+'.bak ' + self.config + '\n')
+		restore.close()
+
+
+	def bootloader(self):
+		return 'grub'
+
+
+	def detect(self):
+		for config in grub.config_locations:
+			if os.path.isfile(config) and not os.path.islink(config):
+				return config
+
+
+	def list_titles(self):
+		list = []
+		for entry in self.entries:
+			 list.append(entry.get('title'))
+		return list
+
+
+	def print_entry(self, index):
+		entry = self.entries[index]
+		entry.print_entry()
+
+
+	def renamed_entry(self, index, newname, args=False):
+		"print a specified entry, renaming it as specified"
+		entry = self.entries[index]
+		entry.set('title', newname)
+		if args:
+			entry.set_autotest_kernel()
+		entry.print_entry()
+
+
+	def omit_markers(self, marker):
+		# print, ommitting entries between specified markers
+		print_state = True
+		for line in lines:
+			if line.count(marker):
+				print_state = not print_state
+			else:
+				if print_state:
+					print line
+
+
+	def select(self, title, boot_options=None):
+		entry = self.titles[title]
+		print "grub: will boot entry %d (0-based)" % entry.index
+		self.set_default(entry.index)
+		self.set_timeout()
+
+
+	def set_default(self, index):
+		lines = (self.preamble).lines
+		for i in range(len(lines)):
+			default = 'default %d' % index
+			lines[i] = re.sub(r'^\s*default.*', 
+						default, lines[i])
+
+
+	def set_timeout(self):
+		lines = (self.preamble).lines
+		for i in range(len(lines)):
+			lines[i] = re.sub(r'^timeout.*/', 
+						'timeout 60', lines[i])
+			lines[i] = re.sub(r'^(\s*terminal .*--timeout)=\d+',
+						r'\1=30', lines[i])
+		
+
+# ----------------------------------------------------------------------
+
+# Note that the lines[] section, whilst fairly foul, is needed to make
+# sure we preserve the original entry intact with comments, formatting,
+# and bits we don't understand.
+
+class grub_entry:
+	def __init__(self, count):
+		self.lines = []
+		self.fields = {}    # title, initrd, kernel, etc
+		self.index = count
+
+
+	def set(self, field, value):
+		print "setting '%s' to '%s'" % (field, value)
+		self.fields[field] = value
+		for i in range(len(self.lines)):
+			m = re.match(r'\s*' + field + r'\s+', self.lines[i])
+			if m:
+				self.lines[i] = m.group() + value + '\n'
+
+
+	def get(self, field):
+		return self.fields[field]
+
+
+	def print_entry(self):
+		print self.lines
+
+
+	def set_kernel_options(self, options):
+		kernel = self.get('kernel')
+		re.sub(r'(autotest_args:).*', r'\1'+options, kernel)
+		self.set('kernel', kernel)
+
+	def set_autotest_kernel(self):
+		kernel_words = []
+		found_path = False
+		# Want to copy most of the entry, replacing the 'path' 
+		# part of the entry with vmlinux-autotest in the same 
+		# dir, and make sure autotest_args: is (uniquely) added
+		for word in (self.get('kernel')).split():
+			if word.startswith('--'):
+				kernel_words.append(word)
+				continue
+			if not found_path:
+				word = os.path.dirname(word)+'vmlinuz-autotest'
+				found_path = True
+			if re.match(r'auto(bench|test)_args:', word):
+				break
+			kernel_words.append(word)
+		kernel_words.append('autotest_args: ')
+		self.set('kernel', string.join(kernel_words))
diff --git a/bin/job.py b/bin/job.py
new file mode 100755
index 0000000..c3d1124
--- /dev/null
+++ b/bin/job.py
@@ -0,0 +1,26 @@
+from autotest_utils import *
+import os,sys,kernel,test
+
+class job:
+	def __init__(self, jobtag='default'):
+		self.autodir = os.environ['AUTODIR']
+		self.tmpdir = self.autodir + '/tmp'
+		self.resultdir = self.autodir + '/results' + jobtag
+		if os.path.exists(self.resultdir):
+			os.system('rm -rf ' + self.resultdir)
+		os.mkdir(self.resultdir)
+		os.mkdir(self.resultdir + "/debug")
+		os.mkdir(self.resultdir + "/analysis")
+		
+		self.jobtab = jobtag
+
+		self.stdout = fd_stack(1, sys.stdout)
+		self.stderr = fd_stack(2, sys.stderr)
+
+	def kernel(self, topdir, base_tree):
+		return kernel.kernel(self, topdir, base_tree)
+
+
+	def runtest(self, tag, testname, test_args):
+		mytest = test.test(self, testname + '.' + tag)
+		mytest.run(testname, test_args)
diff --git a/bin/kernel.py b/bin/kernel.py
new file mode 100755
index 0000000..6aa3730
--- /dev/null
+++ b/bin/kernel.py
@@ -0,0 +1,149 @@
+import os,os.path,shutil,urllib
+from autotest_utils import *
+import kernel_config
+import test
+
+class kernel:
+	autodir = ''
+
+	def __init__(self, job, top_directory, base_tree):
+		self.job = job
+		autodir = job.autodir
+		self.top_dir = top_directory
+		if not self.top_dir.startswith(autodir):
+			raise
+		if os.path.isdir(self.top_dir):
+			os.system('rm -rf ' + self.top_dir)
+		os.mkdir(self.top_dir)
+
+		self.src_dir    = self.top_dir + '/src'
+		self.build_dir  = self.top_dir + '/build'
+		self.patch_dir  = self.top_dir + '/patches'
+		self.config_dir = self.top_dir + '/config'
+		self.log_dir    = self.top_dir + '/log'
+		os.mkdir(self.src_dir)
+		os.mkdir(self.patch_dir)
+		os.mkdir(self.config_dir)
+		os.mkdir(self.log_dir)
+
+		base_tree = kernelexpand(base_tree)
+		self.get_kernel_tree(base_tree)
+
+
+	def patch(self, patches):
+		self.job.stdout.redirect(self.log_dir+'/stdout')
+		local_patches = self.get_patches(patches)
+		self.apply_patches(local_patches)
+		self.job.stdout.restore()
+
+
+	def config(self, config_list):
+		config_file = config_list.pop()
+		self.job.stdout.redirect(self.log_dir+'/stdout')
+		config = kernel_config.kernel_config(self.build_dir, self.config_dir, config_file, config_list)
+		self.job.stdout.restore()
+
+
+	def get_patches(self, patches):
+		local_patches = []
+		for patch in patches:
+			dest = self.patch_dir + basename(patch)
+			get_file(patch, dest)
+			local_patches.append(dest)
+
+	
+	def apply_patches(self, patches):
+		builddir = self.build_dir
+		os.chdir(builddir)
+
+		if not patches:
+			return None
+		for patch in patches:
+			local = patch_dir + basename(patch)
+			get_file(patch, local)
+			print 'Patching from', basename(patch), '...'
+			cat_file_to_cmd(patch, 'patch -p1')
+	
+	
+	def get_kernel_tree(self, base_tree):
+	# Extract base_tree into self.top_dir/build
+		os.chdir(self.top_dir)
+		tarball = 'src/' + basename(base_tree)
+		get_file(base_tree, tarball)
+
+		oldlist = os.listdir(self.top_dir)
+		print 'Extracting kernel tarball:', tarball, '...'
+		cat_file_to_cmd(tarball, 'tar xf -')
+		newlist = os.listdir(self.top_dir)
+		newfiles = difflist(oldlist, newlist)	# what is new dir ?
+		kernel_dir = ''
+		for newfile in newfiles:
+			if (os.path.isdir(newfile)):
+				kernel_dir = newfile
+		if (kernel_dir == ''):
+			raise NameError, "extracting tarball produced no dir"
+		if not os.path.isdir(kernel_dir):
+			print "directory " + kernel_dir + " not present"
+			raise NameError, "directory " + kernel_dir + " not present"
+		print 'Extracted kernel tree:', kernel_dir
+		os.rename(kernel_dir, 'build')
+	
+
+	def build(self, make_opts = ''):
+		# build the kernel
+		os.chdir(self.build_dir)
+		print self.log_dir+'stdout'
+		self.job.stdout.redirect(self.log_dir+'/stdout')
+		self.job.stderr.redirect(self.log_dir+'/stderr')
+		self.set_cross_compiler()
+		# setup_config_file(config_file, config_overrides)
+		os.system('make dep')		# Not needed on 2.6, but hard to tell
+		threads = 2 * count_cpus()
+		exitcode = os.system('make -j %d %s' % (threads, target))
+			# eg make bzImage, or make zImage
+		if exitcode:
+			exit (1)
+		if kernel_config.modules_needed('.config'):
+			exitcode = os.system('make modules')
+			if exitcode:
+				exit (1)
+		self.job.stdout.restore()
+		self.job.stderr.restore()
+
+
+	def build_timed(self, threads, timefile = '/dev/null', make_opts = ''):
+		build_string = "/usr/bin/time make %s -j %s vmlinux > /dev/null 2> %s" % (make_opts, threads, timefile)
+		print build_string
+		exitcode = os.system (build_string)
+		if exitcode or (not os.path.isfile('vmlinux')):
+			exit (1)
+		print "make clean"
+		os.system ("make clean")
+
+	
+	def install(self, dir):
+		# install the kernel
+		os.chdir(self.build_dir)
+		image = 'arch/' + get_target_arch() + '/boot/' + target
+		force_copy(image, '/boot/vmlinuz-autotest')
+		force_copy('System.map', '/boot/System.map-autotest')
+		force_copy('.config', '/boot/config-autotest')
+	
+		if kernel_config.modules_needed('.config'):
+			os.system('make modules_install')
+	
+	
+	def set_cross_compiler(self):
+		target_arch = get_target_arch()
+		global target
+		target = 'bzImage'
+	
+		if target_arch == 'ppc64':
+			install_package('ppc64-cross')
+			os.environ['CROSS_COMPILE']=autodir+'sources/ppc64-cross/bin'
+			target = 'zImage'
+		elif target_arch == 'x86_64':
+			install_package('x86_64-cross')
+			os.environ['ARCH']='x86_64'
+			os.environ['CROSS_COMPILE']=autodir+'sources/x86_64-cross/bin'
+
diff --git a/bin/kernel_config.py b/bin/kernel_config.py
new file mode 100755
index 0000000..c33aaac
--- /dev/null
+++ b/bin/kernel_config.py
@@ -0,0 +1,83 @@
+# TODO: need a function to get the newest config file older than us from
+# the repo.
+
+from autotest_utils import *
+
+def apply_overrides(orig_file, changes_file, output_file):
+	# First suck all the changes into a dictionary.
+	input = file(changes_file, 'r')
+	for line in input.readlines():
+		[key] = line.split('=')[0:1]
+		if key.startswith('CONFIG_'):
+			override[key] = line;
+	input.close()
+
+	# Now go through the input file, overriding lines where need be
+	input = file(orig_file, 'r')
+	ouput = file(output_file, 'w')
+	for line in input.readlines():
+		key = line.split('=')[0:1]
+		if override[key]:
+			output.write(override[key])
+		else:
+			output.write(line)
+	input.close()
+	output.close()
+
+
+def diff_configs(old, new):
+	os.system('diff -u %s %s > %s' % (old, new, new + '.diff'))
+
+
+
+def modules_needed(config):
+	return (grep('CONFIG_MODULES=y', config) and grep('=m', config))
+
+class kernel_config:
+	# Build directory must be ready before init'ing config.
+	# 
+	# Stages:
+	# 	1. Get original config file
+	#	2. Apply overrides
+	#	3. Do 'make oldconfig' to update it to current source code
+	#                  (gets done implicitly during the process)
+	#
+	# You may specifiy the a defconfig within the tree to build,
+	# or a custom config file you want, or None, to get machine's
+	# default config file from the repo.
+
+	build_dir = ''		# the directory we're building in
+	config_dir = ''		# local repository for config_file data
+
+	build_config = ''	# the config file in the build directory
+	orig_config = ''	# the original config file
+	over_config = ''	# config file + overrides
+
+	def __init__(self, build_dir, config_dir, orig_file, overrides):
+		self.build_dir = build_dir
+		self.config_dir = config_dir
+
+		# 	1. Get original config file
+		self.build_config = build_dir + '/.config'
+		self.orig_config = config_dir + '/config.orig'
+		get_file(orig_file, self.orig_config)
+		self.update_config(self.orig_config, self.orig_config+'.new')
+		diff_configs(self.orig_config, self.orig_config+'.new')
+
+		#	2. Apply overrides
+		if overrides:
+			self.over_config = config_dir + '/config.over'
+			apply_overrides(self.orig_config, overrides, over_config)
+			self.update_config(self.over_config, self.over_config+'.new')
+			diff_configs(self.over_config, self.over_config+'.new')
+		else:
+			self.over_config = self.orig_config
+
+
+	def update_config(self, old_config, new_config = 'None'):
+		os.chdir(self.build_dir)
+		shutil.copyfile(old_config, self.build_config)
+		system('yes "" | make oldconfig > /dev/null')
+		if new_config:
+			shutil.copyfile(self.build_config, new_config)
+
diff --git a/bin/self-test/test_job b/bin/self-test/test_job
new file mode 100755
index 0000000..108e62f
--- /dev/null
+++ b/bin/self-test/test_job
@@ -0,0 +1,32 @@
+#!/usr/bin/python2.3
+
+import os,sys
+import job, kernel, test
+from autotest_utils import *
+
+# Create the directory structure
+# Redirect stdout, stderr
+# build
+# boot
+# useprofiler / disuseprofiler
+# For each test ... create test dir, subdirs, run the test, log result
+# some way to invoke profilers
+
+job = job.job('myjob')
+
+print "TEST: initing kernel"
+testkernel = job.kernel(job.tmpdir+'/build', '/usr/local/src/linux-2.6.14.tar.bz2') # '2.4.16'
+testkernel.patch(['/usr/local/src/patch-2.6.14-git6.bz2'])
+testkernel.config(['http://ftp.kernel.org/pub/linux/kernel/people/mbligh/config/config.up'])
+
+print "TEST: building kernel"
+testkernel.build()
+
+print "TEST: installing kernel"
+# testkernel.install('autotest')
+
+# print "TEST: booting system"
+# system.boot()          # does autotest by default
+
+print "TEST: initing kernbench"
+job.runtest('kernbench', 'kernbench', (2, 5))
diff --git a/bin/self-test/test_kernbench b/bin/self-test/test_kernbench
new file mode 100755
index 0000000..9f41970
--- /dev/null
+++ b/bin/self-test/test_kernbench
@@ -0,0 +1,8 @@
+import kernbench
+
+print sys.path
+
+job = job.job('myjob')
+
+print "TEST: initing kernbench"
+job.runtest('kernbench', 'kernbench', '2 5')
diff --git a/bin/self-test/test_logfile.stderr b/bin/self-test/test_logfile.stderr
new file mode 100644
index 0000000..5429f1c
--- /dev/null
+++ b/bin/self-test/test_logfile.stderr
@@ -0,0 +1,2 @@
+This should go into the stdout logfile 1
+make: *** No rule to make target `love,'.  Stop.
diff --git a/bin/self-test/test_logfile.stdout b/bin/self-test/test_logfile.stdout
new file mode 100644
index 0000000..e14e582
--- /dev/null
+++ b/bin/self-test/test_logfile.stdout
@@ -0,0 +1,4 @@
+This should go into the stdout logfile 2
+Mon Jan 30 18:27:24 PST 2006
+t logfile 2
+Mon Jan 30 18:18:20 PST 2006
diff --git a/bin/self-test/test_redirect b/bin/self-test/test_redirect
new file mode 100755
index 0000000..47b250a
--- /dev/null
+++ b/bin/self-test/test_redirect
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+
+from autotest_utils import *
+import os
+
+stdout = fd_stack(1, sys.stdout)
+stderr = fd_stack(2, sys.stderr)
+
+print "About to redirect stdout 1"
+os.system ("echo About to redirect stdout 2")
+os.system ("date")
+stdout.redirect("test_logfile.stdout")
+print "This should go into the stdout logfile 1"
+os.system ("echo This should go into the stdout logfile 2")
+# stderr.redirect("test_logfile.stderr")
+sys.stderr.write ("This should go into the stdout logfile 1\n")
+os.system ("date")
+# stderr.restore()
+stdout.restore()
+print "stdout all done 1"
+os.system ("echo stdout all done 2")
+os.system ("date")
+
diff --git a/bin/test.py b/bin/test.py
new file mode 100644
index 0000000..d99440b
--- /dev/null
+++ b/bin/test.py
@@ -0,0 +1,22 @@
+import os
+from autotest_utils import *
+
+class test:
+	def __init__(self, job, testdir):
+		self.job = job
+		self.testdir = job.resultdir + '/' + testdir
+		os.mkdir(self.testdir)
+		os.mkdir(self.testdir + "/results")
+		os.mkdir(self.testdir + "/profiling")
+		os.mkdir(self.testdir + "/debug")
+		os.mkdir(self.testdir + "/analysis")
+
+
+	def run(self, testname, parameters):
+		os.chdir(self.testdir)
+		pid = os.fork()
+		if pid:			# parent
+			os.waitpid (pid,0)
+		else:			# child
+			self.setup()
+			self.execute()
diff --git a/bin/tests/kernbench.py b/bin/tests/kernbench.py
new file mode 100755
index 0000000..1e3f5a8
--- /dev/null
+++ b/bin/tests/kernbench.py
@@ -0,0 +1,30 @@
+import test
+from autotest_utils import *
+
+class kernbench(test):
+
+	def setup(self,
+			iterations = 1,
+			threads = 2 * count_cpus(),
+			kernelver = autodir + '/src/linux-2.6.14.tar.bz2',
+			config = autodir + "/bin/tests/kernbench/config"):
+		
+		print "kernbench -j %d -i %d -c %s -k %s" % (threads, iterations, config, kernelver)
+
+		self.iterations = iterations
+		self.threads = threads
+		self.kernelver = kernelver
+		self.config = config
+
+		top_dir = job.tmpdir+'/kernbench'
+		kernel = job.kernel(top_dir, kernelver)
+		kernel.config([config])
+
+
+	def execute(self):
+		testkernel.build_timed(threads)         # warmup run
+		for i in range(1, iterations+1):
+			testkernel.build_timed(threads, '../log/time.%d' % i)
+
+		os.chdir(top_dir + '/log')
+		os.system("grep elapsed time.* > time")
diff --git a/bin/tests/kernbench.pyc b/bin/tests/kernbench.pyc
new file mode 100644
index 0000000..8dc0ac2
--- /dev/null
+++ b/bin/tests/kernbench.pyc
Binary files differ
diff --git a/bin/tests/kernbench/config b/bin/tests/kernbench/config
new file mode 100644
index 0000000..6199138
--- /dev/null
+++ b/bin/tests/kernbench/config
@@ -0,0 +1,1441 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.11.6
+# Thu Mar 31 21:15:11 2005
+#
+CONFIG_X86=y
+CONFIG_MMU=y
+CONFIG_UID16=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_IOMAP=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_CLEAN_COMPILE=y
+CONFIG_BROKEN_ON_SMP=y
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+# CONFIG_AUDIT is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_HOTPLUG=y
+CONFIG_KOBJECT_UEVENT=y
+# CONFIG_IKCONFIG is not set
+# CONFIG_EMBEDDED is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SHMEM=y
+CONFIG_CC_ALIGN_FUNCTIONS=0
+CONFIG_CC_ALIGN_LABELS=0
+CONFIG_CC_ALIGN_LOOPS=0
+CONFIG_CC_ALIGN_JUMPS=0
+# CONFIG_TINY_SHMEM is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODULE_UNLOAD is not set
+CONFIG_OBSOLETE_MODPARM=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Processor type and features
+#
+CONFIG_X86_PC=y
+# CONFIG_X86_ELAN is not set
+# CONFIG_X86_VOYAGER is not set
+# CONFIG_X86_NUMAQ is not set
+# CONFIG_X86_SUMMIT is not set
+# CONFIG_X86_BIGSMP is not set
+# CONFIG_X86_VISWS is not set
+# CONFIG_X86_GENERICARCH is not set
+# CONFIG_X86_ES7000 is not set
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+CONFIG_M586=y
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMII is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUMM is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MEFFICEON is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+# CONFIG_X86_GENERIC is not set
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_X86_PPRO_FENCE=y
+CONFIG_X86_F00F_BUG=y
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+CONFIG_X86_ALIGNMENT_16=y
+# CONFIG_HPET_TIMER is not set
+# CONFIG_SMP is not set
+# CONFIG_PREEMPT is not set
+# CONFIG_X86_UP_APIC is not set
+# CONFIG_X86_MCE is not set
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_MICROCODE is not set
+# CONFIG_X86_MSR is not set
+# CONFIG_X86_CPUID is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+CONFIG_NOHIGHMEM=y
+# CONFIG_HIGHMEM4G is not set
+# CONFIG_HIGHMEM64G is not set
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_MTRR is not set
+# CONFIG_REGPARM is not set
+
+#
+# Power management options (ACPI, APM)
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_SOFTWARE_SUSPEND is not set
+
+#
+# ACPI (Advanced Configuration and Power Interface) Support
+#
+# CONFIG_ACPI is not set
+
+#
+# APM (Advanced Power Management) BIOS Support
+#
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_RTC_IS_GMT is not set
+# CONFIG_APM_ALLOW_INTS is not set
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ is not set
+
+#
+# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
+#
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GOMMCONFIG is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_PCI_LEGACY_PROC=y
+CONFIG_PCI_NAMES=y
+CONFIG_ISA=y
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+# CONFIG_SCx200 is not set
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# PC-card bridges
+#
+CONFIG_PCMCIA_PROBE=y
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=y
+CONFIG_BINFMT_MISC=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+CONFIG_PARPORT=y
+CONFIG_PARPORT_PC=y
+CONFIG_PARPORT_PC_CML1=y
+# CONFIG_PARPORT_SERIAL is not set
+# CONFIG_PARPORT_PC_FIFO is not set
+# CONFIG_PARPORT_PC_SUPERIO is not set
+# CONFIG_PARPORT_OTHER is not set
+# CONFIG_PARPORT_1284 is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_INITRAMFS_SOURCE=""
+# CONFIG_LBD is not set
+# CONFIG_CDROM_PKTCDVD is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# ATA/ATAPI/MFM/RLL support
+#
+CONFIG_IDE=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_IDE_SATA is not set
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+CONFIG_BLK_DEV_IDEFLOPPY=y
+CONFIG_BLK_DEV_IDESCSI=y
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+CONFIG_IDE_GENERIC=y
+CONFIG_BLK_DEV_CMD640=y
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_IDEPCI_SHARE_IRQ=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+# CONFIG_BLK_DEV_GENERIC is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+CONFIG_BLK_DEV_RZ1000=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_IDEDMA_ONLYDISK is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_BLK_DEV_ATIIXP is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5520 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+CONFIG_BLK_DEV_PIIX=y
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+CONFIG_BLK_DEV_SIS5513=y
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_ARM is not set
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_IVB is not set
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI Transport Attributes
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+CONFIG_SCSI_AIC7XXX_OLD=y
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_SCSI_SATA is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_PPA is not set
+# CONFIG_SCSI_IMM is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+CONFIG_SCSI_QLOGIC_ISP=y
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+CONFIG_SCSI_QLA2XXX=y
+# CONFIG_SCSI_QLA21XX is not set
+# CONFIG_SCSI_QLA22XX is not set
+# CONFIG_SCSI_QLA2300 is not set
+# CONFIG_SCSI_QLA2322 is not set
+# CONFIG_SCSI_QLA6312 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+
+#
+# Networking support
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_UNIX=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_IP_TCPDIAG=y
+# CONFIG_IP_TCPDIAG_IPV6 is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+# CONFIG_IPV6 is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_IP_NF_CONNTRACK=y
+# CONFIG_IP_NF_CT_ACCT is not set
+# CONFIG_IP_NF_CONNTRACK_MARK is not set
+# CONFIG_IP_NF_CT_PROTO_SCTP is not set
+# CONFIG_IP_NF_FTP is not set
+# CONFIG_IP_NF_IRC is not set
+# CONFIG_IP_NF_TFTP is not set
+# CONFIG_IP_NF_AMANDA is not set
+# CONFIG_IP_NF_QUEUE is not set
+CONFIG_IP_NF_IPTABLES=y
+# CONFIG_IP_NF_MATCH_LIMIT is not set
+# CONFIG_IP_NF_MATCH_IPRANGE is not set
+# CONFIG_IP_NF_MATCH_MAC is not set
+# CONFIG_IP_NF_MATCH_PKTTYPE is not set
+# CONFIG_IP_NF_MATCH_MARK is not set
+# CONFIG_IP_NF_MATCH_MULTIPORT is not set
+# CONFIG_IP_NF_MATCH_TOS is not set
+# CONFIG_IP_NF_MATCH_RECENT is not set
+# CONFIG_IP_NF_MATCH_ECN is not set
+# CONFIG_IP_NF_MATCH_DSCP is not set
+# CONFIG_IP_NF_MATCH_AH_ESP is not set
+# CONFIG_IP_NF_MATCH_LENGTH is not set
+# CONFIG_IP_NF_MATCH_TTL is not set
+# CONFIG_IP_NF_MATCH_TCPMSS is not set
+# CONFIG_IP_NF_MATCH_HELPER is not set
+CONFIG_IP_NF_MATCH_STATE=y
+# CONFIG_IP_NF_MATCH_CONNTRACK is not set
+# CONFIG_IP_NF_MATCH_OWNER is not set
+# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
+# CONFIG_IP_NF_MATCH_REALM is not set
+# CONFIG_IP_NF_MATCH_SCTP is not set
+# CONFIG_IP_NF_MATCH_COMMENT is not set
+# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
+CONFIG_IP_NF_FILTER=y
+# CONFIG_IP_NF_TARGET_REJECT is not set
+# CONFIG_IP_NF_TARGET_LOG is not set
+# CONFIG_IP_NF_TARGET_ULOG is not set
+# CONFIG_IP_NF_TARGET_TCPMSS is not set
+# CONFIG_IP_NF_NAT is not set
+# CONFIG_IP_NF_MANGLE is not set
+# CONFIG_IP_NF_RAW is not set
+# CONFIG_IP_NF_ARPTABLES is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+# CONFIG_NET_CLS_ROUTE is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+CONFIG_NETDEVICES=y
+CONFIG_DUMMY=y
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_EL1 is not set
+# CONFIG_EL2 is not set
+# CONFIG_ELPLUS is not set
+# CONFIG_EL16 is not set
+CONFIG_EL3=y
+# CONFIG_3C515 is not set
+CONFIG_VORTEX=y
+# CONFIG_TYPHOON is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+
+#
+# Tulip family network device support
+#
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
+# CONFIG_TULIP_NAPI is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_HP100 is not set
+CONFIG_NET_ISA=y
+# CONFIG_E2100 is not set
+# CONFIG_EWRK3 is not set
+# CONFIG_EEXPRESS is not set
+# CONFIG_EEXPRESS_PRO is not set
+# CONFIG_HPLAN_PLUS is not set
+# CONFIG_HPLAN is not set
+# CONFIG_LP486E is not set
+# CONFIG_ETH16I is not set
+# CONFIG_NE2000 is not set
+# CONFIG_ZNET is not set
+# CONFIG_SEEQ8005 is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+CONFIG_ADAPTEC_STARFIRE=y
+# CONFIG_ADAPTEC_STARFIRE_NAPI is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_DGRS is not set
+CONFIG_EEPRO100=y
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+CONFIG_NE2K_PCI=y
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+CONFIG_SIS900=y
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+CONFIG_ACENIC=y
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_DL2K is not set
+CONFIG_E1000=y
+# CONFIG_E1000_NAPI is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+
+#
+# Ethernet (10000 Mbit)
+#
+# CONFIG_IXGB is not set
+# CONFIG_S2IO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input I/O drivers
+#
+# CONFIG_GAMEPORT is not set
+CONFIG_SOUND_GAMEPORT=y
+CONFIG_SERIO=y
+CONFIG_SERIO_I8042=y
+# CONFIG_SERIO_SERPORT is not set
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PARKBD is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_INPORT is not set
+# CONFIG_MOUSE_LOGIBM is not set
+# CONFIG_MOUSE_PC110PAD is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+CONFIG_PRINTER=y
+# CONFIG_LP_CONSOLE is not set
+# CONFIG_PPDEV is not set
+# CONFIG_TIPAR is not set
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+# CONFIG_GEN_RTC is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+CONFIG_AGP=y
+# CONFIG_AGP_ALI is not set
+# CONFIG_AGP_ATI is not set
+# CONFIG_AGP_AMD is not set
+# CONFIG_AGP_AMD64 is not set
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_INTEL_MCH is not set
+# CONFIG_AGP_NVIDIA is not set
+CONFIG_AGP_SIS=y
+# CONFIG_AGP_SWORKS is not set
+# CONFIG_AGP_VIA is not set
+# CONFIG_AGP_EFFICEON is not set
+# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_HANGCHECK_TIMER is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+# CONFIG_I2C_CHARDEV is not set
+
+#
+# I2C Algorithms
+#
+CONFIG_I2C_ALGOBIT=y
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_ELEKTOR is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_I810 is not set
+# CONFIG_I2C_ISA is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_PARPORT is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_PROSAVAGE is not set
+# CONFIG_I2C_SAVAGE4 is not set
+# CONFIG_SCx200_ACB is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+# CONFIG_I2C_VOODOO3 is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Hardware Sensors Chip support
+#
+# CONFIG_I2C_SENSOR is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_FSCHER is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83627HF is not set
+
+#
+# Other I2C Chip support
+#
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_RTC8564 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Misc devices
+#
+# CONFIG_IBM_ASM is not set
+
+#
+# Multimedia devices
+#
+CONFIG_VIDEO_DEV=y
+
+#
+# Video For Linux
+#
+
+#
+# Video Adapters
+#
+# CONFIG_VIDEO_BT848 is not set
+# CONFIG_VIDEO_PMS is not set
+# CONFIG_VIDEO_BWQCAM is not set
+# CONFIG_VIDEO_CQCAM is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_STRADIS is not set
+# CONFIG_VIDEO_ZORAN is not set
+# CONFIG_VIDEO_SAA7134 is not set
+# CONFIG_VIDEO_MXB is not set
+# CONFIG_VIDEO_DPC is not set
+# CONFIG_VIDEO_HEXIUM_ORION is not set
+# CONFIG_VIDEO_HEXIUM_GEMINI is not set
+# CONFIG_VIDEO_CX88 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_RADIO_CADET is not set
+# CONFIG_RADIO_RTRACK is not set
+# CONFIG_RADIO_RTRACK2 is not set
+# CONFIG_RADIO_AZTECH is not set
+# CONFIG_RADIO_GEMTEK is not set
+# CONFIG_RADIO_GEMTEK_PCI is not set
+# CONFIG_RADIO_MAXIRADIO is not set
+# CONFIG_RADIO_MAESTRO is not set
+# CONFIG_RADIO_SF16FMI is not set
+# CONFIG_RADIO_SF16FMR2 is not set
+# CONFIG_RADIO_TERRATEC is not set
+# CONFIG_RADIO_TRUST is not set
+# CONFIG_RADIO_TYPHOON is not set
+# CONFIG_RADIO_ZOLTRIX is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FB is not set
+# CONFIG_VIDEO_SELECT is not set
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+# CONFIG_MDA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_RAWMIDI=y
+CONFIG_SND_SEQUENCER=y
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+
+#
+# Generic devices
+#
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ISA devices
+#
+# CONFIG_SND_AD1848 is not set
+# CONFIG_SND_CS4231 is not set
+# CONFIG_SND_CS4232 is not set
+# CONFIG_SND_CS4236 is not set
+# CONFIG_SND_ES1688 is not set
+# CONFIG_SND_ES18XX is not set
+# CONFIG_SND_GUSCLASSIC is not set
+# CONFIG_SND_GUSEXTREME is not set
+# CONFIG_SND_GUSMAX is not set
+# CONFIG_SND_INTERWAVE is not set
+# CONFIG_SND_INTERWAVE_STB is not set
+# CONFIG_SND_OPTI92X_AD1848 is not set
+# CONFIG_SND_OPTI92X_CS4231 is not set
+# CONFIG_SND_OPTI93X is not set
+# CONFIG_SND_SB8 is not set
+# CONFIG_SND_SB16 is not set
+# CONFIG_SND_SBAWE is not set
+# CONFIG_SND_WAVEFRONT is not set
+# CONFIG_SND_CMI8330 is not set
+# CONFIG_SND_OPL3SA2 is not set
+# CONFIG_SND_SGALAXY is not set
+# CONFIG_SND_SSCAPE is not set
+
+#
+# PCI devices
+#
+CONFIG_SND_AC97_CODEC=y
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+CONFIG_SND_CS46XX=y
+# CONFIG_SND_CS46XX_NEW_DSP is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_YMFPCI is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_CMIPCI is not set
+CONFIG_SND_ENS1370=y
+CONFIG_SND_ENS1371=y
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+CONFIG_SND_INTEL8X0=y
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VX222 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_USX2Y is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# USB support
+#
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+
+#
+# USB Host Controller Drivers
+#
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_SPLIT_ISO is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_BLUETOOTH_TTY is not set
+# CONFIG_USB_MIDI is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_RW_DETECT is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_MTOUCH is not set
+# CONFIG_USB_EGALAX is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB Multimedia devices
+#
+# CONFIG_USB_DABUSB is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+CONFIG_USB_SERIAL=y
+# CONFIG_USB_SERIAL_CONSOLE is not set
+CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+# CONFIG_USB_SERIAL_FTDI_SIO is not set
+CONFIG_USB_SERIAL_VISOR=y
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+# CONFIG_USB_SERIAL_OMNINET is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGETKIT is not set
+# CONFIG_USB_PHIDGETSERVO is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB ATM/DSL drivers
+#
+
+#
+# USB Gadget Support
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# InfiniBand support
+#
+# CONFIG_INFINIBAND is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+
+#
+# XFS support
+#
+# CONFIG_XFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=y
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+# CONFIG_MSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_SYSFS=y
+# CONFIG_DEVFS_FS is not set
+# CONFIG_DEVPTS_FS_XATTR is not set
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLBFS is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+CONFIG_NFSD=y
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V4 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+CONFIG_SMB_FS=y
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Profiling support
+#
+CONFIG_PROFILING=y
+CONFIG_OPROFILE=y
+
+#
+# Kernel hacking
+#
+CONFIG_DEBUG_KERNEL=y
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_FS is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_EARLY_PRINTK=y
+# CONFIG_DEBUG_STACKOVERFLOW is not set
+# CONFIG_KPROBES is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+CONFIG_4KSTACKS=y
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Hardware crypto devices
+#
+
+#
+# Library routines
+#
+# CONFIG_CRC_CCITT is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_X86_BIOS_REBOOT=y
+CONFIG_PC=y
diff --git a/bin/tests/kernbench/kernbench.old b/bin/tests/kernbench/kernbench.old
new file mode 100755
index 0000000..504f537
--- /dev/null
+++ b/bin/tests/kernbench/kernbench.old
@@ -0,0 +1,48 @@
+print "I AM KERNBENCH!"
+
+threads = 2 * count_cpus()
+kernelver = autodir + '/src/linux-2.6.14.tar.bz2' # "2.6.7"
+config = autodir + "/bin/tests/kernbench/config"
+iterations = 1	
+	
+def usage():
+	print "kernbench [-j threads] [-i iterations] [-c config] [-k kernel]"
+
+
+def getopts():
+	try:
+		opts, args = getopt.getopt(argv, "hj:i:c:k:", ["help"])
+	except getopt.GetoptError:
+		usage()
+		sys.exit(2)
+
+	global threads,iterations,config,kernelver
+
+	for o, a in opts:
+		if o == "-j":
+			threads = int(a)
+			if (threads == 0):
+				threads = ""
+		if o == "-i":
+        		iterations = int(a)
+		if o == "-c":
+			config = a
+		if o == "-k":
+			kernelver = a
+		if o in ("-h", "--help"):
+			usage()
+			sys.exit()
+
+
+getopts()
+print "kernbench -j %d -i %d -c %s -k %s" % (threads, iterations, config, kernelver)
+
+top_dir = system.tmpdir+'/kernbench'
+testkernel = kernel.kernel(system, top_dir, kernelver, '', config, None)
+
+testkernel.build_timed(threads)         # warmup run
+for i in range(1, iterations+1):
+	testkernel.build_timed(threads, '../log/time.%d' % i)
+
+os.chdir(top_dir + '/log')
+os.system("grep elapsed time.* > time")