1. 29 3月, 2014 1 次提交
  2. 27 3月, 2014 6 次提交
    • D
      pch_gpio: set value before enabling output direction · 2ddf6cd6
      Daniel Krueger 提交于
      This ensures that the output signal does not toggle if set to high.
      Signed-off-by: NDaniel Krueger <daniel.krueger@systec-electronic.com>
      Signed-off-by: NAlexander Stein <alexander.stein@systec-electronic.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      2ddf6cd6
    • A
      gpio: moxart: Actually set output state in moxart_gpio_direction_output() · fc860356
      Axel Lin 提交于
      moxart_gpio_direction_output() ignored the state passed into it. Fix it.
      Signed-off-by: NAxel Lin <axel.lin@ingics.com>
      Reviewed-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      fc860356
    • A
      gpio: moxart: Avoid forward declaration · c9e8dbad
      Axel Lin 提交于
      Slightly adjust the code to avoid forward declaration as we need to call
      moxart_gpio_set() in moxart_gpio_direction_output() to properly set the
      output state.
      Signed-off-by: NAxel Lin <axel.lin@ingics.com>
      Reviewed-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      c9e8dbad
    • M
      gpio: mxs: Allow for recursive enable_irq_wake() call · a585f87c
      Marek Vasut 提交于
      The scenario here is that someone calls enable_irq_wake() from somewhere
      in the code. This will result in the lockdep producing a backtrace as can
      be seen below. In my case, this problem is triggered when using the wl1271
      (TI WlCore) driver found in drivers/net/wireless/ti/ .
      
      The problem cause is rather obvious from the backtrace, but let's outline
      the dependency. enable_irq_wake() grabs the IRQ buslock in irq_set_irq_wake(),
      which in turns calls mxs_gpio_set_wake_irq() . But mxs_gpio_set_wake_irq()
      calls enable_irq_wake() again on the one-level-higher IRQ , thus it tries to
      grab the IRQ buslock again in irq_set_irq_wake() . Because the spinlock in
      irq_set_irq_wake()->irq_get_desc_buslock()->__irq_get_desc_lock() is not
      marked as recursive, lockdep will spew the stuff below.
      
      We know we can safely re-enter the lock, so use IRQ_GC_INIT_NESTED_LOCK to
      fix the spew.
      
       =============================================
       [ INFO: possible recursive locking detected ]
       3.10.33-00012-gf06b763-dirty #61 Not tainted
       ---------------------------------------------
       kworker/0:1/18 is trying to acquire lock:
        (&irq_desc_lock_class){-.-...}, at: [<c00685f0>] __irq_get_desc_lock+0x48/0x88
      
       but task is already holding lock:
        (&irq_desc_lock_class){-.-...}, at: [<c00685f0>] __irq_get_desc_lock+0x48/0x88
      
       other info that might help us debug this:
        Possible unsafe locking scenario:
      
              CPU0
              ----
         lock(&irq_desc_lock_class);
         lock(&irq_desc_lock_class);
      
        *** DEADLOCK ***
      
        May be due to missing lock nesting notation
      
       3 locks held by kworker/0:1/18:
        #0:  (events){.+.+.+}, at: [<c0036308>] process_one_work+0x134/0x4a4
        #1:  ((&fw_work->work)){+.+.+.}, at: [<c0036308>] process_one_work+0x134/0x4a4
        #2:  (&irq_desc_lock_class){-.-...}, at: [<c00685f0>] __irq_get_desc_lock+0x48/0x88
      
       stack backtrace:
       CPU: 0 PID: 18 Comm: kworker/0:1 Not tainted 3.10.33-00012-gf06b763-dirty #61
       Workqueue: events request_firmware_work_func
       [<c0013eb4>] (unwind_backtrace+0x0/0xf0) from [<c0011c74>] (show_stack+0x10/0x14)
       [<c0011c74>] (show_stack+0x10/0x14) from [<c005bb08>] (__lock_acquire+0x140c/0x1a64)
       [<c005bb08>] (__lock_acquire+0x140c/0x1a64) from [<c005c6a8>] (lock_acquire+0x9c/0x104)
       [<c005c6a8>] (lock_acquire+0x9c/0x104) from [<c051d5a4>] (_raw_spin_lock_irqsave+0x44/0x58)
       [<c051d5a4>] (_raw_spin_lock_irqsave+0x44/0x58) from [<c00685f0>] (__irq_get_desc_lock+0x48/0x88)
       [<c00685f0>] (__irq_get_desc_lock+0x48/0x88) from [<c0068e78>] (irq_set_irq_wake+0x20/0xf4)
       [<c0068e78>] (irq_set_irq_wake+0x20/0xf4) from [<c027260c>] (mxs_gpio_set_wake_irq+0x1c/0x24)
       [<c027260c>] (mxs_gpio_set_wake_irq+0x1c/0x24) from [<c0068cf4>] (set_irq_wake_real+0x30/0x44)
       [<c0068cf4>] (set_irq_wake_real+0x30/0x44) from [<c0068ee4>] (irq_set_irq_wake+0x8c/0xf4)
       [<c0068ee4>] (irq_set_irq_wake+0x8c/0xf4) from [<c0310748>] (wlcore_nvs_cb+0x10c/0x97c)
       [<c0310748>] (wlcore_nvs_cb+0x10c/0x97c) from [<c02be5e8>] (request_firmware_work_func+0x38/0x58)
       [<c02be5e8>] (request_firmware_work_func+0x38/0x58) from [<c0036394>] (process_one_work+0x1c0/0x4a4)
       [<c0036394>] (process_one_work+0x1c0/0x4a4) from [<c0036a4c>] (worker_thread+0x138/0x394)
       [<c0036a4c>] (worker_thread+0x138/0x394) from [<c003cb74>] (kthread+0xa4/0xb0)
       [<c003cb74>] (kthread+0xa4/0xb0) from [<c000ee00>] (ret_from_fork+0x14/0x34)
       wlcore: loaded
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NMarek Vasut <marex@denx.de>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      a585f87c
    • A
      24016ab6
    • A
      gpio: twl4030: Remove redundant assignment · fd0f885b
      Alexander Shiyan 提交于
      Variable "status" is never used, so remove it and add warning if
      any error happen.
      Signed-off-by: NAlexander Shiyan <shc_work@mail.ru>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      fd0f885b
  3. 26 3月, 2014 5 次提交
  4. 25 3月, 2014 2 次提交
  5. 18 3月, 2014 4 次提交
  6. 15 3月, 2014 1 次提交
    • M
      gpio / ACPI: Add support for ACPI GPIO operation regions · 473ed7be
      Mika Westerberg 提交于
      GPIO operation regions is a new feature introduced in ACPI 5.0
      specification. This feature adds a way for platform ASL code to call back
      to OS GPIO driver and toggle GPIO pins.
      
      An example ASL code from Lenovo Miix 2 tablet with only relevant part
      listed:
      
       Device (\_SB.GPO0)
       {
           Name (AVBL, Zero)
           Method (_REG, 2, NotSerialized)
           {
               If (LEqual (Arg0, 0x08))
               {
                   // Marks the region available
                   Store (Arg1, AVBL)
               }
           }
      
           OperationRegion (GPOP, GeneralPurposeIo, Zero, 0x0C)
           Field (GPOP, ByteAcc, NoLock, Preserve)
           {
               Connection (
                   GpioIo (Exclusive, PullDefault, 0, 0, IoRestrictionOutputOnly,
                           "\\_SB.GPO0", 0x00, ResourceConsumer,,)
                   {
                       0x003B
                   }
               ),
               SHD3,   1,
           }
       }
      
       Device (SHUB)
       {
           Method (_PS0, 0, Serialized)
           {
               If (LEqual (\_SB.GPO0.AVBL, One))
               {
                   Store (One, \_SB.GPO0.SHD3)
                   Sleep (0x32)
               }
           }
           Method (_PS3, 0, Serialized)
           {
               If (LEqual (\_SB.GPO0.AVBL, One))
               {
                   Store (Zero, \_SB.GPO0.SHD3)
               }
           }
       }
      
      How this works is that whenever _PS0 or _PS3 method is run (typically when
      SHUB device is transitioned to D0 or D3 respectively), ASL code checks if
      the GPIO operation region is available (\_SB.GPO0.AVBL). If it is we go and
      store either 0 or 1 to \_SB.GPO0.SHD3.
      
      Now, when ACPICA notices ACPI GPIO operation region access (the store
      above) it will call acpi_gpio_adr_space_handler() that then toggles the
      GPIO accordingly using standard gpiolib interfaces.
      
      Implement the support by registering GPIO operation region handlers for all
      GPIO devices that have an ACPI handle. First time the GPIO is used by the
      ASL code we make sure that the GPIO stays requested until the GPIO chip
      driver itself is unloaded. If we find out that the GPIO is already
      requested we just toggle it according to the value got from ASL code.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      473ed7be
  7. 14 3月, 2014 1 次提交
    • A
      gpio: clamp returned values to the boolean range · 23600969
      Alexandre Courbot 提交于
      Nothing prevents GPIO drivers from returning values outside the
      boolean range, and as it turns out a few drivers are actually doing so.
      These values were passed as-is to unsuspecting consumers and created
      confusion.
      
      This patch makes the internal _gpiod_get_raw_value() function return a
      bool, effectively clamping the GPIO value to the boolean range no
      matter what the driver does.
      
      While we are at it, we also change the value parameter of
      _gpiod_set_raw_value() to bool type before drivers start doing funny
      things with it as well.
      
      Another way to fix this would be to change the prototypes of the driver
      interface to use bool directly, but this would require a huge
      cross-systems patch so this simpler solution is preferred.
      
      Changes since v1:
      - Change local variable type to bool as well, use boolean values in
        code
      - Also change prototype of open drain/open source setting functions
        since they are only called from _gpiod_set_raw_value()
      
      This probably calls for a larger booleanization of gpiolib, but let's
      keep that for a latter change - right now we need to address the issue
      of non-boolean values returned by drivers.
      Signed-off-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      23600969
  8. 13 3月, 2014 4 次提交
    • M
      gpio / ACPI: Rework ACPI GPIO event handling · 6072b9dc
      Mika Westerberg 提交于
      The current ACPI GPIO event handling code was never tested against real
      hardware with functioning GPIO triggered events (at the time such hardware
      wasn't available). Thus it misses certain things like requesting the GPIOs
      properly, passing correct flags to the interrupt handler and so on.
      
      This patch reworks ACPI GPIO event handling so that we:
      
       1) Use struct acpi_gpio_event for all GPIO signaled events.
       2) Switch to use GPIO descriptor API and request GPIOs by calling
          gpiochip_request_own_desc() that we added in a previous patch.
       3) Pass proper flags from ACPI GPIO resource to request_threaded_irq().
      
      Also instead of open-coding the _AEI iteration loop we can use
      acpi_walk_resources(). This simplifies the code a bit and fixes memory leak
      that was caused by missing kfree() for buffer returned by
      acpi_get_event_resources().
      
      Since the remove path now calls gpiochip_free_own_desc() which takes GPIO
      spinlock we need to call acpi_gpiochip_remove() outside of that lock
      (analogous to acpi_gpiochip_add() path where the lock is released before
      those funtions are called).
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Reviewed-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      6072b9dc
    • M
      gpio / ACPI: Rename acpi_gpio_evt_pin to acpi_gpio_event · 4b01a14b
      Mika Westerberg 提交于
      In order to consolidate _Exx, _Lxx and _EVT to use the same structure make
      the structure name to reflect that we are dealing with any event, not just
      _EVT.
      
      This is just rename, no functional changes.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      4b01a14b
    • M
      gpio / ACPI: Allocate ACPI specific data directly in acpi_gpiochip_add() · aa92b6f6
      Mika Westerberg 提交于
      We are going to add more ACPI specific data to accompany GPIO chip so
      instead of allocating it per each use-case we allocate it once when
      acpi_gpiochip_add() is called and release it when acpi_gpiochip_remove() is
      called.
      
      Doing this allows us to add more ACPI specific data by merely adding new
      fields to struct acpi_gpio_chip.
      
      In addition we embed evt_pins member directly to the structure instead of
      having it as a pointer. This simplifies the code a bit since we don't need
      to check against NULL.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      aa92b6f6
    • M
      gpiolib: Allow GPIO chips to request their own GPIOs · 77c2d792
      Mika Westerberg 提交于
      Sometimes it is useful to allow GPIO chips themselves to request GPIOs they
      own through gpiolib API. One use case is ACPI ASL code that should be able
      to toggle GPIOs through GPIO operation regions.
      
      We can't use gpio_request() because it will pin the module to the kernel
      forever (it calls try_module_get()). To solve this we move module refcount
      manipulation to gpiod_request() and let __gpiod_request() handle the actual
      request. This changes the sequence a bit as now try_module_get() is called
      outside of gpio_lock (I think this is safe, try_module_get() handles
      serialization it needs already).
      
      Then we provide gpiolib internal functions gpiochip_request/free_own_desc()
      that do the same as gpio_request() but don't manipulate module refrence
      count. This allows the GPIO chip driver to request and free descriptors it
      owns without being pinned to the kernel forever.
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Reviewed-by: NAlexandre Courbot <acourbot@nvidia.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      77c2d792
  9. 12 3月, 2014 5 次提交
  10. 11 3月, 2014 1 次提交
  11. 10 3月, 2014 1 次提交
  12. 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
  13. 07 3月, 2014 3 次提交
    • T
      firewire: don't use PREPARE_DELAYED_WORK · 70044d71
      Tejun Heo 提交于
      PREPARE_[DELAYED_]WORK() are being phased out.  They have few users
      and a nasty surprise in terms of reentrancy guarantee as workqueue
      considers work items to be different if they don't have the same work
      function.
      
      firewire core-device and sbp2 have been been multiplexing work items
      with multiple work functions.  Introduce fw_device_workfn() and
      sbp2_lu_workfn() which invoke fw_device->workfn and
      sbp2_logical_unit->workfn respectively and always use the two
      functions as the work functions and update the users to set the
      ->workfn fields instead of overriding work functions using
      PREPARE_DELAYED_WORK().
      
      This fixes a variety of possible regressions since a2c1c57b
      "workqueue: consider work function when searching for busy work items"
      due to which fw_workqueue lost its required non-reentrancy property.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NStefan Richter <stefanr@s5r6.in-berlin.de>
      Cc: linux1394-devel@lists.sourceforge.net
      Cc: stable@vger.kernel.org # v3.9+
      Cc: stable@vger.kernel.org # v3.8.2+
      Cc: stable@vger.kernel.org # v3.4.60+
      Cc: stable@vger.kernel.org # v3.2.40+
      70044d71
    • S
      Target/sbc: Fix sbc_copy_prot for offset scatters · 16c0ae02
      Sagi Grimberg 提交于
      When copying between device and command protection scatters
      we must take into account that device scatters might be offset
      and we might copy outside scatter range. Thus for each cmd prot
      scatter we must take the min between cmd prot scatter, dev prot
      scatter, and whats left (and loop in case we havn't copied enough
      from/to cmd prot scatter).
      
      Example (single t_prot_sg of len 2048):
      kernel: sbc_dif_copy_prot: se_cmd=ffff880380aaf970, left=2048, len=2048, dev_prot_sg_offset=3072, dev_prot_sg_len=4096
      kernel: isert: se_cmd=ffff880380aaf970 PI error found type 0 at sector 0x2600 expected 0x0 vs actual 0x725f, lba=2580
      
      Instead of copying 2048 from offset 3072 (copying junk outside sg
      limit 4096), we must to copy 1024 and continue to next sg until
      we complete cmd prot scatter.
      
      This issue was found using iSER T10-PI offload over rd_mcp (wasn't
      discovered with fileio since file_dev prot sglists are never offset).
      
      Changes from v1:
      - Fix sbc_copy_prot copy length miss-calculation
      
      Changes from v0:
      - Removed psg->offset consideration for psg_len computation
      - Removed sg->offset consideration for offset condition
      - Added copied consideraiton for len computation
      - Added copied offset to paddr when doing memcpy
      Signed-off-by: NSagi Grimberg <sagig@mellanox.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      16c0ae02
    • J
      gpio-tz1090: Replace commas with semi-colons · d3e14453
      James Hogan 提交于
      Replace commas with semicolons between irqchip callback initialisation
      statements in tz1090_gpio_bank_probe. The commas appear to be a subtle
      remnant of when the irqchips were statically initialised.
      
      Thanks to Thomas Gleixner for spotting it while whipping up a coccinelle
      script.
      Reported-by: NThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NJames Hogan <james.hogan@imgtec.com>
      Cc: Alexandre Courbot <gnurou@gmail.com>
      Cc: linux-gpio@vger.kernel.org
      Cc: linux-metag@vger.kernel.org
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      d3e14453