26 Apr, 2016

1 commit

  • The bug in a workqueue leads to a stalled IO request in MQ ctx->rq_list
    with the following backtrace:

    [ 601.347452] INFO: task kworker/u129:5:1636 blocked for more than 120 seconds.
    [ 601.347574] Tainted: G O 4.4.5-1-storage+ #6
    [ 601.347651] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
    [ 601.348142] kworker/u129:5 D ffff880803077988 0 1636 2 0x00000000
    [ 601.348519] Workqueue: ibnbd_server_fileio_wq ibnbd_dev_file_submit_io_worker [ibnbd_server]
    [ 601.348999] ffff880803077988 ffff88080466b900 ffff8808033f9c80 ffff880803078000
    [ 601.349662] ffff880807c95000 7fffffffffffffff ffffffff815b0920 ffff880803077ad0
    [ 601.350333] ffff8808030779a0 ffffffff815b01d5 0000000000000000 ffff880803077a38
    [ 601.350965] Call Trace:
    [ 601.351203] [] ? bit_wait+0x60/0x60
    [ 601.351444] [] schedule+0x35/0x80
    [ 601.351709] [] schedule_timeout+0x192/0x230
    [ 601.351958] [] ? blk_flush_plug_list+0xc7/0x220
    [ 601.352208] [] ? ktime_get+0x37/0xa0
    [ 601.352446] [] ? bit_wait+0x60/0x60
    [ 601.352688] [] io_schedule_timeout+0xa4/0x110
    [ 601.352951] [] ? _raw_spin_unlock_irqrestore+0xe/0x10
    [ 601.353196] [] bit_wait_io+0x1b/0x70
    [ 601.353440] [] __wait_on_bit+0x5d/0x90
    [ 601.353689] [] wait_on_page_bit+0xc0/0xd0
    [ 601.353958] [] ? autoremove_wake_function+0x40/0x40
    [ 601.354200] [] __filemap_fdatawait_range+0xe4/0x140
    [ 601.354441] [] filemap_fdatawait_range+0x14/0x30
    [ 601.354688] [] filemap_write_and_wait_range+0x3f/0x70
    [ 601.354932] [] blkdev_fsync+0x1b/0x50
    [ 601.355193] [] vfs_fsync_range+0x49/0xa0
    [ 601.355432] [] blkdev_write_iter+0xca/0x100
    [ 601.355679] [] __vfs_write+0xaa/0xe0
    [ 601.355925] [] vfs_write+0xa9/0x1a0
    [ 601.356164] [] kernel_write+0x38/0x50

    The underlying device is a null_blk, with default parameters:

    queue_mode = MQ
    submit_queues = 1

    Verification that nullb0 has something inflight:

    root@pserver8:~# cat /sys/block/nullb0/inflight
    0 1
    root@pserver8:~# find /sys/block/nullb0/mq/0/cpu* -name rq_list -print -exec cat {} \;
    ...
    /sys/block/nullb0/mq/0/cpu2/rq_list
    CTX pending:
    ffff8838038e2400
    ...

    During debug it became clear that stalled request is always inserted in
    the rq_list from the following path:

    save_stack_trace_tsk + 34
    blk_mq_insert_requests + 231
    blk_mq_flush_plug_list + 281
    blk_flush_plug_list + 199
    wait_on_page_bit + 192
    __filemap_fdatawait_range + 228
    filemap_fdatawait_range + 20
    filemap_write_and_wait_range + 63
    blkdev_fsync + 27
    vfs_fsync_range + 73
    blkdev_write_iter + 202
    __vfs_write + 170
    vfs_write + 169
    kernel_write + 56

    So blk_flush_plug_list() was called with from_schedule == true.

    If from_schedule is true, that means that finally blk_mq_insert_requests()
    offloads execution of __blk_mq_run_hw_queue() and uses kblockd workqueue,
    i.e. it calls kblockd_schedule_delayed_work_on().

    That means, that we race with another CPU, which is about to execute
    __blk_mq_run_hw_queue() work.

    Further debugging shows the following traces from different CPUs:

    CPU#0 CPU#1
    ---------------------------------- -------------------------------
    reqeust A inserted
    STORE hctx->ctx_map[0] bit marked
    kblockd_schedule...() returns 1

    request B inserted
    STORE hctx->ctx_map[1] bit marked
    kblockd_schedule...() returns 0
    *** WORK PENDING bit is cleared ***
    flush_busy_ctxs() is executed, but
    bit 1, set by CPU#1, is not observed

    As a result request B pended forever.

    This behaviour can be explained by speculative LOAD of hctx->ctx_map on
    CPU#0, which is reordered with clear of PENDING bit and executed _before_
    actual STORE of bit 1 on CPU#1.

    The proper fix is an explicit full barrier , which guarantees
    that clear of PENDING bit is to be executed before all possible
    speculative LOADS or STORES inside actual work function.

    Signed-off-by: Roman Pen
    Cc: Gioh Kim
    Cc: Michael Wang
    Cc: Tejun Heo
    Cc: Jens Axboe
    Cc: linux-block@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Tejun Heo

    Roman Pen
     

19 Mar, 2016

