Commit a1e16bc7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull rdma updates from Jason Gunthorpe:
 "A usual cycle for RDMA with a typical mix of driver and core subsystem
  updates:

   - Driver minor changes and bug fixes for mlx5, efa, rxe, vmw_pvrdma,
     hns, usnic, qib, qedr, cxgb4, hns, bnxt_re

   - Various rtrs fixes and updates

   - Bug fix for mlx4 CM emulation for virtualization scenarios where
     MRA wasn't working right

   - Use tracepoints instead of pr_debug in the CM code

   - Scrub the locking in ucma and cma to close more syzkaller bugs

   - Use tasklet_setup in the subsystem

   - Revert the idea that 'destroy' operations are not allowed to fail
     at the driver level. This proved unworkable from a HW perspective.

   - Revise how the umem API works so drivers make fewer mistakes using
     it

   - XRC support for qedr

   - Convert uverbs objects RWQ and MW to new the allocation scheme

   - Large queue entry sizes for hns

   - Use hmm_range_fault() for mlx5 On Demand Paging

   - uverbs APIs to inspect the GID table instead of sysfs

   - Move some of the RDMA code for building large page SGLs into
     lib/scatterlist"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (191 commits)
  RDMA/ucma: Fix use after free in destroy id flow
  RDMA/rxe: Handle skb_clone() failure in rxe_recv.c
  RDMA/rxe: Move the definitions for rxe_av.network_type to uAPI
  RDMA: Explicitly pass in the dma_device to ib_register_device
  lib/scatterlist: Do not limit max_segment to PAGE_ALIGNED values
  IB/mlx4: Convert rej_tmout radix-tree to XArray
  RDMA/rxe: Fix bug rejecting all multicast packets
  RDMA/rxe: Fix skb lifetime in rxe_rcv_mcast_pkt()
  RDMA/rxe: Remove duplicate entries in struct rxe_mr
  IB/hfi,rdmavt,qib,opa_vnic: Update MAINTAINERS
  IB/rdmavt: Fix sizeof mismatch
  MAINTAINERS: CISCO VIC LOW LATENCY NIC DRIVER
  RDMA/bnxt_re: Fix sizeof mismatch for allocation of pbl_tbl.
  RDMA/bnxt_re: Use rdma_umem_for_each_dma_block()
  RDMA/umem: Move to allocate SG table from pages
  lib/scatterlist: Add support in dynamic allocation of SG table from pages
  tools/testing/scatterlist: Show errors in human readable form
  tools/testing/scatterlist: Rejuvenate bit-rotten test
  RDMA/ipoib: Set rtnl_link_ops for ipoib interfaces
  RDMA/uverbs: Expose the new GID query API to user space
  ...
parents 2a934b38 c7a198c7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -429,6 +429,7 @@ ForEachMacros:
  - 'rbtree_postorder_for_each_entry_safe'
  - 'rdma_for_each_block'
  - 'rdma_for_each_port'
  - 'rdma_umem_for_each_dma_block'
  - 'resource_list_for_each_entry'
  - 'resource_list_for_each_entry_safe'
  - 'rhl_for_each_entry_rcu'
+0 −17
Original line number Diff line number Diff line
@@ -258,23 +258,6 @@ Description:
		userspace ABI compatibility of umad & issm devices.


What:		/sys/class/infiniband_cm/ucmN/ibdev
Date:		Oct, 2005
KernelVersion:	v2.6.14
Contact:	linux-rdma@vger.kernel.org
Description:
		(RO) Display Infiniband (IB) device name


What:		/sys/class/infiniband_cm/abi_version
Date:		Oct, 2005
KernelVersion:	v2.6.14
Contact:	linux-rdma@vger.kernel.org
Description:
		(RO) Value is incremented if any changes are made that break
		userspace ABI compatibility of ucm devices.


