LWN.net Logo

More stuff for 2.6.22

As of this writing, the 2.6.22 merge window remains open, with quite a bit of code still expected to be merged. User-visible changes which have gone in include:

  • The mac80211 (formerly Devicescape) wireless networking stack has finally found its way into the mainline. As of this writing there are no drivers which actually use that stack, but drivers are said to be in the works.

  • The sysfs representation of i2c devices has changed in ways which could break older tools. In particular, versions of lm_sensors prior to 2.10.3 will have problems.

  • A number of old USB touchscreen drivers (itmtouch, mtouchusb, and touchkitusb) have been removed in favor of the new usbtouchscreen driver.

  • The x86_64 architecture has gained relocatable kernel support, a necessary feature for those wanting to use the kexec-based crash dump mechanism.

  • Patching of low-level paravirtualization hooks can be inhibited at boot time with the new noreplace-paravirt boot flag.

  • The REORDER configuration option, which would rearrange functions in the kernel binary for optimal performance, has been removed from the x86_64 architecture.

  • The CIFS filesystem supports IPv6 addresses. There is a new mount option to allow user and group IDs to be overridden. A number of performance improvements for CIFS were also merged.

  • The kernel virtual machine (KVM) API has seen significant changes. If earlier plans still hold, this should be the last set of incompatible KVM changes.

  • There is now a framework for supporting the "RF kill" switches (which disable the transmitter) found on many mobile devices.

  • Support for filesystem "subtypes" has been added. The target here is FUSE-based filesystems, which currently all look the same to the kernel and are hard to specify in fstab. Now a FUSE ssh-based filesystem can have the type "fuse.sshfs".

  • Entries in /proc now exist to provide position and flags information for all open file descriptors.

  • There is a new system call:

        long utimensat(int dirfd, char *filename, struct timespec *times,
                       int flags);
    

    This call allows an application to set the access and modification times for the given filename with nanosecond precision.

  • The device mapper has a new "delay" target which can delay I/O operations; this may seem like a feature of dubious value but it's intended for testing only.

  • Motorola sysv68 disk partition tables are now supported.

  • There is a new private futex mechanism which improves scalability by avoiding the shared global namespace.

  • The PowerPC architecture supports the concept of "slices" - special areas of memory which can have different page sizes. The feature is similar to hugetlbfs, but with more page size flexibility.

  • New hardware supported includes Picotux 200 ARM boards, ADS7846 touchscreen devices, D-Link DSM-G600 boards, MIPS RM9122 integrated serial ports, PMC-Sierra MSP71xx serial devices, MS7712SE01 boards, L-BOX RE2 router boards, SH7780 and SH7722 Solution Engine boards, Sun XVR-500 and XVR-2500 framebuffers, SUN4U PCI-E controllers, Apple system management controllers, Ricoh RS5C313 clock chips, Maxim DS1WM one-wire ASIC cores, Alchemy au1500 programmable serial controllers, Intel LE80578-based framebuffers, PowerPC 750 "Holly" platforms, PowerPC 440GP "Ebony" reference boards, Maxim MAX6650 and MAX6651 fan controllers, Analog Devices AD741x monitoring chips, Intel Core temperature sensors, PA Semi PA6T-1682M random number generators, VIA VT8623 framebuffers, and various drivers for the new "Blackfin" architecture.

