|
|
Subscribe / Log in / New account

2.6.27 - the rest of the story

By Jonathan Corbet
July 29, 2008
The 2.6.27 merge window closed with the 2.6.27-rc1 release on 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 been merged.

  • /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 stack.

  • 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 executing.

  • dma_mapping_error() and pci_dma_mapping_error() have new prototypes:

        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, 
                                                 void ***results,
    					     unsigned long first_index, 
    					     unsigned int max_items);
        unsigned int radix_tree_gang_lookup_tag_slot(struct radix_tree_root *root, 
                                                     void ***results,
    						 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 video_device.

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.

Index entries for this article
KernelReleases/2.6.27


to post comments

2.6.27 - the rest of the story

Posted Jul 31, 2008 1:41 UTC (Thu) by lacostej (guest, #2760) [Link]

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.

Damn it, I will still have to use out of tree patches for my 8192 processors mythtv box.

Jonathan, thanks for the humor! Always appreciated.

2.6.27 - the rest of the story

Posted Jul 31, 2008 6:26 UTC (Thu) by dlang (guest, #313) [Link]

our editor is modest enough not to have mentioned the final line of the announcement

Quote:
Go to kernelnewbies or lwn for more reporting, I'm going to sleep for 
twenty-four hours now ;)

/proc/1234/syscall vs /proc/1234/wchan

Posted Jul 31, 2008 8:23 UTC (Thu) by walles (guest, #954) [Link] (1 responses)

I've asked this before both on the kernel mailing list and in Debian's bug tracker without getting any reply, but how is the syscall file different from the wchan file?

/proc/1234/wchan has been there for ages, but seems broken AFAICT (see the linked posts).

/proc/1234/syscall vs /proc/1234/wchan

Posted Aug 3, 2008 21:44 UTC (Sun) by jimparis (guest, #38647) [Link]

I don't get zero, but on my x86_32 machine I always get "_stext". My x86_64 machine gives more reasonable values. My guess would be this option:

config SCHED_NO_NO_OMIT_FRAME_POINTER
        def_bool y
        prompt "Single-depth WCHAN output"
        depends on X86_32
        help
          Calculate simpler /proc/<PID>/wchan values. If this option
          is disabled then wchan values will recurse back to the
          caller function. This provides more accurate wchan values,
          at the expense of slightly more scheduling overhead.

          If in doubt, say "Y".

On x86_32, by default, you will get no frame pointers, so the wchan output is not particularly useful. At least, that's how I read things. See arch/x86/Kconfig, kernel/Makefile, and arch/x86_kernel/process_32.c

By the way, this quadruple(?) negative in kernel/Makefile makes my head hurt:

ifneq ($(CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER),y)
If it's not true that we're not not omitting them... AAH

2.6.27 - the rest of the story

Posted Aug 2, 2008 20:00 UTC (Sat) by BackSeat (guest, #1886) [Link] (2 responses)

The Palm T|X handheld computer is now supported.

Meaning Linux now runs on that platform? Pointer to more info, please.

Rant: why doesn't Google understand "T|X"?

2.6.27 - the rest of the story

Posted Aug 18, 2008 4:11 UTC (Mon) by SEJeff (guest, #51588) [Link] (1 responses)

Because google supports some extended regexp. Here is an example for you to google for:
+"happy tree friends" +"(date|candy)"

2.6.27 - the rest of the story

Posted Aug 18, 2008 4:14 UTC (Mon) by SEJeff (guest, #51588) [Link]

Sorry forgot to say you just escape it like a normal extended regexp:
+palm +"T\|X"

The above search in google finds exactly what you are looking for.

For better google-foo spend an afternoon glazing over this site:
http://johnny.ihackstuff.com/ghdb.php


Copyright © 2008, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds