16 Sep, 2019

2 commits

  • Convert files to use SPDX header. All files are licensed under the GPLv2.

    Signed-off-by: Alex Dewar
    Signed-off-by: Richard Weinberger

    Alex Dewar
     
  • UML enables TRACE_IRQFLAGS_SUPPORT but doesn't actually implement
    it. It seems to have been added for lockdep support, but that can't
    actually really work well without IRQ flags tracing, as is also
    very noisily reported when enabling CONFIG_DEBUG_LOCKDEP.

    Implement it now.

    Fixes: 711553efa5b8 ("[PATCH] uml: declare in Kconfig our partial LOCKDEP support")
    Signed-off-by: Johannes Berg
    Signed-off-by: Richard Weinberger

    Johannes Berg
     

07 Sep, 2013

1 commit

  • Richard reported that some UML processes survive if the UML
    main process receives a SIGTERM.
    This issue was caused by a wrongly placed signal(SIGTERM, SIG_DFL)
    in init_new_thread_signals().
    It disabled the UML exit handler accidently for some processes.
    The correct solution is to disable the fatal handler for all
    UML helper threads/processes.
    Such that last_ditch_exit() does not get called multiple times
    and all processes can exit due to SIGTERM.

    Reported-and-tested-by: Richard W.M. Jones
    Signed-off-by: Richard Weinberger

    Richard Weinberger
     

10 Oct, 2012

1 commit


02 Nov, 2011

2 commits


25 Jul, 2008

1 commit

  • - Make some variables and functions static, since they don't need to be
    global.

    - Remove an unused function - arch/um/kernel/time.c::sched_clock().

    - Clean the style a bit as complained by checkpatch.pl.

    Cc: Jeff Dike
    Signed-off-by: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    WANG Cong
     

13 May, 2008

2 commits

  • The random driver would essentially hang if the host's /dev/random returned
    -EAGAIN. There was a test of need_resched followed by a schedule inside the
    loop, but that didn't help and it's the wrong way to work anyway.

    The right way is to ask for an interrupt when there is input available from
    the host and handle it then rather than polling.

    Now, when the host's /dev/random returns -EAGAIN, the driver asks for a wakeup
    when there's randomness available again and sleeps. The interrupt routine
    just wakes up whatever processes are sleeping on host_read_wait.

    There is an atomic_t, host_sleep_count, which counts the number of processes
    waiting for randomness. When this reaches zero, the interrupt is disabled.

    An added complication is that async I/O notification was only recently added
    to /dev/random (by me), so essentially all hosts will lack it. So, we use the
    sigio workaround here, which is to have a separate thread poll on the
    descriptor and send an interrupt when there is input on it. This mechanism is
    activated when a process gets -EAGAIN (activating this multiple times is
    harmless, if a bit wasteful) and deactivated by the last process still
    waiting.

    The module name was changed from "random" to "hw_random" in order for udev to
    recognize it.

    The sigio workaround needed some changes. sigio_broken was added for cases
    when we know that async notification doesn't work. This is now called from
    maybe_sigio_broken, which deals with pts devices.

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

    Jeff Dike
     
  • Reintroduce uml_kmalloc for the benefit of UML libc code. The
    previous tactic of declaring __kmalloc so it could be called directly
    from the libc side of the house turned out to be getting too intimate
    with slab, and it doesn't work with slob.

    So, the uml_kmalloc wrapper is back. It calls kmalloc or whatever
    that translates into, and libc code calls it.

    kfree is left alone since that still works, leaving a somewhat
    inconsistent API.

    Signed-off-by: Jeff Dike
    Cc: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

06 Feb, 2008

3 commits

  • Style fixes in arch/um/os-Linux/irq.c and arch/um/os-Linux/sigio.c:
    Updated copyrights
    trimmed includes
    added severity indicators to printks
    CodingStyle fixes
    turned an bunch of panics into printks
    call some libc functions directly instead of going through the
    os_* wrappers

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

    Jeff Dike
     
  • Signed-off-by: Lucas Woods
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lucas Woods
     
  • This patch also does some improvements for uml code. Improvements include
    dropping unnecessary cast, killing some unnecessary code and still some
    constifying for pointers etc..

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

    WANG Cong
     

17 Jul, 2007

2 commits

  • UML had two wrapper procedures for kmalloc, um_kmalloc and um_kmalloc_atomic
    because the flag constants weren't available in userspace code.
    kern_constants.h had made kernel constants available for a long time, so there
    is no need for these wrappers any more. Rather, userspace code calls kmalloc
    directly with the userspace versions of the gfp flags.

    kmalloc isn't a real procedure, so I had to essentially copy the inline
    wrapper around __kmalloc.

    vmalloc also had its own wrapper for no good reason. This is now gone.

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

    Jeff Dike
     
  • run_helper and run_helper_thread had arguments which were the same in all
    callers. run_helper's stack_out was always NULL and run_helper_thread's
    stack_order was always 0. These are now gone, and the constants folded
    into the code.

    Also fixed leaks of the helper stack in the AIO and SIGIO code.

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

    Jeff Dike
     

