14 Nov, 2013

6 commits

  • No point in having this bit defined by architecture.

    Signed-off-by: Thomas Gleixner
    Acked-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20130917183629.090698799@linutronix.de

    Thomas Gleixner
     
  • The low level preemption code fiddles with the PREEMPT_ACTIVE bit for
    no reason and calls schedule() with interrupts disabled, which is
    wrong to begin with. Remove the PREEMPT_ACTIVE fiddling and call the
    proper schedule_preempt_irq() function.

    Signed-off-by: Thomas Gleixner
    Acked-by: David S. Miller
    Cc: sparclinux@vger.kernel.org
    Link: http://lkml.kernel.org/r/20130917183628.966769884@linutronix.de

    Thomas Gleixner
     
  • Use the proper core function instead of fiddling with PREEMPT_ACTIVE
    and enable/disable interrupts in the low level code.

    Signed-off-by: Thomas Gleixner
    Cc: Tony Luck
    Cc: Fenghua Yu
    Cc: linux-ia64@vger.kernel.org
    Link: http://lkml.kernel.org/r/20130917183628.857145384@linutronix.de

    Thomas Gleixner
     
  • Use the proper core function instead of fiddling with preempt_active
    and interrupt enable in the low level code.

    Signed-off-by: Thomas Gleixner
    Cc: Hirokazu Takata
    Cc: linux-m32r-ja@ml.linux-m32r.org
    Link: http://lkml.kernel.org/r/20130917183628.758421136@linutronix.de

    Thomas Gleixner
     
  • There is no reason for per arch hardirq bits. Make them all generic

    Signed-off-by: Thomas Gleixner
    Acked-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20130917183628.534494408@linutronix.de

    Thomas Gleixner
     
  • The low level interrupt entry code of m68k contains the following:

    add_preempt_count(HARDIRQ_OFFSET);

    do_IRQ();
    irq_enter();
    add_preempt_count(HARDIRQ_OFFSET);
    handle_interrupt();
    irq_exit();
    sub_preempt_count(HARDIRQ_OFFSET);
    if (in_interrupt())
    return; 0)
    return;
    if (local_softirq_pending())
    do_softirq();

    ret_from_exception:
    if (interrupted_context_is_kernel)
    return:
    ....

    I tried to find a proper explanation for this, but the changelog is
    sparse and there are no mails explaining it further. But obviously
    this relates to the interrupt priority levels of the m68k and tries to
    be extra clever with nested interrupts. Though this cleverness just
    adds code bloat to the interrupt hotpath.

    For the common case of non nested interrupts the code runs through two
    extra conditionals to the only important one, which checks whether the
    return is to kernel or user space.

    For the nested case the checks for in_hardirq() and the priority mask
    value on stack catch only the case where the nested interrupt happens
    inside the hard irq context of the first interrupt. If the nested
    interrupt happens while the first interrupt handles soft interrupts,
    then these extra checks buy nothing. The nested interrupt will fall
    through to the final kernel/user space return check at
    ret_from_exception.

    Changing the code flow in the following way:

    do_IRQ();
    irq_enter();
    add_preempt_count(HARDIRQ_OFFSET);
    handle_interrupt();
    irq_exit();
    sub_preempt_count(HARDIRQ_OFFSET);
    if (in_interrupt())
    return;
    if (local_softirq_pending())
    do_softirq();

    ret_from_exception:
    if (interrupted_context_is_kernel)
    return:

    makes the region protected by the hardirq count slightly smaller and
    the softirq handling is invoked with a minimal deeper stack. But
    otherwise it's completely functional equivalent and saves 104 bytes of
    text in arch/m68k/kernel/entry.o.

    This modification allows us further to get rid of the limitations
    which m68k puts on the preempt_count layout, so we can make the
    preempt count bits completely generic.

    Signed-off-by: Thomas Gleixner
    Tested-by: Michael Schmitz
    Acked-by: Geert Uytterhoeven
    Cc: Linux/m68k
    Cc: Andreas Schwab
    Link: http://lkml.kernel.org/r/alpine.DEB.2.02.1311112052360.30673@ionos.tec.linutronix.de

    Thomas Gleixner
     

13 Nov, 2013

1 commit

  • On a 68k platform a couple of interrupts are demultiplexed and
    "polled" from a top level interrupt. Unfortunately there is no way to
    determine which of the sub interrupts raised the top level interrupt,
    so all of the demultiplexed interrupt handlers need to be
    invoked. Given a high enough frequency this can trigger the spurious
    interrupt detection mechanism, if one of the demultiplex interrupts
    returns IRQ_NONE continuously. But this is a false positive as the
    polling causes this behaviour and not buggy hardware/software.

    Introduce IRQ_POLLED which can be set at interrupt chip setup time via
    irq_set_status_flags(). The flag excludes the interrupt from the
    spurious detector and from all core polling activities.

    Reported-and-tested-by: Michael Schmitz
    Cc: Geert Uytterhoeven
    Cc: linux-m68k@vger.kernel.org
    Link: http://lkml.kernel.org/r/alpine.DEB.2.02.1311061149250.23353@ionos.tec.linutronix.de

    Thomas Gleixner
     

12 Nov, 2013

