19 Nov, 2013

5 commits

  • When raid5 recovery hits a fresh badblock, this badblock will flagged as unack
    badblock until md_update_sb() is called.
    But md_stop will take reconfig lock which means raid5d can't call
    md_update_sb() in md_check_recovery(), the badblock will always
    be unack, so raid5d thread enters an infinite loop and md_stop_write()
    can never stop sync_thread. This causes deadlock.

    To solve this, when STOP_ARRAY ioctl is issued and sync_thread is
    running, we need set md->recovery FROZEN and INTR flags and wait for
    sync_thread to stop before we (re)take reconfig lock.

    This requires that raid5 reshape_request notices MD_RECOVERY_INTR
    (which it probably should have noticed anyway) and stops waiting for a
    metadata update in that case.

    Reported-by: Jianpeng Ma
    Reported-by: Bian Yu
    Signed-off-by: NeilBrown

    NeilBrown
     
  • We currently use kthread_should_stop() in various places in the
    sync/reshape code to abort early.
    However some places set MD_RECOVERY_INTR but don't immediately call
    md_reap_sync_thread() (and we will shortly get another one).
    When this happens we are relying on md_check_recovery() to reap the
    thread and that only happen when it finishes normally.
    So MD_RECOVERY_INTR must lead to a normal finish without the
    kthread_should_stop() test.

    So replace all relevant tests, and be more careful when the thread is
    interrupted not to acknowledge that latest step in a reshape as it may
    not be fully committed yet.

    Also add a test on MD_RECOVERY_INTR in the 'is_mddev_idle' loop
    so we don't wait have to wait for the speed to drop before we can abort.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • Sometimes we need to lock and mddev and cannot cope with
    failure due to interrupt.
    In these cases we should use mutex_lock, not mutex_lock_interruptible.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • Because of block layer merge, one bio fails will cause other bios
    which belongs to the same request fails, so raid5_end_read_request
    will record all these bios as badblocks.
    If retry request with R5_ReadNoMerge flag to avoid bios merge,
    badblocks can only record sector which is bad exactly.

    test:
    hdparm --yes-i-know-what-i-am-doing --make-bad-sector 300000 /dev/sdb
    mdadm -C /dev/md0 -l5 -n3 /dev/sd[bcd] --assume-clean
    mdadm /dev/md0 -f /dev/sdd
    mdadm /dev/md0 -r /dev/sdd
    mdadm --zero-superblock /dev/sdd
    mdadm /dev/md0 -a /dev/sdd

    1. Without this patch:
    cat /sys/block/md0/md/rd*/bad_blocks
    299776 256
    299776 256

    2. With this patch:
    cat /sys/block/md0/md/rd*/bad_blocks
    300000 8
    300000 8

    Signed-off-by: Bian Yu
    Signed-off-by: NeilBrown

    Bian Yu
     
  • track empty inactive list count, so md_raid5_congested() can use it to make
    decision.

    Signed-off-by: Shaohua Li
    Signed-off-by: NeilBrown

    Shaohua Li
     

14 Nov, 2013

