Well, I managed to get KVM working on my Ubuntu Feisty box, and it wasn't that hard. The hardware-assisted support for virtual machines (which is what KVM relies on) is absolutely amazing, though it took me a little bit of reading up on it to get it to work (but then again, what brand-spanking new technology works right out of the box perfectly and optimized on the first try, anyway?).
In the event that it is of any interest whatsoever to anyone, I am going to post the unified diff between the stock Ubuntu kernel configuration and my own. Be forewarned that this kernel configuration is for a 64-bit x86 system, not for a 32-bit one, and so you will not be able to use this kernel configuration on a 32-bit system as far as I’m aware. Also, I made a couple of other tweaks-low latency desktop configuration settings, changed the timer resolution in the kernel, and reduced the number of supported processors to save some RAM since my system will never support more than 2 CPUs anyway.
I do have already-built Ubuntu packages that can be used with this exact configuration… but I do not have the $$ to put them up on webspace. So, if anyone wants those, send me a reasonable amount of money (at least enough to cover the cost of a CD-R and Media Mail postage or whatever it is that has to be used for shipping CDs nowadays) and I'll send it out. The packages take up 243.5 MB with the source code, and 197.5 MB without the source code. Also, if you need any of the modules from the restricted modules package, that package does not directly work with this kernel. However, creating the binary modules that are needed is pretty trivial; I can build those on-demand for anyone that wants/needs them. This includes the NVIDIA, NVIDIA Legacy, and ATI kernel drivers, as well as things like Madwifi. I already have the NVIDIA module since I require it for my system.
--- /boot/config-2.6.20-15-generic 2007-04-15 01:02:34.000000000 -0400
+++ /boot/config-2.6.20.3-ubuntu1 2007-04-28 14:27:44.000000000 -0400
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20-15-generic
-# Sun Apr 15 05:02:34 2007
+# Linux kernel version: 2.6.20.3-ubuntu1
+# Sat Apr 28 14:27:44 2007
#
CONFIG_X86_64=y
CONFIG_64BIT=y
@@ -39,7 +39,7 @@
#
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
-CONFIG_VERSION_SIGNATURE="Ubuntu 2.6.20-15.27-generic"
+CONFIG_VERSION_SIGNATURE="Ubuntu 2.6.20-15.27-mbt1"
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
@@ -50,7 +50,8 @@
# CONFIG_UTS_NS is not set
CONFIG_AUDIT=y
# CONFIG_AUDITSYSCALL is not set
-# CONFIG_IKCONFIG is not set
+CONFIG_IKCONFIG=m
+CONFIG_IKCONFIG_PROC=y
CONFIG_CPUSETS=y
CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y
@@ -113,20 +114,19 @@
#
CONFIG_X86_PC=y
# CONFIG_X86_VSMP is not set
-# CONFIG_MK8 is not set
+CONFIG_MK8=y
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
-CONFIG_GENERIC_CPU=y
-CONFIG_X86_L1_CACHE_BYTES=128
-CONFIG_X86_L1_CACHE_SHIFT=7
-CONFIG_X86_INTERNODE_CACHE_BYTES=128
+# CONFIG_GENERIC_CPU is not set
+CONFIG_X86_L1_CACHE_BYTES=64
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_INTERNODE_CACHE_BYTES=64
CONFIG_X86_TSC=y
CONFIG_X86_GOOD_APIC=y
CONFIG_MICROCODE=m
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
-CONFIG_X86_HT=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_MTRR=y
@@ -134,8 +134,8 @@
# CONFIG_SCHED_SMT is not set
CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_VOLUNTARY=y
-# CONFIG_PREEMPT is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_NUMA=y
CONFIG_K8_NUMA=y
@@ -158,11 +158,11 @@
CONFIG_RESOURCES_64BIT=y
CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
CONFIG_OUT_OF_LINE_PFN_TO_PAGE=y
-CONFIG_NR_CPUS=8
+CONFIG_NR_CPUS=2
CONFIG_HOTPLUG_CPU=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
CONFIG_HPET_TIMER=y
-# CONFIG_HPET_EMULATE_RTC is not set
+CONFIG_HPET_EMULATE_RTC=y
CONFIG_IOMMU=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
@@ -176,10 +176,10 @@
CONFIG_SECCOMP=y
# CONFIG_CC_STACKPROTECTOR is not set
# CONFIG_HZ_100 is not set
-CONFIG_HZ_250=y
+# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=250
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
CONFIG_REORDER=y
CONFIG_K8_NB=y
CONFIG_GENERIC_HARDIRQS=y
@@ -3618,6 +3618,7 @@
CONFIG_DETECT_SOFTLOCKUP=y
# CONFIG_SCHEDSTATS is not set
# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set