diff mbox

[5/6] drm/i915: Use swiotlb_in_use() to know if swiotlb is enabled.

Message ID 1440615127-25834-6-git-send-email-jglisse@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jerome Glisse Aug. 26, 2015, 6:52 p.m. UTC
From: Jérôme Glisse <jglisse@redhat.com>

We can not rely on swiotlb_nr_tbl() to know if swiotlb is in use or
not for our device. Use the new helper to determine that.

Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: lkml@vger.kernel.org
Cc: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c         |  9 +++------
 drivers/gpu/drm/i915/i915_gem_userptr.c | 14 +++++---------
 2 files changed, 8 insertions(+), 15 deletions(-)
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 52b446b..a67b649 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2251,14 +2251,13 @@  i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
 				goto err_pages;
 			}
 		}
-#ifdef CONFIG_SWIOTLB
-		if (swiotlb_nr_tbl()) {
+		if (swiotlb_in_use(obj->base.dev->dev)) {
 			st->nents++;
 			sg_set_page(sg, page, PAGE_SIZE, 0);
 			sg = sg_next(sg);
 			continue;
 		}
-#endif
+
 		if (!i || page_to_pfn(page) != last_pfn + 1) {
 			if (i)
 				sg = sg_next(sg);
@@ -2272,9 +2271,7 @@  i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
 		/* Check that the i965g/gm workaround works. */
 		WARN_ON((gfp & __GFP_DMA32) && (last_pfn >= 0x00100000UL));
 	}
-#ifdef CONFIG_SWIOTLB
-	if (!swiotlb_nr_tbl())
-#endif
+	if (!swiotlb_in_use(obj->base.dev->dev))
 		sg_mark_end(sg);
 	obj->pages = st;
 
diff --git a/drivers/gpu/drm/i915/i915_gem_userptr.c b/drivers/gpu/drm/i915/i915_gem_userptr.c
index 8fd431b..ecf03b7 100644
--- a/drivers/gpu/drm/i915/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/i915_gem_userptr.c
@@ -506,14 +506,9 @@  struct get_pages_work {
 	struct task_struct *task;
 };
 
-#if IS_ENABLED(CONFIG_SWIOTLB)
-#define swiotlb_active() swiotlb_nr_tbl()
-#else
-#define swiotlb_active() 0
-#endif
-
 static int
-st_set_pages(struct sg_table **st, struct page **pvec, int num_pages)
+st_set_pages(struct device *dev, struct sg_table **st,
+	     struct page **pvec, int num_pages)
 {
 	struct scatterlist *sg;
 	int ret, n;
@@ -522,7 +517,7 @@  st_set_pages(struct sg_table **st, struct page **pvec, int num_pages)
 	if (*st == NULL)
 		return -ENOMEM;
 
-	if (swiotlb_active()) {
+	if (swiotlb_in_use(dev)) {
 		ret = sg_alloc_table(*st, num_pages, GFP_KERNEL);
 		if (ret)
 			goto err;
@@ -549,9 +544,10 @@  static int
 __i915_gem_userptr_set_pages(struct drm_i915_gem_object *obj,
 			     struct page **pvec, int num_pages)
 {
+	struct device *dev = obj->base.dev->dev;
 	int ret;
 
-	ret = st_set_pages(&obj->pages, pvec, num_pages);
+	ret = st_set_pages(dev, &obj->pages, pvec, num_pages);
 	if (ret)
 		return ret;