5 commits

  • get_active_stripe() is the last place we have lock contention. It has two
    paths. One is stripe isn't found and new stripe is allocated, the other is
    stripe is found.

    The first path basically calls __find_stripe and init_stripe. It accesses
    conf->generation, conf->previous_raid_disks, conf->raid_disks,
    conf->prev_chunk_sectors, conf->chunk_sectors, conf->max_degraded,
    conf->prev_algo, conf->algorithm, the stripe_hashtbl and inactive_list. Except
    stripe_hashtbl and inactive_list, other fields are changed very rarely.

    With this patch, we split inactive_list and add new hash locks. Each free
    stripe belongs to a specific inactive list. Which inactive list is determined
    by stripe's lock_hash. Note, even a stripe hasn't a sector assigned, it has a
    lock_hash assigned. Stripe's inactive list is protected by a hash lock, which
    is determined by it's lock_hash too. The lock_hash is derivied from current
    stripe_hashtbl hash, which guarantees any stripe_hashtbl list will be assigned
    to a specific lock_hash, so we can use new hash lock to protect stripe_hashtbl
    list too. The goal of the new hash locks introduced is we can only use the new
    locks in the first path of get_active_stripe(). Since we have several hash
    locks, lock contention is relieved significantly.

    The first path of get_active_stripe() accesses other fields, since they are
    changed rarely, changing them now need take conf->device_lock and all hash
    locks. For a slow path, this isn't a problem.

    If we need lock device_lock and hash lock, we always lock hash lock first. The
    tricky part is release_stripe and friends. We need take device_lock first.
    Neil's suggestion is we put inactive stripes to a temporary list and readd it
    to inactive_list after device_lock is released. In this way, we add stripes to
    temporary list with device_lock hold and remove stripes from the list with hash
    lock hold. So we don't allow concurrent access to the temporary list, which
    means we need allocate temporary list for all participants of release_stripe.

    One downside is free stripes are maintained in their inactive list, they can't
    across between the lists. By default, we have total 256 stripes and 8 lists, so
    each list will have 32 stripes. It's possible one list has free stripe but
    other list hasn't. The chance should be rare because stripes allocation are
    even distributed. And we can always allocate more stripes for cache, several
    mega bytes memory isn't a big deal.

    This completely removes the lock contention of the first path of
    get_active_stripe(). It slows down the second code path a little bit though
    because we now need takes two locks, but since the hash lock isn't contended,
    the overhead should be quite small (several atomic instructions). The second
    path of get_active_stripe() (basically sequential write or big request size
    randwrite) still has lock contentions.

    Signed-off-by: Shaohua Li
    Signed-off-by: NeilBrown

    Shaohua Li
     
  • Add a new API wait_event_cmd(). It's a variant of wait_even() with two
    commands executed. One is executed before sleep, another after sleep.

    Modified to match use wait.h approach based on suggestion by
    Peter Zijlstra - neilb

    Signed-off-by: Shaohua Li
    Signed-off-by: NeilBrown

    Shaohua Li
     
  • If raid5_start_reshape errors out, we need to reset all the fields
    that were updated (not just some), and need to use the seq_counter
    to ensure make_request() doesn't use an inconsitent state.

    Signed-off-by: NeilBrown

    NeilBrown
     
  • The various ->run routines of md personalities assume that the 'queue'
    has been initialised by the blk_set_stacking_limits() call in
    md_alloc().

    However when the level is changed (by level_store()) the ->run routine
    for the new level is called for an array which has already had the
    stacking limits modified. This can result in incorrect final
    settings.

    So call blk_set_stacking_limits() before ->run in level_store().

    A specific consequence of this bug is that it causes
    discard_granularity to be set incorrectly when reshaping a RAID4 to a
    RAID0.

    This is suitable for any -stable kernel since 3.3 in which
    blk_set_stacking_limits() was introduced.

    Cc: stable@vger.kernel.org (3.3+)
    Reported-and-tested-by: "Baldysiak, Pawel"
    Signed-off-by: NeilBrown

    NeilBrown
     
  • When release_stripe() is called in grow_one_stripe(), the
    mddev->thread is null. So it will omit one wakeup this thread to
    release stripe.
    For this condition, use slow_path to release stripe.

    Bug was introduced in 3.12

    Cc: stable@vger.kernel.org (3.12+)
    Fixes: 773ca82fa1ee58dd1bf88b
    Signed-off-by: Jianpeng Ma
    Signed-off-by: NeilBrown

    majianpeng
     

12 Nov, 2013

5 commits

  • 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
     

11 Nov, 2013

