KernelNewbies:

Linux 2.6.22 Released, 2007 ([http://kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.22 full SCM git log])

TableOfContents()

Short overview (for news sites, etc)

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

New Slab allocator: SLUB

Recommended article from [http://lwn.net]: [http://lwn.net/Articles/229984/ "The SLUB allocator"]

The slab allocator is a object-caching kernel memory allocator used for dealing with "objects that are frequently allocated and freed" (see the [http://citeseer.ist.psu.edu/bonwick94slab.html "slab allocator" paper from Jeff Bonwick]). It's a critical piece of the inners of the memory management subsystem, and a critical piece to get good performance. The Linux slab allocator works quite well for pretty much everybody; however some people (SGI) has found its current design inefficient in some cases. For example, in 1K nodes/processors configurations, several GB of memory are wasted only in object queues, not counting the objects themselves. It also has become too complex when it grown features like proper NUMA policy support.

As result, a new slab allocator called "SLUB" has been developed by Christoph Lameter from SGI, to solve those and other problems. Its design is simpler, but it also adresses some problems that can result in better performance in some cases and more efficient memory usage (see the full design notes in this [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=81819f0fc8285a2a5a921c019e3e3d7b6169d225 commit link]). It also has better debug capabilities. There's a slabinfo userspace tool that you can find in Documentation/vm/slabinfo.c.

Its aim is to replace transparently slab, but in 2.6 this new slab allocator is optional and not enabled by default. You can enable it at compile time (making it the third option along with SLOB, the embedded-oriented slab allocator). SLUB has been tested for some time and it's solid enougth to try it on your systems, but due to the importance of this part of the kernel, it won't completely replace the current slab allocator until more exposure and testing has been done, hence it's not recommended to use it in production systems. Testing reports, specially regressions, are greatly appreciated.

[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=mm/slub.c;hb=HEAD source code of mm/slub.c]; [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/vm/slub.txt user documentation]

New Wireless stack

* Add mac80211 wireless stack. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f0706e828e96d0fa4e80c0d25aa98523f6d589a0 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=64a327a7029d3860ddf6a024816afa9e6673eb57 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a9de8ce0943e03b425be18561f51159fcceb873d (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e9f207f0ff90bf60b825800d7450e6f2ff2eab88 (commit)] * cfg80211: New wireless config infrastructure [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=704232c2718c9d4b3375ec15a14fc0397970c449 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2a5e1c0eb9efe26eed1dd072fe08de5797a7efd5 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9e101eab153073d8a1fc7ea22b20af65de8ab44b (commit)]

New Firewire stack

* Add device probing and sysfs integration. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=19a15b937b26638933307bb02f7b1801310d6eb2 (commit)] * Add core firewire stack. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=3038e353cfaf548eb94f02b172b9dbe412abd24c (commit)] * Add SBP-2 protocol driver for storage devices. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9ba136d0fe5a3dd33533b4a2a21156aa22f80ebe (commit)] * Add driver for OHCI firewire host controllers. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ed5689122f4cdb5cb8c6770ad1a2c8561b32d9b3 (commit)]

Blackfin architecture

2.6.22 adds support for yet another architecture: The Analog Devices Blackfin processor architecture, and currently supports the BF533, BF532, BF531, BF537, BF536, BF534, and BF561 (Dual Core) devices, with a variety of development platforms including those avaliable from Analog Devices (BF533-EZKit, BF533-STAMP, BF537-STAMP, BF561-EZKIT), and Bluetechnix! Tinyboards.

The Blackfin architecture was jointly developed by Intel and Analog Devices Inc. (ADI) as the Micro Signal Architecture (MSA) core and introduced it in December of 2000. Since then ADI has put this core into its Blackfin processor family of devices. The Blackfin core has the advantages of a clean, orthogonal,RISC-like microprocessor instruction set. It combines a dual-MAC (Multiply/Accumulate), state-of-the-art signal processing engine and single-instruction, multiple-data (SIMD) multimedia capabilities into a single instruction-set architecture.

The Blackfin architecture, including the instruction set, is described by the [http://blackfin.uclinux.org/gf/download/frsrelease/29/2549/Blackfin_PRM.pdf ADSP-BF53x/BF56x Blackfin Processor Programming Reference]. The Blackfin processor is already supported by major releases of gcc, and [http://blackfin.uclinux.org/gf/project/toolchain/frs there are available binary and source rpms/tarballs for many architectures]. There is [http://docs.blackfin.uclinux.org/ complete documentation, including "getting started" guides], which provides links to the sources and patches you will need in order to set up a cross-compiling environment for bfin-linux-uclib. All the code is actively supported by Analog Devices Inc, at: http://blackfin.uclinux.org

[http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=1394f03221790a988afc3e4b3cb79f2e477246a9 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a5f6abd4f7558fea97bc4021fd0eb7dcc5d16a77 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8cc75c9a1498913d668b6d3559940c6837cee8bf (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d24ecfcc3953f9c3b833508cd839be614a3f3c64 (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0851a2848cfd40012063ca9cf86fb67b7bebceff (commit)], [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=194de5612777a9ff4f96dae1932f77a5a89e5f0a (commit)]

Secure RxRPC sockets

* Provide secure RxRPC sockets for use by userspace and kernel both [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=17926a79320afa9b95df6b977b40cca6d8713cea (commit)] * Add an interface to the AF_RXRPC module for the AFS filesystem to use [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=651350d10f93bed7003c9a66e24cf25e0f8eed3d (commit)] * Make the in-kernel AFS filesystem use AF_RXRPC instead of the old RxRPC code [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=08e0e7c82eeadec6f4871a386b86bf0f0fbcb4eb (commit)] * Delete the old RxRPC code. [http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=63b6be55e8b51cb718468794d343058e96c7462c (commit)]

VMI (Virtual Machine Interface)

New drivers

Crashing soon a kernel near you

This is a list of some of the ongoing patches being developed at the kernel community that will be part of future Linux releases. Those features may take many months to get into the Linus' git tree, or may be dropped. The features are tested in the -mm tree, but be warned, it can crash your machine, eat your data (unlikely but not impossible) or kidnap your family (just because it has never happened it doesn't mean you're safe):

Various core changes

Architecture-specific changes

Filesystems

Networking

Various subsystems

SELinux

Crypto

Drivers

Network drivers

SATA/IDE/SCSI

Graphics

Sound

(commit)]

Input

MTD

USB

V4L/DVB

Added VIDIOC_INT_G_STD_OUTPUT and VIDIOC_INT_S_STD_OUTPUT to allow drivers to set the TV standard for video output separately from the video capture. This is needed for cx23415 support where the decoder is separate from the encoder and can have a different TV standard. Modified the saa7127 module to listen to VIDIOC_INT_G/S_STD_OUTPUT instead of VIDIOC_G/S_STD.

I2C

Bluetooth

Cpufreq

ACPI

HwMon

KernelNewbies: Linux_2_6_22 (last edited 2007-05-30 15:39:32 by diegocalleja)