01 May, 2013

33 commits

  • One of the problems that arise when converting dedicated custom threadpool
    to workqueue is that the shared worker pool used by workqueue anonimizes
    each worker making it more difficult to identify what the worker was doing
    on which target from the output of sysrq-t or debug dump from oops, BUG()
    and friends.

    For example, after writeback is converted to use workqueue instead of
    priviate thread pool, there's no easy to tell which backing device a
    writeback work item was working on at the time of task dump, which,
    according to our writeback brethren, is important in tracking down issues
    with a lot of mounted file systems on a lot of different devices.

    This patchset implements a way for a work function to mark its execution
    instance so that task dump of the worker task includes information to
    indicate what the work item was doing.

    An example WARN dump would look like the following.

    WARNING: at fs/fs-writeback.c:1015 bdi_writeback_workfn+0x2b4/0x3c0()
    Modules linked in:
    CPU: 0 Pid: 28 Comm: kworker/u18:0 Not tainted 3.9.0-rc1-work+ #24
    Hardware name: empty empty/S3992, BIOS 080011 10/26/2007
    Workqueue: writeback bdi_writeback_workfn (flush-8:16)
    ffffffff820a3a98 ffff88015b927cb8 ffffffff81c61855 ffff88015b927cf8
    ffffffff8108f500 0000000000000000 ffff88007a171948 ffff88007a1716b0
    ffff88015b49df00 ffff88015b8d3940 0000000000000000 ffff88015b927d08
    Call Trace:
    [] dump_stack+0x19/0x1b
    [] warn_slowpath_common+0x70/0xa0
    ...

    This patch:

    Implement probe_kthread_data() which returns kthread_data if accessible.
    The function is equivalent to kthread_data() except that the specified
    @task may not be a kthread or its vfork_done is already cleared rendering
    struct kthread inaccessible. In the former case, probe_kthread_data() may
    return any value. In the latter, NULL.

    This will be used to safely print debug information without affecting
    synchronization in the normal paths. Workqueue debug info printing on
    dump_stack() and friends will make use of it.

    Signed-off-by: Tejun Heo
    Cc: Oleg Nesterov
    Acked-by: Jan Kara
    Cc: Dave Chinner
    Cc: Ingo Molnar
    Cc: Jens Axboe
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • After the recent generic debug info on dump_stack() and friends, arc
    is printing duplicate information on debug dumps.

    [ARCLinux]$ ./crash
    crash/50: potentially unexpected fatal signal 11.
    Signed-off-by: Tejun Heo
    Cc: Bjorn Helgaas
    Cc: David S. Miller
    Cc: Fengguang Wu
    Cc: Heiko Carstens
    Cc: Jesper Nilsson
    Cc: Martin Schwidefsky
    Cc: Mike Frysinger
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vineet Gupta
     
  • show_regs() is inherently arch-dependent but it does make sense to print
    generic debug information and some archs already do albeit in slightly
    different forms. This patch introduces a generic function to print debug
    information from show_regs() so that different archs print out the same
    information and it's much easier to modify what's printed.

    show_regs_print_info() prints out the same debug info as dump_stack()
    does plus task and thread_info pointers.

    * Archs which didn't print debug info now do.

    alpha, arc, blackfin, c6x, cris, frv, h8300, hexagon, ia64, m32r,
    metag, microblaze, mn10300, openrisc, parisc, score, sh64, sparc,
    um, xtensa

    * Already prints debug info. Replaced with show_regs_print_info().
    The printed information is superset of what used to be there.

    arm, arm64, avr32, mips, powerpc, sh32, tile, unicore32, x86

    * s390 is special in that it used to print arch-specific information
    along with generic debug info. Heiko and Martin think that the
    arch-specific extra isn't worth keeping s390 specfic implementation.
    Converted to use the generic version.

    Note that now all archs print the debug info before actual register
    dumps.

    An example BUG() dump follows.

    kernel BUG at /work/os/work/kernel/workqueue.c:4841!
    invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #7
    Hardware name: empty empty/S3992, BIOS 080011 10/26/2007
    task: ffff88007c85e040 ti: ffff88007c860000 task.ti: ffff88007c860000
    RIP: 0010:[] [] init_workqueues+0x4/0x6
    RSP: 0000:ffff88007c861ec8 EFLAGS: 00010246
    RAX: ffff88007c861fd8 RBX: ffffffff824466a8 RCX: 0000000000000001
    RDX: 0000000000000046 RSI: 0000000000000001 RDI: ffffffff8234a07a
    RBP: ffff88007c861ec8 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff8234a07a
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    FS: 0000000000000000(0000) GS:ffff88007dc00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: ffff88015f7ff000 CR3: 00000000021f1000 CR4: 00000000000007f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Stack:
    ffff88007c861ef8 ffffffff81000312 ffffffff824466a8 ffff88007c85e650
    0000000000000003 0000000000000000 ffff88007c861f38 ffffffff82335e5d
    ffff88007c862080 ffffffff8223d8c0 ffff88007c862080 ffffffff81c47760
    Call Trace:
    [] do_one_initcall+0x122/0x170
    [] kernel_init_freeable+0x9b/0x1c8
    [] ? rest_init+0x140/0x140
    [] kernel_init+0xe/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] ? rest_init+0x140/0x140
    ...

    v2: Typo fix in x86-32.

    v3: CPU number dropped from show_regs_print_info() as
    dump_stack_print_info() has been updated to print it. s390
    specific implementation dropped as requested by s390 maintainers.

    Signed-off-by: Tejun Heo
    Acked-by: David S. Miller
    Acked-by: Jesper Nilsson
    Cc: Heiko Carstens
    Cc: Martin Schwidefsky
    Cc: Bjorn Helgaas
    Cc: Fengguang Wu
    Cc: Mike Frysinger
    Cc: Vineet Gupta
    Cc: Sam Ravnborg
    Acked-by: Chris Metcalf [tile bits]
    Acked-by: Richard Kuo [hexagon bits]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • x86 and ia64 can acquire extra hardware identification information
    from DMI and print it along with task dumps; however, the usage isn't
    consistent.

    * x86 show_regs() collects vendor, product and board strings and print
    them out with PID, comm and utsname. Some of the information is
    printed again later in the same dump.

    * warn_slowpath_common() explicitly accesses the DMI board and prints
    it out with "Hardware name:" label. This applies to both x86 and
    ia64 but is irrelevant on all other archs.

    * ia64 doesn't show DMI information on other non-WARN dumps.

    This patch introduces arch-specific hardware description used by
    dump_stack(). It can be set by calling dump_stack_set_arch_desc()
    during boot and, if exists, printed out in a separate line with
    "Hardware name:" label.

    dmi_set_dump_stack_arch_desc() is added which sets arch-specific
    description from DMI data. It uses dmi_ids_string[] which is set from
    dmi_present() used for DMI debug message. It is superset of the
    information x86 show_regs() is using. The function is called from x86
    and ia64 boot code right after dmi_scan_machine().

    This makes the explicit DMI handling in warn_slowpath_common()
    unnecessary. Removed.

    show_regs() isn't yet converted to use generic debug information
    printing and this patch doesn't remove the duplicate DMI handling in
    x86 show_regs(). The next patch will unify show_regs() handling and
    remove the duplication.

    An example WARN dump follows.

    WARNING: at kernel/workqueue.c:4841 init_workqueues+0x35/0x505()
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #3
    Hardware name: empty empty/S3992, BIOS 080011 10/26/2007
    0000000000000009 ffff88007c861e08 ffffffff81c614dc ffff88007c861e48
    ffffffff8108f500 ffffffff82228240 0000000000000040 ffffffff8234a08e
    0000000000000000 0000000000000000 0000000000000000 ffff88007c861e58
    Call Trace:
    [] dump_stack+0x19/0x1b
    [] warn_slowpath_common+0x70/0xa0
    [] warn_slowpath_null+0x1a/0x20
    [] init_workqueues+0x35/0x505
    ...

    v2: Use the same string as the debug message from dmi_present() which
    also contains BIOS information. Move hardware name into its own
    line as warn_slowpath_common() did. This change was suggested by
    Bjorn Helgaas.

    Signed-off-by: Tejun Heo
    Cc: Bjorn Helgaas
    Cc: David S. Miller
    Cc: Fengguang Wu
    Cc: Heiko Carstens
    Cc: Jesper Nilsson
    Cc: Martin Schwidefsky
    Cc: Mike Frysinger
    Cc: Vineet Gupta
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • We're goning to use DMI identification for other purposes too. Morph
    dmi_dump_ids() which is used to print DMI identification as a debug
    message during boot into dmi_format_ids() which formats the same
    information sans the leading "DMI:" tag into a string buffer.

    dmi_present() is updated to format the information into dmi_ids_string[]
    using the new function and print it with "DMI:" prefix.

    dmi_ids_string[] will be used for another purpose by a future patch.

    Signed-off-by: Tejun Heo
    Cc: Bjorn Helgaas
    Cc: David S. Miller
    Cc: Fengguang Wu
    Cc: Heiko Carstens
    Cc: Jesper Nilsson
    Cc: Martin Schwidefsky
    Cc: Mike Frysinger
    Cc: Vineet Gupta
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • Both dump_stack() and show_stack() are currently implemented by each
    architecture. show_stack(NULL, NULL) dumps the backtrace for the
    current task as does dump_stack(). On some archs, dump_stack() prints
    extra information - pid, utsname and so on - in addition to the
    backtrace while the two are identical on other archs.

    The usages in arch-independent code of the two functions indicate
    show_stack(NULL, NULL) should print out bare backtrace while
    dump_stack() is used for debugging purposes when something went wrong,
    so it does make sense to print additional information on the task which
    triggered dump_stack().

    There's no reason to require archs to implement two separate but mostly
    identical functions. It leads to unnecessary subtle information.

    This patch expands the dummy fallback dump_stack() implementation in
    lib/dump_stack.c such that it prints out debug information (taken from
    x86) and invokes show_stack(NULL, NULL) and drops arch-specific
    dump_stack() implementations in all archs except blackfin. Blackfin's
    dump_stack() does something wonky that I don't understand.

    Debug information can be printed separately by calling
    dump_stack_print_info() so that arch-specific dump_stack()
    implementation can still emit the same debug information. This is used
    in blackfin.

    This patch brings the following behavior changes.

    * On some archs, an extra level in backtrace for show_stack() could be
    printed. This is because the top frame was determined in
    dump_stack() on those archs while generic dump_stack() can't do that
    reliably. It can be compensated by inlining dump_stack() but not
    sure whether that'd be necessary.

    * Most archs didn't use to print debug info on dump_stack(). They do
    now.

    An example WARN dump follows.

    WARNING: at kernel/workqueue.c:4841 init_workqueues+0x35/0x505()
    Hardware name: empty
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #9
    0000000000000009 ffff88007c861e08 ffffffff81c614dc ffff88007c861e48
    ffffffff8108f50f ffffffff82228240 0000000000000040 ffffffff8234a03c
    0000000000000000 0000000000000000 0000000000000000 ffff88007c861e58
    Call Trace:
    [] dump_stack+0x19/0x1b
    [] warn_slowpath_common+0x7f/0xc0
    [] warn_slowpath_null+0x1a/0x20
    [] init_workqueues+0x35/0x505
    ...

    v2: CPU number added to the generic debug info as requested by s390
    folks and dropped the s390 specific dump_stack(). This loses %ksp
    from the debug message which the maintainers think isn't important
    enough to keep the s390-specific dump_stack() implementation.

    dump_stack_print_info() is moved to kernel/printk.c from
    lib/dump_stack.c. Because linkage is per objecct file,
    dump_stack_print_info() living in the same lib file as generic
    dump_stack() means that archs which implement custom dump_stack()
    - at this point, only blackfin - can't use dump_stack_print_info()
    as that will bring in the generic version of dump_stack() too. v1
    The v1 patch broke build on blackfin due to this issue. The build
    breakage was reported by Fengguang Wu.

    Signed-off-by: Tejun Heo
    Acked-by: David S. Miller
    Acked-by: Vineet Gupta
    Acked-by: Jesper Nilsson
    Acked-by: Vineet Gupta
    Acked-by: Martin Schwidefsky [s390 bits]
    Cc: Heiko Carstens
    Cc: Mike Frysinger
    Cc: Fengguang Wu
    Cc: Bjorn Helgaas
    Cc: Sam Ravnborg
    Acked-by: Richard Kuo [hexagon bits]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • show_stack(current or NULL, NULL) is used by arch-independent code to dump
    backtrace of the current task; however, sparc32 show_stack() doesn't
    implement it and wouldn't print any backtrace when NULL @_ksp is specfied.

    Make show_stack() acquire and use %fp if @tsk is NULL or current and @_ksp
    is NULL. This makes %fp fetching in dump_stack() unnecessary. Make it
    use NULL for @_ksp instead.

    Only compile tested.

    Signed-off-by: Tejun Heo
    Acked-by: David S. Miller
    Cc: Bjorn Helgaas
    Cc: Fengguang Wu
    Cc: Heiko Carstens
    Cc: Jesper Nilsson
    Cc: Martin Schwidefsky
    Cc: Mike Frysinger
    Cc: Vineet Gupta
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • There are multiple ways a task can be dumped - explicit call to
    dump_stack(), triggering WARN() or BUG(), through sysrq-t and so on.
    Most of what gets printed is upto each architecture and the current
    state is not particularly pretty. Different pieces of information are
    presented differently depending on which path the dump takes and which
    architecture it's running on. This is messy for no good reason and
    makes it exceedingly difficult to add or modify debug information to
    task dumps.

    In all archs except for s390, there's nothing arch-specific about the
    printed debug information. This patchset updates all those archs to use
    the same helpers to consistently print out the same debug information.

    An example WARN dump after this patchset.

    WARNING: at kernel/workqueue.c:4841 init_workqueues+0x35/0x505()
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #3
    Hardware name: empty empty/S3992, BIOS 080011 10/26/2007
    0000000000000009 ffff88007c861e08 ffffffff81c614dc ffff88007c861e48
    ffffffff8108f500 ffffffff82228240 0000000000000040 ffffffff8234a08e
    0000000000000000 0000000000000000 0000000000000000 ffff88007c861e58
    Call Trace:
    [] dump_stack+0x19/0x1b
    [] warn_slowpath_common+0x70/0xa0
    [] warn_slowpath_null+0x1a/0x20
    [] init_workqueues+0x35/0x505
    ...

    And BUG dump.

    kernel BUG at kernel/workqueue.c:4841!
    invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.9.0-rc1-work+ #7
    Hardware name: empty empty/S3992, BIOS 080011 10/26/2007
    task: ffff88007c85e040 ti: ffff88007c860000 task.ti: ffff88007c860000
    RIP: 0010:[] [] init_workqueues+0x4/0x6
    RSP: 0000:ffff88007c861ec8 EFLAGS: 00010246
    RAX: ffff88007c861fd8 RBX: ffffffff824466a8 RCX: 0000000000000001
    RDX: 0000000000000046 RSI: 0000000000000001 RDI: ffffffff8234a07a
    RBP: ffff88007c861ec8 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000001 R11: 0000000000000000 R12: ffffffff8234a07a
    R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    FS: 0000000000000000(0000) GS:ffff88007dc00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: ffff88015f7ff000 CR3: 00000000021f1000 CR4: 00000000000007f0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Stack:
    ffff88007c861ef8 ffffffff81000312 ffffffff824466a8 ffff88007c85e650
    0000000000000003 0000000000000000 ffff88007c861f38 ffffffff82335e5d
    ffff88007c862080 ffffffff8223d8c0 ffff88007c862080 ffffffff81c47760
    Call Trace:
    [] do_one_initcall+0x122/0x170
    [] kernel_init_freeable+0x9b/0x1c8
    [] ? rest_init+0x140/0x140
    [] kernel_init+0xe/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] ? rest_init+0x140/0x140
    ...

    This patchset contains the following seven patches.

    0001-x86-don-t-show-trace-beyond-show_stack-NULL-NULL.patch
    0002-sparc32-make-show_stack-acquire-fp-if-_ksp-is-not-sp.patch
    0003-dump_stack-consolidate-dump_stack-implementations-an.patch
    0004-dmi-morph-dmi_dump_ids-into-dmi_format_ids-which-for.patch
    0005-dump_stack-implement-arch-specific-hardware-descript.patch
    0006-dump_stack-unify-debug-information-printed-by-show_r.patch
    0007-arc-print-fatal-signals-reduce-duplicated-informatio.patch

    0001-0002 update stack dumping functions in x86 and sparc32 in
    preparation.

    0003 makes all arches except blackfin use generic dump_stack().
    blackfin still uses the generic helper to print the same info.

    0004-0005 properly abstract DMI identifier printing in WARN() and
    show_regs() so that all dumps print out the information. This enables
    show_regs() to use the same debug info message.

    0006 updates show_regs() of all arches to use a common generic helper
    to print debug info.

    0007 removes somem duplicate information from arc dumps.

    While this patchset changes how debug info is printed on some archs,
    the printed information is always superset of what used to be there.

    This patchset makes task dump debug messages consistent and enables
    adding more information. Workqueue is scheduled to add worker
    information including the workqueue in use and work item specific
    description.

    While this patch touches a lot of archs, it isn't too likely to cause
    non-trivial conflicts with arch-specfic changes and would probably be
    best to route together either through -mm.

    x86 is tested but other archs are either only compile tested or not
    tested at all. Changes to most archs are generally trivial.

    This patch:

    show_stack(current or NULL, NULL) is used to print the backtrace of the
    current task. As trace beyond the function itself isn't of much
    interest to anyone, don't show it by determining sp and bp in
    show_stack()'s frame and passing them to show_stack_log_lvl().

    This brings show_stack(NULL, NULL)'s behavior in line with
    dump_stack().

    Signed-off-by: Tejun Heo
    Cc: Bjorn Helgaas
    Cc: David S. Miller
    Cc: Fengguang Wu
    Cc: Heiko Carstens
    Cc: Jesper Nilsson
    Cc: Martin Schwidefsky
    Cc: Mike Frysinger
    Cc: Vineet Gupta
    Cc: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tejun Heo
     
  • Also replace deprecated printk(KERN_ERR...) with pr_err() as suggested
    by Yinghai, attaching the function name to provide plenty info.

    Signed-off-by: Lin Feng
    Cc: Yinghai Lu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Lin Feng
     
  • It creates a mapping of 3 pages and checks that reads, writes and
    clear-refs result in present and soft-dirt bits reported from pagemap2
    set as expected.

    [akpm@linux-foundation.org: alphasort the Makefile TARGETS to reduce rejects]
    Signed-off-by: Pavel Emelyanov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Emelyanov
     
  • Allow zcache to be built/loaded as a module. Note runtime dependency
    disallows loading if cleancache/frontswap lazy initialization patches
    are not present. Zsmalloc support has not yet been merged into zcache
    but, once merged, could now easily be selected via a module_param.

    If built-in (not built as a module), the original mechanism of enabling
    via a kernel boot parameter is retained, but this should be considered
    deprecated.

    Note that module unload is explicitly not yet supported.

    Signed-off-by: Dan Magenheimer
    [v1: Rebased with different order of patches]
    [v2: Removed [CLEANCACHE|FRONTSWAP]_HAS_LAZY_INIT ifdef]
    [v3: Rebased on top of ramster->zcache move]
    [v4: Redid the Makefile]
    [v5: s/ZCACHE2/ZCACHE/]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Florian Schmaus
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Magenheimer
     
  • Enable module support for ramster. Note runtime dependency disallows
    loading if cleancache/frontswap lazy initialization patches are not
    present.

    If built-in (not built as a module), the original mechanism of enabling
    via a kernel boot parameter is retained, but this should be considered
    deprecated.

    Note that module unload is explicitly not yet supported.

    [v1: Fixed compile issues since ramster_init now has four arguments]
    [v2: Fixed rebase on ramster->zcache move]
    [akpm@linux-foundation.org: use_frontswap_selfshrink cannot be __initdata]
    Signed-off-by: Dan Magenheimer
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Florian Schmaus
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Cc: Wu Fengguang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Magenheimer
     
  • In the past it either used to be NULL or the "older" backend. Now we
    also return -Exx error codes.

    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Dan Magenheimer
    Cc: Florian Schmaus
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konrad Rzeszutek Wilk
     
  • Allow Xen tmem shim to be built/loaded as a module. Xen self-ballooning
    and frontswap-selfshrinking are now also "lazily" initialized when the
    Xen tmem shim is loaded as a module, unless explicitly disabled by
    module parameters.

    Note runtime dependency disallows loading if cleancache/frontswap lazy
    initialization patches are not present.

    If built-in (not built as a module), the original mechanism of enabling
    via a kernel boot parameter is retained, but this should be considered
    deprecated.

    Note that module unload is explicitly not yet supported.

    [v1: Removed the [CLEANCACHE|FRONTSWAP]_HAS_LAZY_INIT ifdef]
    [v2: Squashed the xen/tmem: Remove the subsys call patch in]
    [akpm@linux-foundation.org: fix build (disable_frontswap_selfshrinking undeclared)]
    Signed-off-by: Dan Magenheimer
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Florian Schmaus
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Magenheimer
     
  • cleancache_ops is used to decide whether backend is registered.
    So now cleancache_enabled is always true if defined CONFIG_CLEANCACHE.

    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Dan Magenheimer
    Cc: Florian Schmaus
    Cc: Konrad Rzeszutek Wilk
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bob Liu
     
  • Instead of using a backend_registered to determine whether a backend is
    enabled. This allows us to remove the backend_register check and just
    do 'if (cleancache_ops)'

    [v1: Rebase on top of b97c4b430b0a (ramster->zcache move]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Dan Magenheimer
    Cc: Florian Schmaus
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konrad Rzeszutek Wilk
     
  • With the goal of allowing tmem backends (zcache, ramster, Xen tmem) to
    be built/loaded as modules rather than built-in and enabled by a boot
    parameter, this patch provides "lazy initialization", allowing backends
    to register to cleancache even after filesystems were mounted. Calls to
    init_fs and init_shared_fs are remembered as fake poolids but no real
    tmem_pools created. On backend registration the fake poolids are mapped
    to real poolids and respective tmem_pools.

    Signed-off-by: Stefan Hengelein
    Signed-off-by: Florian Schmaus
    Signed-off-by: Andor Daam
    Signed-off-by: Dan Magenheimer
    [v1: Minor fixes: used #define for some values and bools]
    [v2: Removed CLEANCACHE_HAS_LAZY_INIT]
    [v3: Added more comments, added a lock for [shared_|]fs_poolid_map]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Minchan Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Magenheimer
     
  • Frontswap initialization routine depends on swap_lock, which want to be
    atomic about frontswap's first appearance. IOW, frontswap is not present
    and will fail all calls OR frontswap is fully functional but if new
    swap_info_struct isn't registered by enable_swap_info, swap subsystem
    doesn't start I/O so there is no race between init procedure and page I/O
    working on frontswap.

    So let's remove unnecessary swap_lock dependency.

    Cc: Dan Magenheimer
    Signed-off-by: Minchan Kim
    [v1: Rebased on my branch, reworked to work with backends loading late]
    [v2: Added a check for !map]
    [v3: Made the invalidate path follow the init path]
    [v4: Address comments by Wanpeng Li ]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Florian Schmaus
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Minchan Kim
     
  • After allowing tmem backends to build/run as modules, frontswap_enabled
    always true if defined CONFIG_FRONTSWAP. But frontswap_test() depends on
    whether backend is registered, mv it into frontswap.c using fronstswap_ops
    to make the decision.

    frontswap_set/clear are not used outside frontswap, so don't export them.

    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Dan Magenheimer
    Cc: Florian Schmaus
    Cc: Konrad Rzeszutek Wilk
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bob Liu
     
  • This simplifies the code in the frontswap - we can get rid of the
    'backend_registered' test and instead check against frontswap_ops.

    [v1: Rebase on top of 703ba7fe5e0 (ramster->zcache move]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Andor Daam
    Cc: Dan Magenheimer
    Cc: Florian Schmaus
    Cc: Minchan Kim
    Cc: Stefan Hengelein
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Konrad Rzeszutek Wilk
     
  • With the goal of allowing tmem backends (zcache, ramster, Xen tmem) to
    be built/loaded as modules rather than built-in and enabled by a boot
    parameter, this patch provides "lazy initialization", allowing backends
    to register to frontswap even after swapon was run. Before a backend
    registers all calls to init are recorded and the creation of tmem_pools
    delayed until a backend registers or until a frontswap store is
    attempted.

    Signed-off-by: Stefan Hengelein
    Signed-off-by: Florian Schmaus
    Signed-off-by: Andor Daam
    Signed-off-by: Dan Magenheimer
    [v1: Fixes per Seth Jennings suggestions]
    [v2: Removed FRONTSWAP_HAS_.. ]
    [v3: Fix up per Bob Liu recommendations]
    [v4: Fix up per Andrew's comments]
    Signed-off-by: Konrad Rzeszutek Wilk
    Signed-off-by: Bob Liu
    Cc: Wanpeng Li
    Cc: Dan Magenheimer
    Cc: Minchan Kim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Magenheimer
     
  • Call cond_resched() in shrink_dcache_parent() to maintain interactivity.

    Before this patch:

    void shrink_dcache_parent(struct dentry * parent)
    {
    while ((found = select_parent(parent, &dispose)) != 0)
    shrink_dentry_list(&dispose);
    }

    select_parent() populates the dispose list with dentries which
    shrink_dentry_list() then deletes. select_parent() carefully uses
    need_resched() to avoid doing too much work at once. But neither
    shrink_dcache_parent() nor its called functions call cond_resched(). So
    once need_resched() is set select_parent() will return single dentry
    dispose list which is then deleted by shrink_dentry_list(). This is
    inefficient when there are a lot of dentry to process. This can cause
    softlockup and hurts interactivity on non preemptable kernels.

    This change adds cond_resched() in shrink_dcache_parent(). The benefit
    of this is that need_resched() is quickly cleared so that future calls
    to select_parent() are able to efficiently return a big batch of dentry.

    These additional cond_resched() do not seem to impact performance, at
    least for the workload below.

    Here is a program which can cause soft lockup if other system activity
    sets need_resched().

    int main()
    {
    struct rlimit rlim;
    int i;
    int f[100000];
    char buf[20];
    struct timeval t1, t2;
    double diff;

    /* cleanup past run */
    system("rm -rf x");

    /* boost nfile rlimit */
    rlim.rlim_cur = 200000;
    rlim.rlim_max = 200000;
    if (setrlimit(RLIMIT_NOFILE, &rlim))
    err(1, "setrlimit");

    /* make directory for files */
    if (mkdir("x", 0700))
    err(1, "mkdir");

    if (gettimeofday(&t1, NULL))
    err(1, "gettimeofday");

    /* populate directory with open files */
    for (i = 0; i < 100000; i++) {
    snprintf(buf, sizeof(buf), "x/%d", i);
    f[i] = open(buf, O_CREAT);
    if (f[i] == -1)
    err(1, "open");
    }

    /* close some of the files */
    for (i = 0; i < 85000; i++)
    close(f[i]);

    /* unlink all files, even open ones */
    system("rm -rf x");

    if (gettimeofday(&t2, NULL))
    err(1, "gettimeofday");

    diff = (((double)t2.tv_sec * 1000000 + t2.tv_usec) -
    ((double)t1.tv_sec * 1000000 + t1.tv_usec));

    printf("done: %g elapsed\n", diff/1e6);
    return 0;
    }

    Signed-off-by: Greg Thelen
    Signed-off-by: Dave Chinner
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Thelen
     
  • Its only caller evict() has promised a non-NULL inode->i_bdev.

    Signed-off-by: Yan Hong
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yan Hong
     
  • When we run the crackerjack testsuite, the inotify_add_watch test is
    stalled.

    This is caused by the invalid mask 0 - the task is waiting for the event
    but it never comes. inotify_add_watch() should return -EINVAL as it did
    before commit 676a0675cf92 ("inotify: remove broken mask checks causing
    unmount to be EINVAL"). That commit removes the invalid mask check, but
    that check is needed.

    Check the mask's ALL_INOTIFY_BITS before the inotify_arg_to_mask() call.
    If none are set, just return -EINVAL.

    Because IN_UNMOUNT is in ALL_INOTIFY_BITS, this change will not trigger
    the problem that above commit fixed.

    [akpm@linux-foundation.org: fix build]
    Signed-off-by: Zhao Hongjiang
    Acked-by: Jim Somerville
    Cc: Paul Gortmaker
    Cc: Jerome Marchand
    Cc: Eric Paris
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zhao Hongjiang
     
  • Fix the following compilation warnings:

    mm/slab.c: In function `kmem_cache_init_late':
    mm/slab.c:1778:2: warning: statement with no effect [-Wunused-value]

    mm/page_cgroup.c: In function `page_cgroup_init':
    mm/page_cgroup.c:305:2: warning: statement with no effect [-Wunused-value]

    Signed-off-by: Vincent Stehlé
    Cc: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vincent Stehlé
     
  • Remove unused local `us', which broke the build. Also nuke an unneeded
    cast.

    Repairs commit 191648d03d20 ("usb: storage: Convert US_DEBUGP to
    usb_stor_dbg").

    Cc: Joe Perches
    Acked-by: David Rientjes
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Pull arm64 update from Catalin Marinas:
    "Main features:

    - Versatile Express SoC (model) support - DT files and Kconfig
    entries (there are no arch/arm64/mach-* directories). The bulk of
    the code has already been moved to drivers/ as part of the ARM SoC
    clean-up.

    - Basic multi-cluster support (CPU logical map initialised from the
    DT)

    - Simple earlyprintk support for UART 8250/16550 and FastModel
    console output

    - Optimised kernel library bitops and string functions.

    - Automatic initialisation of the irqchip and clocks via DT"

    * tag 'arm64-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: (26 commits)
    arm64: Use acquire/release semantics instead of explicit DMB
    arm64: klib: bitops: fix unpredictable stxr usage
    arm64: vexpress: Enable ARMv8 RTSM model (SoC) support
    arm64: vexpress: Add dts files for the ARMv8 RTSM models
    arm64: Survive invalid cpu enable-methods
    arm64: mm: Correct show_pte behaviour
    arm64: Fix compat types affecting struct compat_stat
    arm64: Execute DSB during thread switching for TLB/cache maintenance
    arm64: compiling issue, need add include/asm/vga.h file
    arm64: smp: honour #address-size when parsing CPU reg property
    arm64: Define cmpxchg64 and cmpxchg64_local for outside use
    arm64: Define readq and writeq for driver module using
    arm64: Fix task tracing
    arm64: add explicit symbols to ESR_EL1 decoding
    arm64: Use irqchip_init() for interrupt controller initialisation
    arm64: psci: Use the MPIDR values from cpu_logical_map for cpu ids.
    arm64: klib: Optimised atomic bitops
    arm64: klib: Optimised string functions
    arm64: klib: Optimised memory functions
    arm64: head: match all affinity levels in the pen of the secondaries
    ...

    Linus Torvalds
     
  • Pull arch/metag update from James Hogan:

    - Various fixes for the interrupting perf counter handling in metag's
    perf backend.

    - Add OProfile support based on perf.

    - Sets up cache partitions for SMP so bootloader doesn't have to.

    - Patch from Paul Bolle to remove ARCH_POPULATES_NODE_MAP again
    (touches microblaze too).

    - Add TLS pointer regset to metag ptrace api.

    - Add exported metag DSP extended context handling header .

    - Increase defconfig log buffer size to 128KiB.

    - Various fixes, typos, missing exports.

    * tag 'metag-for-v3.10-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
    metag: defconfigs: increase log buffer 8KiB => 128KiB
    metag: avoid unnecessary builtin dtb rebuilds
    metag: add exported for extended context handling
    metag: export _metag_da_present and cpu_2_hwthread_id
    metag: ptrace: Implement NT_METAG_TLS
    memblock: Kill ARCH_POPULATES_NODE_MAP once more
    metag: cachepart: fix get_global_dcache_size() typo
    metag: cachepart: take into account small cache bits
    metag: smp: copy cache partition and enable GCOn
    metag: OProfile support
    metag: perf: prepare for use by oprofile
    metag: perf: don't reset TXTACTCYC
    metag: perf: use hard_processor_id() to get thread
    metag: perf: fix frequency sampling (dynamic period)
    metag: perf: add missing prev_count updates
    metag: perf: fixes for interrupting perf counters
    metag: perf: fix wrap handling in delta calculation
    metag: perf: fix core internal / perf channel mux

    Linus Torvalds
     
  • Pull m68k update from Geert Uytterhoeven.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: Remove inline strlen() implementation
    m68k/atari: USB - add platform devices for EtherNAT/NetUSBee ISP1160 HCD
    m68k: Implement ndelay() based on the existing udelay() logic
    m68k/atari: EtherNAT - add interrupt chip definition for CPLD interrupts
    m68k/atari: EtherNEC - add platform device support
    m68k/atari: EtherNAT - platform device and IRQ support code
    m68k/atari: use dedicated irq_chip for timer D interrupts
    m68k/atari: ROM port ISA adapter support
    m68k: Add missing cmpxchg64() if CONFIG_RMW_INSNS=y

    Linus Torvalds
     
  • Pull edac fixes from Mauro Carvalho Chehab:
    "Two edac fixes:

    - i7300_edac currently reports a wrong number of DIMMs when the
    memory controller is in single channel mode

    - on some Sandy Bridge machines, the EDAC driver bails out as one of
    the PCI IDs used by the driver is hidden by BIOS. As the driver
    uses it only to detect the type of memory, make it optional at the
    driver"

    * 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
    edac: sb_edac.c should not require prescence of IMC_DDRIO device
    i7300_edac: Fix memory detection in single mode

    Linus Torvalds
     
  • Pull media update from Mauro Carvalho Chehab:

    - OF documentation and patches at core and drivers, to be used by for
    embedded media systems

    - some I2C drivers used on go7007 were rewritten/promoted from staging:
    sony-btf-mpx, tw2804, tw9903, tw9906, wis-ov7640, wis-uda1342

    - add fimc-is driver (Exynos)

    - add a new radio driver: radio-si476x

    - add a two new tuners: r820t and tuner_it913x

    - split camera code on em28xx driver and add more models

    - the cypress firmware load is used outside dvb usb drivers. So, move
    it to a common directory to make easier to re-use it

    - siano media driver updated to work with sms2270 devices

    - several work done in order to promote go7007 and solo6x1x out of
    staging (still, there are some pending issues)

    - several API compliance fixes at v4l2 drivers that don't behave as
    expected

    - as usual, lots of driver fixes, improvements, cleanups and new device
    addition at the existing drivers.

    * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (831 commits)
    [media] cx88: make core less verbose
    [media] em28xx: fix oops at em28xx_dvb_bus_ctrl()
    [media] s5c73m3: fix indentation of the help section in Kconfig
    [media] cx25821-alsa: get rid of a __must_check warning
    [media] cx25821-video: declare cx25821_vidioc_s_std as static
    [media] cx25821-video: remove maxw from cx25821_vidioc_try_fmt_vid_cap
    [media] r820t: Remove a warning for an unused value
    [media] dib0090: Fix a warning at dib0090_set_EFUSE
    [media] dib8000: fix a warning
    [media] dib8000: Fix sub-channel range
    [media] dib8000: store dtv_property_cache in a temp var
    [media] dib8000: warning fix: declare internal functions as static
    [media] r820t: quiet gcc warning on n_ring
    [media] r820t: memory leak in release()
    [media] r820t: precendence bug in r820t_xtal_check()
    [media] videodev2.h: Remove the unused old V4L1 buffer types
    [media] anysee: Grammar s/report the/report to/
    [media] anysee: Initialize ret = 0 in anysee_frontend_attach()
    [media] media: videobuf2: fix the length check for mmap
    [media] em28xx: save isoc endpoint number for DVB only if endpoint has alt settings with xMaxPacketSize != 0
    ...

    Linus Torvalds
     
  • Pull HID updates from Jiri Kosina:

    - hid driver transport cleanup, finalizing the long-desired decoupling
    of core from transport layers, by Benjamin Tissoires and Henrik
    Rydberg

    - support for hybrid finger/pen multitouch HID devices, by Benjamin
    Tissoires

    - fix for long-standing issue in Logitech unifying driver sometimes not
    inializing properly due to device specifics, by Andrew de los Reyes

    - Wii remote driver updates to support 2nd generation of devices, by
    David Herrmann

    - support for Apple IR remote

    - roccat driver now supports new devices (Roccat Kone Pure, IskuFX), by
    Stefan Achatz

    - debugfs locking fixes in hid debug interface, by Jiri Kosina

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (43 commits)
    HID: protect hid_debug_list
    HID: debug: break out hid_dump_report() into hid-debug
    HID: Add PID for Japanese version of NE4K keyboard
    HID: hid-lg4ff add support for new version of DFGT wheel
    HID: icade: u16 which never < 0
    HID: clarify Magic Mouse Kconfig description
    HID: appleir: add support for Apple ir devices
    HID: roccat: added media key support for Kone
    HID: hid-lenovo-tpkbd: remove doubled hid_get_drvdata
    HID: i2c-hid: fix length for set/get report in i2c hid
    HID: wiimote: parse reduced status reports
    HID: wiimote: add 2nd generation Wii Remote IDs
    HID: wiimote: use unique battery names
    HID: hidraw: warn if userspace headers are outdated
    HID: multitouch: force BTN_STYLUS for pen devices
    HID: multitouch: append " Pen" to the name of the stylus input
    HID: multitouch: add handling for pen in dual-sensors device
    HID: multitouch: change touch sensor detection in mt_input_configured()
    HID: multitouch: do not map usage from non used reports
    HID: multitouch: breaks out touch handling in specific functions
    ...

    Linus Torvalds
     
  • Pull trivial tree updates from Jiri Kosina:
    "Usual stuff, mostly comment fixes, typo fixes, printk fixes and small
    code cleanups"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (45 commits)
    mm: Convert print_symbol to %pSR
    gfs2: Convert print_symbol to %pSR
    m32r: Convert print_symbol to %pSR
    iostats.txt: add easy-to-find description for field 6
    x86 cmpxchg.h: fix wrong comment
    treewide: Fix typo in printk and comments
    doc: devicetree: Fix various typos
    docbook: fix 8250 naming in device-drivers
    pata_pdc2027x: Fix compiler warning
    treewide: Fix typo in printks
    mei: Fix comments in drivers/misc/mei
    treewide: Fix typos in kernel messages
    pm44xx: Fix comment for "CONFIG_CPU_IDLE"
    doc: Fix typo "CONFIG_CGROUP_CGROUP_MEMCG_SWAP"
    mmzone: correct "pags" to "pages" in comment.
    kernel-parameters: remove outdated 'noresidual' parameter
    Remove spurious _H suffixes from ifdef comments
    sound: Remove stray pluses from Kconfig file
    radio-shark: Fix printk "CONFIG_LED_CLASS"
    doc: put proper reference to CONFIG_MODULE_SIG_ENFORCE
    ...

    Linus Torvalds
     

30 Apr, 2013

7 commits

  • Pull x86 RAS changes from Ingo Molnar:

    - Add an Intel CMCI hotplug fix

    - Add AMD family 16h EDAC support

    - Make the AMD MCE banks code more flexible for virtual environments

    * 'x86-ras-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    amd64_edac: Add Family 16h support
    x86/mce: Rework cmci_rediscover() to play well with CPU hotplug
    x86, MCE, AMD: Use MCG_CAP MSR to find out number of banks on AMD
    x86, MCE, AMD: Replace shared_bank array with is_shared_bank() helper

    Linus Torvalds
     
  • Pull x86 platform changes from Ingo Molnar:
    "Small fixes and cleanups all over the map"

    * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/setup: Drop unneeded include
    x86/olpc/xo1/sci: Don't call input_free_device() after input_unregister_device()
    x86/platform/intel/mrst: Remove cast for kmalloc() return value
    x86/platform/uv: Replace kmalloc() & memset with kzalloc()

    Linus Torvalds
     
  • Pull x86 paravirt update from Ingo Molnar:
    "Various paravirtualization related changes - the biggest one makes
    guest support optional via CONFIG_HYPERVISOR_GUEST"

    * 'x86-paravirt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, wakeup, sleep: Use pvops functions for changing GDT entries
    x86, xen, gdt: Remove the pvops variant of store_gdt.
    x86-32, gdt: Store/load GDT for ACPI S3 or hibernation/resume path is not needed
    x86-64, gdt: Store/load GDT for ACPI S3 or hibernate/resume path is not needed.
    x86: Make Linux guest support optional
    x86, Kconfig: Move PARAVIRT_DEBUG into the paravirt menu

    Linus Torvalds
     
  • Pull x86 mm changes from Ingo Molnar:
    "Misc smaller changes all over the map"

    * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/iommu/dmar: Remove warning for HPET scope type
    x86/mm/gart: Drop unnecessary check
    x86/mm/hotplug: Put kernel_physical_mapping_remove() declaration in CONFIG_MEMORY_HOTREMOVE
    x86/mm/fixmap: Remove unused FIX_CYCLONE_TIMER
    x86/mm/numa: Simplify some bit mangling
    x86/mm: Re-enable DEBUG_TLBFLUSH for X86_32
    x86/mm/cpa: Cleanup split_large_page() and its callee
    x86: Drop always empty .text..page_aligned section

    Linus Torvalds
     
  • Pull perparatory x86 kasrl changes from Ingo Molnar:
    "This contains changes from the ongoing KASLR work, by Kees Cook.

    The main changes are the use of a read-only IDT on x86 (which
    decouples the userspace visible virtual IDT address from the physical
    address), and a rework of ELF relocation support, in preparation of
    random, boot-time kernel image relocation."

    * 'x86-kaslr-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, relocs: Refactor the relocs tool to merge 32- and 64-bit ELF
    x86, relocs: Build separate 32/64-bit tools
    x86, relocs: Add 64-bit ELF support to relocs tool
    x86, relocs: Consolidate processing logic
    x86, relocs: Generalize ELF structure names
    x86: Use a read-only IDT alias on all CPUs

    Linus Torvalds
     
  • Pull x86 debug update from Ingo Molnar:
    "Two small changes: a documentation update and a constification"

    * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, early-printk: Update earlyprintk documentation (and kill x86 copy)
    x86: Constify a few items

    Linus Torvalds
     
  • Pull x86 cpuid changes from Ingo Molnar:
    "The biggest change is x86 CPU bug handling refactoring and cleanups,
    by Borislav Petkov"

    * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, CPU, AMD: Drop useless label
    x86, AMD: Correct {rd,wr}msr_amd_safe warnings
    x86: Fold-in trivial check_config function
    x86, cpu: Convert AMD Erratum 400
    x86, cpu: Convert AMD Erratum 383
    x86, cpu: Convert Cyrix coma bug detection
    x86, cpu: Convert FDIV bug detection
    x86, cpu: Convert F00F bug detection
    x86, cpu: Expand cpufeature facility to include cpu bugs

    Linus Torvalds