11 Jan, 2006

1 commit


09 Jan, 2006

8 commits

  • Configurable 16-bit UID and friends support

    This allows turning off the legacy 16 bit UID interfaces on embedded platforms.

    text data bss dec hex filename
    3330172 529036 190556 4049764 3dcb64 vmlinux-baseline
    3328268 529040 190556 4047864 3dc3f8 vmlinux

    From: Adrian Bunk

    UID16 was accidentially disabled for !EMBEDDED.

    Signed-off-by: Matt Mackall
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • The problem. It is expected that /sbin/halt -p works exactly like
    /sbin/halt, when the kernel does not implement power off functionality.

    The kernel can do a lot of work in the reboot notifiers and in
    device_shutdown before we even get to machine_power_off. Some of that
    shutdown is not safe if you are leaving the power on, and it definitely
    gets in the way of using sysrq or pressing ctrl-alt-del. Since the
    shutdown happens in generic code there is no way to fix this in
    architecture specific code :(

    Some machines are kernel oopsing today because of this.

    The simple solution is to turn LINUX_REBOOT_CMD_POWER_OFF into
    LINUX_REBOOT_CMD_HALT if power_off functionality is not implemented.

    This has the unfortunate side effect of disabling the power off
    functionality on architectures that leave pm_power_off to null and still
    implement something in machine_power_off. And it will break the build on
    some architectures that don't have a pm_power_off variable at all.

    On both counts I say tough.

    For architectures like alpha that don't implement the pm_power_off variable
    pm_power_off is declared in linux/pm.h and it is a generic part of our
    power management code, and all architectures should implement it.

    For architectures like parisc that have a default power off method in
    machine_power_off if pm_power_off is not implemented or fails. It is easy
    enough to set the pm_power_off variable. And nothing bad happens there,
    the machines just stop powering off.

    The current semantics are impossible without a flag at the top level so we
    can avoid the problem code if a power off is not implemented. pm_power_off
    is as good a flag as any with the bonus that it works without modification
    on at least x86, x86_64, powerpc, and ppc today.

    Andrew can you pick this up and put this in the mm tree. Kernels that
    don't compile or don't power off seem saner than kernels that oops or
    panic. Until we get the arch specific patches for the problem
    architectures this probably isn't smart to push into the stable kernel.
    Unfortunately I don't have the time at the moment to walk through every
    architecture and make them work. And even if I did I couldn't test it :(

    From: Hirokazu Takata

    Add pm_power_off() for build fix of arch/m32r/kernel/process.c.

    From: Miklos Szeredi

    UML build fix

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Hayato Fujiwara
    Signed-off-by: Hirokazu Takata
    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • HDIO_GETGEO is implemented in most block drivers, and all of them have to
    duplicate the code to copy the structure to userspace, as well as getting
    the start sector. This patch moves that to common code [1] and adds a
    ->getgeo method to fill out the raw kernel hd_geometry structure. For many
    drivers this means ->ioctl can go away now.

    [1] the s390 block drivers are odd in this respect. xpram sets ->start
    to 4 always which seems more than odd, and the dasd driver shifts
    the start offset around, probably because of it's non-standard
    sector size.

    Signed-off-by: Christoph Hellwig
    Cc: Jens Axboe
    Cc:
    Cc: Jeff Dike
    Cc: Paolo Giarrusso
    Cc: Bartlomiej Zolnierkiewicz
    Cc: Neil Brown
    Cc: Markus Lidel
    Cc: Russell King
    Cc: David Woodhouse
    Cc: Martin Schwidefsky
    Cc: James Bottomley
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • If MODE_TT=n, MODE_SKAS must be y.

    Signed-off-by: Adrian Bunk
    Acked-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This fixes some mangled whitespace added by the earlier trap_user.c patch.

    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 joins trap_user.c and trap_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 trap_user.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
     
  • The serial UML OS-abstraction layer patch (um/kernel dir).

    This moves all systemcalls from signal_user.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
     

07 Jan, 2006

21 commits

  • Free the network IRQ when closing down the network devices at shutdown.
    Delete the device from the opened devices list on close.

    These prevent an -EBADF when later disabling SIGIO on all extant descriptors
    and a complaint from free_irq about freeing the IRQ twice.

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

    Jeff Dike
     
  • Fix up some bogus spacing in the mconsole driver. Also delete the
    emacs formatting comment at the end.

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

    Jeff Dike
     
  • Pass sysrq output back to the mconsole client using the mechanism
    introduced for stack output.

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

    Jeff Dike
     
  • The stack command now sends the printk output back to the mconsole client.
    This is done by registering a special console for the mconsole driver. This
    receives all printk output. Normally, it is ignored, but when a stack command
    is issued, any printk output will be sent back to the client.

    This will capture any printk output, whether it is stack output or not, since
    we can't tell the difference.

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

    Jeff Dike
     
  • This is needed for the console output patch, since we have a possibly
    non-NULL-terminated string there. So, the new interface takes a string and a
    length, and the old interface calls strlen on its string and calls the new
    interface with the length.

    There's also a bit of whitespace cleanup.

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

    Jeff Dike
     
  • Produce a compile-time error if both MODE_SKAS and MODE_TT are disabled.

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

    Jeff Dike
     
  • Code cleanup - unregister_winch and winch_cleanup had some duplicate code.
    This is now abstracted out into free_winch.

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

    Jeff Dike
     
  • This patch cleans up the umid code:

    - The only_if_set argument to get_umid is gone.

    - get_umid returns an empty string rather than NULL if there is no umid.

    - umid_is_random is gone since its users went away.

    - Some printfs were turned into printks because the code runs late enough
    that printk is working.

    - Error paths were cleaned up.

    - Some functions now return an error and let the caller print the error
    message rather than printing it themselves. This eliminates the practice of
    passing a pointer to printf or printk in, depending on where in the boot
    process we are.

    - Major tidying of not_dead_yet - mostly error path cleanup, plus a comment
    explaining why it doesn't react to errors the way you might expect.

    - Calls to os_* interfaces that were moved under os are changed back to
    their native libc forms.

    - snprintf, strlcpy, and their bounds-checking friends are used more often,
    replacing by-hand bounds checking in some places.

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

    Jeff Dike
     
  • I reworked Gennady's umid OS abstraction patch because the code shouldn't
    be moved entirely to os. As it turns out, I moved most of it anyway. This
    patch is the minimal one needed to move the code and have it work.
    It turns out that the concept of the umid is OS-independent, but
    almost everything else about the implementation is OS-dependent.

    This is code movement without cleanup - a follow-on patch tidies
    everything up without shuffling code around.

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

    Jeff Dike
     
  • This patch adds support for throttling and unthrottling input when the tty
    driver can't handle it.

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

    Jeff Dike
     
  • When the tty flip_buf is full, it's a good idea to delay the input processing
    for a jiffy, rather than just scheduling the tasklet immediately.

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

    Jeff Dike
     
  • This patch simplifies the opening and closing of host console devices and the
    registration and deregistration of IRQs. The intent is to make it obvious
    that an IRQ can't exist without an open file descriptor.

    chan_enable will now open the channel, and when both opening and IRQ
    registration are desired, this should be used. Opening only is done for the
    initial console, so that interface still needs to exist.

    The free_irqs_later interface is now gone. It was intended to avoid freeing
    an IRQ while it was being processed. It did this, but it didn't eliminate the
    possiblity of free_irq being called from an interrupt, which is bad. In its
    place is a list of irqs to be freed, which is processed by the signal handler
    just before exiting. close_one_chan now disables irqs.

    When a host device disappears, it is just closed, and that disables IRQs.

    The device id registered with the IRQ is now the chan structure, not the tty.
    This is because the interrupt arrives on a descriptor associated with the
    channel. This caused equivalent changes in the arguments to line_timer_cb.
    line_disable is gone since it is not used any more.

    The count field in the line structure is gone. tty->count is used instead.

    The complicated logic in sigio_handler with freeing IRQs when necessary and
    making sure its idea of the next irq is correct is now much simpler. The irq
    list can't be rearranged underneath it, so it is now a simple list walk.

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

    Jeff Dike
     
  • This patch changes when console devices are configured in order to prepare the
    ground for the next patch.

    parse_chan_pair is now done earlier, when initcalls are run, rather than when
    the device is opened.

    When a host device disappears, the channel list is closed, but not freed.
    This is required by the previous change. line_config now takes the options
    structure as an argument, and line_open doesn't.

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

    Jeff Dike
     
  • line_setup is changed to return the device which it set up, rather than just
    success or failure. This will be important in the line-config patch.

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

    Jeff Dike
     
  • Some structure fields were being dynamically initialized when they could be
    initialized at compile-time instead. This also makes some declarations static
    (in the C sense).

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

    Jeff Dike
     
  • A bit of restructuring which eliminates the all_allowed argument (which is
    mconsole-specific) to line_setup. That logic is moved to the mconsole
    callback.

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

    Jeff Dike
     
  • This removes a structure field which turned out to be pointless, and
    references to it.

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

    Jeff Dike
     
  • This patch replaces instances of "sizeof(foo)/sizeof(foo[0])" with
    ARRAY_SIZE(foo), which expands to the same thing.

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

    Jeff Dike
     
  • This patch makes a bunch of non-functional changes -
    return(foo); becomes return foo;
    some statements are broken across lines for readability
    some trailing whitespace is cleaned up
    open_one_chan took four arguments, three of which could be
    deduced from the first. Accordingly, they were eliminated.
    some examples of "} else {" had a newline added
    some whitespace cleanup in the indentation
    lines_init got some control flow cleanup
    some long lines were broken
    removed another emacs-specific C formatting comment

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

    Jeff Dike
     
  • There are a few functions which are declared to return something, but don't.
    These are actually infinite loops which are forced to be declared as non-void.
    This makes them all return 0.

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

    Jeff Dike
     
  • There were a bunch of calls to uml_strdup dating from before kstrdup was
    introduced. This changes those calls. It doesn't eliminate the definition
    since there is still a couple of calls in userspace code (which should
    probably call the libc strdup).

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

    Jeff Dike
     

30 Dec, 2005

3 commits

  • Fix UML compilation when SKAS mode is disabled. Indeed, we were compiling
    SKAS-only object files, which failed due to some SKAS-only headers being
    excluded from the search path.

    Thanks to the bug report from Pekka J Enberg.

    Acked-by: Pekka J Enberg
    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Today, when compiling UML, I got warnings for two used unexported symbols:
    readdir64 and truncate64. Indeed, my glibc headers are aliasing readdir to
    readdir64 and truncate to truncate64 (and so on).

    I'm then adding additional exports. Since I've no idea if the symbols where
    always provided in the supported glibc's, I've added weak definitions too.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • Don't use printk() where "current_thread_info()" is crap.

    Until when we switch to running on init_stack, current_thread_info() evaluates
    to crap. Printk uses "current" at times (in detail, ¤t is evaluated with
    CONFIG_DEBUG_SPINLOCK to check the spinlock owner task).

    And this leads to random segmentation faults.

    Exactly, what happens is that ¤t = *(current_thread_info()), i.e. round
    down $esp and dereference the value. I.e. access the stack below $esp, which
    causes SIGSEGV on a VM_GROWSDOWN vma (see arch/i386/mm/fault.c).

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     

19 Dec, 2005

4 commits

  • With Paolo 'Blaisorblade' Giarrusso

    UML skas0 stub has been miscompiling for many people (incidentally not
    the authors), depending on the used GCC versions.

    I think (and testing on some GCC versions shows) this patch avoids the
    fundamental issue which is behind this, namely gcc using the stack when
    we have just replaced it, behind gcc's back. The remapping and storage
    of the return value is hidden in a blob of asm, hopefully giving gcc no
    room for creativity.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • So you may have seen the miniconfig stuff wander by, which means that my
    build script exits if there's a .config error, and we have this:

    fs/Kconfig:1749:warning: 'select' used by config symbol 'CIFS_UPCALL'
    refer to undefined symbol 'CONNECTOR'

    This makes it shut up.

    Signed-off-by: Rob Landley
    [ Verified it makes sense. ]
    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • With Paolo 'Blaisorblade' Giarrusso

    The current UML build assumes that on x86-64 systems, /lib is a symlink
    to /lib64, but in some distributions (like PLD and CentOS) they are
    separate directories, so the 64 bit library loader isn't found. This
    patch inserts /lib64 at the start of the rpath on x86-64 UML builds.

    Signed-off-by: Rob Landley
    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Rob Landley
     
  • Duplicated code - the patch adding it was probably applied twice without
    enough care.

    Signed-off-by: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     

13 Dec, 2005

1 commit

  • arch/um/kernel/tt/uaccess.c: In function `copy_from_user_tt':
    arch/um/kernel/tt/uaccess.c:11: error: `FIXADDR_USER_START' undeclared (first use in this function)
    arch/um/kernel/tt/uaccess.c:11: error: (Each undeclared identifier is reported only once
    arch/um/kernel/tt/uaccess.c:11: error: for each function it appears in.)

    I get the compile error when I disable CONFIG_MODE_SKAS.

    Signed-off-by: Pekka Enberg
    Acked-by: Paolo Giarrusso
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pekka J Enberg
     

23 Nov, 2005

2 commits

  • On some systems, libc PAGE_SIZE calls getpagesize, which can't happen from a
    stub. So, I use UM_KERN_PAGE_SIZE, which is less variable in its definition,
    instead.

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

    Jeff Dike
     
  • This patch makes stub_segv use the stub_syscall macros. This was needed
    anyway, but the bug that prompted this was the discovery that gcc was storing
    stuff in RCX, which is trashed across a system call. This is exactly the sort
    of problem that the new macros fix.

    There is a stub_syscall0 for getpid. stub_segv was changed to be a libc file,
    and that caused some include changes.

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

    Jeff Dike