Changes visible to kernel developers include:

  • The i2c layer has seen significant new changes meant to make i2c drivers look more like drivers for other buses. There are, for example, new probe() and remove() methods for notifying devices when i2c peripherals come and go. Since i2c is not a self-describing bus, the support code still needs help to know where i2c devices might be; for many classes of device, this information can be had from the system BIOS.

  • The crypto API has a new set of functions for use with asynchronous block ciphers. There is also a new cryptd kernel thread which can run any synchronous cipher in an asynchronous mode.

  • The subsystem structure has been removed from the Linux device model; there never really was any need for it. Most code which was expecting a struct subsystem argument has been changed to use the relevant kset instead.

  • There is a new version of the in-kernel rpcbind (portmapper) client which supports versions 2-4 of the rpcbind protocol. The portmapper API has changed as a result.

  • Numerous changes to the paravirt_ops methods have been made. Additionally, paravirt_ops is no longer a GPL-only export.

  • There is a new memory function:

        void *krealloc(const void *p, size_t new_size, gfp_t flags);
    

    As one would expect, it changes the size of the allocated memory, moving it if need be.

  • The SLUB allocator has been merged as an experimental (for now) alternative to the slab code.

  • A new macro has been added to make the creation of slab caches easier:

        struct kmem_cache KMEM_CACHE(struct-type, flags);
    
    The result is the creation of a cache holding objects of the given struct_type, named after that type, and with the additional slab flags (if any).

  • The SLAB_DEBUG_INITIAL flag has been removed, along with the associated SLAB_CTOR_VERIFY flag passed to constructors. The result is a set of changes which ripples through quite a few source files. The unused SLAB_CTOR_ATOMIC flag is also gone.

  • The "quicklist" mechanism has been merged. Quicklists are a simple lookaside cache for page table pages which optimize the allocation and initialization of those pages.

  • The SuperH architecture has working kgdb support again.

  • The ia64 architecture has a new tool which will inject machine check errors into a running system. Not recommended for production machines.

  • The deferrable timers patch has been merged. There is also a new macro for initializing workqueue entries (INIT_DELAYED_WORK_DEFERRABLE()) which causes the job to be queued in a deferrable manner.

  • The old SA_* interrupt flags have not been removed as originally scheduled, but their use will now generate warnings at compile time.

  • There is a new list_first_entry() macro which, surprisingly, gets the first entry from a list.

  • The atomic64_t and local_t types are now fully supported on a wider set of architectures.

  • The "hibernation" (suspend to disk) code has been separated from the "suspend" (to RAM) code as part of a larger effort to distinguish between those two very different operations.

  • Workqueues have been reworked again. There is a new function:

        void cancel_work_sync(struct work_struct *work);
    

    This function tries to cancel a single workqueue entry, be it on the shared (keventd) or a private workqueue. Meanwhile run_scheduled_work() has been removed.

The merging process is not yet done, so expect another big set of patches to go into 2.6.22 before the window closes.


(Log in to post comments)

-ffunction-sections

Posted May 10, 2007 4:31 UTC (Thu) by dirtyepic (subscriber, #30178) [Link]

I can't seem to find the commit where -ffunction-sections (ie. function reordering) was removed for x86_64. Does anyone know offhand the reason it was punted?

-ffunction-sections

Posted May 10, 2007 4:34 UTC (Thu) by dirtyepic (subscriber, #30178) [Link]

Of course I stumble across it two seconds later..

http://thread.gmane.org/gmane.linux.kernel/517493/focus=5...

More stuff for 2.6.22

Posted May 10, 2007 9:37 UTC (Thu) by drag (subscriber, #31333) [Link]

Go devicescape stack! er.. mac80211

I know that at least one driver needs it.. the Ralink rt2x00 drivers. The broadcom bcm43xx driver can use it also.

Other drivers could probably benifit from it also. Make them smaller, faster, and support more advanced features.

So how was the userspace stuff resolved with Mac80211? Just through wpa_supplicant or something?

More stuff for 2.6.22

Posted May 10, 2007 11:05 UTC (Thu) by tajyrink (subscriber, #2750) [Link]

There's also zd1211rw that has been moving to devicescape, and adm8211, rtl818x and apparently ipw3945.

More stuff for 2.6.22

Posted May 11, 2007 1:16 UTC (Fri) by drag (subscriber, #31333) [Link]

That's great. It would be terrific if Linux wireless woes are effectively solved with this and future driver development can be much easier then it's traditionally been....

More stuff for 2.6.22

Posted May 11, 2007 20:14 UTC (Fri) by BradReed (subscriber, #5917) [Link]

yep, the newer iwlwifi driver for the ipw3945 and ipw4965 is using it.

More stuff for 2.6.22

Posted May 12, 2007 22:40 UTC (Sat) by xma (guest, #44981) [Link]

Will ipw2100 and ipw2200 transit to this new WiFi stack ?

More stuff for 2.6.22

Posted May 12, 2007 22:42 UTC (Sat) by xma (guest, #44981) [Link]

I think suspend to ram/disk separation is a good news and I hope it'll
help to have reliable solutions for the s2d part.

Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds