24 Apr, 2015

1 commit


16 Apr, 2015

1 commit

  • Pull exec domain removal from Richard Weinberger:
    "This series removes execution domain support from Linux.

    The idea behind exec domains was to support different ABIs. The
    feature was never complete nor stable. Let's rip it out and make the
    kernel signal handling code less complicated"

    * 'exec_domain_rip_v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc: (27 commits)
    arm64: Removed unused variable
    sparc: Fix execution domain removal
    Remove rest of exec domains.
    arch: Remove exec_domain from remaining archs
    arc: Remove signal translation and exec_domain
    xtensa: Remove signal translation and exec_domain
    xtensa: Autogenerate offsets in struct thread_info
    x86: Remove signal translation and exec_domain
    unicore32: Remove signal translation and exec_domain
    um: Remove signal translation and exec_domain
    tile: Remove signal translation and exec_domain
    sparc: Remove signal translation and exec_domain
    sh: Remove signal translation and exec_domain
    s390: Remove signal translation and exec_domain
    mn10300: Remove signal translation and exec_domain
    microblaze: Remove signal translation and exec_domain
    m68k: Remove signal translation and exec_domain
    m32r: Remove signal translation and exec_domain
    m32r: Autogenerate offsets in struct thread_info
    frv: Remove signal translation and exec_domain
    ...

    Linus Torvalds
     

13 Apr, 2015

1 commit


16 Mar, 2015

1 commit


12 Mar, 2015

1 commit

  • This commit removes the open-coded CPU-offline notification with new
    common code. This change avoids calling scheduler code using RCU from
    an offline CPU that RCU is ignoring. This commit is compatible with
    the existing code in not checking for timeout during a prior offline
    for a given CPU.

    Signed-off-by: Paul E. McKenney
    Cc: James Hogan
    Cc:

    Paul E. McKenney
     

13 Feb, 2015

1 commit

  • If an attacker can cause a controlled kernel stack overflow, overwriting
    the restart block is a very juicy exploit target. This is because the
    restart_block is held in the same memory allocation as the kernel stack.

    Moving the restart block to struct task_struct prevents this exploit by
    making the restart_block harder to locate.

    Note that there are other fields in thread_info that are also easy
    targets, at least on some architectures.

    It's also a decent simplification, since the restart code is more or less
    identical on all architectures.

    [james.hogan@imgtec.com: metag: align thread_info::supervisor_stack]
    Signed-off-by: Andy Lutomirski
    Cc: Thomas Gleixner
    Cc: Al Viro
    Cc: "H. Peter Anvin"
    Cc: Ingo Molnar
    Cc: Kees Cook
    Cc: David Miller
    Acked-by: Richard Weinberger
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Haavard Skinnemoen
    Cc: Hans-Christian Egtvedt
    Cc: Steven Miao
    Cc: Mark Salter
    Cc: Aurelien Jacquiot
    Cc: Mikael Starvik
    Cc: Jesper Nilsson
    Cc: David Howells
    Cc: Richard Kuo
    Cc: "Luck, Tony"
    Cc: Geert Uytterhoeven
    Cc: Michal Simek
    Cc: Ralf Baechle
    Cc: Jonas Bonn
    Cc: "James E.J. Bottomley"
    Cc: Helge Deller
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Acked-by: Michael Ellerman (powerpc)
    Tested-by: Michael Ellerman (powerpc)
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Chen Liqin
    Cc: Lennox Wu
    Cc: Chris Metcalf
    Cc: Guan Xuetao
    Cc: Chris Zankel
    Cc: Max Filippov
    Cc: Oleg Nesterov
    Cc: Guenter Roeck
    Signed-off-by: James Hogan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Lutomirski
     

27 Aug, 2014

1 commit


14 Aug, 2014

1 commit


10 Aug, 2014

1 commit

  • Pull arch signal handling cleanup from Richard Weinberger:
    "This patch series moves all remaining archs to the get_signal(),
    signal_setup_done() and sigsp() functions.

    Currently these archs use open coded variants of the said functions.
    Further, unused parameters get removed from get_signal_to_deliver(),
    tracehook_signal_handler() and signal_delivered().

    At the end of the day we save around 500 lines of code."

    * 'signal-cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/misc: (43 commits)
    powerpc: Use sigsp()
    openrisc: Use sigsp()
    mn10300: Use sigsp()
    mips: Use sigsp()
    microblaze: Use sigsp()
    metag: Use sigsp()
    m68k: Use sigsp()
    m32r: Use sigsp()
    hexagon: Use sigsp()
    frv: Use sigsp()
    cris: Use sigsp()
    c6x: Use sigsp()
    blackfin: Use sigsp()
    avr32: Use sigsp()
    arm64: Use sigsp()
    arc: Use sigsp()
    sas_ss_flags: Remove nested ternary if
    Rip out get_signal_to_deliver()
    Clean up signal_delivered()
    tracehook_signal_handler: Remove sig, info, ka and regs
    ...

    Linus Torvalds
     

06 Aug, 2014

1 commit


05 Aug, 2014

1 commit

  • Pull perf changes from Ingo Molnar:
    "Kernel side changes:

    - Consolidate the PMU interrupt-disabled code amongst architectures
    (Vince Weaver)

    - misc fixes

    Tooling changes (new features, user visible changes):

    - Add support for pagefault tracing in 'trace', please see multiple
    examples in the changeset messages (Stanislav Fomichev).

    - Add pagefault statistics in 'trace' (Stanislav Fomichev)

    - Add header for columns in 'top' and 'report' TUI browsers (Jiri
    Olsa)

    - Add pagefault statistics in 'trace' (Stanislav Fomichev)

    - Add IO mode into timechart command (Stanislav Fomichev)

    - Fallback to syscalls:* when raw_syscalls:* is not available in the
    perl and python perf scripts. (Daniel Bristot de Oliveira)

    - Add --repeat global option to 'perf bench' to be used in benchmarks
    such as the existing 'futex' one, that was modified to use it
    instead of a local option. (Davidlohr Bueso)

    - Fix fd -> pathname resolution in 'trace', be it using /proc or a
    vfs_getname probe point. (Arnaldo Carvalho de Melo)

    - Add suggestion of how to set perf_event_paranoid sysctl, to help
    non-root users trying tools like 'trace' to get a working
    environment. (Arnaldo Carvalho de Melo)

    - Updates from trace-cmd for traceevent plugin_kvm plus args cleanup
    (Steven Rostedt, Jan Kiszka)

    - Support S/390 in 'perf kvm stat' (Alexander Yarygin)

    Tooling infrastructure changes:

    - Allow reserving a row for header purposes in the hists browser
    (Arnaldo Carvalho de Melo)

    - Various fixes and prep work related to supporting Intel PT (Adrian
    Hunter)

    - Introduce multiple debug variables control (Jiri Olsa)

    - Add callchain and additional sample information for python scripts
    (Joseph Schuchart)

    - More prep work to support Intel PT: (Adrian Hunter)
    - Polishing 'script' BTS output
    - 'inject' can specify --kallsym
    - VDSO is per machine, not a global var
    - Expose data addr lookup functions previously private to 'script'
    - Large mmap fixes in events processing

    - Include standard stringify macros in power pc code (Sukadev
    Bhattiprolu)

    Tooling cleanups:

    - Convert open coded equivalents to asprintf() (Andy Shevchenko)

    - Remove needless reassignments in 'trace' (Arnaldo Carvalho de Melo)

    - Cache the is_exit syscall test in 'trace) (Arnaldo Carvalho de
    Melo)

    - No need to reimplement err() in 'perf bench sched-messaging', drop
    barf(). (Davidlohr Bueso).

    - Remove ev_name argument from perf_evsel__hists_browse, can be
    obtained from the other parameters. (Jiri Olsa)

    Tooling fixes:

    - Fix memory leak in the 'sched-messaging' perf bench test.
    (Davidlohr Bueso)

    - The -o and -n 'perf bench mem' options are mutually exclusive, emit
    error when both are specified. (Davidlohr Bueso)

    - Fix scrollbar refresh row index in the ui browser, problem exposed
    now that headers will be added and will be allowed to be switched
    on/off. (Jiri Olsa)

    - Handle the num array type in python properly (Sebastian Andrzej
    Siewior)

    - Fix wrong condition for allocation failure (Jiri Olsa)

    - Adjust callchain based on DWARF debug info on powerpc (Sukadev
    Bhattiprolu)

    - Fix a risk for doing free on uninitialized pointer in traceevent
    lib (Rickard Strandqvist)

    - Update attr test with PERF_FLAG_FD_CLOEXEC flag (Jiri Olsa)

    - Enable close-on-exec flag on perf file descriptor (Yann Droneaud)

    - Fix build on gcc 4.4.7 (Arnaldo Carvalho de Melo)

    - Event ordering fixes (Jiri Olsa)"

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (123 commits)
    Revert "perf tools: Fix jump label always changing during tracing"
    perf tools: Fix perf usage string leftover
    perf: Check permission only for parent tracepoint event
    perf record: Store PERF_RECORD_FINISHED_ROUND only for nonempty rounds
    perf record: Always force PERF_RECORD_FINISHED_ROUND event
    perf inject: Add --kallsyms parameter
    perf tools: Expose 'addr' functions so they can be reused
    perf session: Fix accounting of ordered samples queue
    perf powerpc: Include util/util.h and remove stringify macros
    perf tools: Fix build on gcc 4.4.7
    perf tools: Add thread parameter to vdso__dso_findnew()
    perf tools: Add dso__type()
    perf tools: Separate the VDSO map name from the VDSO dso name
    perf tools: Add vdso__new()
    perf machine: Fix the lifetime of the VDSO temporary file
    perf tools: Group VDSO global variables into a structure
    perf session: Add ability to skip 4GiB or more
    perf session: Add ability to 'skip' a non-piped event stream
    perf tools: Pass machine to vdso__dso_findnew()
    perf tools: Add dso__data_size()
    ...

    Linus Torvalds
     

