1. 05 11月, 2011 4 次提交
    • R
      b8108d68
    • M
      IB/qib: Fix panic in RC error flushing logic · 30ab7e23
      Mike Marciniszyn 提交于
      The following panic can occur when flushing a QP:
      
          RIP: 0010:[<ffffffffa0168e8b>]  [<ffffffffa0168e8b>] qib_send_complete+0x3b/0x190 [ib_qib]
          RSP: 0018:ffff8803cdc6fc90  EFLAGS: 00010046
          RAX: 0000000000000000 RBX: ffff8803d84ba000 RCX: 0000000000000000
          RDX: 0000000000000005 RSI: ffffc90015a53430 RDI: ffff8803d84ba000
          RBP: ffff8803cdc6fce0 R08: ffff8803cdc6fc90 R09: 0000000000000001
          R10: 00000000ffffffff R11: 0000000000000000 R12: ffff8803d84ba0c0
          R13: ffff8803d84ba5cc R14: 0000000000000800 R15: 0000000000000246
          FS:  0000000000000000(0000) GS:ffff880036600000(0000) knlGS:0000000000000000
          CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
          CR2: 0000000000000034 CR3: 00000003e44f9000 CR4: 00000000000406f0
          DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
          DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
          Process qib/0 (pid: 1350, threadinfo ffff8803cdc6e000, task ffff88042728a100)
          Stack:
           53544c5553455201 0000000100000005 0000000000000000 ffff8803d84ba000
           0000000000000000 0000000000000000 0000000000000000 0000000000000000
           0000000000000000 0000000000000001 ffff8803cdc6fd30 ffffffffa0165d7a
          Call Trace:
           [<ffffffffa0165d7a>] qib_make_rc_req+0x36a/0xe80 [ib_qib]
           [<ffffffffa0165a10>] ?  qib_make_rc_req+0x0/0xe80 [ib_qib]
           [<ffffffffa01698b3>] qib_do_send+0xf3/0xb60 [ib_qib]
           [<ffffffff814db757>] ? thread_return+0x4e/0x777
           [<ffffffffa01697c0>] ? qib_do_send+0x0/0xb60 [ib_qib]
           [<ffffffff81088bf0>] worker_thread+0x170/0x2a0
           [<ffffffff8108e530>] ?  autoremove_wake_function+0x0/0x40
           [<ffffffff81088a80>] ? worker_thread+0x0/0x2a0
           [<ffffffff8108e1c6>] kthread+0x96/0xa0
           [<ffffffff8100c1ca>] child_rip+0xa/0x20
           [<ffffffff8108e130>] ? kthread+0x0/0xa0
           [<ffffffff8100c1c0>] ? child_rip+0x0/0x20
          RIP  [<ffffffffa0168e8b>] qib_send_complete+0x3b/0x190 [ib_qib]
      
      The RC error state flush logic in qib_make_rc_req() could return all
      of the acked wqes and potentially have emptied the queue.  It would
      then unconditionally try return a flush completion via
      qib_send_complete() for an invalid wqe, or worse a valid one that is
      not queued. The panic results when the completion code tries to
      maintain an MR reference count for a NULL MR.
      
      This fix modifies logic to only send one completion per
      qib_make_rc_req() call and changing the completion status from
      IB_WC_SUCCESS to IB_WC_WR_FLUSH_ERR as the completions progress.
      
      The outer loop will call as many times as necessary to flush the queue.
      Reviewed-by: NRam Vepa <ram.vepa@qlogic.com>
      Signed-off-by: NMike Marciniszyn <mike.marciniszyn@qlogic.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      30ab7e23
    • O
      IB/iser: DMA unmap TX bufs used for iSCSI/iSER headers · 52439540
      Or Gerlitz 提交于
      The current driver never does DMA unmapping on these buffers.  Fix that
      by adding DMA unmapping to the task cleanup callback, and DMA mapping to
      the task init function (drop the headers_initialized micro-optimization).
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      52439540
    • O
      IB/iser: Use separate buffers for the login request/response · 2c4ce609
      Or Gerlitz 提交于
      The driver counted on the transactional nature of iSCSI login/text
      flows and used the same buffer for both the request and the response.
      We also went further and did DMA mapping only once, with
      DMA_FROM_DEVICE, which violates the DMA mapping API.  Fix that by
      using different buffers, one for requests and one for responses, and
      use the correct DMA mapping direction for each.
      Signed-off-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      2c4ce609
  2. 04 11月, 2011 1 次提交
    • R
      IB/mthca: Fix buddy->num_free allocation size · e4221314
      Roland Dreier 提交于
      The num_free field of mthca_buddy has a type of array of unsigned int
      while it was allocated as an array of pointers.  On 64-bit platforms
      this allocates twice more than required.  Fix this by allocating the
      correct size for the type.
      
      This is the same bug just fixed in mlx4 by Eli Cohen <eli@mellanox.co.il>.
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      e4221314
  3. 02 11月, 2011 4 次提交
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · f470f8d4
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (62 commits)
        mlx4_core: Deprecate log_num_vlan module param
        IB/mlx4: Don't set VLAN in IBoE WQEs' control segment
        IB/mlx4: Enable 4K mtu for IBoE
        RDMA/cxgb4: Mark QP in error before disabling the queue in firmware
        RDMA/cxgb4: Serialize calls to CQ's comp_handler
        RDMA/cxgb3: Serialize calls to CQ's comp_handler
        IB/qib: Fix issue with link states and QSFP cables
        IB/mlx4: Configure extended active speeds
        mlx4_core: Add extended port capabilities support
        IB/qib: Hold links until tuning data is available
        IB/qib: Clean up checkpatch issue
        IB/qib: Remove s_lock around header validation
        IB/qib: Precompute timeout jiffies to optimize latency
        IB/qib: Use RCU for qpn lookup
        IB/qib: Eliminate divide/mod in converting idx to egr buf pointer
        IB/qib: Decode path MTU optimization
        IB/qib: Optimize RC/UC code by IB operation
        IPoIB: Use the right function to do DMA unmap pages
        RDMA/cxgb4: Use correct QID in insert_recv_cqe()
        RDMA/cxgb4: Make sure flush CQ entries are collected on connection close
        ...
      f470f8d4
    • R
      Merge branches 'amso1100', 'cma', 'cxgb3', 'cxgb4', 'fdr', 'ipath', 'ipoib',... · 504255f8
      Roland Dreier 提交于
      Merge branches 'amso1100', 'cma', 'cxgb3', 'cxgb4', 'fdr', 'ipath', 'ipoib', 'misc', 'mlx4', 'misc', 'nes', 'qib' and 'xrc' into for-next
      504255f8
    • L
      Merge git://github.com/herbertx/crypto · dc47d381
      Linus Torvalds 提交于
      * git://github.com/herbertx/crypto: (48 commits)
        crypto: user - Depend on NET instead of selecting it
        crypto: user - Add dependency on NET
        crypto: talitos - handle descriptor not found in error path
        crypto: user - Initialise match in crypto_alg_match
        crypto: testmgr - add twofish tests
        crypto: testmgr - add blowfish test-vectors
        crypto: Make hifn_795x build depend on !ARCH_DMA_ADDR_T_64BIT
        crypto: twofish-x86_64-3way - fix ctr blocksize to 1
        crypto: blowfish-x86_64 - fix ctr blocksize to 1
        crypto: whirlpool - count rounds from 0
        crypto: Add userspace report for compress type algorithms
        crypto: Add userspace report for cipher type algorithms
        crypto: Add userspace report for rng type algorithms
        crypto: Add userspace report for pcompress type algorithms
        crypto: Add userspace report for nivaead type algorithms
        crypto: Add userspace report for aead type algorithms
        crypto: Add userspace report for givcipher type algorithms
        crypto: Add userspace report for ablkcipher type algorithms
        crypto: Add userspace report for blkcipher type algorithms
        crypto: Add userspace report for ahash type algorithms
        ...
      dc47d381
    • E
      sysfs: Make sysfs_rename safe with sysfs_dirents in rbtrees. · f6d90b4f
      Eric W. Biederman 提交于
      In sysfs_rename we need to remove the optimization of not calling
      sysfs_unlink_sibling and sysfs_link_sibling if the renamed parent
      directory is not changing.  This optimization is no longer valid now
      that sysfs dirents are stored in an rbtree sorted by name.
      
      Move the assignment of s_ns before the call of sysfs_link_sibling.  With
      no sysfs_dirent fields changing after the call of sysfs_link_sibling
      this allows sysfs_link_sibling to take any of the directory entries into
      account when it builds the rbtrees, and s_ns looks like a prime canidate
      to be used in the rbtree in the future.
      Signed-off-by: NEric W. Biederman <ebiederm@xmission.com>
      Cc: Jiri Slaby <jirislaby@gmail.com>
      Cc: Greg KH <gregkh@suse.de>
      Cc: David Miller <davem@davemloft.net>
      Cc: Mikulas Patocka <mpatocka@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f6d90b4f
  4. 01 11月, 2011 31 次提交