09 Dec, 2006

1 commit

  • The BUG changes in -mm3 need some arch support. This patch adds the UML
    support needed. For the most part, it was stolen from the underlying
    architecture. The exception is the kernel eip < PAGE_OFFSET test, which is
    wrong for skas mode UMLs.

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

    Jeff Dike
     

08 Dec, 2006

2 commits

  • Pass struct dev pointer to dma_cache_sync()

    dma_cache_sync() is ill-designed in that it does not have a struct device
    pointer argument which makes proper support for systems that consist of a
    mix of coherent and non-coherent DMA devices hard. Change dma_cache_sync
    to take a struct device pointer as first argument and fix all its callers
    to pass it.

    Signed-off-by: Ralf Baechle
    Cc: James Bottomley
    Cc: "David S. Miller"
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     
  • dma_is_consistent() is ill-designed in that it does not have a struct
    device pointer argument which makes proper support for systems that consist
    of a mix of coherent and non-coherent DMA devices hard. Change
    dma_is_consistent to take a struct device pointer as first argument and fix
    the sole caller to pass it.

    Signed-off-by: Ralf Baechle
    Cc: James Bottomley
    Cc: "David S. Miller"
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ralf Baechle
     

02 Dec, 2006

1 commit

  • Add arch specific dev_archdata to struct device

    Adds an arch specific struct dev_arch to struct device. This enables
    architecture to add specific fields to every device in the system, like
    DMA operation pointers, NUMA node ID, firmware specific data, etc...

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Andi Kleen
    Acked-By: David Howells
    Signed-off-by: Greg Kroah-Hartman

    Benjamin Herrenschmidt
     

01 Nov, 2006

1 commit


21 Oct, 2006

1 commit


06 Oct, 2006

1 commit

  • Fixup broken UML build due to 7d12e780e003f93433d49ce78cfedf4b4c52adc5
    "IRQ: Maintain regs pointer globally rather than passing to IRQ handlers".

    Cc: David Howells
    Cc: Jeff Dike
    Cc: Paolo "Blaisorblade" Giarrusso
    Signed-off-by: Pekka Enberg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pekka Enberg
     

02 Oct, 2006

1 commit

  • Some architectures provide an execve function that does not set errno, but
    instead returns the result code directly. Rename these to kernel_execve to
    get the right semantics there. Moreover, there is no reasone for any of these
    architectures to still provide __KERNEL_SYSCALLS__ or _syscallN macros, so
    remove these right away.

    [akpm@osdl.org: build fix]
    [bunk@stusta.de: build fix]
    Signed-off-by: Arnd Bergmann
    Cc: Andi Kleen
    Acked-by: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Russell King
    Cc: Ian Molton
    Cc: Mikael Starvik
    Cc: David Howells
    Cc: Yoshinori Sato
    Cc: Hirokazu Takata
    Cc: Ralf Baechle
    Cc: Kyle McMartin
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: Paul Mundt
    Cc: Kazumoto Kojima
    Cc: Richard Curnow
    Cc: William Lee Irwin III
    Cc: "David S. Miller"
    Cc: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Cc: Miles Bader
    Cc: Chris Zankel
    Cc: "Luck, Tony"
    Cc: Geert Uytterhoeven
    Cc: Roman Zippel
    Signed-off-by: Adrian Bunk
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     

30 Sep, 2006

1 commit

  • Andi is making pte_mkexec go away, and UML had one of the last uses.

    This removes the use and the definition.

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

    Jeff Dike
     

27 Sep, 2006

3 commits

  • fork on UML has always somewhat subtle. The underlying cause has been the
    need to initialize a stack for the new process. The only portable way to
    initialize a new stack is to set it as the alternate signal stack and take a
    signal. The signal handler does whatever initialization is needed and jumps
    back to the original stack, where the fork processing is finished. The basic
    context switching mechanism is a jmp_buf for each process. You switch to a
    new process by longjmping to its jmp_buf.

    Now that UML has its own implementation of setjmp and longjmp, and I can poke
    around inside a jmp_buf without fear that libc will change the structure, a
    much simpler mechanism is possible. The jmpbuf can simply be initialized by
    hand.

    This eliminates -
    the need to set up and remove the alternate signal stack
    sending and handling a signal
    the signal blocking needed around the stack switching, since
    there is no stack switching
    setting up the jmp_buf needed to jump back to the original
    stack after the new one is set up

    In addition, since jmp_buf is now defined by UML, and not by libc, it can be
    embedded in the thread struct. This makes it unnecessary to have it exist on
    the stack, where it used to be. It also simplifies interfaces, since the
    switch jmp_buf used to be a void * inside the thread struct, and functions
    which took it as an argument needed to define a jmp_buf variable and assign it
    from the void *.

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

    Jeff Dike
     
  • The UML/x86_64 headers were missing ptrace support for some segment registers.
    The underlying problem was that the x86_64 kernel uses user_regs_struct
    rather than the ptrace register definitions in ptrace. This patch switches
    UML/x86_64 to using user_regs_struct for its definitions of the host's
    registers.

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

    Jeff Dike
     
  • * 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (225 commits)
    [PATCH] Don't set calgary iommu as default y
    [PATCH] i386/x86-64: New Intel feature flags
    [PATCH] x86: Add a cumulative thermal throttle event counter.
    [PATCH] i386: Make the jiffies compares use the 64bit safe macros.
    [PATCH] x86: Refactor thermal throttle processing
    [PATCH] Add 64bit jiffies compares (for use with get_jiffies_64)
    [PATCH] Fix unwinder warning in traps.c
    [PATCH] x86: Allow disabling early pci scans with pci=noearly or disallowing conf1
    [PATCH] x86: Move direct PCI scanning functions out of line
    [PATCH] i386/x86-64: Make all early PCI scans dependent on CONFIG_PCI
    [PATCH] Don't leak NT bit into next task
    [PATCH] i386/x86-64: Work around gcc bug with noreturn functions in unwinder
    [PATCH] Fix some broken white space in ia32_signal.c
    [PATCH] Initialize argument registers for 32bit signal handlers.
    [PATCH] Remove all traces of signal number conversion
    [PATCH] Don't synchronize time reading on single core AMD systems
    [PATCH] Remove outdated comment in x86-64 mmconfig code
    [PATCH] Use string instructions for Core2 copy/clear
    [PATCH] x86: - restore i8259A eoi status on resume
    [PATCH] i386: Split multi-line printk in oops output.
    ...

    Linus Torvalds
     

