1. 31 Mar, 2006 40 commits
    • Richard Purdie's avatar
      [PATCH] LED: class documentation · 75c1d31d
      Richard Purdie authored
      The LED class/subsystem takes John Lenz's work and extends and alters it to
      give what I think should be a fairly universal LED implementation.
      
      The series consists of several logical units:
      
      * LED Core + Class implementation
      * LED Trigger Core implementation
      * LED timer trigger (example of a complex trigger)
      * LED device drivers for corgi, spitz and tosa Zaurus models
      * LED device driver for locomo LEDs
      * LED device driver for ARM ixp4xx LEDs
      * Zaurus charging LED trigger
      * IDE disk activity LED trigger
      * NAND MTD activity LED trigger
      
      Why?
      ====
      
      LEDs are really simple devices usually amounting to a GPIO that can be turned
      on and off so why do we need all this code?  On handheld or embedded devices
      they're an important part of an often limited user interface.  Both users and
      developers want to be able to control and configure what the LED does and the
      number of different things they'd potentially want the LED to show is large.
      
      A subsystem is needed to try and provide all this different functionality in
      an architecture independent, simple but complete, generic and scalable manner.
      
      The alternative is for everyone to implement just what they need hidden away
      in different corners of the kernel source tree and to provide an inconsistent
      interface to userspace.
      
      Other Implementations
      =====================
      
      I'm aware of the existing arm led implementation.  Currently the new subsystem
      and the arm code can coexist quite happily.  Its up to the arm community to
      decide whether this new interface is acceptable to them.  As far as I can see,
      the new interface can do everything the existing arm implementation can with
      the advantage that the new code is architecture independent and much more
      generic, configurable and scalable.
      
      I'm prepared to make the conversion to the LED subsystem (or assist with it)
      if appropriate.
      
      Implementation Details
      ======================
      
      I've stripped a lot of code out of John's original LED class.  Colours were
      removed as LED colour is now part of the device name.  Multiple colours are to
      be handled as multiple led devices.  This means you get full control over each
      colour.  I also removed the LED hardware timer code as the generic timer isn't
      going to add much overhead and is just as useful.  I also decided to have the
      LED core track the current LED status (to ease suspend/resume handling)
      removing the need for brightness_get implementations in the LED drivers.
      
      An underlying design philosophy is simplicity.  The aim is to keep a small
      amount of code giving as much functionality as possible.
      
      The major new idea is the led "trigger".  A trigger is a source of led events.
       Triggers can either be simple or complex.  A simple trigger isn't
      configurable and is designed to slot into existing subsystems with minimal
      additional code.  Examples are the ide-disk, nand-disk and zaurus-charging
      triggers.  With leds disabled, the code optimises away.  Examples are
      nand-disk and ide-disk.
      
      Complex triggers whilst available to all LEDs have LED specific parameters and
      work on a per LED basis.  The timer trigger is an example.
      
      You can change triggers in a similar manner to the way an IO scheduler is
      chosen (via /sys/class/leds/somedevice/trigger).
      
      So far there are only a handful of examples but it should easy to add further
      LED triggers without too much interference into other subsystems.
      
      Known Issues
      ============
      
      The LED Trigger core cannot be a module as the simple trigger functions would
      cause nightmare dependency issues.  I see this as a minor issue compared to
      the benefits the simple trigger functionality brings.  The rest of the LED
      subsystem can be modular.
      
      Some leds can be programmed to flash in hardware.  As this isn't a generic LED
      device property, I think this should be exported as a device specific sysfs
      attribute rather than part of the class if this functionality is required (eg.
       to keep the led flashing whilst the device is suspended).
      
      Future Development
      ==================
      
      At the moment, a trigger can't be created specifically for a single LED.
      There are a number of cases where a trigger might only be mappable to a
      particular LED.  The addition of triggers provided by the LED driver should
      cover this option and be possible to add without breaking the current
      interface.
      
      A CPU activity trigger similar to that found in the arm led implementation
      should be trivial to add.
      
      This patch:
      
      Add some brief documentation of the design decisions behind the LED class and
      how it appears to users.
      Signed-off-by: default avatarRichard Purdie <rpurdie@rpsys.net>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      75c1d31d
    • Andrew Morton's avatar
      [PATCH] modules: permit Dual-MIT/GPL licenses · 7529c301
      Andrew Morton authored
      One of the LEDs driver files wants to use this.
      
      Probably drivers/mtd/maps/ipaq-flash.c wants to convert as well - right now
      it'll be tainting the kernel.
      
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: John Bowler <jbowler@acm.org>
      Cc: "'Richard Purdie'" <rpurdie@rpsys.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7529c301
    • Rafael J. Wysocki's avatar
      [PATCH] vt: add TIOCL_GETKMSGREDIRECT · 0ca07731
      Rafael J. Wysocki authored
      Add TIOCL_GETKMSGREDIRECT needed by the userland suspend tool to get the
      current value of kmsg_redirect from the kernel so that it can save it and
      restore it after resume.
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Acked-by: default avatarPavel Machek <pavel@suse.cz>
      Cc: Michael Kerrisk <mtk-manpages@gmx.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      0ca07731
    • Jesper Juhl's avatar
      [PATCH] ISDN: fix a few memory leaks in sc_ioctl() · d32af0fe
      Jesper Juhl authored
      Fix a few memory leaks in drivers/isdn/sc/ioctl.c::sc_ioctl()
      Signed-off-by: default avatarJesper Juhl <jesper.juhl@gmail.com>
      Acked-by: default avatarKarsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d32af0fe
    • Tobias Klauser's avatar
      [PATCH] drivers/char/[i]stallion: Clean up kmalloc usage · b0b4ed72
      Tobias Klauser authored
      Delete two useless kmalloc wrappers and use kmalloc/kzalloc.  Some weird
      NULL checks are also simplified.
      Signed-off-by: default avatarTobias Klauser <tklauser@nuerscht.ch>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      b0b4ed72
    • Trond Myklebust's avatar
      [PATCH] fs/locks.c: Fix sys_flock() race · 993dfa87
      Trond Myklebust authored
      sys_flock() currently has a race which can result in a double free in the
      multi-thread case.
      
      Thread 1			Thread 2
      
      sys_flock(file, LOCK_EX)
      				sys_flock(file, LOCK_UN)
      
      If Thread 2 removes the lock from inode->i_lock before Thread 1 tests for
      list_empty(&lock->fl_link) at the end of sys_flock, then both threads will
      end up calling locks_free_lock for the same lock.
      
      Fix is to make flock_lock_file() do the same as posix_lock_file(), namely
      to make a copy of the request, so that the caller can always free the lock.
      
      This also has the side-effect of fixing up a reference problem in the
      lockd handling of flock.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      993dfa87
    • Amy Griffis's avatar
      [PATCH] inotify: IN_DELETE events missing · 7a2bd3f7
      Amy Griffis authored
      IN_DELETE events are no longer generated for the removal of a file from a
      watched directory.
      
      This seems to be a result of clearing DCACHE_INOTIFY_PARENT_WATCHED in
      d_delete() directly before calling fsnotify_nameremove().
      
      Assuming the flag doesn't need to be cleared before dentry_iput(), this
      should do the trick.
      Signed-off-by: default avatarAmy Griffis <amy.griffis@hp.com>
      Cc: John McCutchan <ttb@tentacle.dhs.org>
      Acked-by: default avatarRobert Love <rml@novell.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      7a2bd3f7
    • OGAWA Hirofumi's avatar
      [PATCH] fat: kill reserved names · 094e320d
      OGAWA Hirofumi authored
      Since these names on old MSDOS is used as device, so, current fat driver
      doesn't allow a user to create those names.  But many OSes and even Windows
      can create those names actually, now.
      
      This patch removes the reserved name check.
      Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      094e320d
    • Paul Jackson's avatar
      [PATCH] cpuset: memory migration interaction fix · e4e364e8
      Paul Jackson authored
      Fix memory migration so that it works regardless of what cpuset the invoking
      task is in.
      
      If a task invoked a memory migration, by doing one of:
      
             1) writing a different nodemask to a cpuset 'mems' file, or
      
             2) writing a tasks pid to a different cpuset's 'tasks' file,
                where the cpuset had its 'memory_migrate' option turned on, then the
                allocation of the new pages for the migrated task(s) was constrained
                by the invoking tasks cpuset.
      
      If this task wasn't in a cpuset that allowed the requested memory nodes, the
      memory migration would happen to some other nodes that were in that invoking
      tasks cpuset.  This was usually surprising and puzzling behaviour: Why didn't
      the pages move?  Why did the pages move -there-?
      
      To fix this, temporarilly change the invoking tasks 'mems_allowed' task_struct
      field to the nodes the migrating tasks is moving to, so that new pages can be
      allocated there.
      Signed-off-by: default avatarPaul Jackson <pj@sgi.com>
      Acked-by: default avatarChristoph Lameter <clameter@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      e4e364e8
    • Paul Jackson's avatar
      [PATCH] cpuset: unsafe mm reference fix · 2741a559
      Paul Jackson authored
      Fix unsafe reference to a tasks mm struct, by moving the reference inside of a
      convenient nearby properly guarded code block.
      Signed-off-by: default avatarPaul Jackson <pj@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      2741a559
    • Paul Jackson's avatar
      [PATCH] cpuset: task_lock comment fix · 4a01c8d5
      Paul Jackson authored
      Fix cpuset comment involving case of a tasks cpuset pointer being NULL.
      Thanks to "the_top_cpuset_hack", this code no longer sees NULL task->cpuset
      pointers.
      Signed-off-by: default avatarPaul Jackson <pj@sgi.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      4a01c8d5
    • Andrew Morton's avatar
      [PATCH] make local_t signed · 2cf8d82d
      Andrew Morton authored
      local_t's were defined to be unsigned.  This increases confusion because
      atomic_t's are signed.  The patch goes through and changes all implementations
      to use signed longs throughout.
      
      Also, x86-64 was using 32-bit quantities for the value passed into local_add()
      and local_sub().  Fixed.
      
      All (actually, both) existing users have been audited.
      
      (Also s/__inline__/inline/ in x86_64/local.h)
      
      Cc: Andi Kleen <ak@muc.de>
      Cc: Benjamin LaHaise <bcrl@kvack.org>
      Cc: Kyle McMartin <kyle@parisc-linux.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      2cf8d82d
    • Steffen Klassert's avatar
      [PATCH] 3c59x: fix networking for 10base2 NICs · 09ce3512
      Steffen Klassert authored
      The "3c59x: use mii_check_media" patch introduced a netif_carrier_off in
      vortex_up.  10base2 stoped working because of this.  This is removed.
      
      Tx/Rx reset is back in vortex_up because the 3c900B-Combo stops working after
      changing from half duplex to full duplex when Tx/Rx reset is done with
      vortex_timer.
      
      Also brought back some mii stuff to be sure that it does not break something
      else.
      
      Thanks to Pete Clements <clem@clem.clem-digital.net> for reporting and testing.
      Signed-off-by: default avatarSteffen Klassert <klassert@mathematik.tu-chemnitz.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      09ce3512
    • Andrew Morton's avatar
      [PATCH] "3c59x collision statistics fix" fix · 0000754c
      Andrew Morton authored
      The pre-2.6.16 patch "3c59x collision statistics fix" accidentally caused
      vortex_error() to not run iowrite16(TxEnable, ioaddr + EL3_CMD) if we got a
      maxCollisions interrupt but MAX_COLLISION_RESET is not set.
      
      Thanks to Pete Clements <clem@clem.clem-digital.net> for reporting and testing.
      Acked-by: default avatarSteffen Klassert <klassert@mathematik.tu-chemnitz.de>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      0000754c
    • Trond Myklebust's avatar
      [PATCH] config: fix CONFIG_LFS option · 88b9adb0
      Trond Myklebust authored
      The help text says that if you select CONFIG_LBD, then it will automatically
      select CONFIG_LFS.  That isn't currently the case, so update the text.
      
      - Get rid of the cruft in the help text mentioning CONFIG_LBD
      
      - Tell unsure users to select CONFIG_LFS.
      
      - Remove the `default n'.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      88b9adb0
    • KaiGai Kohei's avatar
      [PATCH] Fix pacct bug in multithreading case. · bb231fe3
      KaiGai Kohei authored
      I noticed a bug on the process accounting facility.  In multi-threading
      process, some data would be recorded incorrectly when the group_leader dies
      earlier than one or more threads.  The attached patch fixes this problem.
      
      See below.  'bugacct' is a test program that create a worker thread after 4
      seconds sleeping, then the group_leader dies soon.  The worker thread
      consume CPU/Memory for 6 seconds, then exit.  We can estimate 10 seconds as
      etime and 6 seconds as stime + utime.  This is a sample program which the
      group_leader dies earlier than other threads.
      
      The results of same binary execution on different kernel are below.
      -- accounted records --------------------
               |   btime  | utime | stime | etime | minflt | majflt |   comm  |
      original | 13:16:40 |  0.00 |  0.00 |  6.10 |    171 |      0 | bugacct |
       patched | 13:20:21 |  5.83 |  0.18 | 10.03 |  32776 |      0 | bugacct |
      (*) bugacct allocates 128MB memory, thus 128MB / 4KB = 32768 of minflt is
          appropriate.
      
      -- Test results in original kernel ------
      $ date; time -p ./bugacct
      Tue Mar 28 13:16:36 JST 2006  <- But pacct said btime is 13:16:40
      real 10.11                    <- But pacct said etime is 6.10
      user 5.96                     <- But pacct said utime is 0.00
      sys 0.14                      <- But pacct said stime is 0.00
      $
      -- Test results in patched kernel -------
      $ date; time -p ./bugacct
      Tue Mar 28 13:20:21 JST 2006
      real 10.04
      user 5.83
      sys 0.19
      $
      
      In the original 2.6.16 kernel, pacct records btime, utime, stime, etime and
      minflt incorrectly.  In my opinion, this problem is caused by an assumption
      that group_leader dies last.
      
      The following section calculates process running time for etime and btime.
      But it means running time of the thread that dies last, not process.  The
      start_time of the first thread in the process (group_leader) should be
      reduced from uptime to calculate etime and btime correctly.
      
         ---- do_acct_process() in kernel/acct.c:
         /* calculate run_time in nsec*/
         do_posix_clock_monotonic_gettime(&uptime);
         run_time = (u64)uptime.tv_sec*NSEC_PER_SEC + uptime.tv_nsec;
         run_time -= (u64)current->start_time.tv_sec*NSEC_PER_SEC
                                         + current->start_time.tv_nsec;
         ----
      
      The following section calculates stime and utime of the process.
      But it might count the utime and stime of the group_leader duplicatly
      and ignore the utime and stime of the thread dies last, when one or
      more threads remain after group_leader dead.
      The ac_utime should be calculated as the sum of the signal->utime
      and utime of the thread dies last. The ac_stime should be done also.
      
         ---- do_acct_process() in kernel/acct.c:
         jiffies = cputime_to_jiffies(cputime_add(current->group_leader->utime,
                                                  current->signal->utime));
         ac.ac_utime = encode_comp_t(jiffies_to_AHZ(jiffies));
         jiffies = cputime_to_jiffies(cputime_add(current->group_leader->stime,
                                                  current->signal->stime));
         ac.ac_stime = encode_comp_t(jiffies_to_AHZ(jiffies));
         ----
      
      The part of the minflt/majflt calculation has same problem.
      This patch solves those problems, I think.
      
      Cc: Ingo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      bb231fe3
    • Andrew Morton's avatar
      [PATCH] sys_sync_file_range() · f79e2abb
      Andrew Morton authored
      Remove the recently-added LINUX_FADV_ASYNC_WRITE and LINUX_FADV_WRITE_WAIT
      fadvise() additions, do it in a new sys_sync_file_range() syscall instead.
      Reasons:
      
      - It's more flexible.  Things which would require two or three syscalls with
        fadvise() can be done in a single syscall.
      
      - Using fadvise() in this manner is something not covered by POSIX.
      
      The patch wires up the syscall for x86.
      
      The sycall is implemented in the new fs/sync.c.  The intention is that we can
      move sys_fsync(), sys_fdatasync() and perhaps sys_sync() into there later.
      
      Documentation for the syscall is in fs/sync.c.
      
      A test app (sync_file_range.c) is in
      http://www.zip.com.au/~akpm/linux/patches/stuff/ext3-tools.tar.gz.
      
      The available-to-GPL-modules do_sync_file_range() is for knfsd: "A COMMIT can
      say NFS_DATA_SYNC or NFS_FILE_SYNC.  I can skip the ->fsync call for
      NFS_DATA_SYNC which is hopefully the more common."
      
      Note: the `async' writeout mode SYNC_FILE_RANGE_WRITE will turn synchronous if
      the queue is congested.  This is trivial to fix: add a new flag bit, set
      wbc->nonblocking.  But I'm not sure that we want to expose implementation
      details down to that level.
      
      Note: it's notable that we can sync an fd which wasn't opened for writing.
      Same with fsync() and fdatasync()).
      
      Note: the code takes some care to handle attempts to sync file contents
      outside the 16TB offset on 32-bit machines.  It makes such attempts appear to
      succeed, for best 32-bit/64-bit compatibility.  Perhaps it should make such
      requests fail...
      
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Cc: Michael Kerrisk <mtk-manpages@gmx.net>
      Cc: Ulrich Drepper <drepper@redhat.com>
      Cc: Neil Brown <neilb@cse.unsw.edu.au>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      f79e2abb
    • Corey Minyard's avatar
      [PATCH] IPMI: convert from semaphores to mutexes · d6dfd131
      Corey Minyard authored
      Convert the remaining semaphores to mutexes in the IPMI driver.  The
      watchdog was using a semaphore as a real semaphore (for IPC), so the
      conversion there required adding a completion.
      Signed-off-by: default avatarCorey Minyard <minyard@acm.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      d6dfd131
    • Corey Minyard's avatar
      [PATCH] IPMI: tidy up various things · 8a3628d5
      Corey Minyard authored
      Tidy up various coding standard things, mostly removing the space after !,
      but also break some long lines and fix a few other spacing inconsistencies.
      Also fixes some bad error reporting when deleting an IPMI user.
      Signed-off-by: default avatarCorey Minyard <minyard@acm.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      8a3628d5
    • Corey Minyard's avatar
      [PATCH] IPMI: fix startup race condition · 453823ba
      Corey Minyard authored
      Matt Domsch noticed a startup race with the IPMI kernel thread, it was
      possible (though extraordinarly unlikely) that a message could come in
      before the upper layer was ready to handle it.  This patch splits the
      startup processing of an IPMI interface into two parts, one to get ready
      and one to actually start the processes to receive messages from the
      interface.
      
      [akpm@osdl.org: cleanups]
      Signed-off-by: default avatarCorey Minyard <minyard@acm.org>
      Cc: Matt Domsch <Matt_Domsch@dell.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      453823ba
    • Andrew Morton's avatar
      [PATCH] make tty_insert_flip_string a non-GPL export · ee37df78
      Andrew Morton authored
      Alan sayeth "Based on Linus original comments about _GPL we should export
      tty_insert_flip_char as EXPORT_SYMBOL because it used to be EXPORT_SYMBOL
      equivalent (trivial inline).  The other features are new extensions are were
      not available to drivers before so need not be provided except as _GPL
      functionality as far as I can see."
      
      Addresses http://bugzilla.kernel.org/show_bug.cgi?id=6294
      
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Paul Fulghum <paulkf@microgate.com>
      Cc: Philippe Vouters <Philippe.Vouters@laposte.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      ee37df78
    • Randy Dunlap's avatar
      [PATCH] edac_752x needs CONFIG_HOTPLUG · da960a6a
      Randy Dunlap authored
      EDAC_752X uses pci_scan_single_device(), which is only available if
      CONFIG_HOTPLUG is enabled, so limit this driver with HOTPLUG.
      Signed-off-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Cc: Dave Peterson <dsp@llnl.gov>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      da960a6a
    • OGAWA Hirofumi's avatar
      [PATCH] Don't pass boot parameters to argv_init[] · 9b41046c
      OGAWA Hirofumi authored
      The boot cmdline is parsed in parse_early_param() and
      parse_args(,unknown_bootoption).
      
      And __setup() is used in obsolete_checksetup().
      
      	start_kernel()
      		-> parse_args()
      			-> unknown_bootoption()
      				-> obsolete_checksetup()
      
      If __setup()'s callback (->setup_func()) returns 1 in
      obsolete_checksetup(), obsolete_checksetup() thinks a parameter was
      handled.
      
      If ->setup_func() returns 0, obsolete_checksetup() tries other
      ->setup_func().  If all ->setup_func() that matched a parameter returns 0,
      a parameter is seted to argv_init[].
      
      Then, when runing /sbin/init or init=app, argv_init[] is passed to the app.
      If the app doesn't ignore those arguments, it will warning and exit.
      
      This patch fixes a wrong usage of it, however fixes obvious one only.
      Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      9b41046c
    • Joe Korty's avatar
      [PATCH] Simplify proc/devices and fix early termination regression · 68eef3b4
      Joe Korty authored
      Make baby-simple the code for /proc/devices.  Based on the proven design
      for /proc/interrupts.
      
      This also fixes the early-termination regression 2.6.16 introduced, as
      demonstrated by:
      
          # dd if=/proc/devices bs=1
          Character devices:
            1 mem
          27+0 records in
          27+0 records out
      
      This should also work (but is untested) when /proc/devices >4096 bytes,
      which I believe is what the original 2.6.16 rewrite fixed.
      
      [akpm@osdl.org: cleanups, simplifications]
      Signed-off-by: default avatarJoe Korty <joe.korty@ccur.com>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      68eef3b4
    • Oleg Nesterov's avatar
      [PATCH] __mod_timer: simplify ->base changing · a2c348fe
      Oleg Nesterov authored
      Since base and new_base are of the same type now, we can save one 'if'
      branch and simplify the code a bit.
      Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Acked-by: default avatarIngo Molnar <mingo@elte.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      a2c348fe
    • Oleg Nesterov's avatar
      [PATCH] kill __init_timer_base in favor of boot_tvec_bases · 3691c519
      Oleg Nesterov authored
      Commit a4a6198b:
      	[PATCH] tvec_bases too large for per-cpu data
      
      introduced "struct tvec_t_base_s boot_tvec_bases" which is visible at
      compile time.  This means we can kill __init_timer_base and move
      timer_base_s's content into tvec_t_base_s.
      Signed-off-by: default avatarOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3691c519
    • Miklos Szeredi's avatar
      [PATCH] locks: don't panic · 5ce29646
      Miklos Szeredi authored
      Don't panic!  Just BUG_ON().
      Signed-off-by: default avatarMiklos Szeredi <miklos@szeredi.hu>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      5ce29646
    • Jakub Jelinek's avatar
      [PATCH] Mark unwind info for signal trampolines in vDSOs · da2e9e1f
      Jakub Jelinek authored
      Mark unwind info for signal trampolines using the new S augmentation flag
      introduced in: http://gcc.gnu.org/PR26208.
      
      GCC 4.2 (or patched earlier GCC) will be able to special case unwinding
      through frames right above signal trampolines.  As the augmentations start
      with z flag and S is at the very end of the augmentation string, older GCCs
      will just skip the S flag as unknown (that's why an augmentation flag was
      chosen over say a new CFA opcode).
      Signed-off-by: default avatarJakub Jelinek <jakub@redhat.com>
      Cc: Andi Kleen <ak@muc.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      da2e9e1f
    • KAMEZAWA Hiroyuki's avatar
      [PATCH] for_each_possible_cpu: s390 · 97db7fbf
      KAMEZAWA Hiroyuki authored
      for_each_cpu() actually iterates across all possible CPUs.  We've had mistakes
      in the past where people were using for_each_cpu() where they should have been
      iterating across only online or present CPUs.  This is inefficient and
      possibly buggy.
      
      We're renaming for_each_cpu() to for_each_possible_cpu() to avoid this in the
      future.
      
      This patch replaces for_each_cpu with for_each_possible_cpu.
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      97db7fbf
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: check for differences in host support · 3feb8856
      Paolo 'Blaisorblade' Giarrusso authored
      If running on a host not supporting TLS (for instance 2.4) we should report
      that cleanly to the user, instead of printing not comprehensible "error 5" for
      that.
      
      Additionally, i386 and x86_64 support different ranges for
      user_desc->entry_number, and we must account for that; we couldn't pass
      ourselves -1 because we need to override previously existing TLS descriptors
      which glibc has possibly set, so test at startup the range to use.
      
      x86 and x86_64 existing ranges are hardcoded.
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      3feb8856
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: add arch_switch_to for newly forked thread · 54d8d3b5
      Paolo 'Blaisorblade' Giarrusso authored
      Newly forked threads have no arch_switch_to_skas() called before their first
      run, because when schedule() switches to them they're resumed in the body of
      thread_wait() inside fork_handler() rather than in switch_threads() in
      switch_to_skas().  Compensate this missing call.
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      54d8d3b5
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: tls support: hack to make it compile on any host · dd77aec0
      Paolo 'Blaisorblade' Giarrusso authored
      Copy the definition of struct user_desc (with another name) for use by
      userspace sources (where we use the host headers, and we can't be sure about
      their content) to make sure UML compiles.
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      dd77aec0
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: implement {get,set}_thread_area for i386 · aa6758d4
      Paolo 'Blaisorblade' Giarrusso authored
      Implement sys_[gs]et_thread_area and the corresponding ptrace operations for
      UML.  This is the main chunk, additional parts follow.  This implementation is
      now well tested and has run reliably for some time, and we've understood all
      the previously existing problems.
      
      Their implementation saves the new GDT content and then forwards the call to
      the host when appropriate, i.e.  immediately when the target process is
      running or on context switch otherwise (i.e.  on fork and on ptrace() calls).
      
      In SKAS mode, we must switch registers on each context switch (because SKAS
      does not switches tls_array together with current->mm).
      
      Also, added get_cpu() locking; this has been done for SKAS mode, since TT does
      not need it (it does not use smp_processor_id()).
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      aa6758d4
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: clean arch_switch usage · 972410b0
      Paolo 'Blaisorblade' Giarrusso authored
      Call arch_switch also in switch_to_skas, even if it's, for now, a no-op for
      that case (and mark this in the comment); this will change soon.
      
      Also, arch_switch for TT mode is actually useless when the PT proxy (a
      complicate debugging instrumentation for TT mode) is not enabled.  In fact, it
      only calls update_debugregs, which checks debugregs_seq against seq (to check
      if the registers are up-to-date - seq here means a "version number" of the
      registers).
      
      If the ptrace proxy is not enabled, debugregs_seq always stays 0 and
      update_debugregs will be a no-op.  So, optimize this out (the compiler can't
      do it).
      
      Also, I've been disappointed by the fact that it would make a lot of sense if,
      after calling a successful
      update_debugregs(current->thread.arch.debugregs_seq),
      current->thread.arch.debugregs_seq were updated with the new debugregs_seq.
      But this is not done.  Is this a bug or a feature?  For all purposes, it seems
      a bug (otherwise the whole mechanism does not make sense, which is also a
      possibility to check), which causes some performance only problems (not
      correctness), since we write_debugregs when not needed.
      
      Also, as suggested by Jeff, remove a redundant enabling of SIGVTALRM,
      comprised in the subsequent local_irq_enable().  I'm just a bit dubious if
      ordering matters there...
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      972410b0
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: split ldt.h in arch-independent and arch-dependant code · fbdf2161
      Paolo 'Blaisorblade' Giarrusso authored
      ldt-{i386,x86_64}.h is made of two different parts - some code for parsing of
      LDT descriptors, which is arch-dependant, and the code to handle uml_ldt_t (an
      LDT block inside UML), which is mostly arch-independant (among x86 and x86_64,
      at least).
      
      Join the common part in a single file (ldt.h) and split the rest away
      (host_ldt-{i386,x86_64}.h).
      
      This is needed because processor.h, with next patches, will start including
      the LDT descriptor parsing macros in host_ldt.h, but it can't include ldt.h
      because it uses semaphores (and to define semaphores one must first include
      processor.h!).
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      fbdf2161
    • Paolo 'Blaisorblade' Giarrusso's avatar
      [PATCH] uml: idle thread needn't take access to init_mm · 12523bdc
      Paolo 'Blaisorblade' Giarrusso authored
      Comparing this code which is the actual body of the arch-independent
      cpu_idle(), it is clear that it's unnecessary to set ->mm and ->active_mm;
      beyond that, a kernel thread is not supposed to have ->mm != NULL, only
      active_mm.
      
      This showed up because I used the assumption (which is IMHO valid) that kernel
      thread have their ->mm == NULL, and it failed for this thread.
      Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Acked-by: default avatarJeff Dike <jdike@addtoit.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      12523bdc
    • Al Viro's avatar
      [PATCH] uml: fix min usage · e11c0cdf
      Al Viro authored
      type-safe min() in arch/um/drivers/mconsole_kern.c
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      e11c0cdf
    • Al Viro's avatar
      [PATCH] uml: remove unused make variables · 43cecb30
      Al Viro authored
      Removed assignments to unused variables in arch/um/os-Linux/Makefile
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      43cecb30
    • Al Viro's avatar
      [PATCH] uml: __user annotations · 347f217c
      Al Viro authored
      __user annotations (hppfs)
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      347f217c
    • Al Viro's avatar
      [PATCH] uml: sparse cleanups · 4d338e1a
      Al Viro authored
      misc sparse annotations
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
      Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
      4d338e1a