08 May, 2007

4 commits

  • This patch converts calls in the os layer to os_{read,write}_file to calls
    directly to libc read() and write() where it is clear that the I/O buffer is
    in the kernel.

    We can do that here instead of calling os_{read,write}_file_k since we are in
    libc code and can call libc directly.

    With the change in the calls, error handling needs to be changed to refer to
    errno directly rather than the return value of the call.

    CATCH_EINTR wrappers were also added where needed.

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

    Jeff Dike
     
  • This patch lays some groundwork for the next one, which converts calls to
    os_{read,write}_file into {read,write}, by doing some tidying in the affected
    areas.

    do_not_aio gets restructured to make the final result a bit cleaner.

    There are also whitespace and other formatting fixes, fixes in error messages,
    and a typo fix.

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

    Jeff Dike
     
  • user_util.h isn't needed any more, so delete it and remove all includes of it.

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

    Jeff Dike
     
  • This patch narrows the sigio interface. The boot-time SIGIO testing used to
    be in start_up.c, which meant that pty_output_sigio and pty_close_sigio needed
    to be global. By moving that code here, those can become static and the
    declarations moved from user_util.h.

    os_check_bugs is also here because it only does the SIGIO checking. If it
    does more, it'll probably move back to start_up.c.

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

    Jeff Dike
     

02 Mar, 2007

1 commit


17 Feb, 2007

1 commit

  • A previous cleanup misused need_poll, which had a fairly broken interface.
    It implemented a growable array, changing the used elements count itself,
    but leaving it up to the caller to fill in the actual elements, including
    the entire array if the array had to be reallocated. This worked because
    the previous users were switching between two such structures, and the
    elements were copied from the inactive array to the active array after
    making sure the active array had enough room.

    maybe_sigio_broken was made to use need_poll, but it was operating on a
    single array, so when the buffer was reallocated, the previous contents
    were lost.

    This patch makes need_poll implement more sane semantics. It merely
    assures that the array is of the proper size and that the contents are
    preserved. It is up to the caller to adjust the used elements count and to
    ensure that the proper elements are resent.

    This manifested itself as a hang in 2.6.20 as the uninitialized buffer
    convinced UML that one of its own file descriptors didn't support SIGIO and
    needed to be watched by poll in a separate thread. The result was an
    interrupt flood as control traffic over this descriptor sparked interrupts,
    which resulted in more control traffic, ad nauseum.

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

    Jeff Dike
     

21 Oct, 2006

1 commit


26 Sep, 2006

1 commit

  • - Various cleanups in the sigio code.

    - Removed explicit zero-initializations of a few structures.

    - Improved some error messages.

    - An API change - there was an asymmetry between reactivate_fd calling
    maybe_sigio_broken, which goes through all the machinery of figuring out if
    a file descriptor supports SIGIO and applying the workaround to it if not,
    and deactivate_fd, which just turns off the descriptor.

    This is changed so that only activate_fd calls maybe_sigio_broken, when
    the descriptor is first seen. reactivate_fd now calls add_sigio_fd, which
    is symmetric with ignore_sigio_fd.

    This removes a recursion which makes a critical section look more critical
    than it really was, obsoleting a big comment to that effect. This requires
    keeping track of all descriptors which are getting the SIGIO treatment, not
    just the ones being polled at any given moment, so that reactivate_fd,
    through add_sigio_fd, doesn't try to tell the SIGIO thread about descriptors
    it doesn't care about.

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

    Jeff Dike
     

11 Jul, 2006

3 commits

  • A few sigio-related things can be made static.

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

    Jeff Dike
     
  • This fixes an exitcall ordering bug - calls to ignore_sigio_fd can come from
    exitcalls that come after the sigio thread has been killed. This would cause
    shutdown to hang or crash.

    Fixed by having ignore_sigio_fd check that the thread is present before trying
    to communicate with it.

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

    Jeff Dike
     
  • os_isatty can be made to disappear by moving maybe_sigio_broken from kernel to
    user code. This also lets write_sigio_workaround become static.

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

    Jeff Dike
     

11 Apr, 2006

1 commit


28 Mar, 2006

2 commits

  • This fixes a race in the starting of write_sigio_thread. Previously, some of
    the data needed by the thread was initialized after the clone. If the thread
    ran immediately, it would see the uninitialized data, including an empty
    pollfds, which would cause it to hang.

    We move the data initialization to before the clone, and adjust the error
    paths and cleanup accordingly.

    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 dir).

    This moves sigio_user.c to 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

    Jeff Dike