2.6.27 - the rest of the story
The 2.6.27 merge window closed with the
July 28. Some 8100 changesets were merged this time around, making
2.6.27 another busy development cycle. A number of interesting things went
in since last week's update
the most significant changes visible to Linux users include:
- There are new drivers for ILI9320 LCD controller chips,
Cobalt server LCD frame buffers,
SH7760/SH7763 integrated LCD controllers,
NXP pca9532 LED controllers,
Philips PCA955x I2C LED controllers,
WMI-based hotkeys on HP laptops,
Maxim MAX73xx I2C port expanders,
Micronas DRX3975D/DRX3977D DVB-T demodulators,
DvbWorld 2102 DVB-S USB2.0 receivers,
MaxLinear MxL5007T silicon tuners,
Renesas SH7763 evaluation boards,
Renesas Solutions AP-325RXA boards,
Renesas R0P7785LC0011RL boards, and
Atmel integrated touchscreens.
Also added is "mISDN," a new, modular ISDN driver intended to replace
older code for a number of ISDN cards. Support for using mISDN
drivers remotely via an IP tunnel has been added.
- The Palm T|X handheld computer is now supported.
- The tmpfs filesystem has gained support for asynchronous I/O.
- The hugetlbfs mechanism can now support multiple huge page sizes.
There is a new directory (/sys/kernel/hugepages) with
information on huge page allocations. The x86 (64-bit) architecture
now supports 1GB pages; PowerPC can go to 16GB.
- Most system calls which create file descriptors can now accept a set
of flags; this change allows the race-free establishment of close-on-exec
semantics, requesting non-blocking opens, and more. Developers
wanting to use this capability will have to wait for a version of
glibc which adds the requisite interfaces.
- The unmaintained v850 architecture has been removed.
- The kexec jump patch set,
which uses the kexec mechanism as an alternative way of implementing
suspend-to-disk, has been merged.
- The omfs filesystem has
- /proc now has a file (called syscall) for each
process; when read, it displays the process's current system call and
the supplied arguments.
- Linux users hoping to upgrade their systems in the near future will be
glad to know that
a series of patches designed to make the kernel scale to 4096
processors has been merged.
Changes visible to kernel developers include:
- The tracehook mechanism for defining static trace points (described in
this article) has been
merged, along with a number of trace points in the core kernel.
- A new, lockless form of get_user_pages() has been added:
int get_user_pages_fast(unsigned long start, int nr_pages, int write,
struct page **pages);
Details of this interface can be found in this article, with the one
note that early versions were called fast_gup() instead.
(See also the related lockless page cache work,
which was also merged).
- The long-debated mmu-notifiers patch has
been merged. The notifiers
allow external memory management units (as may be seen in some
graphics cards or in virtualized guests) to be told about decisions
made by the core memory management code.
- There is a new framework for debugging boot-time memory
initialization; there's also "a few basic defensive measures" intended
to prevent difficult-to-debug boot problems.
- The new function:
int object_is_on_stack(void *obj);
returns a true value if the pointed-to object is on the current kernel
- There is a new macro for issuing warnings:
WARN(condition, format, ...);
It's much like WARN_ON() in that it will produce a full oops
listing; the difference is the added printk()-style format
string and arguments.
- A new helper function:
int flush_work(struct work_struct *work);
waits for the specific workqueue job work to finish
- dma_mapping_error() and pci_dma_mapping_error() have
int dma_mapping_error(struct device *dev, dma_addr_t dma_addr);
int pci_dma_mapping_error(struct pci_dev *hwdev, dma_addr_t dma_addr);
In each case, they have gained a new argument specifying which device
the mapping is being done for.
- There are a couple of new radix tree functions:
unsigned int radix_tree_gang_lookup_slot(struct radix_tree_root *root,
unsigned long first_index,
unsigned int max_items);
unsigned int radix_tree_gang_lookup_tag_slot(struct radix_tree_root *root,
unsigned long first_index,
unsigned int max_items,
unsigned int tag);
They are useful for looking up multiple items in a single call.
- Slab cache constructors no longer have a pointer to the cache itself
as an argument; they now take a single void * pointer to
the object itself.
- The long list of Video4Linux2 ioctl() callbacks has been
moved into its own structure (struct v4l2_ioctl_ops) which is
pointed to by the ioctl_ops member of struct
Now begins the long task of finding and fixing all the bugs in all this new
code. If the usual pattern holds, that process will take about two months,
suggesting that we can expect 2.6.27 sometime in October.
to post comments)