20 Jan, 2006

6 commits


19 Jan, 2006

34 commits

  • This also includes by necessity _TIF_RESTORE_SIGMASK support,
    which actually resulted in a lot of cleanups.

    The sparc signal handling code is quite a mess and I should
    clean it up some day.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This is a subset of the bluesmoke project core code, stripped of the NMI work
    which isn't ready to merge and some of the "interesting" proc functionality
    that needs reworking or just has no place in kernel. It requires no core
    kernel changes except the added scrub functions already posted.

    The goal is to merge further functionality only after the core code is
    accepted and proven in the base kernel, and only at the point the upstream
    extras are really ready to merge.

    From: doug thompson

    This converts EDAC to sysfs and is the final chunk neccessary before EDAC
    has a stable user space API and can be considered for submission into the
    base kernel.

    Signed-off-by: Alan Cox
    Signed-off-by: Adrian Bunk
    Signed-off-by: Jesper Juhl
    Signed-off-by: doug thompson
    Signed-off-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • Add the sys_pselect6() and sys_poll() calls to the i386 syscall table.

    Signed-off-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     
  • Use the generic sys_rt_sigsuspend.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Add support for TIF_RESTORE_SIGMASK. I copy the i386 handling of the flag.
    sys_sigsuspend is also changed to follow i386.
    Also a bit of cleanup -
    turn an if into a switch
    get rid of a couple more emacs formatting comments

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Implement the TIF_RESTORE_SIGMASK flag in the new arch/powerpc kernel, for
    both 32-bit and 64-bit system call paths.

    Signed-off-by: David Woodhouse
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     
  • Handle TIF_RESTORE_SIGMASK as added by David Woodhouse's patch entitled:

    [PATCH] 2/3 Add TIF_RESTORE_SIGMASK support for arch/powerpc
    [PATCH] 3/3 Generic sys_rt_sigsuspend

    It does the following:

    (1) Declares TIF_RESTORE_SIGMASK for i386.

    (2) Invokes it over to do_signal() when TIF_RESTORE_SIGMASK is set.

    (3) Makes do_signal() support TIF_RESTORE_SIGMASK, using the signal mask saved
    in current->saved_sigmask.

    (4) Discards sys_rt_sigsuspend() from the arch, using the generic one instead.

    (5) Makes sys_sigsuspend() save the signal mask and set TIF_RESTORE_SIGMASK
    rather than attempting to fudge the return registers.

    (6) Makes sys_sigsuspend() return -ERESTARTNOHAND rather than looping
    intrinsically.

    (7) Makes setup_frame(), setup_rt_frame() and handle_signal() return 0 or
    -EFAULT rather than true/false to be consistent with the rest of the
    kernel.

    Due to the fact do_signal() is then only called from one place:

    (8) Makes do_signal() no longer have a return value is it was just being
    ignored; force_sig() takes care of this.

    (9) Discards the old sigmask argument to do_signal() as it's no longer
    necessary.

    (10) Makes do_signal() static.

    (11) Marks the second argument to do_notify_resume() as unused. The unused
    argument should remain in the middle as the arguments are passed in as
    registers, and the ordering is specific in entry.S

    Given the way do_signal() is now no longer called from sys_{,rt_}sigsuspend(),
    they no longer need access to the exception frame, and so can just take
    arguments normally.

    This patch depends on sys_rt_sigsuspend patch.

    Signed-off-by: David Howells
    Signed-off-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Handle TIF_RESTORE_SIGMASK as added by David Woodhouse's patch entitled:

    [PATCH] 2/3 Add TIF_RESTORE_SIGMASK support for arch/powerpc
    [PATCH] 3/3 Generic sys_rt_sigsuspend

    It does the following:

    (1) Declares TIF_RESTORE_SIGMASK for FRV.

    (2) Invokes it over to do_signal() when TIF_RESTORE_SIGMASK is set.

    (3) Makes do_signal() support TIF_RESTORE_SIGMASK, using the signal mask saved
    in current->saved_sigmask.

    (4) Discards sys_rt_sigsuspend() from the arch, using the generic one instead.

    (5) Makes sys_sigsuspend() save the signal mask and set TIF_RESTORE_SIGMASK
    rather than attempting to fudge the return registers.

    (6) Makes sys_sigsuspend() return -ERESTARTNOHAND rather than looping
    intrinsically.

    (7) Makes setup_frame(), setup_rt_frame() and handle_signal() return 0 or
    -EFAULT rather than true/false to be consistent with the rest of the
    kernel.

    Due to the fact do_signal() is then only called from one place:

    (8) Make do_signal() no longer have a return value is it was just being
    ignored; force_sig() takes care of this.

    (9) Discards the old sigmask argument to do_signal() as it's no longer
    necessary.

    This patch depends on the FRV signalling patches as well as the
    sys_rt_sigsuspend patch.

    Signed-off-by: David Howells
    Signed-off-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The TIF_RESTORE_SIGMASK flag allows us to have a generic implementation of
    sys_rt_sigsuspend() instead of duplicating it for each architecture. This
    provides such an implementation and makes arch/powerpc use it.

    It also tidies up the ppc32 sys_sigsuspend() to use TIF_RESTORE_SIGMASK.

    Signed-off-by: David Woodhouse
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Woodhouse
     
  • Wire up the x86_64 syscalls.

    Signed-off-by: Ulrich Drepper
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     
  • Wire up the x86 syscalls

    Signed-off-by: Ulrich Drepper
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     
  • Here is a series of patches which introduce in total 13 new system calls
    which take a file descriptor/filename pair instead of a single file
    name. These functions, openat etc, have been discussed on numerous
    occasions. They are needed to implement race-free filesystem traversal,
    they are necessary to implement a virtual per-thread current working
    directory (think multi-threaded backup software), etc.

    We have in glibc today implementations of the interfaces which use the
    /proc/self/fd magic. But this code is rather expensive. Here are some
    results (similar to what Jim Meyering posted before).

    The test creates a deep directory hierarchy on a tmpfs filesystem. Then
    rm -fr is used to remove all directories. Without syscall support I get
    this:

    real 0m31.921s
    user 0m0.688s
    sys 0m31.234s

    With syscall support the results are much better:

    real 0m20.699s
    user 0m0.536s
    sys 0m20.149s

    The interfaces are for obvious reasons currently not much used. But they'll
    be used. coreutils (and Jeff's posixutils) are already using them.
    Furthermore, code like ftw/fts in libc (maybe even glob) will also start using
    them. I expect a patch to make follow soon. Every program which is walking
    the filesystem tree will benefit.

    Signed-off-by: Ulrich Drepper
    Signed-off-by: Alexey Dobriyan
    Cc: Christoph Hellwig
    Cc: Al Viro
    Acked-by: Ingo Molnar
    Cc: Michael Kerrisk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     
  • Correct a bit of whitespace problems while working here.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • When the user specifies both a COW file and its backing file, if the previous
    backing file is not found, currently UML tries again to use it and fails.

    This can be corrected by changing same_backing_files() return value in that
    case, so that the caller will try to change the COW file to point to the new
    location, as already done in other cases.

    Additionally, given the change in the meaning of the func, change its name,
    invert its return value, so all values are inverted except when
    stat(from_cow,&buf2) fails. And add some comments and two minor bugfixes -
    remove a fd leak (return err rather than goto out) and a repeated check.

    Tested well.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • *) mark as "EXPERIMENTAL" various items that either aren't very stable or
    that are actively crashing the setup of users which don't really need them
    (i.e. HIGHMEM and 3-level pagetables on x86 - nobody needs either,
    everybody reports "I'm using it and getting trouble").

    *) move net/Kconfig near to the rest of network configurations, and
    drivers/block/Kconfig near "Block layer" submenu.

    *) it's useless and doesn't work well to force NETDEVICES on and to disable
    the prompt like it's done. Better remove the attempt, and change that to a
    simple "default y if UML".

    *) drop the warning about "report problems about HPPFS" - it's redundant
    anyway, as that's the usual procedure, and HPPFS users are especially
    technical (i.e. they know reporting bugs is _good_).

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Ugly trick to help make malloc not sleeping - we can't do anything else. But
    this is not yet optimal, since spinlock don't trigger in_atomic() when
    preemption is disabled.

    Also, even if ugly, this was already used in one place, and was even more
    bogus. Fix it.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • In a previous patch I shifted an allocation to being atomic.

    In this patch, a better but more intrusive solution is implemented, i.e. hold
    the lock only when really needing it, especially not over pipe operations, nor
    over the culprit allocation.

    Additionally, while at it, add a missing kfree in the failure path, and make
    sure that if we fail in forking, write_sigio_pid is -1 and not, say, -ENOMEM.

    And fix whitespace, at least for things I was touching anyway.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • In this error path, when the interface has had a problem, we call dev_close(),
    which is disallowed for two reasons:

    *) takes again the UML internal spinlock, inside the ->stop method of this
    device
    *) can be called in process context only, while we're in interrupt context.

    I've also thought that calling dev_close() may be a wrong policy to follow,
    but it's not up to me to decide that.

    However, we may end up with multiple dev_close() queued on the same device.
    But the initial test for (dev->flags & IFF_UP) makes this harmless, though -
    and dev_close() is supposed to care about races with itself. So there's no
    harm in delaying the shutdown, IMHO.

    Something to mark the interface as "going to shutdown" would be appreciated,
    but dev_deactivate has the same problems as dev_close(), so we can't use it
    either.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Pre-clear transport-specific private structure before passing it down.

    In fact, I just got a slab corruption and kernel panic on exit because kfree()
    was called on a pointer which probably was never allocated, BUT hadn't been
    set to NULL by the driver.

    As the code is full of such errors, I've decided for now to go the safe way
    (we're talking about drivers), and to do the simple thing. I'm also starting
    to fix drivers, and already sent a patch for the daemon transport.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Avoid uninitialized data in the daemon_data structure. I used this transport
    before doing proper setup before-hand, and I got some very nice SLAB
    corruption due to freeing crap pointers. So just make sure to clear
    everything when appropriate.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Some fixes to make softints work in tt mode.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bodo Stroesser
     
  • Now that we are doing soft interrupts, there's no point in using sigsetjmp and
    siglongjmp. Using setjmp and longjmp saves a sigprocmask on every jump.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This patch implements soft interrupts. Interrupt enabling and disabling no
    longer map to sigprocmask. Rather, a flag is set indicating whether
    interrupts may be handled. If a signal comes in and interrupts are marked as
    OK, then it is handled normally. If interrupts are marked as off, then the
    signal handler simply returns after noting that a signal needs handling. When
    interrupts are enabled later on, this pending signals flag is checked, and the
    IRQ handlers are called at that point.

    The point of this is to reduce the cost of local_irq_save et al, since they
    are very much more common than the signals that they are enabling and
    disabling. Soft interrupts produce a speed-up of ~25% on a kernel build.

    Subtleties -

    UML uses sigsetjmp/siglongjmp to switch contexts. sigsetjmp has been
    wrapped in a save_flags-like macro which remembers the interrupt state at
    setjmp time, and restores it when it is longjmp-ed back to.

    The enable_signals function has to loop because the IRQ handler
    disables interrupts before returning. enable_signals has to return with
    signals enabled, and signals may come in between the disabling and the
    return to enable_signals. So, it loops for as long as there are pending
    signals, ensuring that signals are enabled when it finally returns, and
    that there are no pending signals that need to be dealt with.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Stop using global variables to hold the file descriptor and offset used to map
    the skas0 stubs. Instead, calculate them using the page physical addresses.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • The serial UML OS-abstraction layer patch (um/kernel/skas dir).

    This moves all systemcalls from skas/process.c file under os-Linux dir and
    join skas/process.c and skas/process_kern.c files.

    Signed-off-by: Gennady Sharapov
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gennady Sharapov
     
  • The serial UML OS-abstraction layer patch (um/kernel/skas dir).

    This moves all systemcalls from skas/mem_user.c file under os-Linux dir and
    join skas/mem_user.c and skas/mem.c files.

    Signed-off-by: Gennady Sharapov
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gennady Sharapov
     
  • The serial UML OS-abstraction layer patch (um/kernel dir).

    This moves skas headers to arch/um/include.

    Signed-off-by: Gennady Sharapov
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gennady Sharapov
     
  • Current implementation of boot_timer_handler isn't usable for s390. So I
    changed its name to do_boot_timer_handler, taking (struct sigcontext *)sc as
    argument. do_boot_timer_handler is called from new boot_timer_handler() in
    arch/um/os-Linux/signal.c, which uses the same mechanisms as other signal
    handler to find out sigcontext pointer.

    Signed-off-by: Bodo Stroesser
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bodo Stroesser
     
  • The serial UML OS-abstraction layer patch (um/kernel dir).

    This moves all systemcalls from time.c file under os-Linux dir and joins
    time.c and tine_kernel.c files

    Signed-off-by: Gennady Sharapov
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gennady Sharapov
     
  • The serial UML OS-abstraction layer patch (um/kernel dir).

    This moves all systemcalls from user_util.c file under os-Linux dir

    Signed-off-by: Gennady Sharapov
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gennady Sharapov
     
  • s390 doesn't have a LDT. So MM_COPY_SEGMENTS will not be supported on s390.

    The only user of MM_COPY_SEGMENTS is new_mm(), but that's no longer useful, as
    arch/sys-i386/ldt.c defines init_new_ldt(), which is called immediately after
    new_mm(). So we should copy host's LDT in init_new_ldt(), if /proc/mm is
    available, to have this subarch specific call in subarch code.

    Signed-off-by: Bodo Stroesser
    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bodo Stroesser
     
  • Fix a typo/mis-merge in one of the previous patches.

    Signed-off-by: Jan Beulich
    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Beulich
     
  • Linus Torvalds
     
  • Linus Torvalds