1. 04 10月, 2014 1 次提交
  2. 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
  3. 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
  4. 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
  5. 23 1月, 2014 3 次提交
  6. 16 11月, 2013 1 次提交
  7. 09 11月, 2013 4 次提交
  8. 09 7月, 2013 1 次提交