23 Apr, 2010

1 commit


21 Apr, 2010

1 commit

  • We can't pull in linux/sched.h due to circular dependency, so just
    forward-declare the struct.

    This fixes the following warning:

    CC arch/um/sys-i386/elfcore.o
    In file included from /data/linux-2.6/include/linux/elf.h:8,
    from /data/linux-2.6/arch/um/sys-i386/elfcore.c:2:
    arch/um/sys-i386/asm/elf.h:78: warning: ‘struct task_struct’ declared inside parameter list
    arch/um/sys-i386/asm/elf.h:78: warning: its scope is only this definition or declaration, which is probably not what you want

    I guess not many people build against i386 hosts anymore, so this
    remained widely unnoticed.

    Signed-off-by: Jan Kiszka
    Signed-off-by: Jiri Kosina

    Jan Kiszka
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

13 Mar, 2010

3 commits

  • Add a generic implementation of the ipc demultiplexer syscall. Except for
    s390 and sparc64 all implementations of the sys_ipc are nearly identical.

    There are slight differences in the types of the parameters, where mips
    and powerpc as the only 64-bit architectures with sys_ipc use unsigned
    long for the "third" argument as it gets casted to a pointer later, while
    it traditionally is an "int" like most other paramters. frv goes even
    further and uses unsigned long for all parameters execept for "ptr" which
    is a pointer type everywhere. The change from int to unsigned long for
    "third" and back to "int" for the others on frv should be fine due to the
    in-register calling conventions for syscalls (we already had a similar
    issue with the generic sys_ptrace), but I'd prefer to have the arch
    maintainers looks over this in details.

    Except for that h8300, m68k and m68knommu lack an impplementation of the
    semtimedop sub call which this patch adds, and various architectures have
    gets used - at least on i386 it seems superflous as the compat code on
    x86-64 and ia64 doesn't even bother to implement it.

    [akpm@linux-foundation.org: add sys_ipc to sys_ni.c]
    Signed-off-by: Christoph Hellwig
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mundt
    Cc: Jeff Dike
    Cc: Hirokazu Takata
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Reviewed-by: H. Peter Anvin
    Cc: Al Viro
    Cc: Arnd Bergmann
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: "Luck, Tony"
    Cc: James Morris
    Cc: Andreas Schwab
    Acked-by: Jesper Nilsson
    Acked-by: Russell King
    Acked-by: David Howells
    Acked-by: Kyle McMartin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Add a generic implementation of the old mmap() syscall, which expects its
    argument in a memory block and switch all architectures over to use it.

    Signed-off-by: Christoph Hellwig
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mundt
    Cc: Jeff Dike
    Cc: Hirokazu Takata
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Reviewed-by: H. Peter Anvin
    Cc: Al Viro
    Cc: Arnd Bergmann
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: "Luck, Tony"
    Cc: James Morris
    Cc: Andreas Schwab
    Acked-by: Jesper Nilsson
    Acked-by: Russell King
    Acked-by: Greg Ungerer
    Acked-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Add a generic implementation of the old select() syscall, which expects
    its argument in a memory block and switch all architectures over to use
    it.

    Signed-off-by: Christoph Hellwig
    Cc: Ralf Baechle
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mundt
    Cc: Jeff Dike
    Cc: Hirokazu Takata
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Reviewed-by: H. Peter Anvin
    Cc: Al Viro
    Cc: Arnd Bergmann
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: "Luck, Tony"
    Cc: James Morris
    Acked-by: Andreas Schwab
    Acked-by: Russell King
    Acked-by: Greg Ungerer
    Acked-by: David Howells
    Cc: Andreas Schwab
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     

07 Mar, 2010

