1. 14 2月, 2017 1 次提交
  2. 25 12月, 2016 1 次提交
  3. 14 12月, 2016 6 次提交
  4. 17 11月, 2016 1 次提交
  5. 08 10月, 2016 5 次提交
  6. 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
  7. 24 9月, 2016 3 次提交
  8. 24 8月, 2016 1 次提交
  9. 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
  10. 03 8月, 2016 1 次提交
  11. 24 6月, 2016 1 次提交
  12. 23 6月, 2016 6 次提交
  13. 07 6月, 2016 2 次提交
  14. 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
  15. 14 5月, 2016 9 次提交