1. 10 Nov, 2014 11 commits
    • Srinivas Kandagatla's avatar
      mmc: core: fix prepared requests while doing bkops · 64b12a68
      Srinivas Kandagatla authored
      While starting the bkops the previously prepared request should be canceled
      and restarted after the bkops. As the prepared resource might already
      setup the dma channels and ready to be started. Now with the arrival of bkops
      request this prepared request can be serviced ONLY after the bkops. So
      holding on to the prepared request in the host driver is confusing at
      this point in time, so it makes sense to cleanup such dangling requests and
      reissue this request once bkops is done.
      Canceling the prepared request would give opportunity to the host drivers
      to perform cleanup on the prepared request.
      Without this patch host drivers like mmci gets confused when a blocking
      request like send_ext_csd(CMD8) is issued while there is already a prepared
      request. With the help of this patch, the driver can better manage such
      blocking requests and cleanup the prepared requests which are not started yet.
      Without this patch I hit below crash on Qualcomm APQ8064 based IFC6410 board
      with mmci host driver.
      mmci-pl18x 12400000.sdcc: error during DMA transfer!
      Unable to handle kernel paging request at virtual address 40000000
      pgd = c0204000
      [40000000] *pgd=00000000
      Internal error: Oops: 805 [#1] SMP ARM
      Modules linked in: ipv6 ath6kl_sdio ath6kl_core
      CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W      3.17.0-rc7-linaro-multi-v7 #1
      task: c0c9d7e0 ti: c0c92000 task.ti: c0c92000
      PC is at v7_dma_inv_range+0x34/0x4c
      LR is at __dma_page_dev_to_cpu+0x80/0x100
      pc : [<c021efc0>]    lr : [<c021af18>]    psr: 400f0193
      sp : c0c93e20  ip : c0c9a478  fp : c08ea538
      r10: c0c9f548  r9 : 00000002  r8 : e97d9000
      r7 : 00000200  r6 : c0c9d504  r5 : c0db0880  r4 : 00000000
      r3 : 0000003f  r2 : 00000040  r1 : 40000200  r0 : 40000000
      Flags: nZcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c5787d  Table: a9ef406a  DAC: 00000015
      Process swapper/0 (pid: 0, stack limit = 0xc0c92250)
      Stack: (0xc0c93e20 to 0xc0c94000)
      3e20: c021f058 e9a17178 e9a171bc e99dfd6c 00000001 00000001 e995de10 00000002
      3e40: 00000000 c021b574 00000000 c04bc4a4 00000000 e9b49ac0 c0ce6e6c e99dfda4
      3e60: 00000088 e9810780 c0d8291c c072ea58 00000000 c072d3fc 00000000 c072f534
      3e80: 00000000 e9b49ac0 00000100 c0c9a444 00000088 c072f6b4 c072f5d4 e9d40080
      3ea0: e98107dc 00000000 00000000 c0280a60 00000000 7d55bf61 e9810780 e98107dc
      3ec0: 00000000 f0002000 c0d460e8 c0d460e8 c0c92000 c0280b60 e9810780 c0ce7190
      3ee0: 00000000 c028369c c02835f4 00000088 00000088 c0280278 c0c8ec70 c020f080
      3f00: f000200c c0c9a958 c0c93f28 c02088e4 c04bd630 c04bd5bc 200f0013 ffffffff
      3f20: c0c93f5c c0212800 00000001 a987c000 c0c93f3c c04bd574 00000000 0000015b
      3f40: ea7a0e40 00000000 c0d460e8 c0d460e8 c0c92000 c08ea538 29b12000 c0c93f70
      3f60: c04bd630 c04bd5bc 200f0013 ffffffff c04bd574 c071bd24 7d50c9b4 c0719a44
      3f80: 7d50c9b4 0000015b c0c9a498 c0c92028 c0c9a498 c0c9a4fc ea7a0e40 c0c8ee38
      3fa0: c0d460e8 c0276198 00000000 c0d8291a 00000000 c0c9a400 00000000 c0be0bc4
      3fc0: ffffffff ffffffff c0be05f8 00000000 00000000 c0c533d8 c0d82ed4 c0c9a47c
      3fe0: c0c533d4 c0c9e870 8020406a 511f06f0 00000000 80208074 00000000 00000000
      [<c021efc0>] (v7_dma_inv_range) from [<c021af18>] (__dma_page_dev_to_cpu+0x80/0x100)
      [<c021af18>] (__dma_page_dev_to_cpu) from [<c021b574>] (arm_dma_unmap_sg+0x5c/0x84)
      [<c021b574>] (arm_dma_unmap_sg) from [<c072ea58>] (mmci_dma_unmap.isra.16+0x60/0x74)
      [<c072ea58>] (mmci_dma_unmap.isra.16) from [<c072f534>] (mmci_data_irq+0x1fc/0x29c)
      [<c072f534>] (mmci_data_irq) from [<c072f6b4>] (mmci_irq+0xe0/0x114)
      [<c072f6b4>] (mmci_irq) from [<c0280a60>] (handle_irq_event_percpu+0x78/0x134)
      [<c0280a60>] (handle_irq_event_percpu) from [<c0280b60>] (handle_irq_event+0x44/0x64)
      [<c0280b60>] (handle_irq_event) from [<c028369c>] (handle_fasteoi_irq+0xa8/0x1a8)
      [<c028369c>] (handle_fasteoi_irq) from [<c0280278>] (generic_handle_irq+0x2c/0x3c)
      [<c0280278>] (generic_handle_irq) from [<c020f080>] (handle_IRQ+0x40/0x90)
      [<c020f080>] (handle_IRQ) from [<c02088e4>] (gic_handle_irq+0x38/0x68)
      [<c02088e4>] (gic_handle_irq) from [<c0212800>] (__irq_svc+0x40/0x54)
      Exception stack(0xc0c93f28 to 0xc0c93f70)
      3f20:                   00000001 a987c000 c0c93f3c c04bd574 00000000 0000015b
      3f40: ea7a0e40 00000000 c0d460e8 c0d460e8 c0c92000 c08ea538 29b12000 c0c93f70
      3f60: c04bd630 c04bd5bc 200f0013 ffffffff
      [<c0212800>] (__irq_svc) from [<c04bd5bc>] (msm_cpu_pm_enter_sleep+0x48/0x4c)
      [<c04bd5bc>] (msm_cpu_pm_enter_sleep) from [<c071bd24>] (qcom_lpm_enter_spc+0x20/0x2c)
      [<c071bd24>] (qcom_lpm_enter_spc) from [<c0719a44>] (cpuidle_enter_state+0x44/0xf0)
      [<c0719a44>] (cpuidle_enter_state) from [<c0276198>] (cpu_startup_entry+0x1f4/0x238)
      [<c0276198>] (cpu_startup_entry) from [<c0be0bc4>] (start_kernel+0x384/0x390)
      Code: 1e070f3e e1110003 e1c11003 1e071f3e (ee070f36)
      ---[ end trace cf6cb3f6432c9834 ]---
      Kernel panic - not syncing: Fatal exception in interrupt
      Reported-by: default avatarNicolas Dechesne <nicolas.dechesne@linaro.org>
      Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Andrew Gabbasov's avatar
      mmc: core: Fix error paths and messages in mmc_init_card · 4b75bffc
      Andrew Gabbasov authored
      In mmc_init_card function some of the branches in error handling paths
      go to "err" label, which skips removing of newly allocated card structure,
      that will actually not be used. Fix that by using proper "free_card" label.
      Also, some messages in these branches are reported as warnings,
      although the operation processing is not continued. Change these
      messages to error level.
      Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Andrew Gabbasov's avatar
      mmc: core: Add debug message for SET_BLOCK_COUNT result · fc75b708
      Andrew Gabbasov authored
      The debug messages with commands execution results, that are printed
      after processing the request, do not include results of sbc (set block count)
      part of request. Add the debug message for that part too.
      Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Andrew Gabbasov's avatar
      mmc: core: Initialize SET_BLOCK_COUNT request fields · cce411e6
      Andrew Gabbasov authored
      Some request fields are initialized just before request processing
      for sanity purposes. This is done for command, data, and stop parts
      of the request, but not for sbc (set block count) part. Add such
      initialization for that part too.
      Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Andrew Gabbasov's avatar
      mmc: sdhci: fix error conditions for controller reset · fce9d33f
      Andrew Gabbasov authored
      Add the case of SET_BLOCK_COUNT command error to the error conditions
      check for making a controller reset at request handling finish.
      Otherwise, if the SET_BLOCK_COUNT command failed, e.g. with a timeout,
      the controller state was not reset, and the next command failed too.
      In the case of data error the controller reset is already done in
      finish_data() function before sending stop command (if present),
      so the finish tasklet should make a reset after data error only
      if no stop command existed in the request.
      Also, fix the indentation of this condition check to make it more logical.
      Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Andrew Gabbasov's avatar
      mmc: sdhci: Balance vmmc regulator_disable() · fbfaf032
      Andrew Gabbasov authored
      As a follow-up of commit
      "mmc: sdhci: Balance vmmc regulator_enable(), and always enable vqmmc"
      vmmc regulator disable is also not needed in sdhci_remove_host.
      The regulator is completely controlled by mmc_power_up and mmc_power_off
      functions and is already disabled by the time of removing the host.
      Extra regulator_disable call in sdhci_remove_host is unbalanced and
      causes a warning reported by regulator core, so should be removed.
      Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Dirk Behme's avatar
      mmc: sdhci-esdhc-imx: don't exit in case of no pinctrl states · cd529af7
      Dirk Behme authored
      The commit ad93220d ("mmc: sdhci-esdhc-imx: change pinctrl state
      according to uhs mode") exits the probe in case there are no valid
      pinctrl states found.
      As there are configurations doing the pin mux properly in the boot
      loader, don't exit. Just warn, but go on in case if there are no
      pinctrl states in the device tree.
      Signed-off-by: default avatarDirk Behme <dirk.behme@de.bosch.com>
      Signed-off-by: default avatarAndrew Gabbasov <andrew_gabbasov@mentor.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Matteo Facchinetti's avatar
      mmc: mxcmmc: fix the default value for available voltages into mxcmci_probe · 18a09806
      Matteo Facchinetti authored
      If available voltages are not given, mmc_regulator_get_supply() function
      returns 0 and mxcmmc driver doesn't set a value for ocr_avail mask.
      In accordance with the comment in platform_data/mmc-mxcmmc.h,
      fix it, assuming MMC_VDD_32_33 | MMC_VDD_33_34 as default value.
      Signed-off-by: default avatarMatteo Facchinetti <matteo.facchinetti@sirius-es.it>
      Reviewed-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Matteo Facchinetti's avatar
      mmc: mxcmmc: fix race condition when dma finish a data transfer · adfa5703
      Matteo Facchinetti authored
      During a read of data block using dma, driver might have two ways to finish to read
      and free the resources:
      1) checking STATUS_DATA_TRANS_DONE mask, in the mxcmci_irq() routine
         (pending to mmc irq)
      2) mxmmc driver, registers also a mxcmci_dma_callback() and when transfer is finished,
         dma driver calls this callback. (pending to dma irq)
      Both ways are concurrent with each other.
      Race condition happens when following events occur:
      /* (1) mxcmci driver start data transfer */
               158.418970: mpc_dma_execute: mpc_dma_execute(): will_access_peripheral start cid=31
               158.418976: mpc_dma_issue_pending <-mxcmci_request
               158.418983: mxcmci_start_cmd <-mxcmci_request
      /* (2) mxcmci driver receive mmc irq */
               158.419656: mxcmci_irq <-handle_irq_event_percpu
               158.419692: mxcmci_read_response <-mxcmci_irq
      /* (3) mxcmci driver checks that transfer is complete and call mxcmci_finish_data() */
               158.419726: mxcmci_data_done <-mxcmci_irq
               158.419729: mxcmci_finish_data <-mxcmci_data_done
               158.419733: dma_direct_unmap_sg <-mxcmci_finish_data
               158.419736: mxcmci_swap_buffers.isra.24 <-mxcmci_finish_data
               158.419762: mxcmci_read_response <-mxcmci_data_done
      /* (4) mxcmci driver (no dma): send stop command */
               158.419765: mxcmci_start_cmd <-mxcmci_data_done
      /* (5) mxcmci driver (no dma): receive the stop command irq response */
               158.419782: mxcmci_irq <-handle_irq_event_percpu
               158.419812: mxcmci_read_response <-mxcmci_irq
               158.419843: mxcmci_finish_request <-mxcmci_irq
      /* (6) dma driver: receive dma irq (finish data transfer) related by request on step 1 */
               158.419853: mpc_dma_irq <-handle_irq_event_percpu
               158.420001: mpc_dma_irq_process <-mpc_dma_irq
               158.420004: mpc_dma_irq_process <-mpc_dma_irq
      /* (7) dma driver: start dma tasklet to finish the dma irq handling */
               158.420008: mpc_dma_irq_process: mpc_dma_irq_process(): completed ch:31
      /* (8) mxcmci driver: start next data transfer using dma */
               158.420174: mxcmci_request <-mmc_start_req
               158.420182: dma_direct_map_sg <-mxcmci_request
               158.420192: mpc_dma_prep_slave_sg <-mxcmci_request
      /* (9) dma driver: schedule irq tasklet and execute mxcmci dma driver callback */
               158.420250: mpc_dma_tasklet <-tasklet_action
               158.420254: mpc_dma_process_completed <-tasklet_action
               158.420267: mxcmci_dma_callback <-mpc_dma_process_completed
      /* ERROR!!! (10) mxcmci driver callback works on dma data related to the step 1
                       that is already finished */
               158.420271: mxcmci_data_done <-mpc_dma_process_completed
               158.420273: mxcmci_finish_data <-mxcmci_data_done
      /* ERROR!!! (11) mxcmci driver: clear data that should be used by step 8 and
                       send an other mmc stop command (already sended on step 4) */
               158.420276: dma_direct_unmap_sg <-mxcmci_finish_data
               158.420279: mxcmci_swap_buffers.isra.24 <-mxcmci_finish_data
               158.420330: mxcmci_read_response <-mxcmci_data_done
               158.420333: mxcmci_start_cmd <-mxcmci_data_done
               158.420338: dma_run_dependencies <-mpc_dma_process_completed
               168.474223: mxcmci_watchdog <-call_timer_fn
               168.474236: mxcmci_watchdog: mxcmci_watchdog
               168.474397: mpc_dma_device_control <-mxcmci_watchdog
      In accordance with the other drivers that using the dma engine,
      fix it, leaving *only* to dma driver the complete control to
      ending the read operation.
      Removing STATUS_READ_OP_DONE event activation, has as effect
      to force mxcmci driver to handle the finish data transfer only
      by mxcmci dma callback.
      Signed-off-by: default avatarMatteo Facchinetti <matteo.facchinetti@sirius-es.it>
      Acked-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Peter Guo's avatar
      mmc: sdhci-pci-o2micro: Fix Dell E5440 issue · 6380ea09
      Peter Guo authored
      Fix Dell E5440 when reboot Linux, can't find o2micro sd host chip issue.
      Fixes: 01acf691 (mmc: sdhci-pci: add support of O2Micro/BayHubTech SD hosts)
      Signed-off-by: default avatarPeter Guo <peter.guo@bayhubtech.com>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    • Baruch Siach's avatar
      mmc: block: add newline to sysfs display of force_ro · 0031a98a
      Baruch Siach authored
      Make force_ro consistent with other sysfs entries.
      Fixes: 371a689f ('mmc: MMC boot partitions support')
      Cc: Andrei Warkentin <andrey.warkentin@gmail.com>
      Signed-off-by: default avatarBaruch Siach <baruch@tkos.co.il>
      Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
  2. 09 Nov, 2014 9 commits
  3. 08 Nov, 2014 4 commits
  4. 07 Nov, 2014 12 commits
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 6ac94d3a
      Linus Torvalds authored
      Pull MIPS updates from Ralf Baechle:
       "This weeks' round of MIPS bug fixes for 3.18:
         - wire up the bpf syscall
         - fix TLB dump output for R3000 class TLBs
         - fix strnlen_user return value if no NUL character was found.
         - fix build with binutils 2.24.51+.  While there is no binutils 2.25
           release yet, toolchains derived from binutils 2.24.51+ are already
           in common use.
         - the Octeon GPIO code forgot to offline GPIO IRQs.
         - fix build error for XLP.
         - fix possible BUG assertion with EVA for CMA"
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
        MIPS: Fix build with binutils 2.24.51+
        MIPS: R3000: Fix debug output for Virtual page number
        MIPS: Fix strnlen_user() return value in case of overlong strings.
        MIPS: CMA: Do not reserve memory if not required
        MIPS: Wire up bpf syscall.
        MIPS/Xlp: Remove the dead function destroy_irq() to fix build error
        MIPS: Octeon: Make Octeon GPIO IRQ chip CPU hotplug-aware
    • Linus Torvalds's avatar
      Merge tag 'xfs-for-linus-3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs · 661b99e9
      Linus Torvalds authored
      Pull xfs fixes from Dave Chinner:
       "This update fixes a warning in the new pagecache_isize_extended() and
        updates some related comments, another fix for zero-range
        misbehaviour, and an unforntuately large set of fixes for regressions
        in the bulkstat code.
        The bulkstat fixes are large but necessary.  I wouldn't normally push
        such a rework for a -rcX update, but right now xfsdump can silently
        create incomplete dumps on 3.17 and it's possible that even xfsrestore
        won't notice that the dumps were incomplete.  Hence we need to get
        this update into 3.17-stable kernels ASAP.
        In more detail, the refactoring work I committed in 3.17 has exposed a
        major hole in our QA coverage.  With both xfsdump (the major user of
        bulkstat) and xfsrestore silently ignoring missing files in the
        dump/restore process, incomplete dumps were going unnoticed if they
        were being triggered.  Many of the dump/restore filesets were so small
        that they didn't evenhave a chance of triggering the loop iteration
        bugs we introduced in 3.17, so we didn't exercise the code
        sufficiently, either.
        We have already taken steps to improve QA coverage in xfstests to
        avoid this happening again, and I've done a lot of manual verification
        of dump/restore on very large data sets (tens of millions of inodes)
        of the past week to verify this patch set results in bulkstat behaving
        the same way as it does on 3.16.
        Unfortunately, the fixes are not exactly simple - in tracking down the
        problem historic API warts were discovered (e.g xfsdump has been
        working around a 20 year old bug in the bulkstat API for the past 10
        years) and so that complicated the process of diagnosing and fixing
        the problems.  i.e. we had to fix bugs in the code as well as
        discover and re-introduce the userspace visible API bugs that we
        unwittingly "fixed" in 3.17 that xfsdump relied on to work correctly.
         - incorrect warnings about i_mutex locking in pagecache_isize_extended()
           and updates comments to match expected locking
         - another zero-range bug fix for stray file size updates
         - a bunch of fixes for regression in the bulkstat code introduced in
      * tag 'xfs-for-linus-3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs:
        xfs: track bulkstat progress by agino
        xfs: bulkstat error handling is broken
        xfs: bulkstat main loop logic is a mess
        xfs: bulkstat chunk-formatter has issues
        xfs: bulkstat chunk formatting cursor is broken
        xfs: bulkstat btree walk doesn't terminate
        mm: Fix comment before truncate_setsize()
        xfs: rework zero range to prevent invalid i_size updates
        mm: Remove false WARN_ON from pagecache_isize_extended()
        xfs: Check error during inode btree iteration in xfs_bulkstat()
        xfs: bulkstat doesn't release AGI buffer on error
    • Linus Torvalds's avatar
      Merge tag 'regulator-v3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · 51f83ef0
      Linus Torvalds authored
      Pull regulator fixes from Mark Brown:
       "More changes than I'd like here, most of them for a single bug
        repeated in a bunch of drivers with data not being initialized
        correctly, plus a fix to lower the severity of a warning introduced in
        the last merge window which can legitimately go off so we don't want
        to alarm users excessively"
      * tag 'regulator-v3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: s2mpa01: zero-initialize regulator match table array
        regulator: max8660: zero-initialize regulator match table array
        regulator: max77802: zero-initialize regulator match table
        regulator: max77686: zero-initialize regulator match table
        regulator: max1586: zero-initialize regulator match table array
        regulator: max77693: Fix use of uninitialized regulator config
        regulator: of: Lower the severity of the error with no container
    • Linus Torvalds's avatar
      Merge tag 'spi-v3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi · 1395b9cf
      Linus Torvalds authored
      Pull spi bugfixes from Mark Brown:
       "A couple of small driver fixes for v3.18, both quite problematic if
        you hit a use case that's affected"
      * tag 'spi-v3.18-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
        spi: pxa2xx: toggle clocks on suspend if not disabled by runtime PM
        spi: fsl-dspi: Fix CTAR selection
    • Johannes Berg's avatar
      tiny: rename ENABLE_DEV_COREDUMP to ALLOW_DEV_COREDUMP · cd3d9ea1
      Johannes Berg authored
      The ENABLE_DEV_COREDUMP option is misleading as it implies that
      it gets the framework enabled, this isn't true it just allows it
      to get enabled if a driver needs it.
      Rename it to ALLOW_DEV_COREDUMP to better capture its semantics.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
      Acked-by: default avatarAristeu Rozanski <aris@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    • Aristeu Rozanski's avatar
      tiny: reverse logic for DISABLE_DEV_COREDUMP · 9c602699
      Aristeu Rozanski authored
      It's desirable for allnconfig and tinyconfig targets to result in the
      least amount of code possible. DISABLE_DEV_COREDUMP exists as a way to
      switch off DEV_COREDUMP regardless if any drivers select
      This patch renames the option to ENABLE_DEV_COREDUMP and setting it to
      'n' (as in allnconfig or tinyconfig) will effectively disable device
      Cc: Josh Triplett <josh@joshtriplett.org>
      Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
      Signed-off-by: default avatarAristeu Rozanski <arozansk@redhat.com>
      Reviewed-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    • Laurent Pinchart's avatar
      i2c: core: Dispose OF IRQ mapping at client removal time · e4df3a0b
      Laurent Pinchart authored
      Clients instantiated from OF get an IRQ mapping created at device
      registration time. Dispose the mapping when the client is removed.
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Cc: stable@kernel.org
    • Wolfram Sang's avatar
      i2c: at91: don't account as iowait · 11cfbfb0
      Wolfram Sang authored
      iowait is for blkio [1]. I2C shouldn't use it.
      [1] https://lkml.org/lkml/2014/11/3/317Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Acked-by: default avatarLudovic Desroches <ludovic.desroches@atmel.com>
      Cc: stable@kernel.org
    • Wolfram Sang's avatar
      i2c: remove FSF address · ca1f8da9
      Wolfram Sang authored
      We have a central copy of the GPL for that. Some addresses were already
      Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
    • Mark Knibbs's avatar
      USB: Update default usb-storage delay_use value in kernel-parameters.txt · 19101954
      Mark Knibbs authored
      Back in 2010 the default usb-storage delay_use time was reduced from 5 to 1
      second (commit a4a47bc0), but
      kernel-parameters.txt wasn't updated to reflect that.
      Signed-off-by: default avatarMark Knibbs <markk@clara.co.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    • Yijing Wang's avatar
      sysfs: driver core: Fix glue dir race condition by gdp_mutex · e4a60d13
      Yijing Wang authored
      There is a race condition when removing glue directory.
      It can be reproduced in following test:
      path 1: Add first child device
                  /*find parent from glue_dirs.list*/
                  list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry)
                          if (k->parent == parent_kobj) {
                                  kobj = kobject_get(k);
      path2: Remove last child device under glue dir
      If path2 has been called cleanup_glue_dir(), but not
      call kobject_put(glue_dir), the glue dir is still
      in parent's kset list. Meanwhile, path1 find the glue
      dir from the glue_dirs.list. Path2 may release glue dir
      before path1 call kobject_get(). So kernel will report
      the warning and bug_on.
      This is a "classic" problem we have of a kref in a list
      that can be found while the last instance could be removed
      at the same time.
      This patch reuse gdp_mutex to fix this race condition.
      The following calltrace is captured in kernel 3.4, but
      the latest kernel still has this bug.
      <4>[ 3965.441471] WARNING: at ...include/linux/kref.h:41 kobject_get+0x33/0x40()
      <4>[ 3965.441474] Hardware name: Romley
      <4>[ 3965.441475] Modules linked in: isd_iop(O) isd_xda(O)...
      <4>[ 3965.441605] Call Trace:
      <4>[ 3965.441611]  [<ffffffff8103717a>] warn_slowpath_common+0x7a/0xb0
      <4>[ 3965.441615]  [<ffffffff810371c5>] warn_slowpath_null+0x15/0x20
      <4>[ 3965.441618]  [<ffffffff81215963>] kobject_get+0x33/0x40
      <4>[ 3965.441624]  [<ffffffff812d1e45>] get_device_parent.isra.11+0x135/0x1f0
      <4>[ 3965.441627]  [<ffffffff812d22d4>] device_add+0xd4/0x6d0
      <4>[ 3965.441631]  [<ffffffff812d0dbc>] ? dev_set_name+0x3c/0x40
      <2>[ 3965.441912] kernel BUG at ..../fs/sysfs/group.c:65!
      <4>[ 3965.441915] invalid opcode: 0000 [#1] SMP
      <4>[ 3965.686743]  [<ffffffff811a677e>] sysfs_create_group+0xe/0x10
      <4>[ 3965.686748]  [<ffffffff810cfb04>] blk_trace_init_sysfs+0x14/0x20
      <4>[ 3965.686753]  [<ffffffff811fcabb>] blk_register_queue+0x3b/0x120
      <4>[ 3965.686756]  [<ffffffff812030bc>] add_disk+0x1cc/0x490
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Cc: <stable@vger.kernel.org> #3.4+
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    • Manuel Lauss's avatar
      MIPS: Fix build with binutils 2.24.51+ · 842dfc11
      Manuel Lauss authored
      Starting with version MIPS binutils complain loudly
      about mixing soft-float and hard-float object files, leading to this
      build failure since GCC is invoked with "-msoft-float" on MIPS:
      {standard input}: Warning: .gnu_attribute 4,3 requires `softfloat'
        LD      arch/mips/alchemy/common/built-in.o
      mipsel-softfloat-linux-gnu-ld: Warning: arch/mips/alchemy/common/built-in.o
       uses -msoft-float (set by arch/mips/alchemy/common/prom.o),
       arch/mips/alchemy/common/sleeper.o uses -mhard-float
      To fix this, we detect if GAS is new enough to support "-msoft-float" command
      option, and if it does, we can let GCC pass it to GAS;  but then we also need
      to sprinkle the files which make use of floating point registers with the
      necessary ".set hardfloat" directives.
      Signed-off-by: default avatarManuel Lauss <manuel.lauss@gmail.com>
      Cc: Linux-MIPS <linux-mips@linux-mips.org>
      Cc: Matthew Fortune <Matthew.Fortune@imgtec.com>
      Cc: Markos Chandras <Markos.Chandras@imgtec.com>
      Cc: Maciej W. Rozycki <macro@linux-mips.org>
      Patchwork: https://patchwork.linux-mips.org/patch/8355/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
  5. 06 Nov, 2014 4 commits
    • Dave Chinner's avatar
      xfs: track bulkstat progress by agino · 00275899
      Dave Chinner authored
      The bulkstat main loop progress is tracked by the "lastino"
      variable, which is a full 64 bit inode. However, the loop actually
      works on agno/agino pairs, and so there's a significant disconnect
      between the rest of the loop and the main cursor. Convert this to
      use the agino, and pass the agino into the chunk formatting function
      and convert it too.
      This gets rid of the inconsistency in the loop processing, and
      finally makes it simple for us to skip inodes at any point in the
      loop simply by incrementing the agino cursor.
      cc: <stable@vger.kernel.org> # 3.17
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
      Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    • Dave Chinner's avatar
      xfs: bulkstat error handling is broken · febe3cbe
      Dave Chinner authored
      The error propagation is a horror - xfs_bulkstat() returns
      a rval variable which is only set if there are formatter errors. Any
      sort of btree walk error or corruption will cause the bulkstat walk
      to terminate but will not pass an error back to userspace. Worse
      is the fact that formatter errors will also be ignored if any inodes
      were correctly formatted into the user buffer.
      Hence bulkstat can fail badly yet still report success to userspace.
      This causes significant issues with xfsdump not dumping everything
      in the filesystem yet reporting success. It's not until a restore
      fails that there is any indication that the dump was bad and tha
      bulkstat failed. This patch now triggers xfsdump to fail with
      bulkstat errors rather than silently missing files in the dump.
      This now causes bulkstat to fail when the lastino cookie does not
      fall inside an existing inode chunk. The pre-3.17 code tolerated
      that error by allowing the code to move to the next inode chunk
      as the agino target is guaranteed to fall into the next btree
      With the fixes up to this point in the series, xfsdump now passes on
      the troublesome filesystem image that exposes all these bugs.
      cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
    • Dave Chinner's avatar
      xfs: bulkstat main loop logic is a mess · 6e57c542
      Dave Chinner authored
      There are a bunch of variables tha tare more wildy scoped than they
      need to be, obfuscated user buffer checks and tortured "next inode"
      tracking. This all needs cleaning up to expose the real issues that
      need fixing.
      cc: <stable@vger.kernel.org> # 3.17
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
      Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
    • Dave Chinner's avatar
      xfs: bulkstat chunk-formatter has issues · 2b831ac6
      Dave Chinner authored
      The loop construct has issues:
      	- clustidx is completely unused, so remove it.
      	- the loop tries to be smart by terminating when the
      	  "freecount" tells it that all inodes are free. Just drop
      	  it as in most cases we have to scan all inodes in the
      	  chunk anyway.
      	- move the "user buffer left" condition check to the only
      	  point where we consume space int eh user buffer.
      	- move the initialisation of agino out of the loop, leaving
      	  just a simple loop control logic using the clusteridx.
      Also, double handling of the user buffer variables leads to problems
      tracking the current state - use the cursor variables directly
      rather than keeping local copies and then having to update the
      cursor before returning.
      cc: <stable@vger.kernel.org> # 3.17
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
      Signed-off-by: default avatarDave Chinner <david@fromorbit.com>