2 commits

  • The current ELF dumper implementation can produce broken corefiles if
    program headers exceed 65535. This number is determined by the number of
    vmas which the process have. In particular, some extreme programs may use
    more than 65535 vmas. (If you google max_map_count, you can find some
    users facing this problem.) This kind of program never be able to generate
    correct coredumps.

    This patch implements ``extended numbering'' that uses sh_info field of
    the first section header instead of e_phnum field in order to represent
    upto 4294967295 vmas.

    This is supported by
    AMD64-ABI(http://www.x86-64.org/documentation.html) and
    Solaris(http://docs.sun.com/app/docs/doc/817-1984/).
    Of course, we are preparing patches for gdb and binutils.

    Signed-off-by: Daisuke HATAYAMA
    Cc: "Luck, Tony"
    Cc: Jeff Dike
    Cc: David Howells
    Cc: Greg Ungerer
    Cc: Roland McGrath
    Cc: Oleg Nesterov
    Cc: Ingo Molnar
    Cc: Alexander Viro
    Cc: Andi Kleen
    Cc: Alan Cox
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daisuke HATAYAMA
     
  • elf_core_dump() and elf_fdpic_core_dump() use #ifdef and the corresponding
    macro for hiding _multiline_ logics in functions. This patch removes
    #ifdef and replaces ELF_CORE_EXTRA_* by corresponding functions. For
    architectures not implemeonting ELF_CORE_EXTRA_*, we use weak functions in
    order to reduce a range of modification.

    This cleanup is for my next patches, but I think this cleanup itself is
    worth doing regardless of my firnal purpose.

    Signed-off-by: Daisuke HATAYAMA
    Cc: "Luck, Tony"
    Cc: Jeff Dike
    Cc: David Howells
    Cc: Greg Ungerer
    Cc: Roland McGrath
    Cc: Oleg Nesterov
    Cc: Ingo Molnar
    Cc: Alexander Viro
    Cc: Andi Kleen
    Cc: Alan Cox
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daisuke HATAYAMA
     

16 Dec, 2009

1 commit

  • Currently all architectures but microblaze unconditionally define
    USE_ELF_CORE_DUMP. The microblaze omission seems like an error to me, so
    let's kill this ifdef and make sure we are the same everywhere.

    Signed-off-by: Christoph Hellwig
    Acked-by: Hugh Dickins
    Cc:
    Cc: Michal Simek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     

11 Dec, 2009

1 commit


17 Jun, 2009

1 commit

  • When compiling uml on x86_64:

    MODPOST vmlinux.o
    WARNING: vmlinux.o (.__syscall_stub.2): unexpected non-allocatable section.
    Did you forget to use "ax"/"aw" in a .S file?
    Note that for example contains
    section definitions for use in .S files.

    Because modpost checks for missing SHF_ALLOC section flag. So just add
    it.

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

    Amerigo Wang
     

12 Jun, 2009

1 commit


03 Apr, 2009

1 commit

  • Fix the following link error:

    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x11c): undefined reference to `ptregs_fork'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x140): undefined reference to `ptregs_execve'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x2cc): undefined reference to `ptregs_iopl'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x2d8): undefined reference to `ptregs_vm86old'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x2f0): undefined reference to `ptregs_sigreturn'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x2f4): undefined reference to `ptregs_clone'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x3ac): undefined reference to `ptregs_vm86'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x3c8): undefined reference to `ptregs_rt_sigreturn'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x3fc): undefined reference to `ptregs_sigaltstack'
    arch/um/sys-i386/built-in.o: In function `sys_call_table':
    (.rodata+0x40c): undefined reference to `ptregs_vfork'

    This was introduced by commit 253f29a4, "x86: pass in pt_regs pointer
    for syscalls that need it"

    Signed-off-by: Miklos Szeredi
    Cc: Brian Gerst
    Cc: Tejun Heo
    Cc: Ingo Molnar
    Cc: Jeff Dike
    Reviewed-by: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     

01 Apr, 2009

1 commit


23 Oct, 2008

4 commits


20 Oct, 2008

1 commit

  • Fix

    arch/um/sys-i386/signal.c: In function 'copy_sc_from_user':
    arch/um/sys-i386/signal.c:182: warning: dereferencing 'void *' pointer
    arch/um/sys-i386/signal.c:182: error: request for member '_fxsr_env' in something not a structure or union

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

    WANG Cong
     

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