4 commits

  • Pull IPMI updates from Corey Minyard:
    "Just some minor fixes, nothing big"

    * tag 'for-linus-4.6' of git://git.code.sf.net/p/openipmi/linux-ipmi:
    ipmi: do not probe ACPI devices if si_tryacpi is unset
    ipmi_si: Avoid a wrong long timeout on transaction done
    ipmi_si: Fix module parameter doc names
    ipmi_ssif: Fix logic around alert handling

    Linus Torvalds
     
  • Pull MFD updates from Lee Jones:
    "New Drivers:
    - Freescale Touch Screen ADC
    - X-Powers AXP PMIC with RSB
    - TI TPS65086 Power Management IC (PMIC)

    New Device Support:
    - Supply device PCI IDs for Intel Broxton

    Fix-ups:
    - Move to clkdev_create() API; intel_quark_i2c_gpio
    - Complete re-write of TI's TPS65912 Power Management IC (PMIC)
    - Remove unnecessary function argument; axp20x
    - Separate out bus related code; axp20x
    - Coding Style changes; axp20x
    - Allow more drivers to be compiled as modules
    - Work around false positive 'used uninitialised' warning; db8500-prcmu

    Bug Fixes:
    - Remove do_div(); fsl-imx25-gcq
    - Fix driver init when built-in; tps65010
    - Fix clock-unregister leak; intel-lpss"

    * tag 'mfd-for-linus-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd: (53 commits)
    mfd: intel-lpss: Pass I2C configuration via properties on BXT
    mfd: imx6sx: Add PCIe register definitions for iomuxc gpr
    mfd: ipaq-micro: Use __maybe_unused to hide pm functions
    mfd: max77686: Add max77802 to I2C device ID table
    mfd: max77686: Export OF module alias information
    mfd: max77686: Allow driver to be built as a module
    mfd: stmpe: Add the proper PWM resources
    mfd: tps65090: Set regmap config reg counts properly
    mfd: syscon: Return ENOTSUPP instead of ENOSYS when disabled
    mfd: as3711: Set regmap config reg counts properly
    mfd: rc5t583: Set regmap config reg counts properly
    gpio: tps65086: Add GPO driver for the TPS65086 PMIC
    mfd: mt6397: Add platform device ID table
    mfd: da9063: Fix missing volatile registers in the core regmap_range volatile lists
    mfd: mt6397: Add MT6323 support to MT6397 driver
    mfd: mt6397: Add support for different Slave types
    mfd: mt6397: int_con and int_status may vary in location
    dt-bindings: mfd: Add bindings for the MediaTek MT6323 PMIC
    mfd: da9062: Fix missing volatile registers in the core regmap_range volatile lists
    mfd: Add documentation for ACT8945A DT bindings
    ...

    Linus Torvalds
     
  • Pull sound updates from Takashi Iwai:
    "After a heavy storm by syzkaller in 4.5 cycle, we have relatively few
    changes in the core at this time while a lot of changes are found in
    the driver side, unsurprisingly. Below are some highlights:

    ALSA core:
    - A few more hardening in ALSA timer codes
    - An extension of sequencer API for advertising the card / pid
    - Small fixes in compress-offload and jack layers

    HD-audio:
    - Dynamic PCM assignment in HDMI/DP codec; preparation for upcoming
    DP-MST support
    - Lots of code refactoring for sharing with ASoC SKL driver
    - Regression fixes for Intel HDMI/DP
    - Fixups for CX20724 codec, Lenovo AiO

    USB-audio:
    - Add quirk_alias option to make quirk debugging easier
    - Fixes for possible Oops by malformed firmware

    Firewire:
    - Add support for FW-1804 in tascam driver
    - Improvements / changes in card registration, multi stream handling,
    etc for DICE
    - Lots of code refactoring

    ASoC:
    - Enhancements of still ongoing topology API
    - Lots of commits for Intel Skylake support including HDMI support
    - A few Intel Atom driver updates for recent devices
    - Lots of improvements to the Renesas drivers
    - Capture support for Qualcomm drivers
    - Support for TI DaVinci DRA7xxx devices
    - New machine drivers for Freescale systems with Cirrus CODECs,
    Mediatek systems with RT5650 CODECs
    - New CPU drivers for Allwinner S/PDIF controllers
    - New CODEC drivers for Maxim MAX9867 and MAX98926 and Realtek RT5514"

    * tag 'sound-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (291 commits)
    ALSA: hda - Fix mutex deadlock at HDMI/DP hotplug
    ALSA: ctl: change return value in compatibility layer so that it's the same value in core implementation
    ALSA: mixart: silence an uninitialized variable warning
    ALSA: usb-audio: Add sanity checks for endpoint accesses
    ALSA: usb-audio: Minor code cleanup in create_fixed_stream_quirk()
    ALSA: usb-audio: Fix NULL dereference in create_fixed_stream_quirk()
    ALSA: hda - Limit i915 HDMI binding only for HSW and later
    ALSA: hda - Fix unconditional GPIO toggle via automute
    ALSA: mixart: silence unitialized variable warnings
    ALSA: hda - Fixes double fault in nvhdmi_chmap_cea_alloc_validate_get_type
    ALSA: intel8x0: Add clock quirk entry for AD1981B on IBM ThinkPad X41.
    ALSA: hda - Add new GPU codec ID 0x10de0082 to snd-hda
    ASoC: rsnd: add simplified module explanation
    ASoC: hdac_hdmi: Add broxton device ID
    ASoC: Intel: Bxtn: Add Broxton PCI ID
    ASoC: Intel: Skylake: Move Skylake dsp ops & loader ops
    ASoC: Intel: add dmabuffer to common sst_dsp
    ASoC: Intel: Skylake: Unstatify skl_dsp_enable_core
    ASoC: Intel: Skylake: Fix whitepsace issues
    ASoC: Intel: Skylake: Move module id defines
    ...

    Linus Torvalds
     
  • Pull rdma updates from Doug Ledford:
    "Initial roundup of 4.6 merge window patches.

    This is the first of two pull requests. It is the smaller request,
    but touches for more different things (this is everything but what is
    in or going into staging). The pull request for the code in
    staging/rdma is on hold until after we decide what to do on the
    write/writev API issue and may be partially deferred until 4.7 as a
    result.

    Summary:

    - cxgb4 updates
    - nes updates
    - unification of iwarp portmapper code to core
    - add drain_cq API
    - various ib_core updates
    - minor ipoib updates
    - minor mlx4 updates
    - more significant mlx5 updates (including a minor merge conflict
    with net-next tree...merge is simple to resolve and Stephen's
    resolution was confirmed by Mellanox)
    - trivial net/9p rdma conversion
    - ocrdma RoCEv2 update
    - srpt updates"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma: (85 commits)
    iwpm: crash fix for large connections test
    iw_cxgb3: support for iWARP port mapping
    iw_cxgb4: remove port mapper related code
    iw_nes: remove port mapper related code
    iwcm: common code for port mapper
    net/9p: convert to new CQ API
    IB/mlx5: Add support for don't trap rules
    net/mlx5_core: Introduce forward to next priority action
    net/mlx5_core: Create anchor of last flow table
    iser: Accept arbitrary sg lists mapping if the device supports it
    mlx5: Add arbitrary sg list support
    IB/core: Add arbitrary sg_list support
    IB/mlx5: Expose correct max_fast_reg_page_list_len
    IB/mlx5: Make coding style more consistent
    IB/mlx5: Convert UMR CQ to new CQ API
    IB/ocrdma: Skip using unneeded intermediate variable
    IB/ocrdma: Skip using unneeded intermediate variable
    IB/ocrdma: Delete unnecessary variable initialisations in 11 functions
    IB/core: Documentation fix in the MAD header file
    IB/core: trivial prink cleanup.
    ...

    Linus Torvalds
     

18 Mar, 2016