19 Jul, 2014

1 commit


18 Jul, 2014

1 commit

  • [linux-3.16-rc5/arch/metag/kernel/cachepart.c:102]: (style) Checking if
    unsigned variable 'thread_cache_size' is less than zero.

    Source code is

    if (thread_cache_size < 0)
    pr_emerg("Can't read %s cache size\n",
    cache_type ? "DCACHE" : "ICACHE");

    but

    unsigned int thread_cache_size;

    Function get_thread_cache_size returns an error code
    as (unsigned int) -1.

    Change get_thread_cache_size() to return signed int, and its result is
    stored into signed int variable.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=80361
    Reported-by: David Binderman
    Signed-off-by: Andrey Utkin
    Signed-off-by: James Hogan

    Andrey Utkin
     

19 Jun, 2014

1 commit

  • Transition to using the new generic PERF_PMU_CAP_NO_INTERRUPT method for
    failing a sampling event when no PMU interrupt is available.

    Signed-off-by: Vince Weaver
    Acked-by: James Hogan
    Signed-off-by: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Paul Mackerras
    Cc: linux-metag@vger.kernel.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1406150202050.16738@vincent-weaver-1.umelst.maine.edu
    Signed-off-by: Ingo Molnar

    Vince Weaver
     

30 Apr, 2014

1 commit

  • Unify the various architectures __dtb_start and __dtb_end definitions
    moving them into of_fdt.h.

    Signed-off-by: Rob Herring
    Acked-by: Vineet Gupta
    Acked-by: James Hogan
    Tested-by: Michal Simek
    Cc: Ralf Baechle
    Cc: Jonas Bonn
    Cc: Chris Zankel
    Cc: Max Filippov
    Cc: linux-metag@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: linux@lists.openrisc.net
    Cc: linux-xtensa@linux-xtensa.org
    Tested-by: Grant Likely
    Tested-by: Stephen Chivers

    Rob Herring
     

04 Apr, 2014

1 commit

  • Pull tracing updates from Steven Rostedt:
    "Most of the changes were largely clean ups, and some documentation.
    But there were a few features that were added:

    Uprobes now work with event triggers and multi buffers and have
    support under ftrace and perf.

    The big feature is that the function tracer can now be used within the
    multi buffer instances. That is, you can now trace some functions in
    one buffer, others in another buffer, all functions in a third buffer
    and so on. They are basically agnostic from each other. This only
    works for the function tracer and not for the function graph trace,
    although you can have the function graph tracer running in the top
    level buffer (or any tracer for that matter) and have different
    function tracing going on in the sub buffers"

    * tag 'trace-3.15' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (45 commits)
    tracing: Add BUG_ON when stack end location is over written
    tracepoint: Remove unused API functions
    Revert "tracing: Move event storage for array from macro to standalone function"
    ftrace: Constify ftrace_text_reserved
    tracepoints: API doc update to tracepoint_probe_register() return value
    tracepoints: API doc update to data argument
    ftrace: Fix compilation warning about control_ops_free
    ftrace/x86: BUG when ftrace recovery fails
    ftrace: Warn on error when modifying ftrace function
    ftrace: Remove freelist from struct dyn_ftrace
    ftrace: Do not pass data to ftrace_dyn_arch_init
    ftrace: Pass retval through return in ftrace_dyn_arch_init()
    ftrace: Inline the code from ftrace_dyn_table_alloc()
    ftrace: Cleanup of global variables ftrace_new_pgs and ftrace_update_cnt
    tracing: Evaluate len expression only once in __dynamic_array macro
    tracing: Correctly expand len expressions from __dynamic_array macro
    tracing/module: Replace include of tracepoint.h with jump_label.h in module.h
    tracing: Fix event header migrate.h to include tracepoint.h
    tracing: Fix event header writeback.h to include tracepoint.h
    tracing: Warn if a tracepoint is not set via debugfs
    ...

    Linus Torvalds
     

