Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Sergey Lentsov                       2:4615/71.10   12 Jul 2001  16:16:03
 To : All
 Subject : URL: http://www.lwn.net/2001/0712/kernel.php3
 -------------------------------------------------------------------------------- 
 
    [1][LWN Logo] 
    
                                [2]Click Here 
    [LWN.net]
    
    Sections:
     [3]Main page
     [4]Security
     Kernel
     [5]Distributions
     [6]On the Desktop
     [7]Development
     [8]Commerce
     [9]Linux in the news
     [10]Announcements
     [11]Linux History
     [12]Letters
    [13]All in one big page
    
    See also: [14]last week's Kernel page.
    
 Kernel development
 
    The current kernel release is still 2.4.6. The latest 2.4.7 prepatch
    from Linus is [15]2.4.7pre6, which contains another set of fixes and
    updates.
    
    Alan Cox's [16]2.4.6ac2 was released on July 7; it contains, as usual,
    a rather longer list of fixes. Andrea Arcangeli also has a prepatch
    ([17]2.4.7pre5aa1) out with a set of fixes, mostly to the core kernel
    code.
    
    On the 2.2 front, the current prepatch is [18]2.2.20pre7, released on
    July 4.
    
    Building the initial root filesystem into the kernel image. One
    often-heard theme in the ACPI discussion (covered [19]last week) was
    that it would be nice to move much of the ACPI setup into user space.
    That way, perhaps, it would not be necessary to bloat the kernel
    memory footprint with a few hundred kilobytes of ACPI code. But, with
    current kernels, doing boot-time stuff in user space involves using
    the "initrd" (initial RAMdisk) functionality, which not everybody
    likes. Even Linus dislikes it.
    
    But there are advantages to having an initial root filesystem handy;
    it's the clunkiness of the initrd interface that people object to. So,
    Linus [20]has another idea: why not just append a root filesystem, in
    tar format, to the kernel executable image? That way, it can be set up
    in an entirely automatic way, and everything the kernel needs will be
    right at hand. Linus likes this idea enough that he would likely
    [21]make it a mandatory part of the boot process.
    
    Once you have the initial root as part of the kernel image, you can
    move a lot of stuff over. For example, the whole process of finding
    the real, permanent root, and finding and running the init process
    could live there. That would remove a bunch of code from the kernel
    itself, and make it far easier to customize for specific situations.
    It would no longer be necessary to have a DHCP implementation in the
    kernel for diskless systems. And one could even [22]put the kernel
    configuration file there, satisfying a perennial request.
    
    Given that, with a proper implementation, most users would not even
    have to know that this "piggyback" filesystem is present, its
    implementation in the 2.5 series seems likely.
    
    How to do 64-bit PCI DMA? In past weeks we have looked at efforts to
    make it possible to perform DMA I/O operations from anywhere in the
    first 4GB of memory on the system. That would be a significant
    improvement over the current situation, but it still leaves out an
    important case. Large server systems, anymore, can contain well over
    4GB of memory, and there do exist PCI cards which can perform DMA with
    64-bit physical addresses. For such systems, wouldn't it be nice to
    take advantage of the 64-bit mode and eliminate the hassles of memory
    zones and bounce buffers entirely?
    
    The folks working on the IA-64 port decided this would be a good idea.
    Accordingly, they turned dma_addr_t (an internal "cookie" type used by
    the DMA support routines) into a 64-bit quantity, and changed the
    semantics of pci_set_dma_mask() to allow drivers to specify that their
    hardware can do 64-bit DMA. This interface works for the immediate
    needs the IA-64 porters had, but David Miller, who "owns" the PCI DMA
    interface, has made it clear that he opposes moving it to the other
    architectures. Instead, he wants to see a more comprehensive 64-bit
    DMA interface designed and implemented in the 2.5 development series.
    (Those interested in the current interface, incidentally, can see the
    excellent [23]DMA-mapping.txt file found in the kernel source
    documentation directory).
    
    Some people are unhappy with that position; after all, anything
    deferred to 2.5 might not see a stable release for another two years.
    But David's objections make some sense, and they give an interesting
    view into the issues you have to take into account when designing this
    sort of interface. The discussion may look like a complaint session,
    but it is really the initial design work for a high-performance DMA
    interface.
    
    Some of the issues with the simple extension used by IA-64 are:
      * There is little desire to expand dma_addr_t to 64 bits when the
        vast majority of its users will never perform 64-bit DMA. An extra
        32 bits of temporary space may seem small compared to the cost of
        performing an I/O operation, but every bit counts. So a more
        likely solution is a new type (dma64_addr_t, perhaps) and a
        separate interface to go with it.
      * On some systems and peripherals, 64-bit DMA is significantly
        slower than the standard, single-cycle 32-bit version. On such
        systems, 32-bit DMA may be preferable even if it involves things
        like bounce buffers in the CPU.
      * Reasonable hardware (quite a bit of hardware isn't) includes an
        I/O memory management unit (IOMMU) which provides a type of
        virtual memory for peripherals. The IOMMU can cause all operations
        to occur within the 32-bit range. It also has the nice feature of
        making scattered pages look physically contiguous. On such
        systems, you normally do not want to bother with 64-bit
        operations...
      * ...except in cases where you will be performing very large
        transfers. In the worst case, huge operations can take up most or
        all of the IOMMU mapping registers, choking I/O in the rest of the
        system. Devices with this sort of I/O pattern are better off using
        64-bit I/O even if it is slower. A 64-bit DMA interface must allow
        a driver to make this sort of decision.
      * The IA-64 scheme will not work well on 32-bit systems (which can
        still have 64-bit physical addresses) because it relies on the
        existence of kernel virtual addresses for the DMA buffers. 32-bit
        systems with large amounts of memory do not have kernel-space
        mappings for much of that memory. A truly portable interface must
        use struct page pointers rather than virtual addresses.
        
    Chances are good that some sort of 64-bit DMA API which addresses the
    above issues will find its way into 2.5. Thereafter, it may even be
    backported to 2.4, at which point it will be widely available.
    
    Other patches and updates released this week include:
    
      * Marcelo Tosatti has [24]a patch which provides improved virtual
        memory statistics from the kernel.
      * Eric Raymond has posted a [25]State of CML2 message on where the
        new configuration system is. ("The dungeon walls in CML2 adventure
        now occasionally feature entertaining grafitti. Spot all the
        in-jokes and collect a valuable no-prize.")
      * Alexander Viro is [26]looking for testers for his patch to the
        Minix filesystem that moves directories into the page cache.
      * Andrew Morton has [27]a new ext3 patch for 2.4 kernels. This patch
        is not just a port, though; he has included a number of fixes and
        has also reworked things to minimize the number of changes
        required to the core kernel.
      * Davide Libenzi has posted [28]a new /dev/poll implementation
        which, he claims, provides the most efficient notification
        interface for busy network servers.
      * The latest [29]security module patch was posted on July 6.
      * Harald Welte will be [30]giving presentations on netfilter at
        several upcoming Linux events.
      * Greg Kroah-Hartman has posted [31]an updated Compaq/Intel PCI
        hotplug driver.
      * [32]devfs v182 was released by Richard Gooch.
        
    Section Editor: [33]Jonathan Corbet
    July 12, 2001
    
    For other kernel news, see:
      * [34]Kernel traffic
      * [35]Kernel Newsflash
      * [36]Kernel Trap
    
    Other resources:
      * [37]Kernel Source Reference
      * [38]L-K mailing list FAQ
      * [39]Linux-MM
      * [40]Linux Scalability Project
      * [41]Kernel Newbies
    
    
    
                                                   [42]Next: Distributions
    
    [43]Eklektix, Inc. Linux powered! Copyright Л 2001 [44]Eklektix, Inc.,
    all rights reserved
    Linux (R) is a registered trademark of Linus Torvalds
 
 References
 
    1. http://lwn.net/
    2. http://ads.tucows.com/click.ng/pageid=001-012-132-000-000-003-000-000-012
    3. http://lwn.net/2001/0712/
    4. http://lwn.net/2001/0712/security.php3
    5. http://lwn.net/2001/0712/dists.php3
    6. http://lwn.net/2001/0712/desktop.php3
    7. http://lwn.net/2001/0712/devel.php3
    8. http://lwn.net/2001/0712/commerce.php3
    9. http://lwn.net/2001/0712/press.php3
   10. http://lwn.net/2001/0712/announce.php3
   11. http://lwn.net/2001/0712/history.php3
   12. http://lwn.net/2001/0712/letters.php3
   13. http://lwn.net/2001/0712/bigpage.php3
   14. http://lwn.net/2001/0704/kernel.php3
   15. http://lwn.net/2001/0712/a/2.4.7pre6.php3
   16. http://lwn.net/2001/0712/a/2.4.6-ac2.php3
   17. http://lwn.net/2001/0712/a/2.4.7pre5aa1.php3
   18. http://lwn.net/2001/0712/a/2.2.20pre7.php3
   19. http://lwn.net/2001/0704/kernel.php3
   20. http://lwn.net/2001/0712/a/lt-bzimage-tarball.php3
   21. http://lwn.net/2001/0712/a/lt-always.php3
   22. http://lwn.net/2001/0712/a/ac-config.php3
   23. http://lwn.net/2001/0712/a/dma-interface.php3
   24. http://lwn.net/2001/0712/a/vm-stats.php3
   25. http://lwn.net/2001/0712/a/state-of-cml.php3
   26. http://lwn.net/2001/0712/a/minix.php3
   27. http://lwn.net/2001/0712/a/ext3-2.4.php3
   28. http://lwn.net/2001/0712/a/devpoll.php3
   29. http://lwn.net/2001/0712/a/lsm.php3
   30. http://lwn.net/2001/0712/a/netfilter-talks.php3
   31. http://lwn.net/2001/0712/a/pci-hotplug.php3
   32. http://lwn.net/2001/0712/a/devfs.php3
   33. mailto:lwn@lwn.net
   34. http://kt.zork.net/
   35. http://www.atnf.csiro.au/~rgooch/linux/docs/kernel-newsflash.html
   36. http://www.kerneltrap.com/
   37. http://lksr.org/
   38. http://www.tux.org/lkml/
   39. http://www.linux.eu.org/Linux-MM/
   40. http://www.citi.umich.edu/projects/linux-scalability/
   41. http://www.kernelnewbies.org/
   42. http://lwn.net/2001/0712/dists.php3
   43. http://www.eklektix.com/
   44. http://www.eklektix.com/
 
 --- ifmail v.2.14.os7-aks1
  * Origin: Unknown (2:4615/71.10@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 URL: http://www.lwn.net/2001/0712/kernel.php3   Sergey Lentsov   12 Jul 2001 16:16:03 
Архивное /ru.linux/19861cc82ac7d.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional