1. 10 1月, 2017 1 次提交
  2. 08 1月, 2017 1 次提交
  3. 14 12月, 2016 1 次提交
  4. 17 11月, 2016 2 次提交
  5. 08 10月, 2016 1 次提交
  6. 03 9月, 2016 1 次提交
  7. 14 8月, 2016 1 次提交
  8. 23 6月, 2016 1 次提交
    • M
      IB/mlx5: Reset flow support for IB kernel ULPs · 89ea94a7
      Maor Gottlieb 提交于
      The driver exposes interfaces that directly relate to HW state.
      Upon fatal error, consumers of these interfaces (ULPs) that rely
      on completion of all their posted work-request could hang, thereby
      introducing dependencies in shutdown order. To prevent this from
      happening, we manage the relevant resources (CQs, QPs) that are used
      by the device. Upon a fatal error, we now generate simulated
      completions for outstanding WQEs that were not completed at the
      time the HW was reset.
      
      It includes invoking the completion event handler for all involved
      CQs so that the ULPs will poll those CQs. When polled we return
      simulated CQEs with IB_WC_WR_FLUSH_ERR return code enabling ULPs
      to clean up their  resources and not wait forever for completions
      upon receiving remove_one.
      
      The above change requires an extra check in the data path to make
      sure that when device is in error state, the simulated CQEs will
      be returned and no further WQEs will be posted.
      Signed-off-by: NMaor Gottlieb <maorg@mellanox.com>
      Signed-off-by: NLeon Romanovsky <leon@kernel.org>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      89ea94a7
  9. 07 6月, 2016 2 次提交
  10. 18 5月, 2016 1 次提交
  11. 02 3月, 2016 2 次提交
  12. 01 3月, 2016 1 次提交
  13. 22 1月, 2016 1 次提交
  14. 18 1月, 2016 1 次提交
    • D
      net/mlx5_core: Fix trimming down IRQ number · 0b6e26ce
      Doron Tsur 提交于
      With several ConnectX-4 cards installed on a server, one may receive
      irqn > 255 from the kernel API, which we mistakenly trim to 8bit.
      
      This causes EQ creation failure with the following stack trace:
      [<ffffffff812a11f4>] dump_stack+0x48/0x64
      [<ffffffff810ace21>] __setup_irq+0x3a1/0x4f0
      [<ffffffff810ad7e0>] request_threaded_irq+0x120/0x180
      [<ffffffffa0923660>] ? mlx5_eq_int+0x450/0x450 [mlx5_core]
      [<ffffffffa0922f64>] mlx5_create_map_eq+0x1e4/0x2b0 [mlx5_core]
      [<ffffffffa091de01>] alloc_comp_eqs+0xb1/0x180 [mlx5_core]
      [<ffffffffa091ea99>] mlx5_dev_init+0x5e9/0x6e0 [mlx5_core]
      [<ffffffffa091ec29>] init_one+0x99/0x1c0 [mlx5_core]
      [<ffffffff812e2afc>] local_pci_probe+0x4c/0xa0
      
      Fixing it by changing of the irqn type from u8 to unsigned int to
      support values > 255
      
      Fixes: 61d0e73e ('net/mlx5_core: Use the the real irqn in eq->irqn')
      Reported-by: NJiri Pirko <jiri@mellanox.com>
      Signed-off-by: NDoron Tsur <doront@mellanox.com>
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0b6e26ce
  15. 24 12月, 2015 4 次提交
  16. 29 10月, 2015 2 次提交
  17. 04 9月, 2015 1 次提交
  18. 13 6月, 2015 1 次提交
  19. 31 5月, 2015 2 次提交
  20. 03 4月, 2015 4 次提交
  21. 22 11月, 2014 1 次提交
  22. 04 10月, 2014 1 次提交
  23. 31 7月, 2014 2 次提交
    • J
      mlx5: minor fixes (mainly avoidance of hidden casts) · f241e749
      Jack Morgenstein 提交于
      There were many places where parameters which should be u8/u16 were
      integer type.
      
      Additionally, in 2 places, a check for a non-null pointer was added
      before dereferencing the pointer (this is actually a bug fix).
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: NEli Cohen <eli@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f241e749
    • J
      mlx5: Move pci device handling from mlx5_ib to mlx5_core · 9603b61d
      Jack Morgenstein 提交于
      In preparation for a new mlx5 device which is VPI (i.e., ports can be
      either IB or ETH), move the pci device functionality from mlx5_ib
      to mlx5_core.
      
      This involves the following changes:
      1. Move mlx5_core_dev struct out of mlx5_ib_dev. mlx5_core_dev
         is now an independent structure maintained by mlx5_core.
         mlx5_ib_dev now has a pointer to that struct.
         This requires changing a lot of places where the core_dev
         struct was accessed via mlx5_ib_dev (now, this needs to
         be a pointer dereference).
      2. All PCI initializations are now done in mlx5_core. Thus,
         it is now mlx5_core which does pci_register_device (and not
         mlx5_ib, as was previously).
      3. mlx5_ib now registers itself with mlx5_core as an "interface"
         driver. This is very similar to the mechanism employed for
         the mlx4 (ConnectX) driver. Once the HCA is initialized
         (by mlx5_core), it invokes the interface drivers to do
         their initializations.
      4. There is a new event handler which the core registers:
         mlx5_core_event(). This event handler invokes the
         event handlers registered by the interfaces.
      
      Based on a patch by Eli Cohen <eli@mellanox.com>
      Signed-off-by: NJack Morgenstein <jackm@dev.mellanox.co.il>
      Signed-off-by: NEli Cohen <eli@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9603b61d
  24. 28 5月, 2014 1 次提交
    • Y
      IB/mlx5: add missing padding at end of struct mlx5_ib_create_cq · a8237b32
      Yann Droneaud 提交于
      The i386 ABI disagrees with most other ABIs regarding alignment of
      data type larger than 4 bytes: on most ABIs a padding must be added at
      end of the structures, while it is not required on i386.
      
      So for most ABI struct mlx5_ib_create_cq get padded to be aligned on a
      8 bytes multiple, while for i386, such padding is not added.
      
      The tool pahole can be used to find such implicit padding:
      
        $ pahole --anon_include \
        	 --nested_anon_include \
        	 --recursive \
        	 --class_name mlx5_ib_create_cq \
        	 drivers/infiniband/hw/mlx5/mlx5_ib.o
      
      Then, structure layout can be compared between i386 and x86_64:
      
        +++ obj-i386/drivers/infiniband/hw/mlx5/mlx5_ib.o.pahole.txt    2014-03-28 11:43:07.386413682 +0100
        --- obj-x86_64/drivers/infiniband/hw/mlx5/mlx5_ib.o.pahole.txt  2014-03-27 13:06:17.788472721 +0100
        @@ -34,9 +34,8 @@ struct mlx5_ib_create_cq {
                __u64                      db_addr;              /*     8     8 */
                __u32                      cqe_size;             /*    16     4 */
      
        -       /* size: 20, cachelines: 1, members: 3 */
        -       /* last cacheline: 20 bytes */
        +       /* size: 24, cachelines: 1, members: 3 */
        +       /* padding: 4 */
        +       /* last cacheline: 24 bytes */
         };
      
      This ABI disagreement will make an x86_64 kernel try to read past the
      buffer provided by an i386 binary.
      
      When boundary check will be implemented, a x86_64 kernel will refuse
      to read past the i386 userspace provided buffer and the uverb will
      fail.
      
      Anyway, if the structure lies in memory on a page boundary and next
      page is not mapped, ib_copy_from_udata() will fail when trying to read
      the 4 bytes of padding and the uverb will fail.
      
      This patch makes create_cq_user() takes care of the input data size to
      handle the case where no padding is provided.
      
      This way, x86_64 kernel will be able to handle struct
      mlx5_ib_create_cq as sent by unpatched and patched i386 libmlx5.
      
      Link: http://marc.info/?i=cover.1399309513.git.ydroneaud@opteya.com
      Cc: <stable@vger.kernel.org>
      Fixes: e126ba97 ("mlx5: Add driver for Mellanox Connect-IB adapter")
      Signed-off-by: NYann Droneaud <ydroneaud@opteya.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      a8237b32
  25. 08 3月, 2014 1 次提交
    • S
      IB/mlx5: Collect signature error completion · d5436ba0
      Sagi Grimberg 提交于
      This commit takes care of the generated signature error CQE generated
      by the HW (if happened).  The underlying mlx5 driver will handle
      signature error completions and will mark the relevant memory region
      as dirty.
      
      Once the consumer gets the completion for the transaction, it must
      check for signature errors on signature memory region using a new
      lightweight verb ib_check_mr_status().
      
      In case the user doesn't check for signature error (i.e. doesn't call
      ib_check_mr_status() with status check IB_MR_CHECK_SIG_STATUS), the
      memory region cannot be used for another signature operation
      (REG_SIG_MR work request will fail).
      Signed-off-by: NSagi Grimberg <sagig@mellanox.com>
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      d5436ba0
  26. 23 1月, 2014 3 次提交