26 Mar, 2016

4 commits

  • When oom_reaper manages to unmap all the eligible vmas there shouldn't
    be much of the freable memory held by the oom victim left anymore so it
    makes sense to clear the TIF_MEMDIE flag for the victim and allow the
    OOM killer to select another task.

    The lack of TIF_MEMDIE also means that the victim cannot access memory
    reserves anymore but that shouldn't be a problem because it would get
    the access again if it needs to allocate and hits the OOM killer again
    due to the fatal_signal_pending resp. PF_EXITING check. We can safely
    hide the task from the OOM killer because it is clearly not a good
    candidate anymore as everyhing reclaimable has been torn down already.

    This patch will allow to cap the time an OOM victim can keep TIF_MEMDIE
    and thus hold off further global OOM killer actions granted the oom
    reaper is able to take mmap_sem for the associated mm struct. This is
    not guaranteed now but further steps should make sure that mmap_sem for
    write should be blocked killable which will help to reduce such a lock
    contention. This is not done by this patch.

    Note that exit_oom_victim might be called on a remote task from
    __oom_reap_task now so we have to check and clear the flag atomically
    otherwise we might race and underflow oom_victims or wake up waiters too
    early.

    Signed-off-by: Michal Hocko
    Suggested-by: Johannes Weiner
    Suggested-by: Tetsuo Handa
    Cc: Andrea Argangeli
    Cc: David Rientjes
    Cc: Hugh Dickins
    Cc: Mel Gorman
    Cc: Oleg Nesterov
    Cc: Rik van Riel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     
  • This patch (of 5):

    This is based on the idea from Mel Gorman discussed during LSFMM 2015
    and independently brought up by Oleg Nesterov.

    The OOM killer currently allows to kill only a single task in a good
    hope that the task will terminate in a reasonable time and frees up its
    memory. Such a task (oom victim) will get an access to memory reserves
    via mark_oom_victim to allow a forward progress should there be a need
    for additional memory during exit path.

    It has been shown (e.g. by Tetsuo Handa) that it is not that hard to
    construct workloads which break the core assumption mentioned above and
    the OOM victim might take unbounded amount of time to exit because it
    might be blocked in the uninterruptible state waiting for an event (e.g.
    lock) which is blocked by another task looping in the page allocator.

    This patch reduces the probability of such a lockup by introducing a
    specialized kernel thread (oom_reaper) which tries to reclaim additional
    memory by preemptively reaping the anonymous or swapped out memory owned
    by the oom victim under an assumption that such a memory won't be needed
    when its owner is killed and kicked from the userspace anyway. There is
    one notable exception to this, though, if the OOM victim was in the
    process of coredumping the result would be incomplete. This is
    considered a reasonable constrain because the overall system health is
    more important than debugability of a particular application.

    A kernel thread has been chosen because we need a reliable way of
    invocation so workqueue context is not appropriate because all the
    workers might be busy (e.g. allocating memory). Kswapd which sounds
    like another good fit is not appropriate as well because it might get
    blocked on locks during reclaim as well.

    oom_reaper has to take mmap_sem on the target task for reading so the
    solution is not 100% because the semaphore might be held or blocked for
    write but the probability is reduced considerably wrt. basically any
    lock blocking forward progress as described above. In order to prevent
    from blocking on the lock without any forward progress we are using only
    a trylock and retry 10 times with a short sleep in between. Users of
    mmap_sem which need it for write should be carefully reviewed to use
    _killable waiting as much as possible and reduce allocations requests
    done with the lock held to absolute minimum to reduce the risk even
    further.

    The API between oom killer and oom reaper is quite trivial.
    wake_oom_reaper updates mm_to_reap with cmpxchg to guarantee only
    NULL->mm transition and oom_reaper clear this atomically once it is done
    with the work. This means that only a single mm_struct can be reaped at
    the time. As the operation is potentially disruptive we are trying to
    limit it to the ncessary minimum and the reaper blocks any updates while
    it operates on an mm. mm_struct is pinned by mm_count to allow parallel
    exit_mmap and a race is detected by atomic_inc_not_zero(mm_users).

    Signed-off-by: Michal Hocko
    Suggested-by: Oleg Nesterov
    Suggested-by: Mel Gorman
    Acked-by: Mel Gorman
    Acked-by: David Rientjes
    Cc: Mel Gorman
    Cc: Tetsuo Handa
    Cc: Oleg Nesterov
    Cc: Hugh Dickins
    Cc: Andrea Argangeli
    Cc: Rik van Riel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Hocko
     
  • This will be needed in the patch "mm, oom: introduce oom reaper".

    Acked-by: Michal Hocko
    Cc: Ingo Molnar
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • This reverts commit e7223f18603374d235d8bb0398532323e5f318b9.

    It causes problems when a ppdev tries to register before the parport
    driver has been registered with the device model. That will trigger the

    BUG_ON(!drv->bus->p);

    at drivers/base/driver.c:153. The call chain is

    kernel_init ->
    kernel_init_freeable ->
    do_one_initcall ->
    ppdev_init ->
    __parport_register_driver ->
    driver_register *BOOM*

    Reported-by: kernel test robot
    Reported-by: Ross Zwisler
    Reported-by: Petr Mladek
    Cc: Sudip Mukherjee
    Cc: Greg Kroah-Hartman
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