26 Sep, 2006

4 commits

  • Include the host architecture's ptrace-abi.h instead of ptrace.h.

    There was some cpp mangling of names around the ptrace.h include to avoid
    symbol clashes between UML and the host architecture. Most of these can go
    away. The exception is struct pt_regs, which is convenient to have in
    userspace, but must be renamed in order that UML can define its own.

    ptrace-x86_64.h needed to have some now-obsolete cpp cruft and a declaration
    removed.

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

    Jeff Dike
     
  • The KSTK_* macros used an inordinate amount of stack. In order to overcome
    an impedance mismatch between their interface, which just returns a single
    register value, and the interface of get_thread_regs, which took a full
    pt_regs, the implementation created an on-stack pt_regs, filled it in, and
    returned one field. do_task_stat calls KSTK_* twice, resulting in two
    local pt_regs, blowing out the stack.

    This patch changes the interface (and name) of get_thread_regs to just
    return a single register from a jmp_buf.

    The include of archsetjmp.h" in registers.h to get the definition of
    jmp_buf exposed a bogus include of in start_up.c.
    shouldn't be used anywhere any more since UML uses the klibc
    setjmp/longjmp.

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

    Jeff Dike
     
  • One of the changes necessary for shared page tables is to standardize the
    pxx_page macros. pte_page and pmd_page have always returned the struct
    page associated with their entry, while pte_page_kernel and pmd_page_kernel
    have returned the kernel virtual address. pud_page and pgd_page, on the
    other hand, return the kernel virtual address.

    Shared page tables needs pud_page and pgd_page to return the actual page
    structures. There are very few actual users of these functions, so it is
    simple to standardize their usage.

    Since this is basic cleanup, I am submitting these changes as a standalone
    patch. Per Hugh Dickins' comments about it, I am also changing the
    pxx_page_kernel macros to pxx_page_vaddr to clarify their meaning.

    Signed-off-by: Dave McCracken
    Cc: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave McCracken
     
  • - Move them to a pure assembly file. Previously they were in
    a C file that only consisted of inline assembly. Doing it in pure
    assembler is much nicer.
    - Add a frame.i include with FRAME/ENDFRAME macros to easily
    add frame pointers to assembly functions
    - Add dwarf2 annotation to them so that the new dwarf2 unwinder
    doesn't get stuck on them
    - Random cleanups

    Includes feedback from Jan Beulich and a UML build fix from Andrew
    Morton.

    Cc: jbeulich@novell.com
    Cc: jdike@addtoit.com
    Signed-off-by: Andi Kleen

    Andi Kleen
     

21 Sep, 2006

1 commit


05 Jul, 2006

1 commit

  • * git://git.infradead.org/hdrinstall-2.6:
    Remove export of include/linux/isdn/tpam.h
    Remove and from userspace export
    Restrict headers exported to userspace for SPARC and SPARC64
    Add empty Kbuild files for 'make headers_install' in remaining arches.
    Add Kbuild file for Alpha 'make headers_install'
    Add Kbuild file for SPARC 'make headers_install'
    Add Kbuild file for IA64 'make headers_install'
    Add Kbuild file for S390 'make headers_install'
    Add Kbuild file for i386 'make headers_install'
    Add Kbuild file for x86_64 'make headers_install'
    Add Kbuild file for PowerPC 'make headers_install'
    Add generic Kbuild files for 'make headers_install'
    Basic implementation of 'make headers_check'
    Basic implementation of 'make headers_install'

    Linus Torvalds
     

02 Jul, 2006

