KernelNewbies:

TableOfContents()

Short overview (for news sites, etc)

KVM (http://kvm.sourceforge.net) for Intel with VT and AMD with SVM hardware virtualization; Support for relocatable kernels, for backups with kernel panics.

Important things (AKA: ''the cool stuff'')

Relocatable kernel support for x86

This feature (enabled with CONFIG_RELOCATABLE) isn't very noticeable for end-users but it's quite interesting from a kernel POV. Until now, it was a requeriment that a i386 kernel was loaded at a fixed memory address in order to work, loading it in a different place wouldn't work. This feature allows to compile a kernel that can be loaded at different 4K-aligned addresses, but always below 1 GB, with no runtime overhead. Kdump users (a feature introduced in [http://kernelnewbies.org/Linux_2_6_13 2.6.13] that it triggers [http://lwn.net/Articles/108595/ kexec] in a kernel crash in order to boot a kernel that has been previously loaded at a 'empty' address, then runs that kernel, saves the memory where the crashed kernel was placed, dumps it in a file and continues booting the system) will benefit from this because until now the "rescue kernel" need to be compiled with different configuration options in order to make it bootable at a different address. With a relocatable kernel, the same kernel can be boot at different addresses. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=968de4f02621db35b8ae5239c8cfc6664fb872d8 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e69f202d0a1419219198566e1c22218a5c71a9a6 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=be274eeaf20b4c7155242645d5e2c48b023e609b (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=fd593d12770d4a0d1ff095d44b96436c18479ee8 (commit)]

Paravirtualization support for i386

The basic hooks for replacing all non virtualizable instructions on x86 are in. This currently only runs on native hardware, but will allow to link in modules for paravirtualized Xen/Vmware/lhype. There are limitations like no SMP support yet. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=da181a8b3916aa7f2e3c5775d2bd2fe3454cf82d (commit 1], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=dfbea0ad50e08c52539bddce977b07f77a762ba4 2], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3bbf54725467d604698721384d858b5983b87e8f 3], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4f205fd45a5c192907188d6f8f6d7e66db859248 4], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=6020c8f315709a508b027ef6749e85b125190947 5], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8542b200cbe5609edd7aae0c304c091a1c290452 6], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8ecb8950695e907ed25acffec9e98c6806e311c8 7], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a2952d8949bb0b37c1be92a89c4f180c74292857 8], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=bd472c794bbf6771c3fc1c58f188bc16c393d2fe 9] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c9ccf30d77f04064fe5436027ab9d2230c7cdd94 10] [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d3561b7fa0fb0fc583bab0eeda32bec9e4c4056d 11], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=13623d79309dd82e1964458fa017979d16f33fa8 12], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=139ec7c416248b9ea227d21839235344edfee1e0 13)]

Sleazy FPU optimization

This is a x86-32 port of the x86-64 feature implemented in [http://kernelnewbies.org/Linux_2_6_19 2.6.19]. It doesn't gives huge performance except a very small improvement in FPU-intensive programs, but it's also a interesting optimization. Right now the kernel has a 100% lazy fpu behavior: after *every* context switch a trap is taken for the first FPU use to restore the FPU context lazily. This is of course great for applications that have very sporadic or no FPU use (since then you avoid doing the expensive save/restore all the time). However for very frequent FPU users you take an extra trap every context switch. This feature adds a simple heuristic to this code: After 5 consecutive context switches of FPU use, the lazy behavior is disabled and the context gets restored every context switch. If the app indeed uses the FPU, the trap is avoided (the chance of the 6th time slice using FPU after the previous 5 having done so are quite high obviously). After 256 switches, this is reset and lazy behavior is returned (until there are 5 consecutive ones again). The reason for this is to give apps that do longer bursts of FPU use still the lazy behavior back after some time. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=acc207616a91a413a50fdd8847a747c4a7324167 (commit)]

Drivers

HW Mon

Network

libata

Sensors

Audio

Video

Other stuff

Arch-independent changes in the kernel core

Architecture-specific changes

Filesystems

Networking

CPU Freq

KernelNewbies: Linux_2_6_20 (last edited 2007-01-23 20:22:49 by diegocalleja)