1 commit

  • Tidy the ptrace interface code. Removed a bunch of unused macros.
    Started converting register sets from arrays of longs to structures.

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

    Jeff Dike
     

27 Apr, 2008

1 commit


17 Apr, 2008

1 commit

  • Semaphores are no longer performance-critical, so a generic C
    implementation is better for maintainability, debuggability and
    extensibility. Thanks to Peter Zijlstra for fixing the lockdep
    warning. Thanks to Harvey Harrison for pointing out that the
    unlikely() was unnecessary.

    Signed-off-by: Matthew Wilcox
    Acked-by: Ingo Molnar

    Matthew Wilcox
     

24 Feb, 2008

1 commit

  • The macros which extract registers from a struct sigcontext are no longer
    needed and can be removed. They are starting not to build anyway, given the
    removal of the 'e' and 'r' from register names during the x86 merge.

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

    Jeff Dike
     

06 Feb, 2008

15 commits

  • Redo the calculation of NR_syscalls since that disappeared from i386 and
    use a similar mechanism on x86_64.

    We now figure out the size of the system call table in arch code and stick
    that in syscall_table_size. arch/um/kernel/skas/syscall.c defines
    NR_syscalls in terms of that since its the only thing that needs to know
    how many system calls there are.

    The old mechananism that was used on x86_64 is gone.

    arch/um/include/sysdep-i386/syscalls.h got some formatting since I was
    looking at it.

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

    Jeff Dike
     
  • The ldt.semaphore conforms to the new struct mutex requirments, so I converted
    it to use the new API and changed the name.

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

    Daniel Walker
     
  • Style fixes in arch/um/sys-x86_64:
    updated copyrights
    CodingStyle fixes
    added severities to printks which needed them

    A bunch of functions in sys-*/ptrace_user.c turn out to be unused, so they and
    their declarations are gone.

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

    Jeff Dike
     
  • Simplify the page fault stub by not masking signals while it is running. This
    allows it to signal that it is done by executing an instruction which will
    generate a SIGTRAP (int3 on x86) rather than running sigreturn by hand after
    queueing a blocked SIGUSR1.

    userspace_tramp now no longer puts anything in the SIGSEGV sa_mask, but it
    does add SA_NODEFER to sa_flags so that SIGSEGV is still enabled after the
    signal handler fails to run sigreturn.

    SIGWINCH is just blocked so that we don't have to deal with it and the signal
    masks used by wait_stub_done are updated to reflect the smaller number of
    signals that it has to worry about.

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

    Jeff Dike
     
  • Tidy current-related stuff. There was a comment in current.h saying
    that current_thread was obsolete, so this patch turns all instances of
    current_thread into current_thread_info(). There's some simplifying
    of the result in arch/um/sys-i386/signal.c.

    current.h and thread_info also get style cleanups.

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

    Jeff Dike
     
  • Untangle UML headers somewhat and add some includes where they were
    needed explicitly, but gotten accidentally via some other header.

    arch/um/include/um_uaccess.h loses asm/fixmap.h because it uses no
    fixmap stuff and gains elf.h, because it needs FIXADDR_USER_*, and
    archsetjmp.h, because it needs jmp_buf.

    pmd_alloc_one is uninlined because it needs mm_struct, and that's
    inconvenient to provide in asm-um/pgtable-3level.h.

    elf_core_copy_fpregs is also uninlined from elf-i386.h and
    elf-x86_64.h, which duplicated the code anyway, to
    arch/um/kernel/process.c, so that the reference to current_thread
    doesn't pull sched.h or anything related into asm/elf.h.

    arch/um/sys-i386/ldt.c, arch/um/kernel/tlb.c and
    arch/um/kernel/skas/uaccess.c got sched.h because they dereference
    task_structs. Its includes of linux and asm headers got turned from
    "" to <>.

    arch/um/sys-i386/bug.c gets asm/errno.h because it needs errno
    constants.

    asm/elf-i386 gets asm/user.h because it needs user_regs_struct.

    asm/fixmap.h gets page.h because it needs PAGE_SIZE and PAGE_MASK and
    system.h for BUG_ON.

    asm/pgtable doesn't need sched.h.

    asm/processor-generic.h defined mm_segment_t, but didn't use it. So,
    that definition is moved to uaccess.h, which defines a bunch of
    mm_segment_t-related stuff. thread_info.h uses mm_segment_t, and
    includes uaccess.h, which causes a recursion. So, the definition is
    placed above the include of thread_info. in uaccess.h. thread_info.h
    also gets page.h because it needs PAGE_SIZE.

    ObCheckpatchViolationJustification - I'm not adding a typedef; I'm
    moving mm_segment_t from one place to another.

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

    Jeff Dike
     
  • Add some diagnostics when TLS operations on the host fail. Also spit out more
    information about the TLS environment on the host at boot time.

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

    Jeff Dike
     
  • This patch removes a variable which was not used in two functions. Yet
    another code cleanup, nothing really significant.

    Please note that I could not test this on x86_64. I don't have the
    hardware for it.

    [ jdike - Bits of tidying around the affected code. Also, it's fine on
    x86_64 ]

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

    Karol Swietlicki
     
  • Tidy kern_util.h. It turns out that most of the function declarations
    aren't used, so they can go away. os.h no longer includes
    kern_util.h, so files which got it through os.h now need to include it
    directly. A number of other files never needed it, so these includes
    are deleted.

    The structure which was used to pass signal handlers from the kernel
    side to the userspace side is gone. Instead, the handlers are
    declared here, and used directly from libc code. This allows
    arch/um/os-Linux/trap.c to be deleted, with its remnants being moved
    to arch/um/os-Linux/skas/trap.c.

    arch/um/os-Linux/tty.c had its inclusions changed, and it needed some
    style attention, so it got tidied.

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

    Jeff Dike
     
  • Suggested by Geert Uytterhoeven - use const.h to get constants that are usable
    in both C and assembly. I can't include it directly since this code can't
    include kernel headers. const.h is also for numeric constants that can be
    typed by tacking a "UL" or similar on the end. The constants here have to be
    typed by casting them.

    So, the relevant parts of const.h are copied here and modified in order to
    allow the constants to be uncasted in assembly and casted in C.

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

    Jeff Dike
     
  • bugs.c, for both i386 and x86_64, can undergo further cleaning -
    The i386 arch_check_bugs only does one thing, so we might as
    well inline the cmov checking.
    The i386 includes can be trimmed down a bit.
    arch_init_thread wasn't used, so it is deleted.
    The panics in arch_handle_signal are turned into printks
    because the process is about to get segfaulted anyway, so something is
    dying no matter what happens here. Also, the return value was always
    the same, so it contained no information, so it can be void instead.
    The name is changed to arch_examine_signal because it doesn't handle
    anything.
    The caller of arch_handle_signal, relay_signal, does things in
    a different order. The kernel-mode signal check is now first, which
    puts everything else together, making things a bit clearer conceptually.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This patch finishes what the previous one started. The code was not used
    after my first patch, and now can be removed with ease.

    [ jdike - also deleted the #if 0 lcall stuff ]

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

    Karol Swietlicki
     
  • This patch introduces a new way of checking for the cmov instruction. I use
    signal handling instead of reading /proc/cpuinfo.

    [ jdike - Fiddled the asm to make it obvious that it didn't mess with
    any in-use registers and made test_for_host_cmov void ]

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Karol Swietlicki
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Karol Swietlicki
     
  • Get rid of asmlinkage and remove some old cruft from asm/linkage.h.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • This patch removes some code which ran at every boot, but does not seem to do
    anything anymore. Please test. It works for me but mistakes can happen.

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

    Karol Swietlicki
     

30 Jan, 2008

1 commit

  • git-x86, in commit 70aa1bd3839e3ec74ce65316528a82570e8de666, changed
    a lot of the sigcontext field names. This patch changes UML usage to
    match.

    I also changed includes of generic headers from "" to <>.

    Signed-off-by: Jeff Dike
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Jeff Dike