25 Mar, 2016

36 commits

  • Pull firewire leftover from Stefan Richter:
    "Occurrences of timeval were supposed to be eliminated last round, now
    remove a last forgotten one"

    * tag 'firewire-update2' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
    firewire: nosy: Replace timeval with timespec64

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Just a couple of dma-buf related fixes and some amdgpu fixes, along
    with a regression fix for radeon off but default feature, but makes my
    30" monitor happy again"

    * 'drm-next' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon/mst: cleanup code indentation
    drm/radeon/mst: fix regression in lane/link handling.
    drm/amdgpu: add invalidate_page callback for userptrs
    drm/amdgpu: Revert "remove the userptr rmn->lock"
    drm/amdgpu: clean up path handling for powerplay
    drm/amd/powerplay: fix memory leak of tdp_table
    dma-buf/fence: fix fence_is_later v2
    dma-buf: Update docs for SYNC ioctl
    drm: remove excess description
    dma-buf, drm, ion: Propagate error code from dma_buf_start_cpu_access()
    drm/atmel-hlcdc: use helper to get crtc state
    drm/atomic: use helper to get crtc state

    Linus Torvalds
     
  • Pull asm-generic updates from Arnd Bergmann:
    "There are only three patches this time, most other changes to files in
    include/asm-generic tend to go through the tree of whoever depends on
    the change.

    Two patches are cleanups for stuff that is no longer needed, the main
    change is to adapt the generic version of BUG_ON() for CONFIG_BUG=n to
    make it behave consistently with BUG().

    This avoids undefined behavior along with a number of warnings about
    that undefined behavior in randconfig builds when we keep going on
    after hitting a BUG_ON()"

    * tag 'asm-generic-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
    asm-generic: remove old nonatomic-io wrapper files
    asm-generic: default BUG_ON(x) to if(x)BUG()
    asm-generic: page.h: Remove useless get_user_page and free_user_page

    Linus Torvalds
     
  • some amd fixes
    * 'drm-next-4.6' of git://people.freedesktop.org/~agd5f/linux:
    drm/radeon/mst: cleanup code indentation
    drm/radeon/mst: fix regression in lane/link handling.
    drm/amdgpu: add invalidate_page callback for userptrs
    drm/amdgpu: Revert "remove the userptr rmn->lock"
    drm/amdgpu: clean up path handling for powerplay
    drm/amd/powerplay: fix memory leak of tdp_table

    Dave Airlie
     
  • Pull more power management and ACPI updates from Rafael Wysocki:
    "The second batch of power management and ACPI updates for v4.6.

    Included are fixups on top of the previous PM/ACPI pull request and
    other material that didn't make into it but still should go into 4.6.

    Among other things, there's a fix for an intel_pstate driver issue
    uncovered by recent cpufreq changes, a workaround for a boot hang on
    Skylake-H related to the handling of deep C-states by the platform and
    a PCI/ACPI fix for the handling of IO port resources on non-x86
    architectures plus some new device IDs and similar.

    Specifics:

    - Fix for an intel_pstate driver issue related to the handling of MSR
    updates uncovered by the recent cpufreq rework (Rafael Wysocki).

    - cpufreq core cleanups related to starting governors and frequency
    synchronization during resume from system suspend and a locking fix
    for cpufreq_quick_get() (Rafael Wysocki, Richard Cochran).

    - acpi-cpufreq and powernv cpufreq driver updates (Jisheng Zhang,
    Michael Neuling, Richard Cochran, Shilpasri Bhat).

    - intel_idle driver update preventing some Skylake-H systems from
    hanging during initialization by disabling deep C-states mishandled
    by the platform in the problematic configurations (Len Brown).

    - Intel Xeon Phi Processor x200 support for intel_idle
    (Dasaratharaman Chandramouli).

    - cpuidle menu governor updates to make it always honor PM QoS
    latency constraints (and prevent C1 from being used as the fallback
    C-state on x86 when they are set below its exit latency) and to
    restore the previous behavior to fall back to C1 if the next timer
    event is set far enough in the future that was changed in 4.4 which
    led to an energy consumption regression (Rik van Riel, Rafael
    Wysocki).

    - New device ID for a future AMD UART controller in the ACPI driver
    for AMD SoCs (Wang Hongcheng).

    - Rockchip rk3399 support for the rockchip-io-domain adaptive voltage
    scaling (AVS) driver (David Wu).

    - ACPI PCI resources management fix for the handling of IO space
    resources on architectures where the IO space is memory mapped
    (IA64 and ARM64) broken by the introduction of common ACPI
    resources parsing for PCI host bridges in 4.4 (Lorenzo Pieralisi).

    - Fix for the ACPI backend of the generic device properties API to
    make it parse non-device (data node only) children of an ACPI
    device correctly (Irina Tirdea).

    - Fixes for the handling of global suspend flags (introduced in 4.4)
    during hibernation and resume from it (Lukas Wunner).

    - Support for obtaining configuration information from Device Trees
    in the PM clocks framework (Jon Hunter).

    - ACPI _DSM helper code and devfreq framework cleanups (Colin Ian
    King, Geert Uytterhoeven)"

    * tag 'pm+acpi-4.6-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (23 commits)
    PM / AVS: rockchip-io: add io selectors and supplies for rk3399
    intel_idle: Support for Intel Xeon Phi Processor x200 Product Family
    intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled
    ACPI / PM: Runtime resume devices when waking from hibernate
    PM / sleep: Clear pm_suspend_global_flags upon hibernate
    cpufreq: governor: Always schedule work on the CPU running update
    cpufreq: Always update current frequency before startig governor
    cpufreq: Introduce cpufreq_update_current_freq()
    cpufreq: Introduce cpufreq_start_governor()
    cpufreq: powernv: Add sysfs attributes to show throttle stats
    cpufreq: acpi-cpufreq: make Intel/AMD MSR access, io port access static
    PCI: ACPI: IA64: fix IO port generic range check
    ACPI / util: cast data to u64 before shifting to fix sign extension
    cpufreq: powernv: Define per_cpu chip pointer to optimize hot-path
    cpuidle: menu: Fall back to polling if next timer event is near
    cpufreq: acpi-cpufreq: Clean up hot plug notifier callback
    intel_pstate: Do not call wrmsrl_on_cpu() with disabled interrupts
    cpufreq: Make cpufreq_quick_get() safe to call
    ACPI / property: fix data node parsing in acpi_get_next_subnode()
    ACPI / APD: Add device HID for future AMD UART controller
    ...

    Linus Torvalds
     
  • Pull more RTC updates from Alexandre Belloni:
    "A second pull request for v4.6 with a few fixesi before -rc1. The new
    features for abx80x actually make the RTC behave correctly.

    Drivers:
    - abx80x: handle both XT and RC oscillators, XT failure bit and
    autocalibration
    - m41t80: avoid out of range year values
    - rv8803: workaround an i2c HW issue"

    * tag 'rtc-4.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux:
    rtc: abx80x: handle the oscillator failure bit
    rtc: abx80x: handle autocalibration
    rtc: rv8803: workaround i2c HW issue
    rtc: mcp795: add devicetree support
    rtc: asm9260: remove incorrect __init/__exit annotations
    rtc: m41t80: avoid out of range year values
    rtc: s3c: Don't print an error on probe deferral
    rtc: rv3029: stop mentioning rv3029c2

    Linus Torvalds
     
  • …git/groeck/linux-staging

    Pull more hwmon updates from Guenter Roeck:
    "Update hwmon mailing list and web page"

    * tag 'hwmon-for-linus-v4.6-2' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    MAINTAINERS: Update mailing list and web page for hwmon subsystem

    Linus Torvalds
     
  • Pull block fixes from Jens Axboe:
    "Final round of fixes for this merge window - some of this has come up
    after the initial pull request, and some of it was put in a post-merge
    branch before the merge window.

    This contains:

    - Fix for a bad check for an error on dma mapping in the mtip32xx
    driver, from Alexey Khoroshilov.

    - A set of fixes for lightnvm, from Javier, Matias, and Wenwei.

    - An NVMe completion record corruption fix from Marta, ensuring that
    we read things in the right order.

    - Two writeback fixes from Tejun, marked for stable@ as well.

    - A blk-mq sw queue iterator fix from Thomas, fixing an oops for
    sparse CPU maps. They hit this in the hot plug/unplug rework"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    nvme: avoid cqe corruption when update at the same time as read
    writeback, cgroup: fix use of the wrong bdi_writeback which mismatches the inode
    writeback, cgroup: fix premature wb_put() in locked_inode_to_wb_and_lock_list()
    blk-mq: Use proper cpumask iterator
    mtip32xx: fix checks for dma mapping errors
    lightnvm: do not load L2P table if not supported
    lightnvm: do not reserve lun on l2p loading
    nvme: lightnvm: return ppa completion status
    lightnvm: add a bitmap of luns
    lightnvm: specify target's logical address area
    null_blk: add lightnvm null_blk device to the nullb_list

    Linus Torvalds
     
  • Pull MTD updates from Brian Norris:
    "NAND:
    - Add sunxi_nand randomizer support
    - begin refactoring NAND ecclayout structs
    - fix pxa3xx_nand dmaengine usage
    - brcmnand: fix support for v7.1 controller
    - add Qualcomm NAND controller driver

    SPI NOR:
    - add new ls1021a, ls2080a support to Freescale QuadSPI
    - add new flash ID entries
    - support bottom-block protection for Winbond flash
    - support Status Register Write Protect
    - remove broken QPI support for Micron SPI flash

    JFFS2:
    - improve post-mount CRC scan efficiency

    General:
    - refactor bcm63xxpart parser, to later extend for NAND
    - add writebuf size parameter to mtdram

    Other minor code quality improvements"

    * tag 'for-linus-20160324' of git://git.infradead.org/linux-mtd: (72 commits)
    mtd: nand: remove kerneldoc for removed function parameter
    mtd: nand: Qualcomm NAND controller driver
    dt/bindings: qcom_nandc: Add DT bindings
    mtd: nand: don't select chip in nand_chip's block_bad op
    mtd: spi-nor: support lock/unlock for a few Winbond chips
    mtd: spi-nor: add TB (Top/Bottom) protect support
    mtd: spi-nor: add SPI_NOR_HAS_LOCK flag
    mtd: spi-nor: use BIT() for flash_info flags
    mtd: spi-nor: disallow further writes to SR if WP# is low
    mtd: spi-nor: make lock/unlock bounds checks more obvious and robust
    mtd: spi-nor: silently drop lock/unlock for already locked/unlocked region
    mtd: spi-nor: wait for SR_WIP to clear on initial unlock
    mtd: nand: simplify nand_bch_init() usage
    mtd: mtdswap: remove useless if (!mtd->ecclayout) test
    mtd: create an mtd_oobavail() helper and make use of it
    mtd: kill the ecclayout->oobavail field
    mtd: nand: check status before reporting timeout
    mtd: bcm63xxpart: give width specifier an 'int', not 'size_t'
    mtd: mtdram: Add parameter for setting writebuf size
    mtd: nand: pxa3xx_nand: kill unused field 'drcmr_cmd'
    ...

    Linus Torvalds
     
  • Pull UBI/UBIFS updates from Richard Weinberger:
    "This contains cleanups and a maintainer update for UBI and UBIFS"

    * tag 'upstream-4.6-rc1' of git://git.infradead.org/linux-ubifs:
    ubifs: Remove unused header
    MAINTAINERS: Update UBIFS entry
    mtd: ubi: Add logging functions ubi_msg, ubi_warn and ubi_err
    ubifs: Add logging functions for ubifs_msg, ubifs_err and ubifs_warn

    Linus Torvalds
     
  • Pull more nfsd updates from Bruce Fields:
    "Apologies for the previous request, which omitted the top 8 commits
    from my for-next branch (including the SCSI layout commits). Thanks
    to Trond for spotting my error!"

    This actually includes the new layout types, so here's that part of
    the pull message repeated:

    "Support for a new pnfs layout type from Christoph Hellwig. The new
    layout type is a variant of the block layout which uses SCSI features
    to offer improved fencing and device identification.

    Note this pull request also includes the client side of SCSI layout,
    with Trond's permission"

    * tag 'nfsd-4.6-1' of git://linux-nfs.org/~bfields/linux:
    nfsd: use short read as well as i_size to set eof
    nfsd: better layoutupdate bounds-checking
    nfsd: block and scsi layout drivers need to depend on CONFIG_BLOCK
    nfsd: add SCSI layout support
    nfsd: move some blocklayout code
    nfsd: add a new config option for the block layout driver
    nfs/blocklayout: add SCSI layout support
    nfs4.h: add SCSI layout definitions

    Linus Torvalds
     
  • Pull kbuild misc updates from Michal Marek:
    "The non-critical part of kbuild for v4.6-rc1:

    - coccinelle cleanup and a new patch
    - make tags rule for kprobe helpers
    - make rpm fix to avoid spurious grub2 entries
    - make rpm support for %postun script (Fedora only at the moment)"

    * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild/mkspec: clean boot loader configuration on rpm removal
    kbuild/mkspec: fix grub2 installkernel issue
    Coccinelle: Add api/setup_timer.cocci
    coccinelle: bugon: reduce rule applicability
    Coccinelle: pm_runtime: reduce rule applicability
    Coccinelle: array_size: reduce rule applicability
    Coccinelle: reduce rule applicability
    scripts/tags.sh: add regex to map kprobe helpers
    scripts/coccinelle: modernize &

    Linus Torvalds
     
  • Pull kconfig updates from Michal Marek:
    "Just two kconfig commits this time:

    - kconfig Makefile fix for make 3.80

    - Fix calculating symbols so that KCONFIG_ALLCONFIG=... does not
    disable CONFIG_MODULES silently"

    * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    unbreak allmodconfig KCONFIG_ALLCONFIG=...
    scripts/kconfig: allow building with make 3.80 again

    Linus Torvalds
     
  • Pull kbuild updates from Michal Marek:

    - make dtbs_install fix

    - Error handling fix fixdep and link-vmlinux.sh

    - __UNIQUE_ID fix for clang

    - Fix for if_changed_* to suppress the "is up to date." message

    - The kernel is built with -Werror=incompatible-pointer-types

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kbuild: Add option to turn incompatible pointer check into error
    kbuild: suppress annoying "... is up to date." message
    kbuild: fixdep: Check fstat(2) return value
    scripts/link-vmlinux.sh: force error on kallsyms failure
    Kbuild: provide a __UNIQUE_ID for clang
    dtbsinstall: don't move target directory out of the way

    Linus Torvalds
     
  • Pull parisc updates from Helge Deller:
    "This patchset adds stack usage debug info for parisc and metag (on
    both the stack grows upwards), switches to the new generic realative
    extable search and sort routines, drops the long time ago removed
    syscalls alloc_hugepages and free_hugepages and wires up the new
    preadv2 and pwritev2 syscalls"

    * 'parisc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: Wire up preadv2 and pwritev2 syscalls
    parisc: Use generic extable search and sort routines
    parisc: Panic immediately when panic_on_oops
    parisc,metag: Implement CONFIG_DEBUG_STACK_USAGE option
    parisc: Drop alloc_hugepages and free_hugepages syscalls

    Linus Torvalds
     
  • Pull second set of arm64 updates from Catalin Marinas:

    - KASLR bug fixes: use callee-saved register, boot-time I-cache
    maintenance

    - inv_entry asm macro fix (EL0 check typo)

    - pr_notice("Virtual kernel memory layout...") splitting

    - Clean-ups: use p?d_set_huge consistently, allow preemption around
    copy_to_user_page, remove unused __local_flush_icache_all()

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
    arm64: mm: allow preemption in copy_to_user_page
    arm64: consistently use p?d_set_huge
    arm64: kaslr: use callee saved register to preserve SCTLR across C call
    arm64: Split pr_notice("Virtual kernel memory layout...") into multiple pr_cont()
    arm64: drop unused __local_flush_icache_all()
    arm64: fix KASLR boot-time I-cache maintenance
    arm64/kernel: fix incorrect EL0 check in inv_entry macro

    Linus Torvalds
     
  • Pull more ARM DT changes from Arnd Bergmann:
    "Here are some final updates for ARM SoC specific dts files:

    - The i.MX changes were sent relatively late, and had a dependency on
    the clk tree, so I delayed that a bit. Support for the new i.MX6qp
    SoC and a couple of new boards is added in this branch.

    - Uniphier renames a few files to match the final product names that
    were decided by the company, kudos to the kernel developer(s) for
    getting support upstream before the product release. Also two
    boards are added. The patches were posted early enough and nice
    overall, but we forgot to apply them and decided to give it some
    more time in linux-next

    - at91 has two small bug fixes"

    * tag 'armsoc-dt2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (83 commits)
    ARM: dts: at91: sama5d4 Xplained: don't disable hsmci regulator
    ARM: dts: at91: sama5d3 Xplained: don't disable hsmci regulator
    ARM: dts: uniphier: add pinmux node for I2C ch4
    ARM: dts: uniphier: add @{address} to EEPROM node
    ARM: dts: uniphier: add PH1-Pro4 Sanji board support
    ARM: dts: uniphier: add PH1-Pro4 Ace board support
    ARM: dts: uniphier: enable I2C channel 2 of ProXstream2 Gentil board
    ARM: dts: uniphier: add EEPROM node for ProXstream2 Gentil board
    ARM: dts: uniphier: add reference clock nodes
    ARM: dts: uniphier: rework UniPhier System Bus nodes
    ARM: dts: uniphier: factor out ranges property of support card
    arm64: dts: uniphier: rename PH1-LD10 to PH1-LD20
    ARM: dts: imx53-qsb: Fix gpio button polarity
    ARM: dts: vfxxx: Add DAC node for Vybrid SoC
    ARM: dts: imx6q: add missing links between ipu2 and mipi dsi
    ARM: dts: imx: Add support for Advantech/GE B850v3
    ARM: dts: imx: Add support for Advantech/GE B650v3
    ARM: dts: imx: Add support for Advantech/GE B450v3
    ARM: dts: imx: Add support for Advantech/GE Bx50v3
    ARM: dts: imx: Add Advantech BA-16 Qseven module
    ...

    Linus Torvalds
     
  • Pull h8300 updates from Yoshinori Sato:
    "Various h8300 fixes"

    * tag 'for-4.6' of git://git.osdn.jp/gitroot/uclinux-h8/linux:
    h8300: switch EARLYCON
    h8300: dts: Rename the serial port clock to fck

    Linus Torvalds
     
  • Handle the Oscillator Failure ('OF') bit from Oscillator Status register
    (0x1D). This bit is cleared on set_time function and is read each time the
    date/time is read, but only in case of XT Oscillator selection.
    In RC mode, this bit is always set.

    Signed-off-by: Mylène Josserand
    Signed-off-by: Alexandre Belloni

    Mylène Josserand
     
  • The autocalibration is separated in two bits to set in Oscillator
    Control register (0x1c) :
    - OSEL bit to select the oscillator type (XT or RC).
    - ACAL bit to select the autocalibration type.

    These functionnalities are exported in sysfs entries : "oscillator"
    and "autocalibration". Respectively, the values are "xtal" for XT
    oscillator and "rc" for RC oscillator and 0 to disable the
    autocalibration cycle, 512 for a 512 seconds autocalibration cycle
    and 1024 for a cycle of 1024 seconds.

    Examples :
    Set to XT Oscillator
    echo xtal > /sys/class/rtc/rtc0/device/oscillator
    Activate an autocalibration every 512 seconds
    echo 512 > /sys/class/rtc/rtc0/device/autocalibration

    Signed-off-by: Mylène Josserand
    Signed-off-by: Alexandre Belloni

    Mylène Josserand
     
  • The rv8803 has a 60µs window where it will not answer on the i2c bus.
    It also means there will be no ack for the communication. Make sure
    communication is tried multiple times when this happens (the i2c subsystem
    mandates -ENXIO is that case but the number of retries is host specific).
    The critical parts are the probe function and the alarm callback so make
    sure we handle the failure there.

    Cc: stable@vger.kernel.org # v4.4
    Signed-off-by: Alexandre Belloni

    Alexandre Belloni
     
  • * acpi-soc:
    ACPI / APD: Add device HID for future AMD UART controller

    * acpi-misc:
    ACPI / util: cast data to u64 before shifting to fix sign extension

    * acpi-pci:
    PCI: ACPI: IA64: fix IO port generic range check

    * device-properties:
    ACPI / property: fix data node parsing in acpi_get_next_subnode()

    Rafael J. Wysocki
     
  • * pm-avs:
    PM / AVS: rockchip-io: add io selectors and supplies for rk3399

    * pm-clk:
    PM / clk: Add support for obtaining clocks from device-tree

    * pm-devfreq:
    PM / devfreq: Spelling s/frequnecy/frequency/

    * pm-sleep:
    ACPI / PM: Runtime resume devices when waking from hibernate
    PM / sleep: Clear pm_suspend_global_flags upon hibernate

    Rafael J. Wysocki
     
  • * pm-cpufreq:
    cpufreq: governor: Always schedule work on the CPU running update
    cpufreq: Always update current frequency before startig governor
    cpufreq: Introduce cpufreq_update_current_freq()
    cpufreq: Introduce cpufreq_start_governor()
    cpufreq: powernv: Add sysfs attributes to show throttle stats
    cpufreq: acpi-cpufreq: make Intel/AMD MSR access, io port access static
    cpufreq: powernv: Define per_cpu chip pointer to optimize hot-path
    cpufreq: acpi-cpufreq: Clean up hot plug notifier callback
    intel_pstate: Do not call wrmsrl_on_cpu() with disabled interrupts
    cpufreq: Make cpufreq_quick_get() safe to call

    * pm-cpuidle:
    intel_idle: Support for Intel Xeon Phi Processor x200 Product Family
    intel_idle: prevent SKL-H boot failure when C8+C9+C10 enabled
    cpuidle: menu: Fall back to polling if next timer event is near
    cpuidle: menu: use high confidence factors only when considering polling

    Rafael J. Wysocki
     
  • The old web page for the hwmon subsystem is no longer operational,
    and the mailing list has become unreliable. Move both to kernel.org.

    Reviewed-by: Jean Delvare
    Cc: stable@vger.kernel.org
    Signed-off-by: Guenter Roeck

    Guenter Roeck
     
  • Pull tracing updates from Steven Rostedt:
    "Nothing major this round. Mostly small clean ups and fixes.

    Some visible changes:

    - A new flag was added to distinguish traces done in NMI context.

    - Preempt tracer now shows functions where preemption is disabled but
    interrupts are still enabled.

    Other notes:

    - Updates were done to function tracing to allow better performance
    with perf.

    - Infrastructure code has been added to allow for a new histogram
    feature for recording live trace event histograms that can be
    configured by simple user commands. The feature itself was just
    finished, but needs a round in linux-next before being pulled.

    This only includes some infrastructure changes that will be needed"

    * tag 'trace-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (22 commits)
    tracing: Record and show NMI state
    tracing: Fix trace_printk() to print when not using bprintk()
    tracing: Remove redundant reset per-CPU buff in irqsoff tracer
    x86: ftrace: Fix the misleading comment for arch/x86/kernel/ftrace.c
    tracing: Fix crash from reading trace_pipe with sendfile
    tracing: Have preempt(irqs)off trace preempt disabled functions
    tracing: Fix return while holding a lock in register_tracer()
    ftrace: Use kasprintf() in ftrace_profile_tracefs()
    ftrace: Update dynamic ftrace calls only if necessary
    ftrace: Make ftrace_hash_rec_enable return update bool
    tracing: Fix typoes in code comment and printk in trace_nop.c
    tracing, writeback: Replace cgroup path to cgroup ino
    tracing: Use flags instead of bool in trigger structure
    tracing: Add an unreg_all() callback to trigger commands
    tracing: Add needs_rec flag to event triggers
    tracing: Add a per-event-trigger 'paused' field
    tracing: Add get_syscall_name()
    tracing: Add event record param to trigger_ops.func()
    tracing: Make event trigger functions available
    tracing: Make ftrace_event_field checking functions available
    ...

    Linus Torvalds
     
  • Pull thermal updates from Zhang Rui:

    - Fix a regression where bogus trip points on some Lenovo laptops start
    to screw up thermal control after commit 81ad4276b505 ("Thermal:
    initialize thermal zone device correctly").

    On these Lenovo laptops, a bogus passive trip point is reported,
    which is 0 degree Celsius. Without commit 81ad4276b505, thermal zone
    fails to set cooling devices to proper cooling state, which is a bug.
    But with commit 81ad4276b505 applied, the processors are always
    throttled on these Lenovo laptops because the current temperature is
    always higher than the passive trip point.

    Fix things to ignore such bogus trip points. (Zhang Rui)

    - Introduce Mediatek thermal driver. (Sascha Hauer)

    - Introduce devm_ versions of OF thermal sensor register API. (Laxman
    Dewangan)

    - Changes in Kconfigs to allow compile test on UM arch. (Krzysztof
    Kozlowski)

    - Introduce Skylake support in intel_pch_thermal driver. (Srinivas
    Pandruvada)

    - Several small fixes on Rockchip, TI-SoC, Tegra, RCar, and Exynos
    thermal drivers.

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux: (26 commits)
    Thermal: Ignore invalid trip points
    thermal: trace: migrating thermal traces to use TRACE_DEFINE_ENUM() macros
    thermal: intel_pch_thermal: Enable Skylake PCH thermal
    thermal: doc: Add details of devm_thermal_zone_of_sensor_{register,unregister}
    thermal: of-thermal: Add devm version of thermal_zone_of_sensor_register
    thermal: doc: Add details of thermal_zone_of_sensor_{register,unregister}
    thermal: exynos: Defer probe if vtmu is present but not registered
    thermal: exynos: Use devm_regulator_get_optional() for vtmu
    thermal: exynos: List vtmu-supply as optional property in DT binding
    thermal: exynos: Print a message about exceeded number of supported trip-points
    thermal: exynos: Document number of supported trip-points
    thermal: exynos: Document compatible for Exynos5433 TMU
    thermal: mtk: allow compile testing on UM
    thermal: tegra_soctherm: fix sign bit of temperature
    thermal: Fix build error of missing devm_ioremap_resource on UM
    thermal: ti-soc-thermal: clean up the error handling a bit
    thermal: rcar: Use ARCH_RENESAS
    thermal: rcar_thermal: don't open code of_device_get_match_data()
    thermal: db8500_cpufreq_cooling: Compile with COMPILE_TEST
    thermal: rockchip: fix the tsadc sequence output on rk3228/rk3399
    ...

    Linus Torvalds
     
  • Pull nfsd updates from Bruce Fields:
    "Various bugfixes, a RDMA update from Chuck Lever, and support for a
    new pnfs layout type from Christoph Hellwig. The new layout type is a
    variant of the block layout which uses SCSI features to offer improved
    fencing and device identification.

    (Also: note this pull request also includes the client side of SCSI
    layout, with Trond's permission.)"

    * tag 'nfsd-4.6' of git://linux-nfs.org/~bfields/linux:
    sunrpc/cache: drop reference when sunrpc_cache_pipe_upcall() detects a race
    nfsd: recover: fix memory leak
    nfsd: fix deadlock secinfo+readdir compound
    nfsd4: resfh unused in nfsd4_secinfo
    svcrdma: Use new CQ API for RPC-over-RDMA server send CQs
    svcrdma: Use new CQ API for RPC-over-RDMA server receive CQs
    svcrdma: Remove close_out exit path
    svcrdma: Hook up the logic to return ERR_CHUNK
    svcrdma: Use correct XID in error replies
    svcrdma: Make RDMA_ERROR messages work
    rpcrdma: Add RPCRDMA_HDRLEN_ERR
    svcrdma: svc_rdma_post_recv() should close connection on error
    svcrdma: Close connection when a send error occurs
    nfsd: Lower NFSv4.1 callback message size limit
    svcrdma: Do not send Write chunk XDR pad with inline content
    svcrdma: Do not write xdr_buf::tail in a Write chunk
    svcrdma: Find client-provided write and reply chunks once per reply
    nfsd: Update NFS server comments related to RDMA support
    nfsd: Fix a memory leak when meeting unsupported state_protect_how4
    nfsd4: fix bad bounds checking

    Linus Torvalds
     
  • Pull staging driver fixes from Greg KH:
    "Here are some fixes that poped up due to the big staging tree merge,
    as well as the removal of a staging driver that now is covered by a
    "real" driver.

    All of these have been in linux-next for a few days with no reported
    issues"

    * tag 'staging-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
    staging: delete STE RMI4 hackish driver
    staging: android: ion_test: fix check of platform_device_register_simple() error code
    staging: wilc1000: fix a couple of memory leaks
    staging: fsl-mc: fix incorrect type passed to dev_err macros
    staging: fsl-mc: fix incorrect type passed to dev_dbg macros
    staging: wilc1000: fixed kernel panic when firmware is not started
    staging: comedi: ni_mio_common: fix the ni_write[blw]() functions
    staging: most: hdm-dim2: Remove possible dereference error
    staging: lustre: checking for NULL instead of IS_ERR
    staging: lustre: really make lustre dependent on LNet
    staging: refresh TODO for rtl8712
    staging: refresh TODO for rtl8723au

    Linus Torvalds
     
  • Pull timer fix from Thomas Gleixner:
    "A single fix to the pistachio clocksource driver using the proper
    signedness in the error print format"

    * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource/drivers/pistachio: Correct output format of PTR_ERR()

    Linus Torvalds
     
  • Pull irq fixes from Thomas Gleixner:
    "A small set of fixes for the usual ARM/SOC irqchip drivers

    - A set of fixes for mbigen to handle multiple devices in a hardware
    module proper

    - A cleanup for the mbigen config option which was pointlessly user
    configurable.

    - A cleanup for tegra replacing open coded functionality by the
    proper core function

    The config cleanup touches arch/arm64/Kconfig.platforms to select the
    irq chip for the related platform"

    * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    irqchip/mbigen: Make CONFIG_HISILICON_IRQ_MBIGEN a hidden option
    ARM64: Kconfig: Select mbigen interrupt controller on Hisilicon platform
    irqchip/mbigen: Handle multiple device nodes in a mbigen module
    irqchip/mbigen: Adjust DT bindings to handle multiple devices in a module
    irqchip/tegra: Switch to use irq_domain_free_irqs_common

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "This tree contains various perf fixes on the kernel side, plus three
    hw/event-enablement late additions:

    - Intel Memory Bandwidth Monitoring events and handling
    - the AMD Accumulated Power Mechanism reporting facility
    - more IOMMU events

    ... and a final round of perf tooling updates/fixes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits)
    perf llvm: Use strerror_r instead of the thread unsafe strerror one
    perf llvm: Use realpath to canonicalize paths
    perf tools: Unexport some methods unused outside strbuf.c
    perf probe: No need to use formatting strbuf method
    perf help: Use asprintf instead of adhoc equivalents
    perf tools: Remove unused perf_pathdup, xstrdup functions
    perf tools: Do not include stringify.h from the kernel sources
    tools include: Copy linux/stringify.h from the kernel
    tools lib traceevent: Remove redundant CPU output
    perf tools: Remove needless 'extern' from function prototypes
    perf tools: Simplify die() mechanism
    perf tools: Remove unused DIE_IF macro
    perf script: Remove lots of unused arguments
    perf thread: Rename perf_event__preprocess_sample_addr to thread__resolve
    perf machine: Rename perf_event__preprocess_sample to machine__resolve
    perf tools: Add cpumode to struct perf_sample
    perf tests: Forward the perf_sample in the dwarf unwind test
    perf tools: Remove misplaced __maybe_unused
    perf list: Fix documentation of :ppp
    perf bench numa: Fix assertion for nodes bitfield
    ...

    Linus Torvalds
     
  • …inux-at91 into next/dt2

    Merge "First fixes batch for AT91 on 4.6 - DT only fixes" from Nicolas Ferre:
    - prevent the boards from having glitches when inserting/removing SD card on
    sama5d3/d4 Xplained. The regulators should be kept on.

    * tag 'at91-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nferre/linux-at91:
    ARM: dts: at91: sama5d4 Xplained: don't disable hsmci regulator
    ARM: dts: at91: sama5d3 Xplained: don't disable hsmci regulator
    ARM: dts: at91: sama5d2 Xplained: add leds node
    ARM: dts: at91: sama5d2 Xplained: add user push button
    ARM: dts: at91: sama5d2 Xplained: set pin muxing for usb gadget and usb host
    ARM: dts: at91: sama5d2: add nand0 and nfc0 nodes
    ARM: dts: at91: sama5d2: add dma properties to UART nodes
    ARM: dts: at91: sama5d2 Xplained: Correct the macb irq pinctrl node

    Arnd Bergmann
     
  • Pull x86 fixes from Ingo Molnar:
    "Misc fixes:

    - fix hotplug bugs
    - fix irq live lock
    - fix various topology handling bugs
    - fix APIC ACK ordering
    - fix PV iopl handling
    - fix speling
    - fix/tweak memcpy_mcsafe() return value
    - fix fbcon bug
    - remove stray prototypes"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/msr: Remove unused native_read_tscp()
    x86/apic: Remove declaration of unused hw_nmi_is_cpu_stuck
    x86/oprofile/nmi: Add missing hotplug FROZEN handling
    x86/hpet: Use proper mask to modify hotplug action
    x86/apic/uv: Fix the hotplug notifier
    x86/apb/timer: Use proper mask to modify hotplug action
    x86/topology: Use total_cpus not nr_cpu_ids for logical packages
    x86/topology: Fix Intel HT disable
    x86/topology: Fix logical package mapping
    x86/irq: Cure live lock in fixup_irqs()
    x86/tsc: Prevent NULL pointer deref in calibrate_delay_is_known()
    x86/apic: Fix suspicious RCU usage in smp_trace_call_function_interrupt()
    x86/iopl: Fix iopl capability check on Xen PV
    x86/iopl/64: Properly context-switch IOPL on Xen PV
    selftests/x86: Add an iopl test
    x86/mm, x86/mce: Fix return type/value for memcpy_mcsafe()
    x86/video: Don't assume all FB devices are PCI devices
    arch/x86/irq: Purge useless handler declarations from hw_irq.h
    x86: Fix misspellings in comments

    Linus Torvalds
     
  • earlyprintk is architecture specific option.
    earlycon is generic and small footprint.

    Signed-off-by: Yoshinori Sato

    Yoshinori Sato
     
  • The clock is really the device functional clock, not the interface
    clock. Rename it.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Laurent Pinchart

    Geert Uytterhoeven