What:		/sys/class/infiniband_verbs/uverbsN/ibdev
What:		/sys/class/infiniband_verbs/uverbsN/abi_version
Date:		Sept, 2005
+8 −9
Original line number Diff line number Diff line
@@ -4256,7 +4256,6 @@ F: drivers/net/ethernet/cisco/enic/
CISCO VIC LOW LATENCY NIC DRIVER
M:	Christian Benvenuti <benve@cisco.com>
M:	Nelson Escobar <neescoba@cisco.com>
M:	Parvi Kaustubhi <pkaustub@cisco.com>
S:	Supported
F:	drivers/infiniband/hw/usnic/
@@ -7793,8 +7792,8 @@ F: include/linux/cciss*.h
F:	include/uapi/linux/cciss*.h
HFI1 DRIVER
M:	Mike Marciniszyn <mike.marciniszyn@intel.com>
M:	Dennis Dalessandro <dennis.dalessandro@intel.com>
M:	Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
M:	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
L:	linux-rdma@vger.kernel.org
S:	Supported
F:	drivers/infiniband/hw/hfi1
@@ -12999,8 +12998,8 @@ S: Maintained
F:	drivers/char/hw_random/optee-rng.c
OPA-VNIC DRIVER
M:	Dennis Dalessandro <dennis.dalessandro@intel.com>
M:	Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
M:	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
M:	Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
L:	linux-rdma@vger.kernel.org
S:	Supported
F:	drivers/infiniband/ulp/opa_vnic
@@ -14301,8 +14300,8 @@ F: drivers/firmware/qemu_fw_cfg.c
F:	include/uapi/linux/qemu_fw_cfg.h
QIB DRIVER
M:	Dennis Dalessandro <dennis.dalessandro@intel.com>
M:	Mike Marciniszyn <mike.marciniszyn@intel.com>
M:	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
M:	Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
L:	linux-rdma@vger.kernel.org
S:	Supported
F:	drivers/infiniband/hw/qib/
@@ -14727,8 +14726,8 @@ S: Maintained
F:	drivers/net/ethernet/rdc/r6040.c
RDMAVT - RDMA verbs software
M:	Dennis Dalessandro <dennis.dalessandro@intel.com>
M:	Mike Marciniszyn <mike.marciniszyn@intel.com>
M:	Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
M:	Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
L:	linux-rdma@vger.kernel.org
S:	Supported
F:	drivers/infiniband/sw/rdmavt
+11 −14
Original line number Diff line number Diff line
@@ -806,30 +806,27 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops = {
struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
				       struct page **pages, unsigned int nr_pages)
{
	struct sg_table *sg = NULL;
	struct sg_table *sg;
	struct scatterlist *sge;
	size_t max_segment = 0;
	int ret;

	sg = kmalloc(sizeof(struct sg_table), GFP_KERNEL);
	if (!sg) {
		ret = -ENOMEM;
		goto out;
	}
	if (!sg)
		return ERR_PTR(-ENOMEM);

	if (dev)
		max_segment = dma_max_mapping_size(dev->dev);
	if (max_segment == 0 || max_segment > SCATTERLIST_MAX_SEGMENT)
		max_segment = SCATTERLIST_MAX_SEGMENT;
	ret = __sg_alloc_table_from_pages(sg, pages, nr_pages, 0,
	sge = __sg_alloc_table_from_pages(sg, pages, nr_pages, 0,
					  nr_pages << PAGE_SHIFT,
					  max_segment, GFP_KERNEL);
	if (ret)
		goto out;

	return sg;
out:
					  max_segment,
					  NULL, 0, GFP_KERNEL);
	if (IS_ERR(sge)) {
		kfree(sg);
	return ERR_PTR(ret);
		sg = ERR_CAST(sge);
	}
	return sg;
}
EXPORT_SYMBOL(drm_prime_pages_to_sg);

+6 −6
Original line number Diff line number Diff line
@@ -403,6 +403,7 @@ __i915_gem_userptr_alloc_pages(struct drm_i915_gem_object *obj,
	unsigned int max_segment = i915_sg_segment_size();
	struct sg_table *st;
	unsigned int sg_page_sizes;
	struct scatterlist *sg;
	int ret;

	st = kmalloc(sizeof(*st), GFP_KERNEL);
@@ -410,13 +411,12 @@ __i915_gem_userptr_alloc_pages(struct drm_i915_gem_object *obj,
		return ERR_PTR(-ENOMEM);

alloc_table:
	ret = __sg_alloc_table_from_pages(st, pvec, num_pages,
					  0, num_pages << PAGE_SHIFT,
					  max_segment,
					  GFP_KERNEL);
	if (ret) {
	sg = __sg_alloc_table_from_pages(st, pvec, num_pages, 0,
					 num_pages << PAGE_SHIFT, max_segment,
					 NULL, 0, GFP_KERNEL);
	if (IS_ERR(sg)) {
		kfree(st);
		return ERR_PTR(ret);
		return ERR_CAST(sg);
	}

	ret = i915_gem_gtt_prepare_pages(obj, st);
Loading