18 Mar, 2014

1 commit


17 Mar, 2014

1 commit


07 Mar, 2014

2 commits

  • As the data parameter is not really used by any ftrace_dyn_arch_init,
    remove that from ftrace_dyn_arch_init. This also removes the addr
    local variable from ftrace_init which is now unused.

    Note the documentation was imprecise as it did not suggest to set
    (*data) to 0.

    Link: http://lkml.kernel.org/r/1393268401-24379-4-git-send-email-jslaby@suse.cz

    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: linux-arch@vger.kernel.org
    Signed-off-by: Jiri Slaby
    Signed-off-by: Steven Rostedt

    Jiri Slaby
     
  • No architecture uses the "data" parameter in ftrace_dyn_arch_init() in any
    way, it just sets the value to 0. And this is used as a return value
    in the caller -- ftrace_init, which just checks the retval against
    zero.

    Note there is also "return 0" in every ftrace_dyn_arch_init. So it is
    enough to check the retval and remove all the indirect sets of data on
    all archs.

    Link: http://lkml.kernel.org/r/1393268401-24379-3-git-send-email-jslaby@suse.cz

    Cc: linux-arch@vger.kernel.org
    Signed-off-by: Jiri Slaby
    Signed-off-by: Steven Rostedt

    Jiri Slaby
     

06 Jan, 2014

1 commit


19 Dec, 2013

1 commit

  • We need to export 'cpu_core_map' since the topology_core_cpumask macro
    refers to it and is used by certain kernel modules.

    Found in allmodconfig build:
    ERROR: "cpu_core_map" [drivers/staging/lustre/lustre/libcfs/libcfs.ko] undefined!

    Signed-off-by: Chen Gang
    Signed-off-by: James Hogan

    Chen Gang
     

06 Dec, 2013

1 commit

  • Commit 9a46ad6d6df3 "smp: make smp_call_function_many() use logic
    similar to smp_call_function_single()" has unified the way to handle
    single and multiple cross-CPU function calls. Now only one interrupt is
    needed for architecture specific code to support generic SMP function
    call interfaces, so kill the redundant single function call interrupt.

    Signed-off-by: Jiang Liu
    Cc: Andrew Morton
    Cc: Shaohua Li
    Cc: Peter Zijlstra
    Cc: Ingo Molnar
    Cc: Steven Rostedt
    Cc: Jiri Kosina
    Signed-off-by: James Hogan

    Jiang Liu
     

29 Nov, 2013

1 commit

  • Since commit f6b30d32d242 (metag: kick: add missing irq_enter/exit to
    kick_handler()), the main kick_handler() function deals with setting and
    restoring the irq registers pointer. Therefore do_IPI() which is called
    indirectly from kick_handler() doesn't need to do that itself any
    longer. Therefore remove that code and do_IPI()'s pt_regs argument.

    Signed-off-by: James Hogan
    Cc: linux-metag@vger.kernel.org
    Cc: Thomas Gleixner

    James Hogan
     

25 Nov, 2013

1 commit

  • Meta has 2 levels of page table so the pmd folds into the pud which
    folds into the pgd. Therefore the !pmd check in dma_alloc_init() is dead
    code since it essentially checks whether:
    (init_mm->pgd + 0x770) == 0

    Remove the check.

    Reported-by: Chen Gang
    Signed-off-by: James Hogan

    James Hogan
     

13 Nov, 2013

1 commit

  • Use __free_reserved_page() to simplify the code in arch.

    It used split_page() in consistent_alloc()/__dma_alloc_coherent()/dma_alloc_coherent(),
    so page->_count == 1, and we can free it safely.

    __free_reserved_page()
    ClearPageReserved()
    init_page_count() // it won't change the value
    __free_page()

    Signed-off-by: Xishi Qiu
    Cc: James Hogan
    Cc: Michal Simek
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Xishi Qiu
     

