1. 08 5月, 2013 4 次提交
    • H
      parisc: more irq statistics in /proc/interrupts · cd85d551
      Helge Deller 提交于
      Add framework and initial values for more fine grained statistics in
      /proc/interrupts.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      cd85d551
    • H
      parisc: implement irq stacks · 200c8804
      Helge Deller 提交于
      Default kernel stack size on parisc is 16k.  During tests we found that the
      kernel stack can easily grow beyond 13k, which leaves 3k left for irq
      processing.
      
      This patch adds the possibility to activate an additional stack of 16k per CPU
      which is being used during irq processing.  This implementation does not yet
      uses this irq stack for the irq bh handler.
      
      The assembler code for call_on_stack was heavily cleaned up by John
      David Anglin.
      
      CC: John David Anglin <dave.anglin@bell.net>
      Signed-off-by: NHelge Deller <deller@gmx.de>
      200c8804
    • H
      parisc: add kernel stack overflow check · 9372450c
      Helge Deller 提交于
      Add the CONFIG_DEBUG_STACKOVERFLOW config option to enable checks to
      detect kernel stack overflows.
      
      Stack overflows can not be detected reliable since we do not want to
      introduce too much overhead.
      
      Instead, during irq processing in do_cpu_irq_mask() we check kernel
      stack usage of the interrupted kernel process. Kernel threads can be
      easily detected by checking the value of space register 7 (sr7) which
      is zero when running inside the kernel.
      
      Since THREAD_SIZE is 16k and PAGE_SIZE is 4k, reduce the alignment of
      the init thread to the lower value (PAGE_SIZE) in the kernel
      vmlinux.ld.S linker script.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      9372450c
    • J
      parisc: only re-enable interrupts if we need to schedule or deliver signals... · c207a76b
      John David Anglin 提交于
      parisc: only re-enable interrupts if we need to schedule or deliver signals when returning to userspace
      
      Helge and I have found that we have a kernel stack overflow problem
      which causes a variety of random failures.
      Currently, we re-enable interrupts when returning from an external
      interrupt incase we need to schedule or delivery
      signals.  As a result, a potentially unlimited number of interrupts
      can occur while we are running on the kernel
      stack.  It is very limited in space (currently, 16k).  This change
      defers enabling interrupts until we have
      actually decided to schedule or delivery signals.  This only occurs
      when we about to return to userspace.  This
      limits the number of interrupts on the kernel stack to one.  In other
      cases, interrupts remain disabled until the
      final return from interrupt (rfi).
      Signed-off-by: NJohn David Anglin  <dave.anglin@bell.net>
      Signed-off-by: NHelge Deller <deller@gmx.de>
      c207a76b
  2. 07 5月, 2013 8 次提交
  3. 06 5月, 2013 8 次提交
    • L
      Merge tag 'mfd-3.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-next · d7ab7302
      Linus Torvalds 提交于
      Pull MFD update from Samuel Ortiz:
       "For 3.10 we have a few new MFD drivers for:
      
         - The ChromeOS embedded controller which provides keyboard, battery
           and power management services.  This controller is accessible
           through i2c or SPI.
      
         - Silicon Laboratories 476x controller, providing access to their FM
           chipset and their audio codec.
      
         - Realtek's RTS5249, a memory stick, MMC and SD/SDIO PCI based
           reader.
      
         - Nokia's Tahvo power button and watchdog device.  This device is
           very similar to Retu and is thus supported by the same code base.
      
         - STMicroelectronics STMPE1801, a keyboard and GPIO controller
           supported by the stmpe driver.
      
         - ST-Ericsson AB8540 and AB8505 power management and voltage
           converter controllers through the existing ab8500 code.
      
        Some other drivers got cleaned up or improved.  In particular:
      
         - The Linaro/STE guys got the ab8500 driver in sync with their
           internal code through a series of optimizations, fixes and
           improvements.
      
         - The AS3711 and OMAP USB drivers now have DT support.
      
         - The arizona clock and interrupt handling code got improved.
      
         - The wm5102 register patch and boot mechanism also got improved."
      
      * tag 'mfd-3.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-next: (104 commits)
        mfd: si476x: Don't use 0bNNN
        mfd: vexpress: Handle pending config transactions
        mfd: ab8500: Export ab8500_gpadc_sw_hw_convert properly
        mfd: si476x: Fix i2c warning
        mfd: si476x: Add header files and Kbuild plumbing
        mfd: si476x: Add chip properties handling code
        mfd: si476x: Add the bulk of the core driver
        mfd: si476x: Add commands abstraction layer
        mfd: rtsx: Support RTS5249
        mfd: retu: Add Tahvo support
        mfd: ucb1400: Pass ucb1400-gpio data through ac97 bus
        mfd: wm8994: Add some OF properties
        mfd: wm8994: Add device ID data to WM8994 OF device IDs
        input: Export matrix_keypad_parse_of_params()
        mfd: tps65090: Add compatible string for charger subnode
        mfd: db8500-prcmu: Support platform dependant device selection
        mfd: syscon: Fix warnings when printing resource_size_t
        of: Add stub of_get_parent for non-OF builds
        mfd: omap-usb-tll: Convert to devm_ioremap_resource()
        mfd: omap-usb-host: Convert to devm_ioremap_resource()
        ...
      d7ab7302
    • L
      Merge tag 'kvm-3.10-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 01227a88
      Linus Torvalds 提交于
      Pull kvm updates from Gleb Natapov:
       "Highlights of the updates are:
      
        general:
         - new emulated device API
         - legacy device assignment is now optional
         - irqfd interface is more generic and can be shared between arches
      
        x86:
         - VMCS shadow support and other nested VMX improvements
         - APIC virtualization and Posted Interrupt hardware support
         - Optimize mmio spte zapping
      
        ppc:
          - BookE: in-kernel MPIC emulation with irqfd support
          - Book3S: in-kernel XICS emulation (incomplete)
          - Book3S: HV: migration fixes
          - BookE: more debug support preparation
          - BookE: e6500 support
      
        ARM:
         - reworking of Hyp idmaps
      
        s390:
         - ioeventfd for virtio-ccw
      
        And many other bug fixes, cleanups and improvements"
      
      * tag 'kvm-3.10-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (204 commits)
        kvm: Add compat_ioctl for device control API
        KVM: x86: Account for failing enable_irq_window for NMI window request
        KVM: PPC: Book3S: Add API for in-kernel XICS emulation
        kvm/ppc/mpic: fix missing unlock in set_base_addr()
        kvm/ppc: Hold srcu lock when calling kvm_io_bus_read/write
        kvm/ppc/mpic: remove users
        kvm/ppc/mpic: fix mmio region lists when multiple guests used
        kvm/ppc/mpic: remove default routes from documentation
        kvm: KVM_CAP_IOMMU only available with device assignment
        ARM: KVM: iterate over all CPUs for CPU compatibility check
        KVM: ARM: Fix spelling in error message
        ARM: KVM: define KVM_ARM_MAX_VCPUS unconditionally
        KVM: ARM: Fix API documentation for ONE_REG encoding
        ARM: KVM: promote vfp_host pointer to generic host cpu context
        ARM: KVM: add architecture specific hook for capabilities
        ARM: KVM: perform HYP initilization for hotplugged CPUs
        ARM: KVM: switch to a dual-step HYP init code
        ARM: KVM: rework HYP page table freeing
        ARM: KVM: enforce maximum size for identity mapped code
        ARM: KVM: move to a KVM provided HYP idmap
        ...
      01227a88
    • D
      Give the OID registry file module info to avoid kernel tainting · 9e687946
      David Howells 提交于
      Give the OID registry file module information so that it doesn't taint the
      kernel when compiled as a module and loaded.
      Reported-by: NDros Adamson <Weston.Adamson@netapp.com>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      cc: Trond Myklebust <Trond.Myklebust@netapp.com>
      cc: stable@vger.kernel.org
      cc: linux-nfs@vger.kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9e687946
    • L
      Merge branch 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 534c97b0
      Linus Torvalds 提交于
      Pull 'full dynticks' support from Ingo Molnar:
       "This tree from Frederic Weisbecker adds a new, (exciting! :-) core
        kernel feature to the timer and scheduler subsystems: 'full dynticks',
        or CONFIG_NO_HZ_FULL=y.
      
        This feature extends the nohz variable-size timer tick feature from
        idle to busy CPUs (running at most one task) as well, potentially
        reducing the number of timer interrupts significantly.
      
        This feature got motivated by real-time folks and the -rt tree, but
        the general utility and motivation of full-dynticks runs wider than
        that:
      
         - HPC workloads get faster: CPUs running a single task should be able
           to utilize a maximum amount of CPU power.  A periodic timer tick at
           HZ=1000 can cause a constant overhead of up to 1.0%.  This feature
           removes that overhead - and speeds up the system by 0.5%-1.0% on
           typical distro configs even on modern systems.
      
         - Real-time workload latency reduction: CPUs running critical tasks
           should experience as little jitter as possible.  The last remaining
           source of kernel-related jitter was the periodic timer tick.
      
         - A single task executing on a CPU is a pretty common situation,
           especially with an increasing number of cores/CPUs, so this feature
           helps desktop and mobile workloads as well.
      
        The cost of the feature is mainly related to increased timer
        reprogramming overhead when a CPU switches its tick period, and thus
        slightly longer to-idle and from-idle latency.
      
        Configuration-wise a third mode of operation is added to the existing
        two NOHZ kconfig modes:
      
         - CONFIG_HZ_PERIODIC: [formerly !CONFIG_NO_HZ], now explicitly named
           as a config option.  This is the traditional Linux periodic tick
           design: there's a HZ tick going on all the time, regardless of
           whether a CPU is idle or not.
      
         - CONFIG_NO_HZ_IDLE: [formerly CONFIG_NO_HZ=y], this turns off the
           periodic tick when a CPU enters idle mode.
      
         - CONFIG_NO_HZ_FULL: this new mode, in addition to turning off the
           tick when a CPU is idle, also slows the tick down to 1 Hz (one
           timer interrupt per second) when only a single task is running on a
           CPU.
      
        The .config behavior is compatible: existing !CONFIG_NO_HZ and
        CONFIG_NO_HZ=y settings get translated to the new values, without the
        user having to configure anything.  CONFIG_NO_HZ_FULL is turned off by
        default.
      
        This feature is based on a lot of infrastructure work that has been
        steadily going upstream in the last 2-3 cycles: related RCU support
        and non-periodic cputime support in particular is upstream already.
      
        This tree adds the final pieces and activates the feature.  The pull
        request is marked RFC because:
      
         - it's marked 64-bit only at the moment - the 32-bit support patch is
           small but did not get ready in time.
      
         - it has a number of fresh commits that came in after the merge
           window.  The overwhelming majority of commits are from before the
           merge window, but still some aspects of the tree are fresh and so I
           marked it RFC.
      
         - it's a pretty wide-reaching feature with lots of effects - and
           while the components have been in testing for some time, the full
           combination is still not very widely used.  That it's default-off
           should reduce its regression abilities and obviously there are no
           known regressions with CONFIG_NO_HZ_FULL=y enabled either.
      
         - the feature is not completely idempotent: there is no 100%
           equivalent replacement for a periodic scheduler/timer tick.  In
           particular there's ongoing work to map out and reduce its effects
           on scheduler load-balancing and statistics.  This should not impact
           correctness though, there are no known regressions related to this
           feature at this point.
      
         - it's a pretty ambitious feature that with time will likely be
           enabled by most Linux distros, and we'd like you to make input on
           its design/implementation, if you dislike some aspect we missed.
           Without flaming us to crisp! :-)
      
        Future plans:
      
         - there's ongoing work to reduce 1Hz to 0Hz, to essentially shut off
           the periodic tick altogether when there's a single busy task on a
           CPU.  We'd first like 1 Hz to be exposed more widely before we go
           for the 0 Hz target though.
      
         - once we reach 0 Hz we can remove the periodic tick assumption from
           nr_running>=2 as well, by essentially interrupting busy tasks only
           as frequently as the sched_latency constraints require us to do -
           once every 4-40 msecs, depending on nr_running.
      
        I am personally leaning towards biting the bullet and doing this in
        v3.10, like the -rt tree this effort has been going on for too long -
        but the final word is up to you as usual.
      
        More technical details can be found in Documentation/timers/NO_HZ.txt"
      
      * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (39 commits)
        sched: Keep at least 1 tick per second for active dynticks tasks
        rcu: Fix full dynticks' dependency on wide RCU nocb mode
        nohz: Protect smp_processor_id() in tick_nohz_task_switch()
        nohz_full: Add documentation.
        cputime_nsecs: use math64.h for nsec resolution conversion helpers
        nohz: Select VIRT_CPU_ACCOUNTING_GEN from full dynticks config
        nohz: Reduce overhead under high-freq idling patterns
        nohz: Remove full dynticks' superfluous dependency on RCU tree
        nohz: Fix unavailable tick_stop tracepoint in dynticks idle
        nohz: Add basic tracing
        nohz: Select wide RCU nocb for full dynticks
        nohz: Disable the tick when irq resume in full dynticks CPU
        nohz: Re-evaluate the tick for the new task after a context switch
        nohz: Prepare to stop the tick on irq exit
        nohz: Implement full dynticks kick
        nohz: Re-evaluate the tick from the scheduler IPI
        sched: New helper to prevent from stopping the tick in full dynticks
        sched: Kick full dynticks CPU that have more than one task enqueued.
        perf: New helper to prevent full dynticks CPUs from stopping tick
        perf: Kick full dynticks CPU if events rotation is needed
        ...
      534c97b0
    • L
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 64049d19
      Linus Torvalds 提交于
      Pull perf fixes from Ingo Molnar:
       "Misc fixes plus a small hw-enablement patch for Intel IB model 58
        uncore events"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel/lbr: Demand proper privileges for PERF_SAMPLE_BRANCH_KERNEL
        perf/x86/intel/lbr: Fix LBR filter
        perf/x86: Blacklist all MEM_*_RETIRED events for Ivy Bridge
        perf: Fix vmalloc ring buffer pages handling
        perf/x86/intel: Fix unintended variable name reuse
        perf/x86/intel: Add support for IvyBridge model 58 Uncore
        perf/x86/intel: Fix typo in perf_event_intel_uncore.c
        x86: Eliminate irq_mis_count counted in arch_irq_stat
      64049d19
    • L
      Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · f8ce1faf
      Linus Torvalds 提交于
      Pull mudule updates from Rusty Russell:
       "We get rid of the general module prefix confusion with a binary config
        option, fix a remove/insert race which Never Happens, and (my
        favorite) handle the case when we have too many modules for a single
        commandline.  Seriously, the kernel is full, please go away!"
      
      * tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
        modpost: fix unwanted VMLINUX_SYMBOL_STR expansion
        X.509: Support parse long form of length octets in Authority Key Identifier
        module: don't unlink the module until we've removed all exposure.
        kernel: kallsyms: memory override issue, need check destination buffer length
        MODSIGN: do not send garbage to stderr when enabling modules signature
        modpost: handle huge numbers of modules.
        modpost: add -T option to read module names from file/stdin.
        modpost: minor cleanup.
        genksyms: pass symbol-prefix instead of arch
        module: fix symbol versioning with symbol prefixes
        CONFIG_SYMBOL_PREFIX: cleanup.
      f8ce1faf
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 24d0c254
      Linus Torvalds 提交于
      Pull single_open() leak fixes from Al Viro:
       "A bunch of fixes for a moderately common class of bugs: file with
        single_open() done by its ->open() and seq_release as its ->release().
      
        That leaks; fortunately, it's not _too_ common (either people manage
        to RTFM that says "When using single_open(), the programmer should use
        single_release() instead of seq_release() in the file_operations
        structure to avoid a memory leak", or they just copy a correct
        instance), but grepping through the tree has caught quite a pile.
      
        All of that is, AFAICS, -stable fodder, for as far as the patches
        apply.  I tried to carve it up into reasonably-sized pieces (more or
        less "comes from the same tree")"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        rcutrace: single_open() leaks
        gadget: single_open() leaks
        staging: single_open() leaks
        megaraid: single_open() leak
        wireless: single_open() leaks
        input: single_open() leak
        rtc: single_open() leaks
        ds1620: single_open() leak
        sh: single_open() leaks
        parisc: single_open() leaks
        mips: single_open() leaks
        ia64: single_open() leaks
        h8300: single_open() leaks
        cris: single_open() leaks
        arm: single_open() leaks
      24d0c254
    • L
      Merge branch 'ipc-cleanups' · 802d0db8
      Linus Torvalds 提交于
      Merge ipc fixes and cleanups from my IPC branch.
      
      The ipc locking has always been pretty ugly, and the scalability fixes
      to some degree made it even less readable.  We had two cases of double
      unlocks in error paths due to this (one rcu read unlock, one semaphore
      unlock), and this fixes the bugs I found while trying to clean things up
      a bit so that we are less likely to have more.
      
      * ipc-cleanups:
        ipc: simplify rcu_read_lock() in semctl_nolock()
        ipc: simplify semtimedop/semctl_main() common error path handling
        ipc: move sem_obtain_lock() rcu locking into the only caller
        ipc: fix double sem unlock in semctl error path
        ipc: move the rcu_read_lock() from sem_lock_and_putref() into callers
        ipc: sem_putref() does not need the semaphore lock any more
        ipc: move rcu_read_unlock() out of sem_unlock() and into callers
      802d0db8
  4. 05 5月, 2013 20 次提交