1. 29 Nov, 2016 10 commits
    • Daniel Wagner's avatar
      firmware: do not use fw_lock for fw_state protection · 5b029624
      Daniel Wagner authored
      fw_lock is to use to protect 'corner cases' inside firmware_class. It
      is not exactly clear what those corner cases are nor what it exactly
      protects. fw_state can be used without needing the fw_lock to protect
      its state transition and wake ups.
      
      fw_state is holds the state in status and the completion is used to
      wake up all waiters (in this case that is the user land helper so only
      one). This operation has to be 'atomic' to avoid races.  We can do this
      by using swait which takes care we don't miss any wake up.
      
      We use also swait instead of wait because don't need all the additional
      features wait provides.
      
      Note there some more cleanups possible after with this change. For
      example for !CONFIG_FW_LOADER_USER_HELPER we don't check for the state
      anymore.  Let's to this in the next patch instead mingling to many
      changes into this one. And yes you get a gcc warning "‘__fw_state_check’
      defined but not used [-Wunused-function] code." for the time beeing.
      
      Cc: Ming Lei <ming.lei@canonical.com>
      Signed-off-by: default avatarDaniel Wagner <daniel.wagner@bmw-carit.de>
      Acked-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5b029624
    • Daniel Wagner's avatar
      firmware: drop bit ops in favor of simple state machine · 0430cafc
      Daniel Wagner authored
      We track the state of the firmware loading with bit ops.  Since the
      state machine has only a few states and they are all mutual exclusive
      there are only a few simple state transition we can model this simplify.
      
      	   UNKNOWN -> LOADING -> DONE | ABORTED
      
      Because we don't use any bit ops on fw_state::status anymore we are able
      to change the data type to enum fw_status and update the function
      arguments accordingly.
      
      READ_ONCE() and WRITE_ONCE() are propably not needed because there are a
      lot of load and stores around fw_st->status. But let's make it explicit
      and not be sorry later.
      
      Cc: Ming Lei <ming.lei@canonical.com>
      Signed-off-by: default avatarDaniel Wagner <daniel.wagner@bmw-carit.de>
      Acked-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0430cafc
    • Daniel Wagner's avatar
      firmware: refactor loading status · f52cc379
      Daniel Wagner authored
      The firmware loader tracks the current state of the loading process
      via unsigned long status and a completion in struct
      firmware_buf. Instead of open code tracking the state, introduce data
      structure which encapsulate the state tracking and synchronization.
      
      While at it also separate UHM states from direct loading states, e.g.
      the loading_timeout is only defined when CONFIG_FW_LOADER_USER_HELPER.
      
      Cc: Ming Lei <ming.lei@canonical.com>
      Signed-off-by: default avatarDaniel Wagner <daniel.wagner@bmw-carit.de>
      Acked-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f52cc379
    • Yves-Alexis Perez's avatar
      firmware: fix usermode helper fallback loading · 2e700f8d
      Yves-Alexis Perez authored
      When you use the firmware usermode helper fallback with a timeout value set to a
      value greater than INT_MAX (2147483647) a cast overflow issue causes the
      timeout value to go negative and breaks all usermode helper loading. This
      regression was introduced through commit 68ff2a00 ("firmware_loader:
      handle timeout via wait_for_completion_interruptible_timeout()") on kernel
      v4.0.
      
      The firmware_class drivers relies on the firmware usermode helper
      fallback as a mechanism to look for firmware if the direct filesystem
      search failed only if:
      
        a) You've enabled CONFIG_FW_LOADER_USER_HELPER_FALLBACK (not many distros):
      
        Then all of these callers will rely on the fallback mechanism in case
        the firmware is not found through an initial direct filesystem lookup:
      
        o request_firmware()
        o request_firmware_into_buf()
        o request_firmware_nowait()
      
        b) If you've only enabled CONFIG_FW_LOADER_USER_HELPER (most distros):
      
        Then only callers using request_firmware_nowait() with the second
        argument set to false, this explicitly is requesting the UMH firmware
        fallback to be relied on in case the first filesystem lookup fails.
      
        Using Coccinelle SmPL grammar we have identified only two drivers
        explicitly requesting the UMH firmware fallback mechanism:
      
        - drivers/firmware/dell_rbu.c
        - drivers/leds/leds-lp55xx-common.c
      
      Since most distributions only enable CONFIG_FW_LOADER_USER_HELPER the
      biggest impact of this regression are users of the dell_rbu and
      leds-lp55xx-common device driver which required the UMH to find their
      respective needed firmwares.
      
      The default timeout for the UMH is set to 60 seconds always, as of
      commit 68ff2a00 ("firmware_loader: handle timeout via
      wait_for_completion_interruptible_timeout()") the timeout was bumped
      to MAX_JIFFY_OFFSET ((LONG_MAX >> 1)-1). Additionally the MAX_JIFFY_OFFSET
      value was also used if the timeout was configured by a user to 0.
      
      The following works:
      
      echo 2147483647 > /sys/class/firmware/timeout
      
      But both of the following set the timeout to MAX_JIFFY_OFFSET even if
      we display 0 back to userspace:
      
      echo 2147483648 > /sys/class/firmware/timeout
      cat /sys/class/firmware/timeout
      0
      
      echo 0> /sys/class/firmware/timeout
      cat /sys/class/firmware/timeout
      0
      
      A max value of INT_MAX (2147483647) seconds is therefore implicit due to the
      another cast with simple_strtol().
      
      This fixes the secondary cast (the first one is simple_strtol() but its an
      issue only by forcing an implicit limit) by re-using the timeout variable and
      only setting retval in appropriate cases.
      
      Lastly worth noting systemd had ripped out the UMH firmware fallback
      mechanism from udev since udev 2014 via commit be2ea723b1d023b3d
      ("udev: remove userspace firmware loading support"), so as of systemd v217.
      Signed-off-by: default avatarYves-Alexis Perez <corsac@corsac.net>
      Fixes: 68ff2a00 "firmware_loader: handle timeout via wait_for_completion_interruptible_timeout()"
      Cc: Luis R. Rodriguez <mcgrof@kernel.org>
      Cc: Ming Lei <ming.lei@canonical.com>
      Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: stable@vger.kernel.org
      Acked-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      [mcgrof@kernel.org: gave commit log a whole lot of love]
      Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2e700f8d
    • Greg Kroah-Hartman's avatar
      driver core: firmware_class: convert to use class_groups · 3f214cff
      Greg Kroah-Hartman authored
      Convert the firmware core to use class_groups instead of class_attrs as
      that's the correct way to handle lists of class attribute files.
      
      Cc: Ming Lei <ming.lei@canonical.com>
      Acked-by: default avatarLuis R. Rodriguez <mcgrof@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3f214cff
    • Greg Kroah-Hartman's avatar
      driver core: devcoredump: convert to use class_groups · f76d2527
      Greg Kroah-Hartman authored
      Convert devcoredump to use class_groups instead of class_attrs as that's
      the correct way to handle lists of class attribute files.
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f76d2527
    • Greg Kroah-Hartman's avatar
      driver core: class: add class_groups support · ced6473e
      Greg Kroah-Hartman authored
      struct class needs to have a set of default groups that are added, as
      adding individual attributes does not work well in the long run.  So add
      support for that.
      
      Future patches will convert the existing usages of class_attrs to use
      class_groups and then class_attrs will go away.
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ced6473e
    • Bart Van Assche's avatar
      kernfs: Declare two local data structures static · b5a06234
      Bart Van Assche authored
      This was spotted by the 'sparse' static checker.
      Signed-off-by: default avatarBart Van Assche <bart.vanassche@sandisk.com>
      Cc: Andreas Gruenbacher <agruenba@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b5a06234
    • Julia Lawall's avatar
      driver-core: fix platform_no_drv_owner.cocci warnings · 2eed70de
      Julia Lawall authored
      Remove .owner field initialization as the core will do it.
      
      Generated by: scripts/coccinelle/api/platform_no_drv_owner.cocci
      
      CC: Dmitry Torokhov <dtor@chromium.org>
      Signed-off-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2eed70de
    • Kirtika Ruchandani's avatar
      drivers/base/memory.c: Remove unused 'first_page' variable · e22defeb
      Kirtika Ruchandani authored
      Commit 71fbd556 ("memory-hotplug: remove redundant call of page_to_pfn")
      introduced an optimization that rendered 'struct page* first_page'
      useless in memory_block_action(). Compiling with W=1 gives the
      following warning, fix it.
      
      drivers/base/memory.c: In function ‘memory_block_action’:
      drivers/base/memory.c:229:15: warning: variable ‘first_page’ set but not used [-Wunused-but-set-variable]
        struct page *first_page;
                     ^
      
      This is a harmeless warning and is only being fixed to reduce the
      noise with W=1 in the kernel. The call to pfn_to_page() has no side
      effects and is safe to remove.
      
      Fixes: 71fbd556 ("memory-hotplug: remove redundant call of page_to_pfn")
      Cc: Zhang Zhen <zhenzhang.zhang@huawei.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarKirtika Ruchandani <kirtika@chromium.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e22defeb
  2. 24 Nov, 2016 1 commit
  3. 10 Nov, 2016 6 commits
  4. 31 Oct, 2016 4 commits
    • Rafael J. Wysocki's avatar
      PM / runtime: Optimize the use of device links · baa8809f
      Rafael J. Wysocki authored
      If the device has no links to suppliers that should be used for
      runtime PM (links with DEVICE_LINK_PM_RUNTIME set), there is no
      reason to walk the list of suppliers for that device during
      runtime suspend and resume.
      
      Add a simple mechanism to detect that case and possibly avoid the
      extra unnecessary overhead.
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      baa8809f
    • Rafael J. Wysocki's avatar
      PM / runtime: Use device links · 21d5c57b
      Rafael J. Wysocki authored
      Modify the runtime PM framework to use device links to ensure that
      supplier devices will not be suspended if any of their consumer
      devices are active.
      
      The idea is to reference count suppliers on the consumer's resume
      and drop references to them on its suspend.  The information on
      whether or not the supplier has been reference counted by the
      consumer's (runtime) resume is stored in a new field (rpm_active)
      in the link object for each link.
      
      It may be necessary to clean up those references when the
      supplier is unbinding and that's why the links whose status is
      DEVICE_LINK_SUPPLIER_UNBIND are skipped by the runtime suspend
      and resume code.
      
      The above means that if the consumer device is probed in the
      runtime-active state, the supplier has to be resumed and reference
      counted by device_link_add() so the code works as expected on its
      (runtime) suspend.  There is a new flag, DEVICE_LINK_RPM_ACTIVE,
      to tell device_link_add() about that (in which case the caller
      is responsible for making sure that the consumer really will
      be runtime-active when runtime PM is enabled for it).
      
      The other new link flag, DEVICE_LINK_PM_RUNTIME, tells the core
      whether or not the link should be used for runtime PM at all.
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      21d5c57b
    • Rafael J. Wysocki's avatar
      PM / sleep: Make async suspend/resume of devices use device links · 8c73b428
      Rafael J. Wysocki authored
      Make the device suspend/resume part of the core system
      suspend/resume code use device links to ensure that supplier
      and consumer devices will be suspended and resumed in the right
      order in case of async suspend/resume.
      
      The idea, roughly, is to use dpm_wait() to wait for all consumers
      before a supplier device suspend and to wait for all suppliers
      before a consumer device resume.
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8c73b428
    • Rafael J. Wysocki's avatar
      driver core: Functional dependencies tracking support · 9ed98953
      Rafael J. Wysocki authored
      Currently, there is a problem with taking functional dependencies
      between devices into account.
      
      What I mean by a "functional dependency" is when the driver of device
      B needs device A to be functional and (generally) its driver to be
      present in order to work properly.  This has certain consequences
      for power management (suspend/resume and runtime PM ordering) and
      shutdown ordering of these devices.  In general, it also implies that
      the driver of A needs to be working for B to be probed successfully
      and it cannot be unbound from the device before the B's driver.
      
      Support for representing those functional dependencies between
      devices is added here to allow the driver core to track them and act
      on them in certain cases where applicable.
      
      The argument for doing that in the driver core is that there are
      quite a few distinct use cases involving device dependencies, they
      are relatively hard to get right in a driver (if one wants to
      address all of them properly) and it only gets worse if multiplied
      by the number of drivers potentially needing to do it.  Morever, at
      least one case (asynchronous system suspend/resume) cannot be handled
      in a single driver at all, because it requires the driver of A to
      wait for B to suspend (during system suspend) and the driver of B to
      wait for A to resume (during system resume).
      
      For this reason, represent dependencies between devices as "links",
      with the help of struct device_link objects each containing pointers
      to the "linked" devices, a list node for each of them, status
      information, flags, and an RCU head for synchronization.
      
      Also add two new list heads, representing the lists of links to the
      devices that depend on the given one (consumers) and to the devices
      depended on by it (suppliers), and a "driver presence status" field
      (needed for figuring out initial states of device links) to struct
      device.
      
      The entire data structure consisting of all of the lists of link
      objects for all devices is protected by a mutex (for link object
      addition/removal and for list walks during device driver probing
      and removal) and by SRCU (for list walking in other case that will
      be introduced by subsequent change sets).  If CONFIG_SRCU is not
      selected, however, an rwsem is used for protecting the entire data
      structure.
      
      In addition, each link object has an internal status field whose
      value reflects whether or not drivers are bound to the devices
      pointed to by the link or probing/removal of their drivers is in
      progress etc.  That field is only modified under the device links
      mutex, but it may be read outside of it in some cases (introduced by
      subsequent change sets), so modifications of it are annotated with
      WRITE_ONCE().
      
      New links are added by calling device_link_add() which takes three
      arguments: pointers to the devices in question and flags.  In
      particular, if DL_FLAG_STATELESS is set in the flags, the link status
      is not to be taken into account for this link and the driver core
      will not manage it.  In turn, if DL_FLAG_AUTOREMOVE is set in the
      flags, the driver core will remove the link automatically when the
      consumer device driver unbinds from it.
      
      One of the actions carried out by device_link_add() is to reorder
      the lists used for device shutdown and system suspend/resume to
      put the consumer device along with all of its children and all of
      its consumers (and so on, recursively) to the ends of those lists
      in order to ensure the right ordering between all of the supplier
      and consumer devices.
      
      For this reason, it is not possible to create a link between two
      devices if the would-be supplier device already depends on the
      would-be consumer device as either a direct descendant of it or a
      consumer of one of its direct descendants or one of its consumers
      and so on.
      
      There are two types of link objects, persistent and non-persistent.
      The persistent ones stay around until one of the target devices is
      deleted, while the non-persistent ones are removed automatically when
      the consumer driver unbinds from its device (ie. they are assumed to
      be valid only as long as the consumer device has a driver bound to
      it).  Persistent links are created by default and non-persistent
      links are created when the DL_FLAG_AUTOREMOVE flag is passed
      to device_link_add().
      
      Both persistent and non-persistent device links can be deleted
      with an explicit call to device_link_del().
      
      Links created without the DL_FLAG_STATELESS flag set are managed
      by the driver core using a simple state machine.  There are 5 states
      each link can be in: DORMANT (unused), AVAILABLE (the supplier driver
      is present and functional), CONSUMER_PROBE (the consumer driver is
      probing), ACTIVE (both supplier and consumer drivers are present and
      functional), and SUPPLIER_UNBIND (the supplier driver is unbinding).
      The driver core updates the link state automatically depending on
      what happens to the linked devices and for each link state specific
      actions are taken in addition to that.
      
      For example, if the supplier driver unbinds from its device, the
      driver core will also unbind the drivers of all of its consumers
      automatically under the assumption that they cannot function
      properly without the supplier.  Analogously, the driver core will
      only allow the consumer driver to bind to its device if the
      supplier driver is present and functional (ie. the link is in
      the AVAILABLE state).  If that's not the case, it will rely on
      the existing deferred probing mechanism to wait for the supplier
      driver to become available.
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9ed98953
  5. 30 Oct, 2016 1 commit
  6. 29 Oct, 2016 17 commits
    • Linus Torvalds's avatar
      Linux 4.9-rc3 · a909d3e6
      Linus Torvalds authored
      a909d3e6
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 42fd2b50
      Linus Torvalds authored
      Pull x86 bugfix from Thomas Gleixner:
       "A single bugfix for the recent changes related to registering the boot
        cpu when this has not happened before prefill_possible_map().
      
        The main problem with this change got fixed already, but we missed the
        case where the local APIC is not yet mapped, when prefill_possible_map()
        is invoked, so the registration of the boot cpu which has the APIC bit
        set in CPUID will explode.
      
        I should have seen that issue earlier, but all I can do now is feeling
        embarassed"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/smpboot: Init apic mapping before usage
      42fd2b50
    • Linus Torvalds's avatar
      Merge tag 'upstream-4.9-rc3' of git://git.infradead.org/linux-ubifs · efa56375
      Linus Torvalds authored
      Pull ubi/ubifs fixes from Richard Weinberger:
       "This contains fixes for issues in both UBI and UBIFS:
      
         - A regression wrt overlayfs, introduced in -rc2.
         - An UBI issue, found by Dan Carpenter's static checker"
      
      * tag 'upstream-4.9-rc3' of git://git.infradead.org/linux-ubifs:
        ubifs: Fix regression in ubifs_readdir()
        ubi: fastmap: Fix add_vol() return value test in ubi_attach_fastmap()
      efa56375
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 2674235f
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "We haven't seen a whole lot of fixes for the first two weeks since the
        merge window, but here is the batch that we have at the moment.
      
        Nothing sticks out as particularly bad or scary, it's mostly a handful
        of smaller fixes to several platforms. The Uniphier reset controller
        changes could probably have been delayed to 4.10, but they're not
        scary and just plumbing up driver changes that went in during the
        merge window.
      
        We're also adding another maintainer to Marvell Berlin platforms, to
        help out when Sebastian is too busy. Yay teamwork!"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM: imx: mach-imx6q: Fix the PHY ID mask for AR8031
        ARM: dts: vf610: fix IRQ flag of global timer
        ARM: imx: gpc: Fix the imx_gpc_genpd_init() error path
        ARM: imx: gpc: Initialize all power domains
        arm64: dts: Updated NAND DT properties for NS2 SVK
        arm64: dts: uniphier: change MIO node to SD control node
        ARM: dts: uniphier: change MIO node to SD control node
        reset: uniphier: rename MIO reset to SD reset for Pro5, PXs2, LD20 SoCs
        arm64: uniphier: select ARCH_HAS_RESET_CONTROLLER
        ARM: uniphier: select ARCH_HAS_RESET_CONTROLLER
        arm64: dts: Add timer erratum property for LS2080A and LS1043A
        arm64: dts: rockchip: remove the abuse of keep-power-in-suspend
        ARM: multi_v7_defconfig: Enable Intel e1000e driver
        MAINTAINERS: add myself as Marvell berlin SoC maintainer
        bus: qcom-ebi2: depend on ARCH_QCOM or COMPILE_TEST
        ARM: dts: fix the SD card on the Snowball
        arm64: dts: rockchip: remove always-on and boot-on from vcc_sd
        arm64: dts: marvell: fix clocksource for CP110 master SPI0
        ARM: mvebu: Select corediv clk for all mvebu v7 SoC
      2674235f
    • Linus Torvalds's avatar
      Merge tag 'char-misc-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 2a290036
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are a few small char/misc driver fixes for reported issues.
      
        The "biggest" are two binder fixes for reported issues that have been
        shipping in Android phones for a while now, the others are various
        fixes for reported problems.
      
        And there's a MAINTAINERS update for good measure.
      
        All have been in linux-next with no reported issues"
      
      * tag 'char-misc-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        MAINTAINERS: Add entry for genwqe driver
        VMCI: Doorbell create and destroy fixes
        GenWQE: Fix bad page access during abort of resource allocation
        vme: vme_get_size potentially returning incorrect value on failure
        extcon: qcom-spmi-misc: Sync the extcon state on interrupt
        hv: do not lose pending heartbeat vmbus packets
        mei: txe: don't clean an unprocessed interrupt cause.
        ANDROID: binder: Clear binder and cookie when setting handle in flat binder struct
        ANDROID: binder: Add strong ref checks
      2a290036
    • Olof Johansson's avatar
      Merge tag 'v4.9-rockchip-dts64-fixes1' of... · b70e8beb
      Olof Johansson authored
      Merge tag 'v4.9-rockchip-dts64-fixes1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into fixes
      
      Correct regulator handling on Rockchip arm64 boards to make
      bind/unbind calls work correctly and remove a sdio-only
      property from non-sdio mmc hosts, that accidentially was
      added there.
      
      * tag 'v4.9-rockchip-dts64-fixes1' of git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip:
        arm64: dts: rockchip: remove the abuse of keep-power-in-suspend
        arm64: dts: rockchip: remove always-on and boot-on from vcc_sd
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      b70e8beb
    • Olof Johansson's avatar
      Merge tag 'arm-soc/for-4.9/devicetree-arm64-fixes' of... · bb70e53e
      Olof Johansson authored
      Merge tag 'arm-soc/for-4.9/devicetree-arm64-fixes' of http://github.com/Broadcom/stblinux into fixes
      
      This pull request contains a single fix for Broadcom ARM64-based SoCs:
      
      - Ray adds the required bus width and OOB sector size properties to the
        Northstar 2 SVK reference board in order for the NAND controller to work
        properly
      
      * tag 'arm-soc/for-4.9/devicetree-arm64-fixes' of http://github.com/Broadcom/stblinux:
        arm64: dts: Updated NAND DT properties for NS2 SVK
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      bb70e53e
    • Olof Johansson's avatar
      Merge tag 'imx-fixes-4.9' of... · fbaff059
      Olof Johansson authored
      Merge tag 'imx-fixes-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into fixes
      
      The i.MX fixes for 4.9:
       - A couple of patches from Fabio to fix the GPC power domain regression
         which is caused by PM Domain core change 0159ec67
         ("PM / Domains: Verify the PM domain is present when adding a
         provider"), and a related kernel crash seen with multi_v7_defconfig
         build.
       - Correct the PHY ID mask for AR8031 to match phy driver code.
       - Apply new added timer erratum A008585 for LS1043A and LS2080A SoC.
       - Correct vf610 global timer IRQ flag to avoid warning from gic driver
         after commit 992345a5 ("irqchip/gic: WARN if setting the
         interrupt type for a PPI fails").
      
      * tag 'imx-fixes-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
        ARM: imx: mach-imx6q: Fix the PHY ID mask for AR8031
        ARM: dts: vf610: fix IRQ flag of global timer
        ARM: imx: gpc: Fix the imx_gpc_genpd_init() error path
        ARM: imx: gpc: Initialize all power domains
        arm64: dts: Add timer erratum property for LS2080A and LS1043A
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      fbaff059
    • Olof Johansson's avatar
      Merge tag 'uniphier-fixes-v4.9' of... · 10e15a63
      Olof Johansson authored
      Merge tag 'uniphier-fixes-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier into fixes
      
      UniPhier ARM SoC fixes for v4.9
      
      - Add "select ARCH_HAS_RESET_CONTROLLER" in Kconfig
      - Rename wrongly-named mioctrl to sdctrl
      
      * tag 'uniphier-fixes-v4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier:
        arm64: dts: uniphier: change MIO node to SD control node
        ARM: dts: uniphier: change MIO node to SD control node
        reset: uniphier: rename MIO reset to SD reset for Pro5, PXs2, LD20 SoCs
        arm64: uniphier: select ARCH_HAS_RESET_CONTROLLER
        ARM: uniphier: select ARCH_HAS_RESET_CONTROLLER
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      10e15a63
    • Linus Torvalds's avatar
      Merge tag 'driver-core-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core · c636e176
      Linus Torvalds authored
      Pull driver core fixes from Greg KH:
       "Here are two small driver core / kernfs fixes for 4.9-rc3.
      
        One makes the Kconfig entry for DEBUG_TEST_DRIVER_REMOVE a bit more
        explicit that this is a crazy thing to enable for a distro kernel
        (thanks for trying Fedora!), the other resolves an issue with vim
        opening kernfs files (sysfs, configfs, etc.)
      
        Both have been in linux-next with no reported issues"
      
      * tag 'driver-core-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        driver core: Make Kconfig text for DEBUG_TEST_DRIVER_REMOVE stronger
        kernfs: Add noop_fsync to supported kernfs_file_fops
      c636e176
    • Linus Torvalds's avatar
      Merge tag 'staging-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · db4a57e6
      Linus Torvalds authored
      Pull staging and IIO driver fixes from Greg KH:
       "Here are some small staging and iio driver fixes for reported issues
        for 4.9-rc3. Nothing major, the "largest" being a lustre fix for a
        sysfs file that was obviously wrong, and had never been tested, so it
        was moved to debugfs as that is where it belongs. The others are small
        bug fixes for reported issues with various staging or iio drivers.
      
        All have been in linux-next for a while with no reported issues"
      
      * tag 'staging-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        greybus: fix a leak on error in gb_module_create()
        greybus: es2: fix error return code in ap_probe()
        greybus: arche-platform: Add missing of_node_put() in arche_platform_change_state()
        staging: android: ion: Fix error handling in ion_query_heaps()
        iio: accel: sca3000_core: avoid potentially uninitialized variable
        iio:chemical:atlas-ph-sensor: Fix use of 32 bit int to hold 16 bit big endian value
        staging/lustre/llite: Move unstable_stats from sysfs to debugfs
        Staging: wilc1000: Fix kernel Oops on opening the device
        staging: android/ion: testing the wrong variable
        Staging: greybus: uart: Use gbphy_dev->dev instead of bundle->dev
        Staging: greybus: gpio: Use gbphy_dev->dev instead of bundle->dev
        iio: adc: ti-adc081c: Select IIO_TRIGGERED_BUFFER to prevent build errors
        iio: maxim_thermocouple: Align 16 bit big endian value of raw reads
      db4a57e6
    • Linus Torvalds's avatar
      Merge tag 'tty-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 37cc6bb8
      Linus Torvalds authored
      Pull tty/serial driver fixes from Greg KH:
       "Here are a number of small tty and serial driver fixes for reported
        issues for 4.9-rc3. Nothing major, but they do resolve a bunch of
        problems with the tty core changes that are in 4.9-rc1, and finally
        the atmel serial driver is back working properly.
      
        All have been in linux-next with no reported issues"
      
      * tag 'tty-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        tty: serial_core: fix NULL struct tty pointer access in uart_write_wakeup
        tty: serial_core: Fix serial console crash on port shutdown
        tty/serial: at91: fix hardware handshake on Atmel platforms
        vt: clear selection before resizing
        sc16is7xx: always write state when configuring GPIO as an output
        sh-sci: document R8A7743/5 support
        tty: serial: 8250: 8250_core: NXP SC16C2552 workaround
        tty: limit terminal size to 4M chars
        tty: serial: fsl_lpuart: Fix Tx DMA edge case
        serial: 8250_lpss: enable MSI for sure
        serial: core: fix console problems on uart_close
        serial: 8250_uniphier: fix clearing divisor latch access bit
        serial: 8250_uniphier: fix more unterminated string
        serial: pch_uart: add terminate entry for dmi_system_id tables
        devicetree: bindings: uart: Add new compatible string for ZynqMP
        serial: xuartps: Add new compatible string for ZynqMP
        serial: SERIAL_STM32 should depend on HAS_DMA
        serial: stm32: Fix comparisons with undefined register
        tty: vt, fix bogus division in csi_J
      37cc6bb8
    • Linus Torvalds's avatar
      Merge tag 'usb-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 9af6f26a
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are a number of small USB driver fixes for 4.9-rc3.
      
        There is the usual number of gadget and xhci patches in here to
        resolved reported issues, as well as some usb-serial driver fixes and
        new device ids.
      
        All have been in linux-next with no reported issues"
      
      * tag 'usb-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (26 commits)
        usb: chipidea: host: fix NULL ptr dereference during shutdown
        usb: renesas_usbhs: add wait after initialization for R-Car Gen3
        usb: increase ohci watchdog delay to 275 msec
        usb: musb: Call pm_runtime from musb_gadget_queue
        usb: musb: Fix hardirq-safe hardirq-unsafe lock order error
        usb: ehci-platform: increase EHCI_MAX_RSTS to 4
        usb: ohci-at91: Set RemoteWakeupConnected bit explicitly.
        USB: serial: fix potential NULL-dereference at probe
        xhci: use default USB_RESUME_TIMEOUT when resuming ports.
        xhci: workaround for hosts missing CAS bit
        xhci: add restart quirk for Intel Wildcatpoint PCH
        USB: serial: cp210x: fix tiocmget error handling
        wusb: fix error return code in wusb_prf()
        Revert "Documentation: devicetree: dwc2: Deprecate g-tx-fifo-size"
        Revert "usb: dwc2: gadget: fix TX FIFO size and address initialization"
        Revert "usb: dwc2: gadget: change variable name to more meaningful"
        USB: serial: ftdi_sio: add support for Infineon TriBoard TC2X7
        wusb: Stop using the stack for sg crypto scratch space
        usb: dwc3: Fix size used in dma_free_coherent()
        usb: gadget: f_fs: stop sleeping in ffs_func_eps_disable
        ...
      9af6f26a
    • Thomas Gleixner's avatar
      x86/smpboot: Init apic mapping before usage · 1e90a13d
      Thomas Gleixner authored
      The recent changes, which forced the registration of the boot cpu on UP
      systems, which do not have ACPI tables, have been fixed for systems w/o
      local APIC, but left a wreckage for systems which have neither ACPI nor
      mptables, but the CPU has an APIC, e.g. virtualbox.
      
      The boot process crashes in prefill_possible_map() as it wants to register
      the boot cpu, which needs to access the local apic, but the local APIC is
      not yet mapped.
      
      There is no reason why init_apic_mapping() can't be invoked before
      prefill_possible_map(). So instead of playing another silly early mapping
      game, as the ACPI/mptables code does, we just move init_apic_mapping()
      before the call to prefill_possible_map().
      
      In hindsight, I should have noticed that combination earlier.
      
      Sorry for the churn (also in stable)!
      
      Fixes: ff856051 ("x86/boot/smp: Don't try to poke disabled/non-existent APIC")
      Reported-and-debugged-by: default avatarMichal Necasek <michal.necasek@oracle.com>
      Reported-and-tested-by: default avatarWolfgang Bauer <wbauer@tmo.at>
      Cc: prarit@redhat.com
      Cc: ville.syrjala@linux.intel.com
      Cc: michael.thayer@oracle.com
      Cc: knut.osmundsen@oracle.com
      Cc: frank.mehnert@oracle.com
      Cc: Borislav Petkov <bp@alien8.de>
      Cc: stable@vger.kernel.org
      Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1610282114380.5053@nanosSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      1e90a13d
    • Linus Torvalds's avatar
      Merge tag 'acpi-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · c067affc
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These fix recent ACPICA regressions, an older PCI IRQ management
        regression, and an incorrect return value of a function in the APEI
        code.
      
        Specifics:
      
         - Fix three ACPICA issues related to the interpreter locking and
           introduced by recent changes in that area (Lv Zheng).
      
         - Fix a PCI IRQ management regression introduced during the 4.7 cycle
           and related to the configuration of shared IRQs on systems with an
           ISA bus (Sinan Kaya).
      
         - Fix up a return value of one function in the APEI code (Punit
           Agrawal)"
      
      * tag 'acpi-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPICA: Dispatcher: Fix interpreter locking around acpi_ev_initialize_region()
        ACPICA: Dispatcher: Fix an unbalanced lock exit path in acpi_ds_auto_serialize_method()
        ACPICA: Dispatcher: Fix order issue of method termination
        ACPI / APEI: Fix incorrect return value of ghes_proc()
        ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs
        ACPI/PCI: pci_link: penalize SCI correctly
        ACPI/PCI/IRQ: assign ISA IRQ directly during early boot stages
      c067affc
    • Linus Torvalds's avatar
      Merge tag 'pm-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · b546e0c2
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "These fix two intel_pstate issues related to the way it works when the
        scaling_governor sysfs attribute is set to "performance" and fix up
        messages in the system suspend core code.
      
        Specifics:
      
         - Fix a missing KERN_CONT in a system suspend message by converting
           the affected code to using pr_info() and pr_cont() instead of the
           "raw" printk() (Jon Hunter).
      
         - Make intel_pstate set the CPU P-state from its .set_policy()
           callback when the scaling_governor sysfs attribute is set to
           "performance" so that it interacts with NOHZ_FULL more predictably
           which was the case before 4.7 (Rafael Wysocki).
      
         - Make intel_pstate always request the maximum allowed P-state when
           the scaling_governor sysfs attribute is set to "performance" to
           prevent it from effectively ingoring that setting is some
           situations (Rafael Wysocki)"
      
      * tag 'pm-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        cpufreq: intel_pstate: Always set max P-state in performance mode
        PM / suspend: Fix missing KERN_CONT for suspend message
        cpufreq: intel_pstate: Set P-state upfront in performance mode
      b546e0c2
    • Linus Torvalds's avatar
      Merge tag 'arc-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc · 1308fd75
      Linus Torvalds authored
      Pull ARC updates from Vineet Gupta:
      
       - support IDU intc for UP builds
      
       - support gz, lzma compressed uImage [Daniel Mentz]
      
       - adjust /proc/cpuinfo for non-continuous cpu ids [Noam Camus]
      
       - syscall for userspace cmpxchg assist for configs lacking hardware atomics
      
       - rework of boot log printing mainly for identifying older arc700 cores
      
       - retiring some old code, build toggles
      
      * tag 'arc-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
        ARC: module: print pretty section names
        ARC: module: elide loop to save reference to .eh_frame
        ARC: mm: retire ARC_DBG_TLB_MISS_COUNT...
        ARC: build: retire old toggles
        ARC: boot log: refactor cpu name/release printing
        ARC: boot log: remove awkward space comma from MMU line
        ARC: boot log: don't assume SWAPE instruction support
        ARC: boot log: refactor printing abt features not captured in BCRs
        ARCv2: boot log: print IOC exists as well as enabled status
        ARCv2: IOC: use @ioc_enable not @ioc_exist where intended
        ARC: syscall for userspace cmpxchg assist
        ARC: fix build warning in elf.h
        ARC: Adjust cpuinfo for non-continuous cpu ids
        ARC: [build] Support gz, lzma compressed uImage
        ARCv2: intc: untangle SMP, MCIP and IDU
      1308fd75
  7. 28 Oct, 2016 1 commit
    • Rafael J. Wysocki's avatar
      Merge branches 'acpica-fixes', 'acpi-pci-fixes' and 'acpi-apei-fixes' · 21e2d9d5
      Rafael J. Wysocki authored
      * acpica-fixes:
        ACPICA: Dispatcher: Fix interpreter locking around acpi_ev_initialize_region()
        ACPICA: Dispatcher: Fix an unbalanced lock exit path in acpi_ds_auto_serialize_method()
        ACPICA: Dispatcher: Fix order issue of method termination
      
      * acpi-pci-fixes:
        ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs
        ACPI/PCI: pci_link: penalize SCI correctly
        ACPI/PCI/IRQ: assign ISA IRQ directly during early boot stages
      
      * acpi-apei-fixes:
        ACPI / APEI: Fix incorrect return value of ghes_proc()
      21e2d9d5