22 Feb, 2013

10 commits

  • Merge misc patches from Andrew Morton:

    - Florian has vanished so I appear to have become fbdev maintainer
    again :(

    - Joel and Mark are distracted to welcome to the new OCFS2 maintainer

    - The backlight queue

    - Small core kernel changes

    - lib/ updates

    - The rtc queue

    - Various random bits

    * akpm: (164 commits)
    rtc: rtc-davinci: use devm_*() functions
    rtc: rtc-max8997: use devm_request_threaded_irq()
    rtc: rtc-max8907: use devm_request_threaded_irq()
    rtc: rtc-da9052: use devm_request_threaded_irq()
    rtc: rtc-wm831x: use devm_request_threaded_irq()
    rtc: rtc-tps80031: use devm_request_threaded_irq()
    rtc: rtc-lp8788: use devm_request_threaded_irq()
    rtc: rtc-coh901331: use devm_clk_get()
    rtc: rtc-vt8500: use devm_*() functions
    rtc: rtc-tps6586x: use devm_request_threaded_irq()
    rtc: rtc-imxdi: use devm_clk_get()
    rtc: rtc-cmos: use dev_warn()/dev_dbg() instead of printk()/pr_debug()
    rtc: rtc-pcf8583: use dev_warn() instead of printk()
    rtc: rtc-sun4v: use pr_warn() instead of printk()
    rtc: rtc-vr41xx: use dev_info() instead of printk()
    rtc: rtc-rs5c313: use pr_err() instead of printk()
    rtc: rtc-at91rm9200: use dev_dbg()/dev_err() instead of printk()/pr_debug()
    rtc: rtc-rs5c372: use dev_dbg()/dev_warn() instead of printk()/pr_debug()
    rtc: rtc-ds2404: use dev_err() instead of printk()
    rtc: rtc-efi: use dev_err()/dev_warn()/pr_err() instead of printk()
    ...

    Linus Torvalds
     
  • We can use user_ns, which is also assigned from task_cred_xxx(tsk,
    user_ns), at the beginning of copy_namespaces().

    Signed-off-by: Yuanhan Liu
    Acked-by: Serge Hallyn
    Cc: "Eric W. Biederman"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yuanhan Liu
     
  • Remove a tabstop from the switch statement, in the usual fashion. A few
    instances of weirdwrapping were removed as a result.

    Cc: Chen Gang
    Cc: Cyrill Gorcunov
    Acked-by: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • arg2 will never < 0, for its type is 'unsigned long'

    Also, use the provided macros.

    Signed-off-by: Chen Gang
    Reported-by: Cyrill Gorcunov
    Acked-by: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chen Gang
     
  • I'm testing swapout workload in a two-socket Xeon machine. The workload
    has 10 threads, each thread sequentially accesses separate memory
    region. TLB flush overhead is very big in the workload. For each page,
    page reclaim need move it from active lru list and then unmap it. Both
    need a TLB flush. And this is a multthread workload, TLB flush happens
    in 10 CPUs. In X86, TLB flush uses generic smp_call)function. So this
    workload stress smp_call_function_many heavily.

    Without patch, perf shows:
    + 24.49% [k] generic_smp_call_function_interrupt
    - 21.72% [k] _raw_spin_lock
    - _raw_spin_lock
    + 79.80% __page_check_address
    + 6.42% generic_smp_call_function_interrupt
    + 3.31% get_swap_page
    + 2.37% free_pcppages_bulk
    + 1.75% handle_pte_fault
    + 1.54% put_super
    + 1.41% grab_super_passive
    + 1.36% __swap_duplicate
    + 0.68% blk_flush_plug_list
    + 0.62% swap_info_get
    + 6.55% [k] flush_tlb_func
    + 6.46% [k] smp_call_function_many
    + 5.09% [k] call_function_interrupt
    + 4.75% [k] default_send_IPI_mask_sequence_phys
    + 2.18% [k] find_next_bit

    swapout throughput is around 1300M/s.

    With the patch, perf shows:
    - 27.23% [k] _raw_spin_lock
    - _raw_spin_lock
    + 80.53% __page_check_address
    + 8.39% generic_smp_call_function_single_interrupt
    + 2.44% get_swap_page
    + 1.76% free_pcppages_bulk
    + 1.40% handle_pte_fault
    + 1.15% __swap_duplicate
    + 1.05% put_super
    + 0.98% grab_super_passive
    + 0.86% blk_flush_plug_list
    + 0.57% swap_info_get
    + 8.25% [k] default_send_IPI_mask_sequence_phys
    + 7.55% [k] call_function_interrupt
    + 7.47% [k] smp_call_function_many
    + 7.25% [k] flush_tlb_func
    + 3.81% [k] _raw_spin_lock_irqsave
    + 3.78% [k] generic_smp_call_function_single_interrupt

    swapout throughput is around 1400M/s. So there is around a 7%
    improvement, and total cpu utilization doesn't change.

    Without the patch, cfd_data is shared by all CPUs.
    generic_smp_call_function_interrupt does read/write cfd_data several times
    which will create a lot of cache ping-pong. With the patch, the data
    becomes per-cpu. The ping-pong is avoided. And from the perf data, this
    doesn't make call_single_queue lock contend.

    Next step is to remove generic_smp_call_function_interrupt() from arch
    code.

    Signed-off-by: Shaohua Li
    Cc: Peter Zijlstra
    Cc: Ingo Molnar
    Cc: Steven Rostedt
    Cc: Jens Axboe
    Cc: Linus Torvalds
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Shaohua Li
     
  • How is the compiler even handling exported functions that are marked
    inline? Anyway, these shouldn't be inline because of that, so remove
    that marking.

    Based on a larger patch by Mark Charlebois to get LLVM to build the
    kernel.

    Cc: Thomas Gleixner
    Cc: Mark Charlebois
    Cc: Paul Gortmaker
    Cc: hank
    Cc: John Stultz
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Greg Kroah-Hartman
     
  • The copy_to_user() call returns the number of bytes remaining but we
    want to return -EFAULT on error.

    Fixes "x32: fix waitid()"

    Signed-off-by: Dan Carpenter
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dan Carpenter
     
  • Pull ARM SoC cleanups from Arnd Bergmann:
    "A large number of cleanups, all over the platforms. This is dominated
    largely by the Samsung platforms (s3c, s5p, exynos) and a few of the
    others moving code out of arch/arm into more appropriate subsystems.

    The clocksource and irqchip drivers are now abstracted to the point
    where platforms that are already cleaned up do not need to even
    specify the driver they use, it can all get configured from the device
    tree as we do for normal device drivers. The clocksource changes
    basically touch every single platform in the process.

    We further clean up the use of platform specific header files here,
    with the goal of turning more of the platforms over to being
    "multiplatform" enabled, which implies that they cannot expose their
    headers to architecture independent code any more.

    It is expected that no functional changes are part of the cleanup.
    The overall reduction in total code lines is mostly the result of
    removing broken and obsolete code."

    * tag 'cleanup' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (133 commits)
    ARM: mvebu: correct gated clock documentation
    ARM: kirkwood: add missing include for nsa310
    ARM: exynos: move exynos4210-combiner to drivers/irqchip
    mfd: db8500-prcmu: update resource passing
    drivers/db8500-cpufreq: delete dangling include
    ARM: at91: remove NEOCORE 926 board
    sunxi: Cleanup the reset code and add meaningful registers defines
    ARM: S3C24XX: header mach/regs-mem.h local
    ARM: S3C24XX: header mach/regs-power.h local
    ARM: S3C24XX: header mach/regs-s3c2412-mem.h local
    ARM: S3C24XX: Remove plat-s3c24xx directory in arch/arm/
    ARM: S3C24XX: transform s3c2443 subirqs into new structure
    ARM: S3C24XX: modify s3c2443 irq init to initialize all irqs
    ARM: S3C24XX: move s3c2443 irq code to irq.c
    ARM: S3C24XX: transform s3c2416 irqs into new structure
    ARM: S3C24XX: modify s3c2416 irq init to initialize all irqs
    ARM: S3C24XX: move s3c2416 irq init to common irq code
    ARM: S3C24XX: Modify s3c_irq_wake to use the hwirq property
    ARM: S3C24XX: Move irq syscore-ops to irq-pm
    clocksource: always define CLOCKSOURCE_OF_DECLARE
    ...

    Linus Torvalds
     
  • Pull tty/serial patches from Greg Kroah-Hartman:
    "Here's the big tty/serial driver patches for 3.9-rc1.

    More tty port rework and fixes from Jiri here, as well as lots of
    individual serial driver updates and fixes.

    All of these have been in the linux-next tree for a while."

    * tag 'tty-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (140 commits)
    tty: mxser: improve error handling in mxser_probe() and mxser_module_init()
    serial: imx: fix uninitialized variable warning
    serial: tegra: assume CONFIG_OF
    TTY: do not update atime/mtime on read/write
    lguest: select CONFIG_TTY to build properly.
    ARM defconfigs: add missing inclusions of linux/platform_device.h
    fb/exynos: include platform_device.h
    ARM: sa1100/assabet: include platform_device.h directly
    serial: imx: Fix recursive locking bug
    pps: Fix build breakage from decoupling pps from tty
    tty: Remove ancient hardpps()
    pps: Additional cleanups in uart_handle_dcd_change
    pps: Move timestamp read into PPS code proper
    pps: Don't crash the machine when exiting will do
    pps: Fix a use-after free bug when unregistering a source.
    pps: Use pps_lookup_dev to reduce ldisc coupling
    pps: Add pps_lookup_dev() function
    tty: serial: uartlite: Support uartlite on big and little endian systems
    tty: serial: uartlite: Fix sparse and checkpatch warnings
    serial/arc-uart: Miscll DT related updates (Grant's review comments)
    ...

    Fix up trivial conflicts, mostly just due to the TTY config option
    clashing with the EXPERIMENTAL removal.

    Linus Torvalds
     
  • Pull driver core patches from Greg Kroah-Hartman:
    "Here is the big driver core merge for 3.9-rc1

    There are two major series here, both of which touch lots of drivers
    all over the kernel, and will cause you some merge conflicts:

    - add a new function called devm_ioremap_resource() to properly be
    able to check return values.

    - remove CONFIG_EXPERIMENTAL

    Other than those patches, there's not much here, some minor fixes and
    updates"

    Fix up trivial conflicts

    * tag 'driver-core-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)
    base: memory: fix soft/hard_offline_page permissions
    drivercore: Fix ordering between deferred_probe and exiting initcalls
    backlight: fix class_find_device() arguments
    TTY: mark tty_get_device call with the proper const values
    driver-core: constify data for class_find_device()
    firmware: Ignore abort check when no user-helper is used
    firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER
    firmware: Make user-mode helper optional
    firmware: Refactoring for splitting user-mode helper code
    Driver core: treat unregistered bus_types as having no devices
    watchdog: Convert to devm_ioremap_resource()
    thermal: Convert to devm_ioremap_resource()
    spi: Convert to devm_ioremap_resource()
    power: Convert to devm_ioremap_resource()
    mtd: Convert to devm_ioremap_resource()
    mmc: Convert to devm_ioremap_resource()
    mfd: Convert to devm_ioremap_resource()
    media: Convert to devm_ioremap_resource()
    iommu: Convert to devm_ioremap_resource()
    drm: Convert to devm_ioremap_resource()
    ...

    Linus Torvalds
     

21 Feb, 2013

4 commits

  • Pull networking update from David Miller:

    1) Checkpoint/restarted TCP sockets now can properly propagate the TCP
    timestamp offset. From Andrey Vagin.

    2) VMWARE VM VSOCK layer, from Andy King.

    3) Much improved support for virtual functions and SR-IOV in bnx2x,
    from Ariel ELior.

    4) All protocols on ipv4 and ipv6 are now network namespace aware, and
    all the compatability checks for initial-namespace-only protocols is
    removed. Thanks to Tom Parkin for helping deal with the last major
    holdout, L2TP.

    5) IPV6 support in netpoll and network namespace support in pktgen,
    from Cong Wang.

    6) Multiple Registration Protocol (MRP) and Multiple VLAN Registration
    Protocol (MVRP) support, from David Ward.

    7) Compute packet lengths more accurately in the packet scheduler, from
    Eric Dumazet.

    8) Use per-task page fragment allocator in skb_append_datato_frags(),
    also from Eric Dumazet.

    9) Add support for connection tracking labels in netfilter, from
    Florian Westphal.

    10) Fix default multicast group joining on ipv6, and add anti-spoofing
    checks to 6to4 and 6rd. From Hannes Frederic Sowa.

    11) Make ipv4/ipv6 fragmentation memory limits more reasonable in modern
    times, rearrange inet frag datastructures for better cacheline
    locality, and move more operations outside of locking. From Jesper
    Dangaard Brouer.

    12) Instead of strict master slave relationships, allow arbitrary
    scenerios with "upper device lists". From Jiri Pirko.

    13) Improve rate limiting accuracy in TBF and act_police, also from Jiri
    Pirko.

    14) Add a BPF filter netfilter match target, from Willem de Bruijn.

    15) Orphan and delete a bunch of pre-historic networking drivers from
    Paul Gortmaker.

    16) Add TSO support for GRE tunnels, from Pravin B SHelar. Although
    this still needs some minor bug fixing before it's %100 correct in
    all cases.

    17) Handle unresolved IPSEC states like ARP, with a resolution packet
    queue. From Steffen Klassert.

    18) Remove TCP Appropriate Byte Count support (ABC), from Stephen
    Hemminger. This was long overdue.

    19) Support SO_REUSEPORT, from Tom Herbert.

    20) Allow locking a socket BPF filter, so that it cannot change after a
    process drops capabilities.

    21) Add VLAN filtering to bridge, from Vlad Yasevich.

    22) Bring ipv6 on-par with ipv4 and do not cache neighbour entries in
    the ipv6 routes, from YOSHIFUJI Hideaki.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1538 commits)
    ipv6: fix race condition regarding dst->expires and dst->from.
    net: fix a wrong assignment in skb_split()
    ip_gre: remove an extra dst_release()
    ppp: set qdisc_tx_busylock to avoid LOCKDEP splat
    atl1c: restore buffer state
    net: fix a build failure when !CONFIG_PROC_FS
    net: ipv4: fix waring -Wunused-variable
    net: proc: fix build failed when procfs is not configured
    Revert "xen: netback: remove redundant xenvif_put"
    net: move procfs code to net/core/net-procfs.c
    qmi_wwan, cdc-ether: add ADU960S
    bonding: set sysfs device_type to 'bond'
    bonding: fix bond_release_all inconsistencies
    b44: use netdev_alloc_skb_ip_align()
    xen: netback: remove redundant xenvif_put
    net: fec: Do a sanity check on the gpio number
    ip_gre: propogate target device GSO capability to the tunnel device
    ip_gre: allow CSUM capable devices to handle packets
    bonding: Fix initialize after use for 3ad machine state spinlock
    bonding: Fix race condition between bond_enslave() and bond_3ad_update_lacp_rate()
    ...

    Linus Torvalds
     
  • Pull ACPI and power management updates from Rafael Wysocki:

    - Rework of the ACPI namespace scanning code from Rafael J. Wysocki
    with contributions from Bjorn Helgaas, Jiang Liu, Mika Westerberg,
    Toshi Kani, and Yinghai Lu.

    - ACPI power resources handling and ACPI device PM update from Rafael
    J Wysocki.

    - ACPICA update to version 20130117 from Bob Moore and Lv Zheng with
    contributions from Aaron Lu, Chao Guan, Jesper Juhl, and Tim Gardner.

    - Support for Intel Lynxpoint LPSS from Mika Westerberg.

    - cpuidle update from Len Brown including Intel Haswell support, C1
    state for intel_idle, removal of global pm_idle.

    - cpuidle fixes and cleanups from Daniel Lezcano.

    - cpufreq fixes and cleanups from Viresh Kumar and Fabio Baltieri with
    contributions from Stratos Karafotis and Rickard Andersson.

    - Intel P-states driver for Sandy Bridge processors from Dirk
    Brandewie.

    - cpufreq driver for Marvell Kirkwood SoCs from Andrew Lunn.

    - cpufreq fixes related to ordering issues between acpi-cpufreq and
    powernow-k8 from Borislav Petkov and Matthew Garrett.

    - cpufreq support for Calxeda Highbank processors from Mark Langsdorf
    and Rob Herring.

    - cpufreq driver for the Freescale i.MX6Q SoC and cpufreq-cpu0 update
    from Shawn Guo.

    - cpufreq Exynos fixes and cleanups from Jonghwan Choi, Sachin Kamat,
    and Inderpal Singh.

    - Support for "lightweight suspend" from Zhang Rui.

    - Removal of the deprecated power trace API from Paul Gortmaker.

    - Assorted updates from Andreas Fleig, Colin Ian King, Davidlohr Bueso,
    Joseph Salisbury, Kees Cook, Li Fei, Nishanth Menon, ShuoX Liu,
    Srinivas Pandruvada, Tejun Heo, Thomas Renninger, and Yasuaki
    Ishimatsu.

    * tag 'pm+acpi-3.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (267 commits)
    PM idle: remove global declaration of pm_idle
    unicore32 idle: delete stray pm_idle comment
    openrisc idle: delete pm_idle
    mn10300 idle: delete pm_idle
    microblaze idle: delete pm_idle
    m32r idle: delete pm_idle, and other dead idle code
    ia64 idle: delete pm_idle
    cris idle: delete idle and pm_idle
    ARM64 idle: delete pm_idle
    ARM idle: delete pm_idle
    blackfin idle: delete pm_idle
    sparc idle: rename pm_idle to sparc_idle
    sh idle: rename global pm_idle to static sh_idle
    x86 idle: rename global pm_idle to static x86_idle
    APM idle: register apm_cpu_idle via cpuidle
    cpufreq / intel_pstate: Add kernel command line option disable intel_pstate.
    cpufreq / intel_pstate: Change to disallow module build
    tools/power turbostat: display SMI count by default
    intel_idle: export both C1 and C1E
    ACPI / hotplug: Fix concurrency issues and memory leaks
    ...

    Linus Torvalds
     
  • Pull cpuset changes from Tejun Heo:

    - Synchornization has seen a lot of changes with focus on decoupling
    cpuset synchronization from cgroup internal locking.

    After this change, there only remain a couple of mostly trivial
    dependencies on cgroup_lock outside cgroup core proper. cgroup_lock
    is scheduled to be unexported in this devel cycle.

    This will finally remove the fragile locking order around cgroup
    (cgroup locking wants to / should be one of the outermost but yet has
    been acquired from deep inside individual controllers).

    - At this point, Li is most knowlegeable with cpuset and taking over
    the maintainership of cpuset.

    * 'for-3.9-cpuset' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cpuset: drop spurious retval assignment in proc_cpuset_show()
    cpuset: fix RCU lockdep splat
    cpuset: update MAINTAINERS
    cpuset: remove cpuset->parent
    cpuset: replace cpuset->stack_list with cpuset_for_each_descendant_pre()
    cpuset: replace cgroup_mutex locking with cpuset internal locking
    cpuset: schedule hotplug propagation from cpuset_attach() if the cpuset is empty
    cpuset: pin down cpus and mems while a task is being attached
    cpuset: make CPU / memory hotplug propagation asynchronous
    cpuset: drop async_rebuild_sched_domains()
    cpuset: don't nest cgroup_mutex inside get_online_cpus()
    cpuset: reorganize CPU / memory hotplug handling
    cpuset: cleanup cpuset[_can]_attach()
    cpuset: introduce cpuset_for_each_child()
    cpuset: introduce CS_ONLINE
    cpuset: introduce ->css_on/offline()
    cpuset: remove fast exit path from remove_tasks_in_empty_cpuset()
    cpuset: remove unused cpuset_unlock()

    Linus Torvalds
     
  • Pull cgroup changes from Tejun Heo:
    "Nothing too drastic.

    - Removal of synchronize_rcu() from userland visible paths.

    - Various fixes and cleanups from Li.

    - cgroup_rightmost_descendant() added which will be used by cpuset
    changes (it will be a separate pull request)."

    * 'for-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
    cgroup: fail if monitored file and event_control are in different cgroup
    cgroup: fix cgroup_rmdir() vs close(eventfd) race
    cpuset: fix cpuset_print_task_mems_allowed() vs rename() race
    cgroup: fix exit() vs rmdir() race
    cgroup: remove bogus comments in cgroup_diput()
    cgroup: remove synchronize_rcu() from cgroup_diput()
    cgroup: remove duplicate RCU free on struct cgroup
    sched: remove redundant NULL cgroup check in task_group_path()
    sched: split out css_online/css_offline from tg creation/destruction
    cgroup: initialize cgrp->dentry before css_alloc()
    cgroup: remove a NULL check in cgroup_exit()
    cgroup: fix bogus kernel warnings when cgroup_create() failed
    cgroup: remove synchronize_rcu() from rebind_subsystems()
    cgroup: remove synchronize_rcu() from cgroup_attach_{task|proc}()
    cgroup: use new hashtable implementation
    cgroups: fix cgroup_event_listener error handling
    cgroups: move cgroup_event_listener.c to tools/cgroup
    cgroup: implement cgroup_rightmost_descendant()
    cgroup: remove unused dummy cgroup_fork_callbacks()

    Linus Torvalds
     