30 commits

  • Extend the tryacpi module parameter to turn off acpi_ipmi_probe such
    that hard-coded options (type, ports, address, etc.) have complete
    control over the smi_info data structures setup by the driver.

    Signed-off-by: Joe Lawrence
    Signed-off-by: Corey Minyard

    Joe Lawrence
     
  • Under some circumstances, the IPMI state machine could return
    a call without delay option but the driver would still do a long
    delay because the result wasn't checked. Instead of calling
    the state machine after transaction done, just go back to the
    top of the processing to start over.

    Signed-off-by: Corey Minyard

    Corey Minyard
     
  • Several were tryacpi instead of their actual values.

    Signed-off-by: Corey Minyard

    Corey Minyard
     
  • There was a mistake in the logic, if an alert came in very quickly
    it would hang the driver.

    Signed-off-by: Corey Minyard

    Corey Minyard
     
  • Pull staging driver updates from Greg KH:
    "Here is the big staging driver pull request for 4.6-rc1.

    Lots of little things here, over 1600 patches or so. Notable is all
    of the good Lustre work happening, those developers have finally woken
    up and are cleaning up their code greatly. The Outreachy intern
    application process is also happening, which brought in another 400 or
    so patches. Full details are in the very long shortlog.

    All of these have been in linux-next with no reported issues"

    * tag 'staging-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (1673 commits)
    staging: lustre: fix aligments in lnet selftest
    staging: lustre: report minimum of two buffers for LNet selftest load test
    staging: lustre: test for proper errno code in lstcon_rpc_trans_abort
    staging: lustre: filter remaining extra spacing for lnet selftest
    staging: lustre: remove extra spacing when setting variable for lnet selftest
    staging: lustre: remove extra spacing of variable declartions for lnet selftest
    staging: lustre: fix spacing issues checkpatch reported in lnet selftest
    staging: lustre: remove returns in void function for lnet selftest
    staging: lustre: fix bogus lst errors for lnet selftest
    staging: netlogic: Replacing pr_err with dev_err after the call to devm_kzalloc
    staging: mt29f_spinand: Replacing pr_info with dev_info after the call to devm_kzalloc
    staging: android: ion: fix up file mode
    staging: ion: debugfs invalid gfp mask
    staging: rts5208: Replace pci_enable_device with pcim_enable_device
    Staging: ieee80211: Place constant on right side of the test.
    staging: speakup: Replace del_timer with del_timer_sync
    staging: lowmemorykiller: fix 2 checks that checkpatch complained
    staging: mt29f_spinand: Drop void pointer cast
    staging: rdma: hfi1: file_ops: Replace ALIGN with PAGE_ALIGN
    staging: rdma: hfi1: driver: Replace IS_ALIGNED with PAGE_ALIGNED
    ...

    Linus Torvalds
     
  • Pull input updates from Dmitry Torokhov:
    "The most notable item is addition of support for Synaptics RMI4
    protocol which is native protocol for all current Synaptics devices
    (touchscreens, touchpads). In later releases we'll switch devices
    using HID and PS/2 protocol emulation to RMI4.

    You will also get:
    - BYD PS/2 touchpad protocol support for psmouse
    - MELFAS MIP4 Touchscreen driver
    - rotary encoder was moved away from legacy platform data and to
    generic device properties API, devm_* API, and can now handle
    encoders using more than 2 GPIOs
    - Cypress touchpad driver was switched to devm_* API and device
    properties
    - other assorted driver fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (40 commits)
    ARM: pxa/raumfeld: use PROPERTY_ENTRY_INTEGER to define props
    Input: synaptics-rmi4 - using logical instead of bitwise AND
    Input: powermate - fix oops with malicious USB descriptors
    Input: snvs_pwrkey - fix returned value check of syscon_regmap_lookup_by_phandle()
    MAINTAINERS: add devicetree bindings to Input Drivers section
    Input: synaptics-rmi4 - add device tree support to the SPI transport driver
    Input: synaptics-rmi4 - add SPI transport driver
    Input: synaptics-rmi4 - add support for F30
    Input: synaptics-rmi4 - add support for F12
    Input: synaptics-rmi4 - add device tree support for 2d sensors and F11
    Input: synaptics-rmi4 - add support for 2D sensors and F11
    Input: synaptics-rmi4 - add device tree support for RMI4 I2C devices
    Input: synaptics-rmi4 - add I2C transport driver
    Input: synaptics-rmi4 - add support for Synaptics RMI4 devices
    Input: ad7879 - add device tree support
    Input: ad7879 - fix default x/y axis assignment
    Input: ad7879 - move header to platform_data directory
    Input: ts4800 - add hardware dependency
    Input: cyapa - fix for losing events during device power transitions
    Input: sh_keysc - remove dependency on SUPERH
    ...

    Linus Torvalds
     
  • Pull livepatching update from Jiri Kosina:

    - cleanup of module notifiers; this depends on a module.c cleanup which
    has been acked by Rusty; from Jessica Yu

    - small assorted fixes and MAINTAINERS update

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
    livepatch/module: remove livepatch module notifier
    modules: split part of complete_formation() into prepare_coming_module()
    livepatch: Update maintainers
    livepatch: Fix the error message about unresolvable ambiguity
    klp: remove CONFIG_LIVEPATCH dependency from klp headers
    klp: remove superfluous errors in asm/livepatch.h

    Linus Torvalds
     
  • Pull trivial tree updates from Jiri Kosina.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
    drivers/rtc: broken link fix
    drm/i915 Fix typos in i915_gem_fence.c
    Docs: fix missing word in REPORTING-BUGS
    lib+mm: fix few spelling mistakes
    MAINTAINERS: add git URL for APM driver
    treewide: Fix typo in printk

    Linus Torvalds
     
  • Pull HID updates from Jiri Kosina:

    - functionally equivalent cleanups for wacom driver, making the code
    more readable, from Benjamin Tissoires

    - a bunch of improvements and fixes for thingm driver from Heiner
    Kallweit

    - bugfixes to out-of-bound access for generic parsing functions (which
    have been there since ever) extract() and implement(), from Dmitry
    Torokhov

    - a lot of added / improved device support in sony, wacom, microsoft,
    multitouch and logitech driver, from various people

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (44 commits)
    HID: microsoft: Add ID for MS Wireless Comfort Keyboard
    hid: thingm: reorder calls in thingm_probe
    HID: i2c-hid: fix OOB write in i2c_hid_set_or_send_report()
    HID: multitouch: Release all touch slots on reset_resume
    HID: usbhid: enable NO_INIT_REPORTS quirk for Semico USB Keykoard2
    HID: penmount: report only one button for PenMount 6000 USB touchscreen controller
    HID: i2c-hid: Fix suspend/resume when already runtime suspended
    HID: i2c-hid: Add hid-over-i2c name to i2c id table
    HID: multitouch: force retrieving of Win8 signature blob
    HID: Support for CMedia CM6533 HID audio jack controls
    HID: thingm: improve locking
    HID: thingm: switch to managed version of led_classdev_register
    HID: thingm: remove workqueue
    HID: corsair: fix mapping of non-keyboard usages
    HID: wacom: close the wireless receiver on remove()
    HID: wacom: cleanup input devices
    HID: wacom: reuse wacom_parse_and_register() in wireless_work
    HID: wacom: move down wireless_work()
    HID: wacom: break out parsing of device and registering of input
    HID: wacom: break out wacom_intuos_get_tool_type
    ...

    Linus Torvalds
     
  • Pull GPIO updates from Linus Walleij:
    "This is the bulk of GPIO changes for kernel v4.6. There is quite a
    lot of interesting stuff going on.

    The patches to other subsystems and arch-wide are ACKed as far as
    possible, though I consider things like per-arch as
    essentially a part of the GPIO subsystem so it should not be needed.

    Core changes:

    - The gpio_chip is now a *real device*. Until now the gpio chips
    were just piggybacking the parent device or (gasp) floating in
    space outside of the device model.

    We now finally make GPIO chips devices. The gpio_chip will create
    a gpio_device which contains a struct device, and this gpio_device
    struct is kept private. Anything that needs to be kept private
    from the rest of the kernel will gradually be moved over to the
    gpio_device.

    - As a result of making the gpio_device a real device, we have added
    resource management, so devm_gpiochip_add_data() will cut down on
    overhead and reduce code lines. A huge slew of patches convert
    almost all drivers in the subsystem to use this.

    - Building on making the GPIO a real device, we add the first step of
    a new userspace ABI: the GPIO character device. We take small
    steps here, so we first add a pure *information* ABI and the tool
    "lsgpio" that will list all GPIO devices on the system and all
    lines on these devices.

    We can now discover GPIOs properly from userspace. We still have
    not come up with a way to actually *use* GPIOs from userspace.

    - To encourage people to use the character device for the future, we
    have it always-enabled when using GPIO. The old sysfs ABI is still
    opt-in (and can be used in parallel), but is marked as deprecated.

    We will keep it around for the foreseeable future, but it will not
    be extended to cover ever more use cases.

    Cleanup:

    - Bjorn Helgaas removed a whole slew of per-architecture
    includes.

    This dates back to when GPIO was an opt-in feature and no shared
    library even existed: just a header file with proper prototypes was
    provided and all semantics were up to the arch to implement. These
    patches make the GPIO chip even more a proper device and cleans out
    leftovers of the old in-kernel API here and there.

    Still some cruft is left but it's very little now.

    - There is still some clamping of return values for .get() going on,
    but we now return sane values in the vast majority of drivers and
    the errorpath is sanitized. Some patches for powerpc, blackfin and
    unicore still drop in.

    - We continue to switch the ARM, MIPS, blackfin, m68k local GPIO
    implementations to use gpiochip_add_data() and cut down on code
    lines.

    - MPC8xxx is converted to use the generic GPIO helpers.

    - ATH79 is converted to use the generic GPIO helpers.

    New drivers:

    - WinSystems WS16C48

    - Acces 104-DIO-48E

    - F81866 (a F7188x variant)

    - Qoric (a MPC8xxx variant)

    - TS-4800

    - SPI serializers (pisosr): simple 74xx shift registers connected to
    SPI to obtain a dirt-cheap output-only GPIO expander.

    - Texas Instruments TPIC2810

    - Texas Instruments TPS65218

    - Texas Instruments TPS65912

    - X-Gene (ARM64) standby GPIO controller"

    * tag 'gpio-v4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (194 commits)
    Revert "Share upstreaming patches"
    gpio: mcp23s08: Fix clearing of interrupt.
    gpiolib: Fix comment referring to gpio_*() in gpiod_*()
    gpio: pca953x: Fix pca953x_gpio_set_multiple() on 64-bit
    gpio: xgene: Fix kconfig for standby GIPO contoller
    gpio: Add generic serializer DT binding
    gpio: uapi: use 0xB4 as ioctl() major
    gpio: tps65912: fix bad merge
    Revert "gpio: lp3943: Drop pin_used and lp3943_gpio_request/lp3943_gpio_free"
    gpio: omap: drop dev field from gpio_bank structure
    gpio: mpc8xxx: Slightly update the code for better readability
    gpio: mpc8xxx: Remove *read_reg and *write_reg from struct mpc8xxx_gpio_chip
    gpio: mpc8xxx: Fixup setting gpio direction output
    gpio: mcp23s08: Add support for mcp23s18
    dt-bindings: gpio: altera: Fix altr,interrupt-type property
    gpio: add driver for MEN 16Z127 GPIO controller
    gpio: lp3943: Drop pin_used and lp3943_gpio_request/lp3943_gpio_free
    gpio: timberdale: Switch to devm_ioremap_resource()
    gpio: ts4800: Add IMX51 dependency
    gpiolib: rewrite gpiodev_add_to_list
    ...

    Linus Torvalds
     
  • Pull m68knommu updates from Greg Ungerer:
    "The main change is the removal of the bit-rotten 68360 support. Also
    a fix to always make the ethernet FEC platform info available"

    * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu:
    m68knommu: remove obsolete 68360 support
    m68knommu: fix FEC platform device registration when driver is modular

    Linus Torvalds
     
  • Pull arm64 updates from Catalin Marinas:
    "Here are the main arm64 updates for 4.6. There are some relatively
    intrusive changes to support KASLR, the reworking of the kernel
    virtual memory layout and initial page table creation.

    Summary:

    - Initial page table creation reworked to avoid breaking large block
    mappings (huge pages) into smaller ones. The ARM architecture
    requires break-before-make in such cases to avoid TLB conflicts but
    that's not always possible on live page tables

    - Kernel virtual memory layout: the kernel image is no longer linked
    to the bottom of the linear mapping (PAGE_OFFSET) but at the bottom
    of the vmalloc space, allowing the kernel to be loaded (nearly)
    anywhere in physical RAM

    - Kernel ASLR: position independent kernel Image and modules being
    randomly mapped in the vmalloc space with the randomness is
    provided by UEFI (efi_get_random_bytes() patches merged via the
    arm64 tree, acked by Matt Fleming)

    - Implement relative exception tables for arm64, required by KASLR
    (initial code for ARCH_HAS_RELATIVE_EXTABLE added to lib/extable.c
    but actual x86 conversion to deferred to 4.7 because of the merge
    dependencies)

    - Support for the User Access Override feature of ARMv8.2: this
    allows uaccess functions (get_user etc.) to be implemented using
    LDTR/STTR instructions. Such instructions, when run by the kernel,
    perform unprivileged accesses adding an extra level of protection.
    The set_fs() macro is used to "upgrade" such instruction to
    privileged accesses via the UAO bit

    - Half-precision floating point support (part of ARMv8.2)

    - Optimisations for CPUs with or without a hardware prefetcher (using
    run-time code patching)

    - copy_page performance improvement to deal with 128 bytes at a time

    - Sanity checks on the CPU capabilities (via CPUID) to prevent
    incompatible secondary CPUs from being brought up (e.g. weird
    big.LITTLE configurations)

    - valid_user_regs() reworked for better sanity check of the
    sigcontext information (restored pstate information)

    - ACPI parking protocol implementation

    - CONFIG_DEBUG_RODATA enabled by default

    - VDSO code marked as read-only

    - DEBUG_PAGEALLOC support

    - ARCH_HAS_UBSAN_SANITIZE_ALL enabled

    - Erratum workaround Cavium ThunderX SoC

    - set_pte_at() fix for PROT_NONE mappings

    - Code clean-ups"

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (99 commits)
    arm64: kasan: Fix zero shadow mapping overriding kernel image shadow
    arm64: kasan: Use actual memory node when populating the kernel image shadow
    arm64: Update PTE_RDONLY in set_pte_at() for PROT_NONE permission
    arm64: Fix misspellings in comments.
    arm64: efi: add missing frame pointer assignment
    arm64: make mrs_s prefixing implicit in read_cpuid
    arm64: enable CONFIG_DEBUG_RODATA by default
    arm64: Rework valid_user_regs
    arm64: mm: check at build time that PAGE_OFFSET divides the VA space evenly
    arm64: KVM: Move kvm_call_hyp back to its original localtion
    arm64: mm: treat memstart_addr as a signed quantity
    arm64: mm: list kernel sections in order
    arm64: lse: deal with clobbered IP registers after branch via PLT
    arm64: mm: dump: Use VA_START directly instead of private LOWEST_ADDR
    arm64: kconfig: add submenu for 8.2 architectural features
    arm64: kernel: acpi: fix ioremap in ACPI parking protocol cpu_postboot
    arm64: Add support for Half precision floating point
    arm64: Remove fixmap include fragility
    arm64: Add workaround for Cavium erratum 27456
    arm64: mm: Mark .rodata as RO
    ...

    Linus Torvalds
     
  • …/git/shuah/linux-kselftest

    Pull Kselftest updates from Shuah Khan:
    "This update for Kselftest adds:

    - A new feature to create test-specific kconfig fragments. This
    feature helps configure Kselftests to test specific Kernel
    Configuration options as opposed to defconfig.

    - A new test for Media Controller API

    - A few fixes"

    * tag 'linux-kselftest-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests: media_dcevice_test fix usage information
    selftests: media_dcevice_test fix to handle ioctl failure case
    selftests: add missing .gitignore file or entry
    Makefile: add kselftest-merge
    selftests: create test-specific kconfig fragments
    selftests: breakpoint: add step_after_suspend_test
    selftests: add a new test for Media Controller API

    Linus Torvalds
     
  • Pull pstore update from Tony Luck:
    "Allow ram backend to be configured with addresses above 4GB"

    * tag 'please-pull-pstore' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
    pstore: Add support for 64 Bit address space

    Linus Torvalds
     
  • Pull GFS2 updates from Bob Peterson:
    "We only have six patches ready for this merge window:

    - Arnd Bergmann contributed a patch that fixes an uninitialized
    variable warning.

    - The second patch avoids a kernel panic due to referencing an iopen
    glock that may not be held, in an error path.

    - The third patch fixes a rounding error that caused xfs_tests direct
    IO write "fsx" tests to fail on GFS2.

    - The fourth patch tidies up the code path when glocks are being
    reused to recreate a dinode that was recently deleted.

    - The fifth reverts an ages-old patch that should no longer be
    needed, and which interfered with the transition of dinodes from
    unlinked to free.

    - And lastly, a patch to eliminate a function parameter that's not
    needed"

    * tag 'gfs2-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
    GFS2: Eliminate parameter non_block on gfs2_inode_lookup
    GFS2: Don't filter out I_FREEING inodes anymore
    GFS2: Prevent delete work from occurring on glocks used for create
    GFS2: Fix direct IO write rounding error
    gfs2: avoid uninitialized variable warning
    GFS2: Check if iopen is held when deleting inode

    Linus Torvalds
     
  • Pull dlm updates from David Teigland:
    "Previous changes introduced the use of socket error reporting for dlm
    sockets. This set includes two fixes in how the socket error
    callbacks are used"

    * tag 'dlm-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/linux-dlm:
    DLM: Save and restore socket callbacks properly
    DLM: Replace nodeid_to_addr with kernel_getpeername

    Linus Torvalds
     
  • Pull ext4 updates from Ted Ts'o:
    "Performance improvements in SEEK_DATA and xattr scalability
    improvements, plus a lot of clean ups and bug fixes"

    * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (38 commits)
    ext4: clean up error handling in the MMP support
    jbd2: do not fail journal because of frozen_buffer allocation failure
    ext4: use __GFP_NOFAIL in ext4_free_blocks()
    ext4: fix compile error while opening the macro DOUBLE_CHECK
    ext4: print ext4 mount option data_err=abort correctly
    ext4: fix NULL pointer dereference in ext4_mark_inode_dirty()
    ext4: drop unneeded BUFFER_TRACE in ext4_delete_inline_entry()
    ext4: fix misspellings in comments.
    jbd2: fix FS corruption possibility in jbd2_journal_destroy() on umount path
    ext4: more efficient SEEK_DATA implementation
    ext4: cleanup handling of bh->b_state in DAX mmap
    ext4: return hole from ext4_map_blocks()
    ext4: factor out determining of hole size
    ext4: fix setting of referenced bit in ext4_es_lookup_extent()
    ext4: remove i_ioend_count
    ext4: simplify io_end handling for AIO DIO
    ext4: move trans handling and completion deferal out of _ext4_get_block
    ext4: rename and split get blocks functions
    ext4: use i_mutex to serialize unaligned AIO DIO
    ext4: pack ioend structure better
    ...

    Linus Torvalds
     
  • Pull configfs updates from Christoph Hellwig:

    - A large patch from me to simplify setting up the list of default
    groups by actually implementing it as a list instead of an array.

    - a small Y2083 prep patch from Deepa Dinamani. Probably doesn't
    matter on it's own, but it seems like he is trying to get rid of all
    CURRENT_TIME uses in file systems, which is a worthwhile goal.

    * tag 'configfs-for-linus' of git://git.infradead.org/users/hch/configfs:
    configfs: switch ->default groups to a linked list
    configfs: Replace CURRENT_TIME by current_fs_time()

    Linus Torvalds
     
  • Pull USB updates from Greg KH:
    "Here is the big USB patchset for 4.6-rc1.

    The normal mess is here, gadget and xhci fixes and updates, and lots
    of other driver updates and cleanups as well. Full details are in the
    shortlog.

    All have been in linux-next for a while with no reported issues"

    * tag 'usb-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (266 commits)
    USB: core: let USB device know device node
    usb: devio: Add ioctl to disallow detaching kernel USB drivers.
    usb: gadget: f_acm: Fix configfs attr name
    usb: udc: lpc32xx: remove USB PLL and USB OTG clock management
    usb: udc: lpc32xx: remove direct access to clock controller registers
    usb: udc: lpc32xx: switch to clock prepare/unprepare model
    usb: renesas_usbhs: gadget: fix giveback status code in usbhsg_pipe_disable()
    usb: gadget: renesas_usb3: Use ARCH_RENESAS
    usb: dwc2: Fix issues in dwc2_complete_non_isoc_xfer_ddma()
    usb: dwc2: Add support for Lantiq ARX and XRX SoCs
    usb: phy: generic: Handle late registration of gadget
    usb: gadget: bdc_udc: fix race condition in bdc_udc_exit()
    usb: musb: core: added missing const qualifier to musb_hdrc_platform_data::config
    usb: dwc2: Move host-specific core functions into hcd.c
    usb: dwc2: Move register save and restore functions
    usb: dwc2: Use kmem_cache_free()
    usb: dwc2: host: If using uframe scheduler, end splits better
    usb: dwc2: host: Totally redo the microframe scheduler
    usb: dwc2: host: Properly set even/odd frame
    usb: dwc2: host: Add dwc2_hcd_get_future_frame_number() call
    ...

    Linus Torvalds
     
  • Pull tty/serial updates from Greg KH:
    "Here's the big tty/serial driver pull request for 4.6-rc1.

    Lots of changes in here, Peter has been on a tear again, with lots of
    refactoring and bugs fixes, many thanks to the great work he has been
    doing. Lots of driver updates and fixes as well, full details in the
    shortlog.

    All have been in linux-next for a while with no reported issues"

    * tag 'tty-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (220 commits)
    serial: 8250: describe CONFIG_SERIAL_8250_RSA
    serial: samsung: optimize UART rx fifo access routine
    serial: pl011: add mark/space parity support
    serial: sa1100: make sa1100_register_uart_fns a function
    tty: serial: 8250: add MOXA Smartio MUE boards support
    serial: 8250: convert drivers to use up_to_u8250p()
    serial: 8250/mediatek: fix building with SERIAL_8250=m
    serial: 8250/ingenic: fix building with SERIAL_8250=m
    serial: 8250/uniphier: fix modular build
    Revert "drivers/tty/serial: make 8250/8250_ingenic.c explicitly non-modular"
    Revert "drivers/tty/serial: make 8250/8250_mtk.c explicitly non-modular"
    serial: mvebu-uart: initial support for Armada-3700 serial port
    serial: mctrl_gpio: Add missing module license
    serial: ifx6x60: avoid uninitialized variable use
    tty/serial: at91: fix bad offset for UART timeout register
    tty/serial: at91: restore dynamic driver binding
    serial: 8250: Add hardware dependency to RT288X option
    TTY, devpts: document pty count limiting
    tty: goldfish: support platform_device with id -1
    drivers: tty: goldfish: Add device tree bindings
    ...

    Linus Torvalds
     
  • Pull char/misc updates from Greg KH:
    "Here is the big char/misc driver update for 4.6-rc1.

    The majority of the patches here is hwtracing and some new mic
    drivers, but there's a lot of other driver updates as well. Full
    details in the shortlog.

    All have been in linux-next for a while with no reported issues"

    * tag 'char-misc-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (238 commits)
    goldfish: Fix build error of missing ioremap on UM
    nvmem: mediatek: Fix later provider initialization
    nvmem: imx-ocotp: Fix return value of imx_ocotp_read
    nvmem: Fix dependencies for !HAS_IOMEM archs
    char: genrtc: replace blacklist with whitelist
    drivers/hwtracing: make coresight-etm-perf.c explicitly non-modular
    drivers: char: mem: fix IS_ERROR_VALUE usage
    char: xillybus: Fix internal data structure initialization
    pch_phub: return -ENODATA if ROM can't be mapped
    Drivers: hv: vmbus: Support kexec on ws2012 r2 and above
    Drivers: hv: vmbus: Support handling messages on multiple CPUs
    Drivers: hv: utils: Remove util transport handler from list if registration fails
    Drivers: hv: util: Pass the channel information during the init call
    Drivers: hv: vmbus: avoid unneeded compiler optimizations in vmbus_wait_for_unload()
    Drivers: hv: vmbus: remove code duplication in message handling
    Drivers: hv: vmbus: avoid wait_for_completion() on crash
    Drivers: hv: vmbus: don't loose HVMSG_TIMER_EXPIRED messages
    misc: at24: replace memory_accessor with nvmem_device_read
    eeprom: 93xx46: extend driver to plug into the NVMEM framework
    eeprom: at25: extend driver to plug into the NVMEM framework
    ...

    Linus Torvalds
     
  • Pull driver core updates from Greg KH:
    "Just a few patches this time around for the 4.6-rc1 merge window.
    Largest is a new firmware driver, but there are some other updates to
    the driver core in here as well, the shortlog has the details.

    All have been in linux-next for a while with no reported issues"

    * tag 'driver-core-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
    Revert "driver-core: platform: probe of-devices only using list of compatibles"
    firmware: qemu config needs I/O ports
    firmware: qemu_fw_cfg.c: fix typo FW_CFG_DATA_OFF
    driver-core: platform: probe of-devices only using list of compatibles
    driver-core: platform: fix typo in documentation for multi-driver helper
    component: remove impossible condition
    drivers: dma-coherent: simplify dma_init_coherent_memory return value
    devicetree: update documentation for fw_cfg ARM bindings
    firmware: create directory hierarchy for sysfs fw_cfg entries
    firmware: introduce sysfs driver for QEMU's fw_cfg device
    kobject: export kset_find_obj() for module use
    driver core: bus: use to_subsys_private and to_device_private_bus
    driver core: bus: use list_for_each_entry*
    debugfs: Add stub function for debugfs_create_automount().
    kernfs: make kernfs_walk_ns() use kernfs_pr_cont_buf[]

    Linus Torvalds
     
  • Pull VFIO updates from Alex Williamson:
    "Various enablers for assignment of Intel graphics devices and future
    support of vGPU devices (Alex Williamson). This includes

    - Handling the vfio type1 interface as an API rather than a specific
    implementation, allowing multiple type1 providers.

    - Capability chains, similar to PCI device capabilities, that allow
    extending ioctls. Extensions here include device specific regions
    and sparse mmap descriptions. The former is used to expose non-PCI
    regions for IGD, including the OpRegion (particularly the Video
    BIOS Table), and read only PCI config access to the host and LPC
    bridge as drivers often depend on identifying those devices.

    Sparse mmaps here are used to describe the MSIx vector table, which
    vfio has always protected from mmap, but never had an API to
    explicitly define that protection. In future vGPU support this is
    expected to allow the description of PCI BARs that may mix direct
    access and emulated access within a single region.

    - The ability to expose the shadow ROM as an option ROM as IGD use
    cases may rely on the ROM even though the physical device does not
    make use of a PCI option ROM BAR"

    * tag 'vfio-v4.6-rc1' of git://github.com/awilliam/linux-vfio:
    vfio/pci: return -EFAULT if copy_to_user fails
    vfio/pci: Expose shadow ROM as PCI option ROM
    vfio/pci: Intel IGD host and LCP bridge config space access
    vfio/pci: Intel IGD OpRegion support
    vfio/pci: Enable virtual register in PCI config space
    vfio/pci: Add infrastructure for additional device specific regions
    vfio: Define device specific region type capability
    vfio/pci: Include sparse mmap capability for MSI-X table regions
    vfio: Define sparse mmap capability for regions
    vfio: Add capability chain helpers
    vfio: Define capability chains
    vfio: If an IOMMU backend fails, keep looking
    vfio/pci: Fix unsigned comparison overflow

    Linus Torvalds
     
  • Pull HSI updates from Sebastian Reichel:
    "nokia-modem: add N950 and N9 support"

    * tag 'hsi-for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
    HSI: ssi-protocol: Use handshake logic from n950
    HSI: nokia-modem: add n950 and n9 support

    Linus Torvalds
     
  • Pull power supply and reset changes from Sebastian Reichel:
    - add types for USB Type C and PD chargers
    - add act8945a charger driver
    - add ACPI/DT bindings for goldfish-battery
    - add support for versatile reset controller
    - misc fixes

    * tag 'for-v4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: (24 commits)
    power: pm2301-charger: use __maybe_unused to hide pm functions
    power: ipaq-micro-battery: use __maybe_unused to hide pm functions
    power_supply: 88pm860x_charger: do not pass NULL to power_supply_put
    jz4740-battery: Correct voltage change check
    power_supply: lp8788-charger: initialize boolean 'found'
    goldfish: Enable ACPI-based enumeration for goldfish battery
    power: goldfish_battery: add devicetree bindings
    power: act8945a: add charger driver for ACT8945A
    power: add documentation for ACT8945A's charger DT bindings
    ARM: dts: n900: Rename isp1704 to isp1707 to match correct name
    power_supply: bq27xxx_battery: Add of modalias and match table when CONFIG_OF is enabled
    power_supply: bq2415x_charger: Add of modalias and match table when CONFIG_OF is enabled
    power_supply: bq2415x_charger: Do not add acpi modalias when CONFIG_ACPI is not enabled
    power_supply: isp1704_charger: Add compatible of match for nxp,isp1707
    power_supply: isp1704_charger: Error messages when probe fail
    power_supply: Add types for USB Type C and PD chargers
    power: bq24735-charger: add 'ti,external-control' option
    power: bq24735-charger: document 'ti,external-control' option
    power: bq24735-charger: fix failed i2c with ac-detect
    power: reset: Fix dependencies for !HAS_IOMEM archs
    ...

    Linus Torvalds
     
  • Pull dmaengine updates from Vinod Koul:
    "This is smallish update with minor changes to core and new driver and
    usual updates. Nothing super exciting here..

    - We have made slave address as physical to enable driver to do the
    mapping.

    - We now expose the maxburst for slave dma as new capability so
    clients can know this and program accordingly

    - addition of device synchronize callbacks on omap and edma.

    - pl330 updates to support DMAFLUSHP for Rockchip platforms.

    - Updates and improved sg handling in Xilinx VDMA driver.

    - New hidma qualcomm dma driver, though some bits are still in
    progress"

    * tag 'dmaengine-4.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (40 commits)
    dmaengine: IOATDMA: revise channel reset workaround on CB3.3 platforms
    dmaengine: add Qualcomm Technologies HIDMA channel driver
    dmaengine: add Qualcomm Technologies HIDMA management driver
    dmaengine: hidma: Add Device Tree binding
    dmaengine: qcom_bam_dma: move to qcom directory
    dmaengine: tegra: Move of_device_id table near to its user
    dmaengine: xilinx_vdma: Remove unnecessary variable initializations
    dmaengine: sirf: use __maybe_unused to hide pm functions
    dmaengine: rcar-dmac: clear pertinence number of channels
    dmaengine: sh: shdmac: don't open code of_device_get_match_data()
    dmaengine: tegra: don't open code of_device_get_match_data()
    dmaengine: qcom_bam_dma: Make driver work for BE
    dmaengine: sun4i: support module autoloading
    dma/mic_x100_dma: IS_ERR() vs PTR_ERR() typo
    dmaengine: xilinx_vdma: Use readl_poll_timeout instead of do while loop's
    dmaengine: xilinx_vdma: Simplify spin lock handling
    dmaengine: xilinx_vdma: Fix issues with non-parking mode
    dmaengine: xilinx_vdma: Improve SG engine handling
    dmaengine: pl330: fix to support the burst mode
    dmaengine: make slave address physical
    ...

    Linus Torvalds
     
  • Pull remoteproc updates from Bjorn Andersson:
    "New driver for controlling ST's remote processors and a couple of
    minor fixes. Also includes the addition of myself as co-maintainer"

    Acked-by: Ohad Ben-Cohen

    * tag 'rproc-v4.6' of git://github.com/andersson/remoteproc:
    MAINTAINERS: Add co-maintainer for remoteproc subsystems
    remoteproc: Supply controller driver for ST's Remote Processors
    remoteproc: debugfs: Add ability to boot remote processor using debugfs
    remoteproc: dt: Provide bindings for ST's Remote Processor Controller driver
    remoteproc: debugfs: Return error on invalid 'count' value
    remoteproc/wkup_m3: Use MODULE_DEVICE_TABLE to export alias
    remoteproc: report error if resource table doesn't exist

    Linus Torvalds
     
  • Pul documentation update from Jon Corbet:
    "Another relatively boring cycle for the docs tree: typo fixes,
    translation updates, etc"

    * tag 'docs-for-linus' of git://git.lwn.net/linux:
    modsign: Fix documentation on module signing enforcement parameter.
    Doc: nfs: Fix typos in Documentation/filesystems/nfs
    Documentation: kselftest: Remove duplicate word
    doc: fix grammar
    Documentation: Howto: Fixed subtitles style
    Doc: ARM: Fix a typo in clksrc-change-registers.awk
    Documentation/ko_KR: update maintainer information
    Documentation: Fix int/unsigned int comparison
    Documentation: Chinese translation of arm64/silicon-errata.txt
    Documentation:Update Documentation/zh_CN/arm64/booting.txt
    Documentation: HOWTO: remove obsolete info about regression postings
    Doc: ja_JP: Fix a typo in HOWTO
    Doc: i2c: Fix typo in Documentation/i2c
    Doc: DocBook: Fix a typo in device-drivers.tmpl
    Remove "arch" usage in Documentation/features/list-arch.sh
    README: cosmetic fixes
    Documentation/CodingStyle: add space before parenthesis in example macro
    SubmittingPatches: fix spelling of "git send-email"

    Linus Torvalds
     
  • Pull security layer updates from James Morris:
    "There are a bunch of fixes to the TPM, IMA, and Keys code, with minor
    fixes scattered across the subsystem.

    IMA now requires signed policy, and that policy is also now measured
    and appraised"

    * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (67 commits)
    X.509: Make algo identifiers text instead of enum
    akcipher: Move the RSA DER encoding check to the crypto layer
    crypto: Add hash param to pkcs1pad
    sign-file: fix build with CMS support disabled
    MAINTAINERS: update tpmdd urls
    MODSIGN: linux/string.h should be #included to get memcpy()
    certs: Fix misaligned data in extra certificate list
    X.509: Handle midnight alternative notation in GeneralizedTime
    X.509: Support leap seconds
    Handle ISO 8601 leap seconds and encodings of midnight in mktime64()
    X.509: Fix leap year handling again
    PKCS#7: fix unitialized boolean 'want'
    firmware: change kernel read fail to dev_dbg()
    KEYS: Use the symbol value for list size, updated by scripts/insert-sys-cert
    KEYS: Reserve an extra certificate symbol for inserting without recompiling
    modsign: hide openssl output in silent builds
    tpm_tis: fix build warning with tpm_tis_resume
    ima: require signed IMA policy
    ima: measure and appraise the IMA policy itself
    ima: load policy using path
    ...

    Linus Torvalds
     
  • Pull crypto update from Herbert Xu:
    "Here is the crypto update for 4.6:

    API:
    - Convert remaining crypto_hash users to shash or ahash, also convert
    blkcipher/ablkcipher users to skcipher.
    - Remove crypto_hash interface.
    - Remove crypto_pcomp interface.
    - Add crypto engine for async cipher drivers.
    - Add akcipher documentation.
    - Add skcipher documentation.

    Algorithms:
    - Rename crypto/crc32 to avoid name clash with lib/crc32.
    - Fix bug in keywrap where we zero the wrong pointer.

    Drivers:
    - Support T5/M5, T7/M7 SPARC CPUs in n2 hwrng driver.
    - Add PIC32 hwrng driver.
    - Support BCM6368 in bcm63xx hwrng driver.
    - Pack structs for 32-bit compat users in qat.
    - Use crypto engine in omap-aes.
    - Add support for sama5d2x SoCs in atmel-sha.
    - Make atmel-sha available again.
    - Make sahara hashing available again.
    - Make ccp hashing available again.
    - Make sha1-mb available again.
    - Add support for multiple devices in ccp.
    - Improve DMA performance in caam.
    - Add hashing support to rockchip"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (116 commits)
    crypto: qat - remove redundant arbiter configuration
    crypto: ux500 - fix checks of error code returned by devm_ioremap_resource()
    crypto: atmel - fix checks of error code returned by devm_ioremap_resource()
    crypto: qat - Change the definition of icp_qat_uof_regtype
    hwrng: exynos - use __maybe_unused to hide pm functions
    crypto: ccp - Add abstraction for device-specific calls
    crypto: ccp - CCP versioning support
    crypto: ccp - Support for multiple CCPs
    crypto: ccp - Remove check for x86 family and model
    crypto: ccp - memset request context to zero during import
    lib/mpi: use "static inline" instead of "extern inline"
    lib/mpi: avoid assembler warning
    hwrng: bcm63xx - fix non device tree compatibility
    crypto: testmgr - allow rfc3686 aes-ctr variants in fips mode.
    crypto: qat - The AE id should be less than the maximal AE number
    lib/mpi: Endianness fix
    crypto: rockchip - add hash support for crypto engine in rk3288
    crypto: xts - fix compile errors
    crypto: doc - add skcipher API documentation
    crypto: doc - update AEAD AD handling
    ...

    Linus Torvalds
     