14 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
     
  • 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
     
  • Pull ARM SoC platform changes from Olof Johansson:
    "New and updated SoC support. Among the things new for this release
    are:

    - More support for the AM33xx platforms from TI
    - Tegra 124 support, and some updates to older tegra families as well
    - imx cleanups and updates across the board
    - A rename of Broadcom's Mobile platforms which were introduced as
    ARCH_BCM, and turned out to be too broad a name. New name is
    ARCH_BCM_MOBILE.
    - A whole bunch of updates and fixes for integrator, making the
    platform code more modern and switches over to DT-only booting.
    - Support for two new Renesas shmobile chipsets. Next up for them is
    more work on consolidation instead of introduction of new
    non-multiplatform SoCs, we're all looking forward to that!
    - Misc cleanups for older Samsung platforms, some Allwinner updates,
    etc"

    * tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (159 commits)
    ARM: bcm281xx: Add ARCH_BCM_MOBILE to bcm config
    ARM: bcm_defconfig: Run "make savedefconfig"
    ARM: bcm281xx: Add ARCH Timers to config
    rename ARCH_BCM to ARCH_BCM_MOBILE (mach-bcm)
    ARM: vexpress: Enable platform-specific options in defconfig
    ARM: vexpress: Make defconfig work again
    ARM: sunxi: remove .init_time hooks
    ARM: imx: enable suspend for imx6sl
    ARM: imx: ensure dsm_request signal is not asserted when setting LPM
    ARM: imx6q: call WB and RBC configuration from imx6q_pm_enter()
    ARM: imx6q: move low-power code out of clock driver
    ARM: imx: drop extern with function prototypes in common.h
    ARM: imx: reset core along with enable/disable operation
    ARM: imx: do not return from imx_cpu_die() call
    ARM: imx_v6_v7_defconfig: Select CONFIG_PROVE_LOCKING
    ARM: imx_v6_v7_defconfig: Enable LEDS_GPIO related options
    ARM: mxs_defconfig: Turn off CONFIG_DEBUG_GPIO
    ARM: imx: replace imx6q_restart() with mxc_restart()
    ARM: mach-imx: mm-imx5: Retrieve iomuxc base address from dt
    ARM: mach-imx: mm-imx5: Retrieve tzic base address from dt
    ...

    Linus Torvalds
     
  • Pull ARM SoC cleanups from Olof Johansson:
    "This branch contains code cleanups, moves and removals for 3.13.

    Qualcomm msm targets had a bunch of code removal for legacy non-DT
    platforms. Nomadik saw more device tree conversions and cleanup of
    old code. Tegra has some code refactoring, etc.

    One longish patch series from Sebastian Hasselbarth changes the
    init_time hooks and tries to use a generic implementation for most
    platforms, since they were all doing more or less the same things.

    Finally the "shark" platform is removed in this release. It's been
    abandoned for a while and nobody seems to care enough to keep it
    around. If someone comes along and wants to resurrect it, the removal
    can easily be reverted and code brought back.

    Beyond this, mostly a bunch of removals of stale content across the
    board, etc"

    * tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (79 commits)
    ARM: gemini: convert to GENERIC_CLOCKEVENTS
    ARM: EXYNOS: remove CONFIG_MACH_EXYNOS[4, 5]_DT config options
    ARM: OMAP3: control: add API for setting IVA bootmode
    ARM: OMAP3: CM/control: move CM scratchpad save to CM driver
    ARM: OMAP3: McBSP: do not access CM register directly
    ARM: OMAP3: clock: add API to enable/disable autoidle for a single clock
    ARM: OMAP2: CM/PM: remove direct register accesses outside CM code
    MAINTAINERS: Add patterns for DTS files for AT91
    ARM: at91: remove init_machine() as default is suitable
    ARM: at91/dt: split sama5d3 peripheral definitions
    ARM: at91/dt: split sam9x5 peripheral definitions
    ARM: Remove temporary sched_clock.h header
    ARM: clps711x: Use linux/sched_clock.h
    MAINTAINERS: Add DTS files to patterns for Samsung platform
    ARM: EXYNOS: remove unnecessary header inclusions from exynos4/5 dt machine file
    ARM: tegra: fix ARCH_TEGRA_114_SOC select sort order
    clk: nomadik: fix missing __init on nomadik_src_init
    ARM: drop explicit selection of HAVE_CLK and CLKDEV_LOOKUP
    ARM: S3C64XX: Kill CONFIG_PLAT_S3C64XX
    ASoC: samsung: Use CONFIG_ARCH_S3C64XX to check for S3C64XX support
    ...

    Linus Torvalds
     
  • Pull ARM SoC low-priority fixes from Olof Johansson:
    "A set of fixes for various platforms that weren't considered bad
    enough to include in 3.12 (nor -stable). Mostly simple typo fixes,
    etc"

    * tag 'fixes-nc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: OMAP2+: irq, AM33XX add missing register check
    ARM: OMAP2+: wakeupgen: AM43x adaptation
    ARM: OMAP1: Fix a bunch of GPIO related section warnings after initdata got corrected
    ARM: dts: fix PL330 MDMA1 address in DT for Universal C210 board
    ARM: dts: Work around lack of cpufreq regulator lookup for exynos4210-origen and trats boards
    ARM: dts: Fix typo earlyprintk in exynos5440-sd5v1 and ssdk5440 boards
    ARM: dts: Correct typo in use of samsung,pin-drv for exynos5250
    ARM: rockchip: remove obsolete rockchip,config properties
    ARM: rockchip: fix wrong use of non-existent CONFIG_LOCAL_TIMERS
    ARM: mach-omap1: Fix omap1510_fpga_init_irq() implicit declarations.
    ARM: OMAP1: fix incorrect placement of __initdata tag
    ARM: OMAP: remove deprecated IRQF_DISABLED
    ARM: OMAP2+: throw the die id into the entropy pool

    Linus Torvalds
     
  • Pull ARM64 update from Catalin Marinas:
    "Main features:
    - Ticket-based spinlock implementation and lockless lockref support
    - Big endian support
    - CPU hotplug support, currently for PSCI (Power State Coordination
    Interface) capable firmware
    - Virtual address space extended to 42-bit in the 64K page
    configuration (maximum VA space with 2 levels of page tables)
    - Compat (AArch32) kuser helpers updated to ARMv8 (make use of
    load-acquire/store-release instructions)
    - Code cleanup, defconfig update and minor fixes"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-aarch64: (43 commits)
    ARM64: /proc/interrupts: display IPIs of online CPUs only
    arm64: locks: Remove CONFIG_GENERIC_LOCKBREAK
    arm64: KVM: vgic: byteswap GICv2 access on world switch if BE
    arm64: KVM: initialize HYP mode following the kernel endianness
    arm64: compat: Clear the IT state independent of the 32-bit ARM or Thumb-2 mode
    arm64: Use 42-bit address space with 64K pages
    arm64: module: ensure instruction is little-endian before manipulation
    arm64: defconfig: Enable CONFIG_PREEMPT by default
    arm64: fix access to preempt_count from assembly code
    arm64: move enabling of GIC before CPUs are set online
    arm64: use generic RW_DATA_SECTION macro in linker script
    arm64: Slightly improve the warning on CPU0 enable-method
    ARM64: simplify cpu_read_bootcpu_ops using OF/DT helper
    ARM64: DT: define ARM64 specific arch_match_cpu_phys_id
    arm64: allow ioremap_cache() to use existing RAM mappings
    arm64: update 32-bit kuser helpers to ARMv8
    arm64: perf: fix event number mask
    arm64: kconfig: allow CPU_BIG_ENDIAN to be selected
    arm64: Fix the endianness of arch_spinlock_t
    arm64: big-endian: write CPU holding pen address as LE
    ...

    Linus Torvalds
     
  • Pull gfs2 updates from Steven Whitehouse:
    "The main feature of interest this time is quota updates. There are
    some clean ups and some patches to use the new generic lru list code.

    There is still plenty of scope for some further changes in due course -
    faster lookups of quota structures is very much on the todo list.
    Also, a start has been made towards the more tricky issue of using the
    generic lru code with glocks, but that will have to be completed in a
    subsequent merge window.

    The other, more minor feature, is that there have been a number of
    performance patches which relate to block allocation. In particular
    they will improve performance when the disk is nearly full"

    * tag 'gfs2-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:
    GFS2: Use generic list_lru for quota
    GFS2: Rename quota qd_lru_lock qd_lock
    GFS2: Use reflink for quota data cache
    GFS2: Use lockref for glocks
    GFS2: Protect quota sync generation
    GFS2: Inline qd_trylock into gfs2_quota_unlock
    GFS2: Make two similar quota code fragments into a function
    GFS2: Remove obsolete quota tunable
    GFS2: Move gfs2_icbit_munge into quota.c
    GFS2: Speed up starting point selection for block allocation
    GFS2: Add allocation parameters structure
    GFS2: Clean up reservation removal
    GFS2: fix dentry leaks
    GFS2: new function gfs2_rbm_incr
    GFS2: Introduce rbm field bii
    GFS2: Do not reset flags on active reservations
    GFS2: introduce bi_blocks for optimization
    GFS2: optimize rbm_from_block wrt bi_start
    GFS2: d_splice_alias() can't return error

    Linus Torvalds
     