12 Nov, 2013

2 commits

  • Pull devicetree updates from Rob Herring:
    "DeviceTree updates for 3.13. This is a bit larger pull request than
    usual for this cycle with lots of clean-up.

    - Cross arch clean-up and consolidation of early DT scanning code.
    - Clean-up and removal of arch prom.h headers. Makes arch specific
    prom.h optional on all but Sparc.
    - Addition of interrupts-extended property for devices connected to
    multiple interrupt controllers.
    - Refactoring of DT interrupt parsing code in preparation for
    deferred probe of interrupts.
    - ARM cpu and cpu topology bindings documentation.
    - Various DT vendor binding documentation updates"

    * tag 'devicetree-for-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (82 commits)
    powerpc: add missing explicit OF includes for ppc
    dt/irq: add empty of_irq_count for !OF_IRQ
    dt: disable self-tests for !OF_IRQ
    of: irq: Fix interrupt-map entry matching
    MIPS: Netlogic: replace early_init_devtree() call
    of: Add Panasonic Corporation vendor prefix
    of: Add Chunghwa Picture Tubes Ltd. vendor prefix
    of: Add AU Optronics Corporation vendor prefix
    of/irq: Fix potential buffer overflow
    of/irq: Fix bug in interrupt parsing refactor.
    of: set dma_mask to point to coherent_dma_mask
    of: add vendor prefix for PHYTEC Messtechnik GmbH
    DT: sort vendor-prefixes.txt
    of: Add vendor prefix for Cadence
    of: Add empty for_each_available_child_of_node() macro definition
    arm/versatile: Fix versatile irq specifications.
    of/irq: create interrupts-extended property
    microblaze/pci: Drop PowerPC-ism from irq parsing
    of/irq: Create of_irq_parse_and_map_pci() to consolidate arch code.
    of/irq: Use irq_of_parse_and_map()
    ...

    Linus Torvalds
     
  • Pull metag architecture changes from James Hogan:
    - A change to remove the last dependence on bootloader exception
    handlers so that QEMU can more easily boot an SMP Linux/Meta kernel
    image directly.
    - A fix for a minor off by one error in a BUG_ON condition found by Dan
    Carpenter.

    * tag 'metag-for-v3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
    metag: off by one in setup_bootmem_node()
    metag: handle low level kicks directly

    Linus Torvalds
     

06 Nov, 2013

1 commit

  • Kick interrupts trigger the LWK (low level kick) signal, usually handled
    by the __TBIDoStdLWK() function which is the only handler inherited from
    the bootloader. The LWK signal is converted either to a SWK (plain
    software kick) or a SWS (software kick with an attached message).

    Linux has kick_handler() to handle SWK and call registered kick handlers
    (IPIs and inter-thread comms), but SWS is as far as I'm aware unused
    with Linux.

    Therefore remove that abstraction and have Linux handle LWK directly.
    This will reduce kick latency slightly, and reduce our dependence on the
    bootloader, which makes it easier to directly boot a kernel in QEMU
    (particularly for SMP).

    Signed-off-by: James Hogan

    James Hogan
     

10 Oct, 2013

4 commits


01 Oct, 2013

1 commit

  • All arch overriden implementations of do_softirq() share the following
    common code: disable irqs (to avoid races with the pending check),
    check if there are softirqs pending, then execute __do_softirq() on
    a specific stack.

    Consolidate the common parts such that archs only worry about the
    stack switch.

    Acked-by: Linus Torvalds
    Signed-off-by: Frederic Weisbecker
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Paul Mackerras
    Cc: James Hogan
    Cc: James E.J. Bottomley
    Cc: Helge Deller
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: David S. Miller
    Cc: Andrew Morton

    Frederic Weisbecker
     

15 Jul, 2013

1 commit

  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    Note that some harmless section mismatch warnings may result, since
    notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c)
    are flagged as __cpuinit -- so if we remove the __cpuinit from
    arch specific callers, we will also get section mismatch warnings.
    As an intermediate step, we intend to turn the linux/init.h cpuinit
    content into no-ops as early as possible, since that will get rid
    of these warnings. In any case, they are temporary and harmless.

    This removes all the arch/metag uses of the __cpuinit macros from
    all C files. Currently metag does not have any __CPUINIT used in
    assembly files.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: James Hogan
    Acked-by: James Hogan
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

