1. 07 7月, 2014 5 次提交
    • L
      ACPI / EC: Add asynchronous command byte write support · f92fca00
      Lv Zheng 提交于
      Move the first command byte write into advance_transaction() so that all
      EC register accesses that can affect the command processing state machine
      can happen in this asynchronous state machine advancement function.
      
      The advance_transaction() function then can be a complete implementation
      of an asyncrhonous transaction for a single command so that:
       1. The first command byte can be written in the interrupt context;
       2. The command completion waiter can also be used to wait the first command
          byte's timeout;
       3. In BURST mode, the follow-up command bytes can be written in the
          interrupt context directly, so that it doesn't need to return to the
          task context. Returning to the task context reduces the throughput of
          the BURST mode and in the worst cases where the system workload is very
          high, this leads to the hardware driven automatic BURST mode exit.
      
      In order not to increase memory consumption, convert 'done' into 'flags'
      to contain multiple indications:
       1. ACPI_EC_COMMAND_COMPLETE: converting from original 'done' condition,
          indicating the completion of the command transaction.
       2. ACPI_EC_COMMAND_POLL: indicating the availability of writing the first
          command byte. A new command can utilize this flag to compete for the
          right of accessing the underlying hardware. There is a follow-up bug
          fix that has utilized this new flag.
      
      The 2 flags are important because it also reflects a key concept of IO
      programs' design used in the system softwares. Normally an IO program
      running in the kernel should first be implemented in the asynchronous way.
      And the 2 flags are the most common way to implement its synchronous
      operations on top of the asynchronous operations:
      1. POLL: This flag can be used to block until the asynchronous operations
               can happen.
      2. COMPLETE: This flag can be used to block until the asynchronous
                   operations have completed.
      By constructing code cleanly in this way, many difficult problems can be
      solved smoothly.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=70891
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=63931
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=59911Reported-and-tested-by: NGareth Williams <gareth@garethwilliams.me.uk>
      Reported-and-tested-by: NHans de Goede <jwrdegoede@fedoraproject.org>
      Reported-by: NBarton Xu <tank.xuhan@gmail.com>
      Tested-by: NSteffen Weber <steffen.weber@gmail.com>
      Tested-by: NArthur Chen <axchen@nvidia.com>
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Cc: All applicable <stable@vger.kernel.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      f92fca00
    • L
      ACPI / EC: Avoid race condition related to advance_transaction() · 66b42b78
      Lv Zheng 提交于
      The advance_transaction() will be invoked from the IRQ context GPE handler
      and the task context ec_poll(). The handling of this function is locked so
      that the EC state machine are ensured to be advanced sequentially.
      
      But there is a problem. Before invoking advance_transaction(), EC_SC(R) is
      read. Then for advance_transaction(), there could be race condition around
      the lock from both contexts. The first one reading the register could fail
      this race and when it passes the stale register value to the state machine
      advancement code, the hardware condition is totally different from when
      the register is read. And the hardware accesses determined from the wrong
      hardware status can break the EC state machine. And there could be cases
      that the functionalities of the platform firmware are seriously affected.
      For example:
       1. When 2 EC_DATA(W) writes compete the IBF=0, the 2nd EC_DATA(W) write may
          be invalid due to IBF=1 after the 1st EC_DATA(W) write. Then the
          hardware will either refuse to respond a next EC_SC(W) write of the next
          command or discard the current WR_EC command when it receives a EC_SC(W)
          write of the next command.
       2. When 1 EC_SC(W) write and 1 EC_DATA(W) write compete the IBF=0, the
          EC_DATA(W) write may be invalid due to IBF=1 after the EC_SC(W) write.
          The next EC_DATA(R) could never be responded by the hardware. This is
          the root cause of the reported issue.
      
      Fix this issue by moving the EC_SC(R) access into the lock so that we can
      ensure that the state machine is advanced consistently.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=70891
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=63931
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=59911Reported-and-tested-by: NGareth Williams <gareth@garethwilliams.me.uk>
      Reported-and-tested-by: NHans de Goede <jwrdegoede@fedoraproject.org>
      Reported-by: NBarton Xu <tank.xuhan@gmail.com>
      Tested-by: NSteffen Weber <steffen.weber@gmail.com>
      Tested-by: NArthur Chen <axchen@nvidia.com>
      Signed-off-by: NLv Zheng <lv.zheng@intel.com>
      Cc: All applicable <stable@vger.kernel.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      66b42b78
    • L
      Linux 3.16-rc4 · cd3de83f
      Linus Torvalds 提交于
      cd3de83f
    • L
      Merge tag 'dt-for-linus' of git://git.secretlab.ca/git/linux · 100193f5
      Linus Torvalds 提交于
      Pull devicetree bugfix from Grant Likely:
       "Important bug fix for parsing 64-bit addresses on 32-bit platforms.
        Without this patch the kernel will try to use memory ranges that
        cannot be reached"
      
      * tag 'dt-for-linus' of git://git.secretlab.ca/git/linux:
        of: Check for phys_addr_t overflows in early_init_dt_add_memory_arch
      100193f5
    • L
      Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 8addf0c7
      Linus Torvalds 提交于
      Pull SCSI fixes from James Bottomley:
       "This is a set of 13 fixes, a MAINTAINERS update and a sparse update.
        The fixes are mostly correct value initialisations, avoiding NULL
        derefs and some uninitialised pointer avoidance.
      
        All the patches have been incubated in -next for a few days.  The
        final patch (use the scsi data buffer length to extract transfer size)
        has been rebased to add a cc to stable, but only the commit message
        has changed"
      
      * tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        [SCSI] use the scsi data buffer length to extract transfer size
        virtio-scsi: fix various bad behavior on aborted requests
        virtio-scsi: avoid cancelling uninitialized work items
        ibmvscsi: Add memory barriers for send / receive
        ibmvscsi: Abort init sequence during error recovery
        qla2xxx: Fix sparse warning in qla_target.c.
        bnx2fc: Improve stats update mechanism
        bnx2fc: do not scan uninitialized lists in case of error.
        fc: ensure scan_work isn't active when freeing fc_rport
        pm8001: Fix potential null pointer dereference and memory leak.
        MAINTAINERS: Update LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI) maintainers Email IDs
        be2iscsi: remove potential junk pointer free
        be2iscsi: add an missing goto in error path
        scsi_error: set DID_TIME_OUT correctly
        scsi_error: fix invalid setting of host byte
      8addf0c7
  2. 06 7月, 2014 8 次提交
  3. 05 7月, 2014 6 次提交
    • S
      MAINTAINERS: Add few more Keystone drivers · bc6aa566
      Santosh Shilimkar 提交于
      Update MAINTAINERS file for recently added reset controller, AEMIF
      and clocksource driver for Keystone SOCs.
      
      The EMIF memory controller driver is also added along with AEMIF.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Olof Johansson <olof@lixom.net>
      Cc: Kevin Hilman <khilman@linaro.org>
      Cc: Mike Turquette <mturquette@linaro.org>
      Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      bc6aa566
    • S
      MAINTAINERS: merge MXS entry into IMX one · ce515a6b
      Shawn Guo 提交于
      The mach-mxs platform is actually co-maintained by myself and
      pengutronix folks.  Also it's hosted in the same kernel tree as IMX.
      So let's merge the entry into IMX one.
      Signed-off-by: NShawn Guo <shawn.guo@freescale.com>
      Acked-by: NSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      ce515a6b
    • O
      Merge tag 'mvebu-fixes-3.16-2' of git://git.infradead.org/linux-mvebu into fixes · 25d11631
      Olof Johansson 提交于
      mvebu fixes for v3.16 (round #2)
      
       - mvebu
          - Fix PCIe deadlock now that SMP is enabled
          - Fix cpuidle for big-endian systems
      
      * tag 'mvebu-fixes-3.16-2' of git://git.infradead.org/linux-mvebu:
        ARM: mvebu: fix cpuidle implementation to work on big-endian systems
        ARM: mvebu: update L2/PCIe deadlock workaround after L2CC cleanup
        ARM: mvebu: move Armada 375 external abort logic as a quirk
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      25d11631
    • M
      ARM: sunxi: Reintroduce the restart code for A10/A20 SoCs · d767af5e
      Maxime Ripard 提交于
      This partly reverts commits 55360050 (ARM: sunxi: Remove reset code from
      the platform) and 5e669ec5 (ARM: sunxi: Remove init_machine callback) for
      the sun4i, sun5i and sun7i families.
      
      This is needed because the watchdog counterpart of these commits was dropped,
      and didn't make it into 3.16. In order to still be able to reboot the board, we
      need to reintroduce that code. Of course, the long term view is still to get
      rid of that code in mach-sunxi.
      Signed-off-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NOlof Johansson <olof@lixom.net>
      d767af5e
    • O
      Merge tag 'omap-for-v3.16/fixes-against-rc1' of... · 5acd78c5
      Olof Johansson 提交于
      Merge tag 'omap-for-v3.16/fixes-against-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes
      
      Merge OMAP fixes from Tony Lindgren:
      
      Fixes for omaps for issues discovered during the merge window and
      enabling of a few features that had to wait for the driver
      dependencies to clear.
      
      The fixes included are:
      
      - Fix am43xx hard reset flags
      - Fix SoC detection for DRA722
      - Fix CPU OPP table for omap5
      - Fix legacy mux parser bug if requested muxname is a prefix of
        multiple mux entries
      - Fix qspi interrupt binding that relies on the irq crossbar
        that has not yet been enabled
      - Add missing phy_sel for am43x-epos-evm
      - Drop unused gic_init_irq() that is no longer needed
      
      And the enabling of features that had driver dependencies are:
      
      - Change dra7 to use Audio Tracking Logic clock instead of a fixed
        clock now that the clock driver for it has been merged
      
      - Enable off idle configuration for selected omaps as all the kernel
        dependencies for device tree based booting are finally merged as
        this is needed to get the automated PM tests working finally with
        device tree based booting
      
      - Add hwmod entry for ocp2scp3 for omap5 to get sata working as
        all the driver dependencies are now in the kernel and this patch
        fell through the cracks during the merge window
      
      * tag 'omap-for-v3.16/fixes-against-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
        ARM: dts: dra7-evm: remove interrupt binding
        ARM: OMAP2+: Fix parser-bug in platform muxing code
        ARM: DTS: dra7/dra7xx-clocks: ATL related changes
        ARM: OMAP2+: drop unused function
        ARM: dts: am43x-epos-evm: Add Missing cpsw-phy-sel for am43x-epos-evm
        ARM: dts: omap5: Update CPU OPP table as per final production Manual
        ARM: DRA722: add detection of SoC information
        ARM: dts: Enable twl4030 off-idle configuration for selected omaps
        ARM: OMAP5: hwmod: Add ocp2scp3 and sata hwmods
        ARM: OMAP2+: hwmod: Change hardreset soc_ops for AM43XX
      5acd78c5
    • L
      Merge tag 'md/3.16-fixes' of git://neil.brown.name/md · 77c4cf17
      Linus Torvalds 提交于
      Pull md bugfixes from Neil Brown:
       "Two minor bugfixes for md in 3.16"
      
      * tag 'md/3.16-fixes' of git://neil.brown.name/md:
        md: flush writes before starting a recovery.
        md: make sure GET_ARRAY_INFO ioctl reports correct "clean" status
      77c4cf17
  4. 04 7月, 2014 21 次提交