1. 14 May, 2004 40 commits
    • Andrew Morton's avatar
      [PATCH] s390: common i/o layer · 6019886d
      Andrew Morton authored
      From: Martin Schwidefsky <schwidefsky@de.ibm.com>
      
      Common i/o layer changes:
       - Delay unregister/register of ccw devices reappering on a different
         subchannel. Search for the old ccw_device & subchannel for the
         reattached device and deregister it too to avoid inconsistencies.
       - Fix path grouping for devices that present command reject for
         SetPGID but not for SensePGID.
      6019886d
    • Andrew Morton's avatar
      [PATCH] s390: core · 9cb51c16
      Andrew Morton authored
      From: Martin Schwidefsky <schwidefsky@de.ibm.com>
      
      s390 core changes:
       - Rename idle_cpu_mask to nohz_cpu_mask as agreed with Dipankar.
       - Refine compiler version check for "Q" constraints in uaccess.h.
       - Store per process ptrace information to the correct place.
       - Fix per cpu data access for 64-bit modules.
       - Add topology_init function for cpu hotplug.
       - Define TASK_SIZE dependent on TIF_31BIT and define MM_VM_SIZE
         to 4TB to get rid of elf_map32 and arch_get_unmapped_area.
      9cb51c16
    • Andrew Morton's avatar
      [PATCH] Add del_single_shot_timer() · 1b9407d7
      Andrew Morton authored
      From: Geoff Gustafson <geoff@linux.jf.intel.com>,
            "Chen, Kenneth W" <kenneth.w.chen@intel.com>,
            Ingo Molnar <mingo@elte.hu>,
            me.
      
      The big-SMP guys are seeing high CPU load due to del_timer_sync()'s
      inefficiencies.  The callers are fs/aio.c and schedule_timeout().
      
      We note that neither of these callers' timer handlers actually re-add the
      timer - they are single-shot.
      
      So we don't need all that complexity in del_timer_sync() - we can just run
      del_timer() and if that worked we know the timer is dead.
      
      Add del_single_shot_timer(), export it to modules and use it in AIO and
      schedule_timeout().
      
      
      (these numbers are for an earlier patch, but they'll be close)
      
      Before:             32p     4p
           Warm cache   29,000    505
           Cold cache   37,800   1220
      
      After:              32p     4p
           Warm cache       95     88
           Cold cache    1,800    140
      
      [Measurements are CPU cycles spent in a call to del_timer_sync, the average
      of 1000 calls. 32p is 16-node NUMA, 4p is SMP.]
      
      (I cleaned up a few things and added some commentary)
      1b9407d7
    • Andrew Morton's avatar
      [PATCH] H8/300: more cleanup · 496dc9b4
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - gcc-3.4 warning fix.
      - io access address fix.
      - cleanup code.
      496dc9b4
    • Andrew Morton's avatar
      [PATCH] H8/300: delete headers · b942a885
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - Delete obsolete header files
      b942a885
    • Andrew Morton's avatar
      [PATCH] H8/300: Kconfig · d3ab913e
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - Separate taget depends config.
      d3ab913e
    • Andrew Morton's avatar
      [PATCH] H8/300: ne driver · 5cabf638
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - ne2k compatible NIC support
      5cabf638
    • Andrew Morton's avatar
      [PATCH] H8/300: SCI driver fix · 58cdd45b
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - fix h8300 depend setup sequence
      58cdd45b
    • Andrew Morton's avatar
      [PATCH] H8/300: preempt support · caeb59c8
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - add preempt support
      - add new syscalls
      - code cleanup
      caeb59c8
    • Andrew Morton's avatar
      [PATCH] H/8300 pic support fix · 906355ca
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      Sorry. There was the file which lacked.
      906355ca
    • Andrew Morton's avatar
      [PATCH] H8/300: pic support · ebd99675
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - add PIC binary support
      ebd99675
    • Andrew Morton's avatar
      [PATCH] H8/300: ldscripts fix · e51c5d04
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - symbol prefix (use h8300 and v850) support
      - include headers
      e51c5d04
    • Andrew Morton's avatar
      [PATCH] H8/300: bitops.h add find_next_bit · dd2deeb9
      Andrew Morton authored
      From: Yoshinori Sato <ysato@users.sourceforge.jp>
      
      - add find_next_bit
      dd2deeb9
    • Andrew Morton's avatar
      [PATCH] dentry layout tweaks · 35181da9
      Andrew Morton authored
      Lookup typically touches three fields of the dentry: d_bucket, d_name.hash and
      d_parent.
      
      Change the layout of things so that these will always be in the same
      cacheline.
      35181da9
    • Andrew Morton's avatar
      [PATCH] more dentry shrinkage · 66ca0978
      Andrew Morton authored
      - d_vfs_flags can be removed - just use d_flags.  All modifications of
        dentry->d_flags are under dentry->d_lock.
      
      On x86 this takes the internal string size up to 40 bytes.  The
      internal/external ratio on my 1.5M files hits 96%.
      66ca0978
    • Andrew Morton's avatar
      [PATCH] dentry d_bucket fix · b7b5563e
      Andrew Morton authored
      The gap between checking d_bucket and sampling d_move_count looks like a bug
      to me.
      
      It feels safer to be checking d_bucket after taking the lock, when we know
      that it is stable.
      
      And it's a little faster to check d_bucket after having checked the hash
      rather than before.
      b7b5563e
    • Andrew Morton's avatar
      [PATCH] dentry qstr consolidation · 90b163a4
      Andrew Morton authored
      When dentries are given an external name we currently allocate an entire qstr
      for the external name.
      
      This isn't needed.  We can use the internal qstr and kmalloc only the string
      itself.  This saves 12 bytes from externally-allocated names and 4 bytes from
      the dentry itself.
      
      The saving of 4 bytes from the dentry doesn't actually decrease the dentry's
      storage requirements, but it makes four more bytes available for internal
      names, taking the internal/external ratio from 89% up to 93% on my 1.5M files.
      
      
      Fix:
      
      The qstr consolidation wasn't quite right, because it can cause qstr->len to
      be unstable during lookup lockless traverasl.
      
      Fix that up by taking d_lock earlier in lookup.  This serialises against
      d_move.
      
      Take the lock after comparing the parent and hash to preserve the
      mostly-lockless behaviour.
      
      This obsoletes d_movecount, which is removed.
      90b163a4
    • Andrew Morton's avatar
      [PATCH] dentry shrinkage · fd2d8760
      Andrew Morton authored
      Rework dentries so that the inline name length is between 31 and 48 bytes.
      
      On SMP P4-compiled x86 each dentry consumes 160 bytes (24 per page).
      
      Here's the histogram of name lengths on all 1.5M files on my workstation:
      
      1:  0%
      2:  0%
      3:  1%
      4:  5%
      5:  8%
      6:  13%
      7:  19%
      8:  26%
      9:  33%
      10:  42%
      11:  49%
      12:  55%
      13:  60%
      14:  64%
      15:  67%
      16:  69%
      17:  71%
      18:  73%
      19:  75%
      20:  76%
      21:  78%
      22:  79%
      23:  80%
      24:  81%
      25:  82%
      26:  83%
      27:  85%
      28:  86%
      29:  87%
      30:  88%
      31:  89%
      32:  90%
      33:  91%
      34:  92%
      35:  93%
      36:  94%
      37:  95%
      38:  96%
      39:  96%
      40:  96%
      41:  96%
      42:  96%
      43:  96%
      44:  97%
      45:  97%
      46:  97%
      47:  97%
      48:  97%
      49:  98%
      50:  98%
      51:  98%
      52:  98%
      53:  98%
      54:  98%
      55:  98%
      56:  98%
      57:  98%
      58:  98%
      59:  98%
      60:  99%
      61:  99%
      62:  99%
      63:  99%
      64:  99%
      
      So on x86 we'll fit 89% of filenames into the inline name.
      
      
      The patch also removes the NAME_ALLOC_LEN() rounding-up of the storage for the
      out-of-line names.  That seems unnecessary.
      fd2d8760
    • Andrew Morton's avatar
      [PATCH] d_vfs_flags locking fix · 75fb13cd
      Andrew Morton authored
      Be consistent about d_vfs_flags locking: take dentry->d_lock when modifying
      it.
      75fb13cd
    • Andrew Morton's avatar
      [PATCH] d_flags locking fixes · 87ada13e
      Andrew Morton authored
      A few filesystems modify dentry.d_flags under non-obvious locking.  To
      consolidate that field wth d_vfs_flags they need to take ->d_lock
      87ada13e
    • Andrew Morton's avatar
      [PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-makefile-cleanup.patch · 12102e4e
      Andrew Morton authored
      From: Markus Lidel <Markus.Lidel@shadowconnect.com>
      
      * The Kconfig and Makefile in drivers/message/i2o still got a CONFIG_I2O_PCI
        entry, which is not used anymore.  This one is replaced by a
        CONFIG_I2O_CONFIG entry, which now builds the i2o_config module.
      12102e4e
    • Andrew Morton's avatar
      [PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-64-bit-fix.patch · 7c11ccc5
      Andrew Morton authored
      From: Markus Lidel <Markus.Lidel@shadowconnect.com>
      
      * provides i2o_context_list_*() functions, which maps 64-bit pointers to
        32-bit context id's in a dynamic list.  On 32-bit systems the functions are
        replaced with a static inline.
      
      * i2o_scsi now uses the i2o_context_list_*() functions for transaction
        context, and therefore now work on 64-bit systems too.
      7c11ccc5
    • Andrew Morton's avatar
      [PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o_block-cleanup.patch · 96005e5a
      Andrew Morton authored
      From: Markus Lidel <Markus.Lidel@shadowconnect.com>
      
      * more than 3 "visible" disks (hda, hdb, hdc, hdd) lead to kernel panics.
      
      * removes some unused code with partitions.
      
      * I2O_LOCK was often called with the addresses of the controller, and not
        with the address of the device.  Fixed.
      
      * the cleanup function for gendisk (del_gendisk) doesn't work if the queue
        is shared between different devices.  To workaround the queue is removed
        before.
      
      * redundant code removed in module initialization and remove, use
        i2ob_new_device and i2ob_del_device instead.
      
      * removed atomic_t queue_depth
      
      * removed unnecessary and bogus code for queue handling
      96005e5a
    • Andrew Morton's avatar
      [PATCH] i2o: 64-bit fixes · a94a0bb4
      Andrew Morton authored
      From: Markus Lidel <Markus.Lidel@shadowconnect.com>
      
      Fix 64-bit problems.
      a94a0bb4
    • Andrew Morton's avatar
      [PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-passthru.patch · 8c95df95
      Andrew Morton authored
      From: Markus Lidel <Markus.Lidel@shadowconnect.com>
      
      * Add a pass-thru ioctl to i2o_config, which is needed to work with the
        Adaptec management software.
      8c95df95
    • Andrew Morton's avatar
      [PATCH] I2O subsystem fixing and cleanup for 2.6 - i2o-config-clean.patch · 9bf41bd3
      Andrew Morton authored
      From: Markus Lidel <Markus.Lidel@shadowconnect.com>
      
      * Changes the formating of the header in i2o_config.c
      9bf41bd3
    • Andrew Morton's avatar
      [PATCH] Module ref counting for vt console drivers · 5770ced9
      Andrew Morton authored
      From: Herbert Xu <herbert@gondor.apana.org.au>
      
      The following patch adds basic module reference counting to vt console
      drivers.  Currently modules like fbcon are not counted at all.
      5770ced9
    • Andrew Morton's avatar
      [PATCH] ia64 cpu hotplug: core · f887808c
      Andrew Morton authored
      From: Ashok Raj <ashok.raj@intel.com>
      
      Supports basic ability to enable hotplug functions for IA64.
      Code is just evolving, and there are several loose ends to tie up.
      
      What this code drop does
      - Support logical online and offline
      - Handles interrupt migration without loss of interrupts.
      - Handles stress fine > 24+ hrs with make -j/ftp/rcp workloads
      - Handles irq migration from a dying cpu without loss of interrupts.
      
      What needs to be done
      - Boot CPU removal support, with platform level authentication
      - Putting cpu being removed in BOOT_RENDEZ mode.
      f887808c
    • Andrew Morton's avatar
      [PATCH] Revisited: ia64-cpu-hotplug-cpu_present.patch · fda94eff
      Andrew Morton authored
      From: Paul Jackson <pj@sgi.com>
      
      With a hotplug capable kernel, there is a requirement to distinguish a
      possible CPU from one actually present.  The set of possible CPU numbers
      doesn't change during a single system boot, but the set of present CPUs
      changes as CPUs are physically inserted into or removed from a system.  The
      cpu_possible_map does not change once initialized at boot, but the
      cpu_present_map changes dynamically as CPUs are inserted or removed.
      
      
      Paul Jackson <pj@sgi.com> provided an expanded explanation:
      
      
      Ashok's cpu hot plug patch adds a cpu_present_map, resulting in the following
      cpu maps being available.  All the following maps are fixed size bitmaps of
      size NR_CPUS.
      
      #ifdef CONFIG_HOTPLUG_CPU
      	cpu_possible_map - map with all NR_CPUS bits set
      	cpu_present_map - map with bit 'cpu' set iff cpu is populated
      	cpu_online_map - map with bit 'cpu' set iff cpu available to scheduler
      #else
      	cpu_possible_map - map with bit 'cpu' set iff cpu is populated
      	cpu_present_map - copy of cpu_possible_map
      	cpu_online_map - map with bit 'cpu' set iff cpu available to scheduler
      #endif
      
      In either case, NR_CPUS is fixed at compile time, as the static size of these
      bitmaps.  The cpu_possible_map is fixed at boot time, as the set of CPU id's
      that it is possible might ever be plugged in at anytime during the life of
      that system boot.  The cpu_present_map is dynamic(*), representing which CPUs
      are currently plugged in.  And cpu_online_map is the dynamic subset of
      cpu_present_map, indicating those CPUs available for scheduling.
      
      If HOTPLUG is enabled, then cpu_possible_map is forced to have all NR_CPUS
      bits set, otherwise it is just the set of CPUs that ACPI reports present at
      boot.
      
      If HOTPLUG is enabled, then cpu_present_map varies dynamically, depending on
      what ACPI reports as currently plugged in, otherwise cpu_present_map is just a
      copy of cpu_possible_map.
      
      (*) Well, cpu_present_map is dynamic in the hotplug case.  If not hotplug,
          it's the same as cpu_possible_map, hence fixed at boot.
      fda94eff
    • Andrew Morton's avatar
      [PATCH] ia64 cpu hotplug: /proc rework · 4af52c23
      Andrew Morton authored
      From: Ashok Raj <ashok.raj@intel.com>
      
      Changes proc entries for cpu hotplug to be created via the cpu hotplug
      notifier callbacks.  Also fixed a bug in the removal code that did not remove
      proc entries as expected.
      4af52c23
    • Andrew Morton's avatar
      [PATCH] ia64 cpu hotplug: IRQ affinity work · f53c027a
      Andrew Morton authored
      From: Ashok Raj <ashok.raj@intel.com>
      
      irq affinity setting via /proc was forcing iosapic rte programming by force.
      The correct way to do this is to perform this when a interrupt is pending.
      f53c027a
    • Andrew Morton's avatar
      [PATCH] ia64 cpu hotplug: sysfs additions · 68a50f57
      Andrew Morton authored
      From: Ashok Raj <ashok.raj@intel.com>
      
      Creation of sysfs via topology_init() creates sysfs entries.  The creation of
      the online control file is created separately when the cpu_up is invoked in
      arch independent code.
      68a50f57
    • Andrew Morton's avatar
      [PATCH] ia64 cpu hotplug: init section fixes · c4dff897
      Andrew Morton authored
      From: Ashok Raj <ashok.raj@intel.com>
      
      Contains changes from __init to __devinit to support cpu hotplug Changes only
      arch/ia64 portions of the kernel tree.
      c4dff897
    • Andrew Morton's avatar
      [PATCH] ia64 cpu hotplug: core kernel initialisation · 8fe08444
      Andrew Morton authored
      From: Ashok Raj <ashok.raj@intel.com>
      
      This patch changes __init to __devinit to init_idle so that when a new cpu
      arrives, it can call these functions at a later time.
      8fe08444
    • Andrew Morton's avatar
      [PATCH] swap speedups and fix · 2e27bd98
      Andrew Morton authored
      From: Andrea Arcangeli <andrea@suse.de>
      
      I don't think we need an install_swap_bdev/remove_swap_bdev anymore, we should
      use the swap_info->bdev, not the swap_bdevs.  the swap_info already has a
      ->bdev field, the only point of remove_swap_bdev/install_swap_bdev was to
      unplug all devices as efficiently as possible, we don't need that anymore with
      the page parameter.
      
      Plus the semaphore should be a rwsem to allow parallel unplug from multiple
      pages.
      
      After that I don't need to take the semaphore anymore during swapon, no
      swapcache with swp_type() pointing to such bdev, will be allowed until swapon
      is complete (SWP_ACTIVE is set a lot later after setting p->bdev).
      
      In swapoff I only need a dummy serialization with the readers, after
      try_to_unuse is complete:
      
       	err = try_to_unuse(type);
       	current->flags &= ~PF_SWAPOFF;
      
       	/* wait for any unplug function to finish */
       	down_write(&swap_unplug_sem);
       	up_write(&swap_unplug_sem);
      
      
      that's all, no other locking and no install_swap_bdev/remove_swap_bdev.
      
      (and the swap_bdevs[] compression code was busted)
      2e27bd98
    • Andrew Morton's avatar
      [PATCH] blk_run_page(): we don't trust bh->b_page · 4e36c118
      Andrew Morton authored
      We don't trust bh->b_page to point to the right thing across all filesystems,
      so revert this bit.
      4e36c118
    • Andrew Morton's avatar
      3a1e4697
    • Andrew Morton's avatar
      [PATCH] Add blk_run_page() · e059d5da
      Andrew Morton authored
      From: Andrea Arcangeli <andrea@suse.de>
      
      From: Jens Axboe
      
      Add blk_run_page() API.  This is so that we can pass the target page all the
      way down to (for example) the swap unplug function.  So swap can work out
      which blockdevs back this particular page.
      e059d5da
    • Andrew Morton's avatar
      [PATCH] rmap-5-swap_unplug-page-revert · 485ba3c3
      Andrew Morton authored
      Revert the pre-2.6.6 per-address-space unplugging changes.  This removes a
      swapper_space exceptionality, syncs things with Andrea and provides for
      simplification of the swap unplug function.
      485ba3c3
    • Andrew Morton's avatar
      [PATCH] rename rmap_lock to page_map_lock · c78a6f26
      Andrew Morton authored
      Sync this up with Andrea's patches.
      c78a6f26