17 Mar, 2016

5 commits

  • The recent change in HD-audio HDMI/DP codec driver for allowing the
    dynamic PCM binding introduced a new spec->pcm_mutex. One of the
    protected area by this mutex is hdmi_present_sense(). As reported by
    Intel CI tests, unfortunately, the new mutex causes a deadlock when
    the hotplug/unplug is triggered during the codec is in runtime
    suspend. The buggy code path is like the following:

    hdmi_unsol_event() -> ...
    -> hdmi_present_sense()
    ==> ** here taking pcm_mutex
    -> hdmi_present_sense_via_verbs()
    -> snd_hda_power_up_pm() -> ... (runtime resume calls)
    -> generic_hdmi_resume()
    -> hdmi_present_sense()
    ==> ** here taking pcm_mutex again!

    As we can see here, the problem is that the mutex is taken before
    snd_hda_power_up_pm() call that triggers the runtime resume. That is,
    the obvious solution is to move the power up/down call outside the
    mutex; it is exactly what this patch provides.

    The patch also clarifies why this bug wasn't caught beforehand. We
    used to have the i915 audio component for hotplug for all Intel chips,
    and in that code path, there is no power up required but the
    information is taken directly from the graphics side. However, we
    recently switched back to the old method for some old Intel chips due
    to regressions, and now the deadlock issue is surfaced.

    Fixes: a76056f2e57e ('ALSA: hda - hdmi dynamically bind PCM to pin when monitor hotplug')
    Reported-by: Ville Syrjälä
    Tested-by: Ville Syrjälä
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • …e in core implementation

    In control compatibility layer, when no elements are found by
    ELEM_READ/ELEM_WRITE ioctl commands, ENXIO is returned. On the other hand,
    in core implementation, ENOENT is returned. This is not good for
    ALSA ctl applications.

    This commit changes the return value from the compatibility layer so
    that the same value is returned.

    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>

    Takashi Sakamoto
     
  • …or-4.6/logitech', 'for-4.6/multitouch', 'for-4.6/penmount', 'for-4.6/sony', 'for-4.6/thingm', 'for-4.6/upstream' and 'for-4.6/wacom' into for-linus

    Jiri Kosina
     
  • Remove the livepatch module notifier in favor of directly enabling and
    disabling patches to modules in the module loader. Hard-coding the
    function calls ensures that ftrace_module_enable() is run before
    klp_module_coming() during module load, and that klp_module_going() is
    run before ftrace_release_mod() during module unload. This way, ftrace
    and livepatch code is run in the correct order during the module
    load/unload sequence without dependence on the module notifier call chain.

    Signed-off-by: Jessica Yu
    Reviewed-by: Petr Mladek
    Acked-by: Josh Poimboeuf
    Acked-by: Rusty Russell
    Signed-off-by: Jiri Kosina

    Jessica Yu
     
  • Put all actions in complete_formation() that are performed after
    module->state is set to MODULE_STATE_COMING into a separate function
    prepare_coming_module(). This split prepares for the removal of the
    livepatch module notifiers in favor of hard-coding function calls to
    klp_module_{coming,going} in the module loader.

    The complete_formation -> prepare_coming_module split will also make error
    handling easier since we can jump to the appropriate error label to do any
    module GOING cleanup after all the COMING-actions have completed.

    Signed-off-by: Jessica Yu
    Reviewed-by: Josh Poimboeuf
    Reviewed-by: Petr Mladek
    Acked-by: Rusty Russell
    Signed-off-by: Jiri Kosina

    Jessica Yu