1. 10 3月, 2014 1 次提交
  2. 08 3月, 2014 6 次提交
    • M
      Revert "USBNET: ax88179_178a: enable tso if usb host supports sg dma" · 469d417b
      Mathias Nyman 提交于
      This reverts commit 3804fad4.
      
      This commit, together with commit 247bf557
      "xhci 1.0: Limit arbitrarily-aligned scatter gather." were
      origially added to get xHCI 1.0 hosts and usb ethernet ax88179_178a devices
      working together with scatter gather. xHCI 1.0 hosts pose some requirement on how transfer
      buffers are aligned, setting this requirement for 1.0 hosts caused USB 3.0 mass
      storage devices to fail more frequently.
      
      USB 3.0 mass storage devices used to work before 3.14-rc1.  Theoretically,
      the TD fragment rules could have caused an occasional disk glitch.
      Now the devices *will* fail, instead of theoretically failing.
      >From a user perspective, this looks like a regression; the USB device obviously
      fails on 3.14-rc1, and may sometimes silently fail on prior kernels.
      
      The proper soluition is to implement the TD fragment rules for xHCI 1.0 hosts,
      but for now, revert this patch until scatter gather can be properly supported.
      Signed-off-by: NMathias Nyman <mathias.nyman@linux.intel.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      469d417b
    • M
      Revert "xhci 1.0: Limit arbitrarily-aligned scatter gather." · e2ed5114
      Mathias Nyman 提交于
      This reverts commit 247bf557.
      
      This commit, together with commit 3804fad4
      "USBNET: ax88179_178a: enable tso if usb host supports sg dma" were
      origially added to get xHCI 1.0 hosts and usb ethernet ax88179_178a devices
      working together with scatter gather. xHCI 1.0 hosts pose some requirement on how transfer
      buffers are aligned, setting this requirement for 1.0 hosts caused USB 3.0 mass
      storage devices to fail more frequently.
      
      USB 3.0 mass storage devices used to work before 3.14-rc1.  Theoretically,
      the TD fragment rules could have caused an occasional disk glitch.
      Now the devices *will* fail, instead of theoretically failing.
      >From a user perspective, this looks like a regression; the USB device obviously
      fails on 3.14-rc1, and may sometimes silently fail on prior kernels.
      
      The proper soluition is to implement the TD fragment rules required, but for now
      this patch needs to be reverted to get USB 3.0 mass storage devices working at the
      level they used to.
      Signed-off-by: NMathias Nyman <mathias.nyman@linux.intel.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e2ed5114
    • J
      usb: Make DELAY_INIT quirk wait 100ms between Get Configuration requests · d86db25e
      Julius Werner 提交于
      The DELAY_INIT quirk only reduces the frequency of enumeration failures
      with the Logitech HD Pro C920 and C930e webcams, but does not quite
      eliminate them. We have found that adding a delay of 100ms between the
      first and second Get Configuration request makes the device enumerate
      perfectly reliable even after several weeks of extensive testing. The
      reasons for that are anyone's guess, but since the DELAY_INIT quirk
      already delays enumeration by a whole second, wating for another 10th of
      that isn't really a big deal for the one other device that uses it, and
      it will resolve the problems with these webcams.
      Signed-off-by: NJulius Werner <jwerner@chromium.org>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d86db25e
    • J
      usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e · e0429362
      Julius Werner 提交于
      We've encountered a rare issue when enumerating two Logitech webcams
      after a reboot that doesn't power cycle the USB ports. They are spewing
      random data (possibly some leftover UVC buffers) on the second
      (full-sized) Get Configuration request of the enumeration phase. Since
      the data is random this can potentially cause all kinds of odd behavior,
      and since it occasionally happens multiple times (after the kernel
      issues another reset due to the garbled configuration descriptor), it is
      not always recoverable. Set the USB_DELAY_INIT quirk that seems to work
      around the issue.
      Signed-off-by: NJulius Werner <jwerner@chromium.org>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e0429362
    • M
      libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk for Seagate Momentus SpinPoint M8 (2BA30001) · b28a613e
      Michele Baldessari 提交于
      Via commit 87809942 "libata: add ATA_HORKAGE_BROKEN_FPDMA_AA quirk
      for Seagate Momentus SpinPoint M8" we added a quirk for disks named
      "ST1000LM024 HN-M101MBB" with firmware revision "2AR10001".
      
      As reported on https://bugzilla.redhat.com/show_bug.cgi?id=1073901,
      we need to also add firmware revision 2BA30001 as it is broken as well.
      Reported-by: NNicholas <arealityfarbetween@googlemail.com>
      Signed-off-by: NMichele Baldessari <michele@acksyn.org>
      Tested-by: NGuilherme Amadio <guilherme.amadio@gmail.com>
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: stable@vger.kernel.org
      b28a613e
    • J
      dm space map metadata: fix refcount decrement below 0 which caused corruption · cebc2de4
      Joe Thornber 提交于
      This has been a relatively long-standing issue that wasn't nailed down
      until Teng-Feng Yang's meticulous bug report to dm-devel on 3/7/2014,
      see: http://www.redhat.com/archives/dm-devel/2014-March/msg00021.html
      
      From that report:
        "When decreasing the reference count of a metadata block with its
        reference count equals 3, we will call dm_btree_remove() to remove
        this enrty from the B+tree which keeps the reference count info in
        metadata device.
      
        The B+tree will try to rebalance the entry of the child nodes in each
        node it traversed, and the rebalance process contains the following
        steps.
      
        (1) Finding the corresponding children in current node (shadow_current(s))
        (2) Shadow the children block (issue BOP_INC)
        (3) redistribute keys among children, and free children if necessary (issue BOP_DEC)
      
        Since the update of a metadata block's reference count could be
        recursive, we will stash these reference count update operations in
        smm->uncommitted and then process them in a FILO fashion.
      
        The problem is that step(3) could free the children which is created
        in step(2), so the BOP_DEC issued in step(3) will be carried out
        before the BOP_INC issued in step(2) since these BOPs will be
        processed in FILO fashion. Once the BOP_DEC from step(3) tries to
        decrease the reference count of newly shadow block, it will report
        failure for its reference equals 0 before decreasing. It looks like we
        can solve this issue by processing these BOPs in a FIFO fashion
        instead of FILO."
      
      Commit 5b564d80 ("dm space map: disallow decrementing a reference count
      below zero") changed the code to report an error for this temporary
      refcount decrement below zero.  So what was previously a harmless
      invalid refcount became a hard failure due to the new error path:
      
       device-mapper: space map common: unable to decrement a reference count below 0
       device-mapper: thin: 253:6: dm_thin_insert_block() failed: error = -22
       device-mapper: thin: 253:6: switching pool to read-only mode
      
      This bug is in dm persistent-data code that is common to the DM thin and
      cache targets.  So any users of those targets should apply this fix.
      
      Fix this by applying recursive space map operations in FIFO order rather
      than FILO.
      
      Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=68801Reported-by: NApollon Oikonomopoulos <apoikos@debian.org>
      Reported-by: edwillam1007@gmail.com
      Reported-by: NTeng-Feng Yang <shinrairis@gmail.com>
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Cc: stable@vger.kernel.org # 3.13+
      cebc2de4
  3. 07 3月, 2014 10 次提交
  4. 06 3月, 2014 9 次提交
    • K
      ACPI / EC: Clear stale EC events on Samsung systems · ad332c8a
      Kieran Clancy 提交于
      A number of Samsung notebooks (530Uxx/535Uxx/540Uxx/550Pxx/900Xxx/etc)
      continue to log events during sleep (lid open/close, AC plug/unplug,
      battery level change), which accumulate in the EC until a buffer fills.
      After the buffer is full (tests suggest it holds 8 events), GPEs stop
      being triggered for new events. This state persists on wake or even on
      power cycle, and prevents new events from being registered until the EC
      is manually polled.
      
      This is the root cause of a number of bugs, including AC not being
      detected properly, lid close not triggering suspend, and low ambient
      light not triggering the keyboard backlight. The bug also seemed to be
      responsible for performance issues on at least one user's machine.
      
      Juan Manuel Cabo found the cause of bug and the workaround of polling
      the EC manually on wake.
      
      The loop which clears the stale events is based on an earlier patch by
      Lan Tianyu (see referenced attachment).
      
      This patch:
       - Adds a function acpi_ec_clear() which polls the EC for stale _Q
         events at most ACPI_EC_CLEAR_MAX (currently 100) times. A warning is
         logged if this limit is reached.
       - Adds a flag EC_FLAGS_CLEAR_ON_RESUME which is set to 1 if the DMI
         system vendor is Samsung. This check could be replaced by several
         more specific DMI vendor/product pairs, but it's likely that the bug
         affects more Samsung products than just the five series mentioned
         above. Further, it should not be harmful to run acpi_ec_clear() on
         systems without the bug; it will return immediately after finding no
         data waiting.
       - Runs acpi_ec_clear() on initialisation (boot), from acpi_ec_add()
       - Runs acpi_ec_clear() on wake, from acpi_ec_unblock_transactions()
      
      References: https://bugzilla.kernel.org/show_bug.cgi?id=44161
      References: https://bugzilla.kernel.org/show_bug.cgi?id=45461
      References: https://bugzilla.kernel.org/show_bug.cgi?id=57271
      References: https://bugzilla.kernel.org/attachment.cgi?id=126801Suggested-by: NJuan Manuel Cabo <juanmanuel.cabo@gmail.com>
      Signed-off-by: NKieran Clancy <clancy.kieran@gmail.com>
      Reviewed-by: NLan Tianyu <tianyu.lan@intel.com>
      Reviewed-by: NDennis Jansen <dennis.jansen@web.de>
      Tested-by: NKieran Clancy <clancy.kieran@gmail.com>
      Tested-by: NJuan Manuel Cabo <juanmanuel.cabo@gmail.com>
      Tested-by: NDennis Jansen <dennis.jansen@web.de>
      Tested-by: NMaurizio D'Addona <mauritiusdadd@gmail.com>
      Tested-by: NSan Zamoyski <san@plusnet.pl>
      Cc: All applicable <stable@vger.kernel.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      ad332c8a
    • V
      cpufreq: Initialize governor for a new policy under policy->rwsem · 4e97b631
      Viresh Kumar 提交于
      policy->rwsem is used to lock access to all parts of code modifying
      struct cpufreq_policy, but it's not used on a new policy created by
      __cpufreq_add_dev().
      
      Because of that, if cpufreq_update_policy() is called in a tight loop
      on one CPU in parallel with offline/online of another CPU, then the
      following crash can be triggered:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000020
      pgd = c0003000
      [00000020] *pgd=80000000004003, *pmd=00000000
      Internal error: Oops: 206 [#1] PREEMPT SMP ARM
      
      PC is at __cpufreq_governor+0x10/0x1ac
      LR is at cpufreq_update_policy+0x114/0x150
      
      ---[ end trace f23a8defea6cd706 ]---
      Kernel panic - not syncing: Fatal exception
      CPU0: stopping
      CPU: 0 PID: 7136 Comm: mpdecision Tainted: G      D W    3.10.0-gd727407-00074-g979ede8 #396
      
      [<c0afe180>] (notifier_call_chain+0x40/0x68) from [<c02a23ac>] (__blocking_notifier_call_chain+0x40/0x58)
      [<c02a23ac>] (__blocking_notifier_call_chain+0x40/0x58) from [<c02a23d8>] (blocking_notifier_call_chain+0x14/0x1c)
      [<c02a23d8>] (blocking_notifier_call_chain+0x14/0x1c) from [<c0803c68>] (cpufreq_set_policy+0xd4/0x2b8)
      [<c0803c68>] (cpufreq_set_policy+0xd4/0x2b8) from [<c0803e7c>] (cpufreq_init_policy+0x30/0x98)
      [<c0803e7c>] (cpufreq_init_policy+0x30/0x98) from [<c0805a18>] (__cpufreq_add_dev.isra.17+0x4dc/0x7a4)
      [<c0805a18>] (__cpufreq_add_dev.isra.17+0x4dc/0x7a4) from [<c0805d38>] (cpufreq_cpu_callback+0x58/0x84)
      [<c0805d38>] (cpufreq_cpu_callback+0x58/0x84) from [<c0afe180>] (notifier_call_chain+0x40/0x68)
      [<c0afe180>] (notifier_call_chain+0x40/0x68) from [<c02812dc>] (__cpu_notify+0x28/0x44)
      [<c02812dc>] (__cpu_notify+0x28/0x44) from [<c0aeed90>] (_cpu_up+0xf4/0x1dc)
      [<c0aeed90>] (_cpu_up+0xf4/0x1dc) from [<c0aeeed4>] (cpu_up+0x5c/0x78)
      [<c0aeeed4>] (cpu_up+0x5c/0x78) from [<c0aec808>] (store_online+0x44/0x74)
      [<c0aec808>] (store_online+0x44/0x74) from [<c03a40f4>] (sysfs_write_file+0x108/0x14c)
      [<c03a40f4>] (sysfs_write_file+0x108/0x14c) from [<c03517d4>] (vfs_write+0xd0/0x180)
      [<c03517d4>] (vfs_write+0xd0/0x180) from [<c0351ca8>] (SyS_write+0x38/0x68)
      [<c0351ca8>] (SyS_write+0x38/0x68) from [<c0205de0>] (ret_fast_syscall+0x0/0x30)
      
      Fix that by taking locks at appropriate places in __cpufreq_add_dev()
      as well.
      Reported-by: NSaravana Kannan <skannan@codeaurora.org>
      Suggested-by: NSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      [rjw: Changelog]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      4e97b631
    • V
      cpufreq: Initialize policy before making it available for others to use · 5a7e56a5
      Viresh Kumar 提交于
      Policy must be fully initialized before it is being made available
      for use by others. Otherwise cpufreq_cpu_get() would be able to grab
      a half initialized policy structure that might not have affected_cpus
      (for example) populated. Then, anybody accessing those fields will get
      a wrong value and that will lead to unpredictable results.
      
      In order to fix this, do all the necessary initialization before we
      make the policy structure available via cpufreq_cpu_get(). That will
      guarantee that any code accessing fields of the policy will get
      correct data from them.
      Reported-by: NSaravana Kannan <skannan@codeaurora.org>
      Signed-off-by: NViresh Kumar <viresh.kumar@linaro.org>
      [rjw: Changelog]
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      5a7e56a5
    • A
      cpufreq: use cpufreq_cpu_get() to avoid cpufreq_get() race conditions · 999976e0
      Aaron Plattner 提交于
      If a module calls cpufreq_get while cpufreq is initializing, it's
      possible for it to be called after cpufreq_driver is set but before
      cpufreq_cpu_data is written during subsys_interface_register.  This
      happens because cpufreq_get doesn't take the cpufreq_driver_lock
      around its use of cpufreq_cpu_data.
      
      Fix this by using cpufreq_cpu_get(cpu) to look up the policy rather
      than reading it out of cpufreq_cpu_data directly.  cpufreq_cpu_get()
      takes the appropriate locks to prevent this race from happening.
      
      Since it's possible for policy to be NULL if the caller passes in an
      invalid CPU number or calls the function before cpufreq is initialized,
      delete the BUG_ON(!policy) and simply return 0.  Don't try to return
      -ENOENT because that's negative and the function returns an unsigned
      integer.
      
      References: https://bbs.archlinux.org/viewtopic.php?id=177934Signed-off-by: NAaron Plattner <aplattner@nvidia.com>
      Cc: 3.13+ <stable@vger.kernel.org> # 3.13+
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      999976e0
    • B
      clk: shmobile: rcar-gen2: Use kick bit to allow Z clock frequency change · d9120198
      Benoit Cousson 提交于
      The Z clock frequency change is effective only after setting the kick
      bit located in the FRQCRB register.
      Without that, the CA15 CPUs clock rate will never change.
      
      Fix that by checking if the kick bit is cleared and enable it to make
      the clock rate change effective. The bit is cleared automatically upon
      completion.
      Signed-off-by: NBenoit Cousson <bcousson+renesas@baylibre.com>
      Acked-by: NLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Signed-off-by: NMike Turquette <mturquette@linaro.org>
      d9120198
    • J
      dm thin: fix noflush suspend IO queueing · 738211f7
      Joe Thornber 提交于
      i) by the time DM core calls the postsuspend hook the dm_noflush flag
      has been cleared.  So the old thin_postsuspend did nothing.  We need to
      use the presuspend hook instead.
      
      ii) There was a race between bios leaving DM core and arriving in the
      deferred queue.
      
      thin_presuspend now sets a 'requeue' flag causing all bios destined for
      that thin to be requeued back to DM core.  Then it requeues all held IO,
      and all IO on the deferred queue (destined for that thin).  Finally
      postsuspend clears the 'requeue' flag.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      738211f7
    • J
      dm thin: fix deadlock in __requeue_bio_list · 18adc577
      Joe Thornber 提交于
      The spin lock in requeue_io() was held for too long, allowing deadlock.
      Don't worry, due to other issues addressed in the following "dm thin:
      fix noflush suspend IO queueing" commit, this code was never called.
      
      Fix this by taking the spin lock for a much shorter period of time.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      18adc577
    • J
      dm thin: fix out of data space handling · 3e1a0699
      Joe Thornber 提交于
      Ideally a thin pool would never run out of data space; the low water
      mark would trigger userland to extend the pool before we completely run
      out of space.  However, many small random IOs to unprovisioned space can
      consume data space at an alarming rate.  Adjust your low water mark if
      you're frequently seeing "out-of-data-space" mode.
      
      Before this fix, if data space ran out the pool would be put in
      PM_READ_ONLY mode which also aborted the pool's current metadata
      transaction (data loss for any changes in the transaction).  This had a
      side-effect of needlessly compromising data consistency.  And retry of
      queued unserviceable bios, once the data pool was resized, could
      initiate changes to potentially inconsistent pool metadata.
      
      Now when the pool's data space is exhausted transition to a new pool
      mode (PM_OUT_OF_DATA_SPACE) that allows metadata to be changed but data
      may not be allocated.  This allows users to remove thin volumes or
      discard data to recover data space.
      
      The pool is no longer put in PM_READ_ONLY mode in response to the pool
      running out of data space.  And PM_READ_ONLY mode no longer aborts the
      pool's current metadata transaction.  Also, set_pool_mode() will now
      notify userspace when the pool mode is changed.
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      3e1a0699
    • M
      dm thin: ensure user takes action to validate data and metadata consistency · 07f2b6e0
      Mike Snitzer 提交于
      If a thin metadata operation fails the current transaction will abort,
      whereby causing potential for IO layers up the stack (e.g. filesystems)
      to have data loss.  As such, set THIN_METADATA_NEEDS_CHECK_FLAG in the
      thin metadata's superblock which:
      1) requires the user verify the thin metadata is consistent (e.g. use
         thin_check, etc)
      2) suggests the user verify the thin data is consistent (e.g. use fsck)
      
      The only way to clear the superblock's THIN_METADATA_NEEDS_CHECK_FLAG is
      to run thin_repair.
      
      On metadata operation failure: abort current metadata transaction, set
      pool in read-only mode, and now set the needs_check flag.
      
      As part of this change, constraints are introduced or relaxed:
      * don't allow a pool to transition to write mode if needs_check is set
      * don't allow data or metadata space to be resized if needs_check is set
      * if a thin pool's metadata space is exhausted: the kernel will now
        force the user to take the pool offline for repair before the kernel
        will allow the metadata space to be extended.
      
      Also, update Documentation to include information about when the thin
      provisioning target commits metadata, how it handles metadata failures
      and running out of space.
      Signed-off-by: NMike Snitzer <snitzer@redhat.com>
      Signed-off-by: NJoe Thornber <ejt@redhat.com>
      07f2b6e0
  5. 05 3月, 2014 14 次提交
    • B
      pinctrl: sirf: fix kernel panic in gpio_lock_as_irq · e291fd20
      Barry Song 提交于
      commit 655dada6 causes kernel panic, this patch fixes it.
      
          [    1.197816] [ffffffee] *pgd=0d7fd821, *pte=00000000, *ppte=00000000
          [    1.204070] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
          [    1.209447] Modules linked in:
          [    1.212490] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc1 #3
          [    1.218737] task: cd03c000 ti: cd040000 task.ti: cd040000
          [    1.224127] PC is at gpiod_lock_as_irq+0xc/0x64
          [    1.228634] LR is at sirfsoc_gpio_irq_startup+0x18/0x44
          [    1.233842] pc : [<c01d3990>]    lr : [<c01d1c38>]    psr: a0000193
          [    1.233842] sp : cd041d30  ip : 00000000  fp : 00000000
          [    1.245296] r10: 00000000  r9 : cd023db4  r8 : 60000113
          [    1.250505] r7 : 0000003e  r6 : cd023dd4  r5 : c06bfa54  r4 : cd023d80
          [    1.257014] r3 : 00000020  r2 : 00000000  r1 : ffffffea  r0 : ffffffea
          [    1.263526] Flags: NzCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
          [    1.270903] Control: 10c53c7d  Table: 00004059  DAC: 00000015
          [    1.276631] Process swapper/0 (pid: 1, stack limit = 0xcd040240)
          [    1.282620] Stack: (0xcd041d30 to 0xcd042000)
          [    1.286963] 1d20:                                     cd023d80 c01d1c38 c01d1c20 cd023d80
          [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
          [    1.286963] 1d20:                                     cd023d80 c01d1c38 c01d1c20 cd023d80
          [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
          [    1.295124] 1d40: 00000001 c0068438 cd023d80 ccb6d880 cd023dd4 c0067044 0000718e c006719c
          [    1.303283] 1d60: 00000800 00000083 ccb6d880 cd023d80 c02b41d8 00000083 0000003e ccb7c410
          [    1.311442] 1d80: 00000000 c00671dc 00000083 0000003e c02b41d8 cd3dd5c0 0000003e ccb7c634
          [    1.319601] 1da0: cd040030 c00672a8 cd3dd5c0 ccb7c410 ccb6d340 ccb7c410 ccb6d340 cd3dd400
          [    1.327760] 1dc0: cd3dd410 c02b4434 ccb7c410 c01265a8 00000001 cd3dd410 c0687108 00000000
          [    1.335919] 1de0: c0687108 00000000 00000000 c0240170 c0240158 cd3dd410 c06c30d0 c023e8bc
          [    1.344079] 1e00: c023e9d4 00000000 cd3dd410 c023e9d4 c0682150 c023cf88 cd003e98 cd2d50c4
          [    1.352238] 1e20: cd3dd410 cd3dd444 c06822f0 c023e768 cd3dd418 cd3dd410 c06822f0 c023de14
          [    1.360397] 1e40: cd3dd418 00000000 cd3dd410 c023c398 cd041e78 cd041ea8 cd3dd400 cd3dd410
          [    1.368556] 1e60: 00000083 00000000 cd3dd400 cd3dd410 00000083 000000c8 c04e00c8 c023fee8
          [    1.376715] 1e80: 00000000 cd041ea8 cd3dd400 00000001 00000083 c024048c c0435ef8 c0434dec
          [    1.384874] 1ea0: c068da58 c04c6d04 c0682150 c0435ef8 ffffffff 00000000 00000000 c068da58
          [    1.393033] 1ec0: 00000020 00000000 00000000 00000000 c05dabb8 00000007 c068d640 c068d640
          [    1.401193] 1ee0: c04c247c c04c249c 00000000 c00088e8 cd004c00 c043bbb8 cd029180 c03812a0
          [    1.409352] 1f00: 00000000 00000000 60000113 c0673728 60000113 c0673728 00000000 00000000
          [    1.417511] 1f20: cd7fce01 c0390a54 00000065 c003a81c c049e8bc 00000007 cd7fce0e 00000007
          [    1.425670] 1f40: 00000000 c05dabb8 00000007 c068d640 c068d640 c04c050c c04e00c8 00000065
          [    1.433829] 1f60: c04e00c0 c04c0c54 00000007 00000007 c04c050c c037d8fc cd03c000 c004322c
          [    1.441988] 1f80: c0662b40 0000d640 c03737c0 00000000 00000000 00000000 00000000 00000000
          [    1.450147] 1fa0: 00000000 c03737cc 00000000 c000e478 00000000 00000000 00000000 00000000
          [    1.458307] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
          [    1.466467] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 0002d481 05014092
          [    1.474640] [<c01d3990>] (gpiod_lock_as_irq) from [<c01d1c38>] (sirfsoc_gpio_irq_startup+0x18/0x44)
          [    1.483661] [<c01d1c38>] (sirfsoc_gpio_irq_startup) from [<c0068438>] (irq_startup+0x34/0x6c)
          [    1.492163] [<c0068438>] (irq_startup) from [<c0067044>] (__setup_irq+0x450/0x4b8)
          [    1.499714] [<c0067044>] (__setup_irq) from [<c00671dc>] (request_threaded_irq+0xa8/0x128)
          [    1.507960] [<c00671dc>] (request_threaded_irq) from [<c00672a8>] (request_any_context_irq+0x4c/0x7c)
          [    1.517164] [<c00672a8>] (request_any_context_irq) from [<c02b4434>] (gpio_extcon_probe+0x144/0x1d4)
          [    1.526279] [<c02b4434>] (gpio_extcon_probe) from [<c0240170>] (platform_drv_probe+0x18/0x48)
          [    1.534783] [<c0240170>] (platform_drv_probe) from [<c023e8bc>] (driver_probe_device+0x120/0x238)
          [    1.543641] [<c023e8bc>] (driver_probe_device) from [<c023cf88>] (bus_for_each_drv+0x58/0x8c)
          [    1.552143] [<c023cf88>] (bus_for_each_drv) from [<c023e768>] (device_attach+0x74/0x88)
          [    1.560126] [<c023e768>] (device_attach) from [<c023de14>] (bus_probe_device+0x84/0xa8)
          [    1.568113] [<c023de14>] (bus_probe_device) from [<c023c398>] (device_add+0x440/0x520)
          [    1.576012] [<c023c398>] (device_add) from [<c023fee8>] (platform_device_add+0xb4/0x214)
          [    1.584084] [<c023fee8>] (platform_device_add) from [<c024048c>] (platform_device_register_full+0xb8/0xdc)
          [    1.593719] [<c024048c>] (platform_device_register_full) from [<c04c6d04>] (sirfsoc_init_late+0xec/0xf4)
          [    1.603185] [<c04c6d04>] (sirfsoc_init_late) from [<c04c249c>] (init_machine_late+0x20/0x28)
          [    1.611603] [<c04c249c>] (init_machine_late) from [<c00088e8>] (do_one_initcall+0xf8/0x144)
          [    1.619934] [<c00088e8>] (do_one_initcall) from [<c04c0c54>] (kernel_init_freeable+0x13c/0x1dc)
          [    1.628620] [<c04c0c54>] (kernel_init_freeable) from [<c03737cc>] (kernel_init+0xc/0x118)
      Signed-off-by: NBarry Song <Baohua.Song@csr.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      e291fd20
    • W
      spi: atmel: add missing spi_master_{resume,suspend} calls to PM callbacks · ba938f3a
      Wenyou Yang 提交于
      The PM callbacks implemented by the spi-atmel driver don't call
      spi_master_{resume,suspend}, fix that.
      Signed-off-by: NWenyou Yang <wenyou.yang@atmel.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      ba938f3a
    • A
      spi: coldfire-qspi: Fix getting correct address for *mcfqspi · ee73b4c6
      Axel Lin 提交于
      dev_get_drvdata() returns the address of master rather than mcfqspi.
      
      Fixes: af361079 (spi/coldfire-qspi: Drop extra calls to spi_master_get in suspend/resume functions)
      Signed-off-by: NAxel Lin <axel.lin@ingics.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      Cc: stable@vger.kernel.org
      ee73b4c6
    • A
      spi: fsl-dspi: Fix getting correct address for master · 017145fe
      Axel Lin 提交于
      Current code set platform drvdata to dspi. However, the code in dspi_suspend()
      and dspi_resume() assumes the drvdata is the address of master.
      Fix it by setting platform drvdata to master.
      Signed-off-by: NAxel Lin <axel.lin@ingics.com>
      Signed-off-by: NMark Brown <broonie@linaro.org>
      Cc: stable@vger.kernel.org
      017145fe
    • M
      pinctrl: sh-pfc: r8a7791: SD1_CLK fix · b5973fcd
      Magnus Damm 提交于
      Fix the SD1_CLK handling for r8a7791. Without this patch
      it is impossible to request all pins needed for SDHI1 on
      the Koelsch board.
      Signed-off-by: NMagnus Damm <damm@opensource.se>
      Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      b5973fcd
    • J
      pinctrl: msm: make PINCTRL_MSM bool instead of tristate · 5ba34160
      Josh Cartwright 提交于
      Modular builds of pinctrl-msm break due to handle_bad_irq being
      unexported for module use.  For now, make PINCTRL_MSM 'bool'.
      Signed-off-by: NJosh Cartwright <joshc@codeaurora.org>
      Reviewed-by: NBjorn Andersson <bjorn.andersson@sonymobile.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      5ba34160
    • H
      pinctrl: sunxi: Fix interrupt register offset calculation · ef5aff05
      Hans de Goede 提交于
      This fixing setting the interrupt type for eints >= 8.
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Acked-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      ef5aff05
    • H
    • C
      pinctrl: sunxi: use chained_irq_{enter, exit} for GIC compatibility · 905a5117
      Chen-Yu Tsai 提交于
      On tha Allwinner A20 SoC, the external interrupts on the pin controller
      device are connected to the GIC. Without chained_irq_{enter, exit},
      external GPIO interrupts, such as used by mmc core card detect, cause
      the system to hang.
      
      This issue was first encountered during my attempt to get out-of-band
      interrupts for WiFi on the Cubietruck working. With David's new series
      of sunci-mci using mmc slot-gpio for (GPIO interrupt based) card
      detection, removing the SD card also causes my Cubietruck to hang. This
      problem should extend to all Allwinner A20 based boards.
      
      With this fix, the system no longer hangs when I remove or insert the
      SD card. /proc/interrupts show that the interrupt has correctly fired.
      However the system still does not detect card removal/insertion. I
      believe this is another unrelated issue.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NChen-Yu Tsai <wens@csie.org>
      Acked-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      905a5117
    • N
      iser-target: Fix command leak for tx_desc->comp_llnode_batch · ebbe4421
      Nicholas Bellinger 提交于
      This patch addresses a number of active I/O shutdown issues
      related to isert_cmd descriptors being leaked that are part
      of a completion interrupt coalescing batch.
      
      This includes adding logic in isert_cq_tx_comp_err() to
      drain any associated tx_desc->comp_llnode_batch, as well
      as isert_cq_drain_comp_llist() to drain any associated
      isert_conn->conn_comp_llist.
      
      Also, set tx_desc->llnode_active in isert_init_send_wr()
      in order to determine when work requests need to be skipped
      in isert_cq_tx_work() exception path code.
      
      Finally, update isert_init_send_wr() to only allow interrupt
      coalescing when ISER_CONN_UP.
      Acked-by: NSagi Grimberg <sagig@mellanox.com>
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Cc: <stable@vger.kernel.org> #3.13+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      ebbe4421
    • N
      iser-target: Ignore completions for FRWRs in isert_cq_tx_work · 9bb4ca68
      Nicholas Bellinger 提交于
      This patch changes IB_WR_FAST_REG_MR + IB_WR_LOCAL_INV related
      work requests to include a ISER_FRWR_LI_WRID value in order to
      signal isert_cq_tx_work() that these requests should be ignored.
      
      This is necessary because even though IB_SEND_SIGNALED is not
      set for either work request, during a QP failure event the work
      requests will be returned with exception status from the TX
      completion queue.
      
      v2 changes:
       - Rename ISER_FRWR_LI_WRID -> ISER_FASTREG_LI_WRID (Sagi)
      Acked-by: NSagi Grimberg <sagig@mellanox.com>
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Cc: <stable@vger.kernel.org> #3.12+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      9bb4ca68
    • N
      iser-target: Fix post_send_buf_count for RDMA READ/WRITE · b6b87a1d
      Nicholas Bellinger 提交于
      This patch fixes the incorrect setting of ->post_send_buf_count
      related to RDMA WRITEs + READs where isert_rdma_rw->send_wr_num
      was not being taken into account.
      
      This includes incrementing ->post_send_buf_count within
      isert_put_datain() + isert_get_dataout(), decrementing within
      __isert_send_completion() + isert_response_completion(), and
      clearing wr->send_wr_num within isert_completion_rdma_read()
      
      This is necessary because even though IB_SEND_SIGNALED is
      not set for RDMA WRITEs + READs, during a QP failure event
      the work requests will be returned with exception status
      from the TX completion queue.
      Acked-by: NSagi Grimberg <sagig@mellanox.com>
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Cc: <stable@vger.kernel.org> #3.10+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      b6b87a1d
    • N
      iscsi/iser-target: Fix isert_conn->state hung shutdown issues · defd8848
      Nicholas Bellinger 提交于
      This patch addresses a couple of different hug shutdown issues
      related to wait_event() + isert_conn->state.  First, it changes
      isert_conn->conn_wait + isert_conn->conn_wait_comp_err from
      waitqueues to completions, and sets ISER_CONN_TERMINATING from
      within isert_disconnect_work().
      
      Second, it splits isert_free_conn() into isert_wait_conn() that
      is called earlier in iscsit_close_connection() to ensure that
      all outstanding commands have completed before continuing.
      
      Finally, it breaks isert_cq_comp_err() into seperate TX / RX
      related code, and adds logic in isert_cq_rx_comp_err() to wait
      for outstanding commands to complete before setting ISER_CONN_DOWN
      and calling complete(&isert_conn->conn_wait_comp_err).
      Acked-by: NSagi Grimberg <sagig@mellanox.com>
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Cc: <stable@vger.kernel.org> #3.10+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      defd8848
    • N
      iscsi/iser-target: Use list_del_init for ->i_conn_node · 5159d763
      Nicholas Bellinger 提交于
      There are a handful of uses of list_empty() for cmd->i_conn_node
      within iser-target code that expect to return false once a cmd
      has been removed from the per connect list.
      
      This patch changes all uses of list_del -> list_del_init in order
      to ensure that list_empty() returns false as expected.
      Acked-by: NSagi Grimberg <sagig@mellanox.com>
      Cc: Or Gerlitz <ogerlitz@mellanox.com>
      Cc: <stable@vger.kernel.org> #3.10+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      5159d763