1 commit

  • Make __copy_*_user_inatomic really atomic to avoid "Sleeping function called in
    atomic context" warnings, especially from futex code.

    This is made by adding another kmap_atomic slot and making copy_*_user_skas
    use kmap_atomic; also copy_*_user() becomes atomic, but that's true and is not
    a problem for i386 (and we can always add might_sleep there as done
    elsewhere). For TT mode kmap is not used, so there's no need for this.

    I've had to use another slot since both KM_USER0 and KM_USER1 are used
    elsewhere and could cause conflicts. Till now we reused the kmap_atomic slot
    list from the subarch, but that's not needed as that list must contain the
    common ones (used by generic code) + the ones used in architecture specific
    code (and Uml till now used none); so I've taken the i386 one after comparing
    it with ones from other archs, and added KM_UML_USERCOPY.

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

    Paolo 'Blaisorblade' Giarrusso
     

01 Jul, 2006

1 commit


30 Jun, 2006

1 commit


21 Jun, 2006

1 commit

  • * git://git.infradead.org/hdrcleanup-2.6: (63 commits)
    [S390] __FD_foo definitions.
    Switch to __s32 types in joystick.h instead of C99 types for consistency.
    Add to headers included for userspace in
    Move inclusion of out of user scope in asm-x86_64/mtrr.h
    Remove struct fddi_statistics from user view in
    Move user-visible parts of drivers/s390/crypto/z90crypt.h to include/asm-s390
    Revert include/media changes: Mauro says those ioctls are only used in-kernel(!)
    Include and use __uXX types in
    Use __uXX types in , include too
    Remove private struct dx_hash_info from public view in
    Include and use __uXX types in
    Use __uXX types in for struct divert_blk et al.
    Use __u32 for elf_addr_t in , not u32. It's user-visible.
    Remove PPP_FCS from user view in , remove __P mess entirely
    Use __uXX types in user-visible structures in
    Don't use 'u32' in user-visible struct ip_conntrack_old_tuple.
    Use __uXX types for S390 DASD volume label definitions which are user-visible
    S390 BIODASDREADCMB ioctl should use __u64 not u64 type.
    Remove unneeded inclusion of from
    Fix private integer types used in V4L2 ioctls.
    ...

    Manually resolve conflict in include/linux/mtd/physmap.h

    Linus Torvalds
     

18 Jun, 2006

1 commit


06 Jun, 2006

2 commits

  • From: Al Viro

    uml __user annotations

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

    Al Viro
     
  • From: Jeff Dike

    Add an empty asm/irqflags.h, which seems to satisfy the lock validator enough
    that UML builds.

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

    Jeff Dike
     

26 Apr, 2006

1 commit


11 Apr, 2006

1 commit


01 Apr, 2006

4 commits

  • 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: Paolo 'Blaisorblade' Giarrusso
    Acked-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • 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: Paolo 'Blaisorblade' Giarrusso
    Acked-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • 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: Paolo 'Blaisorblade' Giarrusso
    Acked-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paolo 'Blaisorblade' Giarrusso
     
  • misc sparse annotations

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

    Al Viro
     

28 Mar, 2006

2 commits

  • UML can use generic funcs.

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

    KAMEZAWA Hiroyuki
     
  • Fix a gcc warning about losing qualifiers to the first argument of
    copy_from_user. The typeof change for correctness, and fixes a lot of the
    warnings, but there are some cases where x has some extra qualifiers, like
    volatile, which copy_from_user can't know about. For these, the void * cast
    seems to be necessary.

    Also cleaned up some of the whitespace and got rid of the emacs comment at the
    bottom.

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

    Jeff Dike
     

23 Mar, 2006

1 commit

  • Implement SMP alternatives, i.e. switching at runtime between different
    code versions for UP and SMP. The code can patch both SMP->UP and UP->SMP.
    The UP->SMP case is useful for CPU hotplug.

    With CONFIG_CPU_HOTPLUG enabled the code switches to UP at boot time and
    when the number of CPUs goes down to 1, and switches to SMP when the number
    of CPUs goes up to 2.

    Without CONFIG_CPU_HOTPLUG or on non-SMP-capable systems the code is
    patched once at boot time (if needed) and the tables are released
    afterwards.

    The changes in detail:

    * The current alternatives bits are moved to a separate file,
    the SMP alternatives code is added there.

    * The patch adds some new elf sections to the kernel:
    .smp_altinstructions
    like .altinstructions, also contains a list
    of alt_instr structs.
    .smp_altinstr_replacement
    like .altinstr_replacement, but also has some space to
    save original instruction before replaving it.
    .smp_locks
    list of pointers to lock prefixes which can be nop'ed
    out on UP.
    The first two are used to replace more complex instruction
    sequences such as spinlocks and semaphores. It would be possible
    to deal with the lock prefixes with that as well, but by handling
    them as special case the table sizes become much smaller.

    * The sections are page-aligned and padded up to page size, so they
    can be free if they are not needed.

    * Splitted the code to release init pages to a separate function and
    use it to release the elf sections if they are unused.

    Signed-off-by: Gerd Hoffmann
    Signed-off-by: Chuck Ebbert
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Gerd Hoffmann
     

02 Feb, 2006

3 commits


19 Jan, 2006

3 commits