23 commits

  • Pull x86 UV debug changes from Ingo Molnar:
    "Various SGI UV debuggability improvements, amongst them KDB support,
    with related core KDB enabling patches changing kernel/debug/kdb/"

    * 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    Revert "x86/UV: Add uvtrace support"
    x86/UV: Add call to KGDB/KDB from NMI handler
    kdb: Add support for external NMI handler to call KGDB/KDB
    x86/UV: Check for alloc_cpumask_var() failures properly in uv_nmi_setup()
    x86/UV: Add uvtrace support
    x86/UV: Add kdump to UV NMI handler
    x86/UV: Add summary of cpu activity to UV NMI handler
    x86/UV: Update UV support for external NMI signals
    x86/UV: Move NMI support

    Linus Torvalds
     
  • Pull x86 uaccess changes from Ingo Molnar:
    "A single change that micro-optimizes __copy_*_user_inatomic(), used by
    the futex code"

    * 'x86-uaccess-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86: Add 1/2/4/8 byte optimization to 64bit __copy_{from,to}_user_inatomic

    Linus Torvalds
     
  • Pull x86 reboot changes from Ingo Molnar:
    "Misc changes - the only one with functional impact should be commit
    16c21ae5ca63 ("reboot: Allow specifying warm/cold reset for CF9 boot
    type") which extends cold/warm reboot handling to the 0xCF9 reboot
    method"

    * 'x86-reboot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/reboot: Correct pr_info() log message in the set_bios/pci/kbd_reboot()
    x86/reboot: Sort reboot DMI quirks by vendor
    x86/reboot: Remove the duplicate C6100 entry in the reboot quirks list
    reboot: Allow specifying warm/cold reset for CF9 boot type

    Linus Torvalds
     
  • Pull x86 platform fixlet from Ingo Molnar:
    "A single __initdata fix"

    * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/geode: Fix incorrect placement of __initdata tag

    Linus Torvalds
     
  • Pull x86 mm fixlet from Ingo Molnar:
    "One cleanup that documents a particular detail in init_mem_mapping()"

    * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mm: Add 'step_size' comments to init_mem_mapping()

    Linus Torvalds
     
  • Pull x86 RAS changes from Ingo Molnar:
    "The biggest change adds support for Intel 'CPER' (UEFI Common Platform
    Error Record) error logging, which builds upon an enhanced error
    logging mechanism available on Xeon processors.

    Full description is here:

    http://www.intel.com/content/www/us/en/architecture-and-technology/enhanced-mca-logging-xeon-paper.html

    This change provides a module (and support code) to check for an
    extended error log and prints extra details about the error on the
    console"

    * 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    ACPI, x86: Fix extended error log driver to depend on CONFIG_X86_LOCAL_APIC
    dmi: Avoid unaligned memory access in save_mem_devices()
    Move cper.c from drivers/acpi/apei to drivers/firmware/efi
    EDAC, GHES: Update ghes error record info
    ACPI, APEI, CPER: Cleanup CPER memory error output format
    ACPI, APEI, CPER: Enhance memory reporting capability
    ACPI, APEI, CPER: Add UEFI 2.4 support for memory error
    DMI: Parse memory device (type 17) in SMBIOS
    ACPI, x86: Extended error log driver for x86 platform
    bitops: Introduce a more generic BITMASK macro
    ACPI, CPER: Update cper info
    ACPI, APEI, CPER: Fix status check during error printing

    Linus Torvalds
     
  • Pull x86 iommu changes from Ingo Molnar:
    "Make it easier to turn off the old AMD GART code"

    * 'x86-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/iommu: Clean up the CONFIG_GART_IOMMU config option a bit
    x86/iommu: Don't make AMD_GART depend on EXPERT and default y

    Linus Torvalds
     
  • Pull x86/intel-mid changes from Ingo Molnar:
    "Update the 'intel mid' (mobile internet device) platform code as Intel
    is rolling out more SoC designs.

    This gets rid of most of the 'MRST' platform code in the process,
    mostly by renaming and shuffling code around into their respective
    'intel-mid' platform drivers"

    * 'x86-intel-mid-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, intel-mid: Do not re-introduce usage of obsolete __cpuinit
    intel_mid: Move platform device setups to their own platform_.* files
    x86: intel-mid: Add section for sfi device table
    intel-mid: sfi: Allow struct devs_id.get_platform_data to be NULL
    intel_mid: Moved SFI related code to sfi.c
    intel_mid: Added custom handler for ipc devices
    intel_mid: Added custom device_handler support
    intel_mid: Refactored sfi_parse_devs() function
    intel_mid: Renamed *mrst* to *intel_mid*
    pci: intel_mid: Return true/false in function returning bool
    intel_mid: Renamed *mrst* to *intel_mid*
    mrst: Fixed indentation issues
    mrst: Fixed printk/pr_* related issues

    Linus Torvalds
     
  • Pull x86/hyperv changes from Ingo Molnar:
    "These changes enable Linux guests to boot as 'Modern VM' guest kernels
    on MS-Hyperv hosts"

    * 'x86-hyperv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, hyperv: Move a variable to avoid an unused variable warning
    x86, hyperv: Fix build error due to missing include
    x86, hyperv: Correctly guard the local APIC calibration code
    x86, hyperv: Get the local APIC timer frequency from the hypervisor

    Linus Torvalds
     
  • Pull x86 EFI changes from Ingo Molnar:
    "Main changes:

    - Add support for earlyprintk=efi which uses the EFI framebuffer.
    Very useful for debugging boot problems.

    - EFI stub support for large memory maps (more than 128 entries)

    - EFI ARM support - this was mostly done by generalizing x86 ARM
    platform differences, such as by moving x86 EFI code into
    drivers/firmware/efi/ and sharing it with ARM.

    - Documentation updates

    - misc fixes"

    * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
    x86/efi: Add EFI framebuffer earlyprintk support
    boot, efi: Remove redundant memset()
    x86/efi: Fix config_table_type array termination
    x86 efi: bugfix interrupt disabling sequence
    x86: EFI stub support for large memory maps
    efi: resolve warnings found on ARM compile
    efi: Fix types in EFI calls to match EFI function definitions.
    efi: Renames in handle_cmdline_files() to complete generalization.
    efi: Generalize handle_ramdisks() and rename to handle_cmdline_files().
    efi: Allow efi_free() to be called with size of 0
    efi: use efi_get_memory_map() to get final map for x86
    efi: generalize efi_get_memory_map()
    efi: Rename __get_map() to efi_get_memory_map()
    efi: Move unicode to ASCII conversion to shared function.
    efi: Generalize relocate_kernel() for use by other architectures.
    efi: Move relocate_kernel() to shared file.
    efi: Enforce minimum alignment of 1 page on allocations.
    efi: Rename memory allocation/free functions
    efi: Add system table pointer argument to shared functions.
    efi: Move common EFI stub code from x86 arch code to common location
    ...

    Linus Torvalds
     
  • Pull x86 cpu changes from Ingo Molnar:
    "The biggest change that stands out is the increase of the
    CONFIG_NR_CPUS range from 4096 to 8192 - as real hardware out there
    already went beyond 4k CPUs ...

    We only allow more than 512 CPUs if offstack cpumasks are enabled.

    CONFIG_MAXSMP=y remains to be the 'you are nuts!' extreme testcase,
    which now means a max of 8192 CPUs"

    * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/cpu: Increase max CPU count to 8192
    x86/cpu: Allow higher NR_CPUS values
    x86/cpu: Always print SMP information in /proc/cpuinfo
    x86/cpu: Track legacy CPU model data only on 32-bit kernels

    Linus Torvalds
     
  • Pull x86 cleanups from Ingo Molnar:
    "Two small cleanups"

    * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, msr: Use file_inode(), not f_mapping->host
    x86: mkpiggy.c: Explicitly close the output file

    Linus Torvalds
     
  • Pull x86 build changes from Ingo Molnar:
    "Two small changes"

    * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, defconfig: Add DEVTMPFS and DEVTMPFS_MOUNT to *86*_defconfig
    x86, build: move build output statistics away from stderr

    Linus Torvalds
     
  • Pull x86 boot changes from Ingo Molnar:
    "Two changes that prettify and compactify the SMP bootup output from:

    smpboot: Booting Node 0, Processors #1 #2 #3 OK
    smpboot: Booting Node 1, Processors #4 #5 #6 #7 OK
    smpboot: Booting Node 2, Processors #8 #9 #10 #11 OK
    smpboot: Booting Node 3, Processors #12 #13 #14 #15 OK
    Brought up 16 CPUs

    to something like:

    x86: Booting SMP configuration:
    .... node #0, CPUs: #1 #2 #3
    .... node #1, CPUs: #4 #5 #6 #7
    .... node #2, CPUs: #8 #9 #10 #11
    .... node #3, CPUs: #12 #13 #14 #15
    x86: Booted up 4 nodes, 16 CPUs"

    * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/boot: Further compress CPUs bootup message
    x86: Improve the printout of the SMP bootup CPU table

    Linus Torvalds
     
  • Pull x86 user access changes from Ingo Molnar:
    "This tree contains two copy_[from/to]_user() build time checking
    changes/enhancements from Jan Beulich.

    The desired outcome is to get better compiler warnings with
    CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y, to keep people from
    introducing bugs such as overflows and information leaks"

    * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86: Unify copy_to_user() and add size checking to it
    x86: Unify copy_from_user() size checking

    Linus Torvalds
     
  • Pull x86/apic fix from Ingo Molnar:
    "A single fix to the IO-APIC / local-APIC shutdown sequence"

    * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/apic: Disable I/O APIC before shutdown of the local APIC

    Linus Torvalds
     
  • Pull timer changes from Ingo Molnar:
    "Main changes in this cycle were:

    - Updated full dynticks support.

    - Event stream support for architected (ARM) timers.

    - ARM clocksource driver updates.

    - Move arm64 to using the generic sched_clock framework & resulting
    cleanup in the generic sched_clock code.

    - Misc fixes and cleanups"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (50 commits)
    x86/time: Honor ACPI FADT flag indicating absence of a CMOS RTC
    clocksource: sun4i: remove IRQF_DISABLED
    clocksource: sun4i: Report the minimum tick that we can program
    clocksource: sun4i: Select CLKSRC_MMIO
    clocksource: Provide timekeeping for efm32 SoCs
    clocksource: em_sti: convert to clk_prepare/unprepare
    time: Fix signedness bug in sysfs_get_uname() and its callers
    timekeeping: Fix some trivial typos in comments
    alarmtimer: return EINVAL instead of ENOTSUPP if rtcdev doesn't exist
    clocksource: arch_timer: Do not register arch_sys_counter twice
    timer stats: Add a 'Collection: active/inactive' line to timer usage statistics
    sched_clock: Remove sched_clock_func() hook
    arch_timer: Move to generic sched_clock framework
    clocksource: tcb_clksrc: Remove IRQF_DISABLED
    clocksource: tcb_clksrc: Improve driver robustness
    clocksource: tcb_clksrc: Replace clk_enable/disable with clk_prepare_enable/disable_unprepare
    clocksource: arm_arch_timer: Use clocksource for suspend timekeeping
    clocksource: dw_apb_timer_of: Mark a few more functions as __init
    clocksource: Put nodes passed to CLOCKSOURCE_OF_DECLARE callbacks centrally
    arm: zynq: Enable arm_global_timer
    ...

    Linus Torvalds
     
  • Pull scheduler changes from Ingo Molnar:
    "The main changes in this cycle are:

    - (much) improved CONFIG_NUMA_BALANCING support from Mel Gorman, Rik
    van Riel, Peter Zijlstra et al. Yay!

    - optimize preemption counter handling: merge the NEED_RESCHED flag
    into the preempt_count variable, by Peter Zijlstra.

    - wait.h fixes and code reorganization from Peter Zijlstra

    - cfs_bandwidth fixes from Ben Segall

    - SMP load-balancer cleanups from Peter Zijstra

    - idle balancer improvements from Jason Low

    - other fixes and cleanups"

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (129 commits)
    ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHED
    stop_machine: Fix race between stop_two_cpus() and stop_cpus()
    sched: Remove unnecessary iteration over sched domains to update nr_busy_cpus
    sched: Fix asymmetric scheduling for POWER7
    sched: Move completion code from core.c to completion.c
    sched: Move wait code from core.c to wait.c
    sched: Move wait.c into kernel/sched/
    sched/wait: Fix __wait_event_interruptible_lock_irq_timeout()
    sched: Avoid throttle_cfs_rq() racing with period_timer stopping
    sched: Guarantee new group-entities always have weight
    sched: Fix hrtimer_cancel()/rq->lock deadlock
    sched: Fix cfs_bandwidth misuse of hrtimer_expires_remaining
    sched: Fix race on toggling cfs_bandwidth_used
    sched: Remove extra put_online_cpus() inside sched_setaffinity()
    sched/rt: Fix task_tick_rt() comment
    sched/wait: Fix build breakage
    sched/wait: Introduce prepare_to_wait_event()
    sched/wait: Add ___wait_cond_timeout() to wait_event*_timeout() too
    sched: Remove get_online_cpus() usage
    sched: Fix race in migrate_swap_stop()
    ...

    Linus Torvalds
     
  • Pull perf updates from Ingo Molnar:
    "As a first remark I'd like to note that the way to build perf tooling
    has been simplified and sped up, in the future it should be enough for
    you to build perf via:

    cd tools/perf/
    make install

    (ie without the -j option.) The build system will figure out the
    number of CPUs and will do a parallel build+install.

    The various build system inefficiencies and breakages Linus reported
    against the v3.12 pull request should now be resolved - please
    (re-)report any remaining annoyances or bugs.

    Main changes on the perf kernel side:

    * Performance optimizations:
    . perf ring-buffer code optimizations, by Peter Zijlstra
    . perf ring-buffer code optimizations, by Oleg Nesterov
    . x86 NMI call-stack processing optimizations, by Peter Zijlstra
    . perf context-switch optimizations, by Peter Zijlstra
    . perf sampling speedups, by Peter Zijlstra
    . x86 Intel PEBS processing speedups, by Peter Zijlstra

    * Enhanced hardware support:
    . for Intel Ivy Bridge-EP uncore PMUs, by Zheng Yan
    . for Haswell transactions, by Andi Kleen, Peter Zijlstra

    * Core perf events code enhancements and fixes by Oleg Nesterov:
    . for uprobes, if fork() is called with pending ret-probes
    . for uprobes platform support code

    * New ABI details by Andi Kleen:
    . Report x86 Haswell TSX transaction abort cost as weight

    Main changes on the perf tooling side (some of these tooling changes
    utilize the above kernel side changes):

    * 'perf report/top' enhancements:

    . Convert callchain children list to rbtree, greatly reducing the
    time taken for callchain processing, from Namhyung Kim.

    . Add new COMM infrastructure, further improving histogram
    processing, from Frédéric Weisbecker, one fix from Namhyung Kim.

    . Add /proc/kcore based live-annotation improvements, including
    build-id cache support, multi map 'call' instruction navigation
    fixes, kcore address validation, objdump workarounds. From
    Adrian Hunter.

    . Show progress on histogram collapsing, that can take a long
    time, from Namhyung Kim.

    . Add --max-stack option to limit callchain stack scan in 'top'
    and 'report', improving callchain processing when reducing the
    stack depth is an option, from Waiman Long.

    . Add new option --ignore-vmlinux for perf top, from Willy
    Tarreau.

    * 'perf trace' enhancements:

    . 'perf trace' now can can use a 'perf probe' dynamic tracepoints
    to hook into the userspace -> kernel pathname copy so that it
    can map fds to pathnames without reading /proc/pid/fd/ symlinks.
    From Arnaldo Carvalho de Melo.

    . Show VFS path associated with fd in live sessions, using a
    'vfs_getname' 'perf probe' created dynamic tracepoint or by
    looking at /proc/pid/fd, from Arnaldo Carvalho de Melo.

    . Add 'trace' beautifiers for lots of syscall arguments, from
    Arnaldo Carvalho de Melo.

    . Implement more compact 'trace' output by suppressing zeroed
    args, from Arnaldo Carvalho de Melo.

    . Show thread COMM by default in 'trace', from Arnaldo Carvalho de
    Melo.

    . Add option to show full timestamp in 'trace', from David Ahern.

    . Add 'record' command in 'trace', to record raw_syscalls:*, from
    David Ahern.

    . Add summary option to dump syscall statistics in 'trace', from
    David Ahern.

    . Improve error messages in 'trace', providing hints about system
    configuration steps needed for using it, from Ramkumar
    Ramachandra.

    . 'perf trace' now emits hints as to why tracing is not possible,
    helping the user to setup the system to allow tracing in the
    desired permission granularity, telling if the problem is due to
    debugfs not being mounted or with not enough permission for
    !root, /proc/sys/kernel/perf_event_paranoit value, etc. From
    Arnaldo Carvalho de Melo.

    * 'perf record' enhancements:

    . Check maximum frequency rate for record/top, emitting better
    error messages, from Jiri Olsa.

    . 'perf record' code cleanups, from David Ahern.

    . Improve write_output error message in 'perf record', from Adrian
    Hunter.

    . Allow specifying B/K/M/G unit to the --mmap-pages arguments,
    from Jiri Olsa.

    . Fix command line callchain attribute tests to handle the new
    -g/--call-chain semantics, from Arnaldo Carvalho de Melo.

    * 'perf kvm' enhancements:

    . Disable live kvm command if timerfd is not supported, from David
    Ahern.

    . Fix detection of non-core features, from David Ahern.

    * 'perf list' enhancements:

    . Add usage to 'perf list', from David Ahern.

    . Show error in 'perf list' if tracepoints not available, from
    Pekka Enberg.

    * 'perf probe' enhancements:

    . Support "$vars" meta argument syntax for local variables,
    allowing asking for all possible variables at a given probe
    point to be collected when it hits, from Masami Hiramatsu.

    * 'perf sched' enhancements:

    . Address the root cause of that 'perf sched' stack initialization
    build slowdown, by programmatically setting a big array after
    moving the global variable back to the stack. Fix from Adrian
    Hunter.

    * 'perf script' enhancements:

    . Set up output options for in-stream attributes, from Adrian
    Hunter.

    . Print addr by default for BTS in 'perf script', from Adrian
    Juntmer

    * 'perf stat' enhancements:

    . Improved messages when doing profiling in all or a subset of
    CPUs using a workload as the session delimitator, as in:

    'perf stat --cpu 0,2 sleep 10s'

    from Arnaldo Carvalho de Melo.

    . Add units to nanosec-based counters in 'perf stat', from David
    Ahern.

    . Remove bogus info when using 'perf stat' -e cycles/instructions,
    from Ramkumar Ramachandra.

    * 'perf lock' enhancements:

    . 'perf lock' fixes and cleanups, from Davidlohr Bueso.

    * 'perf test' enhancements:

    . Fixup PERF_SAMPLE_TRANSACTION handling in sample synthesizing
    and 'perf test', from Adrian Hunter.

    . Clarify the "sample parsing" test entry, from Arnaldo Carvalho
    de Melo.

    . Consider PERF_SAMPLE_TRANSACTION in the "sample parsing" test,
    from Arnaldo Carvalho de Melo.

    . Memory leak fixes in 'perf test', from Felipe Pena.

    * 'perf bench' enhancements:

    . Change the procps visible command-name of invididual benchmark
    tests plus cleanups, from Ingo Molnar.

    * Generic perf tooling infrastructure/plumbing changes:

    . Separating data file properties from session, code
    reorganization from Jiri Olsa.

    . Fix version when building out of tree, as when using one of
    these:

    $ make help | grep perf
    perf-tar-src-pkg - Build perf-3.12.0.tar source tarball
    perf-targz-src-pkg - Build perf-3.12.0.tar.gz source tarball
    perf-tarbz2-src-pkg - Build perf-3.12.0.tar.bz2 source tarball
    perf-tarxz-src-pkg - Build perf-3.12.0.tar.xz source tarball
    $

    from David Ahern.

    . Enhance option parse error message, showing just the help lines
    of the options affected, from Namhyung Kim.

    . libtraceevent updates from upstream trace-cmd repo, from Steven
    Rostedt.

    . Always use perf_evsel__set_sample_bit to set sample_type, from
    Adrian Hunter.

    . Memory and mmap leak fixes from Chenggang Qin.

    . Assorted build fixes for from David Ahern and Jiri Olsa.

    . Speed up and prettify the build system, from Ingo Molnar.

    . Implement addr2line directly using libbfd, from Roberto Vitillo.

    . Separate the GTK support in a separate libperf-gtk.so DSO, that
    is only loaded when --gtk is specified, from Namhyung Kim.

    . perf bash completion fixes and improvements from Ramkumar
    Ramachandra.

    . Support for Openembedded/Yocto -dbg packages, from Ricardo
    Ribalda Delgado.

    And lots and lots of other fixes and code reorganizations that did not
    make it into the list, see the shortlog, diffstat and the Git log for
    details!"

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (300 commits)
    uprobes: Fix the memory out of bound overwrite in copy_insn()
    uprobes: Fix the wrong usage of current->utask in uprobe_copy_process()
    perf tools: Remove unneeded include
    perf record: Remove post_processing_offset variable
    perf record: Remove advance_output function
    perf record: Refactor feature handling into a separate function
    perf trace: Don't relookup fields by name in each sample
    perf tools: Fix version when building out of tree
    perf evsel: Ditch evsel->handler.data field
    uprobes: Export write_opcode() as uprobe_write_opcode()
    uprobes: Introduce arch_uprobe->ixol
    uprobes: Kill module_init() and module_exit()
    uprobes: Move function declarations out of arch
    perf/x86/intel: Add Ivy Bridge-EP uncore IRP box support
    perf/x86/intel/uncore: Add filter support for IvyBridge-EP QPI boxes
    perf: Factor out strncpy() in perf_event_mmap_event()
    tools/perf: Add required memory barriers
    perf: Fix arch_perf_out_copy_user default
    perf: Update a stale comment
    perf: Optimize perf_output_begin() -- address calculation
    ...

    Linus Torvalds
     
  • Pull leftover IRQ fixes from Ingo Molnar:
    "Two (minor) fixlets that missed v3.12"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    genirq: Set the irq thread policy without checking CAP_SYS_NICE
    irq: DocBook/genericirq.tmpl: Correct various typos

    Linus Torvalds
     
  • Pull IRQ changes from Ingo Molnar:
    "The biggest change this cycle are the softirq/hardirq stack
    interaction and nesting fixes, cleanups and reorganizations from
    Frederic. This is the longer followup story to the softirq nesting
    fix that is already upstream (commit ded797547548: "irq: Force hardirq
    exit's softirq processing on its own stack")"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip: bcm2835: Convert to use IRQCHIP_DECLARE macro
    powerpc: Tell about irq stack coverage
    x86: Tell about irq stack coverage
    irq: Optimize softirq stack selection in irq exit
    irq: Justify the various softirq stack choices
    irq: Improve a bit softirq debugging
    irq: Optimize call to softirq on hardirq exit
    irq: Consolidate do_softirq() arch overriden implementations
    x86/irq: Correct comment about i8259 initialization

    Linus Torvalds
     
  • Pull RCU updates from Ingo Molnar:
    "The main RCU changes in this cycle are:

    - Idle entry/exit changes, to throttle callback execution and other
    refinements to speed up kbuild, primarily to address performance
    issues located by Tibor Billes.

    - Grace-period related changes, primarily to aid in debugging,
    inspired by an -rt debugging session.

    - Code reorganization moving RCU's source files into its own
    kernel/rcu/ directory.

    - RCU documentation updates

    - Miscellaneous fixes.

    Note, the following commit:

    5c889690aa08 mm: Place preemption point in do_mlockall() loop

    is identical to the commit already in your tree via email:

    22356f447ceb mm: Place preemption point in do_mlockall() loop

    [ Your version of the changelog nicely demonstrates it how kernel oops
    messages should be trimmed properly :-/ ]"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits)
    rcu: Move RCU-related source code to kernel/rcu directory
    rcu: Fix occurrence of "the the" in checklist.txt
    kthread: Add pointer to vmstat-avoidance patch
    rcu: Update stall-warning documentation
    rcu: Consistent rcu_is_watching() naming
    rcu: Change EXPORT_SYMBOL() to EXPORT_SYMBOL_GPL()
    rcu: Is it safe to enter an RCU read-side critical section?
    rcu: Throttle invoke_rcu_core() invocations due to non-lazy callbacks
    rcu: Throttle rcu_try_advance_all_cbs() execution
    rcu: Remove redundant code from rcu_cleanup_after_idle()
    rcu: Fix CONFIG_RCU_NOCB_CPU_ALL panic on machines with sparse CPU mask
    rcu: Avoid sparse warnings in rcu_nocb_wake trace event
    rcu: Track rcu_nocb_kthread()'s sleeping and awakening
    rcu: Distinguish between NOCB and non-NOCB rcu_callback trace events
    rcu: Add tracing for rcuo no-CBs CPU wakeup handshake
    rcu: Add tracing of normal (non-NOCB) grace-period requests
    rcu: Add tracing to rcu_gp_kthread()
    rcu: Flag lockless access to ->gp_flags with ACCESS_ONCE()
    rcu: Prevent spurious-wakeup DoS attack on rcu_gp_kthread()
    rcu: Improve grace-period start logic
    ...

    Linus Torvalds
     
  • This reverts commit 8eba18428ac926f436064ac281e76d36d51bd631.

    uv_trace() is not used by anything, nor is uv_trace_nmi_func, nor
    uv_trace_func.

    That's not how we do instrumentation code in the kernel: we add
    tracepoints, printk()s, etc. so that everyone not just those with
    magic kernel modules can debug a system.

    So remove this unused (and misguied) piece of code.

    Signed-off-by: Ingo Molnar
    Cc: Mike Travis
    Cc: Dimitri Sivanich
    Cc: Hedi Berriche
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc: Jason Wessel
    Link: http://lkml.kernel.org/n/tip-tumfBffmr4jmnt8Gyxanoblg@git.kernel.org

    Ingo Molnar
     

11 Nov, 2013

10 commits

  • Since the introduction of PREEMPT_NEED_RESCHED in:

    f27dde8deef3 ("sched: Add NEED_RESCHED to the preempt_count")

    we need to be able to look at both TIF_NEED_RESCHED and
    PREEMPT_NEED_RESCHED to understand the full preemption behaviour.

    Add it to the trace output.

    Signed-off-by: Peter Zijlstra
    Acked-by: Steven Rostedt
    Cc: Fengguang Wu
    Cc: Huang Ying
    Cc: Yuanhan Liu
    Link: http://lkml.kernel.org/r/20131004152826.GP3081@twins.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • There is a race between stop_two_cpus, and the global stop_cpus.

    It is possible for two CPUs to get their stopper functions queued
    "backwards" from one another, resulting in the stopper threads
    getting stuck, and the system hanging. This can happen because
    queuing up stoppers is not synchronized.

    This patch adds synchronization between stop_cpus (a rare operation),
    and stop_two_cpus.

    Reported-and-Tested-by: Prarit Bhargava
    Signed-off-by: Rik van Riel
    Signed-off-by: Peter Zijlstra
    Acked-by: Mel Gorman
    Link: http://lkml.kernel.org/r/20131101104146.03d1e043@annuminas.surriel.com
    Signed-off-by: Ingo Molnar

    Rik van Riel
     
  • Randconfig build by Fengguang's robot army reported:

    drivers/built-in.o: In function `extlog_print':
    >> acpi_extlog.c:(.text+0xcc719): undefined reference to `boot_cpu_physical_apicid'

    The config had CONFIG_SMP=n so we picked up this definition from:

    : #define cpu_physical_id(cpu) boot_cpu_physical_apicid

    But boot_cpu_physical_apicid is defined in arch/x86/kernel/apic/apic.c
    which is only built if CONFIG_X86_LOCAL_APIC=y.

    Reported-by: Fengguang Wu
    Signed-off-by: Tony Luck
    Cc: Chen Gong
    Cc: Rafael J. Wysocki
    Link: http://lkml.kernel.org/r/6be3afdcad7968f7fb7c0b681e547b3e872e44dd.1383947368.git.tony.luck@intel.com
    Signed-off-by: Ingo Molnar

    Luck, Tony
     
  • Pull ARC changes from Vineet Gupta:
    - Towards a working SMP setup (ASID allocation, TLB Flush,...)
    - Support for TRACE_IRQFLAGS, LOCKDEP
    - cacheflush backend consolidation for I/D
    - Lots of allmodconfig fixlets from Chen
    - Other improvements/fixes

    * tag 'arc-v3.13-rc1-part1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc: (25 commits)
    ARC: [plat-arcfpga] defconfig update
    smp, ARC: kill SMP single function call interrupt
    ARC: [SMP] Disallow RTSC
    ARC: [SMP] Fix build failures for large NR_CPUS
    ARC: [SMP] enlarge possible NR_CPUS
    ARC: [SMP] TLB flush
    ARC: [SMP] ASID allocation
    arc: export symbol for pm_power_off in reset.c
    arc: export symbol for save_stack_trace() in stacktrace.c
    arc: remove '__init' for get_hw_config_num_irq()
    arc: remove '__init' for first_lines_of_secondary()
    arc: remove '__init' for setup_processor() and arc_init_IRQ()
    arc: kgdb: add default implementation for kgdb_roundup_cpus()
    ARC: Fix bogus gcc warning and micro-optimise TLB iteration loop
    ARC: Add support for irqflags tracing and lockdep
    ARC: Reset the value of Interrupt Priority Register
    ARC: Reduce #ifdef'ery for unaligned access emulation
    ARC: Change calling convention of do_page_fault()
    ARC: cacheflush optim - PTAG can be loop invariant if V-P is const
    ARC: cacheflush refactor #3: Unify the {d,i}cache flush leaf helpers
    ...

    Linus Torvalds
     
  • Pull m68k updates from Geert Uytterhoeven:
    "Summary:
    - __put_user_unaligned may/will be used by btrfs
    - m68k part of a global cleanup"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: Remove deprecated IRQF_DISABLED
    m68k/m68knommu: Implement __get_user_unaligned/__put_user_unaligned()

    Linus Torvalds
     
  • Pull parisc update from Helge Deller:
    - a bugfix for sticon (parisc text console driver) to not crash the
    64bit kernel on machines with more than 4GB RAM
    - added kernel audit support
    - made udelay() implementation SMP-safe
    - "make install" now does not depend on vmlinux
    - added defconfigs for 32- and 64-kernels

    * 'parisc-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: add generic 32- and 64-bit defconfigs
    parisc: sticon - unbreak on 64bit kernel
    parisc: signal fixup - SIGBUS vs. SIGSEGV
    parisc: implement full version of access_ok()
    parisc: correctly display number of active CPUs
    parisc: do not count IPI calls twice
    parisc: make udelay() SMP-safe
    parisc: remove duplicate define
    parisc: make "make install" not depend on vmlinux
    parisc: add kernel audit feature
    parisc: provide macro to create exception table entries

    Linus Torvalds
     
  • …g/misc into perf/core

    Pull uprobes fixes from Oleg Nesterov.

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • Pull ARM SoC DT updates from Olof Johansson:
    "Most of this branch consists of updates, additions and general churn
    of the device tree source files in the kernel (arch/arm/boot/dts).
    Besides that, there are a few things to point out:

    - Lots of platform conversion on OMAP2+, with removal of old board
    files for various platforms.
    - Final conversion of a bunch of ux500 (ST-Ericsson) platforms as
    well
    - Some updates to pinctrl and other subsystems. Most of these are
    for DT-enablement of the various platforms and acks have been
    collected"

    * tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (385 commits)
    ARM: dts: bcm11351: Use GIC/IRQ defines for sdio interrupts
    ARM: dts: bcm: Add missing UARTs for bcm11351 (bcm281xx)
    ARM: dts: bcm281xx: Add card detect GPIO
    ARM: dts: rename ARCH_BCM to ARCH_BCM_MOBILE (dt)
    ARM: bcm281xx: Add device node for the GPIO controller
    ARM: mvebu: Add Netgear ReadyNAS 104 board
    ARM: tegra: fix Tegra114 IOMMU register address
    ARM: kirkwood: add support for OpenBlocks A7 platform
    ARM: dts: omap4-panda: add DPI pinmuxing
    ARM: dts: AM33xx: Add RNG node
    ARM: dts: AM33XX: Add hwspinlock node
    ARM: dts: OMAP5: Add hwspinlock node
    ARM: dts: OMAP4: Add hwspinlock node
    ARM: dts: use 'status' property for PCIe nodes
    ARM: dts: sirf: add missed address-cells and size-cells for prima2 I2C
    ARM: dts: sirf: add missed cell, cs and dma channel for SPI nodes
    ARM: dts: sirf: add missed graphics2d iobg in atlas6 dts
    ARM: dts: sirf: add missed chhifbg node in prima2 and atlas6 dts
    ARM: dts: sirf: add missed memcontrol-monitor node in prima2 and atlas6 dts
    ARM: mvebu: Add the core-divider clock to Armada 370/XP
    ...

    Linus Torvalds
     
  • Pull ARM driver updates from Olof Johansson:
    "Updates of SoC-near drivers and other driver updates that makes more
    sense to take through our tree. In this case it's involved:

    - Some Davinci driver updates that has required corresponding
    platform code changes (gpio mostly)
    - CCI bindings and a few driver updates
    - Marvell mvebu patches for PCI MSI support (could have gone through
    the PCI tree for this release, but they were acked by Bjorn for
    3.12 so we kept them through arm-soc).
    - Marvell dove switch-over to DT-based PCIe configuration
    - Misc updates for Samsung platform dmaengine drivers"

    * tag 'drivers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (32 commits)
    ARM: S3C24XX: add dma pdata for s3c2410, s3c2440 and s3c2442
    dmaengine: s3c24xx-dma: add support for the s3c2410 type of controller
    ARM: S3C24XX: Fix possible dma selection warning
    PCI: mvebu: make local functions static
    PCI: mvebu: add I/O access wrappers
    PCI: mvebu: Dynamically detect if the PEX link is up to enable hot plug
    ARM: mvebu: fix gated clock documentation
    ARM: dove: remove legacy pcie and clock init
    ARM: dove: switch to DT probed mbus address windows
    ARM: SAMSUNG: set s3c24xx_dma_filter for s3c64xx-spi0 device
    ARM: S3C24XX: add platform-devices for new dma driver for s3c2412 and s3c2443
    dmaengine: add driver for Samsung s3c24xx SoCs
    ARM: S3C24XX: number the dma clocks
    PCI: mvebu: add support for Marvell Dove SoCs
    PCI: mvebu: add support for reset on GPIO
    PCI: mvebu: remove subsys_initcall
    PCI: mvebu: increment nports only for registered ports
    PCI: mvebu: move clock enable before register access
    PCI: mvebu: add support for MSI
    irqchip: armada-370-xp: implement MSI support
    ...

    Linus Torvalds
     
  • Pull ARM SoC board updates from Olof Johansson:
    "Board-related updates. This branch is getting smaller and smaller,
    which is the whole idea so that's reassuring.

    Right now by far most of the code is related to shmobile updates, and
    they are now switching over to removal of board code and migration to
    multiplatform, so we'll see their board code base shrink in the near
    future too, I hope.

    In addition to that is some defconfig updates, some display updates
    for OMAP and a bit of new board support for Rockchip boards"

    * tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (56 commits)
    ARM: rockchip: add support for rk3188 and Radxa Rock board
    ARM: rockchip: add dts for bqcurie2 tablet
    ARM: rockchip: enable arm-global-timer
    ARM: rockchip: move shared dt properties to common source file
    ARM: OMAP2+: display: Create omap_vout device inside omap_display_init
    ARM: OMAP2+: display: Create omapvrfb and omapfb devices inside omap_display_init
    ARM: OMAP2+: display: Create omapdrm device inside omap_display_init
    ARM: OMAP2+: drm: Don't build device for DMM
    ARM: tegra: defconfig updates
    RX-51: Add support for OMAP3 ROM Random Number Generator
    ARM: OMAP3: RX-51: ARM errata 430973 workaround
    ARM: OMAP3: Add secure function omap_smc3() which calling instruction smc #1
    ARM: shmobile: marzen: enable INTC IRQ
    ARM: shmobile: bockw: add SMSC support on reference
    ARM: shmobile: Use SMP on Koelsch
    ARM: shmobile: Remove KZM9D reference DTS
    ARM: shmobile: Let KZM9D multiplatform boot with KZM9D DTB
    ARM: shmobile: Remove non-multiplatform KZM9D reference support
    ARM: shmobile: Use KZM9D without reference for multiplatform
    ARM: shmobile: Sync KZM9D DTS with KZM9D reference DTS
    ...

    Linus Torvalds