The release of the 2.6.14 kernel opened the door for new changes. Many
developers have been quick to submit their patches, with the result that
nearly 2000 commits have been merged for 2.6.15. The door will remain open
for two weeks - until around November 11 - at which point the kernel
should return to stabilization mode.
Many of the patches merged are fixes, and quite a few of them are in
architecture-specific code. Among the rest, however, are the following,
starting with user-visible changes:
- An update to the generic 802.11 code which includes, among other
things, quality-of-service support, the ability to use hardware crypto
and fragmentation offload functions, and "wireless spy" support.
- A driver for Marvell serial ATA controllers. There is also a new "ATA
passthrough" ioctl() allowing arbitrary ATA commands to be sent to
- The old "bluetty" driver has been removed. Everybody should be using
the bluez stack for Bluetooth devices at this point.
- As a result of the device model changes, the 2.6.15 kernel will
require version 071 (or higher) of the udev utility.
- A new uevent device attribute in sysfs can be used to
manually force the creation of a hotplug event for an existing
device. This feature can be used to regenerate hotplug events for
devices which were present when the system was booted.
- The PowerPC 4xx on-chip Ethernet driver has been replaced with a
completely rewritten, more efficient version.
- A new driver for the Freescale Ethernet devices found in some
- Support for the old Cobalt servers has been restored.
- Basic support for hot-pluggable memory.
- A big NTFS rework with much-improved write support.
- A big InfiniBand update, with support for a wider range of userspace
- Support for ARM "RealView" boards.
- A large CIFS filesystem update, with support for change notifications,
mounting from "legacy" servers, case-independent file names, and more.
- DRM support for Radeon PCI Express cards
API changes and other internal patches visible to kernel developers include:
- The nested class devices
patch and associated input subsystem patches. For those who are
curious about where the device model work will go from here, Greg
Kroah-Hartman has posted a roadmap on his
- More conversions of internal function prototypes to use the
introduced in 2.6.14.
- A number of block layer patches, including a rework of the elevator
switch code and the generic
dispatch queue patch. The new I/O barrier code has not been
merged as of this writing.
- A big rework of the remote procedure call code, and a number of
associated NFS updates.
- Some power management changes, including a driver API change; see this article for details.
- A new mechanism allowing code to be notified when USB
busses and devices come and go. Drivers do not normally need to use these
notifiers, but some of the core code benefits from them.
- The driver model class "interface" add() and
remove() methods have picked up a new parameter: a pointer to
the actual interface structure.
- There is a new reader/writer semaphore function
rwsem_is_locked(), which tests whether the rwsem is read
locked without blocking.
- There is a new variant of vmalloc():
void *vmalloc_node(unsigned long size, int node);
As one might expect, it allocates memory on a specific NUMA node.
- The "reserved" bit for memory pages - used to mark pages which are not
managed by the kernel page allocator (kernel text, non-memory areas,
etc.) - has been all but removed. No core code uses it now, with the
exception of software suspend, and that will get fixed eventually.
There are reports that this change breaks VMware.
- A set of Linux security module hooks for the (relatively) new
key management functions.
- A new kernel thread function:
int kthread_stop_sem(struct task_struct *kt, struct semaphore *s);
This function will stop a kernel thread which might be waiting on the
- A "torture test" module for the read-copy-update mechanism.
Stay tuned: there is still time for quite a few more changes to be merged
before the 2.6.15 window closes.
to post comments)