Commit 23852bec authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull rdma updates from Jason Gunthorpe:
 "This is quite a small cycle, no major series stands out. The HNS and
  rxe drivers saw the most activity this cycle, with rxe being broken
  for a good chunk of time. The significant deleted line count is due to
  a SPDX cleanup series.

  Summary:

   - Various cleanup and small features for rtrs

   - kmap_local_page() conversions

   - Driver updates and fixes for: efa, rxe, mlx5, hfi1, qed, hns

   - Cache the IB subnet prefix

   - Rework how CRC is calcuated in rxe

   - Clean reference counting in iwpm's netlink

   - Pull object allocation and lifecycle for user QPs to the uverbs
     core code

   - Several small hns features and continued general code cleanups

   - Fix the scatterlist confusion of orig_nents/nents introduced in an
     earlier patch creating the append operation"

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (90 commits)
  RDMA/mlx5: Relax DCS QP creation checks
  RDMA/hns: Delete unnecessary blank lines.
  RDMA/hns: Encapsulate the qp db as a function
  RDMA/hns: Adjust the order in which irq are requested and enabled
  RDMA/hns: Remove RST2RST error prints for hw v1
  RDMA/hns: Remove dqpn filling when modify qp from Init to Init
  RDMA/hns: Fix QP's resp incomplete assignment
  RDMA/hns: Fix query destination qpn
  RDMA/hfi1: Convert to SPDX identifier
  IB/rdmavt: Convert to SPDX identifier
  RDMA/hns: Bugfix for incorrect association between dip_idx and dgid
  RDMA/hns: Bugfix for the missing assignment for dip_idx
  RDMA/hns: Bugfix for data type of dip_idx
  RDMA/hns: Fix incorrect lsn field
  RDMA/irdma: Remove the repeated declaration
  RDMA/core/sa_query: Retry SA queries
  RDMA: Use the sg_table directly and remove the opencoded version from umem
  lib/scatterlist: Fix wrong update of orig_nents
  lib/scatterlist: Provide a dedicated function to support table append
  RDMA/hns: Delete unused hns bitmap interface
  ...
parents 83ec9169 6a217437
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -2993,10 +2993,10 @@
		65 = /dev/infiniband/issm1     Second InfiniBand IsSM device
		  ...
		127 = /dev/infiniband/issm63    63rd InfiniBand IsSM device
		128 = /dev/infiniband/uverbs0   First InfiniBand verbs device
		129 = /dev/infiniband/uverbs1   Second InfiniBand verbs device
		192 = /dev/infiniband/uverbs0   First InfiniBand verbs device
		193 = /dev/infiniband/uverbs1   Second InfiniBand verbs device
		  ...
		159 = /dev/infiniband/uverbs31  31st InfiniBand verbs device
		223 = /dev/infiniband/uverbs31  31st InfiniBand verbs device

 232 char	Biometric Devices
		0 = /dev/biometric/sensor0/fingerprint	first fingerprint sensor on first device
+1 −1
Original line number Diff line number Diff line
@@ -8446,7 +8446,7 @@ F: drivers/crypto/hisilicon/sgl.c
F:	drivers/crypto/hisilicon/zip/
HISILICON ROCE DRIVER
M:	Lijun Ou <oulijun@huawei.com>
M:	Wenpeng Liang <liangwenpeng@huawei.com>
M:	Weihang Li <liweihang@huawei.com>
L:	linux-rdma@vger.kernel.org
S:	Maintained
+6 −7
Original line number Diff line number Diff line
@@ -807,8 +807,8 @@ struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
				       struct page **pages, unsigned int nr_pages)
{
	struct sg_table *sg;
	struct scatterlist *sge;
	size_t max_segment = 0;
	int err;

	sg = kmalloc(sizeof(struct sg_table), GFP_KERNEL);
	if (!sg)
@@ -818,13 +818,12 @@ struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
		max_segment = dma_max_mapping_size(dev->dev);
	if (max_segment == 0)
		max_segment = UINT_MAX;
	sge = __sg_alloc_table_from_pages(sg, pages, nr_pages, 0,
	err = sg_alloc_table_from_pages_segment(sg, pages, nr_pages, 0,
						nr_pages << PAGE_SHIFT,
					  max_segment,
					  NULL, 0, GFP_KERNEL);
	if (IS_ERR(sge)) {
						max_segment, GFP_KERNEL);
	if (err) {
		kfree(sg);
		sg = ERR_CAST(sge);
		sg = ERR_PTR(err);
	}
	return sg;
}
+6 −7
Original line number Diff line number Diff line
@@ -382,7 +382,6 @@ i915_ttm_region(struct ttm_device *bdev, int ttm_mem_type)
static struct sg_table *i915_ttm_tt_get_st(struct ttm_tt *ttm)
{
	struct i915_ttm_tt *i915_tt = container_of(ttm, typeof(*i915_tt), ttm);
	struct scatterlist *sg;
	struct sg_table *st;
	int ret;

@@ -393,13 +392,13 @@ static struct sg_table *i915_ttm_tt_get_st(struct ttm_tt *ttm)
	if (!st)
		return ERR_PTR(-ENOMEM);

	sg = __sg_alloc_table_from_pages
		(st, ttm->pages, ttm->num_pages, 0,
		 (unsigned long)ttm->num_pages << PAGE_SHIFT,
		 i915_sg_segment_size(), NULL, 0, GFP_KERNEL);
	if (IS_ERR(sg)) {
	ret = sg_alloc_table_from_pages_segment(st,
			ttm->pages, ttm->num_pages,
			0, (unsigned long)ttm->num_pages << PAGE_SHIFT,
			i915_sg_segment_size(), GFP_KERNEL);
	if (ret) {
		kfree(st);
		return ERR_CAST(sg);
		return ERR_PTR(ret);
	}

	ret = dma_map_sgtable(i915_tt->dev, st, DMA_BIDIRECTIONAL, 0);
+4 −7
Original line number Diff line number Diff line
@@ -131,7 +131,6 @@ static int i915_gem_userptr_get_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;
	struct page **pvec;
	int ret;

@@ -148,13 +147,11 @@ static int i915_gem_userptr_get_pages(struct drm_i915_gem_object *obj)
	pvec = obj->userptr.pvec;

alloc_table:
	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)) {
		ret = PTR_ERR(sg);
	ret = sg_alloc_table_from_pages_segment(st, pvec, num_pages, 0,
						num_pages << PAGE_SHIFT,
						max_segment, GFP_KERNEL);
	if (ret)
		goto err;
	}

	ret = i915_gem_gtt_prepare_pages(obj, st);
	if (ret) {
Loading