1. 25 May, 2003 40 commits
    • Andrew Morton's avatar
      [PATCH] ppc64: 32/64bit emulation for aio · 2b748116
      Andrew Morton authored
      From: Anton Blanchard <anton@samba.org>
      
      PPC64 32/64-bit emulation for AIO.
      2b748116
    • Linus Torvalds's avatar
      Make cdev infrastructure initialize early · 276df1b2
      Linus Torvalds authored
      Very early initialization (core_initcall) needs to have the cdev
      initialization done.  So make it part of the pre-initcall sequence, the
      same way the bdev caches were done.
      276df1b2
    • Linus Torvalds's avatar
      48554ca4
    • Ingo Molnar's avatar
      [PATCH] support "requeueing" futexes · 7149345c
      Ingo Molnar authored
      This addresses a futex related SMP scalability problem of
      glibc. A number of regressions have been reported to the NTPL mailing list
      when going to many CPUs, for applications that use condition variables and
      the pthread_cond_broadcast() API call. Using this functionality, testcode
      shows a slowdown from 0.12 seconds runtime to over 237 seconds (!)
      runtime, on 4-CPU systems.
      
      pthread condition variables use two futex-backed mutex-alike locks: an
      internal one for the glibc CV state itself, and a user-supplied mutex
      which the API guarantees to take in certain codepaths. (Unfortunately the
      user-supplied mutex cannot be used to protect the CV state, so we've got
      to deal with two locks.)
      
      The cause of the slowdown is a 'swarm effect': if lots of threads are
      blocked on a condition variable, and pthread_cond_broadcast() is done,
      then glibc first does a FUTEX_WAKE on the cv-internal mutex, then down a
      mutex_down() on the user-supplied mutex. Ie. a swarm of threads is created
      which all race to serialize on the user-supplied mutex. The more threads
      are used, the more likely it becomes that the scheduler will balance them
      over to other CPUs - where they just schedule, try to lock the mutex, and
      go to sleep. This 'swarm effect' is purely technical, a side-effect of
      glibc's use of futexes, and the imperfect coupling of the two locks.
      
      the solution to this problem is to not wake up the swarm of threads, but
      'requeue' them from the CV-internal mutex to the user-supplied mutex. The
      attached patch adds the FUTEX_REQUEUE feature FUTEX_REQUEUE requeues N
      threads from futex address A to futex address B.
      
      This way glibc can wake up a single thread (which will take the
      user-mutex), and can requeue the rest, with a single system-call.
      
      Ulrich Drepper has implemented FUTEX_REQUEUE support in glibc, and a
      number of people have tested it over the past couple of weeks. Here are
      the measurements done by Saurabh Desai:
      
      System: 4xPIII 700MHz
      
       ./cond-perf -r 100 -n 200:        1p       2p         4p
       Default NPTL:                 0.120s   0.211s   237.407s
       requeue NPTL:                 0.124s   0.156s     0.040s
      
       ./cond-perf -r 1000 -n 100:
       Default NPTL:                 0.276s   0.412s     0.530s
       requeue NPTL:                 0.349s   0.503s     0.550s
      
       ./pp -v -n 128 -i 1000 -S 32768:
       Default NPTL: 128 games in    1.111s   1.270s    16.894s
       requeue NPTL: 128 games in    1.111s   1.959s     2.426s
      
       ./pp -v -n 1024 -i 10 -S 32768:
       Default NPTL: 1024 games in   0.181s   0.394s     incompleted 2m+
       requeue NPTL: 1024 games in   0.166s   0.254s     0.341s
      
      the speedup with increasing number of threads is quite significant, in the
      128 threads, case it's more than 8 times. In the cond-perf test, on 4 CPUs
      it's almost infinitely faster than the 'swarm of threads' catastrophy
      triggered by the old code.
      7149345c
    • Alexander Viro's avatar
      [PATCH] i_cdev/i_cindex · 9bda5f68
      Alexander Viro authored
      new fields in struct inode - i_cdev and i_cindex.  When we do open() on
      a character device we cache result of cdev lookup in inode and put the
      inode on a cyclic list anchored in cdev.  If we already have that done,
      we don't bother with any lookups.  When inode disappears it's removed
      from the list.  When cdev gets unregistered we remove all cached
      references to it (and remove such inodes from the list).  cdev is held
      until final fput() now.
      9bda5f68
    • Alexander Viro's avatar
      [PATCH] cdev-cidr, part 1 · 787d458a
      Alexander Viro authored
      New object: struct cdev.  It contains a kobject, a pointer to
      file_operations and a pointer to owner module.  These guys have a search
      structure of the same sort as gendisks and chrdev_open() picks
      file_operations from them.
      
      Intended use: embed such animal in driver-owned structure (e.g.
      tty_driver) and register it as associated with given range of device
      numbers.  Generic code will do lookup for such object and use it for the
      rest.
      
      The behaviour of register_chrdev() is _not_ changed - it allocates
      struct cdev and registers it; any old driver will work as if nothing had
      changed.
      
      On that stage we only use it during chrdev_open() to find
      file_operations.  Later it will be cached in inode->i_cdev (and index in
      range - in inode->i_cindex) so that ->open() could get whatever objects
      it wants directly without any special-cased lookups, etc.
      787d458a
    • Alexander Viro's avatar
      [PATCH] kobj_map · 6abc19b4
      Alexander Viro authored
      code responsible for gendisk lookups taken out in drivers/base and
      generalized - now it allows to have a range-based mapping from numbers
      to kobjects for given struct subsystem.
      6abc19b4
    • Alexander Viro's avatar
      [PATCH] register_chrdev_region() cleanup · 4460bbfd
      Alexander Viro authored
      register_chrdev_region() sanitized, code in tty_io.c that dealt with it
      cleaned up.
      4460bbfd
    • Alexander Viro's avatar
      [PATCH] switch blk_register_area() to kobject · 106a92d1
      Alexander Viro authored
      preparation to cdev-cidr - the lookup mechanism for gendisks is switched
      to dealing with disk->kobj instead of disk.
      106a92d1
    • Alexander Viro's avatar
      [PATCH] pt.c Lindent · 93e0e677
      Alexander Viro authored
      pt.c fed through Lindent
      93e0e677
    • Alexander Viro's avatar
      [PATCH] pt.c macroectomy · 46530a99
      Alexander Viro authored
      Remove cpp abuses - same as had been done for pd/pf/pcd.
      46530a99
    • Alexander Viro's avatar
      [PATCH] pg.c macroectomy - part 2 · 59ff0dc7
      Alexander Viro authored
      Remove the rest of cpp abuse in pg.c
      59ff0dc7
    • Alexander Viro's avatar
      [PATCH] pg.c Lindent · 5d7eaa6e
      Alexander Viro authored
      pg.c fed through Lindent
      5d7eaa6e
    • Alexander Viro's avatar
      [PATCH] pg.c macroectomy · a86128f1
      Alexander Viro authored
      This removes cpp abuses - same as had been done for pd/pf/pcd.
      a86128f1
    • Alexander Viro's avatar
      [PATCH] cpqarray fixes · 4397a191
      Alexander Viro authored
      This restores the special-case behaviour of open() on the minor 0;
      cpqarray allows to open that guy for ioctls even if nothing is
      configured.  That got broken when gendisk patches went in.  Patch
      restores the old behaviour by keeping gendisk for the first disk on
      controller always registered; instead of unregistering it we set size to
      0.
      4397a191
    • Alexander Viro's avatar
      [PATCH] TIOCCONS fix · bf78f301
      Alexander Viro authored
      This fixes the TIOCCONS race; it's the same as the 2.4 patch except for
      a fix for a brown-paperbag bug in it.
      bf78f301
    • Geert Uytterhoeven's avatar
      [PATCH] Obsolete include/asm-ppc/linux_logo.h · 6a7b3d00
      Geert Uytterhoeven authored
      Forgot to remove include/asm-ppc/linux_logo.h when integrating the new logo
      code.
      6a7b3d00
    • Geert Uytterhoeven's avatar
      [PATCH] Atafb bug in #if 0 code · a43e0dc4
      Geert Uytterhoeven authored
      Atafb bug in #if 0 code (from 2.4.x)
      a43e0dc4
    • Geert Uytterhoeven's avatar
      [PATCH] M68k wd33c93_{abort,host_reset}() · ecb8a7d0
      Geert Uytterhoeven authored
      Use new wd33c93_{abort,host_reset}() routines introduced in 2.5.67 in the m68k
      wd33c93-based SCSI host adapter drivers:
        - Amiga A2091 SCSI
        - Amiga A3000 SCSI
        - Amiga GVP Series II SCSI
        - MVME147 SCSI
      
      These drivers still have to implement their own adapter-specific bus_reset()
      routines!
      ecb8a7d0
    • Geert Uytterhoeven's avatar
      [PATCH] HAVE_ARCH_GET_SIGNAL_TO_DELIVER warning · 8c3b1bca
      Geert Uytterhoeven authored
      Kill warning about unused static functions if HAVE_ARCH_GET_SIGNAL_TO_DELIVER
      is defined.
      8c3b1bca
    • Geert Uytterhoeven's avatar
      [PATCH] Q40/Q60 IDE · 70160d26
      Geert Uytterhoeven authored
      Q40/Q60 IDE: Use the standard IDE operations, which are always MMIO on m68k,
      but make sure IDE shows up in /proc/ioports (from Richard Zidlicky).
      70160d26
    • Geert Uytterhoeven's avatar
      [PATCH] M68k raw I/O updates · 51df9f1c
      Geert Uytterhoeven authored
      M68k raw I/O updates:
        - Convert raw I/O access macros to inline functions:
            o raw_{in,out}s[bw]()
            o raw_{in,out}sw_swapw()
        - Add raw_{in,out}sl() (needed for IDE)
        - Update isa_[im]t_[bw]() for stricter type checking of inline functions
      51df9f1c
    • Geert Uytterhoeven's avatar
      [PATCH] Amifb updates · b055ca93
      Geert Uytterhoeven authored
      Amifb: Updates for fbdev changes in 2.5.66 and 2.5.68:
        - Last parameter of fb_{fillrect,copyarea,imageblit}() became const
      b055ca93
    • Geert Uytterhoeven's avatar
      [PATCH] IDE iops clean ups · eb50c84f
      Geert Uytterhoeven authored
      IDE I/O operations clean ups:
        - Kill warning about void return type not being ignored
        - Fix comment: Q40/Q60 also has a byte-swapped IDE interface
      eb50c84f
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IDE · e12f1e5c
      Geert Uytterhoeven authored
      M68k IDE:
        - Update for new-style low-level IDE operations. Since so far no single
          m68k platform uses ISA/PCI I/O space for IDE, we always use the `raw' MMIO
          versions.
        - ATA_ARCH_LOCK was renamed to IDE_ARCH_LOCK
        - Define ide_ack_intr() and set IDE_ARCH_ACK_INTR
      e12f1e5c
    • Geert Uytterhoeven's avatar
      [PATCH] dmasound resurrection · 19b87001
      Geert Uytterhoeven authored
      Resurrect dmasound:
        - Re-add dmasound to the build process
        - Update dmasound.h, which got missed in the dmasound update in 2.5.15
        - Compile fixes for core, Atari, Amiga Paula, and Q40:
            o Update for s/MINOR/minor/g changes
            o Add missing <linux/interrupt.h>
            o Fix spinlock typo
      19b87001
    • Geert Uytterhoeven's avatar
      [PATCH] m68k ptrace · 63ee2c9b
      Geert Uytterhoeven authored
      M68k: Use ptrace_check_attach instead of doing the checks ourselves (from
      Andreas Schwab).
      63ee2c9b
    • Geert Uytterhoeven's avatar
      [PATCH] M68k sys_ipc ENOSYS · c553b651
      Geert Uytterhoeven authored
      M68k: Fix sys_ipc() to return ENOSYS instead of EINVAL as appropriate.
      c553b651
    • Geert Uytterhoeven's avatar
      [PATCH] hosts.c missing config.h · c977adde
      Geert Uytterhoeven authored
      SCSI: hosts.c uses CONFIG_*, hence it needs to include <linux/config.h>
      c977adde
    • Geert Uytterhoeven's avatar
      [PATCH] M68k pte_file · 1b3f4ffd
      Geert Uytterhoeven authored
      M68k: Add pte_file() for Motorola MMUs (from Roman Zippel):
        - Add support for file file offsets in pte's (recycle unused _PAGE_COW bit)
        - Move swap macros into the mmu specific header
        - Fix swap macros (lowest two bits must be cleared)
      1b3f4ffd
    • Geert Uytterhoeven's avatar
      [PATCH] M68k kill ide_ioreg_t · d4cc447e
      Geert Uytterhoeven authored
      M68k IDE: kill ide_ioreg_t and q40ide_ioreg_t
      d4cc447e
    • Geert Uytterhoeven's avatar
      [PATCH] times must be unsigned long · 91b729f5
      Geert Uytterhoeven authored
      AFS and RXRPC: times must be unsigned long
      91b729f5
    • Geert Uytterhoeven's avatar
      [PATCH] Atari Atyfb fixes · a75d5f43
      Geert Uytterhoeven authored
      Atyfb fixes for Atari (got reversed in 2.5.69):
        - Add missing allocation of default_par
        - Kill warnings in assignments
      a75d5f43
    • Geert Uytterhoeven's avatar
      [PATCH] Ataflop fix · 02db3c55
      Geert Uytterhoeven authored
      Ataflop: fix breakage after recent cleanups
      02db3c55
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IRQ API updates [20/20] · e356a58d
      Geert Uytterhoeven authored
      M68k fbdev drivers: Update to the new irq API (from Roman Zippel and me) [20/20]
      e356a58d
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IRQ API updates [19/20] · 7af6e6fb
      Geert Uytterhoeven authored
      M68k SCSI drivers: Update to the new irq API (from Roman Zippel and me) [19/20]
      7af6e6fb
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IRQ API updates [18/20] · ca9fc2ad
      Geert Uytterhoeven authored
      M68k parport drivers: Update to the new irq API (from Roman Zippel and me) [18/20]
      ca9fc2ad
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IRQ API updates [17/20] · 9f2e4827
      Geert Uytterhoeven authored
      M68k net drivers: Update to the new irq API (from Roman Zippel and me) [17/20]
      9f2e4827
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IRQ API updates [16/20] · fdab239f
      Geert Uytterhoeven authored
      M68k mac drivers: Update to the new irq API (from Roman Zippel and me) [16/20]
      fdab239f
    • Geert Uytterhoeven's avatar
      [PATCH] M68k IRQ API updates [15/20] · 0b0c67c7
      Geert Uytterhoeven authored
      M68k input drivers: Update to the new irq API (from Roman Zippel and me) [15/20]
      0b0c67c7