07 Jul, 2013

1 commit

  • Pull Metag architecture changes from James Hogan:
    - Infrastructure and DT files for TZ1090 SoC (pin control drivers
    already merged via pinctrl tree).
    - Panic on boot instead of just warning if cache aliasing possible.
    - Various SMP/hotplug fixes.
    - Various other randconfig/sparse fixes.

    * tag 'metag-for-v3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag: (24 commits)
    metag: move EXPORT_SYMBOL(csum_partial) to metag_ksyms.c
    metag: cpu hotplug: route_irq: preserve irq mask
    metag: kick: add missing irq_enter/exit to kick_handler()
    metag: smp: don't spin waiting for CPU to start
    metag: smp: enable irqs after set_cpu_online
    metag: use clear_tasks_mm_cpumask()
    metag: tz1090: select and instantiate pinctrl-tz1090-pdc
    metag: tz1090: select and instantiate pinctrl-tz1090
    metag: don't check for cache aliasing on smp cpu boot
    metag: panic if cache aliasing possible
    metag: *.dts: include using preprocessor
    metag: add symlink
    metag/.gitignore: Extend the *.dtb pattern to match the dtb.S files
    metag/traps: include setup.h for the per_cpu_trap_init declaration
    metag/traps: Mark die() as __noreturn to match the declaration.
    metag/processor.h: Add missing cpuinfo_op declaration.
    metag/setup: Restrict scope for the capabilities variable
    metag/mm/cache: Restrict scope for metag_lnkget_probe
    metag/asm/irq.h: Declare init_IRQ
    metag/kernel/irq.c: Declare root_domain as static
    ...

    Linus Torvalds
     

04 Jul, 2013

1 commit

  • Move EXPORT_SYMBOL(csum_partial) from lib/checksum.c into metag_ksyms.c
    so that it doesn't get omitted by the static linker if it's not used by
    any other statically linked code, which can result in undefined symbols
    when building modules.

    For example a randconfig caused the following error:
    ERROR: "csum_partial" [fs/reiserfs/reiserfs.ko] undefined!

    Signed-off-by: James Hogan

    James Hogan
     

02 Jul, 2013

3 commits

  • The route_irq() function needs to preserve the irq mask by using the
    _irqsave/irqrestore variants of raw spin lock functions instead of the
    _irq variants. This is because it is called from __cpu_disable() (via
    migrate_irqs()), which is called with IRQs disabled, so using the _irq
    variants re-enables IRQs.

    This appears to have been causing occasional hits of the
    BUG_ON(!irqs_disabled()) in __irq_work_run() during CPU hotplug soak
    testing:
    BUG: failure at kernel/irq_work.c:122/__irq_work_run()!

    Signed-off-by: James Hogan
    Acked-by: Thomas Gleixner
    Reviewed-by: Srivatsa S. Bhat

    James Hogan
     
  • kick_handler() doesn't have an irq_enter/exit pair, but it's used for
    handling SMP IPIs which require work to be done in softirqs, which are
    invoked from irq_exit() when the hard irq nest count reaches 0.

    The scheduler_ipi() callback in the IPI handler calls irq_enter/exit
    itself, but this is inside kick_handler()'s spin lock critical section,
    so if an invoked softirq issues an IPI the kick_handler() will be
    re-entered on the same CPU and will deadlock.

    This is easily fixed by adding the missing irq_enter/exit to
    kick_handler() so that the hard irq nest count doesn't reach 0 until
    after the spin lock has been released.

    Ideally the spin lock protected handler list will also be replaced by a
    lockless RCU protected list since it is certainly mostly read. That can
    be done in a later change though.

    Signed-off-by: James Hogan
    Acked-by: Thomas Gleixner

    James Hogan
     
  • Use a completion to block until a secondary CPU has started up, like ARM
    do, instead of a loop of udelays.

    On Meta, SMP is really SMT, with each "CPU" being a different hardware
    thread on the same Meta processor core, so as well as being more
    efficient and latency friendly, using a completion prevents the bogomips
    of the secondary CPU from being drastically skewed every time by the
    execution of the tight in-cache udelay loop on the other CPU.

    Signed-off-by: James Hogan
    Acked-by: Thomas Gleixner
    Reviewed-by: "Srivatsa S. Bhat"

    James Hogan