10 Nov, 2013

2 commits

  • 1. copy_insn() doesn't look very nice, all calculations are
    confusing and it is not immediately clear why do we read
    the 2nd page first.

    2. The usage of inode->i_size is wrong on 32-bit machines.

    3. "Instruction at end of binary" logic is simply wrong, it
    doesn't handle the case when uprobe->offset > inode->i_size.

    In this case "bytes" overflows, and __copy_insn() writes to
    the memory outside of uprobe->arch.insn.

    Yes, uprobe_register() checks i_size_read(), but this file
    can be truncated after that. All i_size checks are racy, we
    do this only to catch the obvious mistakes.

    Change copy_insn() to call __copy_insn() in a loop, simplify
    and fix the bytes/nbytes calculations.

    Note: we do not care if we read extra bytes after inode->i_size
    if we got the valid page. This is fine because the task gets the
    same page after page-fault, and arch_uprobe_analyze_insn() can't
    know how many bytes were actually read anyway.

    Signed-off-by: Oleg Nesterov

    Oleg Nesterov
     
  • Commit aa59c53fd459 "uprobes: Change uprobe_copy_process() to dup
    xol_area" has a stupid typo, we need to setup t->utask->vaddr but
    the code wrongly uses current->utask.

    Even with this bug dup_xol_work() works "in practice", but only
    because get_unmapped_area(NULL, TASK_SIZE - PAGE_SIZE) likely
    returns the same address every time.

    Signed-off-by: Oleg Nesterov

    Oleg Nesterov
     

