1. 08 9月, 2005 40 次提交
    • K
      [PATCH] Speedup FAT filesystem directory reads · f3ef6f63
      Karsten Wiese 提交于
            OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      
      This speeds up directory reads for large FAT partitions, if the buffercache
      has to be filled from the drive. Following values were taken from:
      
              $ time find path_to_freshly_mounted_fat > /dev/null
      
      on an otherwise idle system.
      
      FAT with 16KB Clusters on IDE attached drive:   Factor  2
      FAT with 32KB Clusters on USB2 attached drive:  Factor 10 (!)
      Its less than 1/10 slower, if the buffercache is uptodate.
      
      The patch introduces the new function fat_dir_readahead().
      
      fat_dir_readahead() calls sb_breadahead() to readahead a whole cluster,
      if the requested sector is the first one in a cluster.
      It is usefull to do this, because on FAT directories occupy whole
      clusters, with the exception of FAT12/FAT16 root dirs.
      
      Readahead is only done, if the cluster's first sector is not uptodate
      to avoid overhead, when the buffer cache is already uptodate.
      Note that under memory pressure, the maximal byte count wasted
      (read: has to be red from disk twice) is 1 cluster's size.  Thats 64KB.
      
      fat_dir_readahead() is called from fat__get_entry().
      
      There is also an unrelated cleanup at one spot:
      
              if (bh)
                      brelse(bh);
      
      is replaced with:
      
              brelse(bh);
      
      brelse() can handle NULL pointer arguments by itself.
      Signed-off-by: NKarsten Wiese <annabellesgarden@yahoo.de>
      Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f3ef6f63
    • T
      [PATCH] flush icache early when loading module · 378bac82
      Thomas Koeller 提交于
      Change the sequence of operations performed during module loading to flush
      the instruction cache before module parameters are processed.  If a module
      has parameters of an unusual type that cannot be handled using the standard
      accessor functions param_set_xxx and param_get_xxx, it has to to provide a
      set of accessor functions for this type.  This requires module code to be
      executed during parameter processing, which is of course only possible
      after the icache has been flushed.
      Signed-off-by: NThomas Koeller <thomas@koeller.dyndns.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      378bac82
    • M
      [PATCH] ipc: convert /proc/sysvipc/* to generic seq_file interface · 19b4946c
      Mike Waychison 提交于
      Change the /proc/sysvipc/shm|sem|msg files to use the generic seq_file
      implementation for struct ipc_ids.
      Signed-off-by: NMike Waychison <mikew@google.com>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      19b4946c
    • M
      [PATCH] ipc: add generic struct ipc_ids seq_file iteration · ae781774
      Mike Waychison 提交于
      The following two patches convert /proc/sysvipc/* to use seq_file.
      
      This gives us the following:
      
       - Self-consistent IPC records in proc.
       - O(n) reading of the files themselves.
      
      This patch:
      
      Add a generic method for ipc types to be displayed using seq_file.  This
      patch abstracts out seq_file iterating over struct ipc_ids into ipc/util.c
      Signed-off-by: NMike Waychison <mikew@google.com>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ae781774
    • B
      [PATCH] sunrpc: cache_register can use wrong module reference · f35279d3
      Bruce Allan 提交于
      When registering an RPC cache, cache_register() always sets the owner as the
      sunrpc module.  However, there are RPC caches owned by other modules.  With
      the incorrect owner setting, the real owning module can be removed potentially
      with an open reference to the cache from userspace.
      
      For example, if one were to stop the nfs server and unmount the nfsd
      filesystem, the nfsd module could be removed eventhough rpc.idmapd had
      references to the idtoname and nametoid caches (i.e.
      /proc/net/rpc/nfs4.<cachename>/channel is still open).  This resulted in a
      system panic on one of our machines when attempting to restart the nfs
      services after reloading the nfsd module.
      
      The following patch adds a 'struct module *owner' field in struct
      cache_detail.  The owner is further assigned to the struct proc_dir_entry
      in cache_register() so that the module cannot be unloaded while user-space
      daemons have an open reference on the associated file under /proc.
      Signed-off-by: NBruce Allan <bwa@us.ibm.com>
      Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
      Cc: Neil Brown <neilb@cse.unsw.edu.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f35279d3
    • T
      [PATCH] meye: use dma-mapping constants · d013a068
      Tobias Klauser 提交于
      Use the DMA_32BIT_MASK constant from dma-mapping.h when calling
      pci_set_dma_mask() or pci_set_consistent_dma_mask() This patch includes
      dma-mapping.h explicitly because it caused errors on some architectures
      otherwise.  See http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for
      details
      Signed-off-by: NTobias Klauser <tklauser@nuerscht.ch>
      Signed-off-by: NStelian Pop <stelian@popies.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d013a068
    • S
      [PATCH] readahead: reset cache_hit earlier · 3b30bbd9
      Steven Pratt 提交于
      We don't reset the cache hit count until after readahead does a successful
      readahead.  This seems to leave a corner case open where we miss in cache,
      but don't restart the readhead right away.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3b30bbd9
    • B
      [PATCH] PNP: make pnp_dbg conditional directly on CONFIG_PNP_DEBUG · e139aa59
      Bjorn Helgaas 提交于
      Seems pointless to require .c files to test CONFIG_PNP_DEBUG and
      conditionally define DEBUG before including <linux/pnp.h>.  Just test
      CONFIG_PNP_DEBUG directly in pnp.h.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Cc: Adam Belay <ambx1@neo.rr.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e139aa59
    • A
      [PATCH] optimize writer path in time_interpolator_get_counter() · 486d46ae
      Alex Williamson 提交于
            Christoph Lameter <clameter@engr.sgi.com>
      
      When using a time interpolator that is susceptible to jitter there's
      potentially contention over a cmpxchg used to prevent time from going
      backwards.  This is unnecessary when the caller holds the xtime write
      seqlock as all readers will be blocked from returning until the write is
      complete.  We can therefore allow writers to insert a new value and exit
      rather than fight with CPUs who only hold a reader lock.
      Signed-off-by: NAlex Williamson <alex.williamson@hp.com>
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      486d46ae
    • S
      [PATCH] sonypi: remove obsolete event · 9f4a6dce
      Stelian Pop 提交于
      Remove old obsolete event.
      Signed-off-by: NStelian Pop <stelian@popies.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      9f4a6dce
    • E
      [PATCH] sonypi SPIC initialisation fix · d2052c16
      Erik Waling 提交于
      Newer Sony VAIO models (VGN-S480, VGN-S460, VGN-S3XP etc) use a new method to
      initialize the SPIC device.  The new way to initialize (and disable) the
      device comes directly from the AML code in the _CRS, _SRS and _DIS methods
      from the DSDT table.  This patch adds support for the new models.
      Signed-off-by: NErik Waling <erikw@acc.umu.se>
      Signed-off-by: NStelian Pop <stelian@popies.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      d2052c16
    • Z
      [PATCH] remove pipe definitions · 2865cf00
      Zhigang Huo 提交于
      These no longer have any users.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2865cf00
    • C
      [PATCH] move 68360serial.c over use initcalls · a1007770
      Christoph Hellwig 提交于
      this is the last serial driver not using initcalls.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Cc: <jeff@uclinux.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a1007770
    • C
      [PATCH] move m68k rtc drivers over to initcalls · 573fc113
      Christoph Hellwig 提交于
      this gets rid of the last two explicit initializations in misc.c
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Acked-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      573fc113
    • C
      cdb3826b
    • C
      [PATCH] remove a dead extern in mem.c · edf83015
      Christoph Hellwig 提交于
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      edf83015
    • A
      [PATCH] Add warning `init=' to init/main.c · c1d7ef70
      Avery, Brian 提交于
      I passed init=/mylinuxrc to the kernel on the command line.  The kernel
      silently dropped down to exec /sbin/init.  It turned out that /mylinuxrc
      had improper permissions.  Without any warning message from the kernel that
      something was wrong it took awhile to find the issue.  The patch below adds
      a warning.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c1d7ef70
    • M
      [PATCH] disk quotas fail when /etc/mtab is symlinked to /proc/mounts · 8fc2751b
      Mark Bellon 提交于
      If /etc/mtab is a regular file all of the mount options (of a file system)
      are written to /etc/mtab by the mount command.  The quota tools look there
      for the quota strings for their operation.  If, however, /etc/mtab is a
      symlink to /proc/mounts (a "good thing" in some environments) the tools
      don't write anything - they assume the kernel will take care of things.
      
      While the quota options are sent down to the kernel via the mount system
      call and the file system codes handle them properly unfortunately there is
      no code to echo the quota strings into /proc/mounts and the quota tools
      fail in the symlink case.
      
      The attached patchs modify the EXT[2|3] and JFS codes to add the necessary
      hooks.  The show_options function of each file system in these patches
      currently deal with only those things that seemed related to quotas;
      especially in the EXT3 case more can be done (later?).
      
      Jan Kara also noted the difficulty in moving these changes above the FS
      codes responding similarly to myself to Andrew's comment about possible
      VFS migration. Issue summary:
      
       - FS codes have to process the entire string of options anyway.
      
       - Only FS codes that use quotas must have a show_options function (for
         quotas to work properly) however quotas are only used in a small number
         of FS.
      
       - Since most of the quota using FS support other options these FS codes
         should have the a show_options function to show those options - and the
         quota echoing becomes virtually negligible.
      
      Based on feedback I have modified my patches from the original:
      
         JFS a missing patch has been restored to the posting
         EXT[2|3] and JFS always use the show_options function
             - Each FS has at least one FS specific option displayed
             - QUOTA output is under a CONFIG_QUOTA ifdef
             - a follow-on patch will add a multitude of options for each FS
         EXT[2|3] and JFS "quota" is treated as "usrquota"
         EXT3 journalled data check for journalled quota removed
         EXT[2|3] mount when quota specified but not compiled in
      
       - no changes from my original patch.  I tested the patch and the codes
         warn but
      
       - still mount.  With all due respection I believe the comments
         otherwise were a
      
       - misread of the patch.  Please reread/test and comment.  XFS patch
         removed - the XFS team already made the necessary changes EXT3 mixing
         old and new quotas are handled differently (not purely exclusive)
      
       - if old and new quotas for the same type are used together the old
         type is silently depricated for compatability (e.g.  usrquota and
         usrjquota)
      
       - mixing of old and new quotas is an error (e.g.  usrjquota and
         grpquota)
      Signed-off-by: NMark Bellon <mbellon@mvista.com>
      Acked-by: NDave Kleikamp <shaggy@austin.ibm.com>
      Cc: Jan Kara <jack@ucw.cz>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8fc2751b
    • R
      [PATCH] Fix sound/arm/Makefile for locality of reference · c9237156
      Russell King 提交于
      Ensure that sound/arm/Makefile is sanely organised so that additions to it
      don't break all other patches out there.  This means I only have to adjust
      the line numbers in my patch queue rather than having to re-generate by
      hand those which touch this file.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c9237156
    • B
      [PATCH] pnp: consolidate kmalloc wrappers · a2822e7f
      Bjorn Helgaas 提交于
      ISAPNP, PNPBIOS, and PNPACPI all had their own kmalloc wrappers that
      reimplemented kcalloc().  Remove the wrappers and just use kcalloc()
      directly.
      
      Note that this also removes the PNPBIOS error message when the kmalloc
      fails.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a2822e7f
    • D
      [PATCH] yenta: make ToPIC95 bridges work with 16bit cards · ea2f1590
      Daniel Ritz 提交于
      ToPIC95 brides (and maybe some other too) require to use the ExCA registers
      to power up the socket if a 16bit card is pluged.  allow socket drivers to
      set a flag so that yenta does just that.  also clean up yenta_get_status()
      a bit to use the new yenta_get_power() function.
      
      Side note: ToPIC97 bridges (at least in Rev.5 i have) don't require this.
      
      Ryan Underwood <nemesis-lists@icequake.net> said:
      
       According to the mail that David Hinds received from a Toshiba engineer,
       ToPIC95 and 97 do require this, and ToPIC100 does not.  Maybe you have a
       later revision.
      
       For all chips, 16-bit cards can be enabled through ExCA.  So doesn't it
       make sense just to make this the default behavior for all Toshiba chips,
       to avoid corner cases showing up later?
      
      Daniel responded:
      
       I disagree with ryan to change anything for topic97 bridges.  they work.
       and I couldn't find (read google) any report of a topic97 breaking on
       applying power with the CB registers.
      
       I'm having several toshba notebooks at work (and home) with topic95,97,100
       bridges.  Only the ones with a topic95 didn't work.
      Signed-off-by: NDaniel Ritz <daniel.ritz@gmx.ch>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ea2f1590
    • H
      [PATCH] auxiliary vector cleanups · 36d57ac4
      H. J. Lu 提交于
      The size of auxiliary vector is fixed at 42 in linux/sched.h.  But it isn't
      very obvious when looking at linux/elf.h.  This patch adds AT_VECTOR_SIZE
      so that we can change it if necessary when a new vector is added.
      
      Because of include file ordering problems, doing this necessitated the
      extraction of the AT_* symbols into a standalone header file.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      36d57ac4
    • M
      [PATCH] radix_tag_get(): differentiate between no present node and tag unset cases · 32605a18
      Marcelo Tosatti 提交于
      Simple patch to radix_tree_tag_get() to return different values for non
      present node and tag unset.
      
      The function is not used by any in-kernel callers (yet), but this
      information is definitely useful.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      32605a18
    • C
      [PATCH] radix-tree: Remove unnecessary indirections and clean up code · 201b6264
      Christoph Lameter 提交于
      - There is frequent use of indirections in the radix code. This patch
        removes those indirections, makes the code more readable and allows
        the compilers to generate better code.
      
      - Removing indirections allows the removal of several casts.
      
      - Removing indirections allows the reduction of the radix_tree_path
        size from 3 to 2 words.
      
      - Use pathp-> consistently.
      
      - Remove unnecessary tmp variable in radix_tree_insert
      
      - Separate the upper layer processing from the lowest layer in __lookup()
        in order to make it easier to understand what is going on and allow
        compilers to generate better code for the loop.
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Cc: James Bottomley <James.Bottomley@steeleye.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      201b6264
    • P
      [PATCH] Support powering sharp zaurus sl-5500 LCD up and down · 987132bb
      Pavel Machek 提交于
      This adds support for powering Zaurus's video up and down.  PDA without
      screen is kind of useless, so it is quite important...  I'll have to figure
      out how to really control the frontlight, because LCD without that is quite
      hard to read.
      Signed-off-by: NPavel Machek <pavel@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      987132bb
    • A
      [PATCH] Clean up the old digi support and rescue it · f2cf8e25
      Alan Cox 提交于
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f2cf8e25
    • A
      [PATCH] remove register_ioctl32_conversion and unregister_ioctl32_conversion · 5dd42c26
      Adrian Bunk 提交于
      All users have been converted.
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      5dd42c26
    • P
      [PATCH] kill bio->bi_set · 3676347a
      Peter Osterlund 提交于
      Jens:
      
      ->bi_set is totally unnecessary bloat of struct bio.  Just define a proper
      destructor for the bio and it already knows what bio_set it belongs too.
      
      Peter:
      
      Fixed the bugs.
      Signed-off-by: NJens Axboe <axboe@suse.de>
      Signed-off-by: NPeter Osterlund <petero2@telia.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3676347a
    • R
      [PATCH] Strip local symbols from kallsyms · 6f00df24
      Ralf Baechle 提交于
      Local symbols generated by gcc start with a `$'; no point in including them
      in the kernel.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6f00df24
    • A
      [PATCH] fs/jbd/: cleanups · 022a4a7b
      Adrian Bunk 提交于
      This patch contains the following cleanups:
      - make needlessly global functions static
      - journal.c: remove the unused global function __journal_internal_check
                   and move the check to journal_init
      - remove the following write-only global variable:
        - journal.c: current_journal
      - remove the following unneeded EXPORT_SYMBOL:
        - journal.c: journal_recover
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Acked-by: NAndreas Dilger <adilger@clusterfs.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      022a4a7b
    • S
      [PATCH] compat: be more consistent about [ug]id_t · 202e5979
      Stephen Rothwell 提交于
      When I first wrote the compat layer patches, I was somewhat cavalier about
      the definition of compat_uid_t and compat_gid_t (or maybe I just
      misunderstood :-)).  This patch makes the compat types much more consistent
      with the types we are being compatible with and hopefully will fix a few
      bugs along the way.
      
      	compat type		type in compat arch
      	__compat_[ug]id_t	__kernel_[ug]id_t
      	__compat_[ug]id32_t	__kernel_[ug]id32_t
      	compat_[ug]id_t		[ug]id_t
      
      The difference is that compat_uid_t is always 32 bits (for the archs we
      care about) but __compat_uid_t may be 16 bits on some.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      202e5979
    • B
      [PATCH] use select in sound/isa/Kconfig · 8dbfc5cf
      Bodo Eggert 提交于
      In sound/isa/Kconfig, select ISAPNP and depend on ISAPNP are intermixed,
      resulting in funny behaviour.  (Soundcarts get selectable if other
      soundcards are selected).
      
      This patch changes the "depend on ISAPNP"s to select.
      Signed-Off-By: NBodo Eggert <7eggert@gmx.de>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8dbfc5cf
    • J
      [PATCH] inotify speedup · 820249ba
      John McCutchan 提交于
      Bypass an inotify-related fastpath spinlock and several function calls on
      systems which have no inotify watches registered.
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      820249ba
    • P
      [PATCH] NMI: Update NMI users of RCU to use new API · 19306059
      Paul E. McKenney 提交于
      Uses of RCU for dynamically changeable NMI handlers need to use the new
      rcu_dereference() and rcu_assign_pointer() facilities.  This change makes
      it clear that these uses are safe from a memory-barrier viewpoint, but the
      main purpose is to document exactly what operations are being protected by
      RCU.  This has been tested on x86 and x86-64, which are the only
      architectures affected by this change.
      
      Signed-off-by: <paulmck@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      19306059
    • D
      [PATCH] Provide better printk() support for SMP machines · fe21773d
      David Howells 提交于
      The attached patch prevents oopses interleaving with characters from
      other printks on other CPUs by only breaking the lock if the oops is
      happening on the machine holding the lock.
      
      It might be better if the oops generator got the lock and then called an
      inner vprintk routine that assumed the caller holds the lock, thus
      making oops reports "atomic".
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      fe21773d
    • C
      [PATCH] More __read_mostly variables · c3d8c141
      Christoph Lameter 提交于
      Move some more frequently read variables that showed up during some of our
      performance tests as sometimes ending up in hot cachelines to the
      read_mostly section.
      
      Fix: Move the __read_mostly from before hpet_usec_quotient to follow the
      variable like the other uses of __read_mostly.
      Signed-off-by: NAlok N Kataria <alokk@calsoftinc.com>
      Signed-off-by: NChristoph Lameter <christoph@scalex86.org>
      Signed-off-by: NShai Fultheim <shai@scalex86.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c3d8c141
    • P
      [PATCH] kallsyms: change compression algorithm · b3dbb4ec
      Paulo Marques 提交于
      This patch changes the way the compression algorithm works.  The base
      algorithm is similiar to the previous but we force the compressed token
      size to 2.
      
      Having a fixed size compressed token allows for a lot of optimizations, and
      that in turn allows this code to run over *all* the symbols faster than it
      did before over just a subset.
      
      Having it work over all the symbols will make it behave better when symbols
      change positions between passes, and the "inconsistent kallsyms" messages
      should become less frequent.
      
      In my tests the compression ratio was degraded by about 0.5%, but the
      results will depend greatly on the number of symbols to compress.
      Signed-off-by: NPaulo Marques <pmarques@grupopie.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b3dbb4ec
    • T
      [PATCH] relayfs · e82894f8
      Tom Zanussi 提交于
      Here's the latest version of relayfs, against linux-2.6.11-mm2.  I'm hoping
      you'll consider putting this version back into your tree - the previous
      rounds of comment seem to have shaken out all the API issues and the number
      of comments on the code itself have also steadily dwindled.
      
      This patch is essentially the same as the relayfs redux part 5 patch, with
      some minor changes based on reviewer comments.  Thanks again to Pekka
      Enberg for those.  The patch size without documentation is now a little
      smaller at just over 40k.  Here's a detailed list of the changes:
      
      - removed the attribute_flags in relay open and changed it to a
        boolean specifying either overwrite or no-overwrite mode, and removed
        everything referencing the attribute flags.
      - added a check for NULL names in relayfs_create_entry()
      - got rid of the unnecessary multiple labels in relay_create_buf()
      - some minor simplification of relay_alloc_buf() which got rid of a
        couple params
      - updated the Documentation
      
      In addition, this version (through code contained in the relay-apps tarball
      linked to below, not as part of the relayfs patch) tries to make it as easy
      as possible to create the cooperating kernel/user pieces of a typical and
      common type of logging application, one where kernel logging is kicked off
      when a user space data collection app starts and stops when the collection
      app exits, with the data being automatically logged to disk in between.  To
      create this type of application, you basically just include a header file
      (relay-app.h, included in the relay-apps tarball) in your kernel module,
      define a couple of callbacks and call an initialization function, and on
      the user side call a single function that sets up and continuously monitors
      the buffers, and writes data to files as it becomes available.  Channels
      are created when the collection app is started and destroyed when it exits,
      not when the kernel module is inserted, so different channel buffer sizes
      can be specified for each separate run via command-line options.  See the
      README in the relay-apps tarball for details.
      
      Also included in the relay-apps tarball are a couple examples
      demonstrating how you can use this to create quick and dirty kernel
      logging/debugging applications.  They are:
      
      - tprintk, short for 'tee printk', which temporarily puts a kprobe on
        printk() and writes a duplicate stream of printk output to a relayfs
        channel.  This could be used anywhere there's printk() debugging code
        in the kernel which you'd like to exercise, but would rather not have
        your system logs cluttered with debugging junk.  You'd probably want
        to kill klogd while you do this, otherwise there wouldn't be much
        point (since putting a kprobe on printk() doesn't change the output
        of printk()).  I've used this method to temporarily divert the packet
        logging output of the iptables LOG target from the system logs to
        relayfs files instead, for instance.
      
      - klog, which just provides a printk-like formatted logging function
        on top of relayfs.  Again, you can use this to keep stuff out of your
        system logs if used in place of printk.
      
      The example applications can be found here:
      
      http://prdownloads.sourceforge.net/dprobes/relay-apps.tar.gz?download
      
      From: Christoph Hellwig <hch@lst.de>
      
        avoid lookup_hash usage in relayfs
      Signed-off-by: NTom Zanussi <zanussi@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e82894f8
    • I
      [PATCH] detect soft lockups · 8446f1d3
      Ingo Molnar 提交于
      This patch adds a new kernel debug feature: CONFIG_DETECT_SOFTLOCKUP.
      
      When enabled then per-CPU watchdog threads are started, which try to run
      once per second.  If they get delayed for more than 10 seconds then a
      callback from the timer interrupt detects this condition and prints out a
      warning message and a stack dump (once per lockup incident).  The feature
      is otherwise non-intrusive, it doesnt try to unlock the box in any way, it
      only gets the debug info out, automatically, and on all CPUs affected by
      the lockup.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NNishanth Aravamudan <nacc@us.ibm.com>
      Signed-Off-By: NMatthias Urlichs <smurf@smurf.noris.de>
      Signed-off-by: NRichard Purdie <rpurdie@rpsys.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8446f1d3
    • J
      [PATCH] FUTEX_WAKE_OP: pthread_cond_signal() speedup · 4732efbe
      Jakub Jelinek 提交于
      ATM pthread_cond_signal is unnecessarily slow, because it wakes one waiter
      (which at least on UP usually means an immediate context switch to one of
      the waiter threads).  This waiter wakes up and after a few instructions it
      attempts to acquire the cv internal lock, but that lock is still held by
      the thread calling pthread_cond_signal.  So it goes to sleep and eventually
      the signalling thread is scheduled in, unlocks the internal lock and wakes
      the waiter again.
      
      Now, before 2003-09-21 NPTL was using FUTEX_REQUEUE in pthread_cond_signal
      to avoid this performance issue, but it was removed when locks were
      redesigned to the 3 state scheme (unlocked, locked uncontended, locked
      contended).
      
      Following scenario shows why simply using FUTEX_REQUEUE in
      pthread_cond_signal together with using lll_mutex_unlock_force in place of
      lll_mutex_unlock is not enough and probably why it has been disabled at
      that time:
      
      The number is value in cv->__data.__lock.
              thr1            thr2            thr3
      0       pthread_cond_wait
      1       lll_mutex_lock (cv->__data.__lock)
      0       lll_mutex_unlock (cv->__data.__lock)
      0       lll_futex_wait (&cv->__data.__futex, futexval)
      0                       pthread_cond_signal
      1                       lll_mutex_lock (cv->__data.__lock)
      1                                       pthread_cond_signal
      2                                       lll_mutex_lock (cv->__data.__lock)
      2                                         lll_futex_wait (&cv->__data.__lock, 2)
      2                       lll_futex_requeue (&cv->__data.__futex, 0, 1, &cv->__data.__lock)
                                # FUTEX_REQUEUE, not FUTEX_CMP_REQUEUE
      2                       lll_mutex_unlock_force (cv->__data.__lock)
      0                         cv->__data.__lock = 0
      0                         lll_futex_wake (&cv->__data.__lock, 1)
      1       lll_mutex_lock (cv->__data.__lock)
      0       lll_mutex_unlock (cv->__data.__lock)
                # Here, lll_mutex_unlock doesn't know there are threads waiting
                # on the internal cv's lock
      
      Now, I believe it is possible to use FUTEX_REQUEUE in pthread_cond_signal,
      but it will cost us not one, but 2 extra syscalls and, what's worse, one of
      these extra syscalls will be done for every single waiting loop in
      pthread_cond_*wait.
      
      We would need to use lll_mutex_unlock_force in pthread_cond_signal after
      requeue and lll_mutex_cond_lock in pthread_cond_*wait after lll_futex_wait.
      
      Another alternative is to do the unlocking pthread_cond_signal needs to do
      (the lock can't be unlocked before lll_futex_wake, as that is racy) in the
      kernel.
      
      I have implemented both variants, futex-requeue-glibc.patch is the first
      one and futex-wake_op{,-glibc}.patch is the unlocking inside of the kernel.
       The kernel interface allows userland to specify how exactly an unlocking
      operation should look like (some atomic arithmetic operation with optional
      constant argument and comparison of the previous futex value with another
      constant).
      
      It has been implemented just for ppc*, x86_64 and i?86, for other
      architectures I'm including just a stub header which can be used as a
      starting point by maintainers to write support for their arches and ATM
      will just return -ENOSYS for FUTEX_WAKE_OP.  The requeue patch has been
      (lightly) tested just on x86_64, the wake_op patch on ppc64 kernel running
      32-bit and 64-bit NPTL and x86_64 kernel running 32-bit and 64-bit NPTL.
      
      With the following benchmark on UP x86-64 I get:
      
      for i in nptl-orig nptl-requeue nptl-wake_op; do echo time elf/ld.so --library-path .:$i /tmp/bench; \
      for j in 1 2; do echo ( time elf/ld.so --library-path .:$i /tmp/bench ) 2>&1; done; done
      time elf/ld.so --library-path .:nptl-orig /tmp/bench
      real 0m0.655s user 0m0.253s sys 0m0.403s
      real 0m0.657s user 0m0.269s sys 0m0.388s
      time elf/ld.so --library-path .:nptl-requeue /tmp/bench
      real 0m0.496s user 0m0.225s sys 0m0.271s
      real 0m0.531s user 0m0.242s sys 0m0.288s
      time elf/ld.so --library-path .:nptl-wake_op /tmp/bench
      real 0m0.380s user 0m0.176s sys 0m0.204s
      real 0m0.382s user 0m0.175s sys 0m0.207s
      
      The benchmark is at:
      http://sourceware.org/ml/libc-alpha/2005-03/txt00001.txt
      Older futex-requeue-glibc.patch version is at:
      http://sourceware.org/ml/libc-alpha/2005-03/txt00002.txt
      Older futex-wake_op-glibc.patch version is at:
      http://sourceware.org/ml/libc-alpha/2005-03/txt00003.txt
      Will post a new version (just x86-64 fixes so that the patch
      applies against pthread_cond_signal.S) to libc-hacker ml soon.
      
      Attached is the kernel FUTEX_WAKE_OP patch as well as a simple-minded
      testcase that will not test the atomicity of the operation, but at least
      check if the threads that should have been woken up are woken up and
      whether the arithmetic operation in the kernel gave the expected results.
      Acked-by: NIngo Molnar <mingo@redhat.com>
      Cc: Ulrich Drepper <drepper@redhat.com>
      Cc: Jamie Lokier <jamie@shareable.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NYoichi Yuasa <yuasa@hh.iij4u.or.jp>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4732efbe