1. 14 12月, 2016 3 次提交
  2. 17 11月, 2016 1 次提交
  3. 08 10月, 2016 5 次提交
  4. 07 10月, 2016 1 次提交
    • P
      IB/{rxe,core,rdmavt}: Fix kernel crash for reg MR · d9703650
      Parav Pandit 提交于
      This patch fixes below kernel crash on memory registration for rxe
      and other transport drivers which has dma_ops extension.
      
      IB/core invokes ib_map_sg_attrs() in generic manner with dma attributes
      which is used by mlx5 and mthca adapters.  However in doing so it
      ignored honoring dma_ops extension of software based transports for
      sg map/unmap operation.  This results in calling dma_map_sg_attrs of
      hardware virtual device resulting in crash for null reference.
      
      We extend the core to support sg_map/unmap_attrs and transport drivers
      to implement those dma_ops callback functions.
      
      Verified usign perftest applications.
      
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: [<ffffffff81032a75>] check_addr+0x35/0x60
      ...
      Call Trace:
       [<ffffffff81032b39>] ? nommu_map_sg+0x99/0xd0
       [<ffffffffa02b31c6>] ib_umem_get+0x3d6/0x470 [ib_core]
       [<ffffffffa01cc329>] rxe_mem_init_user+0x49/0x270 [rdma_rxe]
       [<ffffffffa01c793a>] ? rxe_add_index+0xca/0x100 [rdma_rxe]
       [<ffffffffa01c995f>] rxe_reg_user_mr+0x9f/0x130 [rdma_rxe]
       [<ffffffffa00419fe>] ib_uverbs_reg_mr+0x14e/0x2c0 [ib_uverbs]
       [<ffffffffa003d3ab>] ib_uverbs_write+0x15b/0x3b0 [ib_uverbs]
       [<ffffffff811e92a6>] ? mem_cgroup_commit_charge+0x76/0xe0
       [<ffffffff811af0a9>] ? page_add_new_anon_rmap+0x89/0xc0
       [<ffffffff8117e6c9>] ? lru_cache_add_active_or_unevictable+0x39/0xc0
       [<ffffffff811f0da8>] __vfs_write+0x28/0x120
       [<ffffffff811f1239>] ? rw_verify_area+0x49/0xb0
       [<ffffffff811f1492>] vfs_write+0xb2/0x1b0
       [<ffffffff811f27d6>] SyS_write+0x46/0xa0
       [<ffffffff814f7d32>] entry_SYSCALL_64_fastpath+0x1a/0xa4
      Signed-off-by: NParav Pandit <pandit.parav@gmail.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      d9703650
  5. 24 9月, 2016 3 次提交
  6. 24 8月, 2016 1 次提交
  7. 04 8月, 2016 1 次提交
    • K
      dma-mapping: use unsigned long for dma_attrs · 00085f1e
      Krzysztof Kozlowski 提交于
      The dma-mapping core and the implementations do not change the DMA
      attributes passed by pointer.  Thus the pointer can point to const data.
      However the attributes do not have to be a bitfield.  Instead unsigned
      long will do fine:
      
      1. This is just simpler.  Both in terms of reading the code and setting
         attributes.  Instead of initializing local attributes on the stack
         and passing pointer to it to dma_set_attr(), just set the bits.
      
      2. It brings safeness and checking for const correctness because the
         attributes are passed by value.
      
      Semantic patches for this change (at least most of them):
      
          virtual patch
          virtual context
      
          @r@
          identifier f, attrs;
      
          @@
          f(...,
          - struct dma_attrs *attrs
          + unsigned long attrs
          , ...)
          {
          ...
          }
      
          @@
          identifier r.f;
          @@
          f(...,
          - NULL
          + 0
           )
      
      and
      
          // Options: --all-includes
          virtual patch
          virtual context
      
          @r@
          identifier f, attrs;
          type t;
      
          @@
          t f(..., struct dma_attrs *attrs);
      
          @@
          identifier r.f;
          @@
          f(...,
          - NULL
          + 0
           )
      
      Link: http://lkml.kernel.org/r/1468399300-5399-2-git-send-email-k.kozlowski@samsung.comSigned-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Acked-by: NVineet Gupta <vgupta@synopsys.com>
      Acked-by: NRobin Murphy <robin.murphy@arm.com>
      Acked-by: NHans-Christian Noren Egtvedt <egtvedt@samfundet.no>
      Acked-by: Mark Salter <msalter@redhat.com> [c6x]
      Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> [cris]
      Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> [drm]
      Reviewed-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
      Acked-by: Fabien Dessenne <fabien.dessenne@st.com> [bdisp]
      Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> [vb2-core]
      Acked-by: David Vrabel <david.vrabel@citrix.com> [xen]
      Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> [xen swiotlb]
      Acked-by: Joerg Roedel <jroedel@suse.de> [iommu]
      Acked-by: Richard Kuo <rkuo@codeaurora.org> [hexagon]
      Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> [m68k]
      Acked-by: Gerald Schaefer <gerald.schaefer@de.ibm.com> [s390]
      Acked-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no> [avr32]
      Acked-by: Vineet Gupta <vgupta@synopsys.com> [arc]
      Acked-by: Robin Murphy <robin.murphy@arm.com> [arm64 and dma-iommu]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      00085f1e
  8. 03 8月, 2016 1 次提交
  9. 24 6月, 2016 1 次提交
  10. 23 6月, 2016 6 次提交
  11. 07 6月, 2016 2 次提交
  12. 27 5月, 2016 1 次提交
    • C
      IB/core: Make device counter infrastructure dynamic · b40f4757
      Christoph Lameter 提交于
      In practice, each RDMA device has a unique set of counters that the
      hardware implements.  Having a central set of counters that they must
      all adhere to is limiting and causes many useful counters to not be
      available.
      
      Therefore we create a dynamic counter registration infrastructure.
      
      The driver must implement a stats structure allocation routine, in
      which the driver must place the directory name it wants, a list of
      names for all of the counters, an array of u64 counters themselves,
      plus a few generic configuration options.
      
      We then implement a core routine to create a sysfs file for each
      of the named stats elements, and a core routine to retrieve the
      stats when any of the sysfs attribute files are read.
      
      To avoid excessive beating on the stats generation routine in the
      drivers, the core code also caches the stats for a short period of
      time so that someone attempting to read all of the stats in a
      given device's directory will not result in a stats generation
      call per file read.
      
      Future work will attempt to standardize just the shared stats
      elements, and possibly add a method to get the stats via netlink
      in addition to sysfs.
      Signed-off-by: NChristoph Lameter <cl@linux.com>
      Signed-off-by: NMark Bloch <markb@mellanox.com>
      Reviewed-by: NSteve Wise <swise@opengridcomputing.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      [ Add caching, make structure names more informative, add i40iw support,
        other significant rewrites from the original patch ]
      b40f4757
  13. 14 5月, 2016 9 次提交
  14. 22 3月, 2016 4 次提交
    • E
      IB/core: Add interfaces to control VF attributes · 50174a7f
      Eli Cohen 提交于
      Following the practice exercised for network devices which allow the PF
      net device to configure attributes of its virtual functions, we
      introduce the following functions to be used by IPoIB which is the
      network driver implementation for IB devices.
      
      ib_set_vf_link_state - set the policy for a VF link. More below.
      ib_get_vf_config - read configuration information of a VF
      ib_get_vf_stats - read VF statistics
      ib_set_vf_guid - set the node or port GUID of a VF
      
      Also add an indication in the device cap flags that indicates that this
      IB devices is based on a virtual function.
      
      A VF shares the physical port with the PF and other VFs. When setting
      the link state we have three options:
      
      1. Auto - in this mode, the virtual port follows the state of the
         physical port and becomes active only if the physical port's state is
         active. In all other cases it remains in a Down state.
      2. Down - sets the state of the virtual port to Down
      3. Up - causes the virtual port to transition into Initialize state if
         it was not already in this state. A virtualization aware subnet manager
         can then bring the state of the port into the Active state.
      Signed-off-by: NEli Cohen <eli@mellanox.com>
      Reviewed-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      50174a7f
    • E
      IB/core: Support accessing SA in virtualized environment · a0c1b2a3
      Eli Cohen 提交于
      Per the ongoing standardisation process, when virtual HCAs are present
      in a network, traffic is routed based on a destination GID. In order to
      access the SA we use the well known SA GID.
      
      We also add a GRH required boolean field to the port attributes which is
      used to report to the verbs consumer whether this port is connected to a
      virtual network. We use this field to realize whether we need to create
      an address vector with GRH to access the subnet administrator. We clear
      the port attributes struct before calling the hardware driver to make
      sure the default remains that GRH is not required.
      Signed-off-by: NEli Cohen <eli@mellanox.com>
      Reviewed-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      a0c1b2a3
    • E
      IB/core: Add subnet prefix to port info · fad61ad4
      Eli Cohen 提交于
      The subnet prefix is a part of the port_info MAD returned and should be
      available at the ib_port_attr struct. We define it here and provide a
      default implementation in case the hardware driver does not provide one.
      The subnet prefix is required when creating the address vector to access
      the SA in networks where GRH must be used.
      Signed-off-by: NEli Cohen <eli@mellanox.com>
      Reviewed-by: NOr Gerlitz <ogerlitz@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      fad61ad4
    • L
      IB/{core, ulp} Support above 32 possible device capability flags · fb532d6a
      Leon Romanovsky 提交于
      The old bitwise device_cap_flags variable was limited to u32 which
      has all bits already defined. In order to overcome it, we converted
      device_cap_flags variable to be u64 type.
      Signed-off-by: NLeon Romanovsky <leonro@mellanox.com>
      Reviewed-by: NMatan Barak <matanb@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      fb532d6a
  15. 11 3月, 2016 1 次提交