08 Nov, 2013

9 commits

  • …it/rostedt/linux-trace

    Pull perf/ftrace fix from Steven Rostedt:
    "Dave Jones's trinity program was able to enable the function tracer
    from a normal user account via the perf syscall "perf_event_open()".
    When I was able to reproduce it with trinity, I was able to track down
    exactly how it happened.

    I discovered that the check for whether the function tracepoint should
    be activated or not was using the "perf_paranoid_kernel()" check which
    by default, lets the user continue. The user should not by default be
    able to enable function tracing.

    The fix is to use "perf_paranoid_tracepoint_raw()" which will not let
    the user enable function tracing. This is a security fix as normal
    users should never be allowed to enable the function tracer"

    * tag 'ftrace-urgent-3.12-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    perf/ftrace: Fix paranoid level for enabling function tracer

    Linus Torvalds
     
  • Pull MIPS updates from Ralf Baechle:
    - Some minor work bringing the Cobalt MIPS platforms in line with other
    MIPS platforms
    - Make vmlinux.32 and vmlinux.64 build messages less verbose
    - Always register the R4k clocksource when selected, the clock source's
    rating will decide if this or another clock source is actually going
    to be used
    - Drop support for the Cisco (formerly Scientific Atlanta) PowerTV
    platform. There appears to be nobody left who cares and the USB
    driver went stale while waiting for years to be merged
    - Some cleanup of Loongson 2 related #ifdefery
    - Various minor cleanups
    - Major rework on all things related to tracing / ptrace on MIPS,
    including switching the MIPS ELF core dumper to regsets, enabling the
    entries for SIGSYS in struct siginfo for MIPS, enabling ftrace
    syscall trace points
    - Some more work to bring DECstation support code in line with other
    more modern code
    - Report the name of the detected CPU, not just its CP0 PrID value
    - Some more BCM 47xx and atheros ath79xx work
    - Support for compressed kernels using the XZ compression scheme

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (53 commits)
    MIPS: remove duplicate define
    MIPS: Random whitespace clean-ups
    MIPS: traps: Reformat notify_die invocations to 80 columns.
    MIPS: Print correct PC in trace dump after NMI exception
    MIPS: kernel: cpu-probe: Report CPU id during probe
    MIPS: Remove unused defines in piix4.h
    MIPS: Get rid of hard-coded values for Malta PIIX4 fixups
    MIPS: Always register R4K clock when selected
    MIPS: Loongson: Get rid of Loongson 2 #ifdefery all over arch/mips.
    MIPS: cacheops.h: Increase indentation by one tab.
    MIPS: Remove bogus BUG_ON()
    MIPS: PowerTV: Remove support code.
    MIPS: ftrace: Add support for syscall tracepoints.
    MIPS: ptrace: Switch syscall reporting to tracehook_report_syscall_entry().
    MIPS: Move audit_arch() helper function to __syscall_get_arch().
    MIPS: Enable HAVE_ARCH_TRACEHOOK.
    MIPS: Switch ELF core dumper to use regsets.
    MIPS: Implement task_user_regset_view.
    MIPS: ptrace: Use tracehook helpers.
    MIPS: O32 / 32-bit: Always copy 4 stack arguments.
    ...

    Linus Torvalds
     
  • Pull s390 updates from Martin Schwidefsky:
    "The bulk of the patches for the 3.13 merge window.

    Heiko spent quite a bit of work to improve the code generation for the
    kernel. That includes the exploitation of the interlocked-access
    facility for the atomics and bitops implementation and the improvement
    for the -march and -mtune compiler settings.

    Another important change is the removal of the user_mode=home option,
    user processes now always run in primary space. The storage keys are
    not initialized at system startup any more, with that the storage key
    removal work is complete. For the PCI support the hibernation hooks
    have been implemented.

    And as usual cleanup and fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (62 commits)
    s390/scm_blk: fix endless loop for requests != REQ_TYPE_FS
    s390/mm,tlb: correct tlb flush on page table upgrade
    s390/mm: page_table_realloc returns failure
    s390: allow to set gcc -mtune flag
    s390/percpu: remove this_cpu_xor() implementation
    s390/vtime: correct idle time calculation
    s390/time: fix get_tod_clock_ext inline assembly
    tty/hvc_iucv: remove redundant NULL check
    s390/dasd: Write to profile data area only if it is available
    s390: convert use of typedef ctl_table to struct ctl_table
    s390/pci: cleanup function information block
    s390/pci: remove CONFIG_PCI_DEBUG dependancy
    s390/pci: message cleanup
    Update default configuration
    s390: add a couple of useful defconfigs
    s390/percpu: make use of interlocked-access facility 1 instructions
    s390/percpu: use generic percpu ops for CONFIG_32BIT
    s390/compat: make psw32_user_bits a constant value again
    s390: fix handling of runtime instrumentation psw bit
    s390: fix save and restore of the floating-point-control register
    ...

    Linus Torvalds
     
  • New defconfigs which should be able to boot on any 32/64bit machine.
    Many drivers are selected to be compiled-in to avoid the need for an
    additional initrd and still being able to boot.

    Signed-off-by: Helge Deller

    Helge Deller
     
  • STI text console (sticon) was broken on 64bit machines with more than
    4GB RAM and this lead in some cases to a kernel crash.

    Since sticon uses the 32bit STI API it needs to keep pointers to memory
    below 4GB. But on a 64bit kernel some memory regions (e.g. the kernel
    stack) might be above 4GB which then may crash the kernel in the STI
    functions.

    Additionally sticon didn't selected the built-in framebuffer fonts by
    default. This is now fixed.

    On a side-note: Theoretically we could enhance the sticon driver to
    use the 64bit STI API. But - beside the fact that some machines don't
    provide a 64bit STI ROM - this would just add complexity.

    Signed-off-by: Helge Deller
    Cc: stable@vger.kernel.org # 3.8+

    Helge Deller
     
  • Clean up code to send correct signal on invalid memory accesses:
    Send SIGBUS instead of SIGSEGV for memory accesses outside of mmap'ed
    areas

    This fixes the mmap13 testcase from the Linux Test Project.

    Signed-off-by: Helge Deller

    Helge Deller
     
  • Up to now PA-RISC could live with a trivial version of access_ok().
    Our fault handlers can correctly handle fault cases.

    But testcases showed that we need a better access check else we won't
    always return correct errno failure codes to userspace.

    Problem showed up during 32bit userspace tests in which writev() used a
    32bit memory area and length which would then wrap around on 64bit
    kernel.

    Signed-off-by: Helge Deller

    Helge Deller
     
  • In case we fail to power up other CPUs in a SMP system, the kernel
    currently shows a wrong number of online CPUs. This change makes the
    output more verbose on how many of the CPUs are online. Example:

    CPU(s): 1 out of 2 PA8800 (Mako) at 900.000000 MHz online.

    Signed-off-by: Helge Deller

    Helge Deller
     
  • The number of IPI calls is already visible as per-cpu IPI irq counters
    in/proc/cpuinfo, so let's drop this additional counting.

    This partly reverts:
    cd85d55 parisc: more irq statistics in /proc/interrupts

    Signed-off-by: Helge Deller

    Helge Deller