20 Feb, 2013

12 commits

  • Pull async changes from Tejun Heo:
    "These are followups for the earlier deadlock issue involving async
    ending up waiting for itself through block requesting module[1]. The
    following changes are made by these commits.

    - Instead of requesting default elevator on each request_queue init,
    block now requests it once early during boot.

    - Kmod triggers warning if invoked from an async worker.

    - Async synchronization implementation has been reimplemented. It's
    a lot simpler now."

    * 'for-3.9-async' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
    async: initialise list heads to fix crash
    async: replace list of active domains with global list of pending items
    async: keep pending tasks on async_domain and remove async_pending
    async: use ULLONG_MAX for infinity cookie value
    async: bring sanity to the use of words domain and running
    async, kmod: warn on synchronous request_module() from async workers
    block: don't request module during elevator init
    init, block: try to load default elevator module early during boot

    Linus Torvalds
     
  • Pull workqueue changes from Tejun Heo:
    "A lot of reorganization is going on mostly to prepare for worker pools
    with custom attributes so that workqueue can replace custom pool
    implementations in places including writeback and btrfs and make CPU
    assignment in crypto more flexible.

    workqueue evolved from purely per-cpu design and implementation, so
    there are a lot of assumptions regarding being bound to CPUs and even
    unbound workqueues are implemented as an extension of the model -
    workqueues running on the special unbound CPU. Bulk of changes this
    round are about promoting worker_pools as the top level abstraction
    replacing global_cwq (global cpu workqueue). At this point, I'm
    fairly confident about getting custom worker pools working pretty soon
    and ready for the next merge window.

    Lai's patches are replacing the convoluted mb() dancing workqueue has
    been doing with much simpler mechanism which only depends on
    assignment atomicity of long. For details, please read the commit
    message of 0b3dae68ac ("workqueue: simplify is-work-item-queued-here
    test"). While the change ends up adding one pointer to struct
    delayed_work, the inflation in percentage is less than five percent
    and it decouples delayed_work logic a lot more cleaner from usual work
    handling, removes the unusual memory barrier dancing, and allows for
    further simplification, so I think the trade-off is acceptable.

    There will be two more workqueue related pull requests and there are
    some shared commits among them. I'll write further pull requests
    assuming this pull request is pulled first."

    * 'for-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (37 commits)
    workqueue: un-GPL function delayed_work_timer_fn()
    workqueue: rename cpu_workqueue to pool_workqueue
    workqueue: reimplement is_chained_work() using current_wq_worker()
    workqueue: fix is_chained_work() regression
    workqueue: pick cwq instead of pool in __queue_work()
    workqueue: make get_work_pool_id() cheaper
    workqueue: move nr_running into worker_pool
    workqueue: cosmetic update in try_to_grab_pending()
    workqueue: simplify is-work-item-queued-here test
    workqueue: make work->data point to pool after try_to_grab_pending()
    workqueue: add delayed_work->wq to simplify reentrancy handling
    workqueue: make work_busy() test WORK_STRUCT_PENDING first
    workqueue: replace WORK_CPU_NONE/LAST with WORK_CPU_END
    workqueue: post global_cwq removal cleanups
    workqueue: rename nr_running variables
    workqueue: remove global_cwq
    workqueue: remove worker_pool->gcwq
    workqueue: replace for_each_worker_pool() with for_each_std_worker_pool()
    workqueue: make freezing/thawing per-pool
    workqueue: make hotplug processing per-pool
    ...

    Linus Torvalds
     
  • Pull workqueue [delayed_]work_pending() cleanups from Tejun Heo:
    "This is part of on-going cleanups to remove / minimize usages of
    workqueue interfaces which are deprecated and/or misleading.

    This round drops a number of usages of [delayed_]work_pending(), which
    are dangerous as they lack any form of synchronization and thus often
    lead to buggy / unnecessary code. There are a couple legitimate use
    cases in kernel. Hopefully, they can be converted and
    [delayed_]work_pending() can be removed completely. Even if not,
    removing most of misuses should make it more difficult to find
    examples of misuses and thus slow down growth of them.

    These changes are independent from other workqueue changes."

    * 'for-3.9-cleanups' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
    wimax/i2400m: fix i2400m->wake_tx_skb handling
    kprobes: fix wait_for_kprobe_optimizer()
    ipw2x00: simplify scan_event handling
    video/exynos: don't use [delayed_]work_pending()
    tty/max3100: don't use [delayed_]work_pending()
    x86/mce: don't use [delayed_]work_pending()
    rfkill: don't use [delayed_]work_pending()
    wl1251: don't use [delayed_]work_pending()
    thinkpad_acpi: don't use [delayed_]work_pending()
    mwifiex: don't use [delayed_]work_pending()
    sja1000: don't use [delayed_]work_pending()

    Linus Torvalds
     
  • Pull two x86 kernel build changes from Ingo Molnar:
    "The first change modifies how 'make oldconfig' works on cross-bitness
    situations on x86. It was felt the new behavior of preserving the
    bitness of the .config is more logical. This is a leftover of the
    merge.

    The second change eliminates a Perl warning. (There's another, more
    complete fix resulting of this warning fix, which second fix in flight
    to you via the kbuild tree, which will remove the timeconst.pl script
    altogether.)"

    * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    timeconst.pl: Eliminate Perl warning
    x86: Default to ARCH=x86 to avoid overriding CONFIG_64BIT

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

    - Multiple MSI support added to the APIC, PCI and AHCI code - acked
    by all relevant maintainers, by Alexander Gordeev.

    The advantage is that multiple AHCI ports can have multiple MSI
    irqs assigned, and can thus spread to multiple CPUs.

    [ Drivers can make use of this new facility via the
    pci_enable_msi_block_auto() method ]

    - x86 IOAPIC code from interrupt remapping cleanups from Joerg
    Roedel:

    These patches move all interrupt remapping specific checks out of
    the x86 core code and replaces the respective call-sites with
    function pointers. As a result the interrupt remapping code is
    better abstraced from x86 core interrupt handling code.

    - Various smaller improvements, fixes and cleanups."

    * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
    x86/intel/irq_remapping: Clean up x2apic opt-out security warning mess
    x86, kvm: Fix intialization warnings in kvm.c
    x86, irq: Move irq_remapped out of x86 core code
    x86, io_apic: Introduce eoi_ioapic_pin call-back
    x86, msi: Introduce x86_msi.compose_msi_msg call-back
    x86, irq: Introduce setup_remapped_irq()
    x86, irq: Move irq_remapped() check into free_remapped_irq
    x86, io-apic: Remove !irq_remapped() check from __target_IO_APIC_irq()
    x86, io-apic: Move CONFIG_IRQ_REMAP code out of x86 core
    x86, irq: Add data structure to keep AMD specific irq remapping information
    x86, irq: Move irq_remapping_enabled declaration to iommu code
    x86, io_apic: Remove irq_remapping_enabled check in setup_timer_IRQ0_pin
    x86, io_apic: Move irq_remapping_enabled checks out of check_timer()
    x86, io_apic: Convert setup_ioapic_entry to function pointer
    x86, io_apic: Introduce set_affinity function pointer
    x86, msi: Use IRQ remapping specific setup_msi_irqs routine
    x86, hpet: Introduce x86_msi_ops.setup_hpet_msi
    x86, io_apic: Introduce x86_io_apic_ops.print_entries for debugging
    x86, io_apic: Introduce x86_io_apic_ops.disable()
    x86, apic: Mask IO-APIC and PIC unconditionally on LAPIC resume
    ...

    Linus Torvalds
     
  • Pull timer changes from Ingo Molnar:
    "Main changes:

    - ntp: Add CONFIG_RTC_SYSTOHC: a generic RTC driver facility
    complementing the existing CONFIG_RTC_HCTOSYS, which uses NTP to
    keep the hardware clock updated.

    - posix-timers: Fix clock_adjtime to always return timex data on
    success. This is changing the ABI, but no breakage was expected
    and found - caution is warranted nevertheless.

    - platform persistent clock improvements/cleanups.

    - clockevents: refactor timer broadcast handling to be more generic
    and less duplicated with matching architecture code (mostly ARM
    motivated.)

    - various fixes and cleanups"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    timers/x86/hpet: Use HPET_COUNTER to specify the hpet counter in vread_hpet()
    posix-cpu-timers: Fix nanosleep task_struct leak
    clockevents: Fix generic broadcast for FEAT_C3STOP
    time, Fix setting of hardware clock in NTP code
    hrtimer: Prevent hrtimer_enqueue_reprogram race
    clockevents: Add generic timer broadcast function
    clockevents: Add generic timer broadcast receiver
    timekeeping: Switch HAS_PERSISTENT_CLOCK to ALWAYS_USE_PERSISTENT_CLOCK
    x86/time/rtc: Don't print extended CMOS year when reading RTC
    x86: Select HAS_PERSISTENT_CLOCK on x86
    timekeeping: Add CONFIG_HAS_PERSISTENT_CLOCK option
    rtc: Skip the suspend/resume handling if persistent clock exist
    timekeeping: Add persistent_clock_exist flag
    posix-timers: Fix clock_adjtime to always return timex data on success
    Round the calculated scale factor in set_cyc2ns_scale()
    NTP: Add a CONFIG_RTC_SYSTOHC configuration
    MAINTAINERS: Update John Stultz's email
    time: create __getnstimeofday for WARNless calls

    Linus Torvalds
     
  • Pull preparatory smp/hotplug patches from Ingo Molnar:
    "Some early preparatory changes for the WIP hotplug rework by Thomas
    Gleixner."

    * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    stop_machine: Use smpboot threads
    stop_machine: Store task reference in a separate per cpu variable
    smpboot: Allow selfparking per cpu threads

    Linus Torvalds
     
  • Pull scheduler changes from Ingo Molnar:
    "Main changes:

    - scheduler side full-dynticks (user-space execution is undisturbed
    and receives no timer IRQs) preparation changes that convert the
    cputime accounting code to be full-dynticks ready, from Frederic
    Weisbecker.

    - Initial sched.h split-up changes, by Clark Williams

    - select_idle_sibling() performance improvement by Mike Galbraith:

    " 1 tbench pair (worst case) in a 10 core + SMT package:

    pre 15.22 MB/sec 1 procs
    post 252.01 MB/sec 1 procs "

    - sched_rr_get_interval() ABI fix/change. We think this detail is not
    used by apps (so it's not an ABI in practice), but lets keep it
    under observation.

    - misc RT scheduling cleanups, optimizations"

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
    sched/rt: Add header to
    cputime: Remove irqsave from seqlock readers
    sched, powerpc: Fix sched.h split-up build failure
    cputime: Restore CPU_ACCOUNTING config defaults for PPC64
    sched/rt: Move rt specific bits into new header file
    sched/rt: Add a tuning knob to allow changing SCHED_RR timeslice
    sched: Move sched.h sysctl bits into separate header
    sched: Fix signedness bug in yield_to()
    sched: Fix select_idle_sibling() bouncing cow syndrome
    sched/rt: Further simplify pick_rt_task()
    sched/rt: Do not account zero delta_exec in update_curr_rt()
    cputime: Safely read cputime of full dynticks CPUs
    kvm: Prepare to add generic guest entry/exit callbacks
    cputime: Use accessors to read task cputime stats
    cputime: Allow dynamic switch between tick/virtual based cputime accounting
    cputime: Generic on-demand virtual cputime accounting
    cputime: Move default nsecs_to_cputime() to jiffies based cputime file
    cputime: Librarize per nsecs resolution cputime definitions
    cputime: Avoid multiplication overflow on utime scaling
    context_tracking: Export context state for generic vtime
    ...

    Fix up conflict in kernel/context_tracking.c due to comment additions.

    Linus Torvalds
     
  • Pull perf changes from Ingo Molnar:
    "There are lots of improvements, the biggest changes are:

    Main kernel side changes:

    - Improve uprobes performance by adding 'pre-filtering' support, by
    Oleg Nesterov.

    - Make some POWER7 events available in sysfs, equivalent to what was
    done on x86, from Sukadev Bhattiprolu.

    - tracing updates by Steve Rostedt - mostly misc fixes and smaller
    improvements.

    - Use perf/event tracing to report PCI Express advanced errors, by
    Tony Luck.

    - Enable northbridge performance counters on AMD family 15h, by Jacob
    Shin.

    - This tracing commit:

    tracing: Remove the extra 4 bytes of padding in events

    changes the ABI. All involved parties (PowerTop in particular)
    seem to agree that it's safe to do now with the introduction of
    libtraceevent, but the devil is in the details ...

    Main tooling side changes:

    - Add 'event group view', from Namyung Kim:

    To use it, 'perf record' should group events when recording. And
    then perf report parses the saved group relation from file header
    and prints them together if --group option is provided. You can
    use the 'perf evlist' command to see event group information:

    $ perf record -e '{ref-cycles,cycles}' noploop 1
    [ perf record: Woken up 2 times to write data ]
    [ perf record: Captured and wrote 0.385 MB perf.data (~16807 samples) ]

    $ perf evlist --group
    {ref-cycles,cycles}

    With this example, default perf report will show you each event
    separately.

    You can use --group option to enable event group view:

    $ perf report --group
    ...
    # group: {ref-cycles,cycles}
    # ========
    # Samples: 7K of event 'anon group { ref-cycles, cycles }'
    # Event count (approx.): 6876107743
    #
    # Overhead Command Shared Object Symbol
    # ................ ....... ................. ..........................
    99.84% 99.76% noploop noploop [.] main
    0.07% 0.00% noploop ld-2.15.so [.] strcmp
    0.03% 0.00% noploop [kernel.kallsyms] [k] timerqueue_del
    0.03% 0.03% noploop [kernel.kallsyms] [k] sched_clock_cpu
    0.02% 0.00% noploop [kernel.kallsyms] [k] account_user_time
    0.01% 0.00% noploop [kernel.kallsyms] [k] __alloc_pages_nodemask
    0.00% 0.00% noploop [kernel.kallsyms] [k] native_write_msr_safe
    0.00% 0.11% noploop [kernel.kallsyms] [k] _raw_spin_lock
    0.00% 0.06% noploop [kernel.kallsyms] [k] find_get_page
    0.00% 0.02% noploop [kernel.kallsyms] [k] rcu_check_callbacks
    0.00% 0.02% noploop [kernel.kallsyms] [k] __current_kernel_time

    As you can see the Overhead column now contains both of ref-cycles
    and cycles and header line shows group information also - 'anon
    group { ref-cycles, cycles }'. The output is sorted by period of
    group leader first.

    - Initial GTK+ annotate browser, from Namhyung Kim.

    - Add option for runtime switching perf data file in perf report,
    just press 's' and a menu with the valid files found in the current
    directory will be presented, from Feng Tang.

    - Add support to display whole group data for raw columns, from Jiri
    Olsa.

    - Add per processor socket count aggregation in perf stat, from
    Stephane Eranian.

    - Add interval printing in 'perf stat', from Stephane Eranian.

    - 'perf test' improvements

    - Add support for wildcards in tracepoint system name, from Jiri
    Olsa.

    - Add anonymous huge page recognition, from Joshua Zhu.

    - perf build-id cache now can show DSOs present in a perf.data file
    that are not in the cache, to integrate with build-id servers being
    put in place by organizations such as Fedora.

    - perf top now shares more of the evsel config/creation routines with
    'record', paving the way for further integration like 'top'
    snapshots, etc.

    - perf top now supports DWARF callchains.

    - Fix mmap limitations on 32-bit, fix from David Miller.

    - 'perf bench numa mem' NUMA performance measurement suite

    - ... and lots of fixes, performance improvements, cleanups and other
    improvements I failed to list - see the shortlog and git log for
    details."

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (270 commits)
    perf/x86/amd: Enable northbridge performance counters on AMD family 15h
    perf/hwbp: Fix cleanup in case of kzalloc failure
    perf tools: Fix build with bison 2.3 and older.
    perf tools: Limit unwind support to x86 archs
    perf annotate: Make it to be able to skip unannotatable symbols
    perf gtk/annotate: Fail early if it can't annotate
    perf gtk/annotate: Show source lines with gray color
    perf gtk/annotate: Support multiple event annotation
    perf ui/gtk: Implement basic GTK2 annotation browser
    perf annotate: Fix warning message on a missing vmlinux
    perf buildid-cache: Add --update option
    uprobes/perf: Avoid uprobe_apply() whenever possible
    uprobes/perf: Teach trace_uprobe/perf code to use UPROBE_HANDLER_REMOVE
    uprobes/perf: Teach trace_uprobe/perf code to pre-filter
    uprobes/perf: Teach trace_uprobe/perf code to track the active perf_event's
    uprobes: Introduce uprobe_apply()
    perf: Introduce hw_perf_event->tp_target and ->tp_list
    uprobes/perf: Always increment trace_uprobe->nhit
    uprobes/tracing: Kill uprobe_trace_consumer, embed uprobe_consumer into trace_uprobe
    uprobes/tracing: Introduce is_trace_uprobe_enabled()
    ...

    Linus Torvalds
     
  • Pull irq core changes from Ingo Molnar:
    "The biggest changes are the IRQ-work and printk changes from Frederic
    Weisbecker, which prepare the code for 'full dynticks' (the ability to
    stop or slow down the periodic tick arbitrarily, not just in idle time
    as today):

    - Don't stop tick with irq works pending. This fix is generally
    useful and concerns archs that can't raise self IPIs.

    - Flush irq works before CPU offlining.

    - Introduce "lazy" irq works that can wait for the next tick to be
    executed, unless it's stopped.

    - Implement klogd wake up using irq work. This removes the ad-hoc
    printk_tick()/printk_needs_cpu() hooks and make it working even in
    dynticks mode.

    - Cleanups and fixes."

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    genirq: Export enable/disable_percpu_irq()
    arch Kconfig: Remove references to IRQ_PER_CPU
    irq_work: Remove return value from the irq_work_queue() function
    genirq: Avoid deadlock in spurious handling
    printk: Wake up klogd using irq_work
    irq_work: Make self-IPIs optable
    irq_work: Warn if there's still work on cpu_down
    irq_work: Flush work on CPU_DYING
    irq_work: Don't stop the tick with pending works
    nohz: Add API to check tick state
    irq_work: Remove CONFIG_HAVE_IRQ_WORK
    irq_work: Fix racy check on work pending flag
    irq_work: Fix racy IRQ_WORK_BUSY flag setting

    Linus Torvalds
     
  • Pull RCU changes from Ingo Molnar:
    "SRCU changes:

    - These include debugging aids, updates that move towards the goal of
    permitting srcu_read_lock() and srcu_read_unlock() to be used from
    idle and offline CPUs, and a few small fixes.

    Changes to rcutorture and to RCU documentation:

    - Posted to LKML at https://lkml.org/lkml/2013/1/26/188

    Enhancements to uniprocessor handling in tiny RCU:

    - Posted to LKML at https://lkml.org/lkml/2013/1/27/2

    Tag RCU callbacks with grace-period number to simplify callback
    advancement:

    - Posted to LKML at https://lkml.org/lkml/2013/1/26/203

    Miscellaneous fixes:

    - Posted to LKML at https://lkml.org/lkml/2013/1/26/204"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
    srcu: use ACCESS_ONCE() to access sp->completed in srcu_read_lock()
    srcu: Update synchronize_srcu_expedited()'s comments
    srcu: Update synchronize_srcu()'s comments
    srcu: Remove checks preventing idle CPUs from calling srcu_read_lock()
    srcu: Remove checks preventing offline CPUs from calling srcu_read_lock()
    srcu: Simple cleanup for cleanup_srcu_struct()
    srcu: Add might_sleep() annotation to synchronize_srcu()
    srcu: Simplify __srcu_read_unlock() via this_cpu_dec()
    rcu: Allow rcutorture to be built at low optimization levels
    rcu: Make rcutorture's shuffler task shuffle recently added tasks
    rcu: Allow TREE_PREEMPT_RCU on UP systems
    rcu: Provide RCU CPU stall warnings for tiny RCU
    context_tracking: Add comments on interface and internals
    rcu: Remove obsolete Kconfig option from comment
    rcu: Remove unused code originally used for context tracking
    rcu: Consolidate debugging Kconfig options
    rcu: Correct 'optimized' to 'optimize' in header comment
    rcu: Trace callback acceleration
    rcu: Tag callback lists with corresponding grace-period number
    rcutorture: Don't compare ptr with 0
    ...

    Linus Torvalds
     
  • commit d8e794dfd51c368ed3f686b7f4172830b60ae47b ("workqueue: set
    delayed_work->timer function on initialization") exports function
    delayed_work_timer_fn() only for GPL modules. This makes delayed-works
    unusable for non-GPL modules, because initialization macro now requires
    GPL symbol. For example schedule_delayed_work() available for non-GPL.

    Signed-off-by: Konstantin Khlebnikov
    Signed-off-by: Tejun Heo
    Cc: stable@vger.kernel.org # 3.7

    Konstantin Khlebnikov
     

19 Feb, 2013

7 commits

  • The reader side code has no requirement to disable interrupts while
    sampling data. The sequence counter is enough to ensure consistency.

    Signed-off-by: Thomas Gleixner
    Cc: Frederic Weisbecker
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • Pull in 'net' to take in the bug fixes that didn't make it into
    3.8-final.

    Also, deal with the semantic conflict of the change made to
    net/ipv6/xfrm6_policy.c A missing rt6->n neighbour release
    was added to 'net', but in 'net-next' we no longer cache the
    neighbour entries in the ipv6 routes so that change is not
    appropriate there.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • These functions are used by the tilegx onchip network driver, and it's
    useful to be able to load that driver as a module.

    Signed-off-by: Chris Metcalf
    Link: http://lkml.kernel.org/r/201302012043.r11KhNZF024371@farm-0021.internal.tilera.com
    Signed-off-by: Thomas Gleixner

    Chris Metcalf
     
  • If we pass fd of memory.usage_in_bytes of cgroup A to cgroup.event_control
    of cgroup B, then we won't get memory usage notification from A but B!

    What's worse, if A and B are in different mount hierarchy, we'll end up
    accessing NULL pointer!

    Disallow this kind of invalid usage.

    Signed-off-by: Li Zefan
    Acked-by: Kirill A. Shutemov
    Signed-off-by: Tejun Heo

    Li Zefan
     
  • commit 205a872bd6f9a9a09ef035ef1e90185a8245cc58 ("cgroup: fix lockdep
    warning for event_control") solved a deadlock by introducing a new
    bug.

    Move cgrp->event_list to a temporary list doesn't mean you can traverse
    this list locklessly, because at the same time cgroup_event_wake() can
    be called and remove the event from the list. The result of this race
    is disastrous.

    We adopt the way how kvm irqfd code implements race-free event removal,
    which is now described in the comments in cgroup_event_wake().

    v3:
    - call eventfd_signal() no matter it's eventfd close or cgroup removal
    that removes the cgroup event.

    Acked-by: Kirill A. Shutemov
    Signed-off-by: Li Zefan
    Signed-off-by: Tejun Heo

    Li Zefan
     
  • rename() will change dentry->d_name. The result of this race can
    be worse than seeing partially rewritten name, but we might access
    a stale pointer because rename() will re-allocate memory to hold
    a longer name.

    It's safe in the protection of dentry->d_lock.

    v2: check NULL dentry before acquiring dentry lock.

    Signed-off-by: Li Zefan
    Signed-off-by: Tejun Heo
    Cc: stable@vger.kernel.org

    Li Zefan
     
  • In cgroup_exit() put_css_set_taskexit() is called without any lock,
    which might lead to accessing a freed cgroup:

    thread1 thread2
    ---------------------------------------------
    exit()
    cgroup_exit()
    put_css_set_taskexit()
    atomic_dec(cgrp->count);
    rmdir();
    /* not safe !! */
    check_for_release(cgrp);

    rcu_read_lock() can be used to make sure the cgroup is alive.

    Signed-off-by: Li Zefan
    Signed-off-by: Tejun Heo
    Cc: stable@vger.kernel.org

    Li Zefan
     

15 Feb, 2013

4 commits


14 Feb, 2013

3 commits

  • Use the smpboot thread infrastructure. Mark the stopper thread
    selfparking and park it after it has finished the take_cpu_down()
    work.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Rusty Russell
    Cc: Paul McKenney
    Cc: Srivatsa S. Bhat
    Cc: Arjan van de Veen
    Cc: Paul Turner
    Cc: Richard Weinberger
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/20130131120741.686315164@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • To allow the stopper thread being managed by the smpboot thread
    infrastructure separate out the task storage from the stopper data
    structure.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Rusty Russell
    Cc: Paul McKenney
    Cc: Srivatsa S. Bhat
    Cc: Arjan van de Veen
    Cc: Paul Turner
    Cc: Richard Weinberger
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/20130131120741.626690384@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     
  • The stop machine threads are still killed when a cpu goes offline. The
    reason is that the thread is used to bring the cpu down, so it can't
    be parked along with the other per cpu threads.

    Allow a per cpu thread to be excluded from automatic parking, so it
    can park itself once it's done

    Add a create callback function as well.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Rusty Russell
    Cc: Paul McKenney
    Cc: Srivatsa S. Bhat
    Cc: Arjan van de Veen
    Cc: Paul Turner
    Cc: Richard Weinberger